@codeperfect/eslint-plugin 2.5.0 → 2.7.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 (82) hide show
  1. package/README.md +3 -0
  2. package/dist/application/custom-rules.d.ts +3 -0
  3. package/dist/application/custom-rules.d.ts.map +1 -1
  4. package/dist/application/custom-rules.js +6 -2
  5. package/dist/application/index.d.ts +1 -1
  6. package/dist/application/index.d.ts.map +1 -1
  7. package/dist/application/index.js +2 -2
  8. package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
  9. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts +1 -11
  10. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +1 -1
  11. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.js +3 -13
  12. package/dist/domain/architecture/consistent-barrel-files/index.d.ts +0 -1
  13. package/dist/domain/architecture/consistent-barrel-files/index.d.ts.map +1 -1
  14. package/dist/domain/architecture/consistent-barrel-files/index.js +1 -2
  15. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +1 -1
  16. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +2 -12
  17. package/dist/domain/architecture/consistent-barrel-files/rule.d.ts.map +1 -1
  18. package/dist/domain/architecture/consistent-barrel-files/rule.js +4 -3
  19. package/dist/domain/architecture/index.d.ts +2 -1
  20. package/dist/domain/architecture/index.d.ts.map +1 -1
  21. package/dist/domain/architecture/index.js +3 -2
  22. package/dist/domain/architecture/no-import-export-extensions/index.d.ts +2 -0
  23. package/dist/domain/architecture/no-import-export-extensions/index.d.ts.map +1 -0
  24. package/dist/domain/architecture/no-import-export-extensions/index.js +2 -0
  25. package/dist/domain/architecture/no-import-export-extensions/no-import-export-extensions-rule.d.ts.map +1 -0
  26. package/dist/domain/architecture/no-import-export-extensions/no-import-export-extensions-rule.js +178 -0
  27. package/dist/domain/architecture/no-unused-exports/rule.js +4 -2
  28. package/dist/domain/core/index.d.ts +1 -0
  29. package/dist/domain/core/index.d.ts.map +1 -1
  30. package/dist/domain/core/index.js +2 -1
  31. package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -1
  32. package/dist/domain/core/no-multiple-declarators/rule.js +6 -1
  33. package/dist/domain/core/no-useless-delegation/index.d.ts +2 -0
  34. package/dist/domain/core/no-useless-delegation/index.d.ts.map +1 -0
  35. package/dist/domain/core/no-useless-delegation/index.js +2 -0
  36. package/dist/domain/core/no-useless-delegation/rule.d.ts +5 -0
  37. package/dist/domain/core/no-useless-delegation/rule.d.ts.map +1 -0
  38. package/dist/domain/core/no-useless-delegation/rule.js +204 -0
  39. package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -1
  40. package/dist/domain/docs/no-interface-member-docs/rule.js +6 -2
  41. package/dist/domain/docs/require-example-language/reporting.d.ts.map +1 -1
  42. package/dist/domain/docs/require-example-language/reporting.js +38 -3
  43. package/dist/domain/docs/require-example-language/rule.d.ts.map +1 -1
  44. package/dist/domain/docs/require-example-language/rule.js +6 -1
  45. package/dist/domain/docs/single-line-jsdoc/rule.d.ts.map +1 -1
  46. package/dist/domain/docs/single-line-jsdoc/rule.js +5 -3
  47. package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +1 -1
  48. package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +4 -2
  49. package/dist/domain/index.d.ts +1 -1
  50. package/dist/domain/index.d.ts.map +1 -1
  51. package/dist/domain/index.js +2 -2
  52. package/dist/domain/testing/aaa/index.d.ts +1 -1
  53. package/dist/domain/testing/aaa/index.d.ts.map +1 -1
  54. package/dist/domain/testing/aaa/index.js +1 -1
  55. package/dist/domain/testing/aaa/types.d.ts +7 -9
  56. package/dist/domain/testing/aaa/types.d.ts.map +1 -1
  57. package/dist/domain/testing/aaa/types.js +1 -1
  58. package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts.map +1 -1
  59. package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.js +2 -18
  60. package/dist/domain/testing/enforce-aaa-structure/rule-section-reporting.d.ts.map +1 -1
  61. package/dist/domain/testing/enforce-aaa-structure/rule-section-reporting.js +49 -58
  62. package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -1
  63. package/dist/domain/testing/enforce-aaa-structure/rule.js +4 -1
  64. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule.d.ts.map +1 -1
  65. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule.js +10 -4
  66. package/dist/domain/testing/prefer-vi-mocked-import/rule.d.ts.map +1 -1
  67. package/dist/domain/testing/prefer-vi-mocked-import/rule.js +10 -4
  68. package/dist/index.d.ts +1 -1
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +2 -2
  71. package/dist/infrastructure/codeperfect-plugin.d.ts +2 -0
  72. package/dist/infrastructure/codeperfect-plugin.d.ts.map +1 -1
  73. package/dist/infrastructure/codeperfect-plugin.js +3 -2
  74. package/dist/infrastructure/presets.d.ts.map +1 -1
  75. package/dist/infrastructure/presets.js +3 -1
  76. package/package.json +43 -49
  77. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.d.ts.map +0 -1
  78. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.js +0 -134
  79. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts +0 -49
  80. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts.map +0 -1
  81. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.js +0 -49
  82. /package/dist/domain/architecture/{consistent-barrel-files → no-import-export-extensions}/no-import-export-extensions-rule.d.ts +0 -0
@@ -1,6 +1,8 @@
1
1
  import path from "node:path";
2
+ import { collectExportedElements } from "./no-unused-exports-declaration-utilities.js";
3
+ import { getTypeScriptProgram } from "./no-unused-exports-identifier-utilities.js";
2
4
  import { DEFAULT_PUBLIC_API_FILES, DEFAULT_TEST_FILE_PATTERNS, getOptions, isLintableFilename, isPublicApiFile, } from "./no-unused-exports-options.js";
3
- import { classifyExportUsage, collectCrossFileUsages, collectExportedElements, getTypeScriptProgram, } from "./no-unused-exports-utilities.js";
5
+ import { classifyExportUsage, collectCrossFileUsages, } from "./no-unused-exports-usage-utilities.js";
4
6
  /** ESLint rule flagging exports unused in production code. */
5
7
  const noUnusedExportsRule = {
6
8
  create(context) {
@@ -79,4 +81,4 @@ const noUnusedExportsRule = {
79
81
  },
80
82
  };
81
83
  export { noUnusedExportsRule };
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vYXJjaGl0ZWN0dXJlL25vLXVudXNlZC1leHBvcnRzL3J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBRTdCLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsMEJBQTBCLEVBQzFCLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsZUFBZSxHQUNoQixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QixvQkFBb0IsR0FDckIsTUFBTSwrQkFBK0IsQ0FBQztBQUV2Qyw4REFBOEQ7QUFDOUQsTUFBTSxtQkFBbUIsR0FBb0I7SUFDM0MsTUFBTSxDQUFDLE9BQXlCO1FBQzlCLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUVsQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU5QyxJQUFJLE9BQU8sS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztRQUVoRSxJQUFJLGVBQWUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDbEQsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsT0FBTztZQUNMLE9BQU8sQ0FBQyxJQUFJO2dCQUNWLE1BQU0sZ0JBQWdCLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUU1RCxJQUFJLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDbEMsT0FBTztnQkFDVCxDQUFDO2dCQUVELEtBQUssTUFBTSxPQUFPLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztvQkFDdkMsTUFBTSxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FDN0Msc0JBQXNCLENBQ3BCLE9BQU8sRUFDUCxRQUFRLEVBQ1IsS0FBSyxFQUNMLFdBQVcsRUFDWCxPQUFPLENBQ1IsQ0FDRixDQUFDO29CQUVGLElBQUksbUJBQW1CLEtBQUssWUFBWSxFQUFFLENBQUM7d0JBQ3pDLFNBQVM7b0JBQ1gsQ0FBQztvQkFFRCxPQUFPLENBQUMsTUFBTSxDQUFDO3dCQUNiLElBQUksRUFBRSxFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWSxFQUFFO3dCQUM1QyxTQUFTLEVBQ1AsbUJBQW1CLEtBQUssV0FBVzs0QkFDakMsQ0FBQyxDQUFDLGlCQUFpQjs0QkFDbkIsQ0FBQyxDQUFDLGNBQWM7d0JBQ3BCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtxQkFDbkIsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLEVBQUU7UUFDSixjQUFjLEVBQUU7WUFDZDtnQkFDRSxjQUFjLEVBQUUsQ0FBQyxHQUFHLHdCQUF3QixDQUFDO2dCQUM3QyxnQkFBZ0IsRUFBRSxDQUFDLEdBQUcsMEJBQTBCLENBQUM7YUFDbEQ7U0FDRjtRQUNELElBQUksRUFBRTtZQUNKLFdBQVcsRUFDVCxrRUFBa0U7WUFDcEUsV0FBVyxFQUFFLEtBQUs7WUFDbEIsR0FBRyxFQUFFLG9GQUFvRjtTQUMxRjtRQUNELFFBQVEsRUFBRTtZQUNSLFlBQVksRUFDVixpSEFBaUg7WUFDbkgsZUFBZSxFQUNiLGdIQUFnSDtTQUNuSDtRQUNELE1BQU0sRUFBRTtZQUNOO2dCQUNFLG9CQUFvQixFQUFFLEtBQUs7Z0JBQzNCLFVBQVUsRUFBRTtvQkFDVixjQUFjLEVBQUU7d0JBQ2QsV0FBVyxFQUFFLG9EQUFvRDt3QkFDakUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTt3QkFDekIsUUFBUSxFQUFFLENBQUM7d0JBQ1gsSUFBSSxFQUFFLE9BQU87cUJBQ2Q7b0JBQ0QsZ0JBQWdCLEVBQUU7d0JBQ2hCLFdBQVcsRUFDVCxnRUFBZ0U7d0JBQ2xFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7d0JBQ3pCLFFBQVEsRUFBRSxDQUFDO3dCQUNYLElBQUksRUFBRSxPQUFPO3FCQUNkO2lCQUNGO2dCQUNELElBQUksRUFBRSxRQUFRO2FBQ2Y7U0FDRjtRQUNELElBQUksRUFBRSxTQUFTO0tBQ2hCO0NBQ0YsQ0FBQztBQUVGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5cbmltcG9ydCB7XG4gIERFRkFVTFRfUFVCTElDX0FQSV9GSUxFUyxcbiAgREVGQVVMVF9URVNUX0ZJTEVfUEFUVEVSTlMsXG4gIGdldE9wdGlvbnMsXG4gIGlzTGludGFibGVGaWxlbmFtZSxcbiAgaXNQdWJsaWNBcGlGaWxlLFxufSBmcm9tIFwiLi9uby11bnVzZWQtZXhwb3J0cy1vcHRpb25zXCI7XG5pbXBvcnQge1xuICBjbGFzc2lmeUV4cG9ydFVzYWdlLFxuICBjb2xsZWN0Q3Jvc3NGaWxlVXNhZ2VzLFxuICBjb2xsZWN0RXhwb3J0ZWRFbGVtZW50cyxcbiAgZ2V0VHlwZVNjcmlwdFByb2dyYW0sXG59IGZyb20gXCIuL25vLXVudXNlZC1leHBvcnRzLXV0aWxpdGllc1wiO1xuXG4vKiogRVNMaW50IHJ1bGUgZmxhZ2dpbmcgZXhwb3J0cyB1bnVzZWQgaW4gcHJvZHVjdGlvbiBjb2RlLiAqL1xuY29uc3Qgbm9VbnVzZWRFeHBvcnRzUnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFJ1bGUuUnVsZUxpc3RlbmVyIHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldE9wdGlvbnMoY29udGV4dC5vcHRpb25zKTtcbiAgICBjb25zdCBmaWxlbmFtZSA9IGNvbnRleHQuZmlsZW5hbWU7XG5cbiAgICBpZiAoIWlzTGludGFibGVGaWxlbmFtZShmaWxlbmFtZSkpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9ncmFtID0gZ2V0VHlwZVNjcmlwdFByb2dyYW0oY29udGV4dCk7XG5cbiAgICBpZiAocHJvZ3JhbSA9PT0gdm9pZCAwKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgY29uc3QgcHJvamVjdFJvb3QgPSBwYXRoLnJlc29sdmUocHJvZ3JhbS5nZXRDdXJyZW50RGlyZWN0b3J5KCkpO1xuXG4gICAgaWYgKGlzUHVibGljQXBpRmlsZShmaWxlbmFtZSwgc3RhdGUsIHByb2plY3RSb290KSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBQcm9ncmFtKG5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXhwb3J0ZWRFbGVtZW50cyA9IGNvbGxlY3RFeHBvcnRlZEVsZW1lbnRzKG5vZGUuYm9keSk7XG5cbiAgICAgICAgaWYgKGV4cG9ydGVkRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGV4cG9ydGVkRWxlbWVudHMpIHtcbiAgICAgICAgICBjb25zdCB1c2FnZUNsYXNzaWZpY2F0aW9uID0gY2xhc3NpZnlFeHBvcnRVc2FnZShcbiAgICAgICAgICAgIGNvbGxlY3RDcm9zc0ZpbGVVc2FnZXMoXG4gICAgICAgICAgICAgIHByb2dyYW0sXG4gICAgICAgICAgICAgIGZpbGVuYW1lLFxuICAgICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgICAgcHJvamVjdFJvb3QsXG4gICAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAodXNhZ2VDbGFzc2lmaWNhdGlvbiA9PT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIGRhdGE6IHsgZXhwb3J0ZWROYW1lOiBlbGVtZW50LmV4cG9ydGVkTmFtZSB9LFxuICAgICAgICAgICAgbWVzc2FnZUlkOlxuICAgICAgICAgICAgICB1c2FnZUNsYXNzaWZpY2F0aW9uID09PSBcInRlc3Qtb25seVwiXG4gICAgICAgICAgICAgICAgPyBcInVzZWRPbmx5SW5UZXN0c1wiXG4gICAgICAgICAgICAgICAgOiBcInVudXNlZEV4cG9ydFwiLFxuICAgICAgICAgICAgbm9kZTogZWxlbWVudC5ub2RlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH07XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkZWZhdWx0T3B0aW9uczogW1xuICAgICAge1xuICAgICAgICBwdWJsaWNBcGlGaWxlczogWy4uLkRFRkFVTFRfUFVCTElDX0FQSV9GSUxFU10sXG4gICAgICAgIHRlc3RGaWxlUGF0dGVybnM6IFsuLi5ERUZBVUxUX1RFU1RfRklMRV9QQVRURVJOU10sXG4gICAgICB9LFxuICAgIF0sXG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiRGlzYWxsb3cgZXhwb3J0cyB0aGF0IGFyZSB1bnVzZWQgb3IgY29uc3VtZWQgb25seSBieSB0ZXN0IGZpbGVzLlwiLFxuICAgICAgcmVjb21tZW5kZWQ6IGZhbHNlLFxuICAgICAgdXJsOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9wYXJsb3RpL2VzbGludC1wbHVnaW4vYmxvYi9tYWluL2RvY3MvcnVsZXMvbm8tdW51c2VkLWV4cG9ydHMubWRcIixcbiAgICB9LFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICB1bnVzZWRFeHBvcnQ6XG4gICAgICAgIFwiRXhwb3J0ICd7e2V4cG9ydGVkTmFtZX19JyBpcyBuZXZlciBjb25zdW1lZCBieSBhbnkgZmlsZSBpbiB0aGUgcHJvamVjdDsgbWFrZSBpdCBwcml2YXRlIGJ5IHJlbW92aW5nIHRoZSBleHBvcnQuXCIsXG4gICAgICB1c2VkT25seUluVGVzdHM6XG4gICAgICAgIFwiRXhwb3J0ICd7e2V4cG9ydGVkTmFtZX19JyBpcyBjb25zdW1lZCBvbmx5IGJ5IHRlc3QgZmlsZXM7IG1vdmUgaXQgdG8gdGhlIHRlc3QgZmlsZSBvciBhIHRlc3QgdXRpbGl0aWVzIGZvbGRlci5cIixcbiAgICB9LFxuICAgIHNjaGVtYTogW1xuICAgICAge1xuICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBwdWJsaWNBcGlGaWxlczoge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiRmlsZSBnbG9icyB0aGF0IGRlZmluZSBwdWJsaWMgQVBJIGV4cG9ydCBzdXJmYWNlcy5cIixcbiAgICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgIG1pbkl0ZW1zOiAxLFxuICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGVzdEZpbGVQYXR0ZXJuczoge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgIFwiRmlsZSBnbG9icyB0cmVhdGVkIGFzIHRlc3RzIHdoZW4gY2xhc3NpZnlpbmcgZXhwb3J0IGNvbnN1bWVycy5cIixcbiAgICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgIG1pbkl0ZW1zOiAxLFxuICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgdHlwZTogXCJwcm9ibGVtXCIsXG4gIH0sXG59O1xuXG5leHBvcnQgeyBub1VudXNlZEV4cG9ydHNSdWxlIH07XG4iXX0=
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vYXJjaGl0ZWN0dXJlL25vLXVudXNlZC1leHBvcnRzL3J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBRTdCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hGLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsMEJBQTBCLEVBQzFCLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsZUFBZSxHQUNoQixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsc0JBQXNCLEdBQ3ZCLE1BQU0scUNBQXFDLENBQUM7QUFFN0MsOERBQThEO0FBQzlELE1BQU0sbUJBQW1CLEdBQW9CO0lBQzNDLE1BQU0sQ0FBQyxPQUF5QjtRQUM5QixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFFbEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDbEMsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFOUMsSUFBSSxPQUFPLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2QixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7UUFFaEUsSUFBSSxlQUFlLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ2xELE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELE9BQU87WUFDTCxPQUFPLENBQUMsSUFBSTtnQkFDVixNQUFNLGdCQUFnQixHQUFHLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFNUQsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ2xDLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxLQUFLLE1BQU0sT0FBTyxJQUFJLGdCQUFnQixFQUFFLENBQUM7b0JBQ3ZDLE1BQU0sbUJBQW1CLEdBQUcsbUJBQW1CLENBQzdDLHNCQUFzQixDQUNwQixPQUFPLEVBQ1AsUUFBUSxFQUNSLEtBQUssRUFDTCxXQUFXLEVBQ1gsT0FBTyxDQUNSLENBQ0YsQ0FBQztvQkFFRixJQUFJLG1CQUFtQixLQUFLLFlBQVksRUFBRSxDQUFDO3dCQUN6QyxTQUFTO29CQUNYLENBQUM7b0JBRUQsT0FBTyxDQUFDLE1BQU0sQ0FBQzt3QkFDYixJQUFJLEVBQUUsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVksRUFBRTt3QkFDNUMsU0FBUyxFQUNQLG1CQUFtQixLQUFLLFdBQVc7NEJBQ2pDLENBQUMsQ0FBQyxpQkFBaUI7NEJBQ25CLENBQUMsQ0FBQyxjQUFjO3dCQUNwQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7cUJBQ25CLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxFQUFFO1FBQ0osY0FBYyxFQUFFO1lBQ2Q7Z0JBQ0UsY0FBYyxFQUFFLENBQUMsR0FBRyx3QkFBd0IsQ0FBQztnQkFDN0MsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFHLDBCQUEwQixDQUFDO2FBQ2xEO1NBQ0Y7UUFDRCxJQUFJLEVBQUU7WUFDSixXQUFXLEVBQ1Qsa0VBQWtFO1lBQ3BFLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLEdBQUcsRUFBRSxvRkFBb0Y7U0FDMUY7UUFDRCxRQUFRLEVBQUU7WUFDUixZQUFZLEVBQ1YsaUhBQWlIO1lBQ25ILGVBQWUsRUFDYixnSEFBZ0g7U0FDbkg7UUFDRCxNQUFNLEVBQUU7WUFDTjtnQkFDRSxvQkFBb0IsRUFBRSxLQUFLO2dCQUMzQixVQUFVLEVBQUU7b0JBQ1YsY0FBYyxFQUFFO3dCQUNkLFdBQVcsRUFBRSxvREFBb0Q7d0JBQ2pFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7d0JBQ3pCLFFBQVEsRUFBRSxDQUFDO3dCQUNYLElBQUksRUFBRSxPQUFPO3FCQUNkO29CQUNELGdCQUFnQixFQUFFO3dCQUNoQixXQUFXLEVBQ1QsZ0VBQWdFO3dCQUNsRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO3dCQUN6QixRQUFRLEVBQUUsQ0FBQzt3QkFDWCxJQUFJLEVBQUUsT0FBTztxQkFDZDtpQkFDRjtnQkFDRCxJQUFJLEVBQUUsUUFBUTthQUNmO1NBQ0Y7UUFDRCxJQUFJLEVBQUUsU0FBUztLQUNoQjtDQUNGLENBQUM7QUFFRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuXG5pbXBvcnQgeyBjb2xsZWN0RXhwb3J0ZWRFbGVtZW50cyB9IGZyb20gXCIuL25vLXVudXNlZC1leHBvcnRzLWRlY2xhcmF0aW9uLXV0aWxpdGllc1wiO1xuaW1wb3J0IHsgZ2V0VHlwZVNjcmlwdFByb2dyYW0gfSBmcm9tIFwiLi9uby11bnVzZWQtZXhwb3J0cy1pZGVudGlmaWVyLXV0aWxpdGllc1wiO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9QVUJMSUNfQVBJX0ZJTEVTLFxuICBERUZBVUxUX1RFU1RfRklMRV9QQVRURVJOUyxcbiAgZ2V0T3B0aW9ucyxcbiAgaXNMaW50YWJsZUZpbGVuYW1lLFxuICBpc1B1YmxpY0FwaUZpbGUsXG59IGZyb20gXCIuL25vLXVudXNlZC1leHBvcnRzLW9wdGlvbnNcIjtcbmltcG9ydCB7XG4gIGNsYXNzaWZ5RXhwb3J0VXNhZ2UsXG4gIGNvbGxlY3RDcm9zc0ZpbGVVc2FnZXMsXG59IGZyb20gXCIuL25vLXVudXNlZC1leHBvcnRzLXVzYWdlLXV0aWxpdGllc1wiO1xuXG4vKiogRVNMaW50IHJ1bGUgZmxhZ2dpbmcgZXhwb3J0cyB1bnVzZWQgaW4gcHJvZHVjdGlvbiBjb2RlLiAqL1xuY29uc3Qgbm9VbnVzZWRFeHBvcnRzUnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFJ1bGUuUnVsZUxpc3RlbmVyIHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldE9wdGlvbnMoY29udGV4dC5vcHRpb25zKTtcbiAgICBjb25zdCBmaWxlbmFtZSA9IGNvbnRleHQuZmlsZW5hbWU7XG5cbiAgICBpZiAoIWlzTGludGFibGVGaWxlbmFtZShmaWxlbmFtZSkpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9ncmFtID0gZ2V0VHlwZVNjcmlwdFByb2dyYW0oY29udGV4dCk7XG5cbiAgICBpZiAocHJvZ3JhbSA9PT0gdm9pZCAwKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgY29uc3QgcHJvamVjdFJvb3QgPSBwYXRoLnJlc29sdmUocHJvZ3JhbS5nZXRDdXJyZW50RGlyZWN0b3J5KCkpO1xuXG4gICAgaWYgKGlzUHVibGljQXBpRmlsZShmaWxlbmFtZSwgc3RhdGUsIHByb2plY3RSb290KSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBQcm9ncmFtKG5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXhwb3J0ZWRFbGVtZW50cyA9IGNvbGxlY3RFeHBvcnRlZEVsZW1lbnRzKG5vZGUuYm9keSk7XG5cbiAgICAgICAgaWYgKGV4cG9ydGVkRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGV4cG9ydGVkRWxlbWVudHMpIHtcbiAgICAgICAgICBjb25zdCB1c2FnZUNsYXNzaWZpY2F0aW9uID0gY2xhc3NpZnlFeHBvcnRVc2FnZShcbiAgICAgICAgICAgIGNvbGxlY3RDcm9zc0ZpbGVVc2FnZXMoXG4gICAgICAgICAgICAgIHByb2dyYW0sXG4gICAgICAgICAgICAgIGZpbGVuYW1lLFxuICAgICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgICAgcHJvamVjdFJvb3QsXG4gICAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAodXNhZ2VDbGFzc2lmaWNhdGlvbiA9PT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIGRhdGE6IHsgZXhwb3J0ZWROYW1lOiBlbGVtZW50LmV4cG9ydGVkTmFtZSB9LFxuICAgICAgICAgICAgbWVzc2FnZUlkOlxuICAgICAgICAgICAgICB1c2FnZUNsYXNzaWZpY2F0aW9uID09PSBcInRlc3Qtb25seVwiXG4gICAgICAgICAgICAgICAgPyBcInVzZWRPbmx5SW5UZXN0c1wiXG4gICAgICAgICAgICAgICAgOiBcInVudXNlZEV4cG9ydFwiLFxuICAgICAgICAgICAgbm9kZTogZWxlbWVudC5ub2RlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH07XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkZWZhdWx0T3B0aW9uczogW1xuICAgICAge1xuICAgICAgICBwdWJsaWNBcGlGaWxlczogWy4uLkRFRkFVTFRfUFVCTElDX0FQSV9GSUxFU10sXG4gICAgICAgIHRlc3RGaWxlUGF0dGVybnM6IFsuLi5ERUZBVUxUX1RFU1RfRklMRV9QQVRURVJOU10sXG4gICAgICB9LFxuICAgIF0sXG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiRGlzYWxsb3cgZXhwb3J0cyB0aGF0IGFyZSB1bnVzZWQgb3IgY29uc3VtZWQgb25seSBieSB0ZXN0IGZpbGVzLlwiLFxuICAgICAgcmVjb21tZW5kZWQ6IGZhbHNlLFxuICAgICAgdXJsOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9wYXJsb3RpL2VzbGludC1wbHVnaW4vYmxvYi9tYWluL2RvY3MvcnVsZXMvbm8tdW51c2VkLWV4cG9ydHMubWRcIixcbiAgICB9LFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICB1bnVzZWRFeHBvcnQ6XG4gICAgICAgIFwiRXhwb3J0ICd7e2V4cG9ydGVkTmFtZX19JyBpcyBuZXZlciBjb25zdW1lZCBieSBhbnkgZmlsZSBpbiB0aGUgcHJvamVjdDsgbWFrZSBpdCBwcml2YXRlIGJ5IHJlbW92aW5nIHRoZSBleHBvcnQuXCIsXG4gICAgICB1c2VkT25seUluVGVzdHM6XG4gICAgICAgIFwiRXhwb3J0ICd7e2V4cG9ydGVkTmFtZX19JyBpcyBjb25zdW1lZCBvbmx5IGJ5IHRlc3QgZmlsZXM7IG1vdmUgaXQgdG8gdGhlIHRlc3QgZmlsZSBvciBhIHRlc3QgdXRpbGl0aWVzIGZvbGRlci5cIixcbiAgICB9LFxuICAgIHNjaGVtYTogW1xuICAgICAge1xuICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBwdWJsaWNBcGlGaWxlczoge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiRmlsZSBnbG9icyB0aGF0IGRlZmluZSBwdWJsaWMgQVBJIGV4cG9ydCBzdXJmYWNlcy5cIixcbiAgICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgIG1pbkl0ZW1zOiAxLFxuICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGVzdEZpbGVQYXR0ZXJuczoge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgIFwiRmlsZSBnbG9icyB0cmVhdGVkIGFzIHRlc3RzIHdoZW4gY2xhc3NpZnlpbmcgZXhwb3J0IGNvbnN1bWVycy5cIixcbiAgICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgIG1pbkl0ZW1zOiAxLFxuICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgdHlwZTogXCJwcm9ibGVtXCIsXG4gIH0sXG59O1xuXG5leHBvcnQgeyBub1VudXNlZEV4cG9ydHNSdWxlIH07XG4iXX0=
@@ -1,3 +1,4 @@
1
1
  export { noMultipleDeclaratorsRule } from "./no-multiple-declarators/index.js";
2
+ export { noUselessDelegationRule } from "./no-useless-delegation/index.js";
2
3
  export { preferInterfaceTypesRule } from "./prefer-interface-types/index.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export { noMultipleDeclaratorsRule } from "./no-multiple-declarators/index.js";
2
+ export { noUselessDelegationRule } from "./no-useless-delegation/index.js";
2
3
  export { preferInterfaceTypesRule } from "./prefer-interface-types/index.js";
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZG9tYWluL2NvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBub011bHRpcGxlRGVjbGFyYXRvcnNSdWxlIH0gZnJvbSBcIi4vbm8tbXVsdGlwbGUtZGVjbGFyYXRvcnNcIjtcbmV4cG9ydCB7IHByZWZlckludGVyZmFjZVR5cGVzUnVsZSB9IGZyb20gXCIuL3ByZWZlci1pbnRlcmZhY2UtdHlwZXNcIjtcbiJdfQ==
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZG9tYWluL2NvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBub011bHRpcGxlRGVjbGFyYXRvcnNSdWxlIH0gZnJvbSBcIi4vbm8tbXVsdGlwbGUtZGVjbGFyYXRvcnNcIjtcbmV4cG9ydCB7IG5vVXNlbGVzc0RlbGVnYXRpb25SdWxlIH0gZnJvbSBcIi4vbm8tdXNlbGVzcy1kZWxlZ2F0aW9uXCI7XG5leHBvcnQgeyBwcmVmZXJJbnRlcmZhY2VUeXBlc1J1bGUgfSBmcm9tIFwiLi9wcmVmZXItaW50ZXJmYWNlLXR5cGVzXCI7XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/core/no-multiple-declarators/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAgFnC,4EAA4E;AAC5E,QAAA,MAAM,yBAAyB,EAAE,IAAI,CAAC,UAqBrC,CAAC;AAEF,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
1
+ {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/core/no-multiple-declarators/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAmFnC,4EAA4E;AAC5E,QAAA,MAAM,yBAAyB,EAAE,IAAI,CAAC,UAwBrC,CAAC;AAEF,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
@@ -42,6 +42,9 @@ const reportVariableDeclaration = (context, node) => {
42
42
  ...(fix !== void 0 && { fix }),
43
43
  messageId: "singleDeclarator",
44
44
  node: node,
45
+ ...(fix !== void 0 && {
46
+ suggest: [{ fix, messageId: "splitDeclaration" }],
47
+ }),
45
48
  });
46
49
  };
47
50
  /** ESLint rule implementation for single-declarator variable statements. */
@@ -58,12 +61,14 @@ const noMultipleDeclaratorsRule = {
58
61
  url: "https://github.com/parloti/eslint-plugin/blob/main/docs/rules/no-multiple-declarators.md",
59
62
  },
60
63
  fixable: "code",
64
+ hasSuggestions: true,
61
65
  messages: {
62
66
  singleDeclarator: "Declare exactly one variable per declaration statement.",
67
+ splitDeclaration: "Split this declaration into separate single-variable statements.",
63
68
  },
64
69
  schema: [],
65
70
  type: "suggestion",
66
71
  },
67
72
  };
68
73
  export { noMultipleDeclaratorsRule };
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vY29yZS9uby1tdWx0aXBsZS1kZWNsYXJhdG9ycy9ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLHFCQUFxQixFQUNyQixhQUFhLEVBQ2IsYUFBYSxHQUNkLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVyQzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxDQUMzQixJQUE2QixFQUM3QixZQUErQyxFQUMvQyxVQUE0QixFQUN1QixFQUFFO0lBQ3JELE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUU3QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNqRSxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLGtCQUFrQixHQUFHLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9ELElBQUksa0JBQWtCLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNsQyxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBcUIsRUFBWSxFQUFFLENBQ3pDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDcEIsSUFBSSxDQUFDLEtBQUssRUFDVixnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLENBQ3ZELENBQUM7QUFDTixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0seUJBQXlCLEdBQUcsQ0FDaEMsT0FBeUIsRUFDekIsSUFBNkIsRUFDdkIsRUFBRTtJQUNSLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO0lBRTdDLElBQUksWUFBWSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM3QixPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQyxNQUFNLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRWpFLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDYixHQUFHLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDOUIsU0FBUyxFQUFFLGtCQUFrQjtRQUM3QixJQUFJLEVBQUUsSUFBNEI7S0FDbkMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsNEVBQTRFO0FBQzVFLE1BQU0seUJBQXlCLEdBQW9CO0lBQ2pELE1BQU0sRUFBRSxDQUFDLE9BQXlCLEVBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELG1CQUFtQixFQUFFLENBQUMsSUFBZSxFQUFRLEVBQUU7WUFDN0MseUJBQXlCLENBQUMsT0FBTyxFQUFFLElBQStCLENBQUMsQ0FBQztRQUN0RSxDQUFDO0tBQ0YsQ0FBQztJQUNGLElBQUksRUFBRTtRQUNKLElBQUksRUFBRTtZQUNKLFdBQVcsRUFDVCxnRkFBZ0Y7WUFDbEYsV0FBVyxFQUFFLEtBQUs7WUFDbEIsR0FBRyxFQUFFLDBGQUEwRjtTQUNoRztRQUNELE9BQU8sRUFBRSxNQUFNO1FBQ2YsUUFBUSxFQUFFO1lBQ1IsZ0JBQWdCLEVBQ2QseURBQXlEO1NBQzVEO1FBQ0QsTUFBTSxFQUFFLEVBQUU7UUFDVixJQUFJLEVBQUUsWUFBWTtLQUNuQjtDQUNGLENBQUM7QUFFRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUge1xuICBTb3VyY2VDb2RlQWNjZXNzLFxuICBWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSxcbiAgVmFyaWFibGVEZWNsYXJhdG9yTm9kZSxcbn0gZnJvbSBcIi4vdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgYnVpbGRSZXBsYWNlbWVudCxcbiAgY2FuRml4LFxuICBnZXRSYW5nZWREZWNsYXJhdGlvbnMsXG4gIGdldFNvdXJjZUNvZGUsXG4gIGdldFNvdXJjZVRleHQsXG59IGZyb20gXCIuL3J1bGUtdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyBoYXNGaXhEYXRhIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGF1dG9maXggY2FsbGJhY2sgd2hlbiB0aGUgZGVjbGFyYXRpb24gY2FuIGJlIHJld3JpdHRlbiBzYWZlbHkuXG4gKiBAcGFyYW0gbm9kZSBEZWNsYXJhdGlvbiBub2RlIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0gZGVjbGFyYXRpb25zIERlY2xhcmF0b3JzIGZyb20gdGhlIGRlY2xhcmF0aW9uIHN0YXRlbWVudC5cbiAqIEBwYXJhbSBzb3VyY2VDb2RlIFNvdXJjZSBhY2Nlc3Mgd3JhcHBlci5cbiAqIEByZXR1cm5zIEZpeCBjYWxsYmFjayB3aGVuIHRoZSBkZWNsYXJhdGlvbiBpcyBzYWZlIHRvIHNwbGl0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZpeCA9IGNyZWF0ZURlY2xhcmF0aW9uRml4KG5vZGUsIGRlY2xhcmF0aW9ucywgc291cmNlQ29kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgY3JlYXRlRGVjbGFyYXRpb25GaXggPSAoXG4gIG5vZGU6IFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLFxuICBkZWNsYXJhdGlvbnM6IHJlYWRvbmx5IFZhcmlhYmxlRGVjbGFyYXRvck5vZGVbXSxcbiAgc291cmNlQ29kZTogU291cmNlQ29kZUFjY2Vzcyxcbik6ICgoZml4ZXI6IFJ1bGUuUnVsZUZpeGVyKSA9PiBSdWxlLkZpeCkgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBzb3VyY2VUZXh0ID0gZ2V0U291cmNlVGV4dChzb3VyY2VDb2RlKTtcblxuICBpZiAoIWNhbkZpeChub2RlLCBkZWNsYXJhdGlvbnMsIHNvdXJjZVRleHQpIHx8ICFoYXNGaXhEYXRhKG5vZGUpKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IHJhbmdlZERlY2xhcmF0aW9ucyA9IGdldFJhbmdlZERlY2xhcmF0aW9ucyhkZWNsYXJhdGlvbnMpO1xuICBpZiAocmFuZ2VkRGVjbGFyYXRpb25zID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgcmV0dXJuIChmaXhlcjogUnVsZS5SdWxlRml4ZXIpOiBSdWxlLkZpeCA9PlxuICAgIGZpeGVyLnJlcGxhY2VUZXh0UmFuZ2UoXG4gICAgICBub2RlLnJhbmdlLFxuICAgICAgYnVpbGRSZXBsYWNlbWVudChub2RlLCByYW5nZWREZWNsYXJhdGlvbnMsIHNvdXJjZUNvZGUpLFxuICAgICk7XG59O1xuXG4vKipcbiAqIFJlcG9ydHMgZGVjbGFyYXRpb25zIHRoYXQgY29udGFpbiBtb3JlIHRoYW4gb25lIGRlY2xhcmF0b3IuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHBhcmFtIG5vZGUgRGVjbGFyYXRpb24gbm9kZSB0byByZXBvcnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogcmVwb3J0VmFyaWFibGVEZWNsYXJhdGlvbihjb250ZXh0LCBub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCByZXBvcnRWYXJpYWJsZURlY2xhcmF0aW9uID0gKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuICBub2RlOiBWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSxcbik6IHZvaWQgPT4ge1xuICBjb25zdCBkZWNsYXJhdGlvbnMgPSBub2RlLmRlY2xhcmF0aW9ucyA/PyBbXTtcblxuICBpZiAoZGVjbGFyYXRpb25zLmxlbmd0aCA8PSAxKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgc291cmNlQ29kZSA9IGdldFNvdXJjZUNvZGUoY29udGV4dCk7XG4gIGNvbnN0IGZpeCA9IGNyZWF0ZURlY2xhcmF0aW9uRml4KG5vZGUsIGRlY2xhcmF0aW9ucywgc291cmNlQ29kZSk7XG5cbiAgY29udGV4dC5yZXBvcnQoe1xuICAgIC4uLihmaXggIT09IHZvaWQgMCAmJiB7IGZpeCB9KSxcbiAgICBtZXNzYWdlSWQ6IFwic2luZ2xlRGVjbGFyYXRvclwiLFxuICAgIG5vZGU6IG5vZGUgYXMgdW5rbm93biBhcyBSdWxlLk5vZGUsXG4gIH0pO1xufTtcblxuLyoqIEVTTGludCBydWxlIGltcGxlbWVudGF0aW9uIGZvciBzaW5nbGUtZGVjbGFyYXRvciB2YXJpYWJsZSBzdGF0ZW1lbnRzLiAqL1xuY29uc3Qgbm9NdWx0aXBsZURlY2xhcmF0b3JzUnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGU6IChjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZS5SdWxlTGlzdGVuZXIgPT4gKHtcbiAgICBWYXJpYWJsZURlY2xhcmF0aW9uOiAobm9kZTogUnVsZS5Ob2RlKTogdm9pZCA9PiB7XG4gICAgICByZXBvcnRWYXJpYWJsZURlY2xhcmF0aW9uKGNvbnRleHQsIG5vZGUgYXMgVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUpO1xuICAgIH0sXG4gIH0pLFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUmVxdWlyZSB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgdG8gY29udGFpbiBleGFjdGx5IG9uZSBkZWNsYXJhdG9yIHBlciBzdGF0ZW1lbnQuXCIsXG4gICAgICByZWNvbW1lbmRlZDogZmFsc2UsXG4gICAgICB1cmw6IFwiaHR0cHM6Ly9naXRodWIuY29tL3BhcmxvdGkvZXNsaW50LXBsdWdpbi9ibG9iL21haW4vZG9jcy9ydWxlcy9uby1tdWx0aXBsZS1kZWNsYXJhdG9ycy5tZFwiLFxuICAgIH0sXG4gICAgZml4YWJsZTogXCJjb2RlXCIsXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHNpbmdsZURlY2xhcmF0b3I6XG4gICAgICAgIFwiRGVjbGFyZSBleGFjdGx5IG9uZSB2YXJpYWJsZSBwZXIgZGVjbGFyYXRpb24gc3RhdGVtZW50LlwiLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiBcInN1Z2dlc3Rpb25cIixcbiAgfSxcbn07XG5cbmV4cG9ydCB7IG5vTXVsdGlwbGVEZWNsYXJhdG9yc1J1bGUgfTtcbiJdfQ==
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vY29yZS9uby1tdWx0aXBsZS1kZWNsYXJhdG9ycy9ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLHFCQUFxQixFQUNyQixhQUFhLEVBQ2IsYUFBYSxHQUNkLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVyQzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxDQUMzQixJQUE2QixFQUM3QixZQUErQyxFQUMvQyxVQUE0QixFQUN1QixFQUFFO0lBQ3JELE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUU3QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNqRSxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLGtCQUFrQixHQUFHLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9ELElBQUksa0JBQWtCLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNsQyxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBcUIsRUFBWSxFQUFFLENBQ3pDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDcEIsSUFBSSxDQUFDLEtBQUssRUFDVixnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLENBQ3ZELENBQUM7QUFDTixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0seUJBQXlCLEdBQUcsQ0FDaEMsT0FBeUIsRUFDekIsSUFBNkIsRUFDdkIsRUFBRTtJQUNSLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO0lBRTdDLElBQUksWUFBWSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM3QixPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQyxNQUFNLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRWpFLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDYixHQUFHLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDOUIsU0FBUyxFQUFFLGtCQUFrQjtRQUM3QixJQUFJLEVBQUUsSUFBNEI7UUFDbEMsR0FBRyxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsSUFBSTtZQUNwQixPQUFPLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztTQUNsRCxDQUFDO0tBQ0gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsNEVBQTRFO0FBQzVFLE1BQU0seUJBQXlCLEdBQW9CO0lBQ2pELE1BQU0sRUFBRSxDQUFDLE9BQXlCLEVBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELG1CQUFtQixFQUFFLENBQUMsSUFBZSxFQUFRLEVBQUU7WUFDN0MseUJBQXlCLENBQUMsT0FBTyxFQUFFLElBQStCLENBQUMsQ0FBQztRQUN0RSxDQUFDO0tBQ0YsQ0FBQztJQUNGLElBQUksRUFBRTtRQUNKLElBQUksRUFBRTtZQUNKLFdBQVcsRUFDVCxnRkFBZ0Y7WUFDbEYsV0FBVyxFQUFFLEtBQUs7WUFDbEIsR0FBRyxFQUFFLDBGQUEwRjtTQUNoRztRQUNELE9BQU8sRUFBRSxNQUFNO1FBQ2YsY0FBYyxFQUFFLElBQUk7UUFDcEIsUUFBUSxFQUFFO1lBQ1IsZ0JBQWdCLEVBQ2QseURBQXlEO1lBQzNELGdCQUFnQixFQUNkLGtFQUFrRTtTQUNyRTtRQUNELE1BQU0sRUFBRSxFQUFFO1FBQ1YsSUFBSSxFQUFFLFlBQVk7S0FDbkI7Q0FDRixDQUFDO0FBRUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5cbmltcG9ydCB0eXBlIHtcbiAgU291cmNlQ29kZUFjY2VzcyxcbiAgVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsXG4gIFZhcmlhYmxlRGVjbGFyYXRvck5vZGUsXG59IGZyb20gXCIuL3R5cGVzXCI7XG5cbmltcG9ydCB7XG4gIGJ1aWxkUmVwbGFjZW1lbnQsXG4gIGNhbkZpeCxcbiAgZ2V0UmFuZ2VkRGVjbGFyYXRpb25zLFxuICBnZXRTb3VyY2VDb2RlLFxuICBnZXRTb3VyY2VUZXh0LFxufSBmcm9tIFwiLi9ydWxlLXV0aWxpdGllc1wiO1xuaW1wb3J0IHsgaGFzRml4RGF0YSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhdXRvZml4IGNhbGxiYWNrIHdoZW4gdGhlIGRlY2xhcmF0aW9uIGNhbiBiZSByZXdyaXR0ZW4gc2FmZWx5LlxuICogQHBhcmFtIG5vZGUgRGVjbGFyYXRpb24gbm9kZSB0byBpbnNwZWN0LlxuICogQHBhcmFtIGRlY2xhcmF0aW9ucyBEZWNsYXJhdG9ycyBmcm9tIHRoZSBkZWNsYXJhdGlvbiBzdGF0ZW1lbnQuXG4gKiBAcGFyYW0gc291cmNlQ29kZSBTb3VyY2UgYWNjZXNzIHdyYXBwZXIuXG4gKiBAcmV0dXJucyBGaXggY2FsbGJhY2sgd2hlbiB0aGUgZGVjbGFyYXRpb24gaXMgc2FmZSB0byBzcGxpdC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBmaXggPSBjcmVhdGVEZWNsYXJhdGlvbkZpeChub2RlLCBkZWNsYXJhdGlvbnMsIHNvdXJjZUNvZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGNyZWF0ZURlY2xhcmF0aW9uRml4ID0gKFxuICBub2RlOiBWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSxcbiAgZGVjbGFyYXRpb25zOiByZWFkb25seSBWYXJpYWJsZURlY2xhcmF0b3JOb2RlW10sXG4gIHNvdXJjZUNvZGU6IFNvdXJjZUNvZGVBY2Nlc3MsXG4pOiAoKGZpeGVyOiBSdWxlLlJ1bGVGaXhlcikgPT4gUnVsZS5GaXgpIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3Qgc291cmNlVGV4dCA9IGdldFNvdXJjZVRleHQoc291cmNlQ29kZSk7XG5cbiAgaWYgKCFjYW5GaXgobm9kZSwgZGVjbGFyYXRpb25zLCBzb3VyY2VUZXh0KSB8fCAhaGFzRml4RGF0YShub2RlKSkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCByYW5nZWREZWNsYXJhdGlvbnMgPSBnZXRSYW5nZWREZWNsYXJhdGlvbnMoZGVjbGFyYXRpb25zKTtcbiAgaWYgKHJhbmdlZERlY2xhcmF0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIHJldHVybiAoZml4ZXI6IFJ1bGUuUnVsZUZpeGVyKTogUnVsZS5GaXggPT5cbiAgICBmaXhlci5yZXBsYWNlVGV4dFJhbmdlKFxuICAgICAgbm9kZS5yYW5nZSxcbiAgICAgIGJ1aWxkUmVwbGFjZW1lbnQobm9kZSwgcmFuZ2VkRGVjbGFyYXRpb25zLCBzb3VyY2VDb2RlKSxcbiAgICApO1xufTtcblxuLyoqXG4gKiBSZXBvcnRzIGRlY2xhcmF0aW9ucyB0aGF0IGNvbnRhaW4gbW9yZSB0aGFuIG9uZSBkZWNsYXJhdG9yLlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dC5cbiAqIEBwYXJhbSBub2RlIERlY2xhcmF0aW9uIG5vZGUgdG8gcmVwb3J0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJlcG9ydFZhcmlhYmxlRGVjbGFyYXRpb24oY29udGV4dCwgbm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgcmVwb3J0VmFyaWFibGVEZWNsYXJhdGlvbiA9IChcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcbiAgbm9kZTogVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsXG4pOiB2b2lkID0+IHtcbiAgY29uc3QgZGVjbGFyYXRpb25zID0gbm9kZS5kZWNsYXJhdGlvbnMgPz8gW107XG5cbiAgaWYgKGRlY2xhcmF0aW9ucy5sZW5ndGggPD0gMSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHNvdXJjZUNvZGUgPSBnZXRTb3VyY2VDb2RlKGNvbnRleHQpO1xuICBjb25zdCBmaXggPSBjcmVhdGVEZWNsYXJhdGlvbkZpeChub2RlLCBkZWNsYXJhdGlvbnMsIHNvdXJjZUNvZGUpO1xuXG4gIGNvbnRleHQucmVwb3J0KHtcbiAgICAuLi4oZml4ICE9PSB2b2lkIDAgJiYgeyBmaXggfSksXG4gICAgbWVzc2FnZUlkOiBcInNpbmdsZURlY2xhcmF0b3JcIixcbiAgICBub2RlOiBub2RlIGFzIHVua25vd24gYXMgUnVsZS5Ob2RlLFxuICAgIC4uLihmaXggIT09IHZvaWQgMCAmJiB7XG4gICAgICBzdWdnZXN0OiBbeyBmaXgsIG1lc3NhZ2VJZDogXCJzcGxpdERlY2xhcmF0aW9uXCIgfV0sXG4gICAgfSksXG4gIH0pO1xufTtcblxuLyoqIEVTTGludCBydWxlIGltcGxlbWVudGF0aW9uIGZvciBzaW5nbGUtZGVjbGFyYXRvciB2YXJpYWJsZSBzdGF0ZW1lbnRzLiAqL1xuY29uc3Qgbm9NdWx0aXBsZURlY2xhcmF0b3JzUnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGU6IChjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZS5SdWxlTGlzdGVuZXIgPT4gKHtcbiAgICBWYXJpYWJsZURlY2xhcmF0aW9uOiAobm9kZTogUnVsZS5Ob2RlKTogdm9pZCA9PiB7XG4gICAgICByZXBvcnRWYXJpYWJsZURlY2xhcmF0aW9uKGNvbnRleHQsIG5vZGUgYXMgVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUpO1xuICAgIH0sXG4gIH0pLFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUmVxdWlyZSB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgdG8gY29udGFpbiBleGFjdGx5IG9uZSBkZWNsYXJhdG9yIHBlciBzdGF0ZW1lbnQuXCIsXG4gICAgICByZWNvbW1lbmRlZDogZmFsc2UsXG4gICAgICB1cmw6IFwiaHR0cHM6Ly9naXRodWIuY29tL3BhcmxvdGkvZXNsaW50LXBsdWdpbi9ibG9iL21haW4vZG9jcy9ydWxlcy9uby1tdWx0aXBsZS1kZWNsYXJhdG9ycy5tZFwiLFxuICAgIH0sXG4gICAgZml4YWJsZTogXCJjb2RlXCIsXG4gICAgaGFzU3VnZ2VzdGlvbnM6IHRydWUsXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHNpbmdsZURlY2xhcmF0b3I6XG4gICAgICAgIFwiRGVjbGFyZSBleGFjdGx5IG9uZSB2YXJpYWJsZSBwZXIgZGVjbGFyYXRpb24gc3RhdGVtZW50LlwiLFxuICAgICAgc3BsaXREZWNsYXJhdGlvbjpcbiAgICAgICAgXCJTcGxpdCB0aGlzIGRlY2xhcmF0aW9uIGludG8gc2VwYXJhdGUgc2luZ2xlLXZhcmlhYmxlIHN0YXRlbWVudHMuXCIsXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6IFwic3VnZ2VzdGlvblwiLFxuICB9LFxufTtcblxuZXhwb3J0IHsgbm9NdWx0aXBsZURlY2xhcmF0b3JzUnVsZSB9O1xuIl19
@@ -0,0 +1,2 @@
1
+ export { noUselessDelegationRule } from "./rule.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/core/no-useless-delegation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { noUselessDelegationRule } from "./rule.js";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2NvcmUvbm8tdXNlbGVzcy1kZWxlZ2F0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IG5vVXNlbGVzc0RlbGVnYXRpb25SdWxlIH0gZnJvbSBcIi4vcnVsZVwiO1xuIl19
@@ -0,0 +1,5 @@
1
+ import type { Rule } from "eslint";
2
+ /** ESLint rule implementation for functions that only forward their arguments. */
3
+ declare const noUselessDelegationRule: Rule.RuleModule;
4
+ export { noUselessDelegationRule };
5
+ //# sourceMappingURL=rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/core/no-useless-delegation/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AA6OnC,kFAAkF;AAClF,QAAA,MAAM,uBAAuB,EAAE,IAAI,CAAC,UAqCnC,CAAC;AAEF,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
@@ -0,0 +1,204 @@
1
+ /**
2
+ * Resolves a node value when it is an ESTree node.
3
+ * @param value Candidate AST value.
4
+ * @returns The value as an ESTree node when it has a type discriminator.
5
+ * @example
6
+ * ```typescript
7
+ * const node = asNode({ type: "Identifier" });
8
+ * ```
9
+ */
10
+ const asNode = (value) => typeof value === "object" && value !== null && "type" in value
11
+ ? value
12
+ : void 0;
13
+ /**
14
+ * Resolves a node array while rejecting malformed AST data.
15
+ * @param value Candidate AST value.
16
+ * @returns AST nodes when every array item is a node.
17
+ * @example
18
+ * ```typescript
19
+ * const nodes = asNodeArray([{ type: "Identifier" }]);
20
+ * ```
21
+ */
22
+ const asNodeArray = (value) => Array.isArray(value) && value.every((item) => asNode(item) !== void 0)
23
+ ? value
24
+ : void 0;
25
+ /**
26
+ * Reads an identifier name from a node.
27
+ * @param node Candidate identifier node.
28
+ * @returns Identifier name when the node is an identifier.
29
+ * @example
30
+ * ```typescript
31
+ * const name = getIdentifierName({ name: "run", type: "Identifier" });
32
+ * ```
33
+ */
34
+ const getIdentifierName = (node) => node?.type === "Identifier" && typeof node["name"] === "string"
35
+ ? node["name"]
36
+ : void 0;
37
+ /**
38
+ * Gets the called expression from a function with one return statement.
39
+ * @param functionNode Function node to inspect.
40
+ * @returns The directly returned call expression when present.
41
+ * @example
42
+ * ```typescript
43
+ * const call = getDelegatedCall(functionNode);
44
+ * ```
45
+ */
46
+ const getDelegatedCall = (functionNode) => {
47
+ if (functionNode.async === true || functionNode.generator === true) {
48
+ return void 0;
49
+ }
50
+ const body = asNode(functionNode["body"]);
51
+ if (body === void 0) {
52
+ return void 0;
53
+ }
54
+ if (body.type === "CallExpression") {
55
+ return body;
56
+ }
57
+ const statements = asNodeArray(body["body"]);
58
+ if (body.type !== "BlockStatement" || statements?.length !== 1) {
59
+ return void 0;
60
+ }
61
+ const returnStatement = statements[0];
62
+ return returnStatement?.type === "ReturnStatement"
63
+ ? asNode(returnStatement["argument"])
64
+ : void 0;
65
+ };
66
+ /**
67
+ * Gets parameter names and whether each parameter is a rest parameter.
68
+ * @param functionNode Function node to inspect.
69
+ * @returns Named parameter metadata when every parameter is supported.
70
+ * @example
71
+ * ```typescript
72
+ * const parameters = getParameters(functionNode);
73
+ * ```
74
+ */
75
+ const getParameters = (functionNode) => {
76
+ const parameters = asNodeArray(functionNode["params"]);
77
+ if (parameters === void 0) {
78
+ return void 0;
79
+ }
80
+ const result = [];
81
+ for (const parameter of parameters) {
82
+ const isRest = parameter.type === "RestElement";
83
+ const name = getIdentifierName(isRest ? asNode(parameter["argument"]) : parameter);
84
+ if (name === void 0) {
85
+ return void 0;
86
+ }
87
+ result.push({ isRest, name });
88
+ }
89
+ return result;
90
+ };
91
+ /**
92
+ * Determines whether one call argument forwards its corresponding parameter.
93
+ * @param argument Call argument to inspect.
94
+ * @param parameter Corresponding function parameter.
95
+ * @returns Whether the argument forwards the parameter without change.
96
+ * @example
97
+ * ```typescript
98
+ * const forwards = forwardsParameter(argument, parameter);
99
+ * ```
100
+ */
101
+ const forwardsParameter = (argument, parameter) => {
102
+ if (parameter.isRest) {
103
+ return (argument.type === "SpreadElement" &&
104
+ getIdentifierName(asNode(argument["argument"])) === parameter.name);
105
+ }
106
+ return getIdentifierName(argument) === parameter.name;
107
+ };
108
+ /**
109
+ * Determines whether a node is a plain named reference.
110
+ * @param node Candidate receiver node to inspect.
111
+ * @returns Whether the node is a plain identifier reference.
112
+ * @example
113
+ * ```typescript
114
+ * const isNamed = isNamedReceiver({ type: "Identifier" });
115
+ * ```
116
+ */
117
+ const isNamedReceiver = (node) => node?.type === "Identifier";
118
+ /**
119
+ * Determines whether a function does nothing except directly call another function.
120
+ * @param functionNode Function node to inspect.
121
+ * @param functionName Declared wrapper function name.
122
+ * @returns Whether the function is an exact synchronous delegation.
123
+ * @example
124
+ * ```typescript
125
+ * const isDelegation = isUselessDelegation(functionNode, "run");
126
+ * ```
127
+ */
128
+ const isUselessDelegation = (functionNode, functionName) => {
129
+ const call = getDelegatedCall(functionNode);
130
+ const parameters = getParameters(functionNode);
131
+ const arguments_ = asNodeArray(call?.["arguments"]);
132
+ const callee = asNode(call?.["callee"]);
133
+ if (call?.type !== "CallExpression" ||
134
+ parameters === void 0 ||
135
+ arguments_ === void 0 ||
136
+ callee === void 0 ||
137
+ // A method call is only a replaceable delegation when its receiver is a
138
+ // plain named reference (e.g. `service.run`). Expression receivers such
139
+ // as type assertions, calls, or literals cannot be inlined at the call
140
+ // site, so the wrapper is not useless.
141
+ (callee.type === "MemberExpression" &&
142
+ !isNamedReceiver(asNode(callee["object"]))) ||
143
+ getIdentifierName(callee) === functionName ||
144
+ arguments_.length !== parameters.length) {
145
+ return false;
146
+ }
147
+ return arguments_.every((argument, index) => {
148
+ const parameter = parameters[index];
149
+ return parameter !== void 0 && forwardsParameter(argument, parameter);
150
+ });
151
+ };
152
+ /**
153
+ * Reports a function when it is a no-op delegation.
154
+ * @param context Rule execution context.
155
+ * @param functionNode Function node to inspect.
156
+ * @param nameNode Declared wrapper name node.
157
+ * @example
158
+ * ```typescript
159
+ * reportIfUselessDelegation(context, functionNode, nameNode);
160
+ * ```
161
+ */
162
+ const reportIfUselessDelegation = (context, functionNode, nameNode) => {
163
+ const functionName = getIdentifierName(nameNode);
164
+ if (functionName === void 0 ||
165
+ !isUselessDelegation(functionNode, functionName)) {
166
+ return;
167
+ }
168
+ context.report({
169
+ messageId: "uselessDelegation",
170
+ node: nameNode,
171
+ });
172
+ };
173
+ /** ESLint rule implementation for functions that only forward their arguments. */
174
+ const noUselessDelegationRule = {
175
+ create: (context) => ({
176
+ FunctionDeclaration: (node) => {
177
+ const functionNode = node;
178
+ reportIfUselessDelegation(context, functionNode, asNode(functionNode["id"]));
179
+ },
180
+ VariableDeclarator: (node) => {
181
+ const declarator = node;
182
+ const initializer = asNode(declarator["init"]);
183
+ if (initializer?.type !== "ArrowFunctionExpression" &&
184
+ initializer?.type !== "FunctionExpression") {
185
+ return;
186
+ }
187
+ reportIfUselessDelegation(context, initializer, asNode(declarator["id"]));
188
+ },
189
+ }),
190
+ meta: {
191
+ docs: {
192
+ description: "Disallow named functions that only delegate directly to another call.",
193
+ recommended: false,
194
+ url: "https://github.com/parloti/eslint-plugin/blob/main/docs/rules/no-useless-delegation.md",
195
+ },
196
+ messages: {
197
+ uselessDelegation: "This function only delegates to another call; remove the wrapper or call the target directly.",
198
+ },
199
+ schema: [],
200
+ type: "suggestion",
201
+ },
202
+ };
203
+ export { noUselessDelegationRule };
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vY29yZS9uby11c2VsZXNzLWRlbGVnYXRpb24vcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzQkE7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQWMsRUFBb0IsRUFBRSxDQUNsRCxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxNQUFNLElBQUksS0FBSztJQUM1RCxDQUFDLENBQUUsS0FBYztJQUNqQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFYjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBYyxFQUFzQixFQUFFLENBQ3pELEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQ3BFLENBQUMsQ0FBRSxLQUFnQjtJQUNuQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFYjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFzQixFQUFzQixFQUFFLENBQ3ZFLElBQUksRUFBRSxJQUFJLEtBQUssWUFBWSxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLFFBQVE7SUFDN0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDZCxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFYjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxZQUFrQixFQUFvQixFQUFFO0lBQ2hFLElBQUksWUFBWSxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksWUFBWSxDQUFDLFNBQVMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNuRSxPQUFP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Q2YsK0ZBQStGO1NBQ2xHO1FBQ0QsTUFBTSxFQUFFLEVBQUU7UUFDVixJQUFJLEVBQUUsWUFBWTtLQUNuQjtDQUNGLENBQUM7QUFFRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuLyoqIE9uZSBuYW1lZCBwYXJhbWV0ZXIgYW5kIHdoZXRoZXIgaXQgbXVzdCBiZSBzcHJlYWQgYXQgdGhlIGNhbGwgc2l0ZS4gKi9cbmludGVyZmFjZSBEZWxlZ2F0ZWRQYXJhbWV0ZXIge1xuICAvKiogV2hldGhlciB0aGlzIHBhcmFtZXRlciB1c2VzIHJlc3Qgc3ludGF4LiAqL1xuICBpc1Jlc3Q6IGJvb2xlYW47XG4gIC8qKiBQYXJhbWV0ZXIgaWRlbnRpZmllciBuYW1lLiAqL1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKiBNaW5pbWFsIEVTVHJlZSBub2RlIHNoYXBlIHVzZWQgdG8gaW5zcGVjdCBwYXNzLXRocm91Z2ggZnVuY3Rpb25zLiAqL1xuaW50ZXJmYWNlIE5vZGUge1xuICAvKiogRHluYW1pY2FsbHkgcmVhZCBjaGlsZCBub2RlcyBhbmQgcGFyc2VyLXNwZWNpZmljIHByb3BlcnRpZXMuICovXG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gIC8qKiBXaGV0aGVyIHRoZSBmdW5jdGlvbiBpcyBhc3luY2hyb25vdXMuICovXG4gIGFzeW5jPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdGhlIGZ1bmN0aW9uIGlzIGEgZ2VuZXJhdG9yLiAqL1xuICBnZW5lcmF0b3I/OiBib29sZWFuO1xuICAvKiogRVNUcmVlIGRpc2NyaW1pbmF0b3IuICovXG4gIHR5cGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyBhIG5vZGUgdmFsdWUgd2hlbiBpdCBpcyBhbiBFU1RyZWUgbm9kZS5cbiAqIEBwYXJhbSB2YWx1ZSBDYW5kaWRhdGUgQVNUIHZhbHVlLlxuICogQHJldHVybnMgVGhlIHZhbHVlIGFzIGFuIEVTVHJlZSBub2RlIHdoZW4gaXQgaGFzIGEgdHlwZSBkaXNjcmltaW5hdG9yLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG5vZGUgPSBhc05vZGUoeyB0eXBlOiBcIklkZW50aWZpZXJcIiB9KTtcbiAqIGBgYFxuICovXG5jb25zdCBhc05vZGUgPSAodmFsdWU6IHVua25vd24pOiBOb2RlIHwgdW5kZWZpbmVkID0+XG4gIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbCAmJiBcInR5cGVcIiBpbiB2YWx1ZVxuICAgID8gKHZhbHVlIGFzIE5vZGUpXG4gICAgOiB2b2lkIDA7XG5cbi8qKlxuICogUmVzb2x2ZXMgYSBub2RlIGFycmF5IHdoaWxlIHJlamVjdGluZyBtYWxmb3JtZWQgQVNUIGRhdGEuXG4gKiBAcGFyYW0gdmFsdWUgQ2FuZGlkYXRlIEFTVCB2YWx1ZS5cbiAqIEByZXR1cm5zIEFTVCBub2RlcyB3aGVuIGV2ZXJ5IGFycmF5IGl0ZW0gaXMgYSBub2RlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG5vZGVzID0gYXNOb2RlQXJyYXkoW3sgdHlwZTogXCJJZGVudGlmaWVyXCIgfV0pO1xuICogYGBgXG4gKi9cbmNvbnN0IGFzTm9kZUFycmF5ID0gKHZhbHVlOiB1bmtub3duKTogTm9kZVtdIHwgdW5kZWZpbmVkID0+XG4gIEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmV2ZXJ5KChpdGVtKSA9PiBhc05vZGUoaXRlbSkgIT09IHZvaWQgMClcbiAgICA/ICh2YWx1ZSBhcyBOb2RlW10pXG4gICAgOiB2b2lkIDA7XG5cbi8qKlxuICogUmVhZHMgYW4gaWRlbnRpZmllciBuYW1lIGZyb20gYSBub2RlLlxuICogQHBhcmFtIG5vZGUgQ2FuZGlkYXRlIGlkZW50aWZpZXIgbm9kZS5cbiAqIEByZXR1cm5zIElkZW50aWZpZXIgbmFtZSB3aGVuIHRoZSBub2RlIGlzIGFuIGlkZW50aWZpZXIuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbmFtZSA9IGdldElkZW50aWZpZXJOYW1lKHsgbmFtZTogXCJydW5cIiwgdHlwZTogXCJJZGVudGlmaWVyXCIgfSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0SWRlbnRpZmllck5hbWUgPSAobm9kZTogTm9kZSB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PlxuICBub2RlPy50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJiB0eXBlb2Ygbm9kZVtcIm5hbWVcIl0gPT09IFwic3RyaW5nXCJcbiAgICA/IG5vZGVbXCJuYW1lXCJdXG4gICAgOiB2b2lkIDA7XG5cbi8qKlxuICogR2V0cyB0aGUgY2FsbGVkIGV4cHJlc3Npb24gZnJvbSBhIGZ1bmN0aW9uIHdpdGggb25lIHJldHVybiBzdGF0ZW1lbnQuXG4gKiBAcGFyYW0gZnVuY3Rpb25Ob2RlIEZ1bmN0aW9uIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFRoZSBkaXJlY3RseSByZXR1cm5lZCBjYWxsIGV4cHJlc3Npb24gd2hlbiBwcmVzZW50LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGNhbGwgPSBnZXREZWxlZ2F0ZWRDYWxsKGZ1bmN0aW9uTm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0RGVsZWdhdGVkQ2FsbCA9IChmdW5jdGlvbk5vZGU6IE5vZGUpOiBOb2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKGZ1bmN0aW9uTm9kZS5hc3luYyA9PT0gdHJ1ZSB8fCBmdW5jdGlvbk5vZGUuZ2VuZXJhdG9yID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IGJvZHkgPSBhc05vZGUoZnVuY3Rpb25Ob2RlW1wiYm9keVwiXSk7XG4gIGlmIChib2R5ID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgaWYgKGJvZHkudHlwZSA9PT0gXCJDYWxsRXhwcmVzc2lvblwiKSB7XG4gICAgcmV0dXJuIGJvZHk7XG4gIH1cblxuICBjb25zdCBzdGF0ZW1lbnRzID0gYXNOb2RlQXJyYXkoYm9keVtcImJvZHlcIl0pO1xuICBpZiAoYm9keS50eXBlICE9PSBcIkJsb2NrU3RhdGVtZW50XCIgfHwgc3RhdGVtZW50cz8ubGVuZ3RoICE9PSAxKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IHJldHVyblN0YXRlbWVudCA9IHN0YXRlbWVudHNbMF07XG4gIHJldHVybiByZXR1cm5TdGF0ZW1lbnQ/LnR5cGUgPT09IFwiUmV0dXJuU3RhdGVtZW50XCJcbiAgICA/IGFzTm9kZShyZXR1cm5TdGF0ZW1lbnRbXCJhcmd1bWVudFwiXSlcbiAgICA6IHZvaWQgMDtcbn07XG5cbi8qKlxuICogR2V0cyBwYXJhbWV0ZXIgbmFtZXMgYW5kIHdoZXRoZXIgZWFjaCBwYXJhbWV0ZXIgaXMgYSByZXN0IHBhcmFtZXRlci5cbiAqIEBwYXJhbSBmdW5jdGlvbk5vZGUgRnVuY3Rpb24gbm9kZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMgTmFtZWQgcGFyYW1ldGVyIG1ldGFkYXRhIHdoZW4gZXZlcnkgcGFyYW1ldGVyIGlzIHN1cHBvcnRlZC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBwYXJhbWV0ZXJzID0gZ2V0UGFyYW1ldGVycyhmdW5jdGlvbk5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFBhcmFtZXRlcnMgPSAoXG4gIGZ1bmN0aW9uTm9kZTogTm9kZSxcbik6IERlbGVnYXRlZFBhcmFtZXRlcltdIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgcGFyYW1ldGVycyA9IGFzTm9kZUFycmF5KGZ1bmN0aW9uTm9kZVtcInBhcmFtc1wiXSk7XG4gIGlmIChwYXJhbWV0ZXJzID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0OiBEZWxlZ2F0ZWRQYXJhbWV0ZXJbXSA9IFtdO1xuICBmb3IgKGNvbnN0IHBhcmFtZXRlciBvZiBwYXJhbWV0ZXJzKSB7XG4gICAgY29uc3QgaXNSZXN0ID0gcGFyYW1ldGVyLnR5cGUgPT09IFwiUmVzdEVsZW1lbnRcIjtcbiAgICBjb25zdCBuYW1lID0gZ2V0SWRlbnRpZmllck5hbWUoXG4gICAgICBpc1Jlc3QgPyBhc05vZGUocGFyYW1ldGVyW1wiYXJndW1lbnRcIl0pIDogcGFyYW1ldGVyLFxuICAgICk7XG4gICAgaWYgKG5hbWUgPT09IHZvaWQgMCkge1xuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9XG5cbiAgICByZXN1bHQucHVzaCh7IGlzUmVzdCwgbmFtZSB9KTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBvbmUgY2FsbCBhcmd1bWVudCBmb3J3YXJkcyBpdHMgY29ycmVzcG9uZGluZyBwYXJhbWV0ZXIuXG4gKiBAcGFyYW0gYXJndW1lbnQgQ2FsbCBhcmd1bWVudCB0byBpbnNwZWN0LlxuICogQHBhcmFtIHBhcmFtZXRlciBDb3JyZXNwb25kaW5nIGZ1bmN0aW9uIHBhcmFtZXRlci5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGFyZ3VtZW50IGZvcndhcmRzIHRoZSBwYXJhbWV0ZXIgd2l0aG91dCBjaGFuZ2UuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZm9yd2FyZHMgPSBmb3J3YXJkc1BhcmFtZXRlcihhcmd1bWVudCwgcGFyYW1ldGVyKTtcbiAqIGBgYFxuICovXG5jb25zdCBmb3J3YXJkc1BhcmFtZXRlciA9IChcbiAgYXJndW1lbnQ6IE5vZGUsXG4gIHBhcmFtZXRlcjogRGVsZWdhdGVkUGFyYW1ldGVyLFxuKTogYm9vbGVhbiA9PiB7XG4gIGlmIChwYXJhbWV0ZXIuaXNSZXN0KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGFyZ3VtZW50LnR5cGUgPT09IFwiU3ByZWFkRWxlbWVudFwiICYmXG4gICAgICBnZXRJZGVudGlmaWVyTmFtZShhc05vZGUoYXJndW1lbnRbXCJhcmd1bWVudFwiXSkpID09PSBwYXJhbWV0ZXIubmFtZVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gZ2V0SWRlbnRpZmllck5hbWUoYXJndW1lbnQpID09PSBwYXJhbWV0ZXIubmFtZTtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgbm9kZSBpcyBhIHBsYWluIG5hbWVkIHJlZmVyZW5jZS5cbiAqIEBwYXJhbSBub2RlIENhbmRpZGF0ZSByZWNlaXZlciBub2RlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBub2RlIGlzIGEgcGxhaW4gaWRlbnRpZmllciByZWZlcmVuY2UuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgaXNOYW1lZCA9IGlzTmFtZWRSZWNlaXZlcih7IHR5cGU6IFwiSWRlbnRpZmllclwiIH0pO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzTmFtZWRSZWNlaXZlciA9IChub2RlPzogTm9kZSk6IGJvb2xlYW4gPT4gbm9kZT8udHlwZSA9PT0gXCJJZGVudGlmaWVyXCI7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgZnVuY3Rpb24gZG9lcyBub3RoaW5nIGV4Y2VwdCBkaXJlY3RseSBjYWxsIGFub3RoZXIgZnVuY3Rpb24uXG4gKiBAcGFyYW0gZnVuY3Rpb25Ob2RlIEZ1bmN0aW9uIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSBmdW5jdGlvbk5hbWUgRGVjbGFyZWQgd3JhcHBlciBmdW5jdGlvbiBuYW1lLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZnVuY3Rpb24gaXMgYW4gZXhhY3Qgc3luY2hyb25vdXMgZGVsZWdhdGlvbi5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBpc0RlbGVnYXRpb24gPSBpc1VzZWxlc3NEZWxlZ2F0aW9uKGZ1bmN0aW9uTm9kZSwgXCJydW5cIik7XG4gKiBgYGBcbiAqL1xuY29uc3QgaXNVc2VsZXNzRGVsZWdhdGlvbiA9IChcbiAgZnVuY3Rpb25Ob2RlOiBOb2RlLFxuICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbik6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBjYWxsID0gZ2V0RGVsZWdhdGVkQ2FsbChmdW5jdGlvbk5vZGUpO1xuICBjb25zdCBwYXJhbWV0ZXJzID0gZ2V0UGFyYW1ldGVycyhmdW5jdGlvbk5vZGUpO1xuICBjb25zdCBhcmd1bWVudHNfID0gYXNOb2RlQXJyYXkoY2FsbD8uW1wiYXJndW1lbnRzXCJdKTtcbiAgY29uc3QgY2FsbGVlID0gYXNOb2RlKGNhbGw/LltcImNhbGxlZVwiXSk7XG5cbiAgaWYgKFxuICAgIGNhbGw/LnR5cGUgIT09IFwiQ2FsbEV4cHJlc3Npb25cIiB8fFxuICAgIHBhcmFtZXRlcnMgPT09IHZvaWQgMCB8fFxuICAgIGFyZ3VtZW50c18gPT09IHZvaWQgMCB8fFxuICAgIGNhbGxlZSA9PT0gdm9pZCAwIHx8XG4gICAgLy8gQSBtZXRob2QgY2FsbCBpcyBvbmx5IGEgcmVwbGFjZWFibGUgZGVsZWdhdGlvbiB3aGVuIGl0cyByZWNlaXZlciBpcyBhXG4gICAgLy8gcGxhaW4gbmFtZWQgcmVmZXJlbmNlIChlLmcuIGBzZXJ2aWNlLnJ1bmApLiBFeHByZXNzaW9uIHJlY2VpdmVycyBzdWNoXG4gICAgLy8gYXMgdHlwZSBhc3NlcnRpb25zLCBjYWxscywgb3IgbGl0ZXJhbHMgY2Fubm90IGJlIGlubGluZWQgYXQgdGhlIGNhbGxcbiAgICAvLyBzaXRlLCBzbyB0aGUgd3JhcHBlciBpcyBub3QgdXNlbGVzcy5cbiAgICAoY2FsbGVlLnR5cGUgPT09IFwiTWVtYmVyRXhwcmVzc2lvblwiICYmXG4gICAgICAhaXNOYW1lZFJlY2VpdmVyKGFzTm9kZShjYWxsZWVbXCJvYmplY3RcIl0pKSkgfHxcbiAgICBnZXRJZGVudGlmaWVyTmFtZShjYWxsZWUpID09PSBmdW5jdGlvbk5hbWUgfHxcbiAgICBhcmd1bWVudHNfLmxlbmd0aCAhPT0gcGFyYW1ldGVycy5sZW5ndGhcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGFyZ3VtZW50c18uZXZlcnkoKGFyZ3VtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtZXRlciA9IHBhcmFtZXRlcnNbaW5kZXhdO1xuICAgIHJldHVybiBwYXJhbWV0ZXIgIT09IHZvaWQgMCAmJiBmb3J3YXJkc1BhcmFtZXRlcihhcmd1bWVudCwgcGFyYW1ldGVyKTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIFJlcG9ydHMgYSBmdW5jdGlvbiB3aGVuIGl0IGlzIGEgbm8tb3AgZGVsZWdhdGlvbi5cbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHQuXG4gKiBAcGFyYW0gZnVuY3Rpb25Ob2RlIEZ1bmN0aW9uIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSBuYW1lTm9kZSBEZWNsYXJlZCB3cmFwcGVyIG5hbWUgbm9kZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiByZXBvcnRJZlVzZWxlc3NEZWxlZ2F0aW9uKGNvbnRleHQsIGZ1bmN0aW9uTm9kZSwgbmFtZU5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IHJlcG9ydElmVXNlbGVzc0RlbGVnYXRpb24gPSAoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIGZ1bmN0aW9uTm9kZTogTm9kZSxcbiAgbmFtZU5vZGU6IE5vZGUgfCB1bmRlZmluZWQsXG4pOiB2b2lkID0+IHtcbiAgY29uc3QgZnVuY3Rpb25OYW1lID0gZ2V0SWRlbnRpZmllck5hbWUobmFtZU5vZGUpO1xuICBpZiAoXG4gICAgZnVuY3Rpb25OYW1lID09PSB2b2lkIDAgfHxcbiAgICAhaXNVc2VsZXNzRGVsZWdhdGlvbihmdW5jdGlvbk5vZGUsIGZ1bmN0aW9uTmFtZSlcbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29udGV4dC5yZXBvcnQoe1xuICAgIG1lc3NhZ2VJZDogXCJ1c2VsZXNzRGVsZWdhdGlvblwiLFxuICAgIG5vZGU6IG5hbWVOb2RlIGFzIHVua25vd24gYXMgUnVsZS5Ob2RlLFxuICB9KTtcbn07XG5cbi8qKiBFU0xpbnQgcnVsZSBpbXBsZW1lbnRhdGlvbiBmb3IgZnVuY3Rpb25zIHRoYXQgb25seSBmb3J3YXJkIHRoZWlyIGFyZ3VtZW50cy4gKi9cbmNvbnN0IG5vVXNlbGVzc0RlbGVnYXRpb25SdWxlOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZTogKGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQpOiBSdWxlLlJ1bGVMaXN0ZW5lciA9PiAoe1xuICAgIEZ1bmN0aW9uRGVjbGFyYXRpb246IChub2RlOiBSdWxlLk5vZGUpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IGZ1bmN0aW9uTm9kZSA9IG5vZGUgYXMgdW5rbm93biBhcyBOb2RlO1xuICAgICAgcmVwb3J0SWZVc2VsZXNzRGVsZWdhdGlvbihcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgZnVuY3Rpb25Ob2RlLFxuICAgICAgICBhc05vZGUoZnVuY3Rpb25Ob2RlW1wiaWRcIl0pLFxuICAgICAgKTtcbiAgICB9LFxuICAgIFZhcmlhYmxlRGVjbGFyYXRvcjogKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQgPT4ge1xuICAgICAgY29uc3QgZGVjbGFyYXRvciA9IG5vZGUgYXMgdW5rbm93biBhcyBOb2RlO1xuICAgICAgY29uc3QgaW5pdGlhbGl6ZXIgPSBhc05vZGUoZGVjbGFyYXRvcltcImluaXRcIl0pO1xuICAgICAgaWYgKFxuICAgICAgICBpbml0aWFsaXplcj8udHlwZSAhPT0gXCJBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvblwiICYmXG4gICAgICAgIGluaXRpYWxpemVyPy50eXBlICE9PSBcIkZ1bmN0aW9uRXhwcmVzc2lvblwiXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXBvcnRJZlVzZWxlc3NEZWxlZ2F0aW9uKGNvbnRleHQsIGluaXRpYWxpemVyLCBhc05vZGUoZGVjbGFyYXRvcltcImlkXCJdKSk7XG4gICAgfSxcbiAgfSksXG4gIG1ldGE6IHtcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJEaXNhbGxvdyBuYW1lZCBmdW5jdGlvbnMgdGhhdCBvbmx5IGRlbGVnYXRlIGRpcmVjdGx5IHRvIGFub3RoZXIgY2FsbC5cIixcbiAgICAgIHJlY29tbWVuZGVkOiBmYWxzZSxcbiAgICAgIHVybDogXCJodHRwczovL2dpdGh1Yi5jb20vcGFybG90aS9lc2xpbnQtcGx1Z2luL2Jsb2IvbWFpbi9kb2NzL3J1bGVzL25vLXVzZWxlc3MtZGVsZWdhdGlvbi5tZFwiLFxuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHVzZWxlc3NEZWxlZ2F0aW9uOlxuICAgICAgICBcIlRoaXMgZnVuY3Rpb24gb25seSBkZWxlZ2F0ZXMgdG8gYW5vdGhlciBjYWxsOyByZW1vdmUgdGhlIHdyYXBwZXIgb3IgY2FsbCB0aGUgdGFyZ2V0IGRpcmVjdGx5LlwiLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiBcInN1Z2dlc3Rpb25cIixcbiAgfSxcbn07XG5cbmV4cG9ydCB7IG5vVXNlbGVzc0RlbGVnYXRpb25SdWxlIH07XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/no-interface-member-docs/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AA2PnC,+EAA+E;AAC/E,QAAA,MAAM,kCAAkC,EAAE,IAAI,CAAC,UAkC9C,CAAC;AAEF,OAAO,EAAE,kCAAkC,EAAE,CAAC"}
1
+ {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/no-interface-member-docs/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AA+PnC,+EAA+E;AAC/E,QAAA,MAAM,kCAAkC,EAAE,IAAI,CAAC,UAqC9C,CAAC;AAEF,OAAO,EAAE,kCAAkC,EAAE,CAAC"}
@@ -45,11 +45,13 @@ const reportMemberDocumentation = (context, details) => {
45
45
  const { commentStart, commentText, memberTags, node } = details;
46
46
  for (const tag of memberTags) {
47
47
  const removalRange = buildRemovalRange(commentStart, commentText, tag.line);
48
+ const fix = (fixer) => fixer.removeRange(removalRange);
48
49
  context.report({
49
50
  data: { parameterName: tag.fullName },
50
- fix: (fixer) => fixer.removeRange(removalRange),
51
+ fix,
51
52
  messageId: "interfaceMemberDoc",
52
53
  node,
54
+ suggest: [{ fix, messageId: "removeMemberDoc" }],
53
55
  });
54
56
  }
55
57
  };
@@ -166,12 +168,14 @@ const noInterfaceMemberDocumentationRule = {
166
168
  url: "https://github.com/parloti/eslint-plugin/blob/main/docs/rules/no-interface-member-docs.md",
167
169
  },
168
170
  fixable: "code",
171
+ hasSuggestions: true,
169
172
  messages: {
170
173
  interfaceMemberDoc: "Document interface members on the interface instead of using @param for {{parameterName}}.",
174
+ removeMemberDoc: "Remove the @param tag documenting this interface member.",
171
175
  },
172
176
  schema: [],
173
177
  type: "problem",
174
178
  },
175
179
  };
176
180
  export { noInterfaceMemberDocumentationRule };
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vZG9jcy9uby1pbnRlcmZhY2UtbWVtYmVyLWRvY3MvcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLG9CQUFvQixHQUNyQixNQUFNLHVCQUF1QixDQUFDO0FBa0QvQjs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLG1CQUFtQixHQUFHLENBQzFCLEdBQW1DLEVBQ25DLGNBQStDLEVBQ3BCLEVBQUU7SUFDN0IsSUFBSSxHQUFHLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNuQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV2RCxPQUFPLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0saUJBQWlCLEdBQUcsQ0FDeEIsV0FBbUIsRUFDbkIsY0FBK0MsRUFDekIsRUFBRSxDQUN4QixlQUFlLENBQUMsV0FBVyxDQUFDO0tBQ3pCLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDMUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztBQUUvRDs7Ozs7Ozs7R0FRRztBQUNILE1B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QUNULGdHQUFnRztZQUNsRyxXQUFXLEVBQUUsS0FBSztZQUNsQixHQUFHLEVBQUUsMkZBQTJGO1NBQ2pHO1FBQ0QsT0FBTyxFQUFFLE1BQU07UUFDZixRQUFRLEVBQUU7WUFDUixrQkFBa0IsRUFDaEIsNEZBQTRGO1NBQy9GO1FBQ0QsTUFBTSxFQUFFLEVBQUU7UUFDVixJQUFJLEVBQUUsU0FBUztLQUNoQjtDQUNGLENBQUM7QUFFRixPQUFPLEVBQUUsa0NBQWtDLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUgeyBDb21tZW50LCBQYXJhbWV0ZXJNZW1iZXJUYWcsIFR5cGVBbm5vdGF0aW9uTm9kZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmltcG9ydCB7IGJ1aWxkUmVtb3ZhbFJhbmdlLCBnZXRDb21tZW50TGluZXMgfSBmcm9tIFwiLi9jb21tZW50LXJlbW92YWwtcmFuZ2VzXCI7XG5pbXBvcnQgeyBnZXRDb21tZW50VGV4dCwgZ2V0SnNkb2NDb21tZW50IH0gZnJvbSBcIi4vY29tbWVudC11dGlsaXRpZXNcIjtcbmltcG9ydCB7IHBhcnNlUGFyYW1ldGVyVGFnTGluZSB9IGZyb20gXCIuL3BhcmFtZXRlci10YWdzXCI7XG5pbXBvcnQge1xuICBnZXRQYXJhbWV0ZXJUeXBlTG9va3VwLFxuICBpc05hbWVkVHlwZVJlZmVyZW5jZSxcbn0gZnJvbSBcIi4vcGFyYW1ldGVyLXV0aWxpdGllc1wiO1xuXG4vKiogSlNEb2MgZGF0YSBleHRyYWN0ZWQgZnJvbSBhIGZ1bmN0aW9uLWxpa2Ugbm9kZS4gKi9cbmludGVyZmFjZSBKc2RvY0RhdGEge1xuICAvKiogQ29tbWVudCBmaWVsZCB2YWx1ZS4gKi9cbiAgY29tbWVudDogQ29tbWVudDtcblxuICAvKiogQ29tbWVudFN0YXJ0IGZpZWxkIHZhbHVlLiAqL1xuICBjb21tZW50U3RhcnQ6IG51bWJlcjtcblxuICAvKiogVGV4dCBmaWVsZCB2YWx1ZS4gKi9cbiAgdGV4dDogc3RyaW5nO1xufVxuXG4vKiogTWVtYmVyLXRhZyBjb250ZXh0IHJlc29sdmVkIGZvciByZXBvcnRpbmcuICovXG5pbnRlcmZhY2UgTWVtYmVyVGFnQ29udGV4dCB7XG4gIC8qKiBDb21tZW50IGZpZWxkIHZhbHVlLiAqL1xuICBjb21tZW50OiBDb21tZW50O1xuXG4gIC8qKiBDb21tZW50U3RhcnQgZmllbGQgdmFsdWUuICovXG4gIGNvbW1lbnRTdGFydDogbnVtYmVyO1xuXG4gIC8qKiBDb21tZW50VGV4dCBmaWVsZCB2YWx1ZS4gKi9cbiAgY29tbWVudFRleHQ6IHN0cmluZztcblxuICAvKiogTWVtYmVyVGFncyBmaWVsZCB2YWx1ZS4gKi9cbiAgbWVtYmVyVGFnczogUGFyYW1ldGVyTWVtYmVyVGFnW107XG59XG5cbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHJ1bGUgZGF0YS4gKi9cbmludGVyZmFjZSBSZXBvcnRNZW1iZXJEb2N1bWVudGF0aW9uQ29udGV4dCB7XG4gIC8qKiBDb21tZW50IGZpZWxkIHZhbHVlLiAqL1xuICBjb21tZW50OiBDb21tZW50O1xuXG4gIC8qKiBDb21tZW50U3RhcnQgZmllbGQgdmFsdWUuICovXG4gIGNvbW1lbnRTdGFydDogbnVtYmVyO1xuXG4gIC8qKiBDb21tZW50VGV4dCBmaWVsZCB2YWx1ZS4gKi9cbiAgY29tbWVudFRleHQ6IHN0cmluZztcblxuICAvKiogTWVtYmVyVGFncyBmaWVsZCB2YWx1ZS4gKi9cbiAgbWVtYmVyVGFnczogUGFyYW1ldGVyTWVtYmVyVGFnW107XG5cbiAgLyoqIE5vZGUgZmllbGQgdmFsdWUuICovXG4gIG5vZGU6IFJ1bGUuTm9kZTtcblxuICAvKiogU291cmNlQ29kZSBmaWVsZCB2YWx1ZS4gKi9cbiAgc291cmNlQ29kZTogUnVsZS5SdWxlQ29udGV4dFtcInNvdXJjZUNvZGVcIl07XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBwYXJhbWV0ZXIgbWVtYmVyIHRhZyBtYXRjaGVzIGEgbmFtZWQgdHlwZSByZWZlcmVuY2UuXG4gKiBAcGFyYW0gdGFnIFBhcnNlZCBwYXJhbWV0ZXIgbWVtYmVyIHRhZy5cbiAqIEBwYXJhbSBwYXJhbWV0ZXJUeXBlcyBQYXJhbWV0ZXIgdHlwZSBsb29rdXAuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIHRhZyBtYXRjaGVzIGEgbmFtZWQgdHlwZSByZWZlcmVuY2UuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgb2sgPSBpc01hdGNoaW5nTWVtYmVyVGFnKHRhZywgcGFyYW1ldGVyVHlwZXMpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzTWF0Y2hpbmdNZW1iZXJUYWcgPSAoXG4gIHRhZzogUGFyYW1ldGVyTWVtYmVyVGFnIHwgdW5kZWZpbmVkLFxuICBwYXJhbWV0ZXJUeXBlczogTWFwPHN0cmluZywgVHlwZUFubm90YXRpb25Ob2RlPixcbik6IHRhZyBpcyBQYXJhbWV0ZXJNZW1iZXJUYWcgPT4ge1xuICBpZiAodGFnID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBwYXJhbWV0ZXJUeXBlID0gcGFyYW1ldGVyVHlwZXMuZ2V0KHRhZy5iYXNlbmFtZSk7XG5cbiAgcmV0dXJuIGlzTmFtZWRUeXBlUmVmZXJlbmNlKHBhcmFtZXRlclR5cGUpO1xufTtcblxuLyoqXG4gKiBDb2xsZWN0cyBtZW1iZXIgdGFncyBmcm9tIGEgSlNEb2MgY29tbWVudC5cbiAqIEBwYXJhbSBjb21tZW50VGV4dCBGdWxsIGNvbW1lbnQgdGV4dC5cbiAqIEBwYXJhbSBwYXJhbWV0ZXJUeXBlcyBQYXJhbWV0ZXIgdHlwZSBsb29rdXAuXG4gKiBAcmV0dXJucyBNZW1iZXIgdGFncyB0aGF0IG1hdGNoIG5hbWVkIHR5cGUgcmVmZXJlbmNlcy5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB0YWdzID0gY29sbGVjdE1lbWJlclRhZ3MoY29tbWVudFRleHQsIHBhcmFtZXRlclR5cGVzKTtcbiAqIGBgYFxuICovXG5jb25zdCBjb2xsZWN0TWVtYmVyVGFncyA9IChcbiAgY29tbWVudFRleHQ6IHN0cmluZyxcbiAgcGFyYW1ldGVyVHlwZXM6IE1hcDxzdHJpbmcsIFR5cGVBbm5vdGF0aW9uTm9kZT4sXG4pOiBQYXJhbWV0ZXJNZW1iZXJUYWdbXSA9PlxuICBnZXRDb21tZW50TGluZXMoY29tbWVudFRleHQpXG4gICAgLm1hcCgobGluZSkgPT4gcGFyc2VQYXJhbWV0ZXJUYWdMaW5lKGxpbmUpKVxuICAgIC5maWx0ZXIoKHRhZykgPT4gaXNNYXRjaGluZ01lbWJlclRhZyh0YWcsIHBhcmFtZXRlclR5cGVzKSk7XG5cbi8qKlxuICogUmVwb3J0cyBpbnRlcmZhY2UgbWVtYmVyIGRvY3VtZW50YXRpb24gZW50cmllcyBmb3IgcmVtb3ZhbC5cbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHQuXG4gKiBAcGFyYW0gZGV0YWlscyBDb2xsZWN0ZWQgcnVsZSBkZXRhaWxzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJlcG9ydE1lbWJlckRvY3VtZW50YXRpb24oY29udGV4dCwgZGV0YWlscyk7XG4gKiBgYGBcbiAqL1xuY29uc3QgcmVwb3J0TWVtYmVyRG9jdW1lbnRhdGlvbiA9IChcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcbiAgZGV0YWlsczogUmVwb3J0TWVtYmVyRG9jdW1lbnRhdGlvbkNvbnRleHQsXG4pOiB2b2lkID0+IHtcbiAgY29uc3QgeyBjb21tZW50U3RhcnQsIGNvbW1lbnRUZXh0LCBtZW1iZXJUYWdzLCBub2RlIH0gPSBkZXRhaWxzO1xuXG4gIGZvciAoY29uc3QgdGFnIG9mIG1lbWJlclRhZ3MpIHtcbiAgICBjb25zdCByZW1vdmFsUmFuZ2UgPSBidWlsZFJlbW92YWxSYW5nZShjb21tZW50U3RhcnQsIGNvbW1lbnRUZXh0LCB0YWcubGluZSk7XG5cbiAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICBkYXRhOiB7IHBhcmFtZXRlck5hbWU6IHRhZy5mdWxsTmFtZSB9LFxuICAgICAgZml4OiAoZml4ZXI6IFJ1bGUuUnVsZUZpeGVyKTogUnVsZS5GaXggPT4gZml4ZXIucmVtb3ZlUmFuZ2UocmVtb3ZhbFJhbmdlKSxcbiAgICAgIG1lc3NhZ2VJZDogXCJpbnRlcmZhY2VNZW1iZXJEb2NcIixcbiAgICAgIG5vZGUsXG4gICAgfSk7XG4gIH1cbn07XG5cbi8qKlxuICogR2V0cyBwYXJhbWV0ZXIgdHlwZSByZWZlcmVuY2VzIGZvciBhIG5vZGUuXG4gKiBAcGFyYW0gbm9kZSBGdW5jdGlvbi1saWtlIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFBhcmFtZXRlciB0eXBlIGxvb2t1cCB3aGVuIHByZXNlbnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbG9va3VwID0gZ2V0UGFyYW1ldGVyVHlwZXMobm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0UGFyYW1ldGVyVHlwZXMgPSAoXG4gIG5vZGU6IFJ1bGUuTm9kZSxcbik6IE1hcDxzdHJpbmcsIFR5cGVBbm5vdGF0aW9uTm9kZT4gfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBwYXJhbWV0ZXJUeXBlcyA9IGdldFBhcmFtZXRlclR5cGVMb29rdXAobm9kZSk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlclR5cGVzLnNpemUgPiAwID8gcGFyYW1ldGVyVHlwZXMgOiB2b2lkIDA7XG59O1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBKU0RvYyBjb21tZW50IGRhdGEgZm9yIGEgbm9kZS5cbiAqIEBwYXJhbSBzb3VyY2VDb2RlIFNvdXJjZUNvZGUgd3JhcHBlci5cbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIEpTRG9jIGRhdGEgd2hlbiBhdmFpbGFibGUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZGF0YSA9IGdldEpzZG9jRGF0YShzb3VyY2VDb2RlLCBub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRKc2RvY0RhdGEgPSAoXG4gIHNvdXJjZUNvZGU6IFJ1bGUuUnVsZUNvbnRleHRbXCJzb3VyY2VDb2RlXCJdLFxuICBub2RlOiBSdWxlLk5vZGUsXG4pOiBKc2RvY0RhdGEgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBjb21tZW50ID0gZ2V0SnNkb2NDb21tZW50KHNvdXJjZUNvZGUsIG5vZGUpO1xuXG4gIGlmIChjb21tZW50ID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgY29tbWVudFN0YXJ0ID0gY29tbWVudC5yYW5nZT8uWzBdO1xuXG4gIGlmICh0eXBlb2YgY29tbWVudFN0YXJ0ICE9PSBcIm51bWJlclwiKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IHRleHQgPSBnZXRDb21tZW50VGV4dChzb3VyY2VDb2RlLCBjb21tZW50KTtcblxuICByZXR1cm4geyBjb21tZW50LCBjb21tZW50U3RhcnQsIHRleHQgfTtcbn07XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIG1lbWJlciB0YWcgY29udGV4dCBmb3IgYSBub2RlLlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dC5cbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIE1lbWJlciB0YWcgY29udGV4dCB3aGVuIGF2YWlsYWJsZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjb250ZXh0ID0gcmVzb2x2ZU1lbWJlclRhZ0NvbnRleHQoY29udGV4dCwgbm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgcmVzb2x2ZU1lbWJlclRhZ0NvbnRleHQgPSAoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIG5vZGU6IFJ1bGUuTm9kZSxcbik6IE1lbWJlclRhZ0NvbnRleHQgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBwYXJhbWV0ZXJUeXBlcyA9IGdldFBhcmFtZXRlclR5cGVzKG5vZGUpO1xuICBjb25zdCBqc2RvY0RhdGEgPSBnZXRKc2RvY0RhdGEoY29udGV4dC5zb3VyY2VDb2RlLCBub2RlKTtcblxuICBpZiAocGFyYW1ldGVyVHlwZXMgPT09IHZvaWQgMCB8fCBqc2RvY0RhdGEgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCBtZW1iZXJUYWdzID0gY29sbGVjdE1lbWJlclRhZ3MoanNkb2NEYXRhLnRleHQsIHBhcmFtZXRlclR5cGVzKTtcblxuICByZXR1cm4gbWVtYmVyVGFncy5sZW5ndGggPiAwXG4gICAgPyB7XG4gICAgICAgIGNvbW1lbnQ6IGpzZG9jRGF0YS5jb21tZW50LFxuICAgICAgICBjb21tZW50U3RhcnQ6IGpzZG9jRGF0YS5jb21tZW50U3RhcnQsXG4gICAgICAgIGNvbW1lbnRUZXh0OiBqc2RvY0RhdGEudGV4dCxcbiAgICAgICAgbWVtYmVyVGFncyxcbiAgICAgIH1cbiAgICA6IHZvaWQgMDtcbn07XG5cbi8qKiBIYW5kbGVzIGZ1bmN0aW9uLWxpa2Ugbm9kZXMgZm9yIHRoZSBuby1pbnRlcmZhY2UtbWVtYmVyLWRvY3MgcnVsZS4gKi9cbmludGVyZmFjZSBOb2RlVmFsdWUge1xuICAvKipcbiAgICogVmFsdWUgZmllbGQgZm9yIG1ldGhvZCBkZWZpbml0aW9uczsgZnVuY3Rpb24tbGlrZSBub2RlcyBoYXZlIG5vIHZhbHVlIGZpZWxkLCBzbyB0aGlzIGlzIG9wdGlvbmFsLlxuICAgKi9cbiAgdmFsdWU/OiBSdWxlLk5vZGU7XG59XG5cbi8qKlxuICogSGFuZGxlcyBmdW5jdGlvbi1saWtlIG5vZGVzIGZvciB0aGlzIHJ1bGUuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBpbnNwZWN0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGhhbmRsZUZ1bmN0aW9uTGlrZShjb250ZXh0LCBub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBoYW5kbGVGdW5jdGlvbkxpa2UgPSAoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIG5vZGU6IFJ1bGUuTm9kZSxcbik6IHZvaWQgPT4ge1xuICBjb25zdCBmdW5jdGlvbkxpa2VOb2RlID1cbiAgICBub2RlLnR5cGUgPT09IFwiTWV0aG9kRGVmaW5pdGlvblwiXG4gICAgICA/ICgobm9kZSBhcyB1bmtub3duIGFzIE5vZGVWYWx1ZSkudmFsdWUgPz8gbm9kZSlcbiAgICAgIDogbm9kZTtcblxuICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVNZW1iZXJUYWdDb250ZXh0KGNvbnRleHQsIGZ1bmN0aW9uTGlrZU5vZGUpO1xuXG4gIGlmIChyZXNvbHZlZCA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmVwb3J0TWVtYmVyRG9jdW1lbnRhdGlvbihjb250ZXh0LCB7XG4gICAgY29tbWVudDogcmVzb2x2ZWQuY29tbWVudCxcbiAgICBjb21tZW50U3RhcnQ6IHJlc29sdmVkLmNvbW1lbnRTdGFydCxcbiAgICBjb21tZW50VGV4dDogcmVzb2x2ZWQuY29tbWVudFRleHQsXG4gICAgbWVtYmVyVGFnczogcmVzb2x2ZWQubWVtYmVyVGFncyxcbiAgICBub2RlLFxuICAgIHNvdXJjZUNvZGU6IGNvbnRleHQuc291cmNlQ29kZSxcbiAgfSk7XG59O1xuXG4vKiogRVNMaW50IHJ1bGUgZGlzYWxsb3dpbmcgaW50ZXJmYWNlIG1lbWJlciBkb2N1bWVudGF0aW9uIGluIGBAcGFyYW1gIHRhZ3MuICovXG5jb25zdCBub0ludGVyZmFjZU1lbWJlckRvY3VtZW50YXRpb25SdWxlOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZShjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZS5SdWxlTGlzdGVuZXIge1xuICAgIGNvbnN0IGxpc3RlbmVyID0gKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQgPT4ge1xuICAgICAgaGFuZGxlRnVuY3Rpb25MaWtlKGNvbnRleHQsIG5vZGUpO1xuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgQXJyb3dGdW5jdGlvbkV4cHJlc3Npb246IGxpc3RlbmVyLFxuICAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbjogbGlzdGVuZXIsXG4gICAgICBGdW5jdGlvbkV4cHJlc3Npb246IGxpc3RlbmVyLFxuICAgICAgTWV0aG9kRGVmaW5pdGlvbjogbGlzdGVuZXIsXG4gICAgICBUU0Fic3RyYWN0TWV0aG9kRGVmaW5pdGlvbjogbGlzdGVuZXIsXG4gICAgICBUU0NhbGxTaWduYXR1cmVEZWNsYXJhdGlvbjogbGlzdGVuZXIsXG4gICAgICBUU0NvbnN0cnVjdFNpZ25hdHVyZURlY2xhcmF0aW9uOiBsaXN0ZW5lcixcbiAgICAgIFRTRGVjbGFyZUZ1bmN0aW9uOiBsaXN0ZW5lcixcbiAgICAgIFRTRnVuY3Rpb25UeXBlOiBsaXN0ZW5lcixcbiAgICAgIFRTTWV0aG9kU2lnbmF0dXJlOiBsaXN0ZW5lcixcbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiRGlzYWxsb3cgZG9jdW1lbnRpbmcgaW50ZXJmYWNlIG1lbWJlcnMgaW4gQHBhcmFtIHRhZ3M7IGRvY3VtZW50IHRoZW0gb24gdGhlIGludGVyZmFjZSBpbnN0ZWFkLlwiLFxuICAgICAgcmVjb21tZW5kZWQ6IGZhbHNlLFxuICAgICAgdXJsOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9wYXJsb3RpL2VzbGludC1wbHVnaW4vYmxvYi9tYWluL2RvY3MvcnVsZXMvbm8taW50ZXJmYWNlLW1lbWJlci1kb2NzLm1kXCIsXG4gICAgfSxcbiAgICBmaXhhYmxlOiBcImNvZGVcIixcbiAgICBtZXNzYWdlczoge1xuICAgICAgaW50ZXJmYWNlTWVtYmVyRG9jOlxuICAgICAgICBcIkRvY3VtZW50IGludGVyZmFjZSBtZW1iZXJzIG9uIHRoZSBpbnRlcmZhY2UgaW5zdGVhZCBvZiB1c2luZyBAcGFyYW0gZm9yIHt7cGFyYW1ldGVyTmFtZX19LlwiLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiBcInByb2JsZW1cIixcbiAgfSxcbn07XG5cbmV4cG9ydCB7IG5vSW50ZXJmYWNlTWVtYmVyRG9jdW1lbnRhdGlvblJ1bGUgfTtcbiJdfQ==
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vZG9jcy9uby1pbnRlcmZhY2UtbWVtYmVyLWRvY3MvcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLG9CQUFvQixHQUNyQixNQUFNLHVCQUF1QixDQUFDO0FBa0QvQjs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLG1CQUFtQixHQUFHLENBQzFCLEdBQW1DLEVBQ25DLGNBQStDLEVBQ3BCLEVBQUU7SUFDN0IsSUFBSSxHQUFHLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNuQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV2RCxPQUFPLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0saUJBQWlCLEdBQUcsQ0FDeEIsV0FBbUIsRUFDbkIsY0FBK0MsRUFDekIsRUFBRSxDQUN4QixlQUFlLENBQUMsV0FBVyxDQUFDO0tBQ3pCLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDMUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztBQUUvRDs7Ozs7Ozs7R0FRRztBQUNILE1B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QUN4QixpQkFBaUIsRUFBRSxRQUFRO1NBQzVCLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFO1lBQ0osV0FBVyxFQUNULGdHQUFnRztZQUNsRyxXQUFXLEVBQUUsS0FBSztZQUNsQixHQUFHLEVBQUUsMkZBQTJGO1NBQ2pHO1FBQ0QsT0FBTyxFQUFFLE1BQU07UUFDZixjQUFjLEVBQUUsSUFBSTtRQUNwQixRQUFRLEVBQUU7WUFDUixrQkFBa0IsRUFDaEIsNEZBQTRGO1lBQzlGLGVBQWUsRUFDYiwwREFBMEQ7U0FDN0Q7UUFDRCxNQUFNLEVBQUUsRUFBRTtRQUNWLElBQUksRUFBRSxTQUFTO0tBQ2hCO0NBQ0YsQ0FBQztBQUVGLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSBcImVzbGludFwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbW1lbnQsIFBhcmFtZXRlck1lbWJlclRhZywgVHlwZUFubm90YXRpb25Ob2RlIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuaW1wb3J0IHsgYnVpbGRSZW1vdmFsUmFuZ2UsIGdldENvbW1lbnRMaW5lcyB9IGZyb20gXCIuL2NvbW1lbnQtcmVtb3ZhbC1yYW5nZXNcIjtcbmltcG9ydCB7IGdldENvbW1lbnRUZXh0LCBnZXRKc2RvY0NvbW1lbnQgfSBmcm9tIFwiLi9jb21tZW50LXV0aWxpdGllc1wiO1xuaW1wb3J0IHsgcGFyc2VQYXJhbWV0ZXJUYWdMaW5lIH0gZnJvbSBcIi4vcGFyYW1ldGVyLXRhZ3NcIjtcbmltcG9ydCB7XG4gIGdldFBhcmFtZXRlclR5cGVMb29rdXAsXG4gIGlzTmFtZWRUeXBlUmVmZXJlbmNlLFxufSBmcm9tIFwiLi9wYXJhbWV0ZXItdXRpbGl0aWVzXCI7XG5cbi8qKiBKU0RvYyBkYXRhIGV4dHJhY3RlZCBmcm9tIGEgZnVuY3Rpb24tbGlrZSBub2RlLiAqL1xuaW50ZXJmYWNlIEpzZG9jRGF0YSB7XG4gIC8qKiBDb21tZW50IGZpZWxkIHZhbHVlLiAqL1xuICBjb21tZW50OiBDb21tZW50O1xuXG4gIC8qKiBDb21tZW50U3RhcnQgZmllbGQgdmFsdWUuICovXG4gIGNvbW1lbnRTdGFydDogbnVtYmVyO1xuXG4gIC8qKiBUZXh0IGZpZWxkIHZhbHVlLiAqL1xuICB0ZXh0OiBzdHJpbmc7XG59XG5cbi8qKiBNZW1iZXItdGFnIGNvbnRleHQgcmVzb2x2ZWQgZm9yIHJlcG9ydGluZy4gKi9cbmludGVyZmFjZSBNZW1iZXJUYWdDb250ZXh0IHtcbiAgLyoqIENvbW1lbnQgZmllbGQgdmFsdWUuICovXG4gIGNvbW1lbnQ6IENvbW1lbnQ7XG5cbiAgLyoqIENvbW1lbnRTdGFydCBmaWVsZCB2YWx1ZS4gKi9cbiAgY29tbWVudFN0YXJ0OiBudW1iZXI7XG5cbiAgLyoqIENvbW1lbnRUZXh0IGZpZWxkIHZhbHVlLiAqL1xuICBjb21tZW50VGV4dDogc3RyaW5nO1xuXG4gIC8qKiBNZW1iZXJUYWdzIGZpZWxkIHZhbHVlLiAqL1xuICBtZW1iZXJUYWdzOiBQYXJhbWV0ZXJNZW1iZXJUYWdbXTtcbn1cblxuLyoqIFR5cGUgZGVmaW5pdGlvbiBmb3IgcnVsZSBkYXRhLiAqL1xuaW50ZXJmYWNlIFJlcG9ydE1lbWJlckRvY3VtZW50YXRpb25Db250ZXh0IHtcbiAgLyoqIENvbW1lbnQgZmllbGQgdmFsdWUuICovXG4gIGNvbW1lbnQ6IENvbW1lbnQ7XG5cbiAgLyoqIENvbW1lbnRTdGFydCBmaWVsZCB2YWx1ZS4gKi9cbiAgY29tbWVudFN0YXJ0OiBudW1iZXI7XG5cbiAgLyoqIENvbW1lbnRUZXh0IGZpZWxkIHZhbHVlLiAqL1xuICBjb21tZW50VGV4dDogc3RyaW5nO1xuXG4gIC8qKiBNZW1iZXJUYWdzIGZpZWxkIHZhbHVlLiAqL1xuICBtZW1iZXJUYWdzOiBQYXJhbWV0ZXJNZW1iZXJUYWdbXTtcblxuICAvKiogTm9kZSBmaWVsZCB2YWx1ZS4gKi9cbiAgbm9kZTogUnVsZS5Ob2RlO1xuXG4gIC8qKiBTb3VyY2VDb2RlIGZpZWxkIHZhbHVlLiAqL1xuICBzb3VyY2VDb2RlOiBSdWxlLlJ1bGVDb250ZXh0W1wic291cmNlQ29kZVwiXTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHBhcmFtZXRlciBtZW1iZXIgdGFnIG1hdGNoZXMgYSBuYW1lZCB0eXBlIHJlZmVyZW5jZS5cbiAqIEBwYXJhbSB0YWcgUGFyc2VkIHBhcmFtZXRlciBtZW1iZXIgdGFnLlxuICogQHBhcmFtIHBhcmFtZXRlclR5cGVzIFBhcmFtZXRlciB0eXBlIGxvb2t1cC5cbiAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgdGFnIG1hdGNoZXMgYSBuYW1lZCB0eXBlIHJlZmVyZW5jZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBvayA9IGlzTWF0Y2hpbmdNZW1iZXJUYWcodGFnLCBwYXJhbWV0ZXJUeXBlcyk7XG4gKiBgYGBcbiAqL1xuY29uc3QgaXNNYXRjaGluZ01lbWJlclRhZyA9IChcbiAgdGFnOiBQYXJhbWV0ZXJNZW1iZXJUYWcgfCB1bmRlZmluZWQsXG4gIHBhcmFtZXRlclR5cGVzOiBNYXA8c3RyaW5nLCBUeXBlQW5ub3RhdGlvbk5vZGU+LFxuKTogdGFnIGlzIFBhcmFtZXRlck1lbWJlclRhZyA9PiB7XG4gIGlmICh0YWcgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHBhcmFtZXRlclR5cGUgPSBwYXJhbWV0ZXJUeXBlcy5nZXQodGFnLmJhc2VuYW1lKTtcblxuICByZXR1cm4gaXNOYW1lZFR5cGVSZWZlcmVuY2UocGFyYW1ldGVyVHlwZSk7XG59O1xuXG4vKipcbiAqIENvbGxlY3RzIG1lbWJlciB0YWdzIGZyb20gYSBKU0RvYyBjb21tZW50LlxuICogQHBhcmFtIGNvbW1lbnRUZXh0IEZ1bGwgY29tbWVudCB0ZXh0LlxuICogQHBhcmFtIHBhcmFtZXRlclR5cGVzIFBhcmFtZXRlciB0eXBlIGxvb2t1cC5cbiAqIEByZXR1cm5zIE1lbWJlciB0YWdzIHRoYXQgbWF0Y2ggbmFtZWQgdHlwZSByZWZlcmVuY2VzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHRhZ3MgPSBjb2xsZWN0TWVtYmVyVGFncyhjb21tZW50VGV4dCwgcGFyYW1ldGVyVHlwZXMpO1xuICogYGBgXG4gKi9cbmNvbnN0IGNvbGxlY3RNZW1iZXJUYWdzID0gKFxuICBjb21tZW50VGV4dDogc3RyaW5nLFxuICBwYXJhbWV0ZXJUeXBlczogTWFwPHN0cmluZywgVHlwZUFubm90YXRpb25Ob2RlPixcbik6IFBhcmFtZXRlck1lbWJlclRhZ1tdID0+XG4gIGdldENvbW1lbnRMaW5lcyhjb21tZW50VGV4dClcbiAgICAubWFwKChsaW5lKSA9PiBwYXJzZVBhcmFtZXRlclRhZ0xpbmUobGluZSkpXG4gICAgLmZpbHRlcigodGFnKSA9PiBpc01hdGNoaW5nTWVtYmVyVGFnKHRhZywgcGFyYW1ldGVyVHlwZXMpKTtcblxuLyoqXG4gKiBSZXBvcnRzIGludGVyZmFjZSBtZW1iZXIgZG9jdW1lbnRhdGlvbiBlbnRyaWVzIGZvciByZW1vdmFsLlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dC5cbiAqIEBwYXJhbSBkZXRhaWxzIENvbGxlY3RlZCBydWxlIGRldGFpbHMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogcmVwb3J0TWVtYmVyRG9jdW1lbnRhdGlvbihjb250ZXh0LCBkZXRhaWxzKTtcbiAqIGBgYFxuICovXG5jb25zdCByZXBvcnRNZW1iZXJEb2N1bWVudGF0aW9uID0gKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuICBkZXRhaWxzOiBSZXBvcnRNZW1iZXJEb2N1bWVudGF0aW9uQ29udGV4dCxcbik6IHZvaWQgPT4ge1xuICBjb25zdCB7IGNvbW1lbnRTdGFydCwgY29tbWVudFRleHQsIG1lbWJlclRhZ3MsIG5vZGUgfSA9IGRldGFpbHM7XG5cbiAgZm9yIChjb25zdCB0YWcgb2YgbWVtYmVyVGFncykge1xuICAgIGNvbnN0IHJlbW92YWxSYW5nZSA9IGJ1aWxkUmVtb3ZhbFJhbmdlKGNvbW1lbnRTdGFydCwgY29tbWVudFRleHQsIHRhZy5saW5lKTtcblxuICAgIGNvbnN0IGZpeCA9IChmaXhlcjogUnVsZS5SdWxlRml4ZXIpOiBSdWxlLkZpeCA9PlxuICAgICAgZml4ZXIucmVtb3ZlUmFuZ2UocmVtb3ZhbFJhbmdlKTtcblxuICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgIGRhdGE6IHsgcGFyYW1ldGVyTmFtZTogdGFnLmZ1bGxOYW1lIH0sXG4gICAgICBmaXgsXG4gICAgICBtZXNzYWdlSWQ6IFwiaW50ZXJmYWNlTWVtYmVyRG9jXCIsXG4gICAgICBub2RlLFxuICAgICAgc3VnZ2VzdDogW3sgZml4LCBtZXNzYWdlSWQ6IFwicmVtb3ZlTWVtYmVyRG9jXCIgfV0sXG4gICAgfSk7XG4gIH1cbn07XG5cbi8qKlxuICogR2V0cyBwYXJhbWV0ZXIgdHlwZSByZWZlcmVuY2VzIGZvciBhIG5vZGUuXG4gKiBAcGFyYW0gbm9kZSBGdW5jdGlvbi1saWtlIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFBhcmFtZXRlciB0eXBlIGxvb2t1cCB3aGVuIHByZXNlbnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbG9va3VwID0gZ2V0UGFyYW1ldGVyVHlwZXMobm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0UGFyYW1ldGVyVHlwZXMgPSAoXG4gIG5vZGU6IFJ1bGUuTm9kZSxcbik6IE1hcDxzdHJpbmcsIFR5cGVBbm5vdGF0aW9uTm9kZT4gfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBwYXJhbWV0ZXJUeXBlcyA9IGdldFBhcmFtZXRlclR5cGVMb29rdXAobm9kZSk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlclR5cGVzLnNpemUgPiAwID8gcGFyYW1ldGVyVHlwZXMgOiB2b2lkIDA7XG59O1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBKU0RvYyBjb21tZW50IGRhdGEgZm9yIGEgbm9kZS5cbiAqIEBwYXJhbSBzb3VyY2VDb2RlIFNvdXJjZUNvZGUgd3JhcHBlci5cbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIEpTRG9jIGRhdGEgd2hlbiBhdmFpbGFibGUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZGF0YSA9IGdldEpzZG9jRGF0YShzb3VyY2VDb2RlLCBub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRKc2RvY0RhdGEgPSAoXG4gIHNvdXJjZUNvZGU6IFJ1bGUuUnVsZUNvbnRleHRbXCJzb3VyY2VDb2RlXCJdLFxuICBub2RlOiBSdWxlLk5vZGUsXG4pOiBKc2RvY0RhdGEgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBjb21tZW50ID0gZ2V0SnNkb2NDb21tZW50KHNvdXJjZUNvZGUsIG5vZGUpO1xuXG4gIGlmIChjb21tZW50ID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgY29tbWVudFN0YXJ0ID0gY29tbWVudC5yYW5nZT8uWzBdO1xuXG4gIGlmICh0eXBlb2YgY29tbWVudFN0YXJ0ICE9PSBcIm51bWJlclwiKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IHRleHQgPSBnZXRDb21tZW50VGV4dChzb3VyY2VDb2RlLCBjb21tZW50KTtcblxuICByZXR1cm4geyBjb21tZW50LCBjb21tZW50U3RhcnQsIHRleHQgfTtcbn07XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIG1lbWJlciB0YWcgY29udGV4dCBmb3IgYSBub2RlLlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dC5cbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIE1lbWJlciB0YWcgY29udGV4dCB3aGVuIGF2YWlsYWJsZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjb250ZXh0ID0gcmVzb2x2ZU1lbWJlclRhZ0NvbnRleHQoY29udGV4dCwgbm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgcmVzb2x2ZU1lbWJlclRhZ0NvbnRleHQgPSAoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIG5vZGU6IFJ1bGUuTm9kZSxcbik6IE1lbWJlclRhZ0NvbnRleHQgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBwYXJhbWV0ZXJUeXBlcyA9IGdldFBhcmFtZXRlclR5cGVzKG5vZGUpO1xuICBjb25zdCBqc2RvY0RhdGEgPSBnZXRKc2RvY0RhdGEoY29udGV4dC5zb3VyY2VDb2RlLCBub2RlKTtcblxuICBpZiAocGFyYW1ldGVyVHlwZXMgPT09IHZvaWQgMCB8fCBqc2RvY0RhdGEgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCBtZW1iZXJUYWdzID0gY29sbGVjdE1lbWJlclRhZ3MoanNkb2NEYXRhLnRleHQsIHBhcmFtZXRlclR5cGVzKTtcblxuICByZXR1cm4gbWVtYmVyVGFncy5sZW5ndGggPiAwXG4gICAgPyB7XG4gICAgICAgIGNvbW1lbnQ6IGpzZG9jRGF0YS5jb21tZW50LFxuICAgICAgICBjb21tZW50U3RhcnQ6IGpzZG9jRGF0YS5jb21tZW50U3RhcnQsXG4gICAgICAgIGNvbW1lbnRUZXh0OiBqc2RvY0RhdGEudGV4dCxcbiAgICAgICAgbWVtYmVyVGFncyxcbiAgICAgIH1cbiAgICA6IHZvaWQgMDtcbn07XG5cbi8qKiBIYW5kbGVzIGZ1bmN0aW9uLWxpa2Ugbm9kZXMgZm9yIHRoZSBuby1pbnRlcmZhY2UtbWVtYmVyLWRvY3MgcnVsZS4gKi9cbmludGVyZmFjZSBOb2RlVmFsdWUge1xuICAvKipcbiAgICogVmFsdWUgZmllbGQgZm9yIG1ldGhvZCBkZWZpbml0aW9uczsgZnVuY3Rpb24tbGlrZSBub2RlcyBoYXZlIG5vIHZhbHVlIGZpZWxkLCBzbyB0aGlzIGlzIG9wdGlvbmFsLlxuICAgKi9cbiAgdmFsdWU/OiBSdWxlLk5vZGU7XG59XG5cbi8qKlxuICogSGFuZGxlcyBmdW5jdGlvbi1saWtlIG5vZGVzIGZvciB0aGlzIHJ1bGUuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBpbnNwZWN0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGhhbmRsZUZ1bmN0aW9uTGlrZShjb250ZXh0LCBub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBoYW5kbGVGdW5jdGlvbkxpa2UgPSAoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIG5vZGU6IFJ1bGUuTm9kZSxcbik6IHZvaWQgPT4ge1xuICBjb25zdCBmdW5jdGlvbkxpa2VOb2RlID1cbiAgICBub2RlLnR5cGUgPT09IFwiTWV0aG9kRGVmaW5pdGlvblwiXG4gICAgICA/ICgobm9kZSBhcyB1bmtub3duIGFzIE5vZGVWYWx1ZSkudmFsdWUgPz8gbm9kZSlcbiAgICAgIDogbm9kZTtcblxuICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVNZW1iZXJUYWdDb250ZXh0KGNvbnRleHQsIGZ1bmN0aW9uTGlrZU5vZGUpO1xuXG4gIGlmIChyZXNvbHZlZCA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmVwb3J0TWVtYmVyRG9jdW1lbnRhdGlvbihjb250ZXh0LCB7XG4gICAgY29tbWVudDogcmVzb2x2ZWQuY29tbWVudCxcbiAgICBjb21tZW50U3RhcnQ6IHJlc29sdmVkLmNvbW1lbnRTdGFydCxcbiAgICBjb21tZW50VGV4dDogcmVzb2x2ZWQuY29tbWVudFRleHQsXG4gICAgbWVtYmVyVGFnczogcmVzb2x2ZWQubWVtYmVyVGFncyxcbiAgICBub2RlLFxuICAgIHNvdXJjZUNvZGU6IGNvbnRleHQuc291cmNlQ29kZSxcbiAgfSk7XG59O1xuXG4vKiogRVNMaW50IHJ1bGUgZGlzYWxsb3dpbmcgaW50ZXJmYWNlIG1lbWJlciBkb2N1bWVudGF0aW9uIGluIGBAcGFyYW1gIHRhZ3MuICovXG5jb25zdCBub0ludGVyZmFjZU1lbWJlckRvY3VtZW50YXRpb25SdWxlOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZShjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZS5SdWxlTGlzdGVuZXIge1xuICAgIGNvbnN0IGxpc3RlbmVyID0gKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQgPT4ge1xuICAgICAgaGFuZGxlRnVuY3Rpb25MaWtlKGNvbnRleHQsIG5vZGUpO1xuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgQXJyb3dGdW5jdGlvbkV4cHJlc3Npb246IGxpc3RlbmVyLFxuICAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbjogbGlzdGVuZXIsXG4gICAgICBGdW5jdGlvbkV4cHJlc3Npb246IGxpc3RlbmVyLFxuICAgICAgTWV0aG9kRGVmaW5pdGlvbjogbGlzdGVuZXIsXG4gICAgICBUU0Fic3RyYWN0TWV0aG9kRGVmaW5pdGlvbjogbGlzdGVuZXIsXG4gICAgICBUU0NhbGxTaWduYXR1cmVEZWNsYXJhdGlvbjogbGlzdGVuZXIsXG4gICAgICBUU0NvbnN0cnVjdFNpZ25hdHVyZURlY2xhcmF0aW9uOiBsaXN0ZW5lcixcbiAgICAgIFRTRGVjbGFyZUZ1bmN0aW9uOiBsaXN0ZW5lcixcbiAgICAgIFRTRnVuY3Rpb25UeXBlOiBsaXN0ZW5lcixcbiAgICAgIFRTTWV0aG9kU2lnbmF0dXJlOiBsaXN0ZW5lcixcbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiRGlzYWxsb3cgZG9jdW1lbnRpbmcgaW50ZXJmYWNlIG1lbWJlcnMgaW4gQHBhcmFtIHRhZ3M7IGRvY3VtZW50IHRoZW0gb24gdGhlIGludGVyZmFjZSBpbnN0ZWFkLlwiLFxuICAgICAgcmVjb21tZW5kZWQ6IGZhbHNlLFxuICAgICAgdXJsOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9wYXJsb3RpL2VzbGludC1wbHVnaW4vYmxvYi9tYWluL2RvY3MvcnVsZXMvbm8taW50ZXJmYWNlLW1lbWJlci1kb2NzLm1kXCIsXG4gICAgfSxcbiAgICBmaXhhYmxlOiBcImNvZGVcIixcbiAgICBoYXNTdWdnZXN0aW9uczogdHJ1ZSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgaW50ZXJmYWNlTWVtYmVyRG9jOlxuICAgICAgICBcIkRvY3VtZW50IGludGVyZmFjZSBtZW1iZXJzIG9uIHRoZSBpbnRlcmZhY2UgaW5zdGVhZCBvZiB1c2luZyBAcGFyYW0gZm9yIHt7cGFyYW1ldGVyTmFtZX19LlwiLFxuICAgICAgcmVtb3ZlTWVtYmVyRG9jOlxuICAgICAgICBcIlJlbW92ZSB0aGUgQHBhcmFtIHRhZyBkb2N1bWVudGluZyB0aGlzIGludGVyZmFjZSBtZW1iZXIuXCIsXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6IFwicHJvYmxlbVwiLFxuICB9LFxufTtcblxuZXhwb3J0IHsgbm9JbnRlcmZhY2VNZW1iZXJEb2N1bWVudGF0aW9uUnVsZSB9O1xuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"reporting.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/require-example-language/reporting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAW,MAAM,SAAS,CAAC;AAyCzD,qCAAqC;AACrC,UAAU,oBAAoB;IAC5B,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IAEjB,2BAA2B;IAC3B,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC;IAE1B,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IAEjB,oCAAoC;IACpC,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAsKD;;;;;;;GAOG;AACH,iBAAS,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAiB1D;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"reporting.d.ts","sourceRoot":"","sources":["../../../../src/domain/docs/require-example-language/reporting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAW,MAAM,SAAS,CAAC;AAyCzD,qCAAqC;AACrC,UAAU,oBAAoB;IAC5B,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IAEjB,2BAA2B;IAC3B,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC;IAE1B,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IAEjB,oCAAoC;IACpC,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AA2MD;;;;;;;GAOG;AACH,iBAAS,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAiB1D;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}