@codeperfect/eslint-plugin 2.4.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 (131) hide show
  1. package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
  2. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +1 -1
  3. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.js +4 -2
  4. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -1
  5. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.js +2 -4
  6. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.d.ts.map +1 -1
  7. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.js +4 -134
  8. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-utilities.d.ts +14 -0
  9. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-utilities.d.ts.map +1 -0
  10. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-utilities.js +154 -0
  11. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.d.ts.map +1 -1
  12. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.js +10 -12
  13. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +1 -1
  14. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +4 -11
  15. package/dist/domain/architecture/no-unused-exports/no-unused-exports-declaration-utilities.d.ts +14 -0
  16. package/dist/domain/architecture/no-unused-exports/no-unused-exports-declaration-utilities.d.ts.map +1 -0
  17. package/dist/domain/architecture/no-unused-exports/no-unused-exports-declaration-utilities.js +187 -0
  18. package/dist/domain/architecture/no-unused-exports/no-unused-exports-identifier-utilities.d.ts +26 -0
  19. package/dist/domain/architecture/no-unused-exports/no-unused-exports-identifier-utilities.d.ts.map +1 -0
  20. package/dist/domain/architecture/no-unused-exports/no-unused-exports-identifier-utilities.js +95 -0
  21. package/dist/domain/architecture/no-unused-exports/no-unused-exports-pattern-utilities.d.ts +32 -0
  22. package/dist/domain/architecture/no-unused-exports/no-unused-exports-pattern-utilities.d.ts.map +1 -0
  23. package/dist/domain/architecture/no-unused-exports/no-unused-exports-pattern-utilities.js +78 -0
  24. package/dist/domain/architecture/no-unused-exports/no-unused-exports-public-api-usage-utilities.d.ts +18 -0
  25. package/dist/domain/architecture/no-unused-exports/no-unused-exports-public-api-usage-utilities.d.ts.map +1 -0
  26. package/dist/domain/architecture/no-unused-exports/no-unused-exports-public-api-usage-utilities.js +45 -0
  27. package/dist/domain/architecture/no-unused-exports/no-unused-exports-record-utilities.d.ts +34 -0
  28. package/dist/domain/architecture/no-unused-exports/no-unused-exports-record-utilities.d.ts.map +1 -0
  29. package/dist/domain/architecture/no-unused-exports/no-unused-exports-record-utilities.js +44 -0
  30. package/dist/domain/architecture/no-unused-exports/no-unused-exports-symbol-utilities.d.ts +59 -0
  31. package/dist/domain/architecture/no-unused-exports/no-unused-exports-symbol-utilities.d.ts.map +1 -0
  32. package/dist/domain/architecture/no-unused-exports/no-unused-exports-symbol-utilities.js +133 -0
  33. package/dist/domain/architecture/no-unused-exports/no-unused-exports-usage-utilities.d.ts +28 -0
  34. package/dist/domain/architecture/no-unused-exports/no-unused-exports-usage-utilities.d.ts.map +1 -0
  35. package/dist/domain/architecture/no-unused-exports/no-unused-exports-usage-utilities.js +106 -0
  36. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts +21 -21
  37. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts.map +1 -1
  38. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.js +24 -587
  39. package/dist/domain/core/no-multiple-declarators/rule-utilities.d.ts +58 -0
  40. package/dist/domain/core/no-multiple-declarators/rule-utilities.d.ts.map +1 -0
  41. package/dist/domain/core/no-multiple-declarators/rule-utilities.js +204 -0
  42. package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -1
  43. package/dist/domain/core/no-multiple-declarators/rule.js +9 -211
  44. package/dist/domain/core/no-multiple-declarators/types.js +2 -2
  45. package/dist/domain/core/prefer-interface-types/rule-utilities.d.ts +57 -0
  46. package/dist/domain/core/prefer-interface-types/rule-utilities.d.ts.map +1 -0
  47. package/dist/domain/core/prefer-interface-types/rule-utilities.js +105 -0
  48. package/dist/domain/core/prefer-interface-types/rule.d.ts.map +1 -1
  49. package/dist/domain/core/prefer-interface-types/rule.js +2 -104
  50. package/dist/domain/docs/no-interface-member-docs/comment-removal-ranges.d.ts +25 -0
  51. package/dist/domain/docs/no-interface-member-docs/comment-removal-ranges.d.ts.map +1 -0
  52. package/dist/domain/docs/no-interface-member-docs/comment-removal-ranges.js +64 -0
  53. package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts +2 -24
  54. package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -1
  55. package/dist/domain/docs/no-interface-member-docs/comment-utilities.js +3 -65
  56. package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +2 -2
  57. package/dist/domain/docs/no-interface-member-docs/parameter-utilities.js +2 -2
  58. package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -1
  59. package/dist/domain/docs/no-interface-member-docs/rule.js +3 -2
  60. package/dist/domain/docs/require-example-language/examples-collect.d.ts +15 -0
  61. package/dist/domain/docs/require-example-language/examples-collect.d.ts.map +1 -0
  62. package/dist/domain/docs/require-example-language/examples-collect.js +113 -0
  63. package/dist/domain/docs/require-example-language/examples.d.ts +24 -13
  64. package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -1
  65. package/dist/domain/docs/require-example-language/examples.js +2 -111
  66. package/dist/domain/docs/require-example-language/fixes.js +4 -4
  67. package/dist/domain/docs/require-example-language/rule.d.ts.map +1 -1
  68. package/dist/domain/docs/require-example-language/rule.js +9 -8
  69. package/dist/domain/docs/require-example-language/types.d.ts.map +1 -1
  70. package/dist/domain/docs/require-example-language/types.js +1 -1
  71. package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -1
  72. package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +8 -8
  73. package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts.map +1 -1
  74. package/dist/domain/testing/aaa/analyzer.assertions.helpers.js +10 -9
  75. package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts.map +1 -1
  76. package/dist/domain/testing/aaa/analyzer.assertions.operands.js +2 -5
  77. package/dist/domain/testing/aaa/analyzer.classification.helpers.js +14 -16
  78. package/dist/domain/testing/aaa/analyzer.classification.traversal.js +6 -4
  79. package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -1
  80. package/dist/domain/testing/aaa/analyzer.super.js +10 -8
  81. package/dist/domain/testing/assert-actual-expected-names/rule.d.ts.map +1 -1
  82. package/dist/domain/testing/assert-actual-expected-names/rule.js +21 -23
  83. package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts.map +1 -1
  84. package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.js +1 -1
  85. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts.map +1 -1
  86. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.js +2 -160
  87. package/dist/domain/testing/enforce-aaa-phase-purity/statement-purity-reporters.d.ts +41 -0
  88. package/dist/domain/testing/enforce-aaa-phase-purity/statement-purity-reporters.d.ts.map +1 -0
  89. package/dist/domain/testing/enforce-aaa-phase-purity/statement-purity-reporters.js +161 -0
  90. package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.d.ts.map +1 -1
  91. package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.js +2 -2
  92. package/dist/domain/testing/enforce-aaa-structure/rule-section-reporting.d.ts +81 -0
  93. package/dist/domain/testing/enforce-aaa-structure/rule-section-reporting.d.ts.map +1 -0
  94. package/dist/domain/testing/enforce-aaa-structure/rule-section-reporting.js +181 -0
  95. package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -1
  96. package/dist/domain/testing/enforce-aaa-structure/rule.js +28 -217
  97. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-detection.d.ts +29 -0
  98. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-detection.d.ts.map +1 -0
  99. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-detection.js +200 -0
  100. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-names.d.ts +12 -0
  101. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-names.d.ts.map +1 -0
  102. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-names.js +151 -0
  103. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-reporting.d.ts +16 -0
  104. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-reporting.d.ts.map +1 -0
  105. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-reporting.js +109 -0
  106. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule.d.ts.map +1 -1
  107. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule.js +18 -450
  108. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.d.ts.map +1 -1
  109. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.js +7 -4
  110. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts.map +1 -1
  111. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.js +7 -4
  112. package/dist/domain/testing/prefer-vi-mocked-import/fix.js +2 -2
  113. package/dist/domain/testing/prefer-vi-mocked-import/match-collisions.d.ts +18 -0
  114. package/dist/domain/testing/prefer-vi-mocked-import/match-collisions.d.ts.map +1 -0
  115. package/dist/domain/testing/prefer-vi-mocked-import/match-collisions.js +162 -0
  116. package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +1 -1
  117. package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.js +5 -4
  118. package/dist/domain/testing/prefer-vi-mocked-import/match-seeds.d.ts +29 -0
  119. package/dist/domain/testing/prefer-vi-mocked-import/match-seeds.d.ts.map +1 -0
  120. package/dist/domain/testing/prefer-vi-mocked-import/match-seeds.js +100 -0
  121. package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts.map +1 -1
  122. package/dist/domain/testing/prefer-vi-mocked-import/match.js +5 -246
  123. package/dist/domain/testing/prefer-vi-mocked-import/rule.d.ts.map +1 -1
  124. package/dist/domain/testing/prefer-vi-mocked-import/rule.js +18 -20
  125. package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -1
  126. package/dist/domain/testing/require-act-result-capture/rule.js +47 -21
  127. package/dist/domain/testing/require-test-companion/rule.d.ts.map +1 -1
  128. package/dist/domain/testing/require-test-companion/rule.js +2 -4
  129. package/dist/domain/testing/single-act-statement/rule.d.ts.map +1 -1
  130. package/dist/domain/testing/single-act-statement/rule.js +20 -22
  131. package/package.json +35 -38
@@ -0,0 +1,57 @@
1
+ /** Type definition for type annotation nodes inspected by this rule. */
2
+ interface TypeAnnotationNode {
3
+ /** Type field value. */
4
+ type: string;
5
+ /** Nested annotation for parenthesized types. */
6
+ typeAnnotation?: unknown;
7
+ /** Nested member annotations for union/intersection types. */
8
+ types?: unknown[];
9
+ }
10
+ /** Type definition for variable declarator nodes with optional identifiers. */
11
+ interface VariableDeclaratorNode {
12
+ /** Identifier or binding pattern for the variable declarator. */
13
+ id?: unknown;
14
+ }
15
+ /**
16
+ * Extracts the type annotation from a node.
17
+ * @param node Node that may contain a type annotation.
18
+ * @returns The type annotation when present.
19
+ * @example
20
+ * ```typescript
21
+ * const annotation = getTypeAnnotationNode(node);
22
+ * ```
23
+ */
24
+ declare const getTypeAnnotationNode: (node: unknown) => TypeAnnotationNode | undefined;
25
+ /**
26
+ * Gets the return type annotation for a function-like node.
27
+ * @param node Node that may contain a return type.
28
+ * @returns The return type annotation when present.
29
+ * @example
30
+ * ```typescript
31
+ * const annotation = getReturnTypeAnnotation(node);
32
+ * ```
33
+ */
34
+ declare const getReturnTypeAnnotation: (node: unknown) => TypeAnnotationNode | undefined;
35
+ /**
36
+ * Gets getParameters.
37
+ * @param node Input node value.
38
+ * @returns Return value output.
39
+ * @example
40
+ * ```typescript
41
+ * getParameters();
42
+ * ```
43
+ */
44
+ declare const getParameters: (node: unknown) => unknown[];
45
+ /**
46
+ * Finds an inline object type literal within a type annotation node.
47
+ * @param node Type annotation node to inspect.
48
+ * @returns The first inline object type literal when present.
49
+ * @example
50
+ * ```typescript
51
+ * const inlineObjectType = getInlineObjectTypeLiteral(annotation);
52
+ * ```
53
+ */
54
+ declare const getInlineObjectTypeLiteral: (node: TypeAnnotationNode | undefined) => TypeAnnotationNode | undefined;
55
+ export { getInlineObjectTypeLiteral, getParameters, getReturnTypeAnnotation, getTypeAnnotationNode, };
56
+ export type { TypeAnnotationNode, VariableDeclaratorNode };
57
+ //# sourceMappingURL=rule-utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-utilities.d.ts","sourceRoot":"","sources":["../../../../src/domain/core/prefer-interface-types/rule-utilities.ts"],"names":[],"mappings":"AAiCA,wEAAwE;AACxE,UAAU,kBAAkB;IAC1B,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IAEb,iDAAiD;IACjD,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;CACnB;AAED,+EAA+E;AAC/E,UAAU,sBAAsB;IAC9B,iEAAiE;IACjE,EAAE,CAAC,EAAE,OAAO,CAAC;CACd;AA6BD;;;;;;;;GAQG;AACH,QAAA,MAAM,qBAAqB,GACzB,MAAM,OAAO,KACZ,kBAAkB,GAAG,SAavB,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,uBAAuB,GAC3B,MAAM,OAAO,KACZ,kBAAkB,GAAG,SAQvB,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,aAAa,GAAI,MAAM,OAAO,KAAG,OAAO,EAQ7C,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,0BAA0B,GAC9B,MAAM,kBAAkB,GAAG,SAAS,KACnC,kBAAkB,GAAG,SA8BvB,CAAC;AAEF,OAAO,EACL,0BAA0B,EAC1B,aAAa,EACb,uBAAuB,EACvB,qBAAqB,GACtB,CAAC;AACF,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,CAAC"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Gets a nested type annotation from parameter wrappers.
3
+ * @param node Parameter wrapper node.
4
+ * @returns The nested type annotation when present.
5
+ * @example
6
+ * ```typescript
7
+ * const annotation = getNestedTypeAnnotation({ argument: node });
8
+ * ```
9
+ */
10
+ const getNestedTypeAnnotation = (node) => {
11
+ if (node.argument !== void 0) {
12
+ return getTypeAnnotationNode(node.argument);
13
+ }
14
+ if (node.left !== void 0) {
15
+ return getTypeAnnotationNode(node.left);
16
+ }
17
+ if (node.parameter !== void 0) {
18
+ return getTypeAnnotationNode(node.parameter);
19
+ }
20
+ return void 0;
21
+ };
22
+ /**
23
+ * Extracts the type annotation from a node.
24
+ * @param node Node that may contain a type annotation.
25
+ * @returns The type annotation when present.
26
+ * @example
27
+ * ```typescript
28
+ * const annotation = getTypeAnnotationNode(node);
29
+ * ```
30
+ */
31
+ const getTypeAnnotationNode = (node) => {
32
+ if (node === null || typeof node !== "object") {
33
+ return void 0;
34
+ }
35
+ const directTypeAnnotation = node.typeAnnotation
36
+ ?.typeAnnotation;
37
+ if (directTypeAnnotation !== void 0) {
38
+ return directTypeAnnotation;
39
+ }
40
+ return getNestedTypeAnnotation(node);
41
+ };
42
+ /**
43
+ * Gets the return type annotation for a function-like node.
44
+ * @param node Node that may contain a return type.
45
+ * @returns The return type annotation when present.
46
+ * @example
47
+ * ```typescript
48
+ * const annotation = getReturnTypeAnnotation(node);
49
+ * ```
50
+ */
51
+ const getReturnTypeAnnotation = (node) => {
52
+ if (node === null || typeof node !== "object") {
53
+ return void 0;
54
+ }
55
+ const typedNode = node;
56
+ return typedNode.returnType?.typeAnnotation;
57
+ };
58
+ /**
59
+ * Gets getParameters.
60
+ * @param node Input node value.
61
+ * @returns Return value output.
62
+ * @example
63
+ * ```typescript
64
+ * getParameters();
65
+ * ```
66
+ */
67
+ const getParameters = (node) => {
68
+ if (node === null || typeof node !== "object") {
69
+ return [];
70
+ }
71
+ const typedNode = node;
72
+ return Array.isArray(typedNode.params) ? typedNode.params : [];
73
+ };
74
+ /**
75
+ * Finds an inline object type literal within a type annotation node.
76
+ * @param node Type annotation node to inspect.
77
+ * @returns The first inline object type literal when present.
78
+ * @example
79
+ * ```typescript
80
+ * const inlineObjectType = getInlineObjectTypeLiteral(annotation);
81
+ * ```
82
+ */
83
+ const getInlineObjectTypeLiteral = (node) => {
84
+ if (node === void 0) {
85
+ return void 0;
86
+ }
87
+ if (node.type === "TSTypeLiteral") {
88
+ return node;
89
+ }
90
+ if (node.type === "TSParenthesizedType") {
91
+ return getInlineObjectTypeLiteral(node.typeAnnotation);
92
+ }
93
+ if (node.type === "TSUnionType" || node.type === "TSIntersectionType") {
94
+ const nestedTypes = Array.isArray(node.types) ? node.types : [];
95
+ for (const nestedType of nestedTypes) {
96
+ const nestedInlineObjectType = getInlineObjectTypeLiteral(nestedType);
97
+ if (nestedInlineObjectType !== void 0) {
98
+ return nestedInlineObjectType;
99
+ }
100
+ }
101
+ }
102
+ return void 0;
103
+ };
104
+ export { getInlineObjectTypeLiteral, getParameters, getReturnTypeAnnotation, getTypeAnnotationNode, };
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS11dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2NvcmUvcHJlZmVyLWludGVyZmFjZS10eXBlcy9ydWxlLXV0aWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtREE7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLHVCQUF1QixHQUFHLENBQzlCLElBQXdCLEVBQ1EsRUFBRTtJQUNsQyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM3QixPQUFPLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekIsT0FBTyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzlCLE9BQU8scUJBQXFCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQyxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxxQkFBcUIsR0FBRyxDQUM1QixJQUFhLEVBQ21CLEVBQUU7SUFDbEMsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlDLE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sb0JBQW9CLEdBQUksSUFBZ0MsQ0FBQyxjQUFjO1FBQzNFLEVBQUUsY0FBYyxDQUFDO0lBRW5CLElBQUksb0JBQW9CLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxPQUFPLG9CQUFvQixDQUFDO0lBQzlCLENBQUM7SUFFRCxPQUFPLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSx1QkFBdUIsR0FBRyxDQUM5QixJQUFhLEVBQ21CLEVBQUU7SUFDbEMsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlDLE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLElBQXdCLENBQUM7SUFFM0MsT0FBTyxTQUFTLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQztBQUM5QyxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBYSxFQUFhLEVBQUU7SUFDakQsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLElBQXdCLENBQUM7SUFFM0MsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ2pFLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSwwQkFBMEIsR0FBRyxDQUNqQyxJQUFvQyxFQUNKLEVBQUU7SUFDbEMsSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNwQixPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssZUFBZSxFQUFFLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLHFCQUFxQixFQUFFLENBQUM7UUFDeEMsT0FBTywwQkFBMEIsQ0FDL0IsSUFBSSxDQUFDLGNBQWdELENBQ3RELENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGFBQWEsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLG9CQUFvQixFQUFFLENBQUM7UUFDdEUsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVoRSxLQUFLLE1BQU0sVUFBVSxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sc0JBQXNCLEdBQUcsMEJBQTBCLENBQ3ZELFVBQTRDLENBQzdDLENBQUM7WUFFRixJQUFJLHNCQUFzQixLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3RDLE9BQU8sc0JBQXNCLENBQUM7WUFDaEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLGFBQWEsRUFDYix1QkFBdUIsRUFDdkIscUJBQXFCLEdBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVHlwZSBkZWZpbml0aW9uIGZvciBmdW5jdGlvbi1saWtlIG5vZGVzIGNhcnJ5aW5nIHBhcmFtZXRlcnMgYW5kIHJldHVybiB0eXBlcy4gKi9cbmludGVyZmFjZSBGdW5jdGlvbkxpa2VOb2RlIHtcbiAgLyoqIFBhcmFtcyBoZWxwZXIgdmFsdWUuICovXG4gIHBhcmFtcz86IHVua25vd25bXTtcblxuICAvKiogUmV0dXJuVHlwZSBoZWxwZXIgdmFsdWUuICovXG4gIHJldHVyblR5cGU/OiB7XG4gICAgLyoqIFR5cGVBbm5vdGF0aW9uIGhlbHBlciB2YWx1ZS4gKi9cbiAgICB0eXBlQW5ub3RhdGlvbj86IFR5cGVBbm5vdGF0aW9uTm9kZTtcbiAgfTtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3Igbm9kZXMgdGhhdCBjYW4gd3JhcCBhIHNpbmdsZSBwYXJhbWV0ZXItbGlrZSBjaGlsZC4gKi9cbmludGVyZmFjZSBQYXJhbWV0ZXJDb250YWluZXIge1xuICAvKiogQXJndW1lbnQgaGVscGVyIHZhbHVlLiAqL1xuICBhcmd1bWVudD86IHVua25vd247XG5cbiAgLyoqIExlZnQtc2lkZSBoZWxwZXIgdmFsdWUgdXNlZCBieSBhc3NpZ25tZW50IHBhdHRlcm5zLiAqL1xuICBsZWZ0PzogdW5rbm93bjtcblxuICAvKiogUGFyYW1ldGVyIGhlbHBlciB2YWx1ZS4gKi9cbiAgcGFyYW1ldGVyPzogdW5rbm93bjtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3Igbm9kZXMgZXhwb3NpbmcgYSBuZXN0ZWQgdHlwZSBhbm5vdGF0aW9uIHdyYXBwZXIuICovXG5pbnRlcmZhY2UgVHlwZUFubm90YXRpb25Db250YWluZXIge1xuICAvKiogVHlwZUFubm90YXRpb24gaGVscGVyIHZhbHVlLiAqL1xuICB0eXBlQW5ub3RhdGlvbj86IHtcbiAgICAvKiogVHlwZUFubm90YXRpb24gaGVscGVyIHZhbHVlLiAqL1xuICAgIHR5cGVBbm5vdGF0aW9uPzogVHlwZUFubm90YXRpb25Ob2RlO1xuICB9O1xufVxuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciB0eXBlIGFubm90YXRpb24gbm9kZXMgaW5zcGVjdGVkIGJ5IHRoaXMgcnVsZS4gKi9cbmludGVyZmFjZSBUeXBlQW5ub3RhdGlvbk5vZGUge1xuICAvKiogVHlwZSBmaWVsZCB2YWx1ZS4gKi9cbiAgdHlwZTogc3RyaW5nO1xuXG4gIC8qKiBOZXN0ZWQgYW5ub3RhdGlvbiBmb3IgcGFyZW50aGVzaXplZCB0eXBlcy4gKi9cbiAgdHlwZUFubm90YXRpb24/OiB1bmtub3duO1xuXG4gIC8qKiBOZXN0ZWQgbWVtYmVyIGFubm90YXRpb25zIGZvciB1bmlvbi9pbnRlcnNlY3Rpb24gdHlwZXMuICovXG4gIHR5cGVzPzogdW5rbm93bltdO1xufVxuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciB2YXJpYWJsZSBkZWNsYXJhdG9yIG5vZGVzIHdpdGggb3B0aW9uYWwgaWRlbnRpZmllcnMuICovXG5pbnRlcmZhY2UgVmFyaWFibGVEZWNsYXJhdG9yTm9kZSB7XG4gIC8qKiBJZGVudGlmaWVyIG9yIGJpbmRpbmcgcGF0dGVybiBmb3IgdGhlIHZhcmlhYmxlIGRlY2xhcmF0b3IuICovXG4gIGlkPzogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBHZXRzIGEgbmVzdGVkIHR5cGUgYW5ub3RhdGlvbiBmcm9tIHBhcmFtZXRlciB3cmFwcGVycy5cbiAqIEBwYXJhbSBub2RlIFBhcmFtZXRlciB3cmFwcGVyIG5vZGUuXG4gKiBAcmV0dXJucyBUaGUgbmVzdGVkIHR5cGUgYW5ub3RhdGlvbiB3aGVuIHByZXNlbnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgYW5ub3RhdGlvbiA9IGdldE5lc3RlZFR5cGVBbm5vdGF0aW9uKHsgYXJndW1lbnQ6IG5vZGUgfSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0TmVzdGVkVHlwZUFubm90YXRpb24gPSAoXG4gIG5vZGU6IFBhcmFtZXRlckNvbnRhaW5lcixcbik6IFR5cGVBbm5vdGF0aW9uTm9kZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChub2RlLmFyZ3VtZW50ICE9PSB2b2lkIDApIHtcbiAgICByZXR1cm4gZ2V0VHlwZUFubm90YXRpb25Ob2RlKG5vZGUuYXJndW1lbnQpO1xuICB9XG5cbiAgaWYgKG5vZGUubGVmdCAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGdldFR5cGVBbm5vdGF0aW9uTm9kZShub2RlLmxlZnQpO1xuICB9XG5cbiAgaWYgKG5vZGUucGFyYW1ldGVyICE9PSB2b2lkIDApIHtcbiAgICByZXR1cm4gZ2V0VHlwZUFubm90YXRpb25Ob2RlKG5vZGUucGFyYW1ldGVyKTtcbiAgfVxuXG4gIHJldHVybiB2b2lkIDA7XG59O1xuXG4vKipcbiAqIEV4dHJhY3RzIHRoZSB0eXBlIGFubm90YXRpb24gZnJvbSBhIG5vZGUuXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRoYXQgbWF5IGNvbnRhaW4gYSB0eXBlIGFubm90YXRpb24uXG4gKiBAcmV0dXJucyBUaGUgdHlwZSBhbm5vdGF0aW9uIHdoZW4gcHJlc2VudC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBhbm5vdGF0aW9uID0gZ2V0VHlwZUFubm90YXRpb25Ob2RlKG5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFR5cGVBbm5vdGF0aW9uTm9kZSA9IChcbiAgbm9kZTogdW5rbm93bixcbik6IFR5cGVBbm5vdGF0aW9uTm9kZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChub2RlID09PSBudWxsIHx8IHR5cGVvZiBub2RlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IGRpcmVjdFR5cGVBbm5vdGF0aW9uID0gKG5vZGUgYXMgVHlwZUFubm90YXRpb25Db250YWluZXIpLnR5cGVBbm5vdGF0aW9uXG4gICAgPy50eXBlQW5ub3RhdGlvbjtcblxuICBpZiAoZGlyZWN0VHlwZUFubm90YXRpb24gIT09IHZvaWQgMCkge1xuICAgIHJldHVybiBkaXJlY3RUeXBlQW5ub3RhdGlvbjtcbiAgfVxuXG4gIHJldHVybiBnZXROZXN0ZWRUeXBlQW5ub3RhdGlvbihub2RlKTtcbn07XG5cbi8qKlxuICogR2V0cyB0aGUgcmV0dXJuIHR5cGUgYW5ub3RhdGlvbiBmb3IgYSBmdW5jdGlvbi1saWtlIG5vZGUuXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRoYXQgbWF5IGNvbnRhaW4gYSByZXR1cm4gdHlwZS5cbiAqIEByZXR1cm5zIFRoZSByZXR1cm4gdHlwZSBhbm5vdGF0aW9uIHdoZW4gcHJlc2VudC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBhbm5vdGF0aW9uID0gZ2V0UmV0dXJuVHlwZUFubm90YXRpb24obm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0UmV0dXJuVHlwZUFubm90YXRpb24gPSAoXG4gIG5vZGU6IHVua25vd24sXG4pOiBUeXBlQW5ub3RhdGlvbk5vZGUgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAobm9kZSA9PT0gbnVsbCB8fCB0eXBlb2Ygbm9kZSAhPT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCB0eXBlZE5vZGUgPSBub2RlIGFzIEZ1bmN0aW9uTGlrZU5vZGU7XG5cbiAgcmV0dXJuIHR5cGVkTm9kZS5yZXR1cm5UeXBlPy50eXBlQW5ub3RhdGlvbjtcbn07XG5cbi8qKlxuICogR2V0cyBnZXRQYXJhbWV0ZXJzLlxuICogQHBhcmFtIG5vZGUgSW5wdXQgbm9kZSB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZ2V0UGFyYW1ldGVycygpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFBhcmFtZXRlcnMgPSAobm9kZTogdW5rbm93bik6IHVua25vd25bXSA9PiB7XG4gIGlmIChub2RlID09PSBudWxsIHx8IHR5cGVvZiBub2RlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3QgdHlwZWROb2RlID0gbm9kZSBhcyBGdW5jdGlvbkxpa2VOb2RlO1xuXG4gIHJldHVybiBBcnJheS5pc0FycmF5KHR5cGVkTm9kZS5wYXJhbXMpID8gdHlwZWROb2RlLnBhcmFtcyA6IFtdO1xufTtcblxuLyoqXG4gKiBGaW5kcyBhbiBpbmxpbmUgb2JqZWN0IHR5cGUgbGl0ZXJhbCB3aXRoaW4gYSB0eXBlIGFubm90YXRpb24gbm9kZS5cbiAqIEBwYXJhbSBub2RlIFR5cGUgYW5ub3RhdGlvbiBub2RlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBUaGUgZmlyc3QgaW5saW5lIG9iamVjdCB0eXBlIGxpdGVyYWwgd2hlbiBwcmVzZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGlubGluZU9iamVjdFR5cGUgPSBnZXRJbmxpbmVPYmplY3RUeXBlTGl0ZXJhbChhbm5vdGF0aW9uKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRJbmxpbmVPYmplY3RUeXBlTGl0ZXJhbCA9IChcbiAgbm9kZTogVHlwZUFubm90YXRpb25Ob2RlIHwgdW5kZWZpbmVkLFxuKTogVHlwZUFubm90YXRpb25Ob2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKG5vZGUgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBpZiAobm9kZS50eXBlID09PSBcIlRTVHlwZUxpdGVyYWxcIikge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgaWYgKG5vZGUudHlwZSA9PT0gXCJUU1BhcmVudGhlc2l6ZWRUeXBlXCIpIHtcbiAgICByZXR1cm4gZ2V0SW5saW5lT2JqZWN0VHlwZUxpdGVyYWwoXG4gICAgICBub2RlLnR5cGVBbm5vdGF0aW9uIGFzIFR5cGVBbm5vdGF0aW9uTm9kZSB8IHVuZGVmaW5lZCxcbiAgICApO1xuICB9XG5cbiAgaWYgKG5vZGUudHlwZSA9PT0gXCJUU1VuaW9uVHlwZVwiIHx8IG5vZGUudHlwZSA9PT0gXCJUU0ludGVyc2VjdGlvblR5cGVcIikge1xuICAgIGNvbnN0IG5lc3RlZFR5cGVzID0gQXJyYXkuaXNBcnJheShub2RlLnR5cGVzKSA/IG5vZGUudHlwZXMgOiBbXTtcblxuICAgIGZvciAoY29uc3QgbmVzdGVkVHlwZSBvZiBuZXN0ZWRUeXBlcykge1xuICAgICAgY29uc3QgbmVzdGVkSW5saW5lT2JqZWN0VHlwZSA9IGdldElubGluZU9iamVjdFR5cGVMaXRlcmFsKFxuICAgICAgICBuZXN0ZWRUeXBlIGFzIFR5cGVBbm5vdGF0aW9uTm9kZSB8IHVuZGVmaW5lZCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChuZXN0ZWRJbmxpbmVPYmplY3RUeXBlICE9PSB2b2lkIDApIHtcbiAgICAgICAgcmV0dXJuIG5lc3RlZElubGluZU9iamVjdFR5cGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZvaWQgMDtcbn07XG5cbmV4cG9ydCB7XG4gIGdldElubGluZU9iamVjdFR5cGVMaXRlcmFsLFxuICBnZXRQYXJhbWV0ZXJzLFxuICBnZXRSZXR1cm5UeXBlQW5ub3RhdGlvbixcbiAgZ2V0VHlwZUFubm90YXRpb25Ob2RlLFxufTtcbmV4cG9ydCB0eXBlIHsgVHlwZUFubm90YXRpb25Ob2RlLCBWYXJpYWJsZURlY2xhcmF0b3JOb2RlIH07XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/core/prefer-interface-types/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAwQnC,2EAA2E;AAC3E,QAAA,MAAM,wBAAwB,EAAE,IAAI,CAAC,UA6DpC,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
1
+ {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/core/prefer-interface-types/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAyFnC,2EAA2E;AAC3E,QAAA,MAAM,wBAAwB,EAAE,IAAI,CAAC,UA6DpC,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
@@ -1,106 +1,4 @@
1
- /**
2
- * Gets a nested type annotation from parameter wrappers.
3
- * @param node Parameter wrapper node.
4
- * @returns The nested type annotation when present.
5
- * @example
6
- * ```typescript
7
- * const annotation = getNestedTypeAnnotation({ argument: node });
8
- * ```
9
- */
10
- const getNestedTypeAnnotation = (node) => {
11
- if (node.argument !== void 0) {
12
- return getTypeAnnotationNode(node.argument);
13
- }
14
- if (node.left !== void 0) {
15
- return getTypeAnnotationNode(node.left);
16
- }
17
- if (node.parameter !== void 0) {
18
- return getTypeAnnotationNode(node.parameter);
19
- }
20
- return void 0;
21
- };
22
- /**
23
- * Extracts the type annotation from a node.
24
- * @param node Node that may contain a type annotation.
25
- * @returns The type annotation when present.
26
- * @example
27
- * ```typescript
28
- * const annotation = getTypeAnnotationNode(node);
29
- * ```
30
- */
31
- const getTypeAnnotationNode = (node) => {
32
- if (node === null || typeof node !== "object") {
33
- return void 0;
34
- }
35
- const directTypeAnnotation = node.typeAnnotation
36
- ?.typeAnnotation;
37
- if (directTypeAnnotation !== void 0) {
38
- return directTypeAnnotation;
39
- }
40
- return getNestedTypeAnnotation(node);
41
- };
42
- /**
43
- * Gets the return type annotation for a function-like node.
44
- * @param node Node that may contain a return type.
45
- * @returns The return type annotation when present.
46
- * @example
47
- * ```typescript
48
- * const annotation = getReturnTypeAnnotation(node);
49
- * ```
50
- */
51
- const getReturnTypeAnnotation = (node) => {
52
- if (node === null || typeof node !== "object") {
53
- return void 0;
54
- }
55
- const typedNode = node;
56
- return typedNode.returnType?.typeAnnotation;
57
- };
58
- /**
59
- * Gets getParameters.
60
- * @param node Input node value.
61
- * @returns Return value output.
62
- * @example
63
- * ```typescript
64
- * getParameters();
65
- * ```
66
- */
67
- const getParameters = (node) => {
68
- if (node === null || typeof node !== "object") {
69
- return [];
70
- }
71
- const typedNode = node;
72
- return Array.isArray(typedNode.params) ? typedNode.params : [];
73
- };
74
- /**
75
- * Finds an inline object type literal within a type annotation node.
76
- * @param node Type annotation node to inspect.
77
- * @returns The first inline object type literal when present.
78
- * @example
79
- * ```typescript
80
- * const inlineObjectType = getInlineObjectTypeLiteral(annotation);
81
- * ```
82
- */
83
- const getInlineObjectTypeLiteral = (node) => {
84
- if (node === void 0) {
85
- return void 0;
86
- }
87
- if (node.type === "TSTypeLiteral") {
88
- return node;
89
- }
90
- if (node.type === "TSParenthesizedType") {
91
- return getInlineObjectTypeLiteral(node.typeAnnotation);
92
- }
93
- if (node.type === "TSUnionType" || node.type === "TSIntersectionType") {
94
- const nestedTypes = Array.isArray(node.types) ? node.types : [];
95
- for (const nestedType of nestedTypes) {
96
- const nestedInlineObjectType = getInlineObjectTypeLiteral(nestedType);
97
- if (nestedInlineObjectType !== void 0) {
98
- return nestedInlineObjectType;
99
- }
100
- }
101
- }
102
- return void 0;
103
- };
1
+ import { getInlineObjectTypeLiteral, getParameters, getReturnTypeAnnotation, getTypeAnnotationNode, } from "./rule-utilities.js";
104
2
  /**
105
3
  * Reports an inline object type annotation.
106
4
  * @param context Rule execution context.
@@ -213,4 +111,4 @@ const preferInterfaceTypesRule = {
213
111
  },
214
112
  };
215
113
  export { preferInterfaceTypesRule };
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vY29yZS9wcmVmZXItaW50ZXJmYWNlLXR5cGVzL3J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcURBOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSx1QkFBdUIsR0FBRyxDQUM5QixJQUF3QixFQUNRLEVBQUU7SUFDbEMsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDN0IsT0FBTyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8scUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM5QixPQUFPLHFCQUFxQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0scUJBQXFCLEdBQUcsQ0FDNUIsSUFBYSxFQUNtQixFQUFFO0lBQ2xDLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QyxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLG9CQUFvQixHQUFJLElBQWdDLENBQUMsY0FBYztRQUMzRSxFQUFFLGNBQWMsQ0FBQztJQUVuQixJQUFJLG9CQUFvQixLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDcEMsT0FBTyxvQkFBb0IsQ0FBQztJQUM5QixDQUFDO0lBRUQsT0FBTyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMs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QStCLEVBQUUsb0JBQW9CO1lBQ3JELGlCQUFpQixFQUFFLG9CQUFvQjtZQUN2QyxjQUFjLEVBQUUsb0JBQW9CO1lBQ3BDLGlCQUFpQixFQUFFLG9CQUFvQjtZQUN2QyxrQkFBa0IsRUFBRSwwQkFBMEI7U0FDL0MsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUU7WUFDSixXQUFXLEVBQ1Qsa0hBQWtIO1lBQ3BILFdBQVcsRUFBRSxLQUFLO1lBQ2xCLEdBQUcsRUFBRSx5RkFBeUY7U0FDL0Y7UUFDRCxRQUFRLEVBQUU7WUFDUixpQkFBaUIsRUFDZix1RUFBdUU7U0FDMUU7UUFDRCxNQUFNLEVBQUUsRUFBRTtRQUNWLElBQUksRUFBRSxZQUFZO0tBQ25CO0NBQ0YsQ0FBQztBQUVGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuXG4vKiogVHlwZSBkZWZpbml0aW9uIGZvciBydWxlIGRhdGEuICovXG5pbnRlcmZhY2UgRnVuY3Rpb25MaWtlTm9kZSB7XG4gIC8qKiBQYXJhbXMgaGVscGVyIHZhbHVlLiAqL1xuICBwYXJhbXM/OiB1bmtub3duW107XG5cbiAgLyoqIFJldHVyblR5cGUgaGVscGVyIHZhbHVlLiAqL1xuICByZXR1cm5UeXBlPzoge1xuICAgIC8qKiBUeXBlQW5ub3RhdGlvbiBoZWxwZXIgdmFsdWUuICovXG4gICAgdHlwZUFubm90YXRpb24/OiBUeXBlQW5ub3RhdGlvbk5vZGU7XG4gIH07XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBQYXJhbWV0ZXJDb250YWluZXIge1xuICAvKiogQXJndW1lbnQgaGVscGVyIHZhbHVlLiAqL1xuICBhcmd1bWVudD86IHVua25vd247XG5cbiAgLyoqIExlZnQtc2lkZSBoZWxwZXIgdmFsdWUgdXNlZCBieSBhc3NpZ25tZW50IHBhdHRlcm5zLiAqL1xuICBsZWZ0PzogdW5rbm93bjtcblxuICAvKiogUGFyYW1ldGVyIGhlbHBlciB2YWx1ZS4gKi9cbiAgcGFyYW1ldGVyPzogdW5rbm93bjtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIFR5cGVBbm5vdGF0aW9uQ29udGFpbmVyIHtcbiAgLyoqIFR5cGVBbm5vdGF0aW9uIGhlbHBlciB2YWx1ZS4gKi9cbiAgdHlwZUFubm90YXRpb24/OiB7XG4gICAgLyoqIFR5cGVBbm5vdGF0aW9uIGhlbHBlciB2YWx1ZS4gKi9cbiAgICB0eXBlQW5ub3RhdGlvbj86IFR5cGVBbm5vdGF0aW9uTm9kZTtcbiAgfTtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIFR5cGVBbm5vdGF0aW9uTm9kZSB7XG4gIC8qKiBUeXBlIGZpZWxkIHZhbHVlLiAqL1xuICB0eXBlOiBzdHJpbmc7XG5cbiAgLyoqIE5lc3RlZCBhbm5vdGF0aW9uIGZvciBwYXJlbnRoZXNpemVkIHR5cGVzLiAqL1xuICB0eXBlQW5ub3RhdGlvbj86IHVua25vd247XG5cbiAgLyoqIE5lc3RlZCBtZW1iZXIgYW5ub3RhdGlvbnMgZm9yIHVuaW9uL2ludGVyc2VjdGlvbiB0eXBlcy4gKi9cbiAgdHlwZXM/OiB1bmtub3duW107XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHZhcmlhYmxlIGRlY2xhcmF0b3Igbm9kZXMgd2l0aCBvcHRpb25hbCBpZGVudGlmaWVycy4gKi9cbmludGVyZmFjZSBWYXJpYWJsZURlY2xhcmF0b3JOb2RlIHtcbiAgLyoqIElkZW50aWZpZXIgb3IgYmluZGluZyBwYXR0ZXJuIGZvciB0aGUgdmFyaWFibGUgZGVjbGFyYXRvci4gKi9cbiAgaWQ/OiB1bmtub3duO1xufVxuXG4vKipcbiAqIEdldHMgYSBuZXN0ZWQgdHlwZSBhbm5vdGF0aW9uIGZyb20gcGFyYW1ldGVyIHdyYXBwZXJzLlxuICogQHBhcmFtIG5vZGUgUGFyYW1ldGVyIHdyYXBwZXIgbm9kZS5cbiAqIEByZXR1cm5zIFRoZSBuZXN0ZWQgdHlwZSBhbm5vdGF0aW9uIHdoZW4gcHJlc2VudC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBhbm5vdGF0aW9uID0gZ2V0TmVzdGVkVHlwZUFubm90YXRpb24oeyBhcmd1bWVudDogbm9kZSB9KTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXROZXN0ZWRUeXBlQW5ub3RhdGlvbiA9IChcbiAgbm9kZTogUGFyYW1ldGVyQ29udGFpbmVyLFxuKTogVHlwZUFubm90YXRpb25Ob2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKG5vZGUuYXJndW1lbnQgIT09IHZvaWQgMCkge1xuICAgIHJldHVybiBnZXRUeXBlQW5ub3RhdGlvbk5vZGUobm9kZS5hcmd1bWVudCk7XG4gIH1cblxuICBpZiAobm9kZS5sZWZ0ICE9PSB2b2lkIDApIHtcbiAgICByZXR1cm4gZ2V0VHlwZUFubm90YXRpb25Ob2RlKG5vZGUubGVmdCk7XG4gIH1cblxuICBpZiAobm9kZS5wYXJhbWV0ZXIgIT09IHZvaWQgMCkge1xuICAgIHJldHVybiBnZXRUeXBlQW5ub3RhdGlvbk5vZGUobm9kZS5wYXJhbWV0ZXIpO1xuICB9XG5cbiAgcmV0dXJuIHZvaWQgMDtcbn07XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIHR5cGUgYW5ub3RhdGlvbiBmcm9tIGEgbm9kZS5cbiAqIEBwYXJhbSBub2RlIE5vZGUgdGhhdCBtYXkgY29udGFpbiBhIHR5cGUgYW5ub3RhdGlvbi5cbiAqIEByZXR1cm5zIFRoZSB0eXBlIGFubm90YXRpb24gd2hlbiBwcmVzZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGFubm90YXRpb24gPSBnZXRUeXBlQW5ub3RhdGlvbk5vZGUobm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0VHlwZUFubm90YXRpb25Ob2RlID0gKFxuICBub2RlOiB1bmtub3duLFxuKTogVHlwZUFubm90YXRpb25Ob2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKG5vZGUgPT09IG51bGwgfHwgdHlwZW9mIG5vZGUgIT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgZGlyZWN0VHlwZUFubm90YXRpb24gPSAobm9kZSBhcyBUeXBlQW5ub3RhdGlvbkNvbnRhaW5lcikudHlwZUFubm90YXRpb25cbiAgICA/LnR5cGVBbm5vdGF0aW9uO1xuXG4gIGlmIChkaXJlY3RUeXBlQW5ub3RhdGlvbiAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGRpcmVjdFR5cGVBbm5vdGF0aW9uO1xuICB9XG5cbiAgcmV0dXJuIGdldE5lc3RlZFR5cGVBbm5vdGF0aW9uKG5vZGUpO1xufTtcblxuLyoqXG4gKiBHZXRzIHRoZSByZXR1cm4gdHlwZSBhbm5vdGF0aW9uIGZvciBhIGZ1bmN0aW9uLWxpa2Ugbm9kZS5cbiAqIEBwYXJhbSBub2RlIE5vZGUgdGhhdCBtYXkgY29udGFpbiBhIHJldHVybiB0eXBlLlxuICogQHJldHVybnMgVGhlIHJldHVybiB0eXBlIGFubm90YXRpb24gd2hlbiBwcmVzZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGFubm90YXRpb24gPSBnZXRSZXR1cm5UeXBlQW5ub3RhdGlvbihub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRSZXR1cm5UeXBlQW5ub3RhdGlvbiA9IChcbiAgbm9kZTogdW5rbm93bixcbik6IFR5cGVBbm5vdGF0aW9uTm9kZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChub2RlID09PSBudWxsIHx8IHR5cGVvZiBub2RlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IHR5cGVkTm9kZSA9IG5vZGUgYXMgRnVuY3Rpb25MaWtlTm9kZTtcblxuICByZXR1cm4gdHlwZWROb2RlLnJldHVyblR5cGU/LnR5cGVBbm5vdGF0aW9uO1xufTtcblxuLyoqXG4gKiBHZXRzIGdldFBhcmFtZXRlcnMuXG4gKiBAcGFyYW0gbm9kZSBJbnB1dCBub2RlIHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBnZXRQYXJhbWV0ZXJzKCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0UGFyYW1ldGVycyA9IChub2RlOiB1bmtub3duKTogdW5rbm93bltdID0+IHtcbiAgaWYgKG5vZGUgPT09IG51bGwgfHwgdHlwZW9mIG5vZGUgIT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCB0eXBlZE5vZGUgPSBub2RlIGFzIEZ1bmN0aW9uTGlrZU5vZGU7XG5cbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodHlwZWROb2RlLnBhcmFtcykgPyB0eXBlZE5vZGUucGFyYW1zIDogW107XG59O1xuXG4vKipcbiAqIEZpbmRzIGFuIGlubGluZSBvYmplY3QgdHlwZSBsaXRlcmFsIHdpdGhpbiBhIHR5cGUgYW5ub3RhdGlvbiBub2RlLlxuICogQHBhcmFtIG5vZGUgVHlwZSBhbm5vdGF0aW9uIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFRoZSBmaXJzdCBpbmxpbmUgb2JqZWN0IHR5cGUgbGl0ZXJhbCB3aGVuIHByZXNlbnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgaW5saW5lT2JqZWN0VHlwZSA9IGdldElubGluZU9iamVjdFR5cGVMaXRlcmFsKGFubm90YXRpb24pO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldElubGluZU9iamVjdFR5cGVMaXRlcmFsID0gKFxuICBub2RlOiBUeXBlQW5ub3RhdGlvbk5vZGUgfCB1bmRlZmluZWQsXG4pOiBUeXBlQW5ub3RhdGlvbk5vZGUgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAobm9kZSA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGlmIChub2RlLnR5cGUgPT09IFwiVFNUeXBlTGl0ZXJhbFwiKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBpZiAobm9kZS50eXBlID09PSBcIlRTUGFyZW50aGVzaXplZFR5cGVcIikge1xuICAgIHJldHVybiBnZXRJbmxpbmVPYmplY3RUeXBlTGl0ZXJhbChcbiAgICAgIG5vZGUudHlwZUFubm90YXRpb24gYXMgVHlwZUFubm90YXRpb25Ob2RlIHwgdW5kZWZpbmVkLFxuICAgICk7XG4gIH1cblxuICBpZiAobm9kZS50eXBlID09PSBcIlRTVW5pb25UeXBlXCIgfHwgbm9kZS50eXBlID09PSBcIlRTSW50ZXJzZWN0aW9uVHlwZVwiKSB7XG4gICAgY29uc3QgbmVzdGVkVHlwZXMgPSBBcnJheS5pc0FycmF5KG5vZGUudHlwZXMpID8gbm9kZS50eXBlcyA6IFtdO1xuXG4gICAgZm9yIChjb25zdCBuZXN0ZWRUeXBlIG9mIG5lc3RlZFR5cGVzKSB7XG4gICAgICBjb25zdCBuZXN0ZWRJbmxpbmVPYmplY3RUeXBlID0gZ2V0SW5saW5lT2JqZWN0VHlwZUxpdGVyYWwoXG4gICAgICAgIG5lc3RlZFR5cGUgYXMgVHlwZUFubm90YXRpb25Ob2RlIHwgdW5kZWZpbmVkLFxuICAgICAgKTtcblxuICAgICAgaWYgKG5lc3RlZElubGluZU9iamVjdFR5cGUgIT09IHZvaWQgMCkge1xuICAgICAgICByZXR1cm4gbmVzdGVkSW5saW5lT2JqZWN0VHlwZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdm9pZCAwO1xufTtcblxuLyoqXG4gKiBSZXBvcnRzIGFuIGlubGluZSBvYmplY3QgdHlwZSBhbm5vdGF0aW9uLlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dC5cbiAqIEBwYXJhbSB0eXBlQW5ub3RhdGlvbiBUeXBlIGFubm90YXRpb24gbm9kZSB0byByZXBvcnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogcmVwb3J0VHlwZUxpdGVyYWwoY29udGV4dCwgdHlwZUFubm90YXRpb24pO1xuICogYGBgXG4gKi9cbmNvbnN0IHJlcG9ydFR5cGVMaXRlcmFsID0gKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuICB0eXBlQW5ub3RhdGlvbjogVHlwZUFubm90YXRpb25Ob2RlLFxuKTogdm9pZCA9PiB7XG4gIGNvbnRleHQucmVwb3J0KHtcbiAgICBtZXNzYWdlSWQ6IFwicHJlZmVyTmFtZWRPYmplY3RcIixcbiAgICBub2RlOiB0eXBlQW5ub3RhdGlvbiBhcyB1bmtub3duIGFzIFJ1bGUuTm9kZSxcbiAgfSk7XG59O1xuXG4vKipcbiAqIENoZWNrcyBmdW5jdGlvbi1saWtlIG5vZGVzIGZvciBpbmxpbmUgb2JqZWN0IHR5cGVzLlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dC5cbiAqIEBwYXJhbSBub2RlIEZ1bmN0aW9uLWxpa2Ugbm9kZSB0byBjaGVjay5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjaGVja0Z1bmN0aW9uTGlrZShjb250ZXh0LCBub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBjaGVja0Z1bmN0aW9uTGlrZSA9IChcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcbiAgbm9kZTogUnVsZS5Ob2RlLFxuKTogdm9pZCA9PiB7XG4gIGZvciAoY29uc3QgcGFyYW1ldGVyIG9mIGdldFBhcmFtZXRlcnMobm9kZSkpIHtcbiAgICBjb25zdCBpbmxpbmVPYmplY3RUeXBlID0gZ2V0SW5saW5lT2JqZWN0VHlwZUxpdGVyYWwoXG4gICAgICBnZXRUeXBlQW5ub3RhdGlvbk5vZGUocGFyYW1ldGVyKSxcbiAgICApO1xuXG4gICAgaWYgKGlubGluZU9iamVjdFR5cGUgIT09IHZvaWQgMCkge1xuICAgICAgcmVwb3J0VHlwZUxpdGVyYWwoY29udGV4dCwgaW5saW5lT2JqZWN0VHlwZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaW5saW5lUmV0dXJuT2JqZWN0VHlwZSA9IGdldElubGluZU9iamVjdFR5cGVMaXRlcmFsKFxuICAgIGdldFJldHVyblR5cGVBbm5vdGF0aW9uKG5vZGUpLFxuICApO1xuXG4gIGlmIChpbmxpbmVSZXR1cm5PYmplY3RUeXBlICE9PSB2b2lkIDApIHtcbiAgICByZXBvcnRUeXBlTGl0ZXJhbChjb250ZXh0LCBpbmxpbmVSZXR1cm5PYmplY3RUeXBlKTtcbiAgfVxufTtcblxuLyoqXG4gKiBDaGVja3MgdmFyaWFibGUgZGVjbGFyYXRvcnMgZm9yIGlubGluZSBvYmplY3QgdHlwZXMuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHBhcmFtIG5vZGUgVmFyaWFibGUgZGVjbGFyYXRvciB0byBjaGVjay5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjaGVja1ZhcmlhYmxlRGVjbGFyYXRvcihjb250ZXh0LCBub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBjaGVja1ZhcmlhYmxlRGVjbGFyYXRvciA9IChcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcbiAgbm9kZTogUnVsZS5Ob2RlLFxuKTogdm9pZCA9PiB7XG4gIGNvbnN0IHR5cGVkTm9kZSA9IG5vZGUgYXMgVmFyaWFibGVEZWNsYXJhdG9yTm9kZTtcblxuICBjb25zdCBpbmxpbmVPYmplY3RUeXBlID0gZ2V0SW5saW5lT2JqZWN0VHlwZUxpdGVyYWwoXG4gICAgZ2V0VHlwZUFubm90YXRpb25Ob2RlKHR5cGVkTm9kZS5pZCksXG4gICk7XG5cbiAgaWYgKGlubGluZU9iamVjdFR5cGUgIT09IHZvaWQgMCkge1xuICAgIHJlcG9ydFR5cGVMaXRlcmFsKGNvbnRleHQsIGlubGluZU9iamVjdFR5cGUpO1xuICB9XG59O1xuXG4vKiogRVNMaW50IHJ1bGUgcmVxdWlyaW5nIG5hbWVkIGludGVyZmFjZS90eXBlIGFsaWFzZXMgZm9yIG9iamVjdCB0eXBlcy4gKi9cbmNvbnN0IHByZWZlckludGVyZmFjZVR5cGVzUnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICAvKipcbiAgICogQ3JlYXRlcyBsaXN0ZW5lcnMgdGhhdCB2YWxpZGF0ZSBmdW5jdGlvbi1saWtlIGFuZCB2YXJpYWJsZSBhbm5vdGF0aW9ucy5cbiAgICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dC5cbiAgICogQHJldHVybnMgUnVsZSBsaXN0ZW5lciBtYXAuXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgbGlzdGVuZXJzID0gcHJlZmVySW50ZXJmYWNlVHlwZXNSdWxlLmNyZWF0ZShjb250ZXh0KTtcbiAgICogYGBgXG4gICAqL1xuICBjcmVhdGUoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFJ1bGUuUnVsZUxpc3RlbmVyIHtcbiAgICAvKipcbiAgICAgKiBDaGVja3MgZnVuY3Rpb24tbGlrZSBub2RlcyBmb3IgaW5saW5lIG9iamVjdCB0eXBlcy5cbiAgICAgKiBAcGFyYW0gbm9kZSBGdW5jdGlvbi1saWtlIG5vZGUgdG8gaW5zcGVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBmdW5jdGlvbkxpa2VMaXN0ZW5lcihub2RlKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBjb25zdCBmdW5jdGlvbkxpa2VMaXN0ZW5lciA9IChub2RlOiBSdWxlLk5vZGUpOiB2b2lkID0+IHtcbiAgICAgIGNoZWNrRnVuY3Rpb25MaWtlKGNvbnRleHQsIG5vZGUpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgdmFyaWFibGUgZGVjbGFyYXRvcnMgZm9yIGlubGluZSBvYmplY3QgdHlwZXMuXG4gICAgICogQHBhcmFtIG5vZGUgVmFyaWFibGUgZGVjbGFyYXRvciB0byBpbnNwZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHZhcmlhYmxlRGVjbGFyYXRvckxpc3RlbmVyKG5vZGUpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIGNvbnN0IHZhcmlhYmxlRGVjbGFyYXRvckxpc3RlbmVyID0gKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQgPT4ge1xuICAgICAgY2hlY2tWYXJpYWJsZURlY2xhcmF0b3IoY29udGV4dCwgbm9kZSk7XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICBBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbjogZnVuY3Rpb25MaWtlTGlzdGVuZXIsXG4gICAgICBGdW5jdGlvbkRlY2xhcmF0aW9uOiBmdW5jdGlvbkxpa2VMaXN0ZW5lcixcbiAgICAgIEZ1bmN0aW9uRXhwcmVzc2lvbjogZnVuY3Rpb25MaWtlTGlzdGVuZXIsXG4gICAgICBUU0NhbGxTaWduYXR1cmVEZWNsYXJhdGlvbjogZnVuY3Rpb25MaWtlTGlzdGVuZXIsXG4gICAgICBUU0NvbnN0cnVjdFNpZ25hdHVyZURlY2xhcmF0aW9uOiBmdW5jdGlvbkxpa2VMaXN0ZW5lcixcbiAgICAgIFRTRGVjbGFyZUZ1bmN0aW9uOiBmdW5jdGlvbkxpa2VMaXN0ZW5lcixcbiAgICAgIFRTRnVuY3Rpb25UeXBlOiBmdW5jdGlvbkxpa2VMaXN0ZW5lcixcbiAgICAgIFRTTWV0aG9kU2lnbmF0dXJlOiBmdW5jdGlvbkxpa2VMaXN0ZW5lcixcbiAgICAgIFZhcmlhYmxlRGVjbGFyYXRvcjogdmFyaWFibGVEZWNsYXJhdG9yTGlzdGVuZXIsXG4gICAgfTtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlJlcXVpcmUgbmFtZWQgaW50ZXJmYWNlcyBvciB0eXBlIGFsaWFzZXMgZm9yIG9iamVjdCB0eXBlcyBpbiBwYXJhbWV0ZXJzLCByZXR1cm4gdHlwZXMsIGFuZCB2YXJpYWJsZSBhbm5vdGF0aW9ucy5cIixcbiAgICAgIHJlY29tbWVuZGVkOiBmYWxzZSxcbiAgICAgIHVybDogXCJodHRwczovL2dpdGh1Yi5jb20vcGFybG90aS9lc2xpbnQtcGx1Z2luL2Jsb2IvbWFpbi9kb2NzL3J1bGVzL3ByZWZlci1pbnRlcmZhY2UtdHlwZXMubWRcIixcbiAgICB9LFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICBwcmVmZXJOYW1lZE9iamVjdDpcbiAgICAgICAgXCJVc2UgYSBuYW1lZCBpbnRlcmZhY2Ugb3IgdHlwZSBhbGlhcyBpbnN0ZWFkIG9mIGFuIGlubGluZSBvYmplY3QgdHlwZS5cIixcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogXCJzdWdnZXN0aW9uXCIsXG4gIH0sXG59O1xuXG5leHBvcnQgeyBwcmVmZXJJbnRlcmZhY2VUeXBlc1J1bGUgfTtcbiJdfQ==
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vY29yZS9wcmVmZXItaW50ZXJmYWNlLXR5cGVzL3J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUNMLDBCQUEwQixFQUMxQixhQUFhLEVBQ2IsdUJBQXVCLEVBQ3ZCLHFCQUFxQixHQUN0QixNQUFNLGtCQUFrQixDQUFDO0FBRTFCOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUN4QixPQUF5QixFQUN6QixjQUFrQyxFQUM1QixFQUFFO0lBQ1IsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUNiLFNBQVMsRUFBRSxtQkFBbUI7UUFDOUIsSUFBSSxFQUFFLGNBQXNDO0tBQzdDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUN4QixPQUF5QixFQUN6QixJQUFlLEVBQ1QsRUFBRTtJQUNSLEtBQUssTUFBTSxTQUFTLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDNUMsTUFBTSxnQkFBZ0IsR0FBRywwQkFBMEIsQ0FDakQscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQ2pDLENBQUM7UUFFRixJQUFJLGdCQUFnQixLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLHNCQUFzQixHQUFHLDBCQUEwQixDQUN2RCx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FDOUIsQ0FBQztJQUVGLElBQUksc0JBQXNCLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN0QyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztJQUNyRCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLHVCQUF1QixHQUFHLENBQzlCLE9BQXlCLEVBQ3pCLElBQWUsRUFDVCxFQUFFO0lBQ1IsTUFBTSxTQUFTLEdBQUcsSUFBOEIsQ0FBQztJQUVqRCxNQUFNLGdCQUFnQixHQUFHLDBCQUEwQixDQUNqRCxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQ3BDLENBQUM7SUFFRixJQUFJLGdCQUFnQixLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDL0MsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLDJFQUEyRTtBQUMzRSxNQUFNLHdCQUF3QixHQUFvQjtJQUNoRDs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxPQUF5QjtRQUM5Qjs7Ozs7OztXQU9HO1FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLElBQWUsRUFBUSxFQUFFO1lBQ3JELGlCQUFpQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUM7UUFFRjs7Ozs7OztXQU9HO1FBQ0gsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLElBQWUsRUFBUSxFQUFFO1lBQzNELHVCQUF1QixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUM7UUFFRixPQUFPO1lBQ0wsdUJBQXVCLEVBQUUsb0JBQW9CO1lBQzdDLG1CQUFtQixFQUFFLG9CQUFvQjtZQUN6QyxrQkFBa0IsRUFBRSxvQkFBb0I7WUFDeEMsMEJBQTBCLEVBQUUsb0JBQW9CO1lBQ2hELCtCQUErQixFQUFFLG9CQUFvQjtZQUNyRCxpQkFBaUIsRUFBRSxvQkFBb0I7WUFDdkMsY0FBYyxFQUFFLG9CQUFvQjtZQUNwQyxpQkFBaUIsRUFBRSxvQkFBb0I7WUFDdkMsa0JBQWtCLEVBQUUsMEJBQTBCO1NBQy9DLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFO1lBQ0osV0FBVyxFQUNULGtIQUFrSDtZQUNwSCxXQUFXLEVBQUUsS0FBSztZQUNsQixHQUFHLEVBQUUseUZBQXlGO1NBQy9GO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsaUJBQWlCLEVBQ2YsdUVBQXVFO1NBQzFFO1FBQ0QsTUFBTSxFQUFFLEVBQUU7UUFDVixJQUFJLEVBQUUsWUFBWTtLQUNuQjtDQUNGLENBQUM7QUFFRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUge1xuICBUeXBlQW5ub3RhdGlvbk5vZGUsXG4gIFZhcmlhYmxlRGVjbGFyYXRvck5vZGUsXG59IGZyb20gXCIuL3J1bGUtdXRpbGl0aWVzXCI7XG5cbmltcG9ydCB7XG4gIGdldElubGluZU9iamVjdFR5cGVMaXRlcmFsLFxuICBnZXRQYXJhbWV0ZXJzLFxuICBnZXRSZXR1cm5UeXBlQW5ub3RhdGlvbixcbiAgZ2V0VHlwZUFubm90YXRpb25Ob2RlLFxufSBmcm9tIFwiLi9ydWxlLXV0aWxpdGllc1wiO1xuXG4vKipcbiAqIFJlcG9ydHMgYW4gaW5saW5lIG9iamVjdCB0eXBlIGFubm90YXRpb24uXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHBhcmFtIHR5cGVBbm5vdGF0aW9uIFR5cGUgYW5ub3RhdGlvbiBub2RlIHRvIHJlcG9ydC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiByZXBvcnRUeXBlTGl0ZXJhbChjb250ZXh0LCB0eXBlQW5ub3RhdGlvbik7XG4gKiBgYGBcbiAqL1xuY29uc3QgcmVwb3J0VHlwZUxpdGVyYWwgPSAoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIHR5cGVBbm5vdGF0aW9uOiBUeXBlQW5ub3RhdGlvbk5vZGUsXG4pOiB2b2lkID0+IHtcbiAgY29udGV4dC5yZXBvcnQoe1xuICAgIG1lc3NhZ2VJZDogXCJwcmVmZXJOYW1lZE9iamVjdFwiLFxuICAgIG5vZGU6IHR5cGVBbm5vdGF0aW9uIGFzIHVua25vd24gYXMgUnVsZS5Ob2RlLFxuICB9KTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIGZ1bmN0aW9uLWxpa2Ugbm9kZXMgZm9yIGlubGluZSBvYmplY3QgdHlwZXMuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHBhcmFtIG5vZGUgRnVuY3Rpb24tbGlrZSBub2RlIHRvIGNoZWNrLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNoZWNrRnVuY3Rpb25MaWtlKGNvbnRleHQsIG5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGNoZWNrRnVuY3Rpb25MaWtlID0gKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuICBub2RlOiBSdWxlLk5vZGUsXG4pOiB2b2lkID0+IHtcbiAgZm9yIChjb25zdCBwYXJhbWV0ZXIgb2YgZ2V0UGFyYW1ldGVycyhub2RlKSkge1xuICAgIGNvbnN0IGlubGluZU9iamVjdFR5cGUgPSBnZXRJbmxpbmVPYmplY3RUeXBlTGl0ZXJhbChcbiAgICAgIGdldFR5cGVBbm5vdGF0aW9uTm9kZShwYXJhbWV0ZXIpLFxuICAgICk7XG5cbiAgICBpZiAoaW5saW5lT2JqZWN0VHlwZSAhPT0gdm9pZCAwKSB7XG4gICAgICByZXBvcnRUeXBlTGl0ZXJhbChjb250ZXh0LCBpbmxpbmVPYmplY3RUeXBlKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBpbmxpbmVSZXR1cm5PYmplY3RUeXBlID0gZ2V0SW5saW5lT2JqZWN0VHlwZUxpdGVyYWwoXG4gICAgZ2V0UmV0dXJuVHlwZUFubm90YXRpb24obm9kZSksXG4gICk7XG5cbiAgaWYgKGlubGluZVJldHVybk9iamVjdFR5cGUgIT09IHZvaWQgMCkge1xuICAgIHJlcG9ydFR5cGVMaXRlcmFsKGNvbnRleHQsIGlubGluZVJldHVybk9iamVjdFR5cGUpO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyB2YXJpYWJsZSBkZWNsYXJhdG9ycyBmb3IgaW5saW5lIG9iamVjdCB0eXBlcy5cbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHQuXG4gKiBAcGFyYW0gbm9kZSBWYXJpYWJsZSBkZWNsYXJhdG9yIHRvIGNoZWNrLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNoZWNrVmFyaWFibGVEZWNsYXJhdG9yKGNvbnRleHQsIG5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGNoZWNrVmFyaWFibGVEZWNsYXJhdG9yID0gKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuICBub2RlOiBSdWxlLk5vZGUsXG4pOiB2b2lkID0+IHtcbiAgY29uc3QgdHlwZWROb2RlID0gbm9kZSBhcyBWYXJpYWJsZURlY2xhcmF0b3JOb2RlO1xuXG4gIGNvbnN0IGlubGluZU9iamVjdFR5cGUgPSBnZXRJbmxpbmVPYmplY3RUeXBlTGl0ZXJhbChcbiAgICBnZXRUeXBlQW5ub3RhdGlvbk5vZGUodHlwZWROb2RlLmlkKSxcbiAgKTtcblxuICBpZiAoaW5saW5lT2JqZWN0VHlwZSAhPT0gdm9pZCAwKSB7XG4gICAgcmVwb3J0VHlwZUxpdGVyYWwoY29udGV4dCwgaW5saW5lT2JqZWN0VHlwZSk7XG4gIH1cbn07XG5cbi8qKiBFU0xpbnQgcnVsZSByZXF1aXJpbmcgbmFtZWQgaW50ZXJmYWNlL3R5cGUgYWxpYXNlcyBmb3Igb2JqZWN0IHR5cGVzLiAqL1xuY29uc3QgcHJlZmVySW50ZXJmYWNlVHlwZXNSdWxlOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGxpc3RlbmVycyB0aGF0IHZhbGlkYXRlIGZ1bmN0aW9uLWxpa2UgYW5kIHZhcmlhYmxlIGFubm90YXRpb25zLlxuICAgKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICAgKiBAcmV0dXJucyBSdWxlIGxpc3RlbmVyIG1hcC5cbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBsaXN0ZW5lcnMgPSBwcmVmZXJJbnRlcmZhY2VUeXBlc1J1bGUuY3JlYXRlKGNvbnRleHQpO1xuICAgKiBgYGBcbiAgICovXG4gIGNyZWF0ZShjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZS5SdWxlTGlzdGVuZXIge1xuICAgIC8qKlxuICAgICAqIENoZWNrcyBmdW5jdGlvbi1saWtlIG5vZGVzIGZvciBpbmxpbmUgb2JqZWN0IHR5cGVzLlxuICAgICAqIEBwYXJhbSBub2RlIEZ1bmN0aW9uLWxpa2Ugbm9kZSB0byBpbnNwZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGZ1bmN0aW9uTGlrZUxpc3RlbmVyKG5vZGUpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIGNvbnN0IGZ1bmN0aW9uTGlrZUxpc3RlbmVyID0gKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQgPT4ge1xuICAgICAgY2hlY2tGdW5jdGlvbkxpa2UoY29udGV4dCwgbm9kZSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyB2YXJpYWJsZSBkZWNsYXJhdG9ycyBmb3IgaW5saW5lIG9iamVjdCB0eXBlcy5cbiAgICAgKiBAcGFyYW0gbm9kZSBWYXJpYWJsZSBkZWNsYXJhdG9yIHRvIGluc3BlY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdmFyaWFibGVEZWNsYXJhdG9yTGlzdGVuZXIobm9kZSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgY29uc3QgdmFyaWFibGVEZWNsYXJhdG9yTGlzdGVuZXIgPSAobm9kZTogUnVsZS5Ob2RlKTogdm9pZCA9PiB7XG4gICAgICBjaGVja1ZhcmlhYmxlRGVjbGFyYXRvcihjb250ZXh0LCBub2RlKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIEFycm93RnVuY3Rpb25FeHByZXNzaW9uOiBmdW5jdGlvbkxpa2VMaXN0ZW5lcixcbiAgICAgIEZ1bmN0aW9uRGVjbGFyYXRpb246IGZ1bmN0aW9uTGlrZUxpc3RlbmVyLFxuICAgICAgRnVuY3Rpb25FeHByZXNzaW9uOiBmdW5jdGlvbkxpa2VMaXN0ZW5lcixcbiAgICAgIFRTQ2FsbFNpZ25hdHVyZURlY2xhcmF0aW9uOiBmdW5jdGlvbkxpa2VMaXN0ZW5lcixcbiAgICAgIFRTQ29uc3RydWN0U2lnbmF0dXJlRGVjbGFyYXRpb246IGZ1bmN0aW9uTGlrZUxpc3RlbmVyLFxuICAgICAgVFNEZWNsYXJlRnVuY3Rpb246IGZ1bmN0aW9uTGlrZUxpc3RlbmVyLFxuICAgICAgVFNGdW5jdGlvblR5cGU6IGZ1bmN0aW9uTGlrZUxpc3RlbmVyLFxuICAgICAgVFNNZXRob2RTaWduYXR1cmU6IGZ1bmN0aW9uTGlrZUxpc3RlbmVyLFxuICAgICAgVmFyaWFibGVEZWNsYXJhdG9yOiB2YXJpYWJsZURlY2xhcmF0b3JMaXN0ZW5lcixcbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUmVxdWlyZSBuYW1lZCBpbnRlcmZhY2VzIG9yIHR5cGUgYWxpYXNlcyBmb3Igb2JqZWN0IHR5cGVzIGluIHBhcmFtZXRlcnMsIHJldHVybiB0eXBlcywgYW5kIHZhcmlhYmxlIGFubm90YXRpb25zLlwiLFxuICAgICAgcmVjb21tZW5kZWQ6IGZhbHNlLFxuICAgICAgdXJsOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9wYXJsb3RpL2VzbGludC1wbHVnaW4vYmxvYi9tYWluL2RvY3MvcnVsZXMvcHJlZmVyLWludGVyZmFjZS10eXBlcy5tZFwiLFxuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHByZWZlck5hbWVkT2JqZWN0OlxuICAgICAgICBcIlVzZSBhIG5hbWVkIGludGVyZmFjZSBvciB0eXBlIGFsaWFzIGluc3RlYWQgb2YgYW4gaW5saW5lIG9iamVjdCB0eXBlLlwiLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiBcInN1Z2dlc3Rpb25cIixcbiAgfSxcbn07XG5cbmV4cG9ydCB7IHByZWZlckludGVyZmFjZVR5cGVzUnVsZSB9O1xuIl19
@@ -0,0 +1,25 @@
1
+ import type { CommentLine } from "./types.js";
2
+ /**
3
+ * Gets getCommentLines.
4
+ * @param commentText Input commentText value.
5
+ * @returns Return value output.
6
+ * @example
7
+ * ```typescript
8
+ * getCommentLines();
9
+ * ```
10
+ */
11
+ declare const getCommentLines: (commentText: string) => CommentLine[];
12
+ /**
13
+ * Builds a removal range for the specified comment line.
14
+ * @param commentStart Comment start offset in the source.
15
+ * @param commentText Full comment text.
16
+ * @param line Line metadata for the comment.
17
+ * @returns The range to remove.
18
+ * @example
19
+ * ```typescript
20
+ * const range = buildRemovalRange(0, commentText, line);
21
+ * ```
22
+ */
23
+ declare const buildRemovalRange: (commentStart: number, commentText: string, line: CommentLine) => [number, number];
24
+ export { buildRemovalRange, getCommentLines };
25
+ //# sourceMappingURL=comment-removal-ranges.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comment-removal-ranges.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/no-interface-member-docs/comment-removal-ranges.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;;;;GAQG;AACH,QAAA,MAAM,eAAe,GAAI,aAAa,MAAM,KAAG,WAAW,EAyBzD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,QAAA,MAAM,iBAAiB,GACrB,cAAc,MAAM,EACpB,aAAa,MAAM,EACnB,MAAM,WAAW,KAChB,CAAC,MAAM,EAAE,MAAM,CAuBjB,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Gets getCommentLines.
3
+ * @param commentText Input commentText value.
4
+ * @returns Return value output.
5
+ * @example
6
+ * ```typescript
7
+ * getCommentLines();
8
+ * ```
9
+ */
10
+ const getCommentLines = (commentText) => {
11
+ const lines = commentText.split(/\r?\n/u);
12
+ const results = [];
13
+ let offset = 0;
14
+ for (const line of lines) {
15
+ const lineEnd = offset + line.length;
16
+ const nextSlice = commentText.slice(lineEnd, lineEnd + 2);
17
+ const lineBreakLength = nextSlice.startsWith("\r\n")
18
+ ? 2
19
+ : nextSlice.startsWith("\n")
20
+ ? 1
21
+ : 0;
22
+ results.push({
23
+ end: lineEnd,
24
+ lineBreakLength,
25
+ start: offset,
26
+ text: line,
27
+ });
28
+ offset = lineEnd + lineBreakLength;
29
+ }
30
+ return results;
31
+ };
32
+ /**
33
+ * Builds a removal range for the specified comment line.
34
+ * @param commentStart Comment start offset in the source.
35
+ * @param commentText Full comment text.
36
+ * @param line Line metadata for the comment.
37
+ * @returns The range to remove.
38
+ * @example
39
+ * ```typescript
40
+ * const range = buildRemovalRange(0, commentText, line);
41
+ * ```
42
+ */
43
+ const buildRemovalRange = (commentStart, commentText, line) => {
44
+ if (line.lineBreakLength > 0) {
45
+ return [
46
+ commentStart + line.start,
47
+ commentStart + line.end + line.lineBreakLength,
48
+ ];
49
+ }
50
+ if (line.start > 0) {
51
+ const previousChar = commentText[line.start - 1];
52
+ const isPreviousLineBreak = previousChar === "\n";
53
+ if (isPreviousLineBreak) {
54
+ const lineBreakLength = line.start > 1 && commentText[line.start - 2] === "\r" ? 2 : 1;
55
+ return [
56
+ commentStart + line.start - lineBreakLength,
57
+ commentStart + line.end,
58
+ ];
59
+ }
60
+ }
61
+ return [commentStart + line.start, commentStart + line.end];
62
+ };
63
+ export { buildRemovalRange, getCommentLines };
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1yZW1vdmFsLXJhbmdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vZG9jcy9uby1pbnRlcmZhY2UtbWVtYmVyLWRvY3MvY29tbWVudC1yZW1vdmFsLXJhbmdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sZUFBZSxHQUFHLENBQUMsV0FBbUIsRUFBaUIsRUFBRTtJQUM3RCxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sT0FBTyxHQUFrQixFQUFFLENBQUM7SUFDbEMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRWYsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN6QixNQUFNLE9BQU8sR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNyQyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUQsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDbEQsQ0FBQyxDQUFDLENBQUM7WUFDSCxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLENBQUMsQ0FBQyxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFUixPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ1gsR0FBRyxFQUFFLE9BQU87WUFDWixlQUFlO1lBQ2YsS0FBSyxFQUFFLE1BQU07WUFDYixJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUMsQ0FBQztRQUVILE1BQU0sR0FBRyxPQUFPLEdBQUcsZUFBZSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUN4QixZQUFvQixFQUNwQixXQUFtQixFQUNuQixJQUFpQixFQUNDLEVBQUU7SUFDcEIsSUFBSSxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzdCLE9BQU87WUFDTCxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUs7WUFDekIsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWU7U0FDL0MsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbkIsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDakQsTUFBTSxtQkFBbUIsR0FBRyxZQUFZLEtBQUssSUFBSSxDQUFDO1FBRWxELElBQUksbUJBQW1CLEVBQUUsQ0FBQztZQUN4QixNQUFNLGVBQWUsR0FDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRSxPQUFPO2dCQUNMLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLGVBQWU7Z0JBQzNDLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRzthQUN4QixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5RCxDQUFDLENBQUM7QUFFRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbW1lbnRMaW5lIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuLyoqXG4gKiBHZXRzIGdldENvbW1lbnRMaW5lcy5cbiAqIEBwYXJhbSBjb21tZW50VGV4dCBJbnB1dCBjb21tZW50VGV4dCB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZ2V0Q29tbWVudExpbmVzKCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0Q29tbWVudExpbmVzID0gKGNvbW1lbnRUZXh0OiBzdHJpbmcpOiBDb21tZW50TGluZVtdID0+IHtcbiAgY29uc3QgbGluZXMgPSBjb21tZW50VGV4dC5zcGxpdCgvXFxyP1xcbi91KTtcbiAgY29uc3QgcmVzdWx0czogQ29tbWVudExpbmVbXSA9IFtdO1xuICBsZXQgb2Zmc2V0ID0gMDtcblxuICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICBjb25zdCBsaW5lRW5kID0gb2Zmc2V0ICsgbGluZS5sZW5ndGg7XG4gICAgY29uc3QgbmV4dFNsaWNlID0gY29tbWVudFRleHQuc2xpY2UobGluZUVuZCwgbGluZUVuZCArIDIpO1xuICAgIGNvbnN0IGxpbmVCcmVha0xlbmd0aCA9IG5leHRTbGljZS5zdGFydHNXaXRoKFwiXFxyXFxuXCIpXG4gICAgICA/IDJcbiAgICAgIDogbmV4dFNsaWNlLnN0YXJ0c1dpdGgoXCJcXG5cIilcbiAgICAgICAgPyAxXG4gICAgICAgIDogMDtcblxuICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICBlbmQ6IGxpbmVFbmQsXG4gICAgICBsaW5lQnJlYWtMZW5ndGgsXG4gICAgICBzdGFydDogb2Zmc2V0LFxuICAgICAgdGV4dDogbGluZSxcbiAgICB9KTtcblxuICAgIG9mZnNldCA9IGxpbmVFbmQgKyBsaW5lQnJlYWtMZW5ndGg7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0cztcbn07XG5cbi8qKlxuICogQnVpbGRzIGEgcmVtb3ZhbCByYW5nZSBmb3IgdGhlIHNwZWNpZmllZCBjb21tZW50IGxpbmUuXG4gKiBAcGFyYW0gY29tbWVudFN0YXJ0IENvbW1lbnQgc3RhcnQgb2Zmc2V0IGluIHRoZSBzb3VyY2UuXG4gKiBAcGFyYW0gY29tbWVudFRleHQgRnVsbCBjb21tZW50IHRleHQuXG4gKiBAcGFyYW0gbGluZSBMaW5lIG1ldGFkYXRhIGZvciB0aGUgY29tbWVudC5cbiAqIEByZXR1cm5zIFRoZSByYW5nZSB0byByZW1vdmUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmFuZ2UgPSBidWlsZFJlbW92YWxSYW5nZSgwLCBjb21tZW50VGV4dCwgbGluZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgYnVpbGRSZW1vdmFsUmFuZ2UgPSAoXG4gIGNvbW1lbnRTdGFydDogbnVtYmVyLFxuICBjb21tZW50VGV4dDogc3RyaW5nLFxuICBsaW5lOiBDb21tZW50TGluZSxcbik6IFtudW1iZXIsIG51bWJlcl0gPT4ge1xuICBpZiAobGluZS5saW5lQnJlYWtMZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIGNvbW1lbnRTdGFydCArIGxpbmUuc3RhcnQsXG4gICAgICBjb21tZW50U3RhcnQgKyBsaW5lLmVuZCArIGxpbmUubGluZUJyZWFrTGVuZ3RoLFxuICAgIF07XG4gIH1cblxuICBpZiAobGluZS5zdGFydCA+IDApIHtcbiAgICBjb25zdCBwcmV2aW91c0NoYXIgPSBjb21tZW50VGV4dFtsaW5lLnN0YXJ0IC0gMV07XG4gICAgY29uc3QgaXNQcmV2aW91c0xpbmVCcmVhayA9IHByZXZpb3VzQ2hhciA9PT0gXCJcXG5cIjtcblxuICAgIGlmIChpc1ByZXZpb3VzTGluZUJyZWFrKSB7XG4gICAgICBjb25zdCBsaW5lQnJlYWtMZW5ndGggPVxuICAgICAgICBsaW5lLnN0YXJ0ID4gMSAmJiBjb21tZW50VGV4dFtsaW5lLnN0YXJ0IC0gMl0gPT09IFwiXFxyXCIgPyAyIDogMTtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIGNvbW1lbnRTdGFydCArIGxpbmUuc3RhcnQgLSBsaW5lQnJlYWtMZW5ndGgsXG4gICAgICAgIGNvbW1lbnRTdGFydCArIGxpbmUuZW5kLFxuICAgICAgXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gW2NvbW1lbnRTdGFydCArIGxpbmUuc3RhcnQsIGNvbW1lbnRTdGFydCArIGxpbmUuZW5kXTtcbn07XG5cbmV4cG9ydCB7IGJ1aWxkUmVtb3ZhbFJhbmdlLCBnZXRDb21tZW50TGluZXMgfTtcbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import type { Rule } from "eslint";
2
- import type { Comment, CommentLine } from "./types.js";
2
+ import type { Comment } from "./types.js";
3
3
  /**
4
4
  * Gets the closest JSDoc comment for a node.
5
5
  * @param sourceCode Source code wrapper.
@@ -22,27 +22,5 @@ declare const getJsdocComment: (sourceCode: Rule.RuleContext["sourceCode"], node
22
22
  * ```
23
23
  */
24
24
  declare const getCommentText: (sourceCode: Rule.RuleContext["sourceCode"], comment: Comment) => string;
25
- /**
26
- * Gets getCommentLines.
27
- * @param commentText Input commentText value.
28
- * @returns Return value output.
29
- * @example
30
- * ```typescript
31
- * getCommentLines();
32
- * ```
33
- */
34
- declare const getCommentLines: (commentText: string) => CommentLine[];
35
- /**
36
- * Builds a removal range for the specified comment line.
37
- * @param commentStart Comment start offset in the source.
38
- * @param commentText Full comment text.
39
- * @param line Line metadata for the comment.
40
- * @returns The range to remove.
41
- * @example
42
- * ```typescript
43
- * const range = buildRemovalRange(0, commentText, line);
44
- * ```
45
- */
46
- declare const buildRemovalRange: (commentStart: number, commentText: string, line: CommentLine) => [number, number];
47
- export { buildRemovalRange, getCommentLines, getCommentText, getJsdocComment };
25
+ export { getCommentText, getJsdocComment };
48
26
  //# sourceMappingURL=comment-utilities.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"comment-utilities.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/no-interface-member-docs/comment-utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AA2DpD;;;;;;;;;GASG;AACH,QAAA,MAAM,eAAe,GACnB,YAAY,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAC1C,MAAM,IAAI,CAAC,IAAI,KACd,OAAO,GAAG,SAuBZ,CAAC;AAEF;;;;;;;;;GASG;AACH,QAAA,MAAM,cAAc,GAClB,YAAY,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAC1C,SAAS,OAAO,KACf,MASF,CAAC;AAEF;;;;;;;;GAQG;AACH,QAAA,MAAM,eAAe,GAAI,aAAa,MAAM,KAAG,WAAW,EAyBzD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,QAAA,MAAM,iBAAiB,GACrB,cAAc,MAAM,EACpB,aAAa,MAAM,EACnB,MAAM,WAAW,KAChB,CAAC,MAAM,EAAE,MAAM,CAuBjB,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"comment-utilities.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/no-interface-member-docs/comment-utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AA2DvC;;;;;;;;;GASG;AACH,QAAA,MAAM,eAAe,GACnB,YAAY,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAC1C,MAAM,IAAI,CAAC,IAAI,KACd,OAAO,GAAG,SAuBZ,CAAC;AAEF;;;;;;;;;GASG;AACH,QAAA,MAAM,cAAc,GAClB,YAAY,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAC1C,SAAS,OAAO,KACf,MASF,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC"}
@@ -57,7 +57,7 @@ const findClosestComment = (comments, nodeStart) => {
57
57
  const getJsdocComment = (sourceCode, node) => {
58
58
  const comments = sourceCode.getAllComments();
59
59
  const nodeStart = node.range?.[0];
60
- if (comments.length === 0 || typeof nodeStart !== "number") {
60
+ if (typeof nodeStart !== "number" || comments.length === 0) {
61
61
  return void 0;
62
62
  }
63
63
  const comment = findClosestComment(comments, nodeStart);
@@ -89,67 +89,5 @@ const getCommentText = (sourceCode, comment) => {
89
89
  }
90
90
  return sourceCode.text.slice(start, end);
91
91
  };
92
- /**
93
- * Gets getCommentLines.
94
- * @param commentText Input commentText value.
95
- * @returns Return value output.
96
- * @example
97
- * ```typescript
98
- * getCommentLines();
99
- * ```
100
- */
101
- const getCommentLines = (commentText) => {
102
- const lines = commentText.split(/\r?\n/u);
103
- const results = [];
104
- let offset = 0;
105
- for (const line of lines) {
106
- const lineEnd = offset + line.length;
107
- const nextSlice = commentText.slice(lineEnd, lineEnd + 2);
108
- const lineBreakLength = nextSlice.startsWith("\r\n")
109
- ? 2
110
- : nextSlice.startsWith("\n")
111
- ? 1
112
- : 0;
113
- results.push({
114
- end: lineEnd,
115
- lineBreakLength,
116
- start: offset,
117
- text: line,
118
- });
119
- offset = lineEnd + lineBreakLength;
120
- }
121
- return results;
122
- };
123
- /**
124
- * Builds a removal range for the specified comment line.
125
- * @param commentStart Comment start offset in the source.
126
- * @param commentText Full comment text.
127
- * @param line Line metadata for the comment.
128
- * @returns The range to remove.
129
- * @example
130
- * ```typescript
131
- * const range = buildRemovalRange(0, commentText, line);
132
- * ```
133
- */
134
- const buildRemovalRange = (commentStart, commentText, line) => {
135
- if (line.lineBreakLength > 0) {
136
- return [
137
- commentStart + line.start,
138
- commentStart + line.end + line.lineBreakLength,
139
- ];
140
- }
141
- if (line.start > 0) {
142
- const previousChar = commentText[line.start - 1];
143
- const previousIsLineBreak = previousChar === "\n";
144
- if (previousIsLineBreak) {
145
- const lineBreakLength = line.start > 1 && commentText[line.start - 2] === "\r" ? 2 : 1;
146
- return [
147
- commentStart + line.start - lineBreakLength,
148
- commentStart + line.end,
149
- ];
150
- }
151
- }
152
- return [commentStart + line.start, commentStart + line.end];
153
- };
154
- export { buildRemovalRange, getCommentLines, getCommentText, getJsdocComment };
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC11dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2RvY3Mvbm8taW50ZXJmYWNlLW1lbWJlci1kb2NzL2NvbW1lbnQtdXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFnQixFQUFXLEVBQUUsQ0FDbkQsT0FBTyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFNUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQWdCLEVBQXNCLEVBQUU7SUFDN0QsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXRDLE9BQU8sT0FBTyxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlELENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sa0JBQWtCLEdBQUcsQ0FDekIsUUFBbUIsRUFDbkIsU0FBaUIsRUFDSSxFQUFFO0lBQ3ZCLElBQUksT0FBTyxHQUF3QixLQUFLLENBQUMsQ0FBQztJQUMxQyxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUVwQixLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQy9CLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxNQUFNLGNBQWMsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksVUFBVSxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBRXhFLElBQUksY0FBYyxJQUFJLFVBQVUsSUFBSSxTQUFTLElBQUksVUFBVSxHQUFHLFVBQVUsRUFBRSxDQUFDO1lBQ3pFLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFDbEIsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sZUFBZSxHQUFHLENBQ3RCLFVBQTBDLEVBQzFDLElBQWUsRUFDTSxFQUFFO0lBQ3ZCLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM3QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFbEMsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMzRCxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFeEQsSUFBSSxPQUFPLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN2QixPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFdEMsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuQyxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLHFCQUFxQixHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUUzRSxPQUFPLHFCQUFxQixDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdEUsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsQ0FDckIsVUFBMEMsRUFDMUMsT0FBZ0IsRUFDUixFQUFFO0lBQ1YsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUvQixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN6RCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sZUFBZSxHQUFHLENBQUMsV0FBbUIsRUFBaUIsRUFBRTtJQUM3RCxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sT0FBTyxHQUFrQixFQUFFLENBQUM7SUFDbEMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRWYsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN6QixNQUFNLE9BQU8sR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNyQyxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUQsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDbEQsQ0FBQyxDQUFDLENBQUM7WUFDSCxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLENBQUMsQ0FBQyxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFUixPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ1gsR0FBRyxFQUFFLE9BQU87WUFDWixlQUFlO1lBQ2YsS0FBSyxFQUFFLE1BQU07WUFDYixJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUMsQ0FBQztRQUVILE1BQU0sR0FBRyxPQUFPLEdBQUcsZUFBZSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUN4QixZQUFvQixFQUNwQixXQUFtQixFQUNuQixJQUFpQixFQUNDLEVBQUU7SUFDcEIsSUFBSSxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzdCLE9BQU87WUFDTCxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUs7WUFDekIsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWU7U0FDL0MsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbkIsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDakQsTUFBTSxtQkFBbUIsR0FBRyxZQUFZLEtBQUssSUFBSSxDQUFDO1FBRWxELElBQUksbUJBQW1CLEVBQUUsQ0FBQztZQUN4QixNQUFNLGVBQWUsR0FDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRSxPQUFPO2dCQUNMLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLGVBQWU7Z0JBQzNDLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRzthQUN4QixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5RCxDQUFDLENBQUM7QUFFRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUgeyBDb21tZW50LCBDb21tZW50TGluZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogQ2hlY2tzIGlzSnNkb2NDb21tZW50LlxuICogQHBhcmFtIGNvbW1lbnQgSW5wdXQgY29tbWVudCB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaXNKc2RvY0NvbW1lbnQoKTtcbiAqIGBgYFxuICovXG5jb25zdCBpc0pzZG9jQ29tbWVudCA9IChjb21tZW50OiBDb21tZW50KTogYm9vbGVhbiA9PlxuICBjb21tZW50LnR5cGUgPT09IFwiQmxvY2tcIiAmJiBjb21tZW50LnZhbHVlLnN0YXJ0c1dpdGgoXCIqXCIpO1xuXG4vKipcbiAqIEdldHMgZ2V0Q29tbWVudEVuZC5cbiAqIEBwYXJhbSBjb21tZW50IElucHV0IGNvbW1lbnQgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGdldENvbW1lbnRFbmQoKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRDb21tZW50RW5kID0gKGNvbW1lbnQ6IENvbW1lbnQpOiBudW1iZXIgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBjb21tZW50RW5kID0gY29tbWVudC5yYW5nZT8uWzFdO1xuXG4gIHJldHVybiB0eXBlb2YgY29tbWVudEVuZCA9PT0gXCJudW1iZXJcIiA/IGNvbW1lbnRFbmQgOiB2b2lkIDA7XG59O1xuXG4vKipcbiAqIEZpbmRzIHRoZSBjbG9zZXN0IEpTRG9jIGNvbW1lbnQgYmVmb3JlIGEgbm9kZS5cbiAqIEBwYXJhbSBjb21tZW50cyBDb21tZW50IGxpc3QgdG8gc2VhcmNoLlxuICogQHBhcmFtIG5vZGVTdGFydCBTdGFydCBvZmZzZXQgb2YgdGhlIG5vZGUuXG4gKiBAcmV0dXJucyBUaGUgY2xvc2VzdCBKU0RvYyBjb21tZW50IHdoZW4gcHJlc2VudC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjb21tZW50ID0gZmluZENsb3Nlc3RDb21tZW50KGNvbW1lbnRzLCBub2RlU3RhcnQpO1xuICogYGBgXG4gKi9cbmNvbnN0IGZpbmRDbG9zZXN0Q29tbWVudCA9IChcbiAgY29tbWVudHM6IENvbW1lbnRbXSxcbiAgbm9kZVN0YXJ0OiBudW1iZXIsXG4pOiBDb21tZW50IHwgdW5kZWZpbmVkID0+IHtcbiAgbGV0IGNsb3Nlc3Q6IENvbW1lbnQgfCB1bmRlZmluZWQgPSB2b2lkIDA7XG4gIGxldCBjbG9zZXN0RW5kID0gLTE7XG5cbiAgZm9yIChjb25zdCBjb21tZW50IG9mIGNvbW1lbnRzKSB7XG4gICAgY29uc3QgY29tbWVudEVuZCA9IGdldENvbW1lbnRFbmQoY29tbWVudCk7XG4gICAgY29uc3Qgc2hvdWxkQ29uc2lkZXIgPSBpc0pzZG9jQ29tbWVudChjb21tZW50KSAmJiBjb21tZW50RW5kICE9PSB2b2lkIDA7XG5cbiAgICBpZiAoc2hvdWxkQ29uc2lkZXIgJiYgY29tbWVudEVuZCA8PSBub2RlU3RhcnQgJiYgY29tbWVudEVuZCA+IGNsb3Nlc3RFbmQpIHtcbiAgICAgIGNsb3Nlc3QgPSBjb21tZW50O1xuICAgICAgY2xvc2VzdEVuZCA9IGNvbW1lbnRFbmQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNsb3Nlc3Q7XG59O1xuXG4vKipcbiAqIEdldHMgdGhlIGNsb3Nlc3QgSlNEb2MgY29tbWVudCBmb3IgYSBub2RlLlxuICogQHBhcmFtIHNvdXJjZUNvZGUgU291cmNlIGNvZGUgd3JhcHBlci5cbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFRoZSBjbG9zZXN0IEpTRG9jIGNvbW1lbnQgd2hlbiBwcmVzZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGNvbW1lbnQgPSBnZXRKc2RvY0NvbW1lbnQoc291cmNlQ29kZSwgbm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0SnNkb2NDb21tZW50ID0gKFxuICBzb3VyY2VDb2RlOiBSdWxlLlJ1bGVDb250ZXh0W1wic291cmNlQ29kZVwiXSxcbiAgbm9kZTogUnVsZS5Ob2RlLFxuKTogQ29tbWVudCB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGNvbW1lbnRzID0gc291cmNlQ29kZS5nZXRBbGxDb21tZW50cygpO1xuICBjb25zdCBub2RlU3RhcnQgPSBub2RlLnJhbmdlPy5bMF07XG5cbiAgaWYgKGNvbW1lbnRzLmxlbmd0aCA9PT0gMCB8fCB0eXBlb2Ygbm9kZVN0YXJ0ICE9PSBcIm51bWJlclwiKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IGNvbW1lbnQgPSBmaW5kQ2xvc2VzdENvbW1lbnQoY29tbWVudHMsIG5vZGVTdGFydCk7XG5cbiAgaWYgKGNvbW1lbnQgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCBjb21tZW50RW5kID0gY29tbWVudC5yYW5nZT8uWzFdO1xuXG4gIGlmICh0eXBlb2YgY29tbWVudEVuZCAhPT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCBiZXR3ZWVuQ29tbWVudEFuZE5vZGUgPSBzb3VyY2VDb2RlLnRleHQuc2xpY2UoY29tbWVudEVuZCwgbm9kZVN0YXJ0KTtcblxuICByZXR1cm4gYmV0d2VlbkNvbW1lbnRBbmROb2RlLnRyaW0oKS5sZW5ndGggPT09IDAgPyBjb21tZW50IDogdm9pZCAwO1xufTtcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgZnVsbCB0ZXh0IGZvciBhIGNvbW1lbnQgcmFuZ2UuXG4gKiBAcGFyYW0gc291cmNlQ29kZSBTb3VyY2UgY29kZSB3cmFwcGVyLlxuICogQHBhcmFtIGNvbW1lbnQgQ29tbWVudCB0byByZWFkLlxuICogQHJldHVybnMgQ29tbWVudCBjb250ZW50cyBmcm9tIHRoZSBzb3VyY2UuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdGV4dCA9IGdldENvbW1lbnRUZXh0KHNvdXJjZUNvZGUsIGNvbW1lbnQpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldENvbW1lbnRUZXh0ID0gKFxuICBzb3VyY2VDb2RlOiBSdWxlLlJ1bGVDb250ZXh0W1wic291cmNlQ29kZVwiXSxcbiAgY29tbWVudDogQ29tbWVudCxcbik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHN0YXJ0ID0gY29tbWVudC5yYW5nZT8uWzBdO1xuICBjb25zdCBlbmQgPSBjb21tZW50LnJhbmdlPy5bMV07XG5cbiAgaWYgKHR5cGVvZiBzdGFydCAhPT0gXCJudW1iZXJcIiB8fCB0eXBlb2YgZW5kICE9PSBcIm51bWJlclwiKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICByZXR1cm4gc291cmNlQ29kZS50ZXh0LnNsaWNlKHN0YXJ0LCBlbmQpO1xufTtcblxuLyoqXG4gKiBHZXRzIGdldENvbW1lbnRMaW5lcy5cbiAqIEBwYXJhbSBjb21tZW50VGV4dCBJbnB1dCBjb21tZW50VGV4dCB2YWx1ZS5cbiAqIEByZXR1cm5zIFJldHVybiB2YWx1ZSBvdXRwdXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZ2V0Q29tbWVudExpbmVzKCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0Q29tbWVudExpbmVzID0gKGNvbW1lbnRUZXh0OiBzdHJpbmcpOiBDb21tZW50TGluZVtdID0+IHtcbiAgY29uc3QgbGluZXMgPSBjb21tZW50VGV4dC5zcGxpdCgvXFxyP1xcbi91KTtcbiAgY29uc3QgcmVzdWx0czogQ29tbWVudExpbmVbXSA9IFtdO1xuICBsZXQgb2Zmc2V0ID0gMDtcblxuICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICBjb25zdCBsaW5lRW5kID0gb2Zmc2V0ICsgbGluZS5sZW5ndGg7XG4gICAgY29uc3QgbmV4dFNsaWNlID0gY29tbWVudFRleHQuc2xpY2UobGluZUVuZCwgbGluZUVuZCArIDIpO1xuICAgIGNvbnN0IGxpbmVCcmVha0xlbmd0aCA9IG5leHRTbGljZS5zdGFydHNXaXRoKFwiXFxyXFxuXCIpXG4gICAgICA/IDJcbiAgICAgIDogbmV4dFNsaWNlLnN0YXJ0c1dpdGgoXCJcXG5cIilcbiAgICAgICAgPyAxXG4gICAgICAgIDogMDtcblxuICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICBlbmQ6IGxpbmVFbmQsXG4gICAgICBsaW5lQnJlYWtMZW5ndGgsXG4gICAgICBzdGFydDogb2Zmc2V0LFxuICAgICAgdGV4dDogbGluZSxcbiAgICB9KTtcblxuICAgIG9mZnNldCA9IGxpbmVFbmQgKyBsaW5lQnJlYWtMZW5ndGg7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0cztcbn07XG5cbi8qKlxuICogQnVpbGRzIGEgcmVtb3ZhbCByYW5nZSBmb3IgdGhlIHNwZWNpZmllZCBjb21tZW50IGxpbmUuXG4gKiBAcGFyYW0gY29tbWVudFN0YXJ0IENvbW1lbnQgc3RhcnQgb2Zmc2V0IGluIHRoZSBzb3VyY2UuXG4gKiBAcGFyYW0gY29tbWVudFRleHQgRnVsbCBjb21tZW50IHRleHQuXG4gKiBAcGFyYW0gbGluZSBMaW5lIG1ldGFkYXRhIGZvciB0aGUgY29tbWVudC5cbiAqIEByZXR1cm5zIFRoZSByYW5nZSB0byByZW1vdmUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmFuZ2UgPSBidWlsZFJlbW92YWxSYW5nZSgwLCBjb21tZW50VGV4dCwgbGluZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgYnVpbGRSZW1vdmFsUmFuZ2UgPSAoXG4gIGNvbW1lbnRTdGFydDogbnVtYmVyLFxuICBjb21tZW50VGV4dDogc3RyaW5nLFxuICBsaW5lOiBDb21tZW50TGluZSxcbik6IFtudW1iZXIsIG51bWJlcl0gPT4ge1xuICBpZiAobGluZS5saW5lQnJlYWtMZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIGNvbW1lbnRTdGFydCArIGxpbmUuc3RhcnQsXG4gICAgICBjb21tZW50U3RhcnQgKyBsaW5lLmVuZCArIGxpbmUubGluZUJyZWFrTGVuZ3RoLFxuICAgIF07XG4gIH1cblxuICBpZiAobGluZS5zdGFydCA+IDApIHtcbiAgICBjb25zdCBwcmV2aW91c0NoYXIgPSBjb21tZW50VGV4dFtsaW5lLnN0YXJ0IC0gMV07XG4gICAgY29uc3QgcHJldmlvdXNJc0xpbmVCcmVhayA9IHByZXZpb3VzQ2hhciA9PT0gXCJcXG5cIjtcblxuICAgIGlmIChwcmV2aW91c0lzTGluZUJyZWFrKSB7XG4gICAgICBjb25zdCBsaW5lQnJlYWtMZW5ndGggPVxuICAgICAgICBsaW5lLnN0YXJ0ID4gMSAmJiBjb21tZW50VGV4dFtsaW5lLnN0YXJ0IC0gMl0gPT09IFwiXFxyXCIgPyAyIDogMTtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIGNvbW1lbnRTdGFydCArIGxpbmUuc3RhcnQgLSBsaW5lQnJlYWtMZW5ndGgsXG4gICAgICAgIGNvbW1lbnRTdGFydCArIGxpbmUuZW5kLFxuICAgICAgXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gW2NvbW1lbnRTdGFydCArIGxpbmUuc3RhcnQsIGNvbW1lbnRTdGFydCArIGxpbmUuZW5kXTtcbn07XG5cbmV4cG9ydCB7IGJ1aWxkUmVtb3ZhbFJhbmdlLCBnZXRDb21tZW50TGluZXMsIGdldENvbW1lbnRUZXh0LCBnZXRKc2RvY0NvbW1lbnQgfTtcbiJdfQ==
92
+ export { getCommentText, getJsdocComment };
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC11dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2RvY3Mvbm8taW50ZXJmYWNlLW1lbWJlci1kb2NzL2NvbW1lbnQtdXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFnQixFQUFXLEVBQUUsQ0FDbkQsT0FBTyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFNUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQWdCLEVBQXNCLEVBQUU7SUFDN0QsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXRDLE9BQU8sT0FBTyxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlELENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sa0JBQWtCLEdBQUcsQ0FDekIsUUFBbUIsRUFDbkIsU0FBaUIsRUFDSSxFQUFFO0lBQ3ZCLElBQUksT0FBTyxHQUF3QixLQUFLLENBQUMsQ0FBQztJQUMxQyxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUVwQixLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQy9CLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxNQUFNLGNBQWMsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksVUFBVSxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBRXhFLElBQUksY0FBYyxJQUFJLFVBQVUsSUFBSSxTQUFTLElBQUksVUFBVSxHQUFHLFVBQVUsRUFBRSxDQUFDO1lBQ3pFLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFDbEIsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sZUFBZSxHQUFHLENBQ3RCLFVBQTBDLEVBQzFDLElBQWUsRUFDTSxFQUFFO0lBQ3ZCLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM3QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFbEMsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMzRCxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFeEQsSUFBSSxPQUFPLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN2QixPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFdEMsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuQyxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLHFCQUFxQixHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUUzRSxPQUFPLHFCQUFxQixDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdEUsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsQ0FDckIsVUFBMEMsRUFDMUMsT0FBZ0IsRUFDUixFQUFFO0lBQ1YsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUvQixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN6RCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFFRixPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbW1lbnQgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIENoZWNrcyBpc0pzZG9jQ29tbWVudC5cbiAqIEBwYXJhbSBjb21tZW50IElucHV0IGNvbW1lbnQgdmFsdWUuXG4gKiBAcmV0dXJucyBSZXR1cm4gdmFsdWUgb3V0cHV0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGlzSnNkb2NDb21tZW50KCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgaXNKc2RvY0NvbW1lbnQgPSAoY29tbWVudDogQ29tbWVudCk6IGJvb2xlYW4gPT5cbiAgY29tbWVudC50eXBlID09PSBcIkJsb2NrXCIgJiYgY29tbWVudC52YWx1ZS5zdGFydHNXaXRoKFwiKlwiKTtcblxuLyoqXG4gKiBHZXRzIGdldENvbW1lbnRFbmQuXG4gKiBAcGFyYW0gY29tbWVudCBJbnB1dCBjb21tZW50IHZhbHVlLlxuICogQHJldHVybnMgUmV0dXJuIHZhbHVlIG91dHB1dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBnZXRDb21tZW50RW5kKCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0Q29tbWVudEVuZCA9IChjb21tZW50OiBDb21tZW50KTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgY29tbWVudEVuZCA9IGNvbW1lbnQucmFuZ2U/LlsxXTtcblxuICByZXR1cm4gdHlwZW9mIGNvbW1lbnRFbmQgPT09IFwibnVtYmVyXCIgPyBjb21tZW50RW5kIDogdm9pZCAwO1xufTtcblxuLyoqXG4gKiBGaW5kcyB0aGUgY2xvc2VzdCBKU0RvYyBjb21tZW50IGJlZm9yZSBhIG5vZGUuXG4gKiBAcGFyYW0gY29tbWVudHMgQ29tbWVudCBsaXN0IHRvIHNlYXJjaC5cbiAqIEBwYXJhbSBub2RlU3RhcnQgU3RhcnQgb2Zmc2V0IG9mIHRoZSBub2RlLlxuICogQHJldHVybnMgVGhlIGNsb3Nlc3QgSlNEb2MgY29tbWVudCB3aGVuIHByZXNlbnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgY29tbWVudCA9IGZpbmRDbG9zZXN0Q29tbWVudChjb21tZW50cywgbm9kZVN0YXJ0KTtcbiAqIGBgYFxuICovXG5jb25zdCBmaW5kQ2xvc2VzdENvbW1lbnQgPSAoXG4gIGNvbW1lbnRzOiBDb21tZW50W10sXG4gIG5vZGVTdGFydDogbnVtYmVyLFxuKTogQ29tbWVudCB8IHVuZGVmaW5lZCA9PiB7XG4gIGxldCBjbG9zZXN0OiBDb21tZW50IHwgdW5kZWZpbmVkID0gdm9pZCAwO1xuICBsZXQgY2xvc2VzdEVuZCA9IC0xO1xuXG4gIGZvciAoY29uc3QgY29tbWVudCBvZiBjb21tZW50cykge1xuICAgIGNvbnN0IGNvbW1lbnRFbmQgPSBnZXRDb21tZW50RW5kKGNvbW1lbnQpO1xuICAgIGNvbnN0IHNob3VsZENvbnNpZGVyID0gaXNKc2RvY0NvbW1lbnQoY29tbWVudCkgJiYgY29tbWVudEVuZCAhPT0gdm9pZCAwO1xuXG4gICAgaWYgKHNob3VsZENvbnNpZGVyICYmIGNvbW1lbnRFbmQgPD0gbm9kZVN0YXJ0ICYmIGNvbW1lbnRFbmQgPiBjbG9zZXN0RW5kKSB7XG4gICAgICBjbG9zZXN0ID0gY29tbWVudDtcbiAgICAgIGNsb3Nlc3RFbmQgPSBjb21tZW50RW5kO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjbG9zZXN0O1xufTtcblxuLyoqXG4gKiBHZXRzIHRoZSBjbG9zZXN0IEpTRG9jIGNvbW1lbnQgZm9yIGEgbm9kZS5cbiAqIEBwYXJhbSBzb3VyY2VDb2RlIFNvdXJjZSBjb2RlIHdyYXBwZXIuXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBUaGUgY2xvc2VzdCBKU0RvYyBjb21tZW50IHdoZW4gcHJlc2VudC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjb21tZW50ID0gZ2V0SnNkb2NDb21tZW50KHNvdXJjZUNvZGUsIG5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldEpzZG9jQ29tbWVudCA9IChcbiAgc291cmNlQ29kZTogUnVsZS5SdWxlQ29udGV4dFtcInNvdXJjZUNvZGVcIl0sXG4gIG5vZGU6IFJ1bGUuTm9kZSxcbik6IENvbW1lbnQgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBjb21tZW50cyA9IHNvdXJjZUNvZGUuZ2V0QWxsQ29tbWVudHMoKTtcbiAgY29uc3Qgbm9kZVN0YXJ0ID0gbm9kZS5yYW5nZT8uWzBdO1xuXG4gIGlmICh0eXBlb2Ygbm9kZVN0YXJ0ICE9PSBcIm51bWJlclwiIHx8IGNvbW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCBjb21tZW50ID0gZmluZENsb3Nlc3RDb21tZW50KGNvbW1lbnRzLCBub2RlU3RhcnQpO1xuXG4gIGlmIChjb21tZW50ID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgY29tbWVudEVuZCA9IGNvbW1lbnQucmFuZ2U/LlsxXTtcblxuICBpZiAodHlwZW9mIGNvbW1lbnRFbmQgIT09IFwibnVtYmVyXCIpIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgYmV0d2VlbkNvbW1lbnRBbmROb2RlID0gc291cmNlQ29kZS50ZXh0LnNsaWNlKGNvbW1lbnRFbmQsIG5vZGVTdGFydCk7XG5cbiAgcmV0dXJuIGJldHdlZW5Db21tZW50QW5kTm9kZS50cmltKCkubGVuZ3RoID09PSAwID8gY29tbWVudCA6IHZvaWQgMDtcbn07XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIGZ1bGwgdGV4dCBmb3IgYSBjb21tZW50IHJhbmdlLlxuICogQHBhcmFtIHNvdXJjZUNvZGUgU291cmNlIGNvZGUgd3JhcHBlci5cbiAqIEBwYXJhbSBjb21tZW50IENvbW1lbnQgdG8gcmVhZC5cbiAqIEByZXR1cm5zIENvbW1lbnQgY29udGVudHMgZnJvbSB0aGUgc291cmNlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHRleHQgPSBnZXRDb21tZW50VGV4dChzb3VyY2VDb2RlLCBjb21tZW50KTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRDb21tZW50VGV4dCA9IChcbiAgc291cmNlQ29kZTogUnVsZS5SdWxlQ29udGV4dFtcInNvdXJjZUNvZGVcIl0sXG4gIGNvbW1lbnQ6IENvbW1lbnQsXG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBzdGFydCA9IGNvbW1lbnQucmFuZ2U/LlswXTtcbiAgY29uc3QgZW5kID0gY29tbWVudC5yYW5nZT8uWzFdO1xuXG4gIGlmICh0eXBlb2Ygc3RhcnQgIT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIGVuZCAhPT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcmV0dXJuIHNvdXJjZUNvZGUudGV4dC5zbGljZShzdGFydCwgZW5kKTtcbn07XG5cbmV4cG9ydCB7IGdldENvbW1lbnRUZXh0LCBnZXRKc2RvY0NvbW1lbnQgfTtcbiJdfQ==