@codeperfect/eslint-plugin 2.3.0 → 2.5.0

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 (151) hide show
  1. package/dist/application/index.d.ts +1 -1
  2. package/dist/application/index.d.ts.map +1 -1
  3. package/dist/application/index.js +2 -2
  4. package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
  5. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +1 -1
  6. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.js +4 -2
  7. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -1
  8. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.js +2 -4
  9. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.d.ts.map +1 -1
  10. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.js +4 -134
  11. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-utilities.d.ts +14 -0
  12. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-utilities.d.ts.map +1 -0
  13. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-utilities.js +154 -0
  14. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.d.ts.map +1 -1
  15. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.js +10 -12
  16. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +1 -1
  17. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +4 -11
  18. package/dist/domain/architecture/no-unused-exports/no-unused-exports-declaration-utilities.d.ts +14 -0
  19. package/dist/domain/architecture/no-unused-exports/no-unused-exports-declaration-utilities.d.ts.map +1 -0
  20. package/dist/domain/architecture/no-unused-exports/no-unused-exports-declaration-utilities.js +187 -0
  21. package/dist/domain/architecture/no-unused-exports/no-unused-exports-identifier-utilities.d.ts +26 -0
  22. package/dist/domain/architecture/no-unused-exports/no-unused-exports-identifier-utilities.d.ts.map +1 -0
  23. package/dist/domain/architecture/no-unused-exports/no-unused-exports-identifier-utilities.js +95 -0
  24. package/dist/domain/architecture/no-unused-exports/no-unused-exports-pattern-utilities.d.ts +32 -0
  25. package/dist/domain/architecture/no-unused-exports/no-unused-exports-pattern-utilities.d.ts.map +1 -0
  26. package/dist/domain/architecture/no-unused-exports/no-unused-exports-pattern-utilities.js +78 -0
  27. package/dist/domain/architecture/no-unused-exports/no-unused-exports-public-api-usage-utilities.d.ts +18 -0
  28. package/dist/domain/architecture/no-unused-exports/no-unused-exports-public-api-usage-utilities.d.ts.map +1 -0
  29. package/dist/domain/architecture/no-unused-exports/no-unused-exports-public-api-usage-utilities.js +45 -0
  30. package/dist/domain/architecture/no-unused-exports/no-unused-exports-record-utilities.d.ts +34 -0
  31. package/dist/domain/architecture/no-unused-exports/no-unused-exports-record-utilities.d.ts.map +1 -0
  32. package/dist/domain/architecture/no-unused-exports/no-unused-exports-record-utilities.js +44 -0
  33. package/dist/domain/architecture/no-unused-exports/no-unused-exports-symbol-utilities.d.ts +59 -0
  34. package/dist/domain/architecture/no-unused-exports/no-unused-exports-symbol-utilities.d.ts.map +1 -0
  35. package/dist/domain/architecture/no-unused-exports/no-unused-exports-symbol-utilities.js +133 -0
  36. package/dist/domain/architecture/no-unused-exports/no-unused-exports-usage-utilities.d.ts +28 -0
  37. package/dist/domain/architecture/no-unused-exports/no-unused-exports-usage-utilities.d.ts.map +1 -0
  38. package/dist/domain/architecture/no-unused-exports/no-unused-exports-usage-utilities.js +106 -0
  39. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts +21 -21
  40. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts.map +1 -1
  41. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.js +24 -587
  42. package/dist/domain/architecture/no-unused-exports/rule.js +3 -3
  43. package/dist/domain/core/no-multiple-declarators/rule-utilities.d.ts +58 -0
  44. package/dist/domain/core/no-multiple-declarators/rule-utilities.d.ts.map +1 -0
  45. package/dist/domain/core/no-multiple-declarators/rule-utilities.js +204 -0
  46. package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -1
  47. package/dist/domain/core/no-multiple-declarators/rule.js +9 -211
  48. package/dist/domain/core/no-multiple-declarators/types.js +2 -2
  49. package/dist/domain/core/prefer-interface-types/rule-utilities.d.ts +57 -0
  50. package/dist/domain/core/prefer-interface-types/rule-utilities.d.ts.map +1 -0
  51. package/dist/domain/core/prefer-interface-types/rule-utilities.js +105 -0
  52. package/dist/domain/core/prefer-interface-types/rule.d.ts.map +1 -1
  53. package/dist/domain/core/prefer-interface-types/rule.js +2 -104
  54. package/dist/domain/docs/no-interface-member-docs/comment-removal-ranges.d.ts +25 -0
  55. package/dist/domain/docs/no-interface-member-docs/comment-removal-ranges.d.ts.map +1 -0
  56. package/dist/domain/docs/no-interface-member-docs/comment-removal-ranges.js +64 -0
  57. package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts +2 -24
  58. package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -1
  59. package/dist/domain/docs/no-interface-member-docs/comment-utilities.js +3 -65
  60. package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +2 -2
  61. package/dist/domain/docs/no-interface-member-docs/parameter-utilities.js +2 -2
  62. package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -1
  63. package/dist/domain/docs/no-interface-member-docs/rule.js +3 -2
  64. package/dist/domain/docs/require-example-language/examples-collect.d.ts +15 -0
  65. package/dist/domain/docs/require-example-language/examples-collect.d.ts.map +1 -0
  66. package/dist/domain/docs/require-example-language/examples-collect.js +113 -0
  67. package/dist/domain/docs/require-example-language/examples.d.ts +24 -13
  68. package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -1
  69. package/dist/domain/docs/require-example-language/examples.js +2 -111
  70. package/dist/domain/docs/require-example-language/fixes.js +4 -4
  71. package/dist/domain/docs/require-example-language/rule.d.ts.map +1 -1
  72. package/dist/domain/docs/require-example-language/rule.js +9 -8
  73. package/dist/domain/docs/require-example-language/types.d.ts.map +1 -1
  74. package/dist/domain/docs/require-example-language/types.js +1 -1
  75. package/dist/domain/index.d.ts +1 -1
  76. package/dist/domain/index.d.ts.map +1 -1
  77. package/dist/domain/index.js +2 -2
  78. package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -1
  79. package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +8 -8
  80. package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts.map +1 -1
  81. package/dist/domain/testing/aaa/analyzer.assertions.helpers.js +10 -9
  82. package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts.map +1 -1
  83. package/dist/domain/testing/aaa/analyzer.assertions.operands.js +2 -5
  84. package/dist/domain/testing/aaa/analyzer.classification.helpers.js +14 -16
  85. package/dist/domain/testing/aaa/analyzer.classification.traversal.js +6 -4
  86. package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -1
  87. package/dist/domain/testing/aaa/analyzer.super.js +10 -8
  88. package/dist/domain/testing/assert-actual-expected-names/rule.d.ts.map +1 -1
  89. package/dist/domain/testing/assert-actual-expected-names/rule.js +21 -23
  90. package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts.map +1 -1
  91. package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.js +1 -1
  92. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts.map +1 -1
  93. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.js +2 -160
  94. package/dist/domain/testing/enforce-aaa-phase-purity/statement-purity-reporters.d.ts +41 -0
  95. package/dist/domain/testing/enforce-aaa-phase-purity/statement-purity-reporters.d.ts.map +1 -0
  96. package/dist/domain/testing/enforce-aaa-phase-purity/statement-purity-reporters.js +161 -0
  97. package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.d.ts.map +1 -1
  98. package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.js +2 -2
  99. package/dist/domain/testing/enforce-aaa-structure/rule-section-reporting.d.ts +81 -0
  100. package/dist/domain/testing/enforce-aaa-structure/rule-section-reporting.d.ts.map +1 -0
  101. package/dist/domain/testing/enforce-aaa-structure/rule-section-reporting.js +181 -0
  102. package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -1
  103. package/dist/domain/testing/enforce-aaa-structure/rule.js +28 -217
  104. package/dist/domain/testing/index.d.ts +1 -0
  105. package/dist/domain/testing/index.d.ts.map +1 -1
  106. package/dist/domain/testing/index.js +2 -1
  107. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/index.d.ts +2 -0
  108. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/index.d.ts.map +1 -0
  109. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/index.js +2 -0
  110. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-detection.d.ts +29 -0
  111. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-detection.d.ts.map +1 -0
  112. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-detection.js +200 -0
  113. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-names.d.ts +12 -0
  114. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-names.d.ts.map +1 -0
  115. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-names.js +151 -0
  116. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-reporting.d.ts +16 -0
  117. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-reporting.d.ts.map +1 -0
  118. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-reporting.js +109 -0
  119. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule.d.ts +5 -0
  120. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule.d.ts.map +1 -0
  121. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule.js +35 -0
  122. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.d.ts.map +1 -1
  123. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.js +7 -4
  124. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts.map +1 -1
  125. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.js +7 -4
  126. package/dist/domain/testing/prefer-vi-mocked-import/fix.js +2 -2
  127. package/dist/domain/testing/prefer-vi-mocked-import/match-collisions.d.ts +18 -0
  128. package/dist/domain/testing/prefer-vi-mocked-import/match-collisions.d.ts.map +1 -0
  129. package/dist/domain/testing/prefer-vi-mocked-import/match-collisions.js +162 -0
  130. package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +1 -1
  131. package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.js +5 -4
  132. package/dist/domain/testing/prefer-vi-mocked-import/match-seeds.d.ts +29 -0
  133. package/dist/domain/testing/prefer-vi-mocked-import/match-seeds.d.ts.map +1 -0
  134. package/dist/domain/testing/prefer-vi-mocked-import/match-seeds.js +100 -0
  135. package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts.map +1 -1
  136. package/dist/domain/testing/prefer-vi-mocked-import/match.js +5 -246
  137. package/dist/domain/testing/prefer-vi-mocked-import/rule.d.ts.map +1 -1
  138. package/dist/domain/testing/prefer-vi-mocked-import/rule.js +18 -20
  139. package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -1
  140. package/dist/domain/testing/require-act-result-capture/rule.js +47 -21
  141. package/dist/domain/testing/require-test-companion/rule.d.ts.map +1 -1
  142. package/dist/domain/testing/require-test-companion/rule.js +2 -4
  143. package/dist/domain/testing/single-act-statement/rule.d.ts.map +1 -1
  144. package/dist/domain/testing/single-act-statement/rule.js +20 -22
  145. package/dist/infrastructure/codeperfect-plugin.d.ts +2 -0
  146. package/dist/infrastructure/codeperfect-plugin.d.ts.map +1 -1
  147. package/dist/infrastructure/codeperfect-plugin.js +3 -2
  148. package/dist/infrastructure/presets.d.ts.map +1 -1
  149. package/dist/infrastructure/presets.js +3 -1
  150. package/package.json +58 -58
  151. package/dist/.tsbuildinfo +0 -1
@@ -107,18 +107,16 @@ const asSourceDeclaration = (statement) => {
107
107
  };
108
108
  /** ESLint rule that forbids import/export module specifiers with explicit file extensions. */
109
109
  const noImportExportExtensionsRule = {
110
- create(context) {
111
- return {
112
- Program(node) {
113
- for (const statement of node.body) {
114
- const declaration = asSourceDeclaration(statement);
115
- if (declaration !== void 0) {
116
- reportWhenSourceHasExtension(context, declaration);
117
- }
110
+ create: (context) => ({
111
+ Program(node) {
112
+ for (const statement of node.body) {
113
+ const declaration = asSourceDeclaration(statement);
114
+ if (declaration !== void 0) {
115
+ reportWhenSourceHasExtension(context, declaration);
118
116
  }
119
- },
120
- };
121
- },
117
+ }
118
+ },
119
+ }),
122
120
  meta: {
123
121
  docs: {
124
122
  description: "Forbid explicit file extensions in import/export module specifiers.",
@@ -133,4 +131,4 @@ const noImportExportExtensionsRule = {
133
131
  },
134
132
  };
135
133
  export { noImportExportExtensionsRule };
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8taW1wb3J0LWV4cG9ydC1leHRlbnNpb25zLXJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2FyY2hpdGVjdHVyZS9jb25zaXN0ZW50LWJhcnJlbC1maWxlcy9uby1pbXBvcnQtZXhwb3J0LWV4dGVuc2lvbnMtcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSwwREFBMEQ7QUFDMUQsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNuQyxNQUFNO0lBQ04sTUFBTTtJQUNOLEtBQUs7SUFDTCxNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixLQUFLO0lBQ0wsTUFBTTtDQUNQLENBQUMsQ0FBQztBQUVIOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLE1BQWMsRUFBVSxFQUFFO0lBQ3RELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxNQUFNLGtCQUFrQixHQUFHLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FDdkQsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQ3RCLENBQUM7SUFFRixPQUFPLGtCQUFrQixDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTTtRQUNmLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFjLEVBQXNCLEVBQUU7SUFDbEUsTUFBTSxRQUFRLEdBQUcsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsTUFBTSxh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QUFXLEVBQ1QscUVBQXFFO1lBQ3ZFLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLEdBQUcsRUFBRSw4RkFBOEY7U0FDcEc7UUFDRCxRQUFRLEVBQUU7WUFDUixtQkFBbUIsRUFDakIsMkRBQTJEO1NBQzlEO1FBQ0QsTUFBTSxFQUFFLEVBQUU7UUFDVixJQUFJLEVBQUUsU0FBUztLQUNoQjtDQUNGLENBQUM7QUFFRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcclxuaW1wb3J0IHR5cGUgKiBhcyBFU1RyZWUgZnJvbSBcImVzdHJlZVwiO1xyXG5cclxuLyoqIFNldCBvZiBkaXNhbGxvd2VkIG1vZHVsZS1zcGVjaWZpZXIgZmlsZSBleHRlbnNpb25zLiAqL1xyXG5jb25zdCBkaXNhbGxvd2VkRXh0ZW5zaW9ucyA9IG5ldyBTZXQoW1xyXG4gIFwiLmNqc1wiLFxyXG4gIFwiLmN0c1wiLFxyXG4gIFwiLmpzXCIsXHJcbiAgXCIuanN4XCIsXHJcbiAgXCIubWpzXCIsXHJcbiAgXCIubXRzXCIsXHJcbiAgXCIudHNcIixcclxuICBcIi50c3hcIixcclxuXSk7XHJcblxyXG4vKipcclxuICogR2V0cyB0aGUgdHJhaWxpbmcgZXh0ZW5zaW9uIGZyb20gYSBtb2R1bGUgc3BlY2lmaWVyIHN0cmluZy5cclxuICogQHBhcmFtIHNvdXJjZSBNb2R1bGUgc3BlY2lmaWVyIHRleHQuXHJcbiAqIEByZXR1cm5zIEZpbGUgZXh0ZW5zaW9uIGluY2x1ZGluZyB0aGUgbGVhZGluZyBkb3Qgd2hlbiBwcmVzZW50LlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IGV4dGVuc2lvbiA9IGdldFRyYWlsaW5nRXh0ZW5zaW9uKFwiLi9mZWF0dXJlLnRzXCIpO1xyXG4gKiBgYGBcclxuICovXHJcbmNvbnN0IGdldFNwZWNpZmllckVuZEluZGV4ID0gKHNvdXJjZTogc3RyaW5nKTogbnVtYmVyID0+IHtcclxuICBjb25zdCBxdWVyeUluZGV4ID0gc291cmNlLmluZGV4T2YoXCI/XCIpO1xyXG4gIGNvbnN0IGhhc2hJbmRleCA9IHNvdXJjZS5pbmRleE9mKFwiI1wiKTtcclxuICBjb25zdCBlbmRJbmRleENhbmRpZGF0ZXMgPSBbcXVlcnlJbmRleCwgaGFzaEluZGV4XS5maWx0ZXIoXHJcbiAgICAoaW5kZXgpID0+IGluZGV4ID49IDAsXHJcbiAgKTtcclxuXHJcbiAgcmV0dXJuIGVuZEluZGV4Q2FuZGlkYXRlcy5sZW5ndGggPT09IDBcclxuICAgID8gc291cmNlLmxlbmd0aFxyXG4gICAgOiBNYXRoLm1pbiguLi5lbmRJbmRleENhbmRpZGF0ZXMpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEdldHMgdGhlIHRyYWlsaW5nIGV4dGVuc2lvbiBmcm9tIGEgbW9kdWxlIHNwZWNpZmllciBzdHJpbmcuXHJcbiAqIEBwYXJhbSBzb3VyY2UgTW9kdWxlIHNwZWNpZmllciB0ZXh0LlxyXG4gKiBAcmV0dXJucyBGaWxlIGV4dGVuc2lvbiBpbmNsdWRpbmcgdGhlIGxlYWRpbmcgZG90IHdoZW4gcHJlc2VudC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBleHRlbnNpb24gPSBnZXRUcmFpbGluZ0V4dGVuc2lvbihcIi4vZmVhdHVyZS50c1wiKTtcclxuICogYGBgXHJcbiAqL1xyXG5jb25zdCBnZXRUcmFpbGluZ0V4dGVuc2lvbiA9IChzb3VyY2U6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XHJcbiAgY29uc3QgZW5kSW5kZXggPSBnZXRTcGVjaWZpZXJFbmRJbmRleChzb3VyY2UpO1xyXG4gIGNvbnN0IGNsZWFuZWRTb3VyY2UgPSBzb3VyY2Uuc2xpY2UoMCwgZW5kSW5kZXgpO1xyXG4gIGNvbnN0IGxhc3RTbGFzaEluZGV4ID0gTWF0aC5tYXgoXHJcbiAgICBjbGVhbmVkU291cmNlLmxhc3RJbmRleE9mKFwiL1wiKSxcclxuICAgIGNsZWFuZWRTb3VyY2UubGFzdEluZGV4T2YoXCJcXFxcXCIpLFxyXG4gICk7XHJcbiAgY29uc3QgYmFzZW5hbWUgPSBjbGVhbmVkU291cmNlLnNsaWNlKGxhc3RTbGFzaEluZGV4ICsgMSk7XHJcbiAgY29uc3QgZG90SW5kZXggPSBiYXNlbmFtZS5sYXN0SW5kZXhPZihcIi5cIik7XHJcblxyXG4gIGlmIChkb3RJbmRleCA8PSAwKSB7XHJcbiAgICByZXR1cm4gdm9pZCAwO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGJhc2VuYW1lLnNsaWNlKGRvdEluZGV4KS50b0xvd2VyQ2FzZSgpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIENoZWNrcyB3aGV0aGVyIGEgc291cmNlIGxpdGVyYWwgc2hvdWxkIGJlIHJlcG9ydGVkLlxyXG4gKiBAcGFyYW0gc291cmNlTGl0ZXJhbCBTb3VyY2UgbGl0ZXJhbCBub2RlLlxyXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIHNvdXJjZSBpbmNsdWRlcyBhIGRpc2FsbG93ZWQgZmlsZSBleHRlbnNpb24uXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgZm9yYmlkZGVuID0gaGFzRGlzYWxsb3dlZEV4dGVuc2lvbihzb3VyY2VMaXRlcmFsKTtcclxuICogYGBgXHJcbiAqL1xyXG5jb25zdCBoYXNEaXNhbGxvd2VkRXh0ZW5zaW9uID0gKHNvdXJjZUxpdGVyYWw6IEVTVHJlZS5MaXRlcmFsKTogYm9vbGVhbiA9PiB7XHJcbiAgaWYgKHR5cGVvZiBzb3VyY2VMaXRlcmFsLnZhbHVlICE9PSBcInN0cmluZ1wiKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjb25zdCBleHRlbnNpb24gPSBnZXRUcmFpbGluZ0V4dGVuc2lvbihzb3VyY2VMaXRlcmFsLnZhbHVlKTtcclxuXHJcbiAgcmV0dXJuIGV4dGVuc2lvbiAhPT0gdm9pZCAwICYmIGRpc2FsbG93ZWRFeHRlbnNpb25zLmhhcyhleHRlbnNpb24pO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFJlcG9ydHMgYSBzdGF0ZW1lbnQgd2hlbiBpdCByZWZlcmVuY2VzIGEgc291cmNlIHdpdGggZGlzYWxsb3dlZCBleHRlbnNpb24uXHJcbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHQuXHJcbiAqIEBwYXJhbSBzdGF0ZW1lbnQgU3RhdGVtZW50IHRoYXQgbWF5IGluY2x1ZGUgYSBzb3VyY2UgbGl0ZXJhbC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiByZXBvcnRXaGVuU291cmNlSGFzRXh0ZW5zaW9uKGNvbnRleHQsIHN0YXRlbWVudCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuY29uc3QgcmVwb3J0V2hlblNvdXJjZUhhc0V4dGVuc2lvbiA9IChcclxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxyXG4gIHN0YXRlbWVudDpcclxuICAgIHwgRVNUcmVlLkV4cG9ydEFsbERlY2xhcmF0aW9uXHJcbiAgICB8IEVTVHJlZS5FeHBvcnROYW1lZERlY2xhcmF0aW9uXHJcbiAgICB8IEVTVHJlZS5JbXBvcnREZWNsYXJhdGlvbixcclxuKTogdm9pZCA9PiB7XHJcbiAgY29uc3Qgc291cmNlTGl0ZXJhbCA9IHN0YXRlbWVudC5zb3VyY2U7XHJcblxyXG4gIGlmIChzb3VyY2VMaXRlcmFsID09PSBudWxsIHx8IHNvdXJjZUxpdGVyYWwgPT09IHZvaWQgMCkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgaWYgKCFoYXNEaXNhbGxvd2VkRXh0ZW5zaW9uKHNvdXJjZUxpdGVyYWwpKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBjb250ZXh0LnJlcG9ydCh7XHJcbiAgICBtZXNzYWdlSWQ6IFwidW5leHBlY3RlZEV4dGVuc2lvblwiLFxyXG4gICAgbm9kZTogc291cmNlTGl0ZXJhbCxcclxuICB9KTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBOYXJyb3dzIG9uZSBwcm9ncmFtIHN0YXRlbWVudCB0byB0aGUgc291cmNlLWJlYXJpbmcgZGVjbGFyYXRpb25zIHRoaXMgcnVsZSBpbnNwZWN0cy5cclxuICogQHBhcmFtIHN0YXRlbWVudCBQcm9ncmFtIHN0YXRlbWVudCBub2RlLlxyXG4gKiBAcmV0dXJucyBTb3VyY2UtYmVhcmluZyBkZWNsYXJhdGlvbiB3aGVuIHN1cHBvcnRlZC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBkZWNsYXJhdGlvbiA9IGFzU291cmNlRGVjbGFyYXRpb24oc3RhdGVtZW50KTtcclxuICogYGBgXHJcbiAqL1xyXG5jb25zdCBhc1NvdXJjZURlY2xhcmF0aW9uID0gKFxyXG4gIHN0YXRlbWVudDogRVNUcmVlLlByb2dyYW1bXCJib2R5XCJdW251bWJlcl0sXHJcbik6XHJcbiAgfCBFU1RyZWUuRXhwb3J0QWxsRGVjbGFyYXRpb25cclxuICB8IEVTVHJlZS5FeHBvcnROYW1lZERlY2xhcmF0aW9uXHJcbiAgfCBFU1RyZWUuSW1wb3J0RGVjbGFyYXRpb25cclxuICB8IHVuZGVmaW5lZCA9PiB7XHJcbiAgaWYgKHN0YXRlbWVudC50eXBlID09PSBcIkV4cG9ydEFsbERlY2xhcmF0aW9uXCIpIHtcclxuICAgIHJldHVybiBzdGF0ZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBpZiAoc3RhdGVtZW50LnR5cGUgPT09IFwiRXhwb3J0TmFtZWREZWNsYXJhdGlvblwiKSB7XHJcbiAgICByZXR1cm4gc3RhdGVtZW50O1xyXG4gIH1cclxuXHJcbiAgaWYgKHN0YXRlbWVudC50eXBlID09PSBcIkltcG9ydERlY2xhcmF0aW9uXCIpIHtcclxuICAgIHJldHVybiBzdGF0ZW1lbnQ7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gdm9pZCAwO1xyXG59O1xyXG5cclxuLyoqIEVTTGludCBydWxlIHRoYXQgZm9yYmlkcyBpbXBvcnQvZXhwb3J0IG1vZHVsZSBzcGVjaWZpZXJzIHdpdGggZXhwbGljaXQgZmlsZSBleHRlbnNpb25zLiAqL1xyXG5jb25zdCBub0ltcG9ydEV4cG9ydEV4dGVuc2lvbnNSdWxlOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XHJcbiAgY3JlYXRlKGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQpOiBSdWxlLlJ1bGVMaXN0ZW5lciB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBQcm9ncmFtKG5vZGU6IEVTVHJlZS5Qcm9ncmFtKTogdm9pZCB7XHJcbiAgICAgICAgZm9yIChjb25zdCBzdGF0ZW1lbnQgb2Ygbm9kZS5ib2R5KSB7XHJcbiAgICAgICAgICBjb25zdCBkZWNsYXJhdGlvbiA9IGFzU291cmNlRGVjbGFyYXRpb24oc3RhdGVtZW50KTtcclxuXHJcbiAgICAgICAgICBpZiAoZGVjbGFyYXRpb24gIT09IHZvaWQgMCkge1xyXG4gICAgICAgICAgICByZXBvcnRXaGVuU291cmNlSGFzRXh0ZW5zaW9uKGNvbnRleHQsIGRlY2xhcmF0aW9uKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gIH0sXHJcbiAgbWV0YToge1xyXG4gICAgZG9jczoge1xyXG4gICAgICBkZXNjcmlwdGlvbjpcclxuICAgICAgICBcIkZvcmJpZCBleHBsaWNpdCBmaWxlIGV4dGVuc2lvbnMgaW4gaW1wb3J0L2V4cG9ydCBtb2R1bGUgc3BlY2lmaWVycy5cIixcclxuICAgICAgcmVjb21tZW5kZWQ6IGZhbHNlLFxyXG4gICAgICB1cmw6IFwiaHR0cHM6Ly9naXRodWIuY29tL3BhcmxvdGkvZXNsaW50LXBsdWdpbi9ibG9iL21haW4vZG9jcy9ydWxlcy9uby1pbXBvcnQtZXhwb3J0LWV4dGVuc2lvbnMubWRcIixcclxuICAgIH0sXHJcbiAgICBtZXNzYWdlczoge1xyXG4gICAgICB1bmV4cGVjdGVkRXh0ZW5zaW9uOlxyXG4gICAgICAgIFwiQXZvaWQgZmlsZSBleHRlbnNpb25zIGluIGltcG9ydC9leHBvcnQgbW9kdWxlIHNwZWNpZmllcnMuXCIsXHJcbiAgICB9LFxyXG4gICAgc2NoZW1hOiBbXSxcclxuICAgIHR5cGU6IFwicHJvYmxlbVwiLFxyXG4gIH0sXHJcbn07XHJcblxyXG5leHBvcnQgeyBub0ltcG9ydEV4cG9ydEV4dGVuc2lvbnNSdWxlIH07XHJcbiJdfQ==
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8taW1wb3J0LWV4cG9ydC1leHRlbnNpb25zLXJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2FyY2hpdGVjdHVyZS9jb25zaXN0ZW50LWJhcnJlbC1maWxlcy9uby1pbXBvcnQtZXhwb3J0LWV4dGVuc2lvbnMtcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSwwREFBMEQ7QUFDMUQsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNuQyxNQUFNO0lBQ04sTUFBTTtJQUNOLEtBQUs7SUFDTCxNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixLQUFLO0lBQ0wsTUFBTTtDQUNQLENBQUMsQ0FBQztBQUVIOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLE1BQWMsRUFBVSxFQUFFO0lBQ3RELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxNQUFNLGtCQUFrQixHQUFHLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FDdkQsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQ3RCLENBQUM7SUFFRixPQUFPLGtCQUFrQixDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTTtRQUNmLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFjLEVBQXNCLEVBQUU7SUFDbEUsTUFBTSxRQUFRLEdBQUcsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsTUFBTSxh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Q0osV0FBVyxFQUNULHFFQUFxRTtZQUN2RSxXQUFXLEVBQUUsS0FBSztZQUNsQixHQUFHLEVBQUUsOEZBQThGO1NBQ3BHO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsbUJBQW1CLEVBQ2pCLDJEQUEyRDtTQUM5RDtRQUNELE1BQU0sRUFBRSxFQUFFO1FBQ1YsSUFBSSxFQUFFLFNBQVM7S0FDaEI7Q0FDRixDQUFDO0FBRUYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XHJcbmltcG9ydCB0eXBlICogYXMgRVNUcmVlIGZyb20gXCJlc3RyZWVcIjtcclxuXHJcbi8qKiBTZXQgb2YgZGlzYWxsb3dlZCBtb2R1bGUtc3BlY2lmaWVyIGZpbGUgZXh0ZW5zaW9ucy4gKi9cclxuY29uc3QgZGlzYWxsb3dlZEV4dGVuc2lvbnMgPSBuZXcgU2V0KFtcclxuICBcIi5janNcIixcclxuICBcIi5jdHNcIixcclxuICBcIi5qc1wiLFxyXG4gIFwiLmpzeFwiLFxyXG4gIFwiLm1qc1wiLFxyXG4gIFwiLm10c1wiLFxyXG4gIFwiLnRzXCIsXHJcbiAgXCIudHN4XCIsXHJcbl0pO1xyXG5cclxuLyoqXHJcbiAqIEdldHMgdGhlIHRyYWlsaW5nIGV4dGVuc2lvbiBmcm9tIGEgbW9kdWxlIHNwZWNpZmllciBzdHJpbmcuXHJcbiAqIEBwYXJhbSBzb3VyY2UgTW9kdWxlIHNwZWNpZmllciB0ZXh0LlxyXG4gKiBAcmV0dXJucyBGaWxlIGV4dGVuc2lvbiBpbmNsdWRpbmcgdGhlIGxlYWRpbmcgZG90IHdoZW4gcHJlc2VudC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBleHRlbnNpb24gPSBnZXRUcmFpbGluZ0V4dGVuc2lvbihcIi4vZmVhdHVyZS50c1wiKTtcclxuICogYGBgXHJcbiAqL1xyXG5jb25zdCBnZXRTcGVjaWZpZXJFbmRJbmRleCA9IChzb3VyY2U6IHN0cmluZyk6IG51bWJlciA9PiB7XHJcbiAgY29uc3QgcXVlcnlJbmRleCA9IHNvdXJjZS5pbmRleE9mKFwiP1wiKTtcclxuICBjb25zdCBoYXNoSW5kZXggPSBzb3VyY2UuaW5kZXhPZihcIiNcIik7XHJcbiAgY29uc3QgZW5kSW5kZXhDYW5kaWRhdGVzID0gW3F1ZXJ5SW5kZXgsIGhhc2hJbmRleF0uZmlsdGVyKFxyXG4gICAgKGluZGV4KSA9PiBpbmRleCA+PSAwLFxyXG4gICk7XHJcblxyXG4gIHJldHVybiBlbmRJbmRleENhbmRpZGF0ZXMubGVuZ3RoID09PSAwXHJcbiAgICA/IHNvdXJjZS5sZW5ndGhcclxuICAgIDogTWF0aC5taW4oLi4uZW5kSW5kZXhDYW5kaWRhdGVzKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBHZXRzIHRoZSB0cmFpbGluZyBleHRlbnNpb24gZnJvbSBhIG1vZHVsZSBzcGVjaWZpZXIgc3RyaW5nLlxyXG4gKiBAcGFyYW0gc291cmNlIE1vZHVsZSBzcGVjaWZpZXIgdGV4dC5cclxuICogQHJldHVybnMgRmlsZSBleHRlbnNpb24gaW5jbHVkaW5nIHRoZSBsZWFkaW5nIGRvdCB3aGVuIHByZXNlbnQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgZXh0ZW5zaW9uID0gZ2V0VHJhaWxpbmdFeHRlbnNpb24oXCIuL2ZlYXR1cmUudHNcIik7XHJcbiAqIGBgYFxyXG4gKi9cclxuY29uc3QgZ2V0VHJhaWxpbmdFeHRlbnNpb24gPSAoc291cmNlOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xyXG4gIGNvbnN0IGVuZEluZGV4ID0gZ2V0U3BlY2lmaWVyRW5kSW5kZXgoc291cmNlKTtcclxuICBjb25zdCBjbGVhbmVkU291cmNlID0gc291cmNlLnNsaWNlKDAsIGVuZEluZGV4KTtcclxuICBjb25zdCBsYXN0U2xhc2hJbmRleCA9IE1hdGgubWF4KFxyXG4gICAgY2xlYW5lZFNvdXJjZS5sYXN0SW5kZXhPZihcIi9cIiksXHJcbiAgICBjbGVhbmVkU291cmNlLmxhc3RJbmRleE9mKFwiXFxcXFwiKSxcclxuICApO1xyXG4gIGNvbnN0IGJhc2VuYW1lID0gY2xlYW5lZFNvdXJjZS5zbGljZShsYXN0U2xhc2hJbmRleCArIDEpO1xyXG4gIGNvbnN0IGRvdEluZGV4ID0gYmFzZW5hbWUubGFzdEluZGV4T2YoXCIuXCIpO1xyXG5cclxuICBpZiAoZG90SW5kZXggPD0gMCkge1xyXG4gICAgcmV0dXJuIHZvaWQgMDtcclxuICB9XHJcblxyXG4gIHJldHVybiBiYXNlbmFtZS5zbGljZShkb3RJbmRleCkudG9Mb3dlckNhc2UoKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBDaGVja3Mgd2hldGhlciBhIHNvdXJjZSBsaXRlcmFsIHNob3VsZCBiZSByZXBvcnRlZC5cclxuICogQHBhcmFtIHNvdXJjZUxpdGVyYWwgU291cmNlIGxpdGVyYWwgbm9kZS5cclxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBzb3VyY2UgaW5jbHVkZXMgYSBkaXNhbGxvd2VkIGZpbGUgZXh0ZW5zaW9uLlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0IGZvcmJpZGRlbiA9IGhhc0Rpc2FsbG93ZWRFeHRlbnNpb24oc291cmNlTGl0ZXJhbCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuY29uc3QgaGFzRGlzYWxsb3dlZEV4dGVuc2lvbiA9IChzb3VyY2VMaXRlcmFsOiBFU1RyZWUuTGl0ZXJhbCk6IGJvb2xlYW4gPT4ge1xyXG4gIGlmICh0eXBlb2Ygc291cmNlTGl0ZXJhbC52YWx1ZSAhPT0gXCJzdHJpbmdcIikge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgZXh0ZW5zaW9uID0gZ2V0VHJhaWxpbmdFeHRlbnNpb24oc291cmNlTGl0ZXJhbC52YWx1ZSk7XHJcblxyXG4gIHJldHVybiBleHRlbnNpb24gIT09IHZvaWQgMCAmJiBkaXNhbGxvd2VkRXh0ZW5zaW9ucy5oYXMoZXh0ZW5zaW9uKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBSZXBvcnRzIGEgc3RhdGVtZW50IHdoZW4gaXQgcmVmZXJlbmNlcyBhIHNvdXJjZSB3aXRoIGRpc2FsbG93ZWQgZXh0ZW5zaW9uLlxyXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxyXG4gKiBAcGFyYW0gc3RhdGVtZW50IFN0YXRlbWVudCB0aGF0IG1heSBpbmNsdWRlIGEgc291cmNlIGxpdGVyYWwuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogcmVwb3J0V2hlblNvdXJjZUhhc0V4dGVuc2lvbihjb250ZXh0LCBzdGF0ZW1lbnQpO1xyXG4gKiBgYGBcclxuICovXHJcbmNvbnN0IHJlcG9ydFdoZW5Tb3VyY2VIYXNFeHRlbnNpb24gPSAoXHJcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcclxuICBzdGF0ZW1lbnQ6XHJcbiAgICB8IEVTVHJlZS5FeHBvcnRBbGxEZWNsYXJhdGlvblxyXG4gICAgfCBFU1RyZWUuRXhwb3J0TmFtZWREZWNsYXJhdGlvblxyXG4gICAgfCBFU1RyZWUuSW1wb3J0RGVjbGFyYXRpb24sXHJcbik6IHZvaWQgPT4ge1xyXG4gIGNvbnN0IHNvdXJjZUxpdGVyYWwgPSBzdGF0ZW1lbnQuc291cmNlO1xyXG5cclxuICBpZiAoc291cmNlTGl0ZXJhbCA9PT0gbnVsbCB8fCBzb3VyY2VMaXRlcmFsID09PSB2b2lkIDApIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGlmICghaGFzRGlzYWxsb3dlZEV4dGVuc2lvbihzb3VyY2VMaXRlcmFsKSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgY29udGV4dC5yZXBvcnQoe1xyXG4gICAgbWVzc2FnZUlkOiBcInVuZXhwZWN0ZWRFeHRlbnNpb25cIixcclxuICAgIG5vZGU6IHNvdXJjZUxpdGVyYWwsXHJcbiAgfSk7XHJcbn07XHJcblxyXG4vKipcclxuICogTmFycm93cyBvbmUgcHJvZ3JhbSBzdGF0ZW1lbnQgdG8gdGhlIHNvdXJjZS1iZWFyaW5nIGRlY2xhcmF0aW9ucyB0aGlzIHJ1bGUgaW5zcGVjdHMuXHJcbiAqIEBwYXJhbSBzdGF0ZW1lbnQgUHJvZ3JhbSBzdGF0ZW1lbnQgbm9kZS5cclxuICogQHJldHVybnMgU291cmNlLWJlYXJpbmcgZGVjbGFyYXRpb24gd2hlbiBzdXBwb3J0ZWQuXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogY29uc3QgZGVjbGFyYXRpb24gPSBhc1NvdXJjZURlY2xhcmF0aW9uKHN0YXRlbWVudCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuY29uc3QgYXNTb3VyY2VEZWNsYXJhdGlvbiA9IChcclxuICBzdGF0ZW1lbnQ6IEVTVHJlZS5Qcm9ncmFtW1wiYm9keVwiXVtudW1iZXJdLFxyXG4pOlxyXG4gIHwgRVNUcmVlLkV4cG9ydEFsbERlY2xhcmF0aW9uXHJcbiAgfCBFU1RyZWUuRXhwb3J0TmFtZWREZWNsYXJhdGlvblxyXG4gIHwgRVNUcmVlLkltcG9ydERlY2xhcmF0aW9uXHJcbiAgfCB1bmRlZmluZWQgPT4ge1xyXG4gIGlmIChzdGF0ZW1lbnQudHlwZSA9PT0gXCJFeHBvcnRBbGxEZWNsYXJhdGlvblwiKSB7XHJcbiAgICByZXR1cm4gc3RhdGVtZW50O1xyXG4gIH1cclxuXHJcbiAgaWYgKHN0YXRlbWVudC50eXBlID09PSBcIkV4cG9ydE5hbWVkRGVjbGFyYXRpb25cIikge1xyXG4gICAgcmV0dXJuIHN0YXRlbWVudDtcclxuICB9XHJcblxyXG4gIGlmIChzdGF0ZW1lbnQudHlwZSA9PT0gXCJJbXBvcnREZWNsYXJhdGlvblwiKSB7XHJcbiAgICByZXR1cm4gc3RhdGVtZW50O1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHZvaWQgMDtcclxufTtcclxuXHJcbi8qKiBFU0xpbnQgcnVsZSB0aGF0IGZvcmJpZHMgaW1wb3J0L2V4cG9ydCBtb2R1bGUgc3BlY2lmaWVycyB3aXRoIGV4cGxpY2l0IGZpbGUgZXh0ZW5zaW9ucy4gKi9cclxuY29uc3Qgbm9JbXBvcnRFeHBvcnRFeHRlbnNpb25zUnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xyXG4gIGNyZWF0ZTogKGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQpOiBSdWxlLlJ1bGVMaXN0ZW5lciA9PiAoe1xyXG4gICAgUHJvZ3JhbShub2RlOiBFU1RyZWUuUHJvZ3JhbSk6IHZvaWQge1xyXG4gICAgICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiBub2RlLmJvZHkpIHtcclxuICAgICAgICBjb25zdCBkZWNsYXJhdGlvbiA9IGFzU291cmNlRGVjbGFyYXRpb24oc3RhdGVtZW50KTtcclxuXHJcbiAgICAgICAgaWYgKGRlY2xhcmF0aW9uICE9PSB2b2lkIDApIHtcclxuICAgICAgICAgIHJlcG9ydFdoZW5Tb3VyY2VIYXNFeHRlbnNpb24oY29udGV4dCwgZGVjbGFyYXRpb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSxcclxuICB9KSxcclxuICBtZXRhOiB7XHJcbiAgICBkb2NzOiB7XHJcbiAgICAgIGRlc2NyaXB0aW9uOlxyXG4gICAgICAgIFwiRm9yYmlkIGV4cGxpY2l0IGZpbGUgZXh0ZW5zaW9ucyBpbiBpbXBvcnQvZXhwb3J0IG1vZHVsZSBzcGVjaWZpZXJzLlwiLFxyXG4gICAgICByZWNvbW1lbmRlZDogZmFsc2UsXHJcbiAgICAgIHVybDogXCJodHRwczovL2dpdGh1Yi5jb20vcGFybG90aS9lc2xpbnQtcGx1Z2luL2Jsb2IvbWFpbi9kb2NzL3J1bGVzL25vLWltcG9ydC1leHBvcnQtZXh0ZW5zaW9ucy5tZFwiLFxyXG4gICAgfSxcclxuICAgIG1lc3NhZ2VzOiB7XHJcbiAgICAgIHVuZXhwZWN0ZWRFeHRlbnNpb246XHJcbiAgICAgICAgXCJBdm9pZCBmaWxlIGV4dGVuc2lvbnMgaW4gaW1wb3J0L2V4cG9ydCBtb2R1bGUgc3BlY2lmaWVycy5cIixcclxuICAgIH0sXHJcbiAgICBzY2hlbWE6IFtdLFxyXG4gICAgdHlwZTogXCJwcm9ibGVtXCIsXHJcbiAgfSxcclxufTtcclxuXHJcbmV4cG9ydCB7IG5vSW1wb3J0RXhwb3J0RXh0ZW5zaW9uc1J1bGUgfTtcclxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"no-reexports-outside-barrels-rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAO,IAAI,EAAE,MAAM,QAAQ,CAAC;AAmExC;;;;;;GAMG;AACH,QAAA,MAAM,6BAA6B,EAAE,IAAI,CAAC,UAuCzC,CAAC;AAEF,OAAO,EAAE,6BAA6B,EAAE,CAAC"}
1
+ {"version":3,"file":"no-reexports-outside-barrels-rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAO,IAAI,EAAE,MAAM,QAAQ,CAAC;AAiExC;;;;;;GAMG;AACH,QAAA,MAAM,6BAA6B,EAAE,IAAI,CAAC,UAsCzC,CAAC;AAEF,OAAO,EAAE,6BAA6B,EAAE,CAAC"}
@@ -31,13 +31,8 @@ const buildListenerForFile = (context, filename, options) => {
31
31
  node: statement,
32
32
  });
33
33
  }
34
- else if (hasImportedExport(statement, importedNames)) {
35
- context.report({
36
- messageId: "reexportedImport",
37
- node: statement,
38
- });
39
- }
40
- else if (isImportedDefaultExport) {
34
+ else if (isImportedDefaultExport ||
35
+ hasImportedExport(statement, importedNames)) {
41
36
  context.report({
42
37
  messageId: "reexportedImport",
43
38
  node: statement,
@@ -55,9 +50,7 @@ const buildListenerForFile = (context, filename, options) => {
55
50
  * ```
56
51
  */
57
52
  const noReexportsOutsideBarrelsRule = {
58
- create(context) {
59
- return buildListenerForFile(context, context.filename, getOptions(context.options));
60
- },
53
+ create: (context) => buildListenerForFile(context, context.filename, getOptions(context.options)),
61
54
  meta: {
62
55
  defaultOptions: [{ allowedBarrelNames: ["index"] }],
63
56
  docs: {
@@ -87,4 +80,4 @@ const noReexportsOutsideBarrelsRule = {
87
80
  },
88
81
  };
89
82
  export { noReexportsOutsideBarrelsRule };
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tcmVleHBvcnRzLW91dHNpZGUtYmFycmVscy1ydWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi9hcmNoaXRlY3R1cmUvY29uc2lzdGVudC1iYXJyZWwtZmlsZXMvbm8tcmVleHBvcnRzLW91dHNpZGUtYmFycmVscy1ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsVUFBVSxFQUNWLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osY0FBYyxHQUNmLE1BQU0sMENBQTBDLENBQUM7QUFFbEQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sb0JBQW9CLEdBQUcsQ0FDM0IsT0FBeUIsRUFDekIsUUFBZ0IsRUFDaEIsT0FBc0MsRUFDbkIsRUFBRTtJQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsSUFBSSxZQUFZLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDMUUsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sQ0FBQyxJQUFpQjtZQUN2QixNQUFNLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFdEQsS0FBSyxNQUFNLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sWUFBWSxHQUNoQixTQUFTLENBQUMsSUFBSSxLQUFLLHNCQUFzQjtvQkFDekMsQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLHdCQUF3Qjt3QkFDMUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxJQUFJO3dCQUN6QixTQUFTLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBRWpDLE1BQU0sdUJBQXVCLEdBQzNCLFNBQVMsQ0FBQyxJQUFJLEtBQUssMEJBQTBCO29CQUM3QyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxZQUFZO29CQUMzQyxhQUFhLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRWhELElBQUksWUFBWSxFQUFFLENBQUM7b0JBQ2pCLE9BQU8sQ0FBQyxNQUFNLENBQUM7d0JBQ2IsU0FBUyxFQUFFLG9CQUFvQjt3QkFDL0IsSUFBSSxFQUFFLFNBQVM7cUJBQ2hCLENBQUMsQ0FBQztnQkFDTCxDQUFDO3FCQUFNLElBQUksaUJBQWlCLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUM7b0JBQ3ZELE9BQU8sQ0FBQyxNQUFNLENBQUM7d0JBQ2IsU0FBUyxFQUFFLGtCQUFrQjt3QkFDN0IsSUFBSSxFQUFFLFNBQVM7cUJBQ2hCLENBQUMsQ0FBQztnQkFDTCxDQUFDO3FCQUFNLElBQUksdUJBQXVCLEVBQUUsQ0FBQztvQkFDbkMsT0FBTyxDQUFDLE1BQU0sQ0FBQzt3QkFDYixTQUFTLEVBQUUsa0JBQWtCO3dCQUM3QixJQUFJLEVBQUUsU0FBUztxQkFDaEIsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxNQUFNLDZCQUE2QixHQUFvQjtJQUNyRCxNQUFNLENBQUMsT0FBeUI7UUFDOUIsT0FBTyxvQkFBb0IsQ0FDekIsT0FBTyxFQUNQLE9BQU8sQ0FBQyxRQUFRLEVBQ2hCLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQzVCLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxFQUFFO1FBQ0osY0FBYyxFQUFFLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDbkQsSUFBSSxFQUFFO1lBQ0osV0FBVyxFQUNULGlFQUFpRTtZQUNuRSxXQUFXLEVBQUUsS0FBSztZQUNsQixHQUFHLEVBQUUsK0ZBQStGO1NBQ3JHO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsZ0JBQWdCLEVBQ2QsMkVBQTJFO1lBQzdFLGtCQUFrQixFQUNoQix5REFBeUQ7U0FDNUQ7UUFDRCxNQUFNLEVBQUU7WUFDTjtnQkFDRSxvQkFBb0IsRUFBRSxLQUFLO2dCQUMzQixVQUFVLEVBQUU7b0JBQ1Ysa0JBQWtCLEVBQUU7d0JBQ2xCLFdBQVcsRUFDVCxnRkFBZ0Y7d0JBQ2xGLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7d0JBQ3pCLFFBQVEsRUFBRSxDQUFDO3dCQUNYLElBQUksRUFBRSxPQUFPO3FCQUNkO2lCQUNGO2dCQUNELElBQUksRUFBRSxRQUFRO2FBQ2Y7U0FDRjtRQUNELElBQUksRUFBRSxTQUFTO0tBQ2hCO0NBQ0YsQ0FBQztBQUVGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBU1QsIFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5cbmltcG9ydCB7XG4gIGNvbGxlY3RJbXBvcnRlZE5hbWVzLFxuICBnZXRPcHRpb25zLFxuICBoYXNJbXBvcnRlZEV4cG9ydCxcbiAgaXNCYXJyZWxGaWxlLFxuICBzaG91bGRMaW50RmlsZSxcbn0gZnJvbSBcIi4vbm8tcmVleHBvcnRzLW91dHNpZGUtYmFycmVscy11dGlsaXRpZXNcIjtcblxuLyoqXG4gKiBCdWlsZHMgYSBydWxlIGxpc3RlbmVyIGZvciB0aGUgc3VwcGxpZWQgZmlsZS5cbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHQuXG4gKiBAcGFyYW0gZmlsZW5hbWUgQWJzb2x1dGUgZmlsZW5hbWUgdG8gbGludC5cbiAqIEBwYXJhbSBvcHRpb25zIE5vcm1hbGl6ZWQgcnVsZSBvcHRpb25zLlxuICogQHJldHVybnMgVGhlIHJ1bGUgbGlzdGVuZXIgZm9yIHRoZSBmaWxlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGxpc3RlbmVyID0gYnVpbGRMaXN0ZW5lckZvckZpbGUoY29udGV4dCwgZmlsZW5hbWUsIHN0YXRlKTtcbiAqIGBgYFxuICovXG5jb25zdCBidWlsZExpc3RlbmVyRm9yRmlsZSA9IChcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgb3B0aW9uczogUmV0dXJuVHlwZTx0eXBlb2YgZ2V0T3B0aW9ucz4sXG4pOiBSdWxlLlJ1bGVMaXN0ZW5lciA9PiB7XG4gIGlmICghc2hvdWxkTGludEZpbGUoZmlsZW5hbWUsIG9wdGlvbnMpIHx8IGlzQmFycmVsRmlsZShmaWxlbmFtZSwgb3B0aW9ucykpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICByZXR1cm4ge1xuICAgIFByb2dyYW0obm9kZTogQVNULlByb2dyYW0pOiB2b2lkIHtcbiAgICAgIGNvbnN0IGltcG9ydGVkTmFtZXMgPSBjb2xsZWN0SW1wb3J0ZWROYW1lcyhub2RlLmJvZHkpO1xuXG4gICAgICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiBub2RlLmJvZHkpIHtcbiAgICAgICAgY29uc3QgaXNFeHBvcnRGcm9tID1cbiAgICAgICAgICBzdGF0ZW1lbnQudHlwZSA9PT0gXCJFeHBvcnRBbGxEZWNsYXJhdGlvblwiIHx8XG4gICAgICAgICAgKHN0YXRlbWVudC50eXBlID09PSBcIkV4cG9ydE5hbWVkRGVjbGFyYXRpb25cIiAmJlxuICAgICAgICAgICAgc3RhdGVtZW50LnNvdXJjZSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgc3RhdGVtZW50LnNvdXJjZSAhPT0gdm9pZCAwKTtcblxuICAgICAgICBjb25zdCBpc0ltcG9ydGVkRGVmYXVsdEV4cG9ydCA9XG4gICAgICAgICAgc3RhdGVtZW50LnR5cGUgPT09IFwiRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uXCIgJiZcbiAgICAgICAgICBzdGF0ZW1lbnQuZGVjbGFyYXRpb24udHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcbiAgICAgICAgICBpbXBvcnRlZE5hbWVzLmhhcyhzdGF0ZW1lbnQuZGVjbGFyYXRpb24ubmFtZSk7XG5cbiAgICAgICAgaWYgKGlzRXhwb3J0RnJvbSkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogXCJyZWV4cG9ydE5vdEFsbG93ZWRcIixcbiAgICAgICAgICAgIG5vZGU6IHN0YXRlbWVudCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChoYXNJbXBvcnRlZEV4cG9ydChzdGF0ZW1lbnQsIGltcG9ydGVkTmFtZXMpKSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgbWVzc2FnZUlkOiBcInJlZXhwb3J0ZWRJbXBvcnRcIixcbiAgICAgICAgICAgIG5vZGU6IHN0YXRlbWVudCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0ltcG9ydGVkRGVmYXVsdEV4cG9ydCkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogXCJyZWV4cG9ydGVkSW1wb3J0XCIsXG4gICAgICAgICAgICBub2RlOiBzdGF0ZW1lbnQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICB9O1xufTtcblxuLyoqXG4gKiBFU0xpbnQgcnVsZSBwcmV2ZW50aW5nIHJlLWV4cG9ydHMgb3V0c2lkZSBiYXJyZWwgZmlsZXMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcnVsZSA9IG5vUmVleHBvcnRzT3V0c2lkZUJhcnJlbHNSdWxlO1xuICogYGBgXG4gKi9cbmNvbnN0IG5vUmVleHBvcnRzT3V0c2lkZUJhcnJlbHNSdWxlOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZShjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZS5SdWxlTGlzdGVuZXIge1xuICAgIHJldHVybiBidWlsZExpc3RlbmVyRm9yRmlsZShcbiAgICAgIGNvbnRleHQsXG4gICAgICBjb250ZXh0LmZpbGVuYW1lLFxuICAgICAgZ2V0T3B0aW9ucyhjb250ZXh0Lm9wdGlvbnMpLFxuICAgICk7XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkZWZhdWx0T3B0aW9uczogW3sgYWxsb3dlZEJhcnJlbE5hbWVzOiBbXCJpbmRleFwiXSB9XSxcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJSZXF1aXJlIG5vbi1iYXJyZWwgZmlsZXMgdG8gZXhwb3J0IG9ubHkgbG9jYWxseSBkZWZpbmVkIHZhbHVlcy5cIixcbiAgICAgIHJlY29tbWVuZGVkOiBmYWxzZSxcbiAgICAgIHVybDogXCJodHRwczovL2dpdGh1Yi5jb20vcGFybG90aS9lc2xpbnQtcGx1Z2luL2Jsb2IvbWFpbi9kb2NzL3J1bGVzL25vLXJlZXhwb3J0cy1vdXRzaWRlLWJhcnJlbHMubWRcIixcbiAgICB9LFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICByZWV4cG9ydGVkSW1wb3J0OlxuICAgICAgICBcIk5vbi1iYXJyZWwgZmlsZXMgbXVzdCBub3QgZXhwb3J0IGlkZW50aWZpZXJzIGltcG9ydGVkIGZyb20gb3RoZXIgbW9kdWxlcy5cIixcbiAgICAgIHJlZXhwb3J0Tm90QWxsb3dlZDpcbiAgICAgICAgXCJOb24tYmFycmVsIGZpbGVzIG11c3Qgbm90IHJlLWV4cG9ydCBmcm9tIG90aGVyIG1vZHVsZXMuXCIsXG4gICAgfSxcbiAgICBzY2hlbWE6IFtcbiAgICAgIHtcbiAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgYWxsb3dlZEJhcnJlbE5hbWVzOiB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgXCJBbGxvd2VkIGJhcnJlbCBiYXNlbmFtZXMgdGhhdCBzaG91bGQgYmUgZXhlbXB0IGZyb20gdGhlIHJlLWV4cG9ydCByZXN0cmljdGlvbi5cIixcbiAgICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgIG1pbkl0ZW1zOiAxLFxuICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgdHlwZTogXCJwcm9ibGVtXCIsXG4gIH0sXG59O1xuXG5leHBvcnQgeyBub1JlZXhwb3J0c091dHNpZGVCYXJyZWxzUnVsZSB9O1xuIl19
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tcmVleHBvcnRzLW91dHNpZGUtYmFycmVscy1ydWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi9hcmNoaXRlY3R1cmUvY29uc2lzdGVudC1iYXJyZWwtZmlsZXMvbm8tcmVleHBvcnRzLW91dHNpZGUtYmFycmVscy1ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsVUFBVSxFQUNWLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osY0FBYyxHQUNmLE1BQU0sMENBQTBDLENBQUM7QUFFbEQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sb0JBQW9CLEdBQUcsQ0FDM0IsT0FBeUIsRUFDekIsUUFBZ0IsRUFDaEIsT0FBc0MsRUFDbkIsRUFBRTtJQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsSUFBSSxZQUFZLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDMUUsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sQ0FBQyxJQUFpQjtZQUN2QixNQUFNLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFdEQsS0FBSyxNQUFNLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sWUFBWSxHQUNoQixTQUFTLENBQUMsSUFBSSxLQUFLLHNCQUFzQjtvQkFDekMsQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLHdCQUF3Qjt3QkFDMUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxJQUFJO3dCQUN6QixTQUFTLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBRWpDLE1BQU0sdUJBQXVCLEdBQzNCLFNBQVMsQ0FBQyxJQUFJLEtBQUssMEJBQTBCO29CQUM3QyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxZQUFZO29CQUMzQyxhQUFhLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRWhELElBQUksWUFBWSxFQUFFLENBQUM7b0JBQ2pCLE9BQU8sQ0FBQyxNQUFNLENBQUM7d0JBQ2IsU0FBUyxFQUFFLG9CQUFvQjt3QkFDL0IsSUFBSSxFQUFFLFNBQVM7cUJBQ2hCLENBQUMsQ0FBQztnQkFDTCxDQUFDO3FCQUFNLElBQ0wsdUJBQXVCO29CQUN2QixpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLEVBQzNDLENBQUM7b0JBQ0QsT0FBTyxDQUFDLE1BQU0sQ0FBQzt3QkFDYixTQUFTLEVBQUUsa0JBQWtCO3dCQUM3QixJQUFJLEVBQUUsU0FBUztxQkFDaEIsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxNQUFNLDZCQUE2QixHQUFvQjtJQUNyRCxNQUFNLEVBQUUsQ0FBQyxPQUF5QixFQUFxQixFQUFFLENBQ3ZELG9CQUFvQixDQUNsQixPQUFPLEVBQ1AsT0FBTyxDQUFDLFFBQVEsRUFDaEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FDNUI7SUFDSCxJQUFJLEVBQUU7UUFDSixjQUFjLEVBQUUsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNuRCxJQUFJLEVBQUU7WUFDSixXQUFXLEVBQ1QsaUVBQWlFO1lBQ25FLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLEdBQUcsRUFBRSwrRkFBK0Y7U0FDckc7UUFDRCxRQUFRLEVBQUU7WUFDUixnQkFBZ0IsRUFDZCwyRUFBMkU7WUFDN0Usa0JBQWtCLEVBQ2hCLHlEQUF5RDtTQUM1RDtRQUNELE1BQU0sRUFBRTtZQUNOO2dCQUNFLG9CQUFvQixFQUFFLEtBQUs7Z0JBQzNCLFVBQVUsRUFBRTtvQkFDVixrQkFBa0IsRUFBRTt3QkFDbEIsV0FBVyxFQUNULGdGQUFnRjt3QkFDbEYsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTt3QkFDekIsUUFBUSxFQUFFLENBQUM7d0JBQ1gsSUFBSSxFQUFFLE9BQU87cUJBQ2Q7aUJBQ0Y7Z0JBQ0QsSUFBSSxFQUFFLFFBQVE7YUFDZjtTQUNGO1FBQ0QsSUFBSSxFQUFFLFNBQVM7S0FDaEI7Q0FDRixDQUFDO0FBRUYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFTVCwgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHtcbiAgY29sbGVjdEltcG9ydGVkTmFtZXMsXG4gIGdldE9wdGlvbnMsXG4gIGhhc0ltcG9ydGVkRXhwb3J0LFxuICBpc0JhcnJlbEZpbGUsXG4gIHNob3VsZExpbnRGaWxlLFxufSBmcm9tIFwiLi9uby1yZWV4cG9ydHMtb3V0c2lkZS1iYXJyZWxzLXV0aWxpdGllc1wiO1xuXG4vKipcbiAqIEJ1aWxkcyBhIHJ1bGUgbGlzdGVuZXIgZm9yIHRoZSBzdXBwbGllZCBmaWxlLlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dC5cbiAqIEBwYXJhbSBmaWxlbmFtZSBBYnNvbHV0ZSBmaWxlbmFtZSB0byBsaW50LlxuICogQHBhcmFtIG9wdGlvbnMgTm9ybWFsaXplZCBydWxlIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgcnVsZSBsaXN0ZW5lciBmb3IgdGhlIGZpbGUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbGlzdGVuZXIgPSBidWlsZExpc3RlbmVyRm9yRmlsZShjb250ZXh0LCBmaWxlbmFtZSwgc3RhdGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGJ1aWxkTGlzdGVuZXJGb3JGaWxlID0gKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuICBmaWxlbmFtZTogc3RyaW5nLFxuICBvcHRpb25zOiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRPcHRpb25zPixcbik6IFJ1bGUuUnVsZUxpc3RlbmVyID0+IHtcbiAgaWYgKCFzaG91bGRMaW50RmlsZShmaWxlbmFtZSwgb3B0aW9ucykgfHwgaXNCYXJyZWxGaWxlKGZpbGVuYW1lLCBvcHRpb25zKSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgUHJvZ3JhbShub2RlOiBBU1QuUHJvZ3JhbSk6IHZvaWQge1xuICAgICAgY29uc3QgaW1wb3J0ZWROYW1lcyA9IGNvbGxlY3RJbXBvcnRlZE5hbWVzKG5vZGUuYm9keSk7XG5cbiAgICAgIGZvciAoY29uc3Qgc3RhdGVtZW50IG9mIG5vZGUuYm9keSkge1xuICAgICAgICBjb25zdCBpc0V4cG9ydEZyb20gPVxuICAgICAgICAgIHN0YXRlbWVudC50eXBlID09PSBcIkV4cG9ydEFsbERlY2xhcmF0aW9uXCIgfHxcbiAgICAgICAgICAoc3RhdGVtZW50LnR5cGUgPT09IFwiRXhwb3J0TmFtZWREZWNsYXJhdGlvblwiICYmXG4gICAgICAgICAgICBzdGF0ZW1lbnQuc291cmNlICE9PSBudWxsICYmXG4gICAgICAgICAgICBzdGF0ZW1lbnQuc291cmNlICE9PSB2b2lkIDApO1xuXG4gICAgICAgIGNvbnN0IGlzSW1wb3J0ZWREZWZhdWx0RXhwb3J0ID1cbiAgICAgICAgICBzdGF0ZW1lbnQudHlwZSA9PT0gXCJFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25cIiAmJlxuICAgICAgICAgIHN0YXRlbWVudC5kZWNsYXJhdGlvbi50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJlxuICAgICAgICAgIGltcG9ydGVkTmFtZXMuaGFzKHN0YXRlbWVudC5kZWNsYXJhdGlvbi5uYW1lKTtcblxuICAgICAgICBpZiAoaXNFeHBvcnRGcm9tKSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgbWVzc2FnZUlkOiBcInJlZXhwb3J0Tm90QWxsb3dlZFwiLFxuICAgICAgICAgICAgbm9kZTogc3RhdGVtZW50LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIGlzSW1wb3J0ZWREZWZhdWx0RXhwb3J0IHx8XG4gICAgICAgICAgaGFzSW1wb3J0ZWRFeHBvcnQoc3RhdGVtZW50LCBpbXBvcnRlZE5hbWVzKVxuICAgICAgICApIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICBtZXNzYWdlSWQ6IFwicmVleHBvcnRlZEltcG9ydFwiLFxuICAgICAgICAgICAgbm9kZTogc3RhdGVtZW50LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn07XG5cbi8qKlxuICogRVNMaW50IHJ1bGUgcHJldmVudGluZyByZS1leHBvcnRzIG91dHNpZGUgYmFycmVsIGZpbGVzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJ1bGUgPSBub1JlZXhwb3J0c091dHNpZGVCYXJyZWxzUnVsZTtcbiAqIGBgYFxuICovXG5jb25zdCBub1JlZXhwb3J0c091dHNpZGVCYXJyZWxzUnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGU6IChjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZS5SdWxlTGlzdGVuZXIgPT5cbiAgICBidWlsZExpc3RlbmVyRm9yRmlsZShcbiAgICAgIGNvbnRleHQsXG4gICAgICBjb250ZXh0LmZpbGVuYW1lLFxuICAgICAgZ2V0T3B0aW9ucyhjb250ZXh0Lm9wdGlvbnMpLFxuICAgICksXG4gIG1ldGE6IHtcbiAgICBkZWZhdWx0T3B0aW9uczogW3sgYWxsb3dlZEJhcnJlbE5hbWVzOiBbXCJpbmRleFwiXSB9XSxcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJSZXF1aXJlIG5vbi1iYXJyZWwgZmlsZXMgdG8gZXhwb3J0IG9ubHkgbG9jYWxseSBkZWZpbmVkIHZhbHVlcy5cIixcbiAgICAgIHJlY29tbWVuZGVkOiBmYWxzZSxcbiAgICAgIHVybDogXCJodHRwczovL2dpdGh1Yi5jb20vcGFybG90aS9lc2xpbnQtcGx1Z2luL2Jsb2IvbWFpbi9kb2NzL3J1bGVzL25vLXJlZXhwb3J0cy1vdXRzaWRlLWJhcnJlbHMubWRcIixcbiAgICB9LFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICByZWV4cG9ydGVkSW1wb3J0OlxuICAgICAgICBcIk5vbi1iYXJyZWwgZmlsZXMgbXVzdCBub3QgZXhwb3J0IGlkZW50aWZpZXJzIGltcG9ydGVkIGZyb20gb3RoZXIgbW9kdWxlcy5cIixcbiAgICAgIHJlZXhwb3J0Tm90QWxsb3dlZDpcbiAgICAgICAgXCJOb24tYmFycmVsIGZpbGVzIG11c3Qgbm90IHJlLWV4cG9ydCBmcm9tIG90aGVyIG1vZHVsZXMuXCIsXG4gICAgfSxcbiAgICBzY2hlbWE6IFtcbiAgICAgIHtcbiAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgYWxsb3dlZEJhcnJlbE5hbWVzOiB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgXCJBbGxvd2VkIGJhcnJlbCBiYXNlbmFtZXMgdGhhdCBzaG91bGQgYmUgZXhlbXB0IGZyb20gdGhlIHJlLWV4cG9ydCByZXN0cmljdGlvbi5cIixcbiAgICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgIG1pbkl0ZW1zOiAxLFxuICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgdHlwZTogXCJwcm9ibGVtXCIsXG4gIH0sXG59O1xuXG5leHBvcnQgeyBub1JlZXhwb3J0c091dHNpZGVCYXJyZWxzUnVsZSB9O1xuIl19
@@ -0,0 +1,14 @@
1
+ import type { AST } from "eslint";
2
+ import type { ExportedElement } from "./types.js";
3
+ /**
4
+ * Collects exported elements from one program body.
5
+ * @param body Program body statements.
6
+ * @returns Exported elements in declaration order.
7
+ * @example
8
+ * ```typescript
9
+ * const exported = collectExportedElements(program.body);
10
+ * ```
11
+ */
12
+ declare const collectExportedElements: (body: AST.Program["body"]) => ExportedElement[];
13
+ export { collectExportedElements };
14
+ //# sourceMappingURL=no-unused-exports-declaration-utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-unused-exports-declaration-utilities.d.ts","sourceRoot":"","sources":["../../../../src/domain/architecture/no-unused-exports/no-unused-exports-declaration-utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAGlC,OAAO,KAAK,EAAE,eAAe,EAAc,MAAM,SAAS,CAAC;AAqO3D;;;;;;;;GAQG;AACH,QAAA,MAAM,uBAAuB,GAC3B,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KACxB,eAAe,EAoCjB,CAAC;AAEF,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
@@ -0,0 +1,187 @@
1
+ import { collectPatternIdentifierNames, getExportSpecifierLocalName, getExportSpecifierName, } from "./no-unused-exports-pattern-utilities.js";
2
+ import { asRecord, readArrayProperty, readStringProperty, } from "./no-unused-exports-record-utilities.js";
3
+ /** Declaration statement types that own one named `id` property. */
4
+ const NAMED_DECLARATION_TYPES = new Set([
5
+ "ClassDeclaration",
6
+ "FunctionDeclaration",
7
+ "TSEnumDeclaration",
8
+ "TSInterfaceDeclaration",
9
+ "TSTypeAliasDeclaration",
10
+ ]);
11
+ /**
12
+ * Records variable declarator names as value declarations.
13
+ * @param declarationNames Map from declared name to declaration metadata.
14
+ * @param declarations Variable declarator candidates.
15
+ * @param statement Owning statement used for diagnostics.
16
+ * @example
17
+ * ```typescript
18
+ * addVariableDeclaratorNames(declarationNames, declarations, statement);
19
+ * ```
20
+ */
21
+ const addVariableDeclaratorNames = (declarationNames, declarations, statement) => {
22
+ for (const declaration of declarations) {
23
+ const declarationRecord = asRecord(declaration);
24
+ if (declarationRecord === void 0) {
25
+ continue;
26
+ }
27
+ const patternNames = collectPatternIdentifierNames(declarationRecord["id"]);
28
+ for (const name of patternNames) {
29
+ declarationNames.set(name, { kind: "value", node: statement });
30
+ }
31
+ }
32
+ };
33
+ /**
34
+ * Collects top-level declaration names owned by the current module.
35
+ * @param body Program body statements.
36
+ * @returns Map from locally declared name to its declaration metadata.
37
+ * @example
38
+ * ```typescript
39
+ * const declarations = collectLocalDeclarationNames(program.body);
40
+ * ```
41
+ */
42
+ const collectLocalDeclarationNames = (body) => {
43
+ const declarationNames = new Map();
44
+ for (const statement of body) {
45
+ const declarationCandidate = statement.type === "ExportNamedDeclaration" &&
46
+ statement.declaration !== null &&
47
+ statement.declaration !== void 0
48
+ ? statement.declaration
49
+ : statement;
50
+ const declarationCandidateRecord = asRecord(declarationCandidate);
51
+ const declarationCandidateType = readStringProperty(declarationCandidate, "type");
52
+ if (declarationCandidateRecord === void 0 ||
53
+ declarationCandidateType === void 0) {
54
+ continue;
55
+ }
56
+ if (NAMED_DECLARATION_TYPES.has(declarationCandidateType)) {
57
+ const declarationName = readStringProperty(declarationCandidateRecord["id"], "name");
58
+ if (declarationName !== void 0) {
59
+ declarationNames.set(declarationName, {
60
+ kind: declarationCandidateType === "TSInterfaceDeclaration" ||
61
+ declarationCandidateType === "TSTypeAliasDeclaration"
62
+ ? "type"
63
+ : "value",
64
+ node: statement,
65
+ });
66
+ }
67
+ continue;
68
+ }
69
+ if (declarationCandidateType !== "VariableDeclaration") {
70
+ continue;
71
+ }
72
+ const declarations = readArrayProperty(declarationCandidateRecord, "declarations");
73
+ if (declarations === void 0) {
74
+ continue;
75
+ }
76
+ addVariableDeclaratorNames(declarationNames, declarations, statement);
77
+ }
78
+ return declarationNames;
79
+ };
80
+ /**
81
+ * Adds exported elements described by one export declaration site.
82
+ * @param exportedElements Mutable exported-element accumulator.
83
+ * @param statement Named export statement being inspected.
84
+ * @example
85
+ * ```typescript
86
+ * addDeclarationExportElements(exportedElements, statement);
87
+ * ```
88
+ */
89
+ const addDeclarationExportElements = (exportedElements, statement) => {
90
+ const declaration = asRecord(statement.declaration);
91
+ if (readStringProperty(declaration, "type") === "VariableDeclaration") {
92
+ const variableDeclarations = readArrayProperty(declaration, "declarations");
93
+ if (variableDeclarations !== void 0) {
94
+ for (const variable of variableDeclarations) {
95
+ const patternNames = collectPatternIdentifierNames(asRecord(variable)?.["id"]);
96
+ for (const name of patternNames) {
97
+ exportedElements.push({
98
+ exportedName: name,
99
+ exportKind: "value",
100
+ node: statement,
101
+ });
102
+ }
103
+ }
104
+ }
105
+ return;
106
+ }
107
+ const declarationName = readStringProperty(declaration?.["id"], "name");
108
+ const declarationType = readStringProperty(declaration, "type");
109
+ const exportKind = declarationType === "TSInterfaceDeclaration" ||
110
+ declarationType === "TSTypeAliasDeclaration"
111
+ ? "type"
112
+ : "value";
113
+ if (typeof declarationName === "string") {
114
+ exportedElements.push({
115
+ exportedName: declarationName,
116
+ exportKind,
117
+ node: statement,
118
+ });
119
+ }
120
+ };
121
+ /**
122
+ * Adds exported elements for the specifiers of one named export statement.
123
+ * @param exportedElements Mutable exported-element accumulator.
124
+ * @param localDeclarationNames Locally declared names for specifier lookup.
125
+ * @param statement Named export statement being inspected.
126
+ * @example
127
+ * ```typescript
128
+ * addSpecifierExportElements(exportedElements, localDeclarationNames, statement);
129
+ * ```
130
+ */
131
+ const addSpecifierExportElements = (exportedElements, localDeclarationNames, statement) => {
132
+ for (const specifier of statement.specifiers) {
133
+ const localName = getExportSpecifierLocalName(specifier);
134
+ const localDeclaration = localName === void 0 ? void 0 : localDeclarationNames.get(localName);
135
+ if (localDeclaration === void 0) {
136
+ continue;
137
+ }
138
+ const exportedName = getExportSpecifierName(specifier);
139
+ if (exportedName !== void 0) {
140
+ const statementExportKind = readStringProperty(statement, "exportKind");
141
+ const specifierExportKind = readStringProperty(specifier, "exportKind");
142
+ const isTypeOnlyExport = statementExportKind === "type" || specifierExportKind === "type";
143
+ exportedElements.push({
144
+ exportedName,
145
+ exportKind: isTypeOnlyExport ? "type" : localDeclaration.kind,
146
+ node: localDeclaration.node,
147
+ });
148
+ }
149
+ }
150
+ };
151
+ /**
152
+ * Collects exported elements from one program body.
153
+ * @param body Program body statements.
154
+ * @returns Exported elements in declaration order.
155
+ * @example
156
+ * ```typescript
157
+ * const exported = collectExportedElements(program.body);
158
+ * ```
159
+ */
160
+ const collectExportedElements = (body) => {
161
+ const exportedElements = [];
162
+ const localDeclarationNames = collectLocalDeclarationNames(body);
163
+ for (const statement of body) {
164
+ if (statement.type === "ExportDefaultDeclaration") {
165
+ exportedElements.push({
166
+ exportedName: "default",
167
+ exportKind: "value",
168
+ node: statement,
169
+ });
170
+ continue;
171
+ }
172
+ if (statement.type !== "ExportNamedDeclaration") {
173
+ continue;
174
+ }
175
+ if (statement.source !== null && statement.source !== void 0) {
176
+ continue;
177
+ }
178
+ if (statement.declaration !== null && statement.declaration !== void 0) {
179
+ addDeclarationExportElements(exportedElements, statement);
180
+ continue;
181
+ }
182
+ addSpecifierExportElements(exportedElements, localDeclarationNames, statement);
183
+ }
184
+ return exportedElements;
185
+ };
186
+ export { collectExportedElements };
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tdW51c2VkLWV4cG9ydHMtZGVjbGFyYXRpb24tdXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi9hcmNoaXRlY3R1cmUvbm8tdW51c2VkLWV4cG9ydHMvbm8tdW51c2VkLWV4cG9ydHMtZGVjbGFyYXRpb24tdXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IsMkJBQTJCLEVBQzNCLHNCQUFzQixHQUN2QixNQUFNLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFDTCxRQUFRLEVBQ1IsaUJBQWlCLEVBQ2pCLGtCQUFrQixHQUNuQixNQUFNLHNDQUFzQyxDQUFDO0FBRTlDLG9FQUFvRTtBQUNwRSxNQUFNLHVCQUF1QixHQUFHLElBQUksR0FBRyxDQUFDO0lBQ3RDLGtCQUFrQjtJQUNsQixxQkFBcUI7SUFDckIsbUJBQW1CO0lBQ25CLHdCQUF3QjtJQUN4Qix3QkFBd0I7Q0FDekIsQ0FBQyxDQUFDO0FBV0g7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSwwQkFBMEIsR0FBRyxDQUNqQyxnQkFBK0MsRUFDL0MsWUFBZ0MsRUFDaEMsU0FBc0MsRUFDaEMsRUFBRTtJQUNSLEtBQUssTUFBTSxXQUFXLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkMsTUFBTSxpQkFBaUIsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFaEQsSUFBSSxpQkFBaUIsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pDLFNBQVM7UUFDWCxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsNkJBQTZCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUU1RSxLQUFLLE1BQU0sSUFBSSxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2hDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUks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QUFJLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdELFNBQVM7UUFDWCxDQUFDO1FBRUQsSUFBSSxTQUFTLENBQUMsV0FBVyxLQUFLLElBQUksSUFBSSxTQUFTLENBQUMsV0FBVyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkUsNEJBQTRCLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFFMUQsU0FBUztRQUNYLENBQUM7UUFFRCwwQkFBMEIsQ0FDeEIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQixTQUFTLENBQ1YsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLGdCQUFnQixDQUFDO0FBQzFCLENBQUMsQ0FBQztBQUVGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBU1QgfSBmcm9tIFwiZXNsaW50XCI7XG5pbXBvcnQgdHlwZSAqIGFzIEVTVHJlZSBmcm9tIFwiZXN0cmVlXCI7XG5cbmltcG9ydCB0eXBlIHsgRXhwb3J0ZWRFbGVtZW50LCBFeHBvcnRLaW5kIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgY29sbGVjdFBhdHRlcm5JZGVudGlmaWVyTmFtZXMsXG4gIGdldEV4cG9ydFNwZWNpZmllckxvY2FsTmFtZSxcbiAgZ2V0RXhwb3J0U3BlY2lmaWVyTmFtZSxcbn0gZnJvbSBcIi4vbm8tdW51c2VkLWV4cG9ydHMtcGF0dGVybi11dGlsaXRpZXNcIjtcbmltcG9ydCB7XG4gIGFzUmVjb3JkLFxuICByZWFkQXJyYXlQcm9wZXJ0eSxcbiAgcmVhZFN0cmluZ1Byb3BlcnR5LFxufSBmcm9tIFwiLi9uby11bnVzZWQtZXhwb3J0cy1yZWNvcmQtdXRpbGl0aWVzXCI7XG5cbi8qKiBEZWNsYXJhdGlvbiBzdGF0ZW1lbnQgdHlwZXMgdGhhdCBvd24gb25lIG5hbWVkIGBpZGAgcHJvcGVydHkuICovXG5jb25zdCBOQU1FRF9ERUNMQVJBVElPTl9UWVBFUyA9IG5ldyBTZXQoW1xuICBcIkNsYXNzRGVjbGFyYXRpb25cIixcbiAgXCJGdW5jdGlvbkRlY2xhcmF0aW9uXCIsXG4gIFwiVFNFbnVtRGVjbGFyYXRpb25cIixcbiAgXCJUU0ludGVyZmFjZURlY2xhcmF0aW9uXCIsXG4gIFwiVFNUeXBlQWxpYXNEZWNsYXJhdGlvblwiLFxuXSk7XG5cbi8qKiBMb2NhbCB0b3AtbGV2ZWwgZGVjbGFyYXRpb24gZGlzY292ZXJlZCB3aGVuIGNvbGxlY3RpbmcgZXhwb3J0IHNvdXJjZXMuICovXG5pbnRlcmZhY2UgTG9jYWxEZWNsYXJhdGlvbiB7XG4gIC8qKiBFeHBvcnQga2luZCBpbXBsaWVkIGJ5IHRoZSBkZWNsYXJhdGlvbi4gKi9cbiAga2luZDogRXhwb3J0S2luZDtcblxuICAvKiogRGVjbGFyYXRpb24gc3RhdGVtZW50IHVzZWQgZm9yIGRpYWdub3N0aWNzLiAqL1xuICBub2RlOiBBU1QuUHJvZ3JhbVtcImJvZHlcIl1bbnVtYmVyXTtcbn1cblxuLyoqXG4gKiBSZWNvcmRzIHZhcmlhYmxlIGRlY2xhcmF0b3IgbmFtZXMgYXMgdmFsdWUgZGVjbGFyYXRpb25zLlxuICogQHBhcmFtIGRlY2xhcmF0aW9uTmFtZXMgTWFwIGZyb20gZGVjbGFyZWQgbmFtZSB0byBkZWNsYXJhdGlvbiBtZXRhZGF0YS5cbiAqIEBwYXJhbSBkZWNsYXJhdGlvbnMgVmFyaWFibGUgZGVjbGFyYXRvciBjYW5kaWRhdGVzLlxuICogQHBhcmFtIHN0YXRlbWVudCBPd25pbmcgc3RhdGVtZW50IHVzZWQgZm9yIGRpYWdub3N0aWNzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGFkZFZhcmlhYmxlRGVjbGFyYXRvck5hbWVzKGRlY2xhcmF0aW9uTmFtZXMsIGRlY2xhcmF0aW9ucywgc3RhdGVtZW50KTtcbiAqIGBgYFxuICovXG5jb25zdCBhZGRWYXJpYWJsZURlY2xhcmF0b3JOYW1lcyA9IChcbiAgZGVjbGFyYXRpb25OYW1lczogTWFwPHN0cmluZywgTG9jYWxEZWNsYXJhdGlvbj4sXG4gIGRlY2xhcmF0aW9uczogcmVhZG9ubHkgdW5rbm93bltdLFxuICBzdGF0ZW1lbnQ6IEFTVC5Qcm9ncmFtW1wiYm9keVwiXVtudW1iZXJdLFxuKTogdm9pZCA9PiB7XG4gIGZvciAoY29uc3QgZGVjbGFyYXRpb24gb2YgZGVjbGFyYXRpb25zKSB7XG4gICAgY29uc3QgZGVjbGFyYXRpb25SZWNvcmQgPSBhc1JlY29yZChkZWNsYXJhdGlvbik7XG5cbiAgICBpZiAoZGVjbGFyYXRpb25SZWNvcmQgPT09IHZvaWQgMCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgcGF0dGVybk5hbWVzID0gY29sbGVjdFBhdHRlcm5JZGVudGlmaWVyTmFtZXMoZGVjbGFyYXRpb25SZWNvcmRbXCJpZFwiXSk7XG5cbiAgICBmb3IgKGNvbnN0IG5hbWUgb2YgcGF0dGVybk5hbWVzKSB7XG4gICAgICBkZWNsYXJhdGlvbk5hbWVzLnNldChuYW1lLCB7IGtpbmQ6IFwidmFsdWVcIiwgbm9kZTogc3RhdGVtZW50IH0pO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBDb2xsZWN0cyB0b3AtbGV2ZWwgZGVjbGFyYXRpb24gbmFtZXMgb3duZWQgYnkgdGhlIGN1cnJlbnQgbW9kdWxlLlxuICogQHBhcmFtIGJvZHkgUHJvZ3JhbSBib2R5IHN0YXRlbWVudHMuXG4gKiBAcmV0dXJucyBNYXAgZnJvbSBsb2NhbGx5IGRlY2xhcmVkIG5hbWUgdG8gaXRzIGRlY2xhcmF0aW9uIG1ldGFkYXRhLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGRlY2xhcmF0aW9ucyA9IGNvbGxlY3RMb2NhbERlY2xhcmF0aW9uTmFtZXMocHJvZ3JhbS5ib2R5KTtcbiAqIGBgYFxuICovXG5jb25zdCBjb2xsZWN0TG9jYWxEZWNsYXJhdGlvbk5hbWVzID0gKFxuICBib2R5OiBBU1QuUHJvZ3JhbVtcImJvZHlcIl0sXG4pOiBNYXA8c3RyaW5nLCBMb2NhbERlY2xhcmF0aW9uPiA9PiB7XG4gIGNvbnN0IGRlY2xhcmF0aW9uTmFtZXMgPSBuZXcgTWFwPHN0cmluZywgTG9jYWxEZWNsYXJhdGlvbj4oKTtcblxuICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiBib2R5KSB7XG4gICAgY29uc3QgZGVjbGFyYXRpb25DYW5kaWRhdGUgPVxuICAgICAgc3RhdGVtZW50LnR5cGUgPT09IFwiRXhwb3J0TmFtZWREZWNsYXJhdGlvblwiICYmXG4gICAgICBzdGF0ZW1lbnQuZGVjbGFyYXRpb24gIT09IG51bGwgJiZcbiAgICAgIHN0YXRlbWVudC5kZWNsYXJhdGlvbiAhPT0gdm9pZCAwXG4gICAgICAgID8gc3RhdGVtZW50LmRlY2xhcmF0aW9uXG4gICAgICAgIDogc3RhdGVtZW50O1xuICAgIGNvbnN0IGRlY2xhcmF0aW9uQ2FuZGlkYXRlUmVjb3JkID0gYXNSZWNvcmQoZGVjbGFyYXRpb25DYW5kaWRhdGUpO1xuICAgIGNvbnN0IGRlY2xhcmF0aW9uQ2FuZGlkYXRlVHlwZSA9IHJlYWRTdHJpbmdQcm9wZXJ0eShcbiAgICAgIGRlY2xhcmF0aW9uQ2FuZGlkYXRlLFxuICAgICAgXCJ0eXBlXCIsXG4gICAgKTtcblxuICAgIGlmIChcbiAgICAgIGRlY2xhcmF0aW9uQ2FuZGlkYXRlUmVjb3JkID09PSB2b2lkIDAgfHxcbiAgICAgIGRlY2xhcmF0aW9uQ2FuZGlkYXRlVHlwZSA9PT0gdm9pZCAwXG4gICAgKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoTkFNRURfREVDTEFSQVRJT05fVFlQRVMuaGFzKGRlY2xhcmF0aW9uQ2FuZGlkYXRlVHlwZSkpIHtcbiAgICAgIGNvbnN0IGRlY2xhcmF0aW9uTmFtZSA9IHJlYWRTdHJpbmdQcm9wZXJ0eShcbiAgICAgICAgZGVjbGFyYXRpb25DYW5kaWRhdGVSZWNvcmRbXCJpZFwiXSxcbiAgICAgICAgXCJuYW1lXCIsXG4gICAgICApO1xuXG4gICAgICBpZiAoZGVjbGFyYXRpb25OYW1lICE9PSB2b2lkIDApIHtcbiAgICAgICAgZGVjbGFyYXRpb25OYW1lcy5zZXQoZGVjbGFyYXRpb25OYW1lLCB7XG4gICAgICAgICAga2luZDpcbiAgICAgICAgICAgIGRlY2xhcmF0aW9uQ2FuZGlkYXRlVHlwZSA9PT0gXCJUU0ludGVyZmFjZURlY2xhcmF0aW9uXCIgfHxcbiAgICAgICAgICAgIGRlY2xhcmF0aW9uQ2FuZGlkYXRlVHlwZSA9PT0gXCJUU1R5cGVBbGlhc0RlY2xhcmF0aW9uXCJcbiAgICAgICAgICAgICAgPyBcInR5cGVcIlxuICAgICAgICAgICAgICA6IFwidmFsdWVcIixcbiAgICAgICAgICBub2RlOiBzdGF0ZW1lbnQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoZGVjbGFyYXRpb25DYW5kaWRhdGVUeXBlICE9PSBcIlZhcmlhYmxlRGVjbGFyYXRpb25cIikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgZGVjbGFyYXRpb25zID0gcmVhZEFycmF5UHJvcGVydHkoXG4gICAgICBkZWNsYXJhdGlvbkNhbmRpZGF0ZVJlY29yZCxcbiAgICAgIFwiZGVjbGFyYXRpb25zXCIsXG4gICAgKTtcblxuICAgIGlmIChkZWNsYXJhdGlvbnMgPT09IHZvaWQgMCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgYWRkVmFyaWFibGVEZWNsYXJhdG9yTmFtZXMoZGVjbGFyYXRpb25OYW1lcywgZGVjbGFyYXRpb25zLCBzdGF0ZW1lbnQpO1xuICB9XG5cbiAgcmV0dXJuIGRlY2xhcmF0aW9uTmFtZXM7XG59O1xuXG4vKipcbiAqIEFkZHMgZXhwb3J0ZWQgZWxlbWVudHMgZGVzY3JpYmVkIGJ5IG9uZSBleHBvcnQgZGVjbGFyYXRpb24gc2l0ZS5cbiAqIEBwYXJhbSBleHBvcnRlZEVsZW1lbnRzIE11dGFibGUgZXhwb3J0ZWQtZWxlbWVudCBhY2N1bXVsYXRvci5cbiAqIEBwYXJhbSBzdGF0ZW1lbnQgTmFtZWQgZXhwb3J0IHN0YXRlbWVudCBiZWluZyBpbnNwZWN0ZWQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogYWRkRGVjbGFyYXRpb25FeHBvcnRFbGVtZW50cyhleHBvcnRlZEVsZW1lbnRzLCBzdGF0ZW1lbnQpO1xuICogYGBgXG4gKi9cbmNvbnN0IGFkZERlY2xhcmF0aW9uRXhwb3J0RWxlbWVudHMgPSAoXG4gIGV4cG9ydGVkRWxlbWVudHM6IEV4cG9ydGVkRWxlbWVudFtdLFxuICBzdGF0ZW1lbnQ6IEVTVHJlZS5FeHBvcnROYW1lZERlY2xhcmF0aW9uLFxuKTogdm9pZCA9PiB7XG4gIGNvbnN0IGRlY2xhcmF0aW9uID0gYXNSZWNvcmQoc3RhdGVtZW50LmRlY2xhcmF0aW9uKTtcblxuICBpZiAocmVhZFN0cmluZ1Byb3BlcnR5KGRlY2xhcmF0aW9uLCBcInR5cGVcIikgPT09IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiKSB7XG4gICAgY29uc3QgdmFyaWFibGVEZWNsYXJhdGlvbnMgPSByZWFkQXJyYXlQcm9wZXJ0eShkZWNsYXJhdGlvbiwgXCJkZWNsYXJhdGlvbnNcIik7XG5cbiAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbnMgIT09IHZvaWQgMCkge1xuICAgICAgZm9yIChjb25zdCB2YXJpYWJsZSBvZiB2YXJpYWJsZURlY2xhcmF0aW9ucykge1xuICAgICAgICBjb25zdCBwYXR0ZXJuTmFtZXMgPSBjb2xsZWN0UGF0dGVybklkZW50aWZpZXJOYW1lcyhcbiAgICAgICAgICBhc1JlY29yZCh2YXJpYWJsZSk/LltcImlkXCJdLFxuICAgICAgICApO1xuXG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBvZiBwYXR0ZXJuTmFtZXMpIHtcbiAgICAgICAgICBleHBvcnRlZEVsZW1lbnRzLnB1c2goe1xuICAgICAgICAgICAgZXhwb3J0ZWROYW1lOiBuYW1lLFxuICAgICAgICAgICAgZXhwb3J0S2luZDogXCJ2YWx1ZVwiLFxuICAgICAgICAgICAgbm9kZTogc3RhdGVtZW50LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZGVjbGFyYXRpb25OYW1lID0gcmVhZFN0cmluZ1Byb3BlcnR5KGRlY2xhcmF0aW9uPy5bXCJpZFwiXSwgXCJuYW1lXCIpO1xuICBjb25zdCBkZWNsYXJhdGlvblR5cGUgPSByZWFkU3RyaW5nUHJvcGVydHkoZGVjbGFyYXRpb24sIFwidHlwZVwiKTtcbiAgY29uc3QgZXhwb3J0S2luZDogRXhwb3J0S2luZCA9XG4gICAgZGVjbGFyYXRpb25UeXBlID09PSBcIlRTSW50ZXJmYWNlRGVjbGFyYXRpb25cIiB8fFxuICAgIGRlY2xhcmF0aW9uVHlwZSA9PT0gXCJUU1R5cGVBbGlhc0RlY2xhcmF0aW9uXCJcbiAgICAgID8gXCJ0eXBlXCJcbiAgICAgIDogXCJ2YWx1ZVwiO1xuXG4gIGlmICh0eXBlb2YgZGVjbGFyYXRpb25OYW1lID09PSBcInN0cmluZ1wiKSB7XG4gICAgZXhwb3J0ZWRFbGVtZW50cy5wdXNoKHtcbiAgICAgIGV4cG9ydGVkTmFtZTogZGVjbGFyYXRpb25OYW1lLFxuICAgICAgZXhwb3J0S2luZCxcbiAgICAgIG5vZGU6IHN0YXRlbWVudCxcbiAgICB9KTtcbiAgfVxufTtcblxuLyoqXG4gKiBBZGRzIGV4cG9ydGVkIGVsZW1lbnRzIGZvciB0aGUgc3BlY2lmaWVycyBvZiBvbmUgbmFtZWQgZXhwb3J0IHN0YXRlbWVudC5cbiAqIEBwYXJhbSBleHBvcnRlZEVsZW1lbnRzIE11dGFibGUgZXhwb3J0ZWQtZWxlbWVudCBhY2N1bXVsYXRvci5cbiAqIEBwYXJhbSBsb2NhbERlY2xhcmF0aW9uTmFtZXMgTG9jYWxseSBkZWNsYXJlZCBuYW1lcyBmb3Igc3BlY2lmaWVyIGxvb2t1cC5cbiAqIEBwYXJhbSBzdGF0ZW1lbnQgTmFtZWQgZXhwb3J0IHN0YXRlbWVudCBiZWluZyBpbnNwZWN0ZWQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogYWRkU3BlY2lmaWVyRXhwb3J0RWxlbWVudHMoZXhwb3J0ZWRFbGVtZW50cywgbG9jYWxEZWNsYXJhdGlvbk5hbWVzLCBzdGF0ZW1lbnQpO1xuICogYGBgXG4gKi9cbmNvbnN0IGFkZFNwZWNpZmllckV4cG9ydEVsZW1lbnRzID0gKFxuICBleHBvcnRlZEVsZW1lbnRzOiBFeHBvcnRlZEVsZW1lbnRbXSxcbiAgbG9jYWxEZWNsYXJhdGlvbk5hbWVzOiBSZWFkb25seU1hcDxzdHJpbmcsIExvY2FsRGVjbGFyYXRpb24+LFxuICBzdGF0ZW1lbnQ6IEVTVHJlZS5FeHBvcnROYW1lZERlY2xhcmF0aW9uLFxuKTogdm9pZCA9PiB7XG4gIGZvciAoY29uc3Qgc3BlY2lmaWVyIG9mIHN0YXRlbWVudC5zcGVjaWZpZXJzKSB7XG4gICAgY29uc3QgbG9jYWxOYW1lID0gZ2V0RXhwb3J0U3BlY2lmaWVyTG9jYWxOYW1lKHNwZWNpZmllcik7XG4gICAgY29uc3QgbG9jYWxEZWNsYXJhdGlvbiA9XG4gICAgICBsb2NhbE5hbWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGxvY2FsRGVjbGFyYXRpb25OYW1lcy5nZXQobG9jYWxOYW1lKTtcblxuICAgIGlmIChsb2NhbERlY2xhcmF0aW9uID09PSB2b2lkIDApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGV4cG9ydGVkTmFtZSA9IGdldEV4cG9ydFNwZWNpZmllck5hbWUoc3BlY2lmaWVyKTtcblxuICAgIGlmIChleHBvcnRlZE5hbWUgIT09IHZvaWQgMCkge1xuICAgICAgY29uc3Qgc3RhdGVtZW50RXhwb3J0S2luZCA9IHJlYWRTdHJpbmdQcm9wZXJ0eShzdGF0ZW1lbnQsIFwiZXhwb3J0S2luZFwiKTtcbiAgICAgIGNvbnN0IHNwZWNpZmllckV4cG9ydEtpbmQgPSByZWFkU3RyaW5nUHJvcGVydHkoc3BlY2lmaWVyLCBcImV4cG9ydEtpbmRcIik7XG4gICAgICBjb25zdCBpc1R5cGVPbmx5RXhwb3J0ID1cbiAgICAgICAgc3RhdGVtZW50RXhwb3J0S2luZCA9PT0gXCJ0eXBlXCIgfHwgc3BlY2lmaWVyRXhwb3J0S2luZCA9PT0gXCJ0eXBlXCI7XG5cbiAgICAgIGV4cG9ydGVkRWxlbWVudHMucHVzaCh7XG4gICAgICAgIGV4cG9ydGVkTmFtZSxcbiAgICAgICAgZXhwb3J0S2luZDogaXNUeXBlT25seUV4cG9ydCA/IFwidHlwZVwiIDogbG9jYWxEZWNsYXJhdGlvbi5raW5kLFxuICAgICAgICBub2RlOiBsb2NhbERlY2xhcmF0aW9uLm5vZGUsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogQ29sbGVjdHMgZXhwb3J0ZWQgZWxlbWVudHMgZnJvbSBvbmUgcHJvZ3JhbSBib2R5LlxuICogQHBhcmFtIGJvZHkgUHJvZ3JhbSBib2R5IHN0YXRlbWVudHMuXG4gKiBAcmV0dXJucyBFeHBvcnRlZCBlbGVtZW50cyBpbiBkZWNsYXJhdGlvbiBvcmRlci5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBleHBvcnRlZCA9IGNvbGxlY3RFeHBvcnRlZEVsZW1lbnRzKHByb2dyYW0uYm9keSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgY29sbGVjdEV4cG9ydGVkRWxlbWVudHMgPSAoXG4gIGJvZHk6IEFTVC5Qcm9ncmFtW1wiYm9keVwiXSxcbik6IEV4cG9ydGVkRWxlbWVudFtdID0+IHtcbiAgY29uc3QgZXhwb3J0ZWRFbGVtZW50czogRXhwb3J0ZWRFbGVtZW50W10gPSBbXTtcbiAgY29uc3QgbG9jYWxEZWNsYXJhdGlvbk5hbWVzID0gY29sbGVjdExvY2FsRGVjbGFyYXRpb25OYW1lcyhib2R5KTtcblxuICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiBib2R5KSB7XG4gICAgaWYgKHN0YXRlbWVudC50eXBlID09PSBcIkV4cG9ydERlZmF1bHREZWNsYXJhdGlvblwiKSB7XG4gICAgICBleHBvcnRlZEVsZW1lbnRzLnB1c2goe1xuICAgICAgICBleHBvcnRlZE5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICBleHBvcnRLaW5kOiBcInZhbHVlXCIsXG4gICAgICAgIG5vZGU6IHN0YXRlbWVudCxcbiAgICAgIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlbWVudC50eXBlICE9PSBcIkV4cG9ydE5hbWVkRGVjbGFyYXRpb25cIikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlbWVudC5zb3VyY2UgIT09IG51bGwgJiYgc3RhdGVtZW50LnNvdXJjZSAhPT0gdm9pZCAwKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50LmRlY2xhcmF0aW9uICE9PSBudWxsICYmIHN0YXRlbWVudC5kZWNsYXJhdGlvbiAhPT0gdm9pZCAwKSB7XG4gICAgICBhZGREZWNsYXJhdGlvbkV4cG9ydEVsZW1lbnRzKGV4cG9ydGVkRWxlbWVudHMsIHN0YXRlbWVudCk7XG5cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGFkZFNwZWNpZmllckV4cG9ydEVsZW1lbnRzKFxuICAgICAgZXhwb3J0ZWRFbGVtZW50cyxcbiAgICAgIGxvY2FsRGVjbGFyYXRpb25OYW1lcyxcbiAgICAgIHN0YXRlbWVudCxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGV4cG9ydGVkRWxlbWVudHM7XG59O1xuXG5leHBvcnQgeyBjb2xsZWN0RXhwb3J0ZWRFbGVtZW50cyB9O1xuIl19
@@ -0,0 +1,26 @@
1
+ import type { Rule } from "eslint";
2
+ import * as ts from "typescript";
3
+ import type { ExportKind } from "./types.js";
4
+ /**
5
+ * Resolves TypeScript parser services program when available.
6
+ * @param context Rule context.
7
+ * @returns TypeScript program when available.
8
+ * @example
9
+ * ```typescript
10
+ * const program = getTypeScriptProgram(context);
11
+ * ```
12
+ */
13
+ declare const getTypeScriptProgram: (context: Rule.RuleContext) => ts.Program | undefined;
14
+ /**
15
+ * Checks whether one identifier is one concrete usage candidate for the export kind.
16
+ * @param identifier Identifier node.
17
+ * @param exportKind Whether type-only or value usage is required.
18
+ * @returns True when the identifier can satisfy usage.
19
+ * @example
20
+ * ```typescript
21
+ * const concrete = isConcreteUsageIdentifier(identifier, "value");
22
+ * ```
23
+ */
24
+ declare const isConcreteUsageIdentifier: (identifier: ts.Identifier, exportKind: ExportKind) => boolean;
25
+ export { getTypeScriptProgram, isConcreteUsageIdentifier };
26
+ //# sourceMappingURL=no-unused-exports-identifier-utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-unused-exports-identifier-utilities.d.ts","sourceRoot":"","sources":["../../../../src/domain/architecture/no-unused-exports/no-unused-exports-identifier-utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAGnC,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C;;;;;;;;GAQG;AACH,QAAA,MAAM,oBAAoB,GACxB,SAAS,IAAI,CAAC,WAAW,KACxB,EAAE,CAAC,OAAO,GAAG,SAOf,CAAC;AAsEF;;;;;;;;;GASG;AACH,QAAA,MAAM,yBAAyB,GAC7B,YAAY,EAAE,CAAC,UAAU,EACzB,YAAY,UAAU,KACrB,OAQF,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,CAAC"}
@@ -0,0 +1,95 @@
1
+ import { ESLintUtils } from "@typescript-eslint/utils";
2
+ import * as ts from "typescript";
3
+ /**
4
+ * Resolves TypeScript parser services program when available.
5
+ * @param context Rule context.
6
+ * @returns TypeScript program when available.
7
+ * @example
8
+ * ```typescript
9
+ * const program = getTypeScriptProgram(context);
10
+ * ```
11
+ */
12
+ const getTypeScriptProgram = (context) => {
13
+ try {
14
+ const services = ESLintUtils.getParserServices(context);
15
+ return services.program;
16
+ }
17
+ catch {
18
+ return void 0;
19
+ }
20
+ };
21
+ /**
22
+ * Checks whether an identifier participates in one declaration/import/export site.
23
+ * @param identifier Identifier node to evaluate.
24
+ * @returns True when the identifier is declaration-only syntax.
25
+ * @example
26
+ * ```typescript
27
+ * const declaration = isDeclarationOnlyIdentifier(identifier);
28
+ * ```
29
+ */
30
+ const isDeclarationOnlyIdentifier = (identifier) => {
31
+ const parent = identifier.parent;
32
+ return (ts.isImportSpecifier(parent) ||
33
+ ts.isImportClause(parent) ||
34
+ ts.isNamespaceImport(parent) ||
35
+ ts.isImportEqualsDeclaration(parent) ||
36
+ ts.isExportSpecifier(parent) ||
37
+ ts.isTypeAliasDeclaration(parent) ||
38
+ ts.isInterfaceDeclaration(parent) ||
39
+ ts.isTypeParameterDeclaration(parent) ||
40
+ (ts.isVariableDeclaration(parent) && parent.name === identifier) ||
41
+ (ts.isFunctionDeclaration(parent) && parent.name === identifier) ||
42
+ (ts.isClassDeclaration(parent) && parent.name === identifier) ||
43
+ (ts.isParameter(parent) && parent.name === identifier));
44
+ };
45
+ /**
46
+ * Checks whether one identifier node appears under a type node.
47
+ * @param identifier Candidate identifier.
48
+ * @returns True when the identifier is inside type-only syntax.
49
+ * @example
50
+ * ```typescript
51
+ * const typePosition = isTypePositionIdentifier(identifier);
52
+ * ```
53
+ */
54
+ const isTypePositionIdentifier = (identifier) => {
55
+ const visitNode = (current) => {
56
+ if (ts.isTypeQueryNode(current)) {
57
+ return false;
58
+ }
59
+ if (ts.isTypeNode(current)) {
60
+ return true;
61
+ }
62
+ if (ts.isExpressionStatement(current) ||
63
+ ts.isCallExpression(current) ||
64
+ ts.isPropertyAccessExpression(current) ||
65
+ ts.isElementAccessExpression(current) ||
66
+ ts.isVariableDeclaration(current) ||
67
+ ts.isReturnStatement(current)) {
68
+ return false;
69
+ }
70
+ if (ts.isSourceFile(current)) {
71
+ return false;
72
+ }
73
+ return visitNode(current.parent);
74
+ };
75
+ return visitNode(identifier);
76
+ };
77
+ /**
78
+ * Checks whether one identifier is one concrete usage candidate for the export kind.
79
+ * @param identifier Identifier node.
80
+ * @param exportKind Whether type-only or value usage is required.
81
+ * @returns True when the identifier can satisfy usage.
82
+ * @example
83
+ * ```typescript
84
+ * const concrete = isConcreteUsageIdentifier(identifier, "value");
85
+ * ```
86
+ */
87
+ const isConcreteUsageIdentifier = (identifier, exportKind) => {
88
+ if (isDeclarationOnlyIdentifier(identifier)) {
89
+ return false;
90
+ }
91
+ const isInTypePosition = isTypePositionIdentifier(identifier);
92
+ return exportKind === "type" ? isInTypePosition : !isInTypePosition;
93
+ };
94
+ export { getTypeScriptProgram, isConcreteUsageIdentifier };
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tdW51c2VkLWV4cG9ydHMtaWRlbnRpZmllci11dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2FyY2hpdGVjdHVyZS9uby11bnVzZWQtZXhwb3J0cy9uby11bnVzZWQtZXhwb3J0cy1pZGVudGlmaWVyLXV0aWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFJakM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLG9CQUFvQixHQUFHLENBQzNCLE9BQXlCLEVBQ0QsRUFBRTtJQUMxQixJQUFJLENBQUM7UUFDSCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsaUJBQWlCLENBQUMsT0FBZ0IsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUNoQixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLDJCQUEyQixHQUFHLENBQUMsVUFBeUIsRUFBVyxFQUFFO0lBQ3pFLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7SUFFakMsT0FBTyxDQUNMLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7UUFDNUIsRUFBRSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFDekIsRUFBRSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztRQUM1QixFQUFFLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDO1FBQ3BDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7UUFDNUIsRUFBRSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQztRQUNqQyxFQUFFLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDO1FBQ2pDLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLENBQUM7UUFDckMsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUM7UUFDaEUsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUM7UUFDaEUsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUM7UUFDN0QsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQ3ZELENBQUM7QUFDSixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxVQUF5QixFQUFXLEVBQUU7SUFDdEUsTUFBTSxTQUFTLEdBQUcsQ0FBQyxPQUFnQixFQUFXLEVBQUU7UUFDOUMsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDaEMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFDRSxFQUFFLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDO1lBQ2pDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7WUFDNUIsRUFBRSxDQUFDLDBCQUEwQixDQUFDLE9BQU8sQ0FBQztZQUN0QyxFQUFFLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDO1lBQ3JDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUM7WUFDakMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxFQUM3QixDQUFDO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDN0IsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQztJQUVGLE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQy9CLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0seUJBQXlCLEdBQUcsQ0FDaEMsVUFBeUIsRUFDekIsVUFBc0IsRUFDYixFQUFFO0lBQ1gsSUFBSSwyQkFBMkIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQzVDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sZ0JBQWdCLEdBQUcsd0JBQXdCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFOUQsT0FBTyxVQUFVLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztBQUN0RSxDQUFDLENBQUM7QUFFRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUseUJBQXlCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHsgRVNMaW50VXRpbHMgfSBmcm9tIFwiQHR5cGVzY3JpcHQtZXNsaW50L3V0aWxzXCI7XG5pbXBvcnQgKiBhcyB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG5pbXBvcnQgdHlwZSB7IEV4cG9ydEtpbmQgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIFJlc29sdmVzIFR5cGVTY3JpcHQgcGFyc2VyIHNlcnZpY2VzIHByb2dyYW0gd2hlbiBhdmFpbGFibGUuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGNvbnRleHQuXG4gKiBAcmV0dXJucyBUeXBlU2NyaXB0IHByb2dyYW0gd2hlbiBhdmFpbGFibGUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcHJvZ3JhbSA9IGdldFR5cGVTY3JpcHRQcm9ncmFtKGNvbnRleHQpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFR5cGVTY3JpcHRQcm9ncmFtID0gKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuKTogdHMuUHJvZ3JhbSB8IHVuZGVmaW5lZCA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc2VydmljZXMgPSBFU0xpbnRVdGlscy5nZXRQYXJzZXJTZXJ2aWNlcyhjb250ZXh0IGFzIG5ldmVyKTtcbiAgICByZXR1cm4gc2VydmljZXMucHJvZ3JhbTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhbiBpZGVudGlmaWVyIHBhcnRpY2lwYXRlcyBpbiBvbmUgZGVjbGFyYXRpb24vaW1wb3J0L2V4cG9ydCBzaXRlLlxuICogQHBhcmFtIGlkZW50aWZpZXIgSWRlbnRpZmllciBub2RlIHRvIGV2YWx1YXRlLlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBpZGVudGlmaWVyIGlzIGRlY2xhcmF0aW9uLW9ubHkgc3ludGF4LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGRlY2xhcmF0aW9uID0gaXNEZWNsYXJhdGlvbk9ubHlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzRGVjbGFyYXRpb25Pbmx5SWRlbnRpZmllciA9IChpZGVudGlmaWVyOiB0cy5JZGVudGlmaWVyKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHBhcmVudCA9IGlkZW50aWZpZXIucGFyZW50O1xuXG4gIHJldHVybiAoXG4gICAgdHMuaXNJbXBvcnRTcGVjaWZpZXIocGFyZW50KSB8fFxuICAgIHRzLmlzSW1wb3J0Q2xhdXNlKHBhcmVudCkgfHxcbiAgICB0cy5pc05hbWVzcGFjZUltcG9ydChwYXJlbnQpIHx8XG4gICAgdHMuaXNJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbihwYXJlbnQpIHx8XG4gICAgdHMuaXNFeHBvcnRTcGVjaWZpZXIocGFyZW50KSB8fFxuICAgIHRzLmlzVHlwZUFsaWFzRGVjbGFyYXRpb24ocGFyZW50KSB8fFxuICAgIHRzLmlzSW50ZXJmYWNlRGVjbGFyYXRpb24ocGFyZW50KSB8fFxuICAgIHRzLmlzVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uKHBhcmVudCkgfHxcbiAgICAodHMuaXNWYXJpYWJsZURlY2xhcmF0aW9uKHBhcmVudCkgJiYgcGFyZW50Lm5hbWUgPT09IGlkZW50aWZpZXIpIHx8XG4gICAgKHRzLmlzRnVuY3Rpb25EZWNsYXJhdGlvbihwYXJlbnQpICYmIHBhcmVudC5uYW1lID09PSBpZGVudGlmaWVyKSB8fFxuICAgICh0cy5pc0NsYXNzRGVjbGFyYXRpb24ocGFyZW50KSAmJiBwYXJlbnQubmFtZSA9PT0gaWRlbnRpZmllcikgfHxcbiAgICAodHMuaXNQYXJhbWV0ZXIocGFyZW50KSAmJiBwYXJlbnQubmFtZSA9PT0gaWRlbnRpZmllcilcbiAgKTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgb25lIGlkZW50aWZpZXIgbm9kZSBhcHBlYXJzIHVuZGVyIGEgdHlwZSBub2RlLlxuICogQHBhcmFtIGlkZW50aWZpZXIgQ2FuZGlkYXRlIGlkZW50aWZpZXIuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIGlkZW50aWZpZXIgaXMgaW5zaWRlIHR5cGUtb25seSBzeW50YXguXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdHlwZVBvc2l0aW9uID0gaXNUeXBlUG9zaXRpb25JZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzVHlwZVBvc2l0aW9uSWRlbnRpZmllciA9IChpZGVudGlmaWVyOiB0cy5JZGVudGlmaWVyKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHZpc2l0Tm9kZSA9IChjdXJyZW50OiB0cy5Ob2RlKTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKHRzLmlzVHlwZVF1ZXJ5Tm9kZShjdXJyZW50KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0cy5pc1R5cGVOb2RlKGN1cnJlbnQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0cy5pc0V4cHJlc3Npb25TdGF0ZW1lbnQoY3VycmVudCkgfHxcbiAgICAgIHRzLmlzQ2FsbEV4cHJlc3Npb24oY3VycmVudCkgfHxcbiAgICAgIHRzLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGN1cnJlbnQpIHx8XG4gICAgICB0cy5pc0VsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKGN1cnJlbnQpIHx8XG4gICAgICB0cy5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oY3VycmVudCkgfHxcbiAgICAgIHRzLmlzUmV0dXJuU3RhdGVtZW50KGN1cnJlbnQpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRzLmlzU291cmNlRmlsZShjdXJyZW50KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB2aXNpdE5vZGUoY3VycmVudC5wYXJlbnQpO1xuICB9O1xuXG4gIHJldHVybiB2aXNpdE5vZGUoaWRlbnRpZmllcik7XG59O1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIG9uZSBpZGVudGlmaWVyIGlzIG9uZSBjb25jcmV0ZSB1c2FnZSBjYW5kaWRhdGUgZm9yIHRoZSBleHBvcnQga2luZC5cbiAqIEBwYXJhbSBpZGVudGlmaWVyIElkZW50aWZpZXIgbm9kZS5cbiAqIEBwYXJhbSBleHBvcnRLaW5kIFdoZXRoZXIgdHlwZS1vbmx5IG9yIHZhbHVlIHVzYWdlIGlzIHJlcXVpcmVkLlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBpZGVudGlmaWVyIGNhbiBzYXRpc2Z5IHVzYWdlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGNvbmNyZXRlID0gaXNDb25jcmV0ZVVzYWdlSWRlbnRpZmllcihpZGVudGlmaWVyLCBcInZhbHVlXCIpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzQ29uY3JldGVVc2FnZUlkZW50aWZpZXIgPSAoXG4gIGlkZW50aWZpZXI6IHRzLklkZW50aWZpZXIsXG4gIGV4cG9ydEtpbmQ6IEV4cG9ydEtpbmQsXG4pOiBib29sZWFuID0+IHtcbiAgaWYgKGlzRGVjbGFyYXRpb25Pbmx5SWRlbnRpZmllcihpZGVudGlmaWVyKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGlzSW5UeXBlUG9zaXRpb24gPSBpc1R5cGVQb3NpdGlvbklkZW50aWZpZXIoaWRlbnRpZmllcik7XG5cbiAgcmV0dXJuIGV4cG9ydEtpbmQgPT09IFwidHlwZVwiID8gaXNJblR5cGVQb3NpdGlvbiA6ICFpc0luVHlwZVBvc2l0aW9uO1xufTtcblxuZXhwb3J0IHsgZ2V0VHlwZVNjcmlwdFByb2dyYW0sIGlzQ29uY3JldGVVc2FnZUlkZW50aWZpZXIgfTtcbiJdfQ==
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Collects identifier names from one variable pattern.
3
+ * @param node Variable pattern candidate.
4
+ * @returns Identifier names declared by the pattern.
5
+ * @example
6
+ * ```typescript
7
+ * const names = collectPatternIdentifierNames(pattern);
8
+ * ```
9
+ */
10
+ declare const collectPatternIdentifierNames: (node: unknown) => string[];
11
+ /**
12
+ * Reads one export specifier name.
13
+ * @param specifier Export specifier candidate.
14
+ * @returns Exported name when available.
15
+ * @example
16
+ * ```typescript
17
+ * const name = getExportSpecifierName(specifier);
18
+ * ```
19
+ */
20
+ declare const getExportSpecifierName: (specifier: unknown) => string | undefined;
21
+ /**
22
+ * Reads one local export specifier name.
23
+ * @param specifier Export specifier candidate.
24
+ * @returns Local specifier name when available.
25
+ * @example
26
+ * ```typescript
27
+ * const name = getExportSpecifierLocalName(specifier);
28
+ * ```
29
+ */
30
+ declare const getExportSpecifierLocalName: (specifier: unknown) => string | undefined;
31
+ export { collectPatternIdentifierNames, getExportSpecifierLocalName, getExportSpecifierName, };
32
+ //# sourceMappingURL=no-unused-exports-pattern-utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-unused-exports-pattern-utilities.d.ts","sourceRoot":"","sources":["../../../../src/domain/architecture/no-unused-exports/no-unused-exports-pattern-utilities.ts"],"names":[],"mappings":"AAMA;;;;;;;;GAQG;AACH,QAAA,MAAM,6BAA6B,GAAI,MAAM,OAAO,KAAG,MAAM,EA+C5D,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,sBAAsB,GAAI,WAAW,OAAO,KAAG,MAAM,GAAG,SAW7D,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,2BAA2B,GAC/B,WAAW,OAAO,KACjB,MAAM,GAAG,SAIX,CAAC;AAEF,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,EAC3B,sBAAsB,GACvB,CAAC"}