From 9f83707ba6c184991e5209c321be42f2669af5ce Mon Sep 17 00:00:00 2001 From: Nikolay Yakimov Date: Fri, 12 Jan 2018 20:57:41 +0300 Subject: [PATCH] Bump dependencies, use prettier --- .eslintrc.yml | 16 --- .prettierrc | 4 + lib/check-results-provider/editor-control.js | 5 +- lib/check-results-provider/index.js | 8 +- lib/editor-control/index.js | 40 ++++-- lib/ide-haskell.js | 23 +++- lib/plugin-manager.js | 2 +- lib/prettify/editor-controller.js | 9 +- lib/prettify/index.js | 10 +- lib/prettify/util-cabal-format.js | 9 +- lib/prettify/util-stylish-haskell.js | 6 +- lib/tooltip-registry/index.js | 13 +- lib/upi-3/index.js | 17 ++- lib/upi-3/instance.js | 12 +- package.json | 31 ++--- spec/package.spec.ts | 2 +- src/check-results-provider/editor-control.ts | 61 ++++++--- src/check-results-provider/index.ts | 30 ++-- src/config-params/index.ts | 6 +- src/config-params/param-select-view.ts | 10 +- src/config-params/param-store.ts | 95 ++++++++++--- src/editor-control/event-table.ts | 12 +- src/editor-control/index.ts | 136 ++++++++++++------- src/editor-control/tooltip-manager.ts | 32 ++++- src/ide-haskell.ts | 86 ++++++++---- src/linter-support/index.ts | 14 +- src/plugin-manager.ts | 112 +++++++++------ src/prettify/editor-controller.ts | 32 +++-- src/prettify/index.ts | 25 +++- src/prettify/util-cabal-format.ts | 36 +++-- src/prettify/util-run-filter.ts | 23 ++-- src/prettify/util-stylish-haskell.ts | 8 +- src/results-db/index.ts | 21 ++- src/results-db/provider.ts | 16 ++- src/results-db/result-item.ts | 23 +++- src/tooltip-registry/index.ts | 86 +++++++++--- src/upi-3/index.ts | 58 ++++++-- src/upi-3/instance.ts | 55 +++++--- src/utils/cast.ts | 12 +- src/utils/element-listener.ts | 5 +- src/utils/index.ts | 24 +++- src/utils/message-object.ts | 4 +- 42 files changed, 816 insertions(+), 413 deletions(-) delete mode 100644 .eslintrc.yml create mode 100644 .prettierrc diff --git a/.eslintrc.yml b/.eslintrc.yml deleted file mode 100644 index b001840..0000000 --- a/.eslintrc.yml +++ /dev/null @@ -1,16 +0,0 @@ -extends: - - standard - - "plugin:react/recommended" -plugins: - - standard - - promise - - react -env: - node: true -globals: - atom: true -parserOptions: - ecmaVersion: 8 - ecmaFeatures: - jsx: true - sourceType: module diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..a56fa45 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,4 @@ +semi: false +singleQuote: true +trailingComma: all +arrowParens: always diff --git a/lib/check-results-provider/editor-control.js b/lib/check-results-provider/editor-control.js index dc210af..eb5037e 100644 --- a/lib/check-results-provider/editor-control.js +++ b/lib/check-results-provider/editor-control.js @@ -120,9 +120,10 @@ class CREditorControl { return this.markers.findMarkers({ startBufferPosition: pos }); case 'mouse': return this.markers.findMarkers({ containsBufferPosition: pos }); - default: throw new TypeError('Switch assertion failed'); + default: + throw new TypeError('Switch assertion failed'); } } } exports.CREditorControl = CREditorControl; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWNvbnRyb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hlY2stcmVzdWx0cy1wcm92aWRlci9lZGl0b3ItY29udHJvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLCtCQUdhO0FBTWIsb0NBQThFO0FBRzlFO0lBU0UsWUFBb0IsTUFBa0IsRUFBRSxhQUE0QjtRQUFoRCxXQUFNLEdBQU4sTUFBTSxDQUFZO1FBeUY5QixrQkFBYSxHQUFHLEdBQUcsRUFBRTtZQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFBO1lBQ3BCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUE7WUFDbEMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQy9CLENBQUM7UUFDSCxDQUFDLENBQUE7UUE5RkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsMkJBQTJCLENBQUMsQ0FBQTtRQUN0RSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ1gsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7UUFDdEIsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztnQkFDbEMsSUFBSSxFQUFFLDJCQUEyQjtnQkFDakMsUUFBUSxFQUFFLEVBQUU7YUFDYixDQUFDLENBQUE7UUFDSixDQUFDO1FBQ0QsSUFBSSxDQUFD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QUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFBO1lBQy9ELEtBQUssT0FBTztnQkFDVixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxzQkFBc0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFBO1lBQ2xFLFNBQVMsTUFBTSxJQUFJLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO1FBQ3pELENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFsSkQsMENBa0pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgUmFuZ2UsIFRleHRFZGl0b3IsIFBvaW50LCBDb21wb3NpdGVEaXNwb3NhYmxlLCBHdXR0ZXIsIERpc3BsYXlNYXJrZXIsXG4gIERpc3BsYXlNYXJrZXJMYXllcixcbn0gZnJvbSAnYXRvbSdcbmltcG9ydCAqIGFzIFVQSSBmcm9tICdhdG9tLWhhc2tlbGwtdXBpJ1xuaW1wb3J0IFRFdmVudFJhbmdlVHlwZSA9IFVQSS5URXZlbnRSYW5nZVR5cGVcblxuaW1wb3J0IHsgUmVzdWx0c0RCLCBSZXN1bHRJdGVtIH0gZnJvbSAnLi4vcmVzdWx0cy1kYidcbmltcG9ydCB7IFBsdWdpbk1hbmFnZXIsIElFZGl0b3JDb250cm9sbGVyIH0gZnJvbSAnLi4vcGx1Z2luLW1hbmFnZXInXG5pbXBvcnQgeyBsaXN0ZW4sIGJ1ZmZlclBvc2l0aW9uRnJvbU1vdXNlRXZlbnQsIE1lc3NhZ2VPYmplY3QgfSBmcm9tICcuLi91dGlscydcbmltcG9ydCB7IFRvb2x0aXBSZWdpc3RyeSB9IGZyb20gJy4uL3Rvb2x0aXAtcmVnaXN0cnknXG5cbmV4cG9ydCBjbGFzcyBDUkVkaXRvckNvbnRyb2wgaW1wbGVtZW50cyBJRWRpdG9yQ29udHJvbGxlciB7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby11bmluaXRpYWxpemVkXG4gIHByaXZhdGUgZ3V0dGVyOiBHdXR0ZXJcbiAgcHJpdmF0ZSBndXR0ZXJFbGVtZW50OiBIVE1MRWxlbWVudFxuICBwcml2YXRlIG1hcmtlcnM6IERpc3BsYXlNYXJrZXJMYXllclxuICBwcml2YXRlIGRpc3Bvc2FibGVzOiBDb21wb3NpdGVEaXNwb3NhYmxlXG4gIHByaXZhdGUgbWFya2VyUHJvcHM6IFdlYWtNYXA8RGlzcGxheU1hcmtlciwgUmVzdWx0SXRlbT5cbiAgcHJpdmF0ZSB0b29sdGlwUmVnaXN0cnk6IFRvb2x0aXBSZWdpc3RyeVxuICBwcml2YXRlIHJlc3VsdHNEQjogUmVzdWx0c0RCXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWRpdG9yOiBUZXh0RWRpdG9yLCBwbHVnaW5NYW5hZ2VyOiBQbHVnaW5NYW5hZ2VyKSB7XG4gICAgY29uc3QgZ3V0dGVyID0gdGhpcy5lZGl0b3IuZ3V0dGVyV2l0aE5hbWUoJ2lkZS1oYXNrZWxsLWNoZWNrLXJlc3VsdHMnKVxuICAgIGlmIChndXR0ZXIpIHtcbiAgICAgIHRoaXMuZ3V0dGVyID0gZ3V0dGVyXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ3V0dGVyID0gdGhpcy5lZGl0b3IuYWRkR3V0dGVyKHtcbiAgICAgICAgbmFtZTogJ2lkZS1oYXNrZWxsLWNoZWNrLXJlc3VsdHMnLFxuICAgICAgICBwcmlvcml0eTogMTAsXG4gICAgICB9KVxuICAgIH1cbiAgICB0aGlzLmd1dHRlckVsZW1lbnQgPSBhdG9tLnZpZXdzLmdldFZpZXcodGhpcy5ndXR0ZXIpXG5cbiAgICB0aGlzLnJlc3VsdHNEQiA9IHBsdWdpbk1hbmFnZXIucmVzdWx0c0RCXG4gICAgdGhpcy50b29sdGlwUmVnaXN0cnkgPSBwbHVnaW5NYW5hZ2VyLnRvb2x0aXBSZWdpc3RyeVxuXG4gICAgdGhpcy5kaXNwb3NhYmxlcyA9IG5ldyBDb21wb3NpdGVEaXNwb3NhYmxlKClcbiAgICB0aGlzLm1hcmtlcnMgPSBlZGl0b3IuYWRkTWFya2VyTGF5ZXIoe1xuICAgICAgbWFpbnRhaW5IaXN0b3J5OiB0cnVlLFxuICAgICAgcGVyc2lzdGVudDogZmFsc2UsXG4gICAgfSlcbiAgICB0aGlzLm1hcmtlclByb3BzID0gbmV3IFdlYWtNYXAoKVxuICAgIHRoaXMuZGlzcG9zYWJsZXMuYWRkKHRoaXMucmVzdWx0c0RCLm9uRGlkVXBkYXRlKHRoaXMudXBkYXRlUmVzdWx0cykpXG4gICAgdGhpcy51cGRhdGVSZXN1bHRzKClcbiAgICB0aGlzLnJlZ2lzdGVyR3V0dGVyRXZlbnRzKClcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc3VwcG9ydHNHcmFtbWFyKGdyYW1tYXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBbXG4gICAgICAnc291cmNlLmMyaHMnLFxuICAgICAgLy8gJ3NvdXJjZS5jYWJhbCcsXG4gICAgICAnc291cmNlLmhzYzJocycsXG4gICAgICAnc291cmNlLmhhc2tlbGwnLFxuICAgICAgJ3RleHQudGV4LmxhdGV4Lmhhc2tlbGwnLFxuICAgICAgJ3NvdXJjZS5oc2lnJyxcbiAgICBdLmluY2x1ZGVzKGdyYW1tYXIpXG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpIHtcbiAgICB0aGlzLm1hcmtlcnMuZGVzdHJveSgpXG4gICAgdGhpcy5kaXNwb3NhYmxlcy5kaXNwb3NlKClcbiAgICB0cnkge1xuICAgICAgdGhpcy5ndXR0ZXIuZGVzdHJveSgpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybihlKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRNZXNzYWdlQXQocG9zOiBQb2ludCwgdHlwZTogVEV2ZW50UmFuZ2VUeXBlIHwgJ2d1dHRlcicpIHtcbiAgICBjb25zdCBtYXJrZXJzID0gdGhpcy5maW5kKHBvcywgdHlwZSlcbiAgICBjb25zdCByZXN1bHQ6IE1lc3NhZ2VPYmplY3RbXSA9IFtdXG4gICAgZm9yIChjb25zdCBtYXJrZXIgb2YgbWFya2Vycykge1xuICAgICAgaWYgKCFtYXJrZXIuaXNWYWxpZCgpKSB7IGNvbnRpbnVlIH1cbiAgICAgIGNvbnN0IHJlcyA9IHRoaXMubWFya2VyUHJvcHMuZ2V0KG1hcmtlcilcbiAgICAgIGlmICghcmVzKSB7IGNvbnRpbnVlIH1cbiAgICAgIHJlc3VsdC5wdXNoKHJlcy5tZXNzYWdlKVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyR3V0dGVyRXZlbnRzKCkge1xuICAgIHRoaXMuZGlzcG9zYWJsZXMuYWRkKGxpc3RlbihcbiAgICAgIHRoaXMuZ3V0dGVyRWxlbWVudCwgJ21vdXNlb3ZlcicsICcuZGVjb3JhdGlvbicsXG4gICAgICAoZSkgPT4ge1xuICAgICAgICBjb25zdCBidWZmZXJQdCA9IGJ1ZmZlclBvc2l0aW9uRnJvbU1vdXNlRXZlbnQodGhpcy5lZGl0b3IsIGUgYXMgTW91c2VFdmVudClcbiAgICAgICAgaWYgKGJ1ZmZlclB0KSB7XG4gICAgICAgICAgY29uc3QgbXNnID0gdGhpcy5nZXRNZXNzYWdlQXQoYnVmZmVyUHQsICdndXR0ZXInKVxuICAgICAgICAgIGlmIChtc2cubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWZsb2F0aW5nLXByb21pc2VzXG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBSZWdpc3RyeS5zaG93VG9vbHRpcChcbiAgICAgICAgICAgICAgdGhpcy5lZGl0b3IsIFRFdmVudFJhbmdlVHlwZS5tb3VzZSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBsdWdpbk5hbWU6ICdidWlsdGluOmNoZWNrLXJlc3VsdHMnLFxuICAgICAgICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgICAgICAgIHRleHQ6IG1zZyxcbiAgICAgICAgICAgICAgICAgIHJhbmdlOiBuZXcgUmFuZ2UoYnVmZmVyUHQsIGJ1ZmZlclB0KSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICApKVxuICAgIHRoaXMuZGlzcG9zYWJsZXMuYWRkKGxpc3RlbihcbiAgICAgIHRoaXMuZ3V0dGVyRWxlbWVudCwgJ21vdXNlb3V0JywgJy5kZWNvcmF0aW9uJywgKCkgPT5cbiAgICAgICAgdGhpcy50b29sdGlwUmVnaXN0cnkuaGlkZVRvb2x0aXAodGhpcy5lZGl0b3IsIFRFdmVudFJhbmdlVHlwZS5tb3VzZSwgJ2J1aWx0aW46Y2hlY2stcmVzdWx0cycpLFxuICAgICkpXG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVJlc3VsdHMgPSAoKSA9PiB7XG4gICAgdGhpcy5tYXJrZXJzLmNsZWFyKClcbiAgICBjb25zdCBwYXRoID0gdGhpcy5lZGl0b3IuZ2V0UGF0aCgpXG4gICAgZm9yIChjb25zdCByIG9mIHRoaXMucmVzdWx0c0RCLmZpbHRlcigobSkgPT4gbS51cmkgPT09IHBhdGggJiYgbS5pc1ZhbGlkKCkpKSB7XG4gICAgICB0aGlzLm1hcmtlckZyb21DaGVja1Jlc3VsdChyKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFya2VyRnJvbUNoZWNrUmVzdWx0KHJlc0l0ZW06IFJlc3VsdEl0ZW0pIHtcbiAgICBjb25zdCB7IHBvc2l0aW9uIH0gPSByZXNJdGVtXG4gICAgaWYgKCFwb3NpdGlvbikgeyByZXR1cm4gfVxuXG4gICAgY29uc3QgcmFuZ2UgPSBuZXcgUmFuZ2UocG9zaXRpb24sIFBvaW50LmZyb21PYmplY3QoW3Bvc2l0aW9uLnJvdywgcG9zaXRpb24uY29sdW1uICsgMV0pKVxuICAgIGNvbnN0IG1hcmtlciA9IHRoaXMubWFya2Vycy5tYXJrQnVmZmVyUmFuZ2UocmFuZ2UsIHsgaW52YWxpZGF0ZTogJ2luc2lkZScgfSlcbiAgICB0aGlzLm1hcmtlclByb3BzLnNldChtYXJrZXIsIHJlc0l0ZW0pXG4gICAgY29uc3QgZGlzcCA9IG5ldyBDb21wb3NpdGVEaXNwb3NhYmxlKClcbiAgICBkaXNwLmFkZChcbiAgICAgIG1hcmtlci5vbkRpZERlc3Ryb3koKCkgPT4ge1xuICAgICAgICB0aGlzLm1hcmtlclByb3BzLmRlbGV0ZShtYXJrZXIpXG4gICAgICAgIGRpc3AuZGlzcG9zZSgpXG4gICAgICB9KSxcbiAgICAgIG1hcmtlci5vbkRpZENoYW5nZSgoeyBpc1ZhbGlkIH06IHsgaXNWYWxpZDogYm9vbGVhbiB9KSA9PiB7XG4gICAgICAgIHJlc0l0ZW0uc2V0VmFsaWQoaXNWYWxpZClcbiAgICAgIH0pLFxuICAgIClcbiAgICB0aGlzLmRlY29yYXRlTWFya2VyKG1hcmtlciwgcmVzSXRlbSlcbiAgfVxuXG4gIHByaXZhdGUgZGVjb3JhdGVNYXJrZXIobTogRGlzcGxheU1hcmtlciwgcjogUmVzdWx0SXRlbSkge1xuICAgIGlmICghdGhpcy5ndXR0ZXIpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBjbHMgPSB7IGNsYXNzOiBgaWRlLWhhc2tlbGwtJHtyLnNldmVyaXR5fWAgfVxuICAgIHRoaXMuZ3V0dGVyLmRlY29yYXRlTWFya2VyKG0sIHsgdHlwZTogJ2xpbmUtbnVtYmVyJywgLi4uY2xzIH0pXG4gICAgdGhpcy5lZGl0b3IuZGVjb3JhdGVNYXJrZXIobSwgeyB0eXBlOiAnaGlnaGxpZ2h0JywgLi4uY2xzIH0pXG4gIH1cblxuICBwcml2YXRlIGZpbmQocG9zOiBQb2ludCwgdHlwZTogVEV2ZW50UmFuZ2VUeXBlIHwgJ2d1dHRlcicpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2d1dHRlcic6XG4gICAgICAgIHJldHVybiB0aGlzLm1hcmtlcnMuZmluZE1hcmtlcnMoeyBzdGFydEJ1ZmZlclJvdzogcG9zLnJvdyB9KVxuICAgICAgY2FzZSAna2V5Ym9hcmQnOlxuICAgICAgICByZXR1cm4gdGhpcy5tYXJrZXJzLmZpbmRNYXJrZXJzKHsgc3RhcnRCdWZmZXJQb3NpdGlvbjogcG9zIH0pXG4gICAgICBjYXNlICdtb3VzZSc6XG4gICAgICAgIHJldHVybiB0aGlzLm1hcmtlcnMuZmluZE1hcmtlcnMoeyBjb250YWluc0J1ZmZlclBvc2l0aW9uOiBwb3MgfSlcbiAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBUeXBlRXJyb3IoJ1N3aXRjaCBhc3NlcnRpb24gZmFpbGVkJylcbiAgICB9XG4gIH1cbn1cbiJdfQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWNvbnRyb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hlY2stcmVzdWx0cy1wcm92aWRlci9lZGl0b3ItY29udHJvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLCtCQVFhO0FBTWIsb0NBQThFO0FBRzlFO0lBU0UsWUFBb0IsTUFBa0IsRUFBRSxhQUE0QjtRQUFoRCxXQUFNLEdBQU4sTUFBTSxDQUFZO1FBcUc5QixrQkFBYSxHQUFHLEdBQUcsRUFBRTtZQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFBO1lBQ3BCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUE7WUFDbEMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQ25DLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQ3JDLENBQUMsQ0FBQyxDQUFDO2dCQUNGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUMvQixDQUFDO1FBQ0gsQ0FBQyxDQUFBO1FBNUdDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLDJCQUEyQixDQUFDLENBQUE7UUFDdEUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNYLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3RCLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7Z0JBQ2xDLElBQUksRUFBRSwyQkFBMkI7Z0JBQ2pDLFFBQVEsRUFBRSxFQUFFO2FBQ2IsQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUNELElBQUksQ0FB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QUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQTtZQUMvRCxLQUFLLE9BQU87Z0JBQ1YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsc0JBQXNCLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQTtZQUNsRTtnQkFDRSxNQUFNLElBQUksU0FBUyxDQUFDLHlCQUF5QixDQUFDLENBQUE7UUFDbEQsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXRLRCwwQ0FzS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBSYW5nZSxcbiAgVGV4dEVkaXRvcixcbiAgUG9pbnQsXG4gIENvbXBvc2l0ZURpc3Bvc2FibGUsXG4gIEd1dHRlcixcbiAgRGlzcGxheU1hcmtlcixcbiAgRGlzcGxheU1hcmtlckxheWVyLFxufSBmcm9tICdhdG9tJ1xuaW1wb3J0ICogYXMgVVBJIGZyb20gJ2F0b20taGFza2VsbC11cGknXG5pbXBvcnQgVEV2ZW50UmFuZ2VUeXBlID0gVVBJLlRFdmVudFJhbmdlVHlwZVxuXG5pbXBvcnQgeyBSZXN1bHRzREIsIFJlc3VsdEl0ZW0gfSBmcm9tICcuLi9yZXN1bHRzLWRiJ1xuaW1wb3J0IHsgUGx1Z2luTWFuYWdlciwgSUVkaXRvckNvbnRyb2xsZXIgfSBmcm9tICcuLi9wbHVnaW4tbWFuYWdlcidcbmltcG9ydCB7IGxpc3RlbiwgYnVmZmVyUG9zaXRpb25Gcm9tTW91c2VFdmVudCwgTWVzc2FnZU9iamVjdCB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgVG9vbHRpcFJlZ2lzdHJ5IH0gZnJvbSAnLi4vdG9vbHRpcC1yZWdpc3RyeSdcblxuZXhwb3J0IGNsYXNzIENSRWRpdG9yQ29udHJvbCBpbXBsZW1lbnRzIElFZGl0b3JDb250cm9sbGVyIHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXVuaW5pdGlhbGl6ZWRcbiAgcHJpdmF0ZSBndXR0ZXI6IEd1dHRlclxuICBwcml2YXRlIGd1dHRlckVsZW1lbnQ6IEhUTUxFbGVtZW50XG4gIHByaXZhdGUgbWFya2VyczogRGlzcGxheU1hcmtlckxheWVyXG4gIHByaXZhdGUgZGlzcG9zYWJsZXM6IENvbXBvc2l0ZURpc3Bvc2FibGVcbiAgcHJpdmF0ZSBtYXJrZXJQcm9wczogV2Vha01hcDxEaXNwbGF5TWFya2VyLCBSZXN1bHRJdGVtPlxuICBwcml2YXRlIHRvb2x0aXBSZWdpc3RyeTogVG9vbHRpcFJlZ2lzdHJ5XG4gIHByaXZhdGUgcmVzdWx0c0RCOiBSZXN1bHRzREJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlZGl0b3I6IFRleHRFZGl0b3IsIHBsdWdpbk1hbmFnZXI6IFBsdWdpbk1hbmFnZXIpIHtcbiAgICBjb25zdCBndXR0ZXIgPSB0aGlzLmVkaXRvci5ndXR0ZXJXaXRoTmFtZSgnaWRlLWhhc2tlbGwtY2hlY2stcmVzdWx0cycpXG4gICAgaWYgKGd1dHRlcikge1xuICAgICAgdGhpcy5ndXR0ZXIgPSBndXR0ZXJcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ndXR0ZXIgPSB0aGlzLmVkaXRvci5hZGRHdXR0ZXIoe1xuICAgICAgICBuYW1lOiAnaWRlLWhhc2tlbGwtY2hlY2stcmVzdWx0cycsXG4gICAgICAgIHByaW9yaXR5OiAxMCxcbiAgICAgIH0pXG4gICAgfVxuICAgIHRoaXMuZ3V0dGVyRWxlbWVudCA9IGF0b20udmlld3MuZ2V0Vmlldyh0aGlzLmd1dHRlcilcblxuICAgIHRoaXMucmVzdWx0c0RCID0gcGx1Z2luTWFuYWdlci5yZXN1bHRzREJcbiAgICB0aGlzLnRvb2x0aXBSZWdpc3RyeSA9IHBsdWdpbk1hbmFnZXIudG9vbHRpcFJlZ2lzdHJ5XG5cbiAgICB0aGlzLmRpc3Bvc2FibGVzID0gbmV3IENvbXBvc2l0ZURpc3Bvc2FibGUoKVxuICAgIHRoaXMubWFya2VycyA9IGVkaXRvci5hZGRNYXJrZXJMYXllcih7XG4gICAgICBtYWludGFpbkhpc3Rvcnk6IHRydWUsXG4gICAgICBwZXJzaXN0ZW50OiBmYWxzZSxcbiAgICB9KVxuICAgIHRoaXMubWFya2VyUHJvcHMgPSBuZXcgV2Vha01hcCgpXG4gICAgdGhpcy5kaXNwb3NhYmxlcy5hZGQodGhpcy5yZXN1bHRzREIub25EaWRVcGRhdGUodGhpcy51cGRhdGVSZXN1bHRzKSlcbiAgICB0aGlzLnVwZGF0ZVJlc3VsdHMoKVxuICAgIHRoaXMucmVnaXN0ZXJHdXR0ZXJFdmVudHMoKVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzdXBwb3J0c0dyYW1tYXIoZ3JhbW1hcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFtcbiAgICAgICdzb3VyY2UuYzJocycsXG4gICAgICAvLyAnc291cmNlLmNhYmFsJyxcbiAgICAgICdzb3VyY2UuaHNjMmhzJyxcbiAgICAgICdzb3VyY2UuaGFza2VsbCcsXG4gICAgICAndGV4dC50ZXgubGF0ZXguaGFza2VsbCcsXG4gICAgICAnc291cmNlLmhzaWcnLFxuICAgIF0uaW5jbHVkZXMoZ3JhbW1hcilcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCkge1xuICAgIHRoaXMubWFya2Vycy5kZXN0cm95KClcbiAgICB0aGlzLmRpc3Bvc2FibGVzLmRpc3Bvc2UoKVxuICAgIHRyeSB7XG4gICAgICB0aGlzLmd1dHRlci5kZXN0cm95KClcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKGUpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldE1lc3NhZ2VBdChwb3M6IFBvaW50LCB0eXBlOiBURXZlbnRSYW5nZVR5cGUgfCAnZ3V0dGVyJykge1xuICAgIGNvbnN0IG1hcmtlcnMgPSB0aGlzLmZpbmQocG9zLCB0eXBlKVxuICAgIGNvbnN0IHJlc3VsdDogTWVzc2FnZU9iamVjdFtdID0gW11cbiAgICBmb3IgKGNvbnN0IG1hcmtlciBvZiBtYXJrZXJzKSB7XG4gICAgICBpZiAoIW1hcmtlci5pc1ZhbGlkKCkpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlcyA9IHRoaXMubWFya2VyUHJvcHMuZ2V0KG1hcmtlcilcbiAgICAgIGlmICghcmVzKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICByZXN1bHQucHVzaChyZXMubWVzc2FnZSlcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3Rlckd1dHRlckV2ZW50cygpIHtcbiAgICB0aGlzLmRpc3Bvc2FibGVzLmFkZChcbiAgICAgIGxpc3Rlbih0aGlzLmd1dHRlckVsZW1lbnQsICdtb3VzZW92ZXInLCAnLmRlY29yYXRpb24nLCAoZSkgPT4ge1xuICAgICAgICBjb25zdCBidWZmZXJQdCA9IGJ1ZmZlclBvc2l0aW9uRnJvbU1vdXNlRXZlbnQoXG4gICAgICAgICAgdGhpcy5lZGl0b3IsXG4gICAgICAgICAgZSBhcyBNb3VzZUV2ZW50LFxuICAgICAgICApXG4gICAgICAgIGlmIChidWZmZXJQdCkge1xuICAgICAgICAgIGNvbnN0IG1zZyA9IHRoaXMuZ2V0TWVzc2FnZUF0KGJ1ZmZlclB0LCAnZ3V0dGVyJylcbiAgICAgICAgICBpZiAobXNnLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1mbG9hdGluZy1wcm9taXNlc1xuICAgICAgICAgICAgdGhpcy50b29sdGlwUmVnaXN0cnkuc2hvd1Rvb2x0aXAoXG4gICAgICAgICAgICAgIHRoaXMuZWRpdG9yLFxuICAgICAgICAgICAgICBURXZlbnRSYW5nZVR5cGUubW91c2UsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbHVnaW5OYW1lOiAnYnVpbHRpbjpjaGVjay1yZXN1bHRzJyxcbiAgICAgICAgICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgICAgICAgICB0ZXh0OiBtc2csXG4gICAgICAgICAgICAgICAgICByYW5nZTogbmV3IFJhbmdlKGJ1ZmZlclB0LCBidWZmZXJQdCksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgIClcbiAgICB0aGlzLmRpc3Bvc2FibGVzLmFkZChcbiAgICAgIGxpc3Rlbih0aGlzLmd1dHRlckVsZW1lbnQsICdtb3VzZW91dCcsICcuZGVjb3JhdGlvbicsICgpID0+XG4gICAgICAgIHRoaXMudG9vbHRpcFJlZ2lzdHJ5LmhpZGVUb29sdGlwKFxuICAgICAgICAgIHRoaXMuZWRpdG9yLFxuICAgICAgICAgIFRFdmVudFJhbmdlVHlwZS5tb3VzZSxcbiAgICAgICAgICAnYnVpbHRpbjpjaGVjay1yZXN1bHRzJyxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVSZXN1bHRzID0gKCkgPT4ge1xuICAgIHRoaXMubWFya2Vycy5jbGVhcigpXG4gICAgY29uc3QgcGF0aCA9IHRoaXMuZWRpdG9yLmdldFBhdGgoKVxuICAgIGZvciAoY29uc3QgciBvZiB0aGlzLnJlc3VsdHNEQi5maWx0ZXIoXG4gICAgICAobSkgPT4gbS51cmkgPT09IHBhdGggJiYgbS5pc1ZhbGlkKCksXG4gICAgKSkge1xuICAgICAgdGhpcy5tYXJrZXJGcm9tQ2hlY2tSZXN1bHQocilcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcmtlckZyb21DaGVja1Jlc3VsdChyZXNJdGVtOiBSZXN1bHRJdGVtKSB7XG4gICAgY29uc3QgeyBwb3NpdGlvbiB9ID0gcmVzSXRlbVxuICAgIGlmICghcG9zaXRpb24pIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHJhbmdlID0gbmV3IFJhbmdlKFxuICAgICAgcG9zaXRpb24sXG4gICAgICBQb2ludC5mcm9tT2JqZWN0KFtwb3NpdGlvbi5yb3csIHBvc2l0aW9uLmNvbHVtbiArIDFdKSxcbiAgICApXG4gICAgY29uc3QgbWFya2VyID0gdGhpcy5tYXJrZXJzLm1hcmtCdWZmZXJSYW5nZShyYW5nZSwgeyBpbnZhbGlkYXRlOiAnaW5zaWRlJyB9KVxuICAgIHRoaXMubWFya2VyUHJvcHMuc2V0KG1hcmtlciwgcmVzSXRlbSlcbiAgICBjb25zdCBkaXNwID0gbmV3IENvbXBvc2l0ZURpc3Bvc2FibGUoKVxuICAgIGRpc3AuYWRkKFxuICAgICAgbWFya2VyLm9uRGlkRGVzdHJveSgoKSA9PiB7XG4gICAgICAgIHRoaXMubWFya2VyUHJvcHMuZGVsZXRlKG1hcmtlcilcbiAgICAgICAgZGlzcC5kaXNwb3NlKClcbiAgICAgIH0pLFxuICAgICAgbWFya2VyLm9uRGlkQ2hhbmdlKCh7IGlzVmFsaWQgfTogeyBpc1ZhbGlkOiBib29sZWFuIH0pID0+IHtcbiAgICAgICAgcmVzSXRlbS5zZXRWYWxpZChpc1ZhbGlkKVxuICAgICAgfSksXG4gICAgKVxuICAgIHRoaXMuZGVjb3JhdGVNYXJrZXIobWFya2VyLCByZXNJdGVtKVxuICB9XG5cbiAgcHJpdmF0ZSBkZWNvcmF0ZU1hcmtlcihtOiBEaXNwbGF5TWFya2VyLCByOiBSZXN1bHRJdGVtKSB7XG4gICAgaWYgKCF0aGlzLmd1dHRlcikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IGNscyA9IHsgY2xhc3M6IGBpZGUtaGFza2VsbC0ke3Iuc2V2ZXJpdHl9YCB9XG4gICAgdGhpcy5ndXR0ZXIuZGVjb3JhdGVNYXJrZXIobSwgeyB0eXBlOiAnbGluZS1udW1iZXInLCAuLi5jbHMgfSlcbiAgICB0aGlzLmVkaXRvci5kZWNvcmF0ZU1hcmtlcihtLCB7IHR5cGU6ICdoaWdobGlnaHQnLCAuLi5jbHMgfSlcbiAgfVxuXG4gIHByaXZhdGUgZmluZChwb3M6IFBvaW50LCB0eXBlOiBURXZlbnRSYW5nZVR5cGUgfCAnZ3V0dGVyJykge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnZ3V0dGVyJzpcbiAgICAgICAgcmV0dXJuIHRoaXMubWFya2Vycy5maW5kTWFya2Vycyh7IHN0YXJ0QnVmZmVyUm93OiBwb3Mucm93IH0pXG4gICAgICBjYXNlICdrZXlib2FyZCc6XG4gICAgICAgIHJldHVybiB0aGlzLm1hcmtlcnMuZmluZE1hcmtlcnMoeyBzdGFydEJ1ZmZlclBvc2l0aW9uOiBwb3MgfSlcbiAgICAgIGNhc2UgJ21vdXNlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMubWFya2Vycy5maW5kTWFya2Vycyh7IGNvbnRhaW5zQnVmZmVyUG9zaXRpb246IHBvcyB9KVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignU3dpdGNoIGFzc2VydGlvbiBmYWlsZWQnKVxuICAgIH1cbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/lib/check-results-provider/index.js b/lib/check-results-provider/index.js index 063b91e..360f0a7 100644 --- a/lib/check-results-provider/index.js +++ b/lib/check-results-provider/index.js @@ -10,8 +10,10 @@ class CheckResultsProvider { if (!controller) { return undefined; } - if (type === "keyboard" - && atom.config.get('ide-haskell.onCursorMove', { scope: editor.getRootScopeDescriptor() }) !== 'Show Tooltip') { + if (type === "keyboard" && + atom.config.get('ide-haskell.onCursorMove', { + scope: editor.getRootScopeDescriptor(), + }) !== 'Show Tooltip') { return undefined; } const msg = controller.getMessageAt(crange.start, type); @@ -33,4 +35,4 @@ class CheckResultsProvider { } } exports.CheckResultsProvider = CheckResultsProvider; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hlY2stcmVzdWx0cy1wcm92aWRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLCtCQUVhO0FBS2IscURBQWtEO0FBR2xEO0lBRUUsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFrQnhDLG9CQUFlLEdBQUcsQ0FBQyxNQUFrQixFQUFFLE1BQWEsRUFBRSxJQUFxQixFQUErQixFQUFFO1lBQ2xILE1BQU0sVUFBVSxHQUNaLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUNqQyxnQ0FBZSxFQUFFLE1BQU0sQ0FDeEIsQ0FBQTtZQUNILEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFBQyxNQUFNLENBQUMsU0FBUyxDQUFBO1lBQUMsQ0FBQztZQUNyQyxFQUFFLENBQUMsQ0FBQyxJQUFJLGVBQTZCO21CQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxDQUFDLEtBQUssY0FBYyxDQUFDLENBQUMsQ0FBQztnQkFDaEgsTUFBTSxDQUFDLFNBQVMsQ0FBQTtZQUNsQixDQUFDO1lBQ0QsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ3ZELEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbkIsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUE7WUFDckMsQ0FBQztZQUNELE1BQU0sQ0FBQyxTQUFTLENBQUE7UUFDbEIsQ0FBQyxDQUFBO1FBaENDLE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQyxlQUFlLENBQUE7UUFFckQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLDBCQUFtQixFQUFFLENBQUE7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQ2xCLGVBQWUsQ0FBQyxRQUFRLENBQUMsdUJBQXVCLEVBQUU7WUFDaEQsUUFBUSxFQUFFLElBQUk7WUFDZCxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDN0IsVUFBVSxFQUFFLHFCQUFpRDtTQUM5RCxDQUFDLEVBQ0YsYUFBYSxDQUFDLG1CQUFtQixDQUFDLGdDQUFlLENBQUMsQ0FDbkQsQ0FBQTtJQUNILENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUM1QixDQUFDO0NBa0JGO0FBcENELG9EQW9DQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFJhbmdlLCBUZXh0RWRpdG9yLCBDb21wb3NpdGVEaXNwb3NhYmxlLFxufSBmcm9tICdhdG9tJ1xuaW1wb3J0ICogYXMgVVBJIGZyb20gJ2F0b20taGFza2VsbC11cGknXG5pbXBvcnQgVEV2ZW50UmFuZ2VUeXBlID0gVVBJLlRFdmVudFJhbmdlVHlwZVxuXG5pbXBvcnQgeyBQbHVnaW5NYW5hZ2VyIH0gZnJvbSAnLi4vcGx1Z2luLW1hbmFnZXInXG5pbXBvcnQgeyBDUkVkaXRvckNvbnRyb2wgfSBmcm9tICcuL2VkaXRvci1jb250cm9sJ1xuaW1wb3J0IHsgSVRvb2x0aXBEYXRhRXh0IH0gZnJvbSAnLi4vdG9vbHRpcC1yZWdpc3RyeSdcblxuZXhwb3J0IGNsYXNzIENoZWNrUmVzdWx0c1Byb3ZpZGVyIHtcbiAgcHJpdmF0ZSBkaXNwb3NhYmxlczogQ29tcG9zaXRlRGlzcG9zYWJsZVxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBsdWdpbk1hbmFnZXI6IFBsdWdpbk1hbmFnZXIpIHtcbiAgICBjb25zdCB0b29sdGlwUmVnaXN0cnkgPSBwbHVnaW5NYW5hZ2VyLnRvb2x0aXBSZWdpc3RyeVxuXG4gICAgdGhpcy5kaXNwb3NhYmxlcyA9IG5ldyBDb21wb3NpdGVEaXNwb3NhYmxlKClcbiAgICB0aGlzLmRpc3Bvc2FibGVzLmFkZChcbiAgICAgIHRvb2x0aXBSZWdpc3RyeS5yZWdpc3RlcignYnVpbHRpbjpjaGVjay1yZXN1bHRzJywge1xuICAgICAgICBwcmlvcml0eTogMTAwMCxcbiAgICAgICAgaGFuZGxlcjogdGhpcy50b29sdGlwUHJvdmlkZXIsXG4gICAgICAgIGV2ZW50VHlwZXM6IFtURXZlbnRSYW5nZVR5cGUubW91c2UsIFRFdmVudFJhbmdlVHlwZS5rZXlib2FyZF0sXG4gICAgICB9KSxcbiAgICAgIHBsdWdpbk1hbmFnZXIuYWRkRWRpdG9yQ29udHJvbGxlcihDUkVkaXRvckNvbnRyb2wpLFxuICAgIClcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCkge1xuICAgIHRoaXMuZGlzcG9zYWJsZXMuZGlzcG9zZSgpXG4gIH1cblxuICBwcml2YXRlIHRvb2x0aXBQcm92aWRlciA9IChlZGl0b3I6IFRleHRFZGl0b3IsIGNyYW5nZTogUmFuZ2UsIHR5cGU6IFRFdmVudFJhbmdlVHlwZSk6IElUb29sdGlwRGF0YUV4dCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3QgY29udHJvbGxlclxuICAgICAgPSB0aGlzLnBsdWdpbk1hbmFnZXIuY29udHJvbGxlclR5cGU8Q1JFZGl0b3JDb250cm9sLCB0eXBlb2YgQ1JFZGl0b3JDb250cm9sPihcbiAgICAgICAgQ1JFZGl0b3JDb250cm9sLCBlZGl0b3IsXG4gICAgICApXG4gICAgaWYgKCFjb250cm9sbGVyKSB7IHJldHVybiB1bmRlZmluZWQgfVxuICAgIGlmICh0eXBlID09PSBURXZlbnRSYW5nZVR5cGUua2V5Ym9hcmRcbiAgICAgICYmIGF0b20uY29uZmlnLmdldCgnaWRlLWhhc2tlbGwub25DdXJzb3JNb3ZlJywgeyBzY29wZTogZWRpdG9yLmdldFJvb3RTY29wZURlc2NyaXB0b3IoKSB9KSAhPT0gJ1Nob3cgVG9vbHRpcCcpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gICAgY29uc3QgbXNnID0gY29udHJvbGxlci5nZXRNZXNzYWdlQXQoY3JhbmdlLnN0YXJ0LCB0eXBlKVxuICAgIGlmIChtc2cubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHsgcmFuZ2U6IGNyYW5nZSwgdGV4dDogbXNnIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG59XG4iXX0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hlY2stcmVzdWx0cy1wcm92aWRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLCtCQUE2RDtBQUs3RCxxREFBa0Q7QUFHbEQ7SUFFRSxZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQWtCeEMsb0JBQWUsR0FBRyxDQUN4QixNQUFrQixFQUNsQixNQUFhLEVBQ2IsSUFBcUIsRUFDUSxFQUFFO1lBQy9CLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUdsRCxnQ0FBZSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQzFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDaEIsTUFBTSxDQUFDLFNBQVMsQ0FBQTtZQUNsQixDQUFDO1lBQ0QsRUFBRSxDQUFDLENBQ0QsSUFBSSxlQUE2QjtnQkFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLEVBQUU7b0JBQzFDLEtBQUssRUFBRSxNQUFNLENBQUMsc0JBQXNCLEVBQUU7aUJBQ3ZDLENBQUMsS0FBSyxjQUNULENBQUMsQ0FBQyxDQUFDO2dCQUNELE1BQU0sQ0FBQyxTQUFTLENBQUE7WUFDbEIsQ0FBQztZQUNELE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUN2RCxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25CLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFBO1lBQ3JDLENBQUM7WUFDRCxNQUFNLENBQUMsU0FBUyxDQUFBO1FBQ2xCLENBQUMsQ0FBQTtRQTFDQyxNQUFNLGVBQWUsR0FBRyxhQUFhLENBQUMsZUFBZSxDQUFBO1FBRXJELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSwwQkFBbUIsRUFBRSxDQUFBO1FBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUNsQixlQUFlLENBQUMsUUFBUSxDQUFDLHVCQUF1QixFQUFFO1lBQ2hELFFBQVEsRUFBRSxJQUFJO1lBQ2QsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQzdCLFVBQVUsRUFBRSxxQkFBaUQ7U0FDOUQsQ0FBQyxFQUNGLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxnQ0FBZSxDQUFDLENBQ25ELENBQUE7SUFDSCxDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDNUIsQ0FBQztDQTRCRjtBQTlDRCxvREE4Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSYW5nZSwgVGV4dEVkaXRvciwgQ29tcG9zaXRlRGlzcG9zYWJsZSB9IGZyb20gJ2F0b20nXG5pbXBvcnQgKiBhcyBVUEkgZnJvbSAnYXRvbS1oYXNrZWxsLXVwaSdcbmltcG9ydCBURXZlbnRSYW5nZVR5cGUgPSBVUEkuVEV2ZW50UmFuZ2VUeXBlXG5cbmltcG9ydCB7IFBsdWdpbk1hbmFnZXIgfSBmcm9tICcuLi9wbHVnaW4tbWFuYWdlcidcbmltcG9ydCB7IENSRWRpdG9yQ29udHJvbCB9IGZyb20gJy4vZWRpdG9yLWNvbnRyb2wnXG5pbXBvcnQgeyBJVG9vbHRpcERhdGFFeHQgfSBmcm9tICcuLi90b29sdGlwLXJlZ2lzdHJ5J1xuXG5leHBvcnQgY2xhc3MgQ2hlY2tSZXN1bHRzUHJvdmlkZXIge1xuICBwcml2YXRlIGRpc3Bvc2FibGVzOiBDb21wb3NpdGVEaXNwb3NhYmxlXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGx1Z2luTWFuYWdlcjogUGx1Z2luTWFuYWdlcikge1xuICAgIGNvbnN0IHRvb2x0aXBSZWdpc3RyeSA9IHBsdWdpbk1hbmFnZXIudG9vbHRpcFJlZ2lzdHJ5XG5cbiAgICB0aGlzLmRpc3Bvc2FibGVzID0gbmV3IENvbXBvc2l0ZURpc3Bvc2FibGUoKVxuICAgIHRoaXMuZGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdG9vbHRpcFJlZ2lzdHJ5LnJlZ2lzdGVyKCdidWlsdGluOmNoZWNrLXJlc3VsdHMnLCB7XG4gICAgICAgIHByaW9yaXR5OiAxMDAwLFxuICAgICAgICBoYW5kbGVyOiB0aGlzLnRvb2x0aXBQcm92aWRlcixcbiAgICAgICAgZXZlbnRUeXBlczogW1RFdmVudFJhbmdlVHlwZS5tb3VzZSwgVEV2ZW50UmFuZ2VUeXBlLmtleWJvYXJkXSxcbiAgICAgIH0pLFxuICAgICAgcGx1Z2luTWFuYWdlci5hZGRFZGl0b3JDb250cm9sbGVyKENSRWRpdG9yQ29udHJvbCksXG4gICAgKVxuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5kaXNwb3NhYmxlcy5kaXNwb3NlKClcbiAgfVxuXG4gIHByaXZhdGUgdG9vbHRpcFByb3ZpZGVyID0gKFxuICAgIGVkaXRvcjogVGV4dEVkaXRvcixcbiAgICBjcmFuZ2U6IFJhbmdlLFxuICAgIHR5cGU6IFRFdmVudFJhbmdlVHlwZSxcbiAgKTogSVRvb2x0aXBEYXRhRXh0IHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBjb250cm9sbGVyID0gdGhpcy5wbHVnaW5NYW5hZ2VyLmNvbnRyb2xsZXJUeXBlPFxuICAgICAgQ1JFZGl0b3JDb250cm9sLFxuICAgICAgdHlwZW9mIENSRWRpdG9yQ29udHJvbFxuICAgID4oQ1JFZGl0b3JDb250cm9sLCBlZGl0b3IpXG4gICAgaWYgKCFjb250cm9sbGVyKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGlmIChcbiAgICAgIHR5cGUgPT09IFRFdmVudFJhbmdlVHlwZS5rZXlib2FyZCAmJlxuICAgICAgYXRvbS5jb25maWcuZ2V0KCdpZGUtaGFza2VsbC5vbkN1cnNvck1vdmUnLCB7XG4gICAgICAgIHNjb3BlOiBlZGl0b3IuZ2V0Um9vdFNjb3BlRGVzY3JpcHRvcigpLFxuICAgICAgfSkgIT09ICdTaG93IFRvb2x0aXAnXG4gICAgKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGNvbnN0IG1zZyA9IGNvbnRyb2xsZXIuZ2V0TWVzc2FnZUF0KGNyYW5nZS5zdGFydCwgdHlwZSlcbiAgICBpZiAobXNnLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB7IHJhbmdlOiBjcmFuZ2UsIHRleHQ6IG1zZyB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/lib/editor-control/index.js b/lib/editor-control/index.js index 7f80934..60879ff 100644 --- a/lib/editor-control/index.js +++ b/lib/editor-control/index.js @@ -18,7 +18,9 @@ class EditorControl { if (this.exprTypeTimeout) { clearTimeout(this.exprTypeTimeout); } - this.exprTypeTimeout = window.setTimeout(() => bufferPt && this.shouldShowTooltip(bufferPt, "mouse"), atom.config.get('ide-haskell.expressionTypeInterval', { scope: this.editor.getRootScopeDescriptor() })); + this.exprTypeTimeout = window.setTimeout(() => bufferPt && this.shouldShowTooltip(bufferPt, "mouse"), atom.config.get('ide-haskell.expressionTypeInterval', { + scope: this.editor.getRootScopeDescriptor(), + })); }; this.stopTrackingMouseBufferPosition = () => { if (this.exprTypeTimeout) { @@ -36,13 +38,21 @@ class EditorControl { clearTimeout(this.exprTypeTimeout); } this.tooltipRegistry.showTooltip(this.editor, "keyboard"); - if (atom.config.get('ide-haskell.onCursorMove', { scope: this.editor.getRootScopeDescriptor() }) === 'Hide Tooltip') { - this.tooltips.hide("mouse", undefined, { persistent: false }); - this.tooltips.hide("context", undefined, { persistent: false }); + if (atom.config.get('ide-haskell.onCursorMove', { + scope: this.editor.getRootScopeDescriptor(), + }) === 'Hide Tooltip') { + this.tooltips.hide("mouse", undefined, { + persistent: false, + }); + this.tooltips.hide("context", undefined, { + persistent: false, + }); } } else { - this.selTimeout = window.setTimeout(() => this.shouldShowTooltip(newBufferRange.start, "selection"), atom.config.get('ide-haskell.expressionTypeInterval', { scope: this.editor.getRootScopeDescriptor() })); + this.selTimeout = window.setTimeout(() => this.shouldShowTooltip(newBufferRange.start, "selection"), atom.config.get('ide-haskell.expressionTypeInterval', { + scope: this.editor.getRootScopeDescriptor(), + })); } }; this.disposables = new atom_1.CompositeDisposable(); @@ -78,7 +88,8 @@ class EditorControl { if (!this.lastMouseBufferPt) return undefined; pos = this.lastMouseBufferPt; - const [selRange] = this.editor.getSelections() + const [selRange] = this.editor + .getSelections() .map((sel) => sel.getBufferRange()) .filter((sel) => sel.containsPoint(pos)); crange = selRange || new atom_1.Range(pos, pos); @@ -88,13 +99,14 @@ class EditorControl { crange = this.editor.getLastSelection().getBufferRange(); pos = crange.start; break; - default: throw new TypeError('Switch assertion failed'); + default: + throw new TypeError('Switch assertion failed'); } return { crange, pos, eventType }; } shouldShowTooltip(pos, type) { - if ((pos.row < 0) || - (pos.row >= this.editor.getLineCount()) || + if (pos.row < 0 || + pos.row >= this.editor.getLineCount() || pos.isEqual(this.editor.getBuffer().rangeForRow(pos.row, false).end)) { this.tooltips.hide(type); } @@ -126,14 +138,12 @@ class EditorControl { height: ttcld.height, }; const xmax = Math.round(Math.max(ttbox.left, slcl.left)); - const xmin = Math.round(Math.min(ttbox.left + ttbox.width, slcl.left + - slcl.width)); + const xmin = Math.round(Math.min(ttbox.left + ttbox.width, slcl.left + slcl.width)); const ymax = Math.round(Math.max(ttbox.top, slcl.top)); - const ymin = Math.round(Math.min(ttbox.top + ttbox.height, slcl.top + - slcl.height)); + const ymin = Math.round(Math.min(ttbox.top + ttbox.height, slcl.top + slcl.height)); const tt = document.querySelector('ide-haskell-tooltip'); if (tt) { - if ((ymax <= ymin) && (xmax <= xmin)) { + if (ymax <= ymin && xmax <= xmin) { tt.classList.add('ide-haskell-tooltip-subdued'); } else { @@ -143,4 +153,4 @@ class EditorControl { } } exports.EditorControl = EditorControl; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZWRpdG9yLWNvbnRyb2wvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQkFHYTtBQUNiLG9DQUdpQjtBQUNqQix1REFBa0Q7QUFRbEQ7SUFjRSxZQUFvQixNQUFrQixFQUFFLGFBQTRCO1FBQWhELFdBQU0sR0FBTixNQUFNLENBQVk7UUFtRjlCLDZCQUF3QixHQUFHLENBQUMsQ0FBYSxFQUFFLEVBQUU7WUFDbkQsTUFBTSxRQUFRLEdBQUcsb0NBQTRCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUM3RCxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQUMsTUFBTSxDQUFBO1lBQUMsQ0FBQztZQUV6QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZFLE1BQU0sQ0FBQTtZQUNSLENBQUM7WUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFBO1lBRWpDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO2dCQUN6QixZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1lBQ3BDLENBQUM7WUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQ3RDLEdBQUcsRUFBRSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxVQUF3QixFQUN6RSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FDYixvQ0FBb0MsRUFDcEMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLENBQ2hELENBQ0YsQ0FBQTtRQUNILENBQUMsQ0FBQTtR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cUIsQ0FBZ0IsQ0FBQTtRQUN2RSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ1AsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyQyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO1lBQ2pELENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDTixFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO1lBQ3BELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBM0xELHNDQTJMQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFJhbmdlLCBUZXh0RWRpdG9yLCBQb2ludCwgQ29tcG9zaXRlRGlzcG9zYWJsZSxcbiAgRGlzcG9zYWJsZSxcbn0gZnJvbSAnYXRvbSdcbmltcG9ydCB7XG4gIGJ1ZmZlclBvc2l0aW9uRnJvbU1vdXNlRXZlbnQsXG4gIGxpc3Rlbixcbn0gZnJvbSAnLi4vdXRpbHMnXG5pbXBvcnQgeyBUb29sdGlwTWFuYWdlciB9IGZyb20gJy4vdG9vbHRpcC1tYW5hZ2VyJ1xuaW1wb3J0IHsgVG9vbHRpcFJlZ2lzdHJ5IH0gZnJvbSAnLi4vdG9vbHRpcC1yZWdpc3RyeSdcbmltcG9ydCB7IFBsdWdpbk1hbmFnZXIsIElFZGl0b3JDb250cm9sbGVyIH0gZnJvbSAnLi4vcGx1Z2luLW1hbmFnZXInXG5pbXBvcnQgKiBhcyBVUEkgZnJvbSAnYXRvbS1oYXNrZWxsLXVwaSdcbmltcG9ydCBURXZlbnRSYW5nZVR5cGUgPSBVUEkuVEV2ZW50UmFuZ2VUeXBlXG5cbmV4cG9ydCB0eXBlIFRFdmVudFJhbmdlUmVzdWx0ID0geyBjcmFuZ2U6IFJhbmdlLCBwb3M6IFBvaW50LCBldmVudFR5cGU6IFRFdmVudFJhbmdlVHlwZSB9IHwgdW5kZWZpbmVkXG5cbmV4cG9ydCBjbGFzcyBFZGl0b3JDb250cm9sIGltcGxlbWVudHMgSUVkaXRvckNvbnRyb2xsZXIge1xuICBwdWJsaWMgdG9vbHRpcHM6IFRvb2x0aXBNYW5hZ2VyXG4gIHByaXZhdGUgZGlzcG9zYWJsZXM6IENvbXBvc2l0ZURpc3Bvc2FibGVcbiAgcHJpdmF0ZSBsYXN0TW91c2VCdWZmZXJQdD86IFBvaW50XG4gIHByaXZhdGUgZXhwclR5cGVUaW1lb3V0PzogbnVtYmVyXG4gIHByaXZhdGUgc2VsVGltZW91dD86IG51bWJlclxuICBwcml2YXRlIGVkaXRvckVsZW1lbnQ6IEhUTUxFbGVtZW50ICYge1xuICAgIG9uRGlkQ2hhbmdlU2Nyb2xsVG9wKGE6ICgpID0+IHZvaWQpOiBEaXNwb3NhYmxlXG4gICAgb25EaWRDaGFuZ2VTY3JvbGxMZWZ0KGE6ICgpID0+IHZvaWQpOiBEaXNwb3NhYmxlXG4gICAgcGl4ZWxSZWN0Rm9yU2NyZWVuUmFuZ2UocjogUmFuZ2UpOiB7XG4gICAgICBsZWZ0OiBudW1iZXIsIHRvcDogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlclxuICAgIH1cbiAgfVxuICBwcml2YXRlIHRvb2x0aXBSZWdpc3RyeTogVG9vbHRpcFJlZ2lzdHJ5XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWRpdG9yOiBUZXh0RWRpdG9yLCBwbHVnaW5NYW5hZ2VyOiBQbHVnaW5NYW5hZ2VyKSB7XG4gICAgdGhpcy5kaXNwb3NhYmxlcyA9IG5ldyBDb21wb3NpdGVEaXNwb3NhYmxlKClcbiAgICB0aGlzLnRvb2x0aXBzID0gbmV3IFRvb2x0aXBNYW5hZ2VyKHRoaXMuZWRpdG9yKVxuICAgIHRoaXMuZGlzcG9zYWJsZXMuYWRkKHRoaXMudG9vbHRpcHMpXG4gICAgdGhpcy50b29sdGlwUmVnaXN0cnkgPSBwbHVnaW5NYW5hZ2VyLnRvb2x0aXBSZWdpc3RyeVxuXG4gICAgdGhpcy5lZGl0b3JFbGVtZW50ID0gYXRvbS52aWV3cy5nZXRWaWV3KHRoaXMuZWRpdG9yKSBhcyBhbnlcblxuICAgIGNvbnN0IGJ1ZmZlciA9IHRoaXMuZWRpdG9yLmdldEJ1ZmZlcigpXG5cbiAgICB0aGlzLmRpc3Bvc2FibGVzLmFkZChcbiAgICAgIC8vIGJ1ZmZlciBldmVudHMgZm9yIGF1dG9tYXRpYyBjaGVja1xuICAgICAgYnVmZmVyLm9uV2lsbFNhdmUoKCkgPT4gcGx1Z2luTWFuYWdlci53aWxsU2F2ZUJ1ZmZlcihidWZmZXIpKSxcbiAgICAgIGJ1ZmZlci5vbkRpZFNhdmUoKCkgPT4gcGx1Z2luTWFuYWdlci5kaWRTYXZlQnVmZmVyKGJ1ZmZlcikpLFxuICAgICAgdGhpcy5lZGl0b3Iub25EaWRTdG9wQ2hhbmdpbmcoKCkgPT4gcGx1Z2luTWFuYWdlci5kaWRTdG9wQ2hhbmdpbmcoYnVmZmVyKSksXG4gICAgICAvLyB0b29sdGlwIHRyYWNraW5nIChtb3VzZSBhbmQgc2VsZWN0aW9uKVxuICAgICAgdGhpcy5lZGl0b3JFbGVtZW50Lm9uRGlkQ2hhbmdlU2Nyb2xsTGVmdCgoKSA9PiB0aGlzLnRvb2x0aXBzLmhpZGUoVEV2ZW50UmFuZ2VUeXBlLm1vdXNlKSksXG4gICAgICB0aGlzLmVkaXRvckVsZW1lbnQub25EaWRDaGFuZ2VTY3JvbGxUb3AoKCkgPT4gdGhpcy50b29sdGlwcy5oaWRlKFRFdmVudFJhbmdlVHlwZS5tb3VzZSkpLFxuICAgICAgbGlzdGVuKHRoaXMuZWRpdG9yRWxlbWVudCwgJ21vdXNlbW92ZScsICcuc2Nyb2xsLXZpZXcnLCB0aGlzLnRyYWNrTW91c2VCdWZmZXJQb3NpdGlvbiksXG4gICAgICBsaXN0ZW4odGhpcy5lZGl0b3JFbGVtZW50LCAnbW91c2VvdXQnLCAnLnNjcm9sbC12aWV3JywgdGhpcy5zdG9wVHJhY2tpbmdNb3VzZUJ1ZmZlclBvc2l0aW9uKSxcbiAgICAgIHRoaXMuZWRpdG9yLm9uRGlkQ2hhbmdlU2VsZWN0aW9uUmFuZ2UodGhpcy50cmFja1NlbGVjdGlvbiksXG4gICAgKVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzdXBwb3J0c0dyYW1tYXIoZ3JhbW1hcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC8vICdzb3VyY2UuYzJocycsXG4gICAgICAvLyAnc291cmNlLmNhYmFsJyxcbiAgICAgIC8vICdzb3VyY2UuaHNjMmhzJyxcbiAgICAgICdzb3VyY2UuaGFza2VsbCcsXG4gICAgICAndGV4dC50ZXgubGF0ZXguaGFza2VsbCcsXG4gICAgICAvLyAnc291cmNlLmhzaWcnLFxuICAgIF0uaW5jbHVkZXMoZ3JhbW1hcilcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmV4cHJUeXBlVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZXhwclR5cGVUaW1lb3V0KVxuICAgIH1cbiAgICBpZiAodGhpcy5zZWxUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5zZWxUaW1lb3V0KVxuICAgIH1cbiAgICB0aGlzLmRpc3Bvc2FibGVzLmRpc3Bvc2UoKVxuICAgIHRoaXMubGFzdE1vdXNlQnVmZmVyUHQgPSB1bmRlZmluZWRcbiAgfVxuXG4gIHB1YmxpYyBnZXRFdmVudFJhbmdlKFxuICAgIGV2ZW50VHlwZTogVEV2ZW50UmFuZ2VUeXBlLFxuICApOiBURXZlbnRSYW5nZVJlc3VsdCB7XG4gICAgbGV0IGNyYW5nZTogUmFuZ2VcbiAgICBsZXQgcG9zOiBQb2ludFxuICAgIHN3aXRjaCAoZXZlbnRUeXBlKSB7XG4gICAgICBjYXNlICdtb3VzZSc6XG4gICAgICBjYXNlICdjb250ZXh0JzpcbiAgICAgICAgaWYgKCF0aGlzLmxhc3RNb3VzZUJ1ZmZlclB0KSByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgIHBvcyA9IHRoaXMubGFzdE1vdXNlQnVmZmVyUHRcbiAgICAgICAgY29uc3QgW3NlbFJhbmdlXSA9IHRoaXMuZWRpdG9yLmdldFNlbGVjdGlvbnMoKVxuICAgICAgICAgIC5tYXAoKHNlbCkgPT4gc2VsLmdldEJ1ZmZlclJhbmdlKCkpXG4gICAgICAgICAgLmZpbHRlcigoc2VsKSA9PiBzZWwuY29udGFpbnNQb2ludChwb3MpKVxuICAgICAgICBjcmFuZ2UgPSBzZWxSYW5nZSB8fCBuZXcgUmFuZ2UocG9zLCBwb3MpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdrZXlib2FyZCc6XG4gICAgICBjYXNlICdzZWxlY3Rpb24nOlxuICAgICAgICBjcmFuZ2UgPSB0aGlzLmVkaXRvci5nZXRMYXN0U2VsZWN0aW9uKCkuZ2V0QnVmZmVyUmFuZ2UoKVxuICAgICAgICBwb3MgPSBjcmFuZ2Uuc3RhcnRcbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBUeXBlRXJyb3IoJ1N3aXRjaCBhc3NlcnRpb24gZmFpbGVkJylcbiAgICB9XG5cbiAgICByZXR1cm4geyBjcmFuZ2UsIHBvcywgZXZlbnRUeXBlIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkU2hvd1Rvb2x0aXAocG9zOiBQb2ludCwgdHlwZTogVEV2ZW50UmFuZ2VUeXBlKSB7XG4gICAgaWYgKChwb3Mucm93IDwgMCkgfHxcbiAgICAgIChwb3Mucm93ID49IHRoaXMuZWRpdG9yLmdldExpbmVDb3VudCgpKSB8fFxuICAgICAgcG9zLmlzRXF1YWwodGhpcy5lZGl0b3IuZ2V0QnVmZmVyKCkucmFuZ2VGb3JSb3cocG9zLnJvdywgZmFsc2UpLmVuZCkpIHtcbiAgICAgIHRoaXMudG9vbHRpcHMuaGlkZSh0eXBlKVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICAgIHRoaXMudG9vbHRpcFJlZ2lzdHJ5LnNob3dUb29sdGlwKHRoaXMuZWRpdG9yLCB0eXBlKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdHJhY2tNb3VzZUJ1ZmZlclBvc2l0aW9uID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBjb25zdCBidWZmZXJQdCA9IGJ1ZmZlclBvc2l0aW9uRnJvbU1vdXNlRXZlbnQodGhpcy5lZGl0b3IsIGUpXG4gICAgaWYgKCFidWZmZXJQdCkgeyByZXR1cm4gfVxuXG4gICAgaWYgKHRoaXMubGFzdE1vdXNlQnVmZmVyUHQgJiYgdGhpcy5sYXN0TW91c2VCdWZmZXJQdC5pc0VxdWFsKGJ1ZmZlclB0KSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHRoaXMubGFzdE1vdXNlQnVmZmVyUHQgPSBidWZmZXJQdFxuXG4gICAgaWYgKHRoaXMuZXhwclR5cGVUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5leHByVHlwZVRpbWVvdXQpXG4gICAgfVxuICAgIHRoaXMuZXhwclR5cGVUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoXG4gICAgICAoKSA9PiBidWZmZXJQdCAmJiB0aGlzLnNob3VsZFNob3dUb29sdGlwKGJ1ZmZlclB0LCBURXZlbnRSYW5nZVR5cGUubW91c2UpLFxuICAgICAgYXRvbS5jb25maWcuZ2V0KFxuICAgICAgICAnaWRlLWhhc2tlbGwuZXhwcmVzc2lvblR5cGVJbnRlcnZhbCcsXG4gICAgICAgIHsgc2NvcGU6IHRoaXMuZWRpdG9yLmdldFJvb3RTY29wZURlc2NyaXB0b3IoKSB9LFxuICAgICAgKSxcbiAgICApXG4gIH1cblxuICBwcml2YXRlIHN0b3BUcmFja2luZ01vdXNlQnVmZmVyUG9zaXRpb24gPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMuZXhwclR5cGVUaW1lb3V0KSB7XG4gICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KHRoaXMuZXhwclR5cGVUaW1lb3V0KVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdHJhY2tTZWxlY3Rpb24gPSAoeyBuZXdCdWZmZXJSYW5nZSB9OiB7IG5ld0J1ZmZlclJhbmdlOiBSYW5nZSB9KSA9PiB7XG4gICAgdGhpcy5oYW5kbGVDdXJzb3JVbmRlclRvb2x0aXAobmV3QnVmZmVyUmFuZ2UpXG5cbiAgICBpZiAodGhpcy5zZWxUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5zZWxUaW1lb3V0KVxuICAgIH1cbiAgICBpZiAobmV3QnVmZmVyUmFuZ2UuaXNFbXB0eSgpKSB7XG4gICAgICB0aGlzLnRvb2x0aXBzLmhpZGUoVEV2ZW50UmFuZ2VUeXBlLnNlbGVjdGlvbilcbiAgICAgIGlmICh0aGlzLmV4cHJUeXBlVGltZW91dCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5leHByVHlwZVRpbWVvdXQpXG4gICAgICB9XG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICAgIHRoaXMudG9vbHRpcFJlZ2lzdHJ5LnNob3dUb29sdGlwKHRoaXMuZWRpdG9yLCBURXZlbnRSYW5nZVR5cGUua2V5Ym9hcmQpXG4gICAgICBpZiAoYXRvbS5jb25maWcuZ2V0KFxuICAgICAgICAnaWRlLWhhc2tlbGwub25DdXJzb3JNb3ZlJyxcbiAgICAgICAgeyBzY29wZTogdGhpcy5lZGl0b3IuZ2V0Um9vdFNjb3BlRGVzY3JpcHRvcigpIH0sXG4gICAgICApID09PSAnSGlkZSBUb29sdGlwJykge1xuICAgICAgICB0aGlzLnRvb2x0aXBzLmhpZGUoVEV2ZW50UmFuZ2VUeXBlLm1vdXNlLCB1bmRlZmluZWQsIHsgcGVyc2lzdGVudDogZmFsc2UgfSlcbiAgICAgICAgdGhpcy50b29sdGlwcy5oaWRlKFRFdmVudFJhbmdlVHlwZS5jb250ZXh0LCB1bmRlZmluZWQsIHsgcGVyc2lzdGVudDogZmFsc2UgfSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHRoaXMuc2hvdWxkU2hvd1Rvb2x0aXAobmV3QnVmZmVyUmFuZ2Uuc3RhcnQsIFRFdmVudFJhbmdlVHlwZS5zZWxlY3Rpb24pLFxuICAgICAgICBhdG9tLmNvbmZpZy5nZXQoXG4gICAgICAgICAgJ2lkZS1oYXNrZWxsLmV4cHJlc3Npb25UeXBlSW50ZXJ2YWwnLFxuICAgICAgICAgIHsgc2NvcGU6IHRoaXMuZWRpdG9yLmdldFJvb3RTY29wZURlc2NyaXB0b3IoKSB9LFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ3Vyc29yVW5kZXJUb29sdGlwKGN1cnJlbnRSYW5nZTogUmFuZ2UpIHtcbiAgICBjb25zdCB0b29sdGlwRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lkZS1oYXNrZWxsLXRvb2x0aXAnKVxuICAgIGlmICghdG9vbHRpcEVsZW1lbnQpIHsgcmV0dXJuIH1cbiAgICBjb25zdCBzbGNsID0gdGhpcy5lZGl0b3JFbGVtZW50LnBpeGVsUmVjdEZvclNjcmVlblJhbmdlKHRoaXMuZWRpdG9yLnNjcmVlblJhbmdlRm9yQnVmZmVyUmFuZ2UoY3VycmVudFJhbmdlKSlcbiAgICBjb25zdCBzdiA9IHRoaXMuZWRpdG9yRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2Nyb2xsLXZpZXcnKVxuICAgIGlmICghc3YpIHsgcmV0dXJuIH1cbiAgICBjb25zdCBlZWNsID0gc3YuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCB0dGNsID0gdG9vbHRpcEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCBkaXYgPSB0b29sdGlwRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdkaXYnKVxuICAgIGlmICghZGl2KSB7IHJldHVybiB9XG4gICAgY29uc3QgdHRjbGQgPSBkaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCB0dGJveCA9IHtcbiAgICAgIGxlZnQ6IHR0Y2wubGVmdCAtIGVlY2wubGVmdCxcbiAgICAgIHRvcDogdHRjbGQudG9wIC0gZWVjbC50b3AsXG4gICAgICB3aWR0aDogdHRjbC53aWR0aCxcbiAgICAgIGhlaWdodDogdHRjbGQuaGVpZ2h0LFxuICAgIH1cbiAgICBjb25zdCB4bWF4ID0gTWF0aC5yb3VuZChNYXRoLm1heCh0dGJveC5sZWZ0LCBzbGNsLmxlZnQpKVxuICAgIGNvbnN0IHhtaW4gPSBNYXRoLnJvdW5kKE1hdGgubWluKHR0Ym94LmxlZnQgKyB0dGJveC53aWR0aCwgc2xjbC5sZWZ0ICtcbiAgICAgIHNsY2wud2lkdGgpKVxuICAgIGNvbnN0IHltYXggPSBNYXRoLnJvdW5kKE1hdGgubWF4KHR0Ym94LnRvcCwgc2xjbC50b3ApKVxuICAgIGNvbnN0IHltaW4gPSBNYXRoLnJvdW5kKE1hdGgubWluKHR0Ym94LnRvcCArIHR0Ym94LmhlaWdodCwgc2xjbC50b3AgK1xuICAgICAgc2xjbC5oZWlnaHQpKVxuICAgIGNvbnN0IHR0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaWRlLWhhc2tlbGwtdG9vbHRpcCcpIGFzIEhUTUxFbGVtZW50XG4gICAgaWYgKHR0KSB7XG4gICAgICBpZiAoKHltYXggPD0geW1pbikgJiYgKHhtYXggPD0geG1pbikpIHtcbiAgICAgICAgdHQuY2xhc3NMaXN0LmFkZCgnaWRlLWhhc2tlbGwtdG9vbHRpcC1zdWJkdWVkJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHR0LmNsYXNzTGlzdC5yZW1vdmUoJ2lkZS1oYXNrZWxsLXRvb2x0aXAtc3ViZHVlZCcpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZWRpdG9yLWNvbnRyb2wvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQkFBZ0Y7QUFDaEYsb0NBQStEO0FBQy9ELHVEQUFrRDtBQVVsRDtJQW1CRSxZQUFvQixNQUFrQixFQUFFLGFBQTRCO1FBQWhELFdBQU0sR0FBTixNQUFNLENBQVk7UUFxRzlCLDZCQUF3QixHQUFHLENBQUMsQ0FBYSxFQUFFLEVBQUU7WUFDbkQsTUFBTSxRQUFRLEdBQUcsb0NBQTRCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUM3RCxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ2QsTUFBTSxDQUFBO1lBQ1IsQ0FBQztZQUVELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkUsTUFBTSxDQUFBO1lBQ1IsQ0FBQztZQUNELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUE7WUFFakMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pCLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUE7WUFDcEMsQ0FBQztZQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FDdEMsR0FBRyxFQUFFLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLFVBQXdCLEVBQ3pFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxFQUFFO2dCQUNwRCxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRTthQUM1QyxDQUFDLENBQ0gsQ0FBQTtRQUNILENBQUMsQ0FB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S0FBSyxDQUFDLENBQUE7UUFDL0MsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ1QsTUFBTSxDQUFBO1FBQ1IsQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxDQUFBO1FBQ3pDLE1BQU0sS0FBSyxHQUFHO1lBQ1osSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUk7WUFDM0IsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUc7WUFDekIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtTQUNyQixDQUFBO1FBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDeEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQzNELENBQUE7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUN0RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FDM0QsQ0FBQTtRQUNELE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQWdCLENBQUE7UUFDdkUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNQLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ2pDLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLDZCQUE2QixDQUFDLENBQUE7WUFDakQsQ0FBQztZQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNOLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUE7WUFDcEQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFyT0Qsc0NBcU9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmFuZ2UsIFRleHRFZGl0b3IsIFBvaW50LCBDb21wb3NpdGVEaXNwb3NhYmxlLCBEaXNwb3NhYmxlIH0gZnJvbSAnYXRvbSdcbmltcG9ydCB7IGJ1ZmZlclBvc2l0aW9uRnJvbU1vdXNlRXZlbnQsIGxpc3RlbiB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgVG9vbHRpcE1hbmFnZXIgfSBmcm9tICcuL3Rvb2x0aXAtbWFuYWdlcidcbmltcG9ydCB7IFRvb2x0aXBSZWdpc3RyeSB9IGZyb20gJy4uL3Rvb2x0aXAtcmVnaXN0cnknXG5pbXBvcnQgeyBQbHVnaW5NYW5hZ2VyLCBJRWRpdG9yQ29udHJvbGxlciB9IGZyb20gJy4uL3BsdWdpbi1tYW5hZ2VyJ1xuaW1wb3J0ICogYXMgVVBJIGZyb20gJ2F0b20taGFza2VsbC11cGknXG5pbXBvcnQgVEV2ZW50UmFuZ2VUeXBlID0gVVBJLlRFdmVudFJhbmdlVHlwZVxuXG5leHBvcnQgdHlwZSBURXZlbnRSYW5nZVJlc3VsdCA9XG4gIHwgeyBjcmFuZ2U6IFJhbmdlOyBwb3M6IFBvaW50OyBldmVudFR5cGU6IFRFdmVudFJhbmdlVHlwZSB9XG4gIHwgdW5kZWZpbmVkXG5cbmV4cG9ydCBjbGFzcyBFZGl0b3JDb250cm9sIGltcGxlbWVudHMgSUVkaXRvckNvbnRyb2xsZXIge1xuICBwdWJsaWMgdG9vbHRpcHM6IFRvb2x0aXBNYW5hZ2VyXG4gIHByaXZhdGUgZGlzcG9zYWJsZXM6IENvbXBvc2l0ZURpc3Bvc2FibGVcbiAgcHJpdmF0ZSBsYXN0TW91c2VCdWZmZXJQdD86IFBvaW50XG4gIHByaXZhdGUgZXhwclR5cGVUaW1lb3V0PzogbnVtYmVyXG4gIHByaXZhdGUgc2VsVGltZW91dD86IG51bWJlclxuICBwcml2YXRlIGVkaXRvckVsZW1lbnQ6IEhUTUxFbGVtZW50ICYge1xuICAgIG9uRGlkQ2hhbmdlU2Nyb2xsVG9wKGE6ICgpID0+IHZvaWQpOiBEaXNwb3NhYmxlXG4gICAgb25EaWRDaGFuZ2VTY3JvbGxMZWZ0KGE6ICgpID0+IHZvaWQpOiBEaXNwb3NhYmxlXG4gICAgcGl4ZWxSZWN0Rm9yU2NyZWVuUmFuZ2UoXG4gICAgICByOiBSYW5nZSxcbiAgICApOiB7XG4gICAgICBsZWZ0OiBudW1iZXJcbiAgICAgIHRvcDogbnVtYmVyXG4gICAgICB3aWR0aDogbnVtYmVyXG4gICAgICBoZWlnaHQ6IG51bWJlclxuICAgIH1cbiAgfVxuICBwcml2YXRlIHRvb2x0aXBSZWdpc3RyeTogVG9vbHRpcFJlZ2lzdHJ5XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWRpdG9yOiBUZXh0RWRpdG9yLCBwbHVnaW5NYW5hZ2VyOiBQbHVnaW5NYW5hZ2VyKSB7XG4gICAgdGhpcy5kaXNwb3NhYmxlcyA9IG5ldyBDb21wb3NpdGVEaXNwb3NhYmxlKClcbiAgICB0aGlzLnRvb2x0aXBzID0gbmV3IFRvb2x0aXBNYW5hZ2VyKHRoaXMuZWRpdG9yKVxuICAgIHRoaXMuZGlzcG9zYWJsZXMuYWRkKHRoaXMudG9vbHRpcHMpXG4gICAgdGhpcy50b29sdGlwUmVnaXN0cnkgPSBwbHVnaW5NYW5hZ2VyLnRvb2x0aXBSZWdpc3RyeVxuXG4gICAgdGhpcy5lZGl0b3JFbGVtZW50ID0gYXRvbS52aWV3cy5nZXRWaWV3KHRoaXMuZWRpdG9yKSBhcyBhbnlcblxuICAgIGNvbnN0IGJ1ZmZlciA9IHRoaXMuZWRpdG9yLmdldEJ1ZmZlcigpXG5cbiAgICB0aGlzLmRpc3Bvc2FibGVzLmFkZChcbiAgICAgIC8vIGJ1ZmZlciBldmVudHMgZm9yIGF1dG9tYXRpYyBjaGVja1xuICAgICAgYnVmZmVyLm9uV2lsbFNhdmUoKCkgPT4gcGx1Z2luTWFuYWdlci53aWxsU2F2ZUJ1ZmZlcihidWZmZXIpKSxcbiAgICAgIGJ1ZmZlci5vbkRpZFNhdmUoKCkgPT4gcGx1Z2luTWFuYWdlci5kaWRTYXZlQnVmZmVyKGJ1ZmZlcikpLFxuICAgICAgdGhpcy5lZGl0b3Iub25EaWRTdG9wQ2hhbmdpbmcoKCkgPT5cbiAgICAgICAgcGx1Z2luTWFuYWdlci5kaWRTdG9wQ2hhbmdpbmcoYnVmZmVyKSxcbiAgICAgICksXG4gICAgICAvLyB0b29sdGlwIHRyYWNraW5nIChtb3VzZSBhbmQgc2VsZWN0aW9uKVxuICAgICAgdGhpcy5lZGl0b3JFbGVtZW50Lm9uRGlkQ2hhbmdlU2Nyb2xsTGVmdCgoKSA9PlxuICAgICAgICB0aGlzLnRvb2x0aXBzLmhpZGUoVEV2ZW50UmFuZ2VUeXBlLm1vdXNlKSxcbiAgICAgICksXG4gICAgICB0aGlzLmVkaXRvckVsZW1lbnQub25EaWRDaGFuZ2VTY3JvbGxUb3AoKCkgPT5cbiAgICAgICAgdGhpcy50b29sdGlwcy5oaWRlKFRFdmVudFJhbmdlVHlwZS5tb3VzZSksXG4gICAgICApLFxuICAgICAgbGlzdGVuKFxuICAgICAgICB0aGlzLmVkaXRvckVsZW1lbnQsXG4gICAgICAgICdtb3VzZW1vdmUnLFxuICAgICAgICAnLnNjcm9sbC12aWV3JyxcbiAgICAgICAgdGhpcy50cmFja01vdXNlQnVmZmVyUG9zaXRpb24sXG4gICAgICApLFxuICAgICAgbGlzdGVuKFxuICAgICAgICB0aGlzLmVkaXRvckVsZW1lbnQsXG4gICAgICAgICdtb3VzZW91dCcsXG4gICAgICAgICcuc2Nyb2xsLXZpZXcnLFxuICAgICAgICB0aGlzLnN0b3BUcmFja2luZ01vdXNlQnVmZmVyUG9zaXRpb24sXG4gICAgICApLFxuICAgICAgdGhpcy5lZGl0b3Iub25EaWRDaGFuZ2VTZWxlY3Rpb25SYW5nZSh0aGlzLnRyYWNrU2VsZWN0aW9uKSxcbiAgICApXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHN1cHBvcnRzR3JhbW1hcihncmFtbWFyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gW1xuICAgICAgLy8gJ3NvdXJjZS5jMmhzJyxcbiAgICAgIC8vICdzb3VyY2UuY2FiYWwnLFxuICAgICAgLy8gJ3NvdXJjZS5oc2MyaHMnLFxuICAgICAgJ3NvdXJjZS5oYXNrZWxsJyxcbiAgICAgICd0ZXh0LnRleC5sYXRleC5oYXNrZWxsJyxcbiAgICAgIC8vICdzb3VyY2UuaHNpZycsXG4gICAgXS5pbmNsdWRlcyhncmFtbWFyKVxuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuZXhwclR5cGVUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5leHByVHlwZVRpbWVvdXQpXG4gICAgfVxuICAgIGlmICh0aGlzLnNlbFRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNlbFRpbWVvdXQpXG4gICAgfVxuICAgIHRoaXMuZGlzcG9zYWJsZXMuZGlzcG9zZSgpXG4gICAgdGhpcy5sYXN0TW91c2VCdWZmZXJQdCA9IHVuZGVmaW5lZFxuICB9XG5cbiAgcHVibGljIGdldEV2ZW50UmFuZ2UoZXZlbnRUeXBlOiBURXZlbnRSYW5nZVR5cGUpOiBURXZlbnRSYW5nZVJlc3VsdCB7XG4gICAgbGV0IGNyYW5nZTogUmFuZ2VcbiAgICBsZXQgcG9zOiBQb2ludFxuICAgIHN3aXRjaCAoZXZlbnRUeXBlKSB7XG4gICAgICBjYXNlICdtb3VzZSc6XG4gICAgICBjYXNlICdjb250ZXh0JzpcbiAgICAgICAgaWYgKCF0aGlzLmxhc3RNb3VzZUJ1ZmZlclB0KSByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgIHBvcyA9IHRoaXMubGFzdE1vdXNlQnVmZmVyUHRcbiAgICAgICAgY29uc3QgW3NlbFJhbmdlXSA9IHRoaXMuZWRpdG9yXG4gICAgICAgICAgLmdldFNlbGVjdGlvbnMoKVxuICAgICAgICAgIC5tYXAoKHNlbCkgPT4gc2VsLmdldEJ1ZmZlclJhbmdlKCkpXG4gICAgICAgICAgLmZpbHRlcigoc2VsKSA9PiBzZWwuY29udGFpbnNQb2ludChwb3MpKVxuICAgICAgICBjcmFuZ2UgPSBzZWxSYW5nZSB8fCBuZXcgUmFuZ2UocG9zLCBwb3MpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdrZXlib2FyZCc6XG4gICAgICBjYXNlICdzZWxlY3Rpb24nOlxuICAgICAgICBjcmFuZ2UgPSB0aGlzLmVkaXRvci5nZXRMYXN0U2VsZWN0aW9uKCkuZ2V0QnVmZmVyUmFuZ2UoKVxuICAgICAgICBwb3MgPSBjcmFuZ2Uuc3RhcnRcbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1N3aXRjaCBhc3NlcnRpb24gZmFpbGVkJylcbiAgICB9XG5cbiAgICByZXR1cm4geyBjcmFuZ2UsIHBvcywgZXZlbnRUeXBlIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkU2hvd1Rvb2x0aXAocG9zOiBQb2ludCwgdHlwZTogVEV2ZW50UmFuZ2VUeXBlKSB7XG4gICAgaWYgKFxuICAgICAgcG9zLnJvdyA8IDAgfHxcbiAgICAgIHBvcy5yb3cgPj0gdGhpcy5lZGl0b3IuZ2V0TGluZUNvdW50KCkgfHxcbiAgICAgIHBvcy5pc0VxdWFsKHRoaXMuZWRpdG9yLmdldEJ1ZmZlcigpLnJhbmdlRm9yUm93KHBvcy5yb3csIGZhbHNlKS5lbmQpXG4gICAgKSB7XG4gICAgICB0aGlzLnRvb2x0aXBzLmhpZGUodHlwZSlcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWZsb2F0aW5nLXByb21pc2VzXG4gICAgICB0aGlzLnRvb2x0aXBSZWdpc3RyeS5zaG93VG9vbHRpcCh0aGlzLmVkaXRvciwgdHlwZSlcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRyYWNrTW91c2VCdWZmZXJQb3NpdGlvbiA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgYnVmZmVyUHQgPSBidWZmZXJQb3NpdGlvbkZyb21Nb3VzZUV2ZW50KHRoaXMuZWRpdG9yLCBlKVxuICAgIGlmICghYnVmZmVyUHQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh0aGlzLmxhc3RNb3VzZUJ1ZmZlclB0ICYmIHRoaXMubGFzdE1vdXNlQnVmZmVyUHQuaXNFcXVhbChidWZmZXJQdCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0aGlzLmxhc3RNb3VzZUJ1ZmZlclB0ID0gYnVmZmVyUHRcblxuICAgIGlmICh0aGlzLmV4cHJUeXBlVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZXhwclR5cGVUaW1lb3V0KVxuICAgIH1cbiAgICB0aGlzLmV4cHJUeXBlVGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KFxuICAgICAgKCkgPT4gYnVmZmVyUHQgJiYgdGhpcy5zaG91bGRTaG93VG9vbHRpcChidWZmZXJQdCwgVEV2ZW50UmFuZ2VUeXBlLm1vdXNlKSxcbiAgICAgIGF0b20uY29uZmlnLmdldCgnaWRlLWhhc2tlbGwuZXhwcmVzc2lvblR5cGVJbnRlcnZhbCcsIHtcbiAgICAgICAgc2NvcGU6IHRoaXMuZWRpdG9yLmdldFJvb3RTY29wZURlc2NyaXB0b3IoKSxcbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgc3RvcFRyYWNraW5nTW91c2VCdWZmZXJQb3NpdGlvbiA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5leHByVHlwZVRpbWVvdXQpIHtcbiAgICAgIHJldHVybiBjbGVhclRpbWVvdXQodGhpcy5leHByVHlwZVRpbWVvdXQpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0cmFja1NlbGVjdGlvbiA9ICh7IG5ld0J1ZmZlclJhbmdlIH06IHsgbmV3QnVmZmVyUmFuZ2U6IFJhbmdlIH0pID0+IHtcbiAgICB0aGlzLmhhbmRsZUN1cnNvclVuZGVyVG9vbHRpcChuZXdCdWZmZXJSYW5nZSlcblxuICAgIGlmICh0aGlzLnNlbFRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNlbFRpbWVvdXQpXG4gICAgfVxuICAgIGlmIChuZXdCdWZmZXJSYW5nZS5pc0VtcHR5KCkpIHtcbiAgICAgIHRoaXMudG9vbHRpcHMuaGlkZShURXZlbnRSYW5nZVR5cGUuc2VsZWN0aW9uKVxuICAgICAgaWYgKHRoaXMuZXhwclR5cGVUaW1lb3V0KSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmV4cHJUeXBlVGltZW91dClcbiAgICAgIH1cbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1mbG9hdGluZy1wcm9taXNlc1xuICAgICAgdGhpcy50b29sdGlwUmVnaXN0cnkuc2hvd1Rvb2x0aXAodGhpcy5lZGl0b3IsIFRFdmVudFJhbmdlVHlwZS5rZXlib2FyZClcbiAgICAgIGlmIChcbiAgICAgICAgYXRvbS5jb25maWcuZ2V0KCdpZGUtaGFza2VsbC5vbkN1cnNvck1vdmUnLCB7XG4gICAgICAgICAgc2NvcGU6IHRoaXMuZWRpdG9yLmdldFJvb3RTY29wZURlc2NyaXB0b3IoKSxcbiAgICAgICAgfSkgPT09ICdIaWRlIFRvb2x0aXAnXG4gICAgICApIHtcbiAgICAgICAgdGhpcy50b29sdGlwcy5oaWRlKFRFdmVudFJhbmdlVHlwZS5tb3VzZSwgdW5kZWZpbmVkLCB7XG4gICAgICAgICAgcGVyc2lzdGVudDogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMudG9vbHRpcHMuaGlkZShURXZlbnRSYW5nZVR5cGUuY29udGV4dCwgdW5kZWZpbmVkLCB7XG4gICAgICAgICAgcGVyc2lzdGVudDogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsVGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PlxuICAgICAgICAgIHRoaXMuc2hvdWxkU2hvd1Rvb2x0aXAoXG4gICAgICAgICAgICBuZXdCdWZmZXJSYW5nZS5zdGFydCxcbiAgICAgICAgICAgIFRFdmVudFJhbmdlVHlwZS5zZWxlY3Rpb24sXG4gICAgICAgICAgKSxcbiAgICAgICAgYXRvbS5jb25maWcuZ2V0KCdpZGUtaGFza2VsbC5leHByZXNzaW9uVHlwZUludGVydmFsJywge1xuICAgICAgICAgIHNjb3BlOiB0aGlzLmVkaXRvci5nZXRSb290U2NvcGVEZXNjcmlwdG9yKCksXG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ3Vyc29yVW5kZXJUb29sdGlwKGN1cnJlbnRSYW5nZTogUmFuZ2UpIHtcbiAgICBjb25zdCB0b29sdGlwRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lkZS1oYXNrZWxsLXRvb2x0aXAnKVxuICAgIGlmICghdG9vbHRpcEVsZW1lbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBzbGNsID0gdGhpcy5lZGl0b3JFbGVtZW50LnBpeGVsUmVjdEZvclNjcmVlblJhbmdlKFxuICAgICAgdGhpcy5lZGl0b3Iuc2NyZWVuUmFuZ2VGb3JCdWZmZXJSYW5nZShjdXJyZW50UmFuZ2UpLFxuICAgIClcbiAgICBjb25zdCBzdiA9IHRoaXMuZWRpdG9yRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2Nyb2xsLXZpZXcnKVxuICAgIGlmICghc3YpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBlZWNsID0gc3YuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCB0dGNsID0gdG9vbHRpcEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCBkaXYgPSB0b29sdGlwRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdkaXYnKVxuICAgIGlmICghZGl2KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3QgdHRjbGQgPSBkaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCB0dGJveCA9IHtcbiAgICAgIGxlZnQ6IHR0Y2wubGVmdCAtIGVlY2wubGVmdCxcbiAgICAgIHRvcDogdHRjbGQudG9wIC0gZWVjbC50b3AsXG4gICAgICB3aWR0aDogdHRjbC53aWR0aCxcbiAgICAgIGhlaWdodDogdHRjbGQuaGVpZ2h0LFxuICAgIH1cbiAgICBjb25zdCB4bWF4ID0gTWF0aC5yb3VuZChNYXRoLm1heCh0dGJveC5sZWZ0LCBzbGNsLmxlZnQpKVxuICAgIGNvbnN0IHhtaW4gPSBNYXRoLnJvdW5kKFxuICAgICAgTWF0aC5taW4odHRib3gubGVmdCArIHR0Ym94LndpZHRoLCBzbGNsLmxlZnQgKyBzbGNsLndpZHRoKSxcbiAgICApXG4gICAgY29uc3QgeW1heCA9IE1hdGgucm91bmQoTWF0aC5tYXgodHRib3gudG9wLCBzbGNsLnRvcCkpXG4gICAgY29uc3QgeW1pbiA9IE1hdGgucm91bmQoXG4gICAgICBNYXRoLm1pbih0dGJveC50b3AgKyB0dGJveC5oZWlnaHQsIHNsY2wudG9wICsgc2xjbC5oZWlnaHQpLFxuICAgIClcbiAgICBjb25zdCB0dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lkZS1oYXNrZWxsLXRvb2x0aXAnKSBhcyBIVE1MRWxlbWVudFxuICAgIGlmICh0dCkge1xuICAgICAgaWYgKHltYXggPD0geW1pbiAmJiB4bWF4IDw9IHhtaW4pIHtcbiAgICAgICAgdHQuY2xhc3NMaXN0LmFkZCgnaWRlLWhhc2tlbGwtdG9vbHRpcC1zdWJkdWVkJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHR0LmNsYXNzTGlzdC5yZW1vdmUoJ2lkZS1oYXNrZWxsLXRvb2x0aXAtc3ViZHVlZCcpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/lib/ide-haskell.js b/lib/ide-haskell.js index fc4368c..12cf9d4 100644 --- a/lib/ide-haskell.js +++ b/lib/ide-haskell.js @@ -15,7 +15,8 @@ let outputPanel; let menu; var config_1 = require("./config"); exports.config = config_1.config; -function cleanConfig() { } +function cleanConfig() { +} function activate(state) { cleanConfig(); atom.views.getView(atom.workspace).classList.add('ide-haskell'); @@ -32,9 +33,15 @@ function activate(state) { disposables = new CompositeDisposable(); pluginManager = new plugin_manager_1.PluginManager(state, outputPanel || new OutputPanel.OutputPanel()); disposables.add(atom.commands.add('atom-workspace', { - 'ide-haskell:toggle-output': () => { pluginManager && pluginManager.togglePanel(); }, - 'ide-haskell:next-error': () => { pluginManager && pluginManager.nextError(); }, - 'ide-haskell:prev-error': () => { pluginManager && pluginManager.prevError(); }, + 'ide-haskell:toggle-output': () => { + pluginManager && pluginManager.togglePanel(); + }, + 'ide-haskell:next-error': () => { + pluginManager && pluginManager.nextError(); + }, + 'ide-haskell:prev-error': () => { + pluginManager && pluginManager.prevError(); + }, }), atom.commands.add('atom-text-editor.ide-haskell', { 'ide-haskell:prettify-file': ({ currentTarget }) => { prettify_1.prettifyFile(currentTarget.getModel()); @@ -51,13 +58,15 @@ function activate(state) { }, })); menu = new CompositeDisposable(); - menu.add(atom.menu.add([{ + menu.add(atom.menu.add([ + { label: utils_1.MAIN_MENU_LABEL, submenu: [ { label: 'Prettify', command: 'ide-haskell:prettify-file' }, { label: 'Toggle Panel', command: 'ide-haskell:toggle-output' }, ], - }])); + }, + ])); } exports.activate = activate; function deactivate() { @@ -119,4 +128,4 @@ function consumeStatusBar(statusBar) { }); } exports.consumeStatusBar = consumeStatusBar; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlLWhhc2tlbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaWRlLWhhc2tlbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxREFBd0Q7QUFDeEQseUNBQXlDO0FBQ3pDLG1DQUF5QztBQUN6QyxnQ0FBK0I7QUFDL0IsOENBQTZDO0FBQzdDLGtDQUFpQztBQUlqQyxJQUFPLG1CQUFtQixHQUFHLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQTtBQUMxRCxJQUFPLFVBQVUsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFBO0FBRXhDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQTtBQUN2QixJQUFJLFdBQTRDLENBQUE7QUFDaEQsSUFBSSxhQUF3QyxDQUFBO0FBQzVDLElBQUksV0FBZ0QsQ0FBQTtBQUNwRCxJQUFJLElBQXFDLENBQUE7QUFFekMsbUNBQWlDO0FBQXhCLDBCQUFBLE1BQU0sQ0FBQTtBQUVmLHlCQUFrQyxDQUFDO0FBRW5DLGtCQUF5QixLQUFhO0lBQ3BDLFdBQVcsRUFBRSxDQUFBO0lBRWIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUE7SUFHL0QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFeEMsV0FBVyxHQUFHLEtBQUssQ0FBQTtJQUVuQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RCxVQUFVLENBQ1IsR0FBRyxFQUFFO1lBQ0gsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FDM0I7K0NBQ21DLEVBQ25DLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxD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LFNBQVMsQ0FBQTtJQUFDLENBQUM7SUFDeEMsYUFBYSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNyQyxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ3pCLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDbEIsYUFBYSxDQUFDLGVBQWUsRUFBRSxDQUFBO1FBQ2pDLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFSRCw0Q0FRQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsdWdpbk1hbmFnZXIsIElTdGF0ZSB9IGZyb20gJy4vcGx1Z2luLW1hbmFnZXInXG5pbXBvcnQgeyBwcmV0dGlmeUZpbGUgfSBmcm9tICcuL3ByZXR0aWZ5J1xuaW1wb3J0IHsgTUFJTl9NRU5VX0xBQkVMIH0gZnJvbSAnLi91dGlscydcbmltcG9ydCAqIGFzIFVQSTMgZnJvbSAnLi91cGktMydcbmltcG9ydCAqIGFzIE91dHB1dFBhbmVsIGZyb20gJy4vb3V0cHV0LXBhbmVsJ1xuaW1wb3J0ICogYXMgQXRvbVR5cGVzIGZyb20gJ2F0b20nXG5pbXBvcnQgKiBhcyBVUEkgZnJvbSAnYXRvbS1oYXNrZWxsLXVwaSdcbmltcG9ydCAqIGFzIExpbnRlciBmcm9tICdhdG9tL2xpbnRlcidcbmltcG9ydCAqIGFzIFN0YXR1c0JhciBmcm9tICdhdG9tL3N0YXR1cy1iYXInXG5pbXBvcnQgQ29tcG9zaXRlRGlzcG9zYWJsZSA9IEF0b21UeXBlcy5Db21wb3NpdGVEaXNwb3NhYmxlXG5pbXBvcnQgRGlzcG9zYWJsZSA9IEF0b21UeXBlcy5EaXNwb3NhYmxlXG5cbmxldCB1cGlQcm92aWRlZCA9IGZhbHNlXG5sZXQgZGlzcG9zYWJsZXM6IENvbXBvc2l0ZURpc3Bvc2FibGUgfCB1bmRlZmluZWRcbmxldCBwbHVnaW5NYW5hZ2VyOiBQbHVnaW5NYW5hZ2VyIHwgdW5kZWZpbmVkXG5sZXQgb3V0cHV0UGFuZWw6IE91dHB1dFBhbmVsLk91dHB1dFBhbmVsIHwgdW5kZWZpbmVkXG5sZXQgbWVudTogQ29tcG9zaXRlRGlzcG9zYWJsZSB8IHVuZGVmaW5lZFxuXG5leHBvcnQgeyBjb25maWcgfSBmcm9tICcuL2NvbmZpZydcblxuZnVuY3Rpb24gY2xlYW5Db25maWcoKSB7IC8qbm9vcCovIH1cblxuZXhwb3J0IGZ1bmN0aW9uIGFjdGl2YXRlKHN0YXRlOiBJU3RhdGUpIHtcbiAgY2xlYW5Db25maWcoKVxuXG4gIGF0b20udmlld3MuZ2V0VmlldyhhdG9tLndvcmtzcGFjZSkuY2xhc3NMaXN0LmFkZCgnaWRlLWhhc2tlbGwnKVxuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby11bnNhZmUtYW55XG4gIHJlcXVpcmUoJ2V0Y2gnKS5zZXRTY2hlZHVsZXIoYXRvbS52aWV3cylcblxuICB1cGlQcm92aWRlZCA9IGZhbHNlXG5cbiAgaWYgKGF0b20uY29uZmlnLmdldCgnaWRlLWhhc2tlbGwuc3RhcnR1cE1lc3NhZ2VJZGVCYWNrZW5kJykpIHtcbiAgICBzZXRUaW1lb3V0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAoIXVwaVByb3ZpZGVkKSB7XG4gICAgICAgICAgYXRvbS5ub3RpZmljYXRpb25zLmFkZFdhcm5pbmcoXG4gICAgICAgICAgICBgSWRlLUhhc2tlbGwgbmVlZHMgYmFja2VuZHMgdGhhdCBwcm92aWRlIG1vc3Qgb2YgZnVuY3Rpb25hbGl0eS5cbiAgICAgICAgICAgIFBsZWFzZSByZWZlciB0byBSRUFETUUgZm9yIGRldGFpbHNgLFxuICAgICAgICAgICAgeyBkaXNtaXNzYWJsZTogdHJ1ZSB9KVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgNTAwMCxcbiAgICApXG4gIH1cblxuICBkaXNwb3NhYmxlcyA9IG5ldyBDb21wb3NpdGVEaXNwb3NhYmxlKClcblxuICBwbHVnaW5NYW5hZ2VyID0gbmV3IFBsdWdpbk1hbmFnZXIoc3RhdGUsIG91dHB1dFBhbmVsIHx8IG5ldyBPdXRwdXRQYW5lbC5PdXRwdXRQYW5lbCgpKVxuXG4gIC8vIGdsb2JhbCBjb21tYW5kc1xuICBkaXNwb3NhYmxlcy5hZGQoXG4gICAgYXRvbS5jb21tYW5kcy5hZGQoJ2F0b20td29ya3NwYWNlJywge1xuICAgICAgJ2lkZS1oYXNrZWxsOnRvZ2dsZS1vdXRwdXQnOiAoKSA9PiB7IHBsdWdpbk1hbmFnZXIgJiYgcGx1Z2luTWFuYWdlci50b2dnbGVQYW5lbCgpIH0sXG4gICAgICAnaWRlLWhhc2tlbGw6bmV4dC1lcnJvcic6ICgpID0+IHsgcGx1Z2luTWFuYWdlciAmJiBwbHVnaW5NYW5hZ2VyLm5leHRFcnJvcigpIH0sXG4gICAgICAnaWRlLWhhc2tlbGw6cHJldi1lcnJvcic6ICgpID0+IHsgcGx1Z2luTWFuYWdlciAmJiBwbHVnaW5NYW5hZ2VyLnByZXZFcnJvcigpIH0sXG4gICAgfSksXG4gICAgYXRvbS5jb21tYW5kcy5hZGQoJ2F0b20tdGV4dC1lZGl0b3IuaWRlLWhhc2tlbGwnLCB7XG4gICAgICAnaWRlLWhhc2tlbGw6cHJldHRpZnktZmlsZSc6ICh7IGN1cnJlbnRUYXJnZXQgfSkgPT4ge1xuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICAgICAgcHJldHRpZnlGaWxlKGN1cnJlbnRUYXJnZXQuZ2V0TW9kZWwoKSlcbiAgICAgIH0sXG4gICAgfSksXG4gICAgYXRvbS5jb21tYW5kcy5hZGQoJ2F0b20tdGV4dC1lZGl0b3IuaWRlLWhhc2tlbGwtLWhhcy10b29sdGlwcycsIHtcbiAgICAgICdpZGUtaGFza2VsbDpjbG9zZS10b29sdGlwJzogKHsgY3VycmVudFRhcmdldCwgYWJvcnRLZXlCaW5kaW5nIH0pID0+IHtcbiAgICAgICAgY29uc3QgY29udHJvbGxlciA9IHBsdWdpbk1hbmFnZXIgJiYgcGx1Z2luTWFuYWdlci5jb250cm9sbGVyKGN1cnJlbnRUYXJnZXQuZ2V0TW9kZWwoKSlcbiAgICAgICAgaWYgKGNvbnRyb2xsZXIgJiYgY29udHJvbGxlci50b29sdGlwcy5oYXMoKSkge1xuICAgICAgICAgIGNvbnRyb2xsZXIudG9vbHRpcHMuaGlkZSgpXG4gICAgICAgIH0gZWxzZSBpZiAoYWJvcnRLZXlCaW5kaW5nKSB7XG4gICAgICAgICAgYWJvcnRLZXlCaW5kaW5nKClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KSxcbiAgKVxuXG4gIG1lbnUgPSBuZXcgQ29tcG9zaXRlRGlzcG9zYWJsZSgpXG4gIG1lbnUuYWRkKGF0b20ubWVudS5hZGQoW3tcbiAgICBsYWJlbDogTUFJTl9NRU5VX0xBQkVMLFxuICAgIHN1Ym1lbnU6IFtcbiAgICAgIHsgbGFiZWw6ICdQcmV0dGlmeScsIGNvbW1hbmQ6ICdpZGUtaGFza2VsbDpwcmV0dGlmeS1maWxlJyB9LFxuICAgICAgeyBsYWJlbDogJ1RvZ2dsZSBQYW5lbCcsIGNvbW1hbmQ6ICdpZGUtaGFza2VsbDp0b2dnbGUtb3V0cHV0JyB9LFxuICAgIF0sXG4gIH1dKSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlYWN0aXZhdGUoKSB7XG4gIHBsdWdpbk1hbmFnZXIgJiYgcGx1Z2luTWFuYWdlci5kZWFjdGl2YXRlKClcblxuICAvLyBjbGVhciBjb21tYW5kc1xuICBkaXNwb3NhYmxlcyAmJiBkaXNwb3NhYmxlcy5kaXNwb3NlKClcblxuICBtZW51ICYmIG1lbnUuZGlzcG9zZSgpXG4gIGF0b20ubWVudS51cGRhdGUoKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplKCkge1xuICBpZiAocGx1Z2luTWFuYWdlcikge1xuICAgIHJldHVybiBwbHVnaW5NYW5hZ2VyLnNlcmlhbGl6ZSgpXG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemVPdXRwdXRQYW5lbChzdGF0ZTogT3V0cHV0UGFuZWwuSVN0YXRlKSB7XG4gIG91dHB1dFBhbmVsID0gbmV3IE91dHB1dFBhbmVsLk91dHB1dFBhbmVsKHN0YXRlKVxuICByZXR1cm4gb3V0cHV0UGFuZWxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVVcGkzKCk6IFVQSS5JVVBJUmVnaXN0cmF0aW9uIHtcbiAgdXBpUHJvdmlkZWQgPSB0cnVlXG4gIHJldHVybiAob3B0aW9uczogVVBJLklSZWdpc3RyYXRpb25PcHRpb25zKSA9PiB7XG4gICAgaWYgKCFwbHVnaW5NYW5hZ2VyKSB7IHRocm93IG5ldyBFcnJvcignSURFLUhhc2tlbGwgZmFpbGVkIHRvIHByb3ZpZGUgVVBJIGluc3RhbmNlOiBwbHVnaW5NYW5hZ2VyIGlzIHVuZGVmaW5lZCcpIH1cbiAgICByZXR1cm4gVVBJMy5pbnN0YW5jZShwbHVnaW5NYW5hZ2VyLCBvcHRpb25zKVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdW1lVXBpMyhyZWdpc3RyYXRpb246IFVQSS5JUmVnaXN0cmF0aW9uT3B0aW9ucyk6IERpc3Bvc2FibGUgfCB1bmRlZmluZWQge1xuICB1cGlQcm92aWRlZCA9IHRydWVcbiAgaWYgKHBsdWdpbk1hbmFnZXIpIHtcbiAgICByZXR1cm4gVVBJMy5jb25zdW1lKHBsdWdpbk1hbmFnZXIsIHJlZ2lzdHJhdGlvbilcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdW1lTGludGVyKHJlZ2lzdGVyOiAob3B0czoge30pID0+IExpbnRlci5JbmRpZURlbGVnYXRlKTogRGlzcG9zYWJsZSB8IHVuZGVmaW5lZCB7XG4gIGlmICghKGRpc3Bvc2FibGVzICYmIHBsdWdpbk1hbmFnZXIpKSB7IHJldHVybiB1bmRlZmluZWQgfVxuICBjb25zdCBsaW50ZXIgPSByZWdpc3Rlcih7IG5hbWU6ICdJREUtSGFza2VsbCcgfSlcbiAgZGlzcG9zYWJsZXMuYWRkKGxpbnRlcilcbiAgcGx1Z2luTWFuYWdlci5zZXRMaW50ZXIobGludGVyKVxuICByZXR1cm4gbGludGVyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdW1lU3RhdHVzQmFyKHN0YXR1c0JhcjogU3RhdHVzQmFyLlN0YXR1c0Jhcik6IERpc3Bvc2FibGUgfCB1bmRlZmluZWQge1xuICBpZiAoIXBsdWdpbk1hbmFnZXIpIHsgcmV0dXJuIHVuZGVmaW5lZCB9XG4gIHBsdWdpbk1hbmFnZXIuc2V0U3RhdHVzQmFyKHN0YXR1c0JhcilcbiAgcmV0dXJuIG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICBpZiAocGx1Z2luTWFuYWdlcikge1xuICAgICAgcGx1Z2luTWFuYWdlci5yZW1vdmVTdGF0dXNCYXIoKVxuICAgIH1cbiAgfSlcbn1cbiJdfQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlLWhhc2tlbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaWRlLWhhc2tlbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxREFBd0Q7QUFDeEQseUNBQXlDO0FBQ3pDLG1DQUF5QztBQUN6QyxnQ0FBK0I7QUFDL0IsOENBQTZDO0FBQzdDLGtDQUFpQztBQUlqQyxJQUFPLG1CQUFtQixHQUFHLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQTtBQUMxRCxJQUFPLFVBQVUsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFBO0FBRXhDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQTtBQUN2QixJQUFJLFdBQTRDLENBQUE7QUFDaEQsSUFBSSxhQUF3QyxDQUFBO0FBQzVDLElBQUksV0FBZ0QsQ0FBQTtBQUNwRCxJQUFJLElBQXFDLENBQUE7QUFFekMsbUNBQWlDO0FBQXhCLDBCQUFBLE1BQU0sQ0FBQTtBQUVmO0FBRUEsQ0FBQztBQUVELGtCQUF5QixLQUFhO0lBQ3BDLFdBQVcsRUFBRSxDQUFBO0lBRWIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUE7SUFHL0QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFeEMsV0FBVyxHQUFHLEtBQUssQ0FBQTtJQUVuQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FDM0I7K0NBQ3FDLEVBQ3JDLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUN0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LFNBQVMsQ0FBQTtJQUNsQixDQUFDO0lBQ0QsYUFBYSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNyQyxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ3pCLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDbEIsYUFBYSxDQUFDLGVBQWUsRUFBRSxDQUFBO1FBQ2pDLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFaRCw0Q0FZQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsdWdpbk1hbmFnZXIsIElTdGF0ZSB9IGZyb20gJy4vcGx1Z2luLW1hbmFnZXInXG5pbXBvcnQgeyBwcmV0dGlmeUZpbGUgfSBmcm9tICcuL3ByZXR0aWZ5J1xuaW1wb3J0IHsgTUFJTl9NRU5VX0xBQkVMIH0gZnJvbSAnLi91dGlscydcbmltcG9ydCAqIGFzIFVQSTMgZnJvbSAnLi91cGktMydcbmltcG9ydCAqIGFzIE91dHB1dFBhbmVsIGZyb20gJy4vb3V0cHV0LXBhbmVsJ1xuaW1wb3J0ICogYXMgQXRvbVR5cGVzIGZyb20gJ2F0b20nXG5pbXBvcnQgKiBhcyBVUEkgZnJvbSAnYXRvbS1oYXNrZWxsLXVwaSdcbmltcG9ydCAqIGFzIExpbnRlciBmcm9tICdhdG9tL2xpbnRlcidcbmltcG9ydCAqIGFzIFN0YXR1c0JhciBmcm9tICdhdG9tL3N0YXR1cy1iYXInXG5pbXBvcnQgQ29tcG9zaXRlRGlzcG9zYWJsZSA9IEF0b21UeXBlcy5Db21wb3NpdGVEaXNwb3NhYmxlXG5pbXBvcnQgRGlzcG9zYWJsZSA9IEF0b21UeXBlcy5EaXNwb3NhYmxlXG5cbmxldCB1cGlQcm92aWRlZCA9IGZhbHNlXG5sZXQgZGlzcG9zYWJsZXM6IENvbXBvc2l0ZURpc3Bvc2FibGUgfCB1bmRlZmluZWRcbmxldCBwbHVnaW5NYW5hZ2VyOiBQbHVnaW5NYW5hZ2VyIHwgdW5kZWZpbmVkXG5sZXQgb3V0cHV0UGFuZWw6IE91dHB1dFBhbmVsLk91dHB1dFBhbmVsIHwgdW5kZWZpbmVkXG5sZXQgbWVudTogQ29tcG9zaXRlRGlzcG9zYWJsZSB8IHVuZGVmaW5lZFxuXG5leHBvcnQgeyBjb25maWcgfSBmcm9tICcuL2NvbmZpZydcblxuZnVuY3Rpb24gY2xlYW5Db25maWcoKSB7XG4gIC8qbm9vcCovXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhY3RpdmF0ZShzdGF0ZTogSVN0YXRlKSB7XG4gIGNsZWFuQ29uZmlnKClcblxuICBhdG9tLnZpZXdzLmdldFZpZXcoYXRvbS53b3Jrc3BhY2UpLmNsYXNzTGlzdC5hZGQoJ2lkZS1oYXNrZWxsJylcblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tdW5zYWZlLWFueVxuICByZXF1aXJlKCdldGNoJykuc2V0U2NoZWR1bGVyKGF0b20udmlld3MpXG5cbiAgdXBpUHJvdmlkZWQgPSBmYWxzZVxuXG4gIGlmIChhdG9tLmNvbmZpZy5nZXQoJ2lkZS1oYXNrZWxsLnN0YXJ0dXBNZXNzYWdlSWRlQmFja2VuZCcpKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIXVwaVByb3ZpZGVkKSB7XG4gICAgICAgIGF0b20ubm90aWZpY2F0aW9ucy5hZGRXYXJuaW5nKFxuICAgICAgICAgIGBJZGUtSGFza2VsbCBuZWVkcyBiYWNrZW5kcyB0aGF0IHByb3ZpZGUgbW9zdCBvZiBmdW5jdGlvbmFsaXR5LlxuICAgICAgICAgICAgUGxlYXNlIHJlZmVyIHRvIFJFQURNRSBmb3IgZGV0YWlsc2AsXG4gICAgICAgICAgeyBkaXNtaXNzYWJsZTogdHJ1ZSB9LFxuICAgICAgICApXG4gICAgICB9XG4gICAgfSwgNTAwMClcbiAgfVxuXG4gIGRpc3Bvc2FibGVzID0gbmV3IENvbXBvc2l0ZURpc3Bvc2FibGUoKVxuXG4gIHBsdWdpbk1hbmFnZXIgPSBuZXcgUGx1Z2luTWFuYWdlcihcbiAgICBzdGF0ZSxcbiAgICBvdXRwdXRQYW5lbCB8fCBuZXcgT3V0cHV0UGFuZWwuT3V0cHV0UGFuZWwoKSxcbiAgKVxuXG4gIC8vIGdsb2JhbCBjb21tYW5kc1xuICBkaXNwb3NhYmxlcy5hZGQoXG4gICAgYXRvbS5jb21tYW5kcy5hZGQoJ2F0b20td29ya3NwYWNlJywge1xuICAgICAgJ2lkZS1oYXNrZWxsOnRvZ2dsZS1vdXRwdXQnOiAoKSA9PiB7XG4gICAgICAgIHBsdWdpbk1hbmFnZXIgJiYgcGx1Z2luTWFuYWdlci50b2dnbGVQYW5lbCgpXG4gICAgICB9LFxuICAgICAgJ2lkZS1oYXNrZWxsOm5leHQtZXJyb3InOiAoKSA9PiB7XG4gICAgICAgIHBsdWdpbk1hbmFnZXIgJiYgcGx1Z2luTWFuYWdlci5uZXh0RXJyb3IoKVxuICAgICAgfSxcbiAgICAgICdpZGUtaGFza2VsbDpwcmV2LWVycm9yJzogKCkgPT4ge1xuICAgICAgICBwbHVnaW5NYW5hZ2VyICYmIHBsdWdpbk1hbmFnZXIucHJldkVycm9yKClcbiAgICAgIH0sXG4gICAgfSksXG4gICAgYXRvbS5jb21tYW5kcy5hZGQoJ2F0b20tdGV4dC1lZGl0b3IuaWRlLWhhc2tlbGwnLCB7XG4gICAgICAnaWRlLWhhc2tlbGw6cHJldHRpZnktZmlsZSc6ICh7IGN1cnJlbnRUYXJnZXQgfSkgPT4ge1xuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICAgICAgcHJldHRpZnlGaWxlKGN1cnJlbnRUYXJnZXQuZ2V0TW9kZWwoKSlcbiAgICAgIH0sXG4gICAgfSksXG4gICAgYXRvbS5jb21tYW5kcy5hZGQoJ2F0b20tdGV4dC1lZGl0b3IuaWRlLWhhc2tlbGwtLWhhcy10b29sdGlwcycsIHtcbiAgICAgICdpZGUtaGFza2VsbDpjbG9zZS10b29sdGlwJzogKHsgY3VycmVudFRhcmdldCwgYWJvcnRLZXlCaW5kaW5nIH0pID0+IHtcbiAgICAgICAgY29uc3QgY29udHJvbGxlciA9XG4gICAgICAgICAgcGx1Z2luTWFuYWdlciAmJiBwbHVnaW5NYW5hZ2VyLmNvbnRyb2xsZXIoY3VycmVudFRhcmdldC5nZXRNb2RlbCgpKVxuICAgICAgICBpZiAoY29udHJvbGxlciAmJiBjb250cm9sbGVyLnRvb2x0aXBzLmhhcygpKSB7XG4gICAgICAgICAgY29udHJvbGxlci50b29sdGlwcy5oaWRlKClcbiAgICAgICAgfSBlbHNlIGlmIChhYm9ydEtleUJpbmRpbmcpIHtcbiAgICAgICAgICBhYm9ydEtleUJpbmRpbmcoKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pLFxuICApXG5cbiAgbWVudSA9IG5ldyBDb21wb3NpdGVEaXNwb3NhYmxlKClcbiAgbWVudS5hZGQoXG4gICAgYXRvbS5tZW51LmFkZChbXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiBNQUlOX01FTlVfTEFCRUwsXG4gICAgICAgIHN1Ym1lbnU6IFtcbiAgICAgICAgICB7IGxhYmVsOiAnUHJldHRpZnknLCBjb21tYW5kOiAnaWRlLWhhc2tlbGw6cHJldHRpZnktZmlsZScgfSxcbiAgICAgICAgICB7IGxhYmVsOiAnVG9nZ2xlIFBhbmVsJywgY29tbWFuZDogJ2lkZS1oYXNrZWxsOnRvZ2dsZS1vdXRwdXQnIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0pLFxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWFjdGl2YXRlKCkge1xuICBwbHVnaW5NYW5hZ2VyICYmIHBsdWdpbk1hbmFnZXIuZGVhY3RpdmF0ZSgpXG5cbiAgLy8gY2xlYXIgY29tbWFuZHNcbiAgZGlzcG9zYWJsZXMgJiYgZGlzcG9zYWJsZXMuZGlzcG9zZSgpXG5cbiAgbWVudSAmJiBtZW51LmRpc3Bvc2UoKVxuICBhdG9tLm1lbnUudXBkYXRlKClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSgpIHtcbiAgaWYgKHBsdWdpbk1hbmFnZXIpIHtcbiAgICByZXR1cm4gcGx1Z2luTWFuYWdlci5zZXJpYWxpemUoKVxuICB9XG4gIHJldHVybiB1bmRlZmluZWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplT3V0cHV0UGFuZWwoc3RhdGU6IE91dHB1dFBhbmVsLklTdGF0ZSkge1xuICBvdXRwdXRQYW5lbCA9IG5ldyBPdXRwdXRQYW5lbC5PdXRwdXRQYW5lbChzdGF0ZSlcbiAgcmV0dXJuIG91dHB1dFBhbmVsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlVXBpMygpOiBVUEkuSVVQSVJlZ2lzdHJhdGlvbiB7XG4gIHVwaVByb3ZpZGVkID0gdHJ1ZVxuICByZXR1cm4gKG9wdGlvbnM6IFVQSS5JUmVnaXN0cmF0aW9uT3B0aW9ucykgPT4ge1xuICAgIGlmICghcGx1Z2luTWFuYWdlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnSURFLUhhc2tlbGwgZmFpbGVkIHRvIHByb3ZpZGUgVVBJIGluc3RhbmNlOiBwbHVnaW5NYW5hZ2VyIGlzIHVuZGVmaW5lZCcsXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiBVUEkzLmluc3RhbmNlKHBsdWdpbk1hbmFnZXIsIG9wdGlvbnMpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnN1bWVVcGkzKFxuICByZWdpc3RyYXRpb246IFVQSS5JUmVnaXN0cmF0aW9uT3B0aW9ucyxcbik6IERpc3Bvc2FibGUgfCB1bmRlZmluZWQge1xuICB1cGlQcm92aWRlZCA9IHRydWVcbiAgaWYgKHBsdWdpbk1hbmFnZXIpIHtcbiAgICByZXR1cm4gVVBJMy5jb25zdW1lKHBsdWdpbk1hbmFnZXIsIHJlZ2lzdHJhdGlvbilcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdW1lTGludGVyKFxuICByZWdpc3RlcjogKG9wdHM6IHt9KSA9PiBMaW50ZXIuSW5kaWVEZWxlZ2F0ZSxcbik6IERpc3Bvc2FibGUgfCB1bmRlZmluZWQge1xuICBpZiAoIShkaXNwb3NhYmxlcyAmJiBwbHVnaW5NYW5hZ2VyKSkge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuICBjb25zdCBsaW50ZXIgPSByZWdpc3Rlcih7IG5hbWU6ICdJREUtSGFza2VsbCcgfSlcbiAgZGlzcG9zYWJsZXMuYWRkKGxpbnRlcilcbiAgcGx1Z2luTWFuYWdlci5zZXRMaW50ZXIobGludGVyKVxuICByZXR1cm4gbGludGVyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdW1lU3RhdHVzQmFyKFxuICBzdGF0dXNCYXI6IFN0YXR1c0Jhci5TdGF0dXNCYXIsXG4pOiBEaXNwb3NhYmxlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFwbHVnaW5NYW5hZ2VyKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG4gIHBsdWdpbk1hbmFnZXIuc2V0U3RhdHVzQmFyKHN0YXR1c0JhcilcbiAgcmV0dXJuIG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICBpZiAocGx1Z2luTWFuYWdlcikge1xuICAgICAgcGx1Z2luTWFuYWdlci5yZW1vdmVTdGF0dXNCYXIoKVxuICAgIH1cbiAgfSlcbn1cbiJdfQ== \ No newline at end of file diff --git a/lib/plugin-manager.js b/lib/plugin-manager.js index 98847f6..c6aa045 100644 --- a/lib/plugin-manager.js +++ b/lib/plugin-manager.js @@ -156,4 +156,4 @@ class PluginManager { } } exports.PluginManager = PluginManager; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGx1Z2luLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQkFBZ0c7QUFDaEcsNkNBQXdDO0FBRXhDLG1EQUEyRTtBQUMzRSxxREFBZ0Q7QUFDaEQscURBQWdEO0FBQ2hELHlEQUFvRDtBQUNwRCxxRUFBK0Q7QUFDL0QsNkNBQTRDO0FBQzVDLHlDQUFxRDtBQUNyRCwrREFBeUQ7QUErQnpEO0lBZUUsWUFBYSxLQUFhLEVBQVMsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFUbkQsZ0JBQVcsR0FBRyxJQUFJLDBCQUFtQixFQUFFLENBQUE7UUFDdkMsWUFBTyxHQUlWLElBQUksY0FBTyxFQUFFLENBQUE7UUFHVixnQkFBVyxHQUFTLElBQUksR0FBRyxFQUFFLENBQUE7UUEwQzlCLHFCQUFnQixHQUFHLENBQUMsUUFBaUMsRUFBRSxFQUFFLENBQzlELElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBRXhDLG9CQUFlLEdBQUcsQ0FBQyxRQUFpQyxFQUFFLEVBQUUsQ0FDN0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFFdkMsc0JBQWlCLEdBQUcsQ0FBQyxRQUFpQyxFQUFFLEVBQUUsQ0FDL0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLENBQUE7UUEvQzlDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUVsQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksc0JBQVMsRUFBRSxDQUFBO1FBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUMv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OUQsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtZQUMxQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFHTyx5QkFBeUI7UUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMzQyxNQUFNLFVBQVUsR0FBRyxJQUFJLDBCQUFtQixFQUFFLENBQUE7WUFDNUMsVUFBVSxDQUFDLEdBQUcsQ0FDWixNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUMzQyxDQUFDLENBQUMsRUFDRixNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRTtnQkFDdkIsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFBO2dCQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUNyQyxDQUFDLENBQUMsQ0FDSCxDQUFBO1lBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDaEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQTtRQUN2RCxDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQztDQUNGO0FBak1ELHNDQWlNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvc2l0ZURpc3Bvc2FibGUsIEVtaXR0ZXIsIFRleHRFZGl0b3IsIFRleHRCdWZmZXIsIEdyYW1tYXIsIERpc3Bvc2FibGUgfSBmcm9tICdhdG9tJ1xuaW1wb3J0IHsgUmVzdWx0c0RCIH0gZnJvbSAnLi9yZXN1bHRzLWRiJ1xuaW1wb3J0IHsgT3V0cHV0UGFuZWwsIElTdGF0ZSBhcyBJT3V0cHV0Vmlld1N0YXRlIH0gZnJvbSAnLi9vdXRwdXQtcGFuZWwnXG5pbXBvcnQgeyBDb25maWdQYXJhbU1hbmFnZXIsIElTdGF0ZSBhcyBJUGFyYW1TdGF0ZSB9IGZyb20gJy4vY29uZmlnLXBhcmFtcydcbmltcG9ydCB7IEVkaXRvckNvbnRyb2wgfSBmcm9tICcuL2VkaXRvci1jb250cm9sJ1xuaW1wb3J0IHsgTGludGVyU3VwcG9ydCB9IGZyb20gJy4vbGludGVyLXN1cHBvcnQnXG5pbXBvcnQgeyBUb29sdGlwUmVnaXN0cnkgfSBmcm9tICcuL3Rvb2x0aXAtcmVnaXN0cnknXG5pbXBvcnQgeyBDaGVja1Jlc3VsdHNQcm92aWRlciB9IGZyb20gJy4vY2hlY2stcmVzdWx0cy1wcm92aWRlcidcbmltcG9ydCB7IFN0YXR1c0JhclZpZXcgfSBmcm9tICcuL3N0YXR1cy1iYXInXG5pbXBvcnQgeyBQcmV0dGlmeUVkaXRvckNvbnRyb2xsZXIgfSBmcm9tICcuL3ByZXR0aWZ5J1xuaW1wb3J0IHsgRWRpdG9yTWFya0NvbnRyb2wgfSBmcm9tICcuL2VkaXRvci1tYXJrLWNvbnRyb2wnXG5pbXBvcnQgKiBhcyBVUEkgZnJvbSAnYXRvbS1oYXNrZWxsLXVwaSdcbmltcG9ydCAqIGFzIExpbnRlciBmcm9tICdhdG9tL2xpbnRlcidcbmltcG9ydCAqIGFzIFN0YXR1c0JhciBmcm9tICdhdG9tL3N0YXR1cy1iYXInXG5cbmV4cG9ydCB7IElQYXJhbVN0YXRlLCBJT3V0cHV0Vmlld1N0YXRlIH1cblxuZXhwb3J0IHR5cGUgVEV2ZW50VHlwZSA9ICdrZXlib2FyZCcgfCAnY29udGV4dCcgfCAnbW91c2UnIHwgJ3NlbGVjdGlvbidcblxuZXhwb3J0IGludGVyZmFjZSBJU3RhdGUge1xuICBjb25maWdQYXJhbXM6IElQYXJhbVN0YXRlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvckNvbnRyb2xsZXIge1xuICBkZXN0cm95ICgpOiB2b2lkXG59XG5cbmV4cG9ydCB0eXBlIElFZGl0b3JDb250cm9sbGVyRmFjdG9yeSA9IElFZGl0b3JDb250cm9sbGVyRmFjdG9yeVQ8SUVkaXRvckNvbnRyb2xsZXI+XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvckNvbnRyb2xsZXJGYWN0b3J5VDxUPiB7XG4gIG5ldyAoZWRpdG9yOiBUZXh0RWRpdG9yLCBtYW5hZ2VyOiBQbHVnaW5NYW5hZ2VyKTogVFxuICBzdXBwb3J0c0dyYW1tYXIgKGdyYW1tYXI6IHN0cmluZyk6IGJvb2xlYW5cbn1cblxuZXhwb3J0IHR5cGUgRUNNYXA8VCBleHRlbmRzIElFZGl0b3JDb250cm9sbGVyPiA9IFdlYWtNYXA8VGV4dEVkaXRvciwge2NvbnRyb2xsZXI6IFQsIGRpc3Bvc2FibGU6IERpc3Bvc2FibGV9PlxuXG5leHBvcnQgaW50ZXJmYWNlIFRNYXAgZXh0ZW5kcyBNYXA8SUVkaXRvckNvbnRyb2xsZXJGYWN0b3J5LCBFQ01hcDxJRWRpdG9yQ29udHJvbGxlcj4+IHtcbiAgZ2V0PFUgZXh0ZW5kcyBJRWRpdG9yQ29udHJvbGxlciwgVCBleHRlbmRzIElFZGl0b3JDb250cm9sbGVyRmFjdG9yeVQ8VT4+IChrZXk6IFQpOiBFQ01hcDxVPlxuICBzZXQ8VSBleHRlbmRzIElFZGl0b3JDb250cm9sbGVyLCBUIGV4dGVuZHMgSUVkaXRvckNvbnRyb2xsZXJGYWN0b3J5VDxVPj4gKGtleTogVCwgdmFsOiBFQ01hcDxVPik6IHRoaXNcbn1cblxuZXhwb3J0IGNsYXNzIFBsdWdpbk1hbmFnZXIge1xuICBwdWJsaWMgcmVzdWx0c0RCOiBSZXN1bHRzREJcbiAgcHVibGljIGNvbmZpZ1BhcmFtTWFuYWdlcjogQ29uZmlnUGFyYW1NYW5hZ2VyXG4gIHB1YmxpYyB0b29sdGlwUmVnaXN0cnk6IFRvb2x0aXBSZWdpc3RyeVxuICBwcml2YXRlIGNoZWNrUmVzdWx0c1Byb3ZpZGVyPzogQ2hlY2tSZXN1bHRzUHJvdmlkZXJcbiAgcHJpdmF0ZSBsaW50ZXJTdXBwb3J0PzogTGludGVyU3VwcG9ydFxuICBwcml2YXRlIGRpc3Bvc2FibGVzID0gbmV3IENvbXBvc2l0ZURpc3Bvc2FibGUoKVxuICBwcml2YXRlIGVtaXR0ZXI6IEVtaXR0ZXI8e30sIHtcbiAgICAnd2lsbC1zYXZlLWJ1ZmZlcic6IFRleHRCdWZmZXJcbiAgICAnZGlkLXNhdmUtYnVmZmVyJzogVGV4dEJ1ZmZlclxuICAgICdkaWQtc3RvcC1jaGFuZ2luZyc6IFRleHRCdWZmZXJcbiAgfT4gPSBuZXcgRW1pdHRlcigpXG4gIHByaXZhdGUgc3RhdHVzQmFyVGlsZT86IFN0YXR1c0Jhci5UaWxlXG4gIHByaXZhdGUgc3RhdHVzQmFyVmlldz86IFN0YXR1c0JhclZpZXdcbiAgcHJpdmF0ZSBjb250cm9sbGVyczogVE1hcCA9IG5ldyBNYXAoKVxuICBjb25zdHJ1Y3RvciAoc3RhdGU6IElTdGF0ZSwgcHVibGljIG91dHB1dFBhbmVsOiBPdXRwdXRQYW5lbCkge1xuICAgIHRoaXMuZGlzcG9zYWJsZXMuYWRkKHRoaXMuZW1pdHRlcilcblxuICAgIHRoaXMucmVzdWx0c0RCID0gbmV3IFJlc3VsdHNEQigpXG4gICAgdGhpcy5vdXRwdXRQYW5lbC5jb25uZWN0UmVzdWx0cyh0aGlzLnJlc3VsdHNEQilcbiAgICB0aGlzLnRvb2x0aXBSZWdpc3RyeSA9IG5ldyBUb29sdGlwUmVnaXN0cnkodGhpcylcbiAgICB0aGlzLmNvbmZpZ1BhcmFtTWFuYWdlciA9IG5ldyBDb25maWdQYXJhbU1hbmFnZXIodGhpcy5vdXRwdXRQYW5lbCwgc3RhdGUuY29uZmlnUGFyYW1zKVxuXG4gICAgdGhpcy5kaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLmFkZEVkaXRvckNvbnRyb2xsZXIoRWRpdG9yQ29udHJvbCksXG4gICAgICB0aGlzLmFkZEVkaXRvckNvbnRyb2xsZXIoUHJldHRpZnlFZGl0b3JDb250cm9sbGVyKSxcbiAgICAgIHRoaXMuYWRkRWRpdG9yQ29udHJvbGxlcihFZGl0b3JNYXJrQ29udHJvbCksXG4gICAgKVxuICAgIGlmIChhdG9tLmNvbmZpZy5nZXQoJ2lkZS1oYXNrZWxsLm1lc3NhZ2VEaXNwbGF5RnJvbnRlbmQnKSA9PT0gJ2J1aWx0aW4nKSB7XG4gICAgICB0aGlzLmNoZWNrUmVzdWx0c1Byb3ZpZGVyID0gbmV3IENoZWNrUmVzdWx0c1Byb3ZpZGVyKHRoaXMpXG4gICAgfVxuXG4gICAgdGhpcy5zdWJzY3JpYmVFZGl0b3JDb250cm9sbGVyKClcbiAgfVxuXG4gIHB1YmxpYyBkZWFjdGl2YXRlICgpIHtcbiAgICB0aGlzLnJlc3VsdHNEQi5kZXN0cm95KClcbiAgICB0aGlzLmRpc3Bvc2FibGVzLmRpc3Bvc2UoKVxuICAgIHRoaXMuY2hlY2tSZXN1bHRzUHJvdmlkZXIgJiYgdGhpcy5jaGVja1Jlc3VsdHNQcm92aWRlci5kZXN0cm95KClcblxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1mbG9hdGluZy1wcm9taXNlc1xuICAgIHRoaXMub3V0cHV0UGFuZWwucmVhbGx5RGVzdHJveSgpXG4gICAgdGhpcy5jb25maWdQYXJhbU1hbmFnZXIuZGVzdHJveSgpXG4gICAgdGhpcy5yZW1vdmVTdGF0dXNCYXIoKVxuICAgIGlmICh0aGlzLmxpbnRlclN1cHBvcnQpIHtcbiAgICAgIHRoaXMubGludGVyU3VwcG9ydC5kZXN0cm95KClcbiAgICAgIHRoaXMubGludGVyU3VwcG9ydCA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXJpYWxpemUgKCk6IElTdGF0ZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbmZpZ1BhcmFtczogdGhpcy5jb25maWdQYXJhbU1hbmFnZXIuc2VyaWFsaXplKCksXG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uV2lsbFNhdmVCdWZmZXIgPSAoY2FsbGJhY2s6IFVQSS5UVGV4dEJ1ZmZlckNhbGxiYWNrKSA9PlxuICAgIHRoaXMuZW1pdHRlci5vbignd2lsbC1zYXZlLWJ1ZmZlcicsIGNhbGxiYWNrKVxuXG4gIHB1YmxpYyBvbkRpZFNhdmVCdWZmZXIgPSAoY2FsbGJhY2s6IFVQSS5UVGV4dEJ1ZmZlckNhbGxiYWNrKSA9PlxuICAgIHRoaXMuZW1pdHRlci5vbignZGlkLXNhdmUtYnVmZmVyJywgY2FsbGJhY2spXG5cbiAgcHVibGljIG9uRGlkU3RvcENoYW5naW5nID0gKGNhbGxiYWNrOiBVUEkuVFRleHRCdWZmZXJDYWxsYmFjaykgPT5cbiAgICB0aGlzLmVtaXR0ZXIub24oJ2RpZC1zdG9wLWNoYW5naW5nJywgY2FsbGJhY2spXG5cbiAgcHVibGljIHdpbGxTYXZlQnVmZmVyIChidWZmZXI6IFRleHRCdWZmZXIpIHtcbiAgICByZXR1cm4gdGhpcy5lbWl0dGVyLmVtaXQoJ3dpbGwtc2F2ZS1idWZmZXInLCBidWZmZXIpXG4gIH1cblxuICBwdWJsaWMgZGlkU2F2ZUJ1ZmZlciAoYnVmZmVyOiBUZXh0QnVmZmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZW1pdHRlci5lbWl0KCdkaWQtc2F2ZS1idWZmZXInLCBidWZmZXIpXG4gIH1cblxuICBwdWJsaWMgZGlkU3RvcENoYW5naW5nIChidWZmZXI6IFRleHRCdWZmZXIpIHtcbiAgICByZXR1cm4gdGhpcy5lbWl0dGVyLmVtaXQoJ2RpZC1zdG9wLWNoYW5naW5nJywgYnVmZmVyKVxuICB9XG5cbiAgcHVibGljIHRvZ2dsZVBhbmVsICgpIHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICBhdG9tLndvcmtzcGFjZS50b2dnbGUodGhpcy5vdXRwdXRQYW5lbClcbiAgfVxuXG4gIHB1YmxpYyBjb250cm9sbGVyIChlZGl0b3I6IFRleHRFZGl0b3IpOiBFZGl0b3JDb250cm9sIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyVHlwZShFZGl0b3JDb250cm9sLCBlZGl0b3IpXG4gIH1cblxuICBwdWJsaWMgY29udHJvbGxlclR5cGU8VSBleHRlbmRzIElFZGl0b3JDb250cm9sbGVyLCBUIGV4dGVuZHMgSUVkaXRvckNvbnRyb2xsZXJGYWN0b3J5VDxVPj4gKFxuICAgIGZhY3Rvcnk6IFQsIGVkaXRvcjogVGV4dEVkaXRvcixcbiAgKTogVSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZWNtYXAgPSB0aGlzLmNvbnRyb2xsZXJzLmdldDxVLCBUPihmYWN0b3J5KVxuICAgIGNvbnN0IHJlYyA9IGVjbWFwICYmIGVjbWFwLmdldChlZGl0b3IpXG4gICAgcmV0dXJuIHJlYyAmJiByZWMuY29udHJvbGxlclxuICB9XG5cbiAgcHVibGljIHNldExpbnRlciAobGludGVyOiBMaW50ZXIuSW5kaWVEZWxlZ2F0ZSkge1xuICAgIGlmIChhdG9tLmNvbmZpZy5nZXQoJ2lkZS1oYXNrZWxsLm1lc3NhZ2VEaXNwbGF5RnJvbnRlbmQnKSAhPT0gJ2xpbnRlcicpIHsgcmV0dXJuIH1cbiAgICB0aGlzLmxpbnRlclN1cHBvcnQgPSBuZXcgTGludGVyU3VwcG9ydChsaW50ZXIsIHRoaXMucmVzdWx0c0RCKVxuICB9XG5cbiAgcHVibGljIG5leHRFcnJvciAoKSB7XG4gICAgaWYgKGF0b20uY29uZmlnLmdldCgnaWRlLWhhc2tlbGwubWVzc2FnZURpc3BsYXlGcm9udGVuZCcpICE9PSAnYnVpbHRpbicpIHsgcmV0dXJuIH1cbiAgICB0aGlzLm91dHB1dFBhbmVsLnNob3dOZXh0RXJyb3IoKVxuICB9XG5cbiAgcHVibGljIHByZXZFcnJvciAoKSB7XG4gICAgaWYgKGF0b20uY29uZmlnLmdldCgnaWRlLWhhc2tlbGwubWVzc2FnZURpc3BsYXlGcm9udGVuZCcpICE9PSAnYnVpbHRpbicpIHsgcmV0dXJuIH1cbiAgICB0aGlzLm91dHB1dFBhbmVsLnNob3dQcmV2RXJyb3IoKVxuICB9XG5cbiAgcHVibGljIGJhY2tlbmRTdGF0dXMgKHBsdWdpbk5hbWU6IHN0cmluZywgc3Q6IFVQSS5JU3RhdHVzKSB7XG4gICAgaWYgKHRoaXMub3V0cHV0UGFuZWwpIHtcbiAgICAgIHRoaXMub3V0cHV0UGFuZWwuYmFja2VuZFN0YXR1cyhwbHVnaW5OYW1lLCBzdClcbiAgICB9XG4gICAgaWYgKHRoaXMuc3RhdHVzQmFyVmlldykge1xuICAgICAgdGhpcy5zdGF0dXNCYXJWaWV3LmJhY2tlbmRTdGF0dXMocGx1Z2luTmFtZSwgc3QpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZEVkaXRvckNvbnRyb2xsZXI8VSBleHRlbmRzIElFZGl0b3JDb250cm9sbGVyLCBUIGV4dGVuZHMgSUVkaXRvckNvbnRyb2xsZXJGYWN0b3J5VDxVPj4gKFxuICAgIGZhY3Rvcnk6IFQsXG4gICk6IERpc3Bvc2FibGUge1xuICAgIGlmICh0aGlzLmNvbnRyb2xsZXJzLmhhcyhmYWN0b3J5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGUgY29udHJvbGxlciBmYWN0b3J5ICR7ZmFjdG9yeS50b1N0cmluZygpfWApXG4gICAgfVxuICAgIGNvbnN0IG1hcDogRUNNYXA8VT4gPSBuZXcgV2Vha01hcCgpXG4gICAgdGhpcy5jb250cm9sbGVycy5zZXQoZmFjdG9yeSwgbWFwKVxuICAgIHJldHVybiBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICB0aGlzLmNvbnRyb2xsZXJzLmRlbGV0ZShmYWN0b3J5KVxuICAgICAgZm9yIChjb25zdCB0ZSBvZiBhdG9tLndvcmtzcGFjZS5nZXRUZXh0RWRpdG9ycygpKSB7XG4gICAgICAgIGNvbnN0IHJlYyA9IG1hcC5nZXQodGUpXG4gICAgICAgIHJlYyAmJiByZWMuZGlzcG9zYWJsZS5kaXNwb3NlKClcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgcHVibGljIHNldFN0YXR1c0JhciAoc2I6IFN0YXR1c0Jhci5TdGF0dXNCYXIpIHtcbiAgICB0aGlzLnN0YXR1c0JhclZpZXcgPSBuZXcgU3RhdHVzQmFyVmlldyh0aGlzLm91dHB1dFBhbmVsKVxuICAgIHRoaXMuc3RhdHVzQmFyVGlsZSA9IHNiLmFkZFJpZ2h0VGlsZSh7XG4gICAgICBpdGVtOiB0aGlzLnN0YXR1c0JhclZpZXcuZWxlbWVudCxcbiAgICAgIHByaW9yaXR5OiAxMDAsXG4gICAgfSlcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVTdGF0dXNCYXIgKCkge1xuICAgIGlmICh0aGlzLnN0YXR1c0JhclRpbGUpIHtcbiAgICAgIHRoaXMuc3RhdHVzQmFyVGlsZS5kZXN0cm95KClcbiAgICAgIHRoaXMuc3RhdHVzQmFyVGlsZSA9IHVuZGVmaW5lZFxuICAgIH1cbiAgICBpZiAodGhpcy5zdGF0dXNCYXJWaWV3KSB7XG4gICAgICB0aGlzLnN0YXR1c0JhclZpZXcuZGVzdHJveSgpXG4gICAgICB0aGlzLnN0YXR1c0JhclZpZXcgPSB1bmRlZmluZWRcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnRyb2xsZXJPbkdyYW1tYXIgKGVkaXRvcjogVGV4dEVkaXRvciwgZ3JhbW1hcjogR3JhbW1hcikge1xuICAgIGZvciAoY29uc3QgW2ZhY3RvcnksIG1hcF0gb2YgdGhpcy5jb250cm9sbGVycy5lbnRyaWVzKCkpIHtcbiAgICAgIGNvbnN0IHJlYyA9IG1hcC5nZXQoZWRpdG9yKVxuICAgICAgaWYgKCFyZWMgJiYgZmFjdG9yeS5zdXBwb3J0c0dyYW1tYXIoZ3JhbW1hci5zY29wZU5hbWUpKSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgZmFjdG9yeShlZGl0b3IsIHRoaXMpXG4gICAgICAgIGNvbnN0IGRpc3Bvc2FibGUgPSBuZXcgQ29tcG9zaXRlRGlzcG9zYWJsZSgpXG4gICAgICAgIGRpc3Bvc2FibGUuYWRkKFxuICAgICAgICAgIG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICAgIG1hcC5kZWxldGUoZWRpdG9yKVxuICAgICAgICAgICAgY29udHJvbGxlci5kZXN0cm95KClcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBlZGl0b3Iub25EaWREZXN0cm95KCgpID0+IGRpc3Bvc2FibGUuZGlzcG9zZSgpKSxcbiAgICAgICAgKVxuICAgICAgICBtYXAuc2V0KGVkaXRvciwgeyBjb250cm9sbGVyLCBkaXNwb3NhYmxlIH0pXG4gICAgICB9IGVsc2UgaWYgKHJlYyAmJiAhZmFjdG9yeS5zdXBwb3J0c0dyYW1tYXIoZ3JhbW1hci5zY29wZU5hbWUpKSB7XG4gICAgICAgIHJlYy5kaXNwb3NhYmxlLmRpc3Bvc2UoKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIE9ic2VydmUgdGV4dCBlZGl0b3JzIHRvIGF0dGFjaCBjb250cm9sbGVyXG4gIHByaXZhdGUgc3Vic2NyaWJlRWRpdG9yQ29udHJvbGxlciAoKSB7XG4gICAgdGhpcy5kaXNwb3NhYmxlcy5hZGQoXG4gICAgICBhdG9tLndvcmtzcGFjZS5vYnNlcnZlVGV4dEVkaXRvcnMoKGVkaXRvcikgPT4ge1xuICAgICAgICBjb25zdCBlZGl0b3JEaXNwID0gbmV3IENvbXBvc2l0ZURpc3Bvc2FibGUoKVxuICAgICAgICBlZGl0b3JEaXNwLmFkZChcbiAgICAgICAgICBlZGl0b3Iub25EaWRDaGFuZ2VHcmFtbWFyKChncmFtbWFyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2xsZXJPbkdyYW1tYXIoZWRpdG9yLCBncmFtbWFyKVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGVkaXRvci5vbkRpZERlc3Ryb3koKCkgPT4ge1xuICAgICAgICAgICAgZWRpdG9yRGlzcC5kaXNwb3NlKClcbiAgICAgICAgICAgIHRoaXMuZGlzcG9zYWJsZXMucmVtb3ZlKGVkaXRvckRpc3ApXG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgICAgdGhpcy5kaXNwb3NhYmxlcy5hZGQoZWRpdG9yRGlzcClcbiAgICAgICAgdGhpcy5jb250cm9sbGVyT25HcmFtbWFyKGVkaXRvciwgZWRpdG9yLmdldEdyYW1tYXIoKSlcbiAgICAgIH0pLFxuICAgIClcbiAgfVxufVxuIl19 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGx1Z2luLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQkFPYTtBQUNiLDZDQUF3QztBQUV4QyxtREFBMkU7QUFDM0UscURBQWdEO0FBQ2hELHFEQUFnRDtBQUNoRCx5REFBb0Q7QUFDcEQscUVBQStEO0FBQy9ELDZDQUE0QztBQUM1Qyx5Q0FBcUQ7QUFDckQsK0RBQXlEO0FBMEN6RDtJQWtCRSxZQUFZLEtBQWEsRUFBUyxXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQVpsRCxnQkFBVyxHQUFHLElBQUksMEJBQW1CLEVBQUUsQ0FBQTtRQUN2QyxZQUFPLEdBT1gsSUFBSSxjQUFPLEVBQUUsQ0FBQTtRQUdULGdCQUFXLEdBQVMsSUFBSSxHQUFHLEVBQUUsQ0FBQTtRQTZDOUIscUJBQWdCLEdBQUcsQ0FBQyxRQUFpQyxFQUFFLEVBQUUsQ0FDOUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFFeEMsb0JBQWUsR0FBRyxDQUFDLFFBQWlDLEVBQUUsRUFBRSxDQUM3RCxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUV2QyxzQkFBaUIsR0FBRyxDQUFDLFFBQWlDLEVBQUUsRUFBRSxDQUMvRCxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxRQUFRLENBQUMsQ0FBQTtRQWxEOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRWxDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxzQkFBUyxFQUFFLENBQUE7UUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQy9D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QzlELEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUE7WUFDMUIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBR08seUJBQXlCO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDM0MsTUFBTSxVQUFVLEdBQUcsSUFBSSwwQkFBbUIsRUFBRSxDQUFBO1lBQzVDLFVBQVUsQ0FBQyxHQUFHLENBQ1osTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUE7WUFDM0MsQ0FBQyxDQUFDLEVBQ0YsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUU7Z0JBQ3ZCLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtnQkFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDckMsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQ2hDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUE7UUFDdkQsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7Q0FDRjtBQS9NRCxzQ0ErTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb3NpdGVEaXNwb3NhYmxlLFxuICBFbWl0dGVyLFxuICBUZXh0RWRpdG9yLFxuICBUZXh0QnVmZmVyLFxuICBHcmFtbWFyLFxuICBEaXNwb3NhYmxlLFxufSBmcm9tICdhdG9tJ1xuaW1wb3J0IHsgUmVzdWx0c0RCIH0gZnJvbSAnLi9yZXN1bHRzLWRiJ1xuaW1wb3J0IHsgT3V0cHV0UGFuZWwsIElTdGF0ZSBhcyBJT3V0cHV0Vmlld1N0YXRlIH0gZnJvbSAnLi9vdXRwdXQtcGFuZWwnXG5pbXBvcnQgeyBDb25maWdQYXJhbU1hbmFnZXIsIElTdGF0ZSBhcyBJUGFyYW1TdGF0ZSB9IGZyb20gJy4vY29uZmlnLXBhcmFtcydcbmltcG9ydCB7IEVkaXRvckNvbnRyb2wgfSBmcm9tICcuL2VkaXRvci1jb250cm9sJ1xuaW1wb3J0IHsgTGludGVyU3VwcG9ydCB9IGZyb20gJy4vbGludGVyLXN1cHBvcnQnXG5pbXBvcnQgeyBUb29sdGlwUmVnaXN0cnkgfSBmcm9tICcuL3Rvb2x0aXAtcmVnaXN0cnknXG5pbXBvcnQgeyBDaGVja1Jlc3VsdHNQcm92aWRlciB9IGZyb20gJy4vY2hlY2stcmVzdWx0cy1wcm92aWRlcidcbmltcG9ydCB7IFN0YXR1c0JhclZpZXcgfSBmcm9tICcuL3N0YXR1cy1iYXInXG5pbXBvcnQgeyBQcmV0dGlmeUVkaXRvckNvbnRyb2xsZXIgfSBmcm9tICcuL3ByZXR0aWZ5J1xuaW1wb3J0IHsgRWRpdG9yTWFya0NvbnRyb2wgfSBmcm9tICcuL2VkaXRvci1tYXJrLWNvbnRyb2wnXG5pbXBvcnQgKiBhcyBVUEkgZnJvbSAnYXRvbS1oYXNrZWxsLXVwaSdcbmltcG9ydCAqIGFzIExpbnRlciBmcm9tICdhdG9tL2xpbnRlcidcbmltcG9ydCAqIGFzIFN0YXR1c0JhciBmcm9tICdhdG9tL3N0YXR1cy1iYXInXG5cbmV4cG9ydCB7IElQYXJhbVN0YXRlLCBJT3V0cHV0Vmlld1N0YXRlIH1cblxuZXhwb3J0IHR5cGUgVEV2ZW50VHlwZSA9ICdrZXlib2FyZCcgfCAnY29udGV4dCcgfCAnbW91c2UnIHwgJ3NlbGVjdGlvbidcblxuZXhwb3J0IGludGVyZmFjZSBJU3RhdGUge1xuICBjb25maWdQYXJhbXM6IElQYXJhbVN0YXRlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvckNvbnRyb2xsZXIge1xuICBkZXN0cm95KCk6IHZvaWRcbn1cblxuZXhwb3J0IHR5cGUgSUVkaXRvckNvbnRyb2xsZXJGYWN0b3J5ID0gSUVkaXRvckNvbnRyb2xsZXJGYWN0b3J5VDxcbiAgSUVkaXRvckNvbnRyb2xsZXJcbj5cblxuZXhwb3J0IGludGVyZmFjZSBJRWRpdG9yQ29udHJvbGxlckZhY3RvcnlUPFQ+IHtcbiAgbmV3IChlZGl0b3I6IFRleHRFZGl0b3IsIG1hbmFnZXI6IFBsdWdpbk1hbmFnZXIpOiBUXG4gIHN1cHBvcnRzR3JhbW1hcihncmFtbWFyOiBzdHJpbmcpOiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIEVDTWFwPFQgZXh0ZW5kcyBJRWRpdG9yQ29udHJvbGxlcj4gPSBXZWFrTWFwPFxuICBUZXh0RWRpdG9yLFxuICB7IGNvbnRyb2xsZXI6IFQ7IGRpc3Bvc2FibGU6IERpc3Bvc2FibGUgfVxuPlxuXG5leHBvcnQgaW50ZXJmYWNlIFRNYXBcbiAgZXh0ZW5kcyBNYXA8SUVkaXRvckNvbnRyb2xsZXJGYWN0b3J5LCBFQ01hcDxJRWRpdG9yQ29udHJvbGxlcj4+IHtcbiAgZ2V0PFUgZXh0ZW5kcyBJRWRpdG9yQ29udHJvbGxlciwgVCBleHRlbmRzIElFZGl0b3JDb250cm9sbGVyRmFjdG9yeVQ8VT4+KFxuICAgIGtleTogVCxcbiAgKTogRUNNYXA8VT5cbiAgc2V0PFUgZXh0ZW5kcyBJRWRpdG9yQ29udHJvbGxlciwgVCBleHRlbmRzIElFZGl0b3JDb250cm9sbGVyRmFjdG9yeVQ8VT4+KFxuICAgIGtleTogVCxcbiAgICB2YWw6IEVDTWFwPFU+LFxuICApOiB0aGlzXG59XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW5NYW5hZ2VyIHtcbiAgcHVibGljIHJlc3VsdHNEQjogUmVzdWx0c0RCXG4gIHB1YmxpYyBjb25maWdQYXJhbU1hbmFnZXI6IENvbmZpZ1BhcmFtTWFuYWdlclxuICBwdWJsaWMgdG9vbHRpcFJlZ2lzdHJ5OiBUb29sdGlwUmVnaXN0cnlcbiAgcHJpdmF0ZSBjaGVja1Jlc3VsdHNQcm92aWRlcj86IENoZWNrUmVzdWx0c1Byb3ZpZGVyXG4gIHByaXZhdGUgbGludGVyU3VwcG9ydD86IExpbnRlclN1cHBvcnRcbiAgcHJpdmF0ZSBkaXNwb3NhYmxlcyA9IG5ldyBDb21wb3NpdGVEaXNwb3NhYmxlKClcbiAgcHJpdmF0ZSBlbWl0dGVyOiBFbWl0dGVyPFxuICAgIHt9LFxuICAgIHtcbiAgICAgICd3aWxsLXNhdmUtYnVmZmVyJzogVGV4dEJ1ZmZlclxuICAgICAgJ2RpZC1zYXZlLWJ1ZmZlcic6IFRleHRCdWZmZXJcbiAgICAgICdkaWQtc3RvcC1jaGFuZ2luZyc6IFRleHRCdWZmZXJcbiAgICB9XG4gID4gPSBuZXcgRW1pdHRlcigpXG4gIHByaXZhdGUgc3RhdHVzQmFyVGlsZT86IFN0YXR1c0Jhci5UaWxlXG4gIHByaXZhdGUgc3RhdHVzQmFyVmlldz86IFN0YXR1c0JhclZpZXdcbiAgcHJpdmF0ZSBjb250cm9sbGVyczogVE1hcCA9IG5ldyBNYXAoKVxuICBjb25zdHJ1Y3RvcihzdGF0ZTogSVN0YXRlLCBwdWJsaWMgb3V0cHV0UGFuZWw6IE91dHB1dFBhbmVsKSB7XG4gICAgdGhpcy5kaXNwb3NhYmxlcy5hZGQodGhpcy5lbWl0dGVyKVxuXG4gICAgdGhpcy5yZXN1bHRzREIgPSBuZXcgUmVzdWx0c0RCKClcbiAgICB0aGlzLm91dHB1dFBhbmVsLmNvbm5lY3RSZXN1bHRzKHRoaXMucmVzdWx0c0RCKVxuICAgIHRoaXMudG9vbHRpcFJlZ2lzdHJ5ID0gbmV3IFRvb2x0aXBSZWdpc3RyeSh0aGlzKVxuICAgIHRoaXMuY29uZmlnUGFyYW1NYW5hZ2VyID0gbmV3IENvbmZpZ1BhcmFtTWFuYWdlcihcbiAgICAgIHRoaXMub3V0cHV0UGFuZWwsXG4gICAgICBzdGF0ZS5jb25maWdQYXJhbXMsXG4gICAgKVxuXG4gICAgdGhpcy5kaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLmFkZEVkaXRvckNvbnRyb2xsZXIoRWRpdG9yQ29udHJvbCksXG4gICAgICB0aGlzLmFkZEVkaXRvckNvbnRyb2xsZXIoUHJldHRpZnlFZGl0b3JDb250cm9sbGVyKSxcbiAgICAgIHRoaXMuYWRkRWRpdG9yQ29udHJvbGxlcihFZGl0b3JNYXJrQ29udHJvbCksXG4gICAgKVxuICAgIGlmIChhdG9tLmNvbmZpZy5nZXQoJ2lkZS1oYXNrZWxsLm1lc3NhZ2VEaXNwbGF5RnJvbnRlbmQnKSA9PT0gJ2J1aWx0aW4nKSB7XG4gICAgICB0aGlzLmNoZWNrUmVzdWx0c1Byb3ZpZGVyID0gbmV3IENoZWNrUmVzdWx0c1Byb3ZpZGVyKHRoaXMpXG4gICAgfVxuXG4gICAgdGhpcy5zdWJzY3JpYmVFZGl0b3JDb250cm9sbGVyKClcbiAgfVxuXG4gIHB1YmxpYyBkZWFjdGl2YXRlKCkge1xuICAgIHRoaXMucmVzdWx0c0RCLmRlc3Ryb3koKVxuICAgIHRoaXMuZGlzcG9zYWJsZXMuZGlzcG9zZSgpXG4gICAgdGhpcy5jaGVja1Jlc3VsdHNQcm92aWRlciAmJiB0aGlzLmNoZWNrUmVzdWx0c1Byb3ZpZGVyLmRlc3Ryb3koKVxuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWZsb2F0aW5nLXByb21pc2VzXG4gICAgdGhpcy5vdXRwdXRQYW5lbC5yZWFsbHlEZXN0cm95KClcbiAgICB0aGlzLmNvbmZpZ1BhcmFtTWFuYWdlci5kZXN0cm95KClcbiAgICB0aGlzLnJlbW92ZVN0YXR1c0JhcigpXG4gICAgaWYgKHRoaXMubGludGVyU3VwcG9ydCkge1xuICAgICAgdGhpcy5saW50ZXJTdXBwb3J0LmRlc3Ryb3koKVxuICAgICAgdGhpcy5saW50ZXJTdXBwb3J0ID0gdW5kZWZpbmVkXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNlcmlhbGl6ZSgpOiBJU3RhdGUge1xuICAgIHJldHVybiB7XG4gICAgICBjb25maWdQYXJhbXM6IHRoaXMuY29uZmlnUGFyYW1NYW5hZ2VyLnNlcmlhbGl6ZSgpLFxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbldpbGxTYXZlQnVmZmVyID0gKGNhbGxiYWNrOiBVUEkuVFRleHRCdWZmZXJDYWxsYmFjaykgPT5cbiAgICB0aGlzLmVtaXR0ZXIub24oJ3dpbGwtc2F2ZS1idWZmZXInLCBjYWxsYmFjaylcblxuICBwdWJsaWMgb25EaWRTYXZlQnVmZmVyID0gKGNhbGxiYWNrOiBVUEkuVFRleHRCdWZmZXJDYWxsYmFjaykgPT5cbiAgICB0aGlzLmVtaXR0ZXIub24oJ2RpZC1zYXZlLWJ1ZmZlcicsIGNhbGxiYWNrKVxuXG4gIHB1YmxpYyBvbkRpZFN0b3BDaGFuZ2luZyA9IChjYWxsYmFjazogVVBJLlRUZXh0QnVmZmVyQ2FsbGJhY2spID0+XG4gICAgdGhpcy5lbWl0dGVyLm9uKCdkaWQtc3RvcC1jaGFuZ2luZycsIGNhbGxiYWNrKVxuXG4gIHB1YmxpYyB3aWxsU2F2ZUJ1ZmZlcihidWZmZXI6IFRleHRCdWZmZXIpIHtcbiAgICByZXR1cm4gdGhpcy5lbWl0dGVyLmVtaXQoJ3dpbGwtc2F2ZS1idWZmZXInLCBidWZmZXIpXG4gIH1cblxuICBwdWJsaWMgZGlkU2F2ZUJ1ZmZlcihidWZmZXI6IFRleHRCdWZmZXIpIHtcbiAgICByZXR1cm4gdGhpcy5lbWl0dGVyLmVtaXQoJ2RpZC1zYXZlLWJ1ZmZlcicsIGJ1ZmZlcilcbiAgfVxuXG4gIHB1YmxpYyBkaWRTdG9wQ2hhbmdpbmcoYnVmZmVyOiBUZXh0QnVmZmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZW1pdHRlci5lbWl0KCdkaWQtc3RvcC1jaGFuZ2luZycsIGJ1ZmZlcilcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVQYW5lbCgpIHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICBhdG9tLndvcmtzcGFjZS50b2dnbGUodGhpcy5vdXRwdXRQYW5lbClcbiAgfVxuXG4gIHB1YmxpYyBjb250cm9sbGVyKGVkaXRvcjogVGV4dEVkaXRvcik6IEVkaXRvckNvbnRyb2wgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXJUeXBlKEVkaXRvckNvbnRyb2wsIGVkaXRvcilcbiAgfVxuXG4gIHB1YmxpYyBjb250cm9sbGVyVHlwZTxcbiAgICBVIGV4dGVuZHMgSUVkaXRvckNvbnRyb2xsZXIsXG4gICAgVCBleHRlbmRzIElFZGl0b3JDb250cm9sbGVyRmFjdG9yeVQ8VT5cbiAgPihmYWN0b3J5OiBULCBlZGl0b3I6IFRleHRFZGl0b3IpOiBVIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBlY21hcCA9IHRoaXMuY29udHJvbGxlcnMuZ2V0PFUsIFQ+KGZhY3RvcnkpXG4gICAgY29uc3QgcmVjID0gZWNtYXAgJiYgZWNtYXAuZ2V0KGVkaXRvcilcbiAgICByZXR1cm4gcmVjICYmIHJlYy5jb250cm9sbGVyXG4gIH1cblxuICBwdWJsaWMgc2V0TGludGVyKGxpbnRlcjogTGludGVyLkluZGllRGVsZWdhdGUpIHtcbiAgICBpZiAoYXRvbS5jb25maWcuZ2V0KCdpZGUtaGFza2VsbC5tZXNzYWdlRGlzcGxheUZyb250ZW5kJykgIT09ICdsaW50ZXInKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGhpcy5saW50ZXJTdXBwb3J0ID0gbmV3IExpbnRlclN1cHBvcnQobGludGVyLCB0aGlzLnJlc3VsdHNEQilcbiAgfVxuXG4gIHB1YmxpYyBuZXh0RXJyb3IoKSB7XG4gICAgaWYgKGF0b20uY29uZmlnLmdldCgnaWRlLWhhc2tlbGwubWVzc2FnZURpc3BsYXlGcm9udGVuZCcpICE9PSAnYnVpbHRpbicpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0aGlzLm91dHB1dFBhbmVsLnNob3dOZXh0RXJyb3IoKVxuICB9XG5cbiAgcHVibGljIHByZXZFcnJvcigpIHtcbiAgICBpZiAoYXRvbS5jb25maWcuZ2V0KCdpZGUtaGFza2VsbC5tZXNzYWdlRGlzcGxheUZyb250ZW5kJykgIT09ICdidWlsdGluJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHRoaXMub3V0cHV0UGFuZWwuc2hvd1ByZXZFcnJvcigpXG4gIH1cblxuICBwdWJsaWMgYmFja2VuZFN0YXR1cyhwbHVnaW5OYW1lOiBzdHJpbmcsIHN0OiBVUEkuSVN0YXR1cykge1xuICAgIGlmICh0aGlzLm91dHB1dFBhbmVsKSB7XG4gICAgICB0aGlzLm91dHB1dFBhbmVsLmJhY2tlbmRTdGF0dXMocGx1Z2luTmFtZSwgc3QpXG4gICAgfVxuICAgIGlmICh0aGlzLnN0YXR1c0JhclZpZXcpIHtcbiAgICAgIHRoaXMuc3RhdHVzQmFyVmlldy5iYWNrZW5kU3RhdHVzKHBsdWdpbk5hbWUsIHN0KVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhZGRFZGl0b3JDb250cm9sbGVyPFxuICAgIFUgZXh0ZW5kcyBJRWRpdG9yQ29udHJvbGxlcixcbiAgICBUIGV4dGVuZHMgSUVkaXRvckNvbnRyb2xsZXJGYWN0b3J5VDxVPlxuICA+KGZhY3Rvcnk6IFQpOiBEaXNwb3NhYmxlIHtcbiAgICBpZiAodGhpcy5jb250cm9sbGVycy5oYXMoZmFjdG9yeSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRHVwbGljYXRlIGNvbnRyb2xsZXIgZmFjdG9yeSAke2ZhY3RvcnkudG9TdHJpbmcoKX1gKVxuICAgIH1cbiAgICBjb25zdCBtYXA6IEVDTWFwPFU+ID0gbmV3IFdlYWtNYXAoKVxuICAgIHRoaXMuY29udHJvbGxlcnMuc2V0KGZhY3RvcnksIG1hcClcbiAgICByZXR1cm4gbmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgdGhpcy5jb250cm9sbGVycy5kZWxldGUoZmFjdG9yeSlcbiAgICAgIGZvciAoY29uc3QgdGUgb2YgYXRvbS53b3Jrc3BhY2UuZ2V0VGV4dEVkaXRvcnMoKSkge1xuICAgICAgICBjb25zdCByZWMgPSBtYXAuZ2V0KHRlKVxuICAgICAgICByZWMgJiYgcmVjLmRpc3Bvc2FibGUuZGlzcG9zZSgpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHB1YmxpYyBzZXRTdGF0dXNCYXIoc2I6IFN0YXR1c0Jhci5TdGF0dXNCYXIpIHtcbiAgICB0aGlzLnN0YXR1c0JhclZpZXcgPSBuZXcgU3RhdHVzQmFyVmlldyh0aGlzLm91dHB1dFBhbmVsKVxuICAgIHRoaXMuc3RhdHVzQmFyVGlsZSA9IHNiLmFkZFJpZ2h0VGlsZSh7XG4gICAgICBpdGVtOiB0aGlzLnN0YXR1c0JhclZpZXcuZWxlbWVudCxcbiAgICAgIHByaW9yaXR5OiAxMDAsXG4gICAgfSlcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVTdGF0dXNCYXIoKSB7XG4gICAgaWYgKHRoaXMuc3RhdHVzQmFyVGlsZSkge1xuICAgICAgdGhpcy5zdGF0dXNCYXJUaWxlLmRlc3Ryb3koKVxuICAgICAgdGhpcy5zdGF0dXNCYXJUaWxlID0gdW5kZWZpbmVkXG4gICAgfVxuICAgIGlmICh0aGlzLnN0YXR1c0JhclZpZXcpIHtcbiAgICAgIHRoaXMuc3RhdHVzQmFyVmlldy5kZXN0cm95KClcbiAgICAgIHRoaXMuc3RhdHVzQmFyVmlldyA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29udHJvbGxlck9uR3JhbW1hcihlZGl0b3I6IFRleHRFZGl0b3IsIGdyYW1tYXI6IEdyYW1tYXIpIHtcbiAgICBmb3IgKGNvbnN0IFtmYWN0b3J5LCBtYXBdIG9mIHRoaXMuY29udHJvbGxlcnMuZW50cmllcygpKSB7XG4gICAgICBjb25zdCByZWMgPSBtYXAuZ2V0KGVkaXRvcilcbiAgICAgIGlmICghcmVjICYmIGZhY3Rvcnkuc3VwcG9ydHNHcmFtbWFyKGdyYW1tYXIuc2NvcGVOYW1lKSkge1xuICAgICAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IGZhY3RvcnkoZWRpdG9yLCB0aGlzKVxuICAgICAgICBjb25zdCBkaXNwb3NhYmxlID0gbmV3IENvbXBvc2l0ZURpc3Bvc2FibGUoKVxuICAgICAgICBkaXNwb3NhYmxlLmFkZChcbiAgICAgICAgICBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgICBtYXAuZGVsZXRlKGVkaXRvcilcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuZGVzdHJveSgpXG4gICAgICAgICAgfSksXG4gICAgICAgICAgZWRpdG9yLm9uRGlkRGVzdHJveSgoKSA9PiBkaXNwb3NhYmxlLmRpc3Bvc2UoKSksXG4gICAgICAgIClcbiAgICAgICAgbWFwLnNldChlZGl0b3IsIHsgY29udHJvbGxlciwgZGlzcG9zYWJsZSB9KVxuICAgICAgfSBlbHNlIGlmIChyZWMgJiYgIWZhY3Rvcnkuc3VwcG9ydHNHcmFtbWFyKGdyYW1tYXIuc2NvcGVOYW1lKSkge1xuICAgICAgICByZWMuZGlzcG9zYWJsZS5kaXNwb3NlKClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBPYnNlcnZlIHRleHQgZWRpdG9ycyB0byBhdHRhY2ggY29udHJvbGxlclxuICBwcml2YXRlIHN1YnNjcmliZUVkaXRvckNvbnRyb2xsZXIoKSB7XG4gICAgdGhpcy5kaXNwb3NhYmxlcy5hZGQoXG4gICAgICBhdG9tLndvcmtzcGFjZS5vYnNlcnZlVGV4dEVkaXRvcnMoKGVkaXRvcikgPT4ge1xuICAgICAgICBjb25zdCBlZGl0b3JEaXNwID0gbmV3IENvbXBvc2l0ZURpc3Bvc2FibGUoKVxuICAgICAgICBlZGl0b3JEaXNwLmFkZChcbiAgICAgICAgICBlZGl0b3Iub25EaWRDaGFuZ2VHcmFtbWFyKChncmFtbWFyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2xsZXJPbkdyYW1tYXIoZWRpdG9yLCBncmFtbWFyKVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGVkaXRvci5vbkRpZERlc3Ryb3koKCkgPT4ge1xuICAgICAgICAgICAgZWRpdG9yRGlzcC5kaXNwb3NlKClcbiAgICAgICAgICAgIHRoaXMuZGlzcG9zYWJsZXMucmVtb3ZlKGVkaXRvckRpc3ApXG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgICAgdGhpcy5kaXNwb3NhYmxlcy5hZGQoZWRpdG9yRGlzcClcbiAgICAgICAgdGhpcy5jb250cm9sbGVyT25HcmFtbWFyKGVkaXRvciwgZWRpdG9yLmdldEdyYW1tYXIoKSlcbiAgICAgIH0pLFxuICAgIClcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/lib/prettify/editor-controller.js b/lib/prettify/editor-controller.js index e04d6b5..05b0b6e 100644 --- a/lib/prettify/editor-controller.js +++ b/lib/prettify/editor-controller.js @@ -7,11 +7,14 @@ class PrettifyEditorController { this.editor = editor; this.disposables = new atom_1.CompositeDisposable(); this.prettify = async () => { - if (atom.config.get('ide-haskell.onSavePrettify', { scope: this.editor.getRootScopeDescriptor() })) { + if (atom.config.get('ide-haskell.onSavePrettify', { + scope: this.editor.getRootScopeDescriptor(), + })) { const format = this.editor.getGrammar().scopeName.replace(/\./g, '*'); const enabled = atom.config.get('ide-haskell.onSavePrettifyFormats', { scope: this.editor.getRootScopeDescriptor() }); - if (!enabled) + if (!enabled) { throw new Error("Couldn't get 'ide-haskell.onSavePrettifyFormats'"); + } if (!enabled[format]) { return; } @@ -36,4 +39,4 @@ class PrettifyEditorController { } } exports.PrettifyEditorController = PrettifyEditorController; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJldHRpZnkvZWRpdG9yLWNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQkFFYTtBQUNiLG1DQUFzQztBQU10QztJQUVFLFlBQXFCLE1BQWtCO1FBQWxCLFdBQU0sR0FBTixNQUFNLENBQVk7UUFEL0IsZ0JBQVcsR0FBRyxJQUFJLDBCQUFtQixFQUFFLENBQUE7UUF1QnZDLGFBQVEsR0FBRyxLQUFLLElBQUksRUFBRTtZQUM1QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbkcsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQTtnQkFDckUsTUFBTSxPQUFPLEdBQW9DLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUM5RCxtQ0FBbUMsRUFDbkMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLENBQ2hELENBQUE7Z0JBQ0QsRUFBRSxDQUFDLENBQUMsQ0FBRSxPQUFPLENBQUM7b0JBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFBO2dCQUNsRixFQUFFLENBQUMsQ0FBQyxDQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQUMsTUFBTSxDQUFBO2dCQUFDLENBQUM7Z0JBQ2pDLE1BQU0sb0JBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDakMsQ0FBQztRQUNILENBQUMsQ0FBQTtRQWhDQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFBO1FBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUNsQixNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDakMsQ0FBQTtJQUNILENBQUM7SUFFTSxNQUFNLENBQUMsZUFBZSxDQUFFLE9BQWU7UUFDNUMsTUFBTSxDQUFDO1lBQ0wsYUFBYTtZQUNiLGNBQWM7WUFDZCxlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLHdCQUF3QjtZQUN4QixhQUFhO1NBQ2QsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDckIsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQzVCLENBQUM7Q0FjRjtBQXBDRCw0REFvQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBUZXh0RWRpdG9yLCBDb21wb3NpdGVEaXNwb3NhYmxlLFxufSBmcm9tICdhdG9tJ1xuaW1wb3J0IHsgcHJldHRpZnlGaWxlIH0gZnJvbSAnLi9pbmRleCdcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4uL2NvbmZpZydcbmltcG9ydCB7IElFZGl0b3JDb250cm9sbGVyIH0gZnJvbSAnLi4vcGx1Z2luLW1hbmFnZXInXG5cbnR5cGUgU2F2ZVByZXR0aWZ5Rm9ybWF0cyA9IHtbSyBpbiBrZXlvZiB0eXBlb2YgY29uZmlnLm9uU2F2ZVByZXR0aWZ5Rm9ybWF0cy5wcm9wZXJ0aWVzXTogYm9vbGVhbn1cblxuZXhwb3J0IGNsYXNzIFByZXR0aWZ5RWRpdG9yQ29udHJvbGxlciBpbXBsZW1lbnRzIElFZGl0b3JDb250cm9sbGVyIHtcbiAgcHJpdmF0ZSBkaXNwb3NhYmxlcyA9IG5ldyBDb21wb3NpdGVEaXNwb3NhYmxlKClcbiAgY29uc3RydWN0b3IgKHByaXZhdGUgZWRpdG9yOiBUZXh0RWRpdG9yKSB7XG4gICAgY29uc3QgYnVmZmVyID0gdGhpcy5lZGl0b3IuZ2V0QnVmZmVyKClcbiAgICB0aGlzLmRpc3Bvc2FibGVzLmFkZChcbiAgICAgIGJ1ZmZlci5vbldpbGxTYXZlKHRoaXMucHJldHRpZnkpLFxuICAgIClcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc3VwcG9ydHNHcmFtbWFyIChncmFtbWFyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ3NvdXJjZS5jMmhzJyxcbiAgICAgICdzb3VyY2UuY2FiYWwnLCAvLyBOT1RFOiBzcGVjaWFsIGNhc2VcbiAgICAgICdzb3VyY2UuaHNjMmhzJyxcbiAgICAgICdzb3VyY2UuaGFza2VsbCcsXG4gICAgICAndGV4dC50ZXgubGF0ZXguaGFza2VsbCcsXG4gICAgICAnc291cmNlLmhzaWcnLFxuICAgIF0uaW5jbHVkZXMoZ3JhbW1hcilcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95ICgpIHtcbiAgICB0aGlzLmRpc3Bvc2FibGVzLmRpc3Bvc2UoKVxuICB9XG5cbiAgcHJpdmF0ZSBwcmV0dGlmeSA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoYXRvbS5jb25maWcuZ2V0KCdpZGUtaGFza2VsbC5vblNhdmVQcmV0dGlmeScsIHsgc2NvcGU6IHRoaXMuZWRpdG9yLmdldFJvb3RTY29wZURlc2NyaXB0b3IoKSB9KSkge1xuICAgICAgY29uc3QgZm9ybWF0ID0gdGhpcy5lZGl0b3IuZ2V0R3JhbW1hcigpLnNjb3BlTmFtZS5yZXBsYWNlKC9cXC4vZywgJyonKVxuICAgICAgY29uc3QgZW5hYmxlZDogU2F2ZVByZXR0aWZ5Rm9ybWF0cyB8IHVuZGVmaW5lZCA9IGF0b20uY29uZmlnLmdldChcbiAgICAgICAgJ2lkZS1oYXNrZWxsLm9uU2F2ZVByZXR0aWZ5Rm9ybWF0cycsXG4gICAgICAgIHsgc2NvcGU6IHRoaXMuZWRpdG9yLmdldFJvb3RTY29wZURlc2NyaXB0b3IoKSB9LFxuICAgICAgKVxuICAgICAgaWYgKCEgZW5hYmxlZCkgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZ2V0ICdpZGUtaGFza2VsbC5vblNhdmVQcmV0dGlmeUZvcm1hdHMnXCIpXG4gICAgICBpZiAoISBlbmFibGVkW2Zvcm1hdF0pIHsgcmV0dXJuIH1cbiAgICAgIGF3YWl0IHByZXR0aWZ5RmlsZSh0aGlzLmVkaXRvcilcbiAgICB9XG4gIH1cbn1cbiJdfQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJldHRpZnkvZWRpdG9yLWNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQkFBc0Q7QUFDdEQsbUNBQXNDO0FBUXRDO0lBRUUsWUFBb0IsTUFBa0I7UUFBbEIsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQUQ5QixnQkFBVyxHQUFHLElBQUksMEJBQW1CLEVBQUUsQ0FBQTtRQXFCdkMsYUFBUSxHQUFHLEtBQUssSUFBSSxFQUFFO1lBQzVCLEVBQUUsQ0FBQyxDQUNELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLDRCQUE0QixFQUFFO2dCQUM1QyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRTthQUM1QyxDQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUE7Z0JBQ3JFLE1BQU0sT0FBTyxHQUFvQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FDOUQsbUNBQW1DLEVBQ25DLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxDQUNoRCxDQUFBO2dCQUNELEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztvQkFDYixNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUE7Z0JBQ3JFLENBQUM7Z0JBQ0QsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNyQixNQUFNLENBQUE7Z0JBQ1IsQ0FBQztnQkFDRCxNQUFNLG9CQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ2pDLENBQUM7UUFDSCxDQUFDLENBQUE7UUF0Q0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO0lBQ3hELENBQUM7SUFFTSxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQWU7UUFDM0MsTUFBTSxDQUFDO1lBQ0wsYUFBYTtZQUNiLGNBQWM7WUFDZCxlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLHdCQUF3QjtZQUN4QixhQUFhO1NBQ2QsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDckIsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQzVCLENBQUM7Q0FzQkY7QUExQ0QsNERBMENDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGV4dEVkaXRvciwgQ29tcG9zaXRlRGlzcG9zYWJsZSB9IGZyb20gJ2F0b20nXG5pbXBvcnQgeyBwcmV0dGlmeUZpbGUgfSBmcm9tICcuL2luZGV4J1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi4vY29uZmlnJ1xuaW1wb3J0IHsgSUVkaXRvckNvbnRyb2xsZXIgfSBmcm9tICcuLi9wbHVnaW4tbWFuYWdlcidcblxudHlwZSBTYXZlUHJldHRpZnlGb3JtYXRzID0ge1xuICBbSyBpbiBrZXlvZiB0eXBlb2YgY29uZmlnLm9uU2F2ZVByZXR0aWZ5Rm9ybWF0cy5wcm9wZXJ0aWVzXTogYm9vbGVhblxufVxuXG5leHBvcnQgY2xhc3MgUHJldHRpZnlFZGl0b3JDb250cm9sbGVyIGltcGxlbWVudHMgSUVkaXRvckNvbnRyb2xsZXIge1xuICBwcml2YXRlIGRpc3Bvc2FibGVzID0gbmV3IENvbXBvc2l0ZURpc3Bvc2FibGUoKVxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVkaXRvcjogVGV4dEVkaXRvcikge1xuICAgIGNvbnN0IGJ1ZmZlciA9IHRoaXMuZWRpdG9yLmdldEJ1ZmZlcigpXG4gICAgdGhpcy5kaXNwb3NhYmxlcy5hZGQoYnVmZmVyLm9uV2lsbFNhdmUodGhpcy5wcmV0dGlmeSkpXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHN1cHBvcnRzR3JhbW1hcihncmFtbWFyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ3NvdXJjZS5jMmhzJyxcbiAgICAgICdzb3VyY2UuY2FiYWwnLCAvLyBOT1RFOiBzcGVjaWFsIGNhc2VcbiAgICAgICdzb3VyY2UuaHNjMmhzJyxcbiAgICAgICdzb3VyY2UuaGFza2VsbCcsXG4gICAgICAndGV4dC50ZXgubGF0ZXguaGFza2VsbCcsXG4gICAgICAnc291cmNlLmhzaWcnLFxuICAgIF0uaW5jbHVkZXMoZ3JhbW1hcilcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCkge1xuICAgIHRoaXMuZGlzcG9zYWJsZXMuZGlzcG9zZSgpXG4gIH1cblxuICBwcml2YXRlIHByZXR0aWZ5ID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmIChcbiAgICAgIGF0b20uY29uZmlnLmdldCgnaWRlLWhhc2tlbGwub25TYXZlUHJldHRpZnknLCB7XG4gICAgICAgIHNjb3BlOiB0aGlzLmVkaXRvci5nZXRSb290U2NvcGVEZXNjcmlwdG9yKCksXG4gICAgICB9KVxuICAgICkge1xuICAgICAgY29uc3QgZm9ybWF0ID0gdGhpcy5lZGl0b3IuZ2V0R3JhbW1hcigpLnNjb3BlTmFtZS5yZXBsYWNlKC9cXC4vZywgJyonKVxuICAgICAgY29uc3QgZW5hYmxlZDogU2F2ZVByZXR0aWZ5Rm9ybWF0cyB8IHVuZGVmaW5lZCA9IGF0b20uY29uZmlnLmdldChcbiAgICAgICAgJ2lkZS1oYXNrZWxsLm9uU2F2ZVByZXR0aWZ5Rm9ybWF0cycsXG4gICAgICAgIHsgc2NvcGU6IHRoaXMuZWRpdG9yLmdldFJvb3RTY29wZURlc2NyaXB0b3IoKSB9LFxuICAgICAgKVxuICAgICAgaWYgKCFlbmFibGVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGdldCAnaWRlLWhhc2tlbGwub25TYXZlUHJldHRpZnlGb3JtYXRzJ1wiKVxuICAgICAgfVxuICAgICAgaWYgKCFlbmFibGVkW2Zvcm1hdF0pIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBhd2FpdCBwcmV0dGlmeUZpbGUodGhpcy5lZGl0b3IpXG4gICAgfVxuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/lib/prettify/index.js b/lib/prettify/index.js index 21d214a..81f15d8 100644 --- a/lib/prettify/index.js +++ b/lib/prettify/index.js @@ -4,7 +4,9 @@ const atom_haskell_utils_1 = require("atom-haskell-utils"); const util_cabal_format_1 = require("./util-cabal-format"); const util_stylish_haskell_1 = require("./util-stylish-haskell"); async function prettifyFile(editor) { - const [firstCursor, ...cursors] = editor.getCursors().map((cursor) => cursor.getBufferPosition()); + const [firstCursor, ...cursors] = editor + .getCursors() + .map((cursor) => cursor.getBufferPosition()); const format = editor.getGrammar().scopeName; const prettify = format === 'source.cabal' ? util_cabal_format_1.format : util_stylish_haskell_1.format; const workDir = (await atom_haskell_utils_1.getRootDir(editor.getBuffer())).getPath(); @@ -12,7 +14,9 @@ async function prettifyFile(editor) { const { stdout, stderr } = await prettify(editor.getText(), workDir, editor.getRootScopeDescriptor()); editor.setText(stdout); if (editor.getLastCursor()) { - editor.getLastCursor().setBufferPosition(firstCursor, { autoscroll: false }); + editor + .getLastCursor() + .setBufferPosition(firstCursor, { autoscroll: false }); } cursors.forEach((cursor) => { editor.addCursorAtBufferPosition(cursor, { autoscroll: false }); @@ -40,4 +44,4 @@ async function prettifyFile(editor) { exports.prettifyFile = prettifyFile; var editor_controller_1 = require("./editor-controller"); exports.PrettifyEditorController = editor_controller_1.PrettifyEditorController; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJldHRpZnkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSwyREFBK0M7QUFDL0MsMkRBQTJEO0FBQzNELGlFQUErRDtBQUV4RCxLQUFLLHVCQUF1QixNQUFrQjtJQUNuRCxNQUFNLENBQUMsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQTtJQUNqRyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFBO0lBQzVDLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxjQUFjLENBQUMsQ0FBQyxDQUFDLDBCQUFXLENBQUMsQ0FBQyxDQUFDLDZCQUFZLENBQUE7SUFDdkUsTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUFNLCtCQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNoRSxJQUFJLENBQUM7UUFDSCxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQTtRQUNyRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3RCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0IsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQzlFLENBQUM7UUFDRCxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDekIsTUFBTSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQ2pFLENBQUMsQ0FBQyxDQUFBO1FBQ0YsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLDZDQUE2QyxFQUFFO2dCQUMzRSxNQUFNLEVBQUUsTUFBTTtnQkFDZCxXQUFXLEVBQUUsSUFBSTthQUNsQixDQUFDLENBQUE7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFWCxNQUFNLEdBQUcsR0FBVSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQTtRQUUvQixJQUFJLE1BQU0sR0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFDcEQsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sR0FBRyxFQUFFLENBQUE7UUFDYixDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLEVBQUU7WUFDaEQsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRTtZQUN4RCxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7WUFDaEIsV0FBVyxFQUFFLElBQUk7U0FDbEIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUM7QUFsQ0Qsb0NBa0NDO0FBRUQseURBQThEO0FBQXJELHVEQUFBLHdCQUF3QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGV4dEVkaXRvciB9IGZyb20gJ2F0b20nXG5pbXBvcnQgeyBnZXRSb290RGlyIH0gZnJvbSAnYXRvbS1oYXNrZWxsLXV0aWxzJ1xuaW1wb3J0IHsgZm9ybWF0IGFzIGNhYmFsRm9ybWF0IH0gZnJvbSAnLi91dGlsLWNhYmFsLWZvcm1hdCdcbmltcG9ydCB7IGZvcm1hdCBhcyBmaWx0ZXJGb3JtYXQgfSBmcm9tICcuL3V0aWwtc3R5bGlzaC1oYXNrZWxsJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJldHRpZnlGaWxlKGVkaXRvcjogVGV4dEVkaXRvcikge1xuICBjb25zdCBbZmlyc3RDdXJzb3IsIC4uLmN1cnNvcnNdID0gZWRpdG9yLmdldEN1cnNvcnMoKS5tYXAoKGN1cnNvcikgPT4gY3Vyc29yLmdldEJ1ZmZlclBvc2l0aW9uKCkpXG4gIGNvbnN0IGZvcm1hdCA9IGVkaXRvci5nZXRHcmFtbWFyKCkuc2NvcGVOYW1lXG4gIGNvbnN0IHByZXR0aWZ5ID0gZm9ybWF0ID09PSAnc291cmNlLmNhYmFsJyA/IGNhYmFsRm9ybWF0IDogZmlsdGVyRm9ybWF0XG4gIGNvbnN0IHdvcmtEaXIgPSAoYXdhaXQgZ2V0Um9vdERpcihlZGl0b3IuZ2V0QnVmZmVyKCkpKS5nZXRQYXRoKClcbiAgdHJ5IHtcbiAgICBjb25zdCB7IHN0ZG91dCwgc3RkZXJyIH0gPSBhd2FpdCBwcmV0dGlmeShlZGl0b3IuZ2V0VGV4dCgpLCB3b3JrRGlyLCBlZGl0b3IuZ2V0Um9vdFNjb3BlRGVzY3JpcHRvcigpKVxuICAgIGVkaXRvci5zZXRUZXh0KHN0ZG91dClcbiAgICBpZiAoZWRpdG9yLmdldExhc3RDdXJzb3IoKSkge1xuICAgICAgZWRpdG9yLmdldExhc3RDdXJzb3IoKS5zZXRCdWZmZXJQb3NpdGlvbihmaXJzdEN1cnNvciwgeyBhdXRvc2Nyb2xsOiBmYWxzZSB9KVxuICAgIH1cbiAgICBjdXJzb3JzLmZvckVhY2goKGN1cnNvcikgPT4ge1xuICAgICAgZWRpdG9yLmFkZEN1cnNvckF0QnVmZmVyUG9zaXRpb24oY3Vyc29yLCB7IGF1dG9zY3JvbGw6IGZhbHNlIH0pXG4gICAgfSlcbiAgICBpZiAoc3RkZXJyLmxlbmd0aCA+IDApIHtcbiAgICAgIGF0b20ubm90aWZpY2F0aW9ucy5hZGRXYXJuaW5nKCdQcmV0dGlmaWVyIHJlcG9ydGVkIHRoZSBmb2xsb3dpbmcgcHJvYmxlbXM6Jywge1xuICAgICAgICBkZXRhaWw6IHN0ZGVycixcbiAgICAgICAgZGlzbWlzc2FibGU6IHRydWUsXG4gICAgICB9KVxuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby11bnNhZmUtYW55XG4gICAgY29uc3QgZXJyOiBFcnJvciA9IGUuZXJyb3IgfHwgZVxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby11bnNhZmUtYW55XG4gICAgbGV0IHN0ZGVycjogc3RyaW5nID0gZS5zdGRlcnIgPyBlLnN0ZGVyci50cmltKCkgOiAnJ1xuICAgIGlmIChlcnIubWVzc2FnZS5pbmNsdWRlcyhzdGRlcnIpKSB7XG4gICAgICBzdGRlcnIgPSAnJ1xuICAgIH1cbiAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkRXJyb3IoJ0ZhaWxlZCB0byBwcmV0dGlmeScsIHtcbiAgICAgIGRldGFpbDogYCR7c3RkZXJyID8gYCR7c3RkZXJyfVxcblxcbmAgOiAnJ30ke2Vyci5tZXNzYWdlfWAsXG4gICAgICBzdGFjazogZXJyLnN0YWNrLFxuICAgICAgZGlzbWlzc2FibGU6IHRydWUsXG4gICAgfSlcbiAgfVxufVxuXG5leHBvcnQgeyBQcmV0dGlmeUVkaXRvckNvbnRyb2xsZXIgfSBmcm9tICcuL2VkaXRvci1jb250cm9sbGVyJ1xuIl19 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJldHRpZnkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSwyREFBK0M7QUFDL0MsMkRBQTJEO0FBQzNELGlFQUErRDtBQUV4RCxLQUFLLHVCQUF1QixNQUFrQjtJQUNuRCxNQUFNLENBQUMsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsTUFBTTtTQUNyQyxVQUFVLEVBQUU7U0FDWixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUE7SUFDOUMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQTtJQUM1QyxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssY0FBYyxDQUFDLENBQUMsQ0FBQywwQkFBVyxDQUFDLENBQUMsQ0FBQyw2QkFBWSxDQUFBO0lBQ3ZFLE1BQU0sT0FBTyxHQUFHLENBQUMsTUFBTSwrQkFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDaEUsSUFBSSxDQUFDO1FBQ0gsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLFFBQVEsQ0FDdkMsTUFBTSxDQUFDLE9BQU8sRUFBRSxFQUNoQixPQUFPLEVBQ1AsTUFBTSxDQUFDLHNCQUFzQixFQUFFLENBQ2hDLENBQUE7UUFDRCxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3RCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0IsTUFBTTtpQkFDSCxhQUFhLEVBQUU7aUJBQ2YsaUJBQWlCLENBQUMsV0FBVyxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7UUFDMUQsQ0FBQztRQUNELE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN6QixNQUFNLENBQUMseUJBQXlCLENBQUMsTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7UUFDakUsQ0FBQyxDQUFDLENBQUE7UUFDRixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQzNCLDZDQUE2QyxFQUM3QztnQkFDRSxNQUFNLEVBQUUsTUFBTTtnQkFDZCxXQUFXLEVBQUUsSUFBSTthQUNsQixDQUNGLENBQUE7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFWCxNQUFNLEdBQUcsR0FBVSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQTtRQUUvQixJQUFJLE1BQU0sR0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFDcEQsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sR0FBRyxFQUFFLENBQUE7UUFDYixDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLEVBQUU7WUFDaEQsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRTtZQUN4RCxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7WUFDaEIsV0FBVyxFQUFFLElBQUk7U0FDbEIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUM7QUE3Q0Qsb0NBNkNDO0FBRUQseURBQThEO0FBQXJELHVEQUFBLHdCQUF3QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGV4dEVkaXRvciB9IGZyb20gJ2F0b20nXG5pbXBvcnQgeyBnZXRSb290RGlyIH0gZnJvbSAnYXRvbS1oYXNrZWxsLXV0aWxzJ1xuaW1wb3J0IHsgZm9ybWF0IGFzIGNhYmFsRm9ybWF0IH0gZnJvbSAnLi91dGlsLWNhYmFsLWZvcm1hdCdcbmltcG9ydCB7IGZvcm1hdCBhcyBmaWx0ZXJGb3JtYXQgfSBmcm9tICcuL3V0aWwtc3R5bGlzaC1oYXNrZWxsJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJldHRpZnlGaWxlKGVkaXRvcjogVGV4dEVkaXRvcikge1xuICBjb25zdCBbZmlyc3RDdXJzb3IsIC4uLmN1cnNvcnNdID0gZWRpdG9yXG4gICAgLmdldEN1cnNvcnMoKVxuICAgIC5tYXAoKGN1cnNvcikgPT4gY3Vyc29yLmdldEJ1ZmZlclBvc2l0aW9uKCkpXG4gIGNvbnN0IGZvcm1hdCA9IGVkaXRvci5nZXRHcmFtbWFyKCkuc2NvcGVOYW1lXG4gIGNvbnN0IHByZXR0aWZ5ID0gZm9ybWF0ID09PSAnc291cmNlLmNhYmFsJyA/IGNhYmFsRm9ybWF0IDogZmlsdGVyRm9ybWF0XG4gIGNvbnN0IHdvcmtEaXIgPSAoYXdhaXQgZ2V0Um9vdERpcihlZGl0b3IuZ2V0QnVmZmVyKCkpKS5nZXRQYXRoKClcbiAgdHJ5IHtcbiAgICBjb25zdCB7IHN0ZG91dCwgc3RkZXJyIH0gPSBhd2FpdCBwcmV0dGlmeShcbiAgICAgIGVkaXRvci5nZXRUZXh0KCksXG4gICAgICB3b3JrRGlyLFxuICAgICAgZWRpdG9yLmdldFJvb3RTY29wZURlc2NyaXB0b3IoKSxcbiAgICApXG4gICAgZWRpdG9yLnNldFRleHQoc3Rkb3V0KVxuICAgIGlmIChlZGl0b3IuZ2V0TGFzdEN1cnNvcigpKSB7XG4gICAgICBlZGl0b3JcbiAgICAgICAgLmdldExhc3RDdXJzb3IoKVxuICAgICAgICAuc2V0QnVmZmVyUG9zaXRpb24oZmlyc3RDdXJzb3IsIHsgYXV0b3Njcm9sbDogZmFsc2UgfSlcbiAgICB9XG4gICAgY3Vyc29ycy5mb3JFYWNoKChjdXJzb3IpID0+IHtcbiAgICAgIGVkaXRvci5hZGRDdXJzb3JBdEJ1ZmZlclBvc2l0aW9uKGN1cnNvciwgeyBhdXRvc2Nyb2xsOiBmYWxzZSB9KVxuICAgIH0pXG4gICAgaWYgKHN0ZGVyci5sZW5ndGggPiAwKSB7XG4gICAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkV2FybmluZyhcbiAgICAgICAgJ1ByZXR0aWZpZXIgcmVwb3J0ZWQgdGhlIGZvbGxvd2luZyBwcm9ibGVtczonLFxuICAgICAgICB7XG4gICAgICAgICAgZGV0YWlsOiBzdGRlcnIsXG4gICAgICAgICAgZGlzbWlzc2FibGU6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXVuc2FmZS1hbnlcbiAgICBjb25zdCBlcnI6IEVycm9yID0gZS5lcnJvciB8fCBlXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXVuc2FmZS1hbnlcbiAgICBsZXQgc3RkZXJyOiBzdHJpbmcgPSBlLnN0ZGVyciA/IGUuc3RkZXJyLnRyaW0oKSA6ICcnXG4gICAgaWYgKGVyci5tZXNzYWdlLmluY2x1ZGVzKHN0ZGVycikpIHtcbiAgICAgIHN0ZGVyciA9ICcnXG4gICAgfVxuICAgIGF0b20ubm90aWZpY2F0aW9ucy5hZGRFcnJvcignRmFpbGVkIHRvIHByZXR0aWZ5Jywge1xuICAgICAgZGV0YWlsOiBgJHtzdGRlcnIgPyBgJHtzdGRlcnJ9XFxuXFxuYCA6ICcnfSR7ZXJyLm1lc3NhZ2V9YCxcbiAgICAgIHN0YWNrOiBlcnIuc3RhY2ssXG4gICAgICBkaXNtaXNzYWJsZTogdHJ1ZSxcbiAgICB9KVxuICB9XG59XG5cbmV4cG9ydCB7IFByZXR0aWZ5RWRpdG9yQ29udHJvbGxlciB9IGZyb20gJy4vZWRpdG9yLWNvbnRyb2xsZXInXG4iXX0= \ No newline at end of file diff --git a/lib/prettify/util-cabal-format.js b/lib/prettify/util-cabal-format.js index 65ab1a2..b44ddda 100644 --- a/lib/prettify/util-cabal-format.js +++ b/lib/prettify/util-cabal-format.js @@ -32,8 +32,6 @@ async function format(text, workingDirectory, scope) { const { path, fd } = await makeTempFile(text); try { const command = atom.config.get('ide-haskell.cabalPath', { scope }); - if (command === undefined) - throw new Error("Couldn't get 'ide-haskell.cabalPath'"); const { stderr } = await util_run_filter_1.runFilter({ command, args: ['format', path], @@ -49,7 +47,10 @@ async function format(text, workingDirectory, scope) { exports.format = format; function handleErr(err) { if (err) { - atom.notifications.addError(err.name, { detail: err.message, dismissable: true }); + atom.notifications.addError(err.name, { + detail: err.message, + dismissable: true, + }); } } -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC1jYWJhbC1mb3JtYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJldHRpZnkvdXRpbC1jYWJhbC1mb3JtYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5QkFBd0I7QUFDeEIsNkJBQTRCO0FBQzVCLHVEQUE2QztBQUc3QyxLQUFLLHVCQUF1QixRQUFnQjtJQUMxQyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQWdCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3BELElBQUksQ0FBQyxJQUFJLENBQ1AsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFDM0MsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDWixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUVSLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQ2xCLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDcEIsQ0FBQztZQUNELEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQTtZQUMvQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDZixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVELEtBQUssZUFBZSxJQUFZO0lBQzlCLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUM3QyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUN2RCxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUVWLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ3BCLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNmLENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7WUFBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBRU0sS0FBSyxpQkFBaUIsSUFBWSxFQUFFLGdCQUF3QixFQUFFLEtBQWdDO0lBQ25HLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsTUFBTSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDN0MsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQ25FLEVBQUUsQ0FBQyxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUM7WUFBQyxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUE7UUFDbEYsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sMkJBQVMsQ0FBQztZQUNqQyxPQUFPO1lBQ1AsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQztZQUN0QixHQUFHLEVBQUUsZ0JBQWdCO1NBQ3RCLENBQUMsQ0FBQTtRQUNGLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQTtJQUM3QyxDQUFDO1lBQVMsQ0FBQztRQUNULEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBQ3ZCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQzVCLENBQUM7QUFDSCxDQUFDO0FBZkQsd0JBZUM7QUFFRCxtQkFBbUIsR0FBMEI7SUFDM0MsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNSLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUNuRixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIEZTIGZyb20gJ2ZzJ1xuaW1wb3J0ICogYXMgVGVtcCBmcm9tICd0ZW1wJ1xuaW1wb3J0IHsgcnVuRmlsdGVyIH0gZnJvbSAnLi91dGlsLXJ1bi1maWx0ZXInXG5pbXBvcnQgKiBhcyBBdG9tVHlwZXMgZnJvbSAnYXRvbSdcblxuYXN5bmMgZnVuY3Rpb24gbWFrZVRlbXBGaWxlKGNvbnRlbnRzOiBzdHJpbmcpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFRlbXAuT3BlbkZpbGU+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBUZW1wLm9wZW4oXG4gICAgICB7IHByZWZpeDogJ2lkZS1oYXNrZWxsJywgc3VmZml4OiAnLmNhYmFsJyB9LFxuICAgICAgKGVyciwgaW5mbykgPT4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWNvbnNvbGVcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycilcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycilcbiAgICAgICAgfVxuICAgICAgICBGUy53cml0ZVN5bmMoaW5mby5mZCwgY29udGVudHMpXG4gICAgICAgIHJlc29sdmUoaW5mbylcbiAgICAgIH0pXG4gIH0pXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWQocGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIEZTLnJlYWRGaWxlKHBhdGgsIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSwgKGVycm9yLCB0ZXh0KSA9PiB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcilcbiAgICAgICAgcmVqZWN0KGVycm9yKVxuICAgICAgfSBlbHNlIHsgcmVzb2x2ZSh0ZXh0KSB9XG4gICAgfSlcbiAgfSlcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZvcm1hdCh0ZXh0OiBzdHJpbmcsIHdvcmtpbmdEaXJlY3Rvcnk6IHN0cmluZywgc2NvcGU6IEF0b21UeXBlcy5TY29wZURlc2NyaXB0b3IpIHtcbiAgY29uc3QgeyBwYXRoLCBmZCB9ID0gYXdhaXQgbWFrZVRlbXBGaWxlKHRleHQpXG4gIHRyeSB7XG4gICAgY29uc3QgY29tbWFuZCA9IGF0b20uY29uZmlnLmdldCgnaWRlLWhhc2tlbGwuY2FiYWxQYXRoJywgeyBzY29wZSB9KVxuICAgIGlmIChjb21tYW5kID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGdldCAnaWRlLWhhc2tlbGwuY2FiYWxQYXRoJ1wiKVxuICAgIGNvbnN0IHsgc3RkZXJyIH0gPSBhd2FpdCBydW5GaWx0ZXIoe1xuICAgICAgY29tbWFuZCxcbiAgICAgIGFyZ3M6IFsnZm9ybWF0JywgcGF0aF0sXG4gICAgICBjd2Q6IHdvcmtpbmdEaXJlY3RvcnksXG4gICAgfSlcbiAgICByZXR1cm4geyBzdGRvdXQ6IGF3YWl0IHJlYWQocGF0aCksIHN0ZGVyciB9XG4gIH0gZmluYWxseSB7XG4gICAgRlMuY2xvc2UoZmQsIGhhbmRsZUVycilcbiAgICBGUy51bmxpbmsocGF0aCwgaGFuZGxlRXJyKVxuICB9XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUVycihlcnI6IE5vZGVKUy5FcnJub0V4Y2VwdGlvbik6IHZvaWQge1xuICBpZiAoZXJyKSB7XG4gICAgYXRvbS5ub3RpZmljYXRpb25zLmFkZEVycm9yKGVyci5uYW1lLCB7IGRldGFpbDogZXJyLm1lc3NhZ2UsIGRpc21pc3NhYmxlOiB0cnVlIH0pXG4gIH1cbn1cbiJdfQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC1jYWJhbC1mb3JtYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJldHRpZnkvdXRpbC1jYWJhbC1mb3JtYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5QkFBd0I7QUFDeEIsNkJBQTRCO0FBQzVCLHVEQUE2QztBQUc3QyxLQUFLLHVCQUF1QixRQUFnQjtJQUMxQyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQWdCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNuRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUVSLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQ2xCLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDcEIsQ0FBQztZQUNELEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQTtZQUMvQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDZixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVELEtBQUssZUFBZSxJQUFZO0lBQzlCLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUM3QyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUN2RCxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUVWLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ3BCLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNmLENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDTixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDZixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFTSxLQUFLLGlCQUNWLElBQVksRUFDWixnQkFBd0IsRUFDeEIsS0FBZ0M7SUFFaEMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxNQUFNLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM3QyxJQUFJLENBQUM7UUFDSCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7UUFDbkUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sMkJBQVMsQ0FBQztZQUNqQyxPQUFPO1lBQ1AsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQztZQUN0QixHQUFHLEVBQUUsZ0JBQWdCO1NBQ3RCLENBQUMsQ0FBQTtRQUNGLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQTtJQUM3QyxDQUFDO1lBQVMsQ0FBQztRQUNULEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBQ3ZCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQzVCLENBQUM7QUFDSCxDQUFDO0FBbEJELHdCQWtCQztBQUVELG1CQUFtQixHQUEwQjtJQUMzQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ1IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRTtZQUNwQyxNQUFNLEVBQUUsR0FBRyxDQUFDLE9BQU87WUFDbkIsV0FBVyxFQUFFLElBQUk7U0FDbEIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBGUyBmcm9tICdmcydcbmltcG9ydCAqIGFzIFRlbXAgZnJvbSAndGVtcCdcbmltcG9ydCB7IHJ1bkZpbHRlciB9IGZyb20gJy4vdXRpbC1ydW4tZmlsdGVyJ1xuaW1wb3J0ICogYXMgQXRvbVR5cGVzIGZyb20gJ2F0b20nXG5cbmFzeW5jIGZ1bmN0aW9uIG1ha2VUZW1wRmlsZShjb250ZW50czogc3RyaW5nKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTxUZW1wLk9wZW5GaWxlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgVGVtcC5vcGVuKHsgcHJlZml4OiAnaWRlLWhhc2tlbGwnLCBzdWZmaXg6ICcuY2FiYWwnIH0sIChlcnIsIGluZm8pID0+IHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpXG4gICAgICAgIHJldHVybiByZWplY3QoZXJyKVxuICAgICAgfVxuICAgICAgRlMud3JpdGVTeW5jKGluZm8uZmQsIGNvbnRlbnRzKVxuICAgICAgcmVzb2x2ZShpbmZvKVxuICAgIH0pXG4gIH0pXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWQocGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIEZTLnJlYWRGaWxlKHBhdGgsIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSwgKGVycm9yLCB0ZXh0KSA9PiB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcilcbiAgICAgICAgcmVqZWN0KGVycm9yKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZSh0ZXh0KVxuICAgICAgfVxuICAgIH0pXG4gIH0pXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmb3JtYXQoXG4gIHRleHQ6IHN0cmluZyxcbiAgd29ya2luZ0RpcmVjdG9yeTogc3RyaW5nLFxuICBzY29wZTogQXRvbVR5cGVzLlNjb3BlRGVzY3JpcHRvcixcbikge1xuICBjb25zdCB7IHBhdGgsIGZkIH0gPSBhd2FpdCBtYWtlVGVtcEZpbGUodGV4dClcbiAgdHJ5IHtcbiAgICBjb25zdCBjb21tYW5kID0gYXRvbS5jb25maWcuZ2V0KCdpZGUtaGFza2VsbC5jYWJhbFBhdGgnLCB7IHNjb3BlIH0pXG4gICAgY29uc3QgeyBzdGRlcnIgfSA9IGF3YWl0IHJ1bkZpbHRlcih7XG4gICAgICBjb21tYW5kLFxuICAgICAgYXJnczogWydmb3JtYXQnLCBwYXRoXSxcbiAgICAgIGN3ZDogd29ya2luZ0RpcmVjdG9yeSxcbiAgICB9KVxuICAgIHJldHVybiB7IHN0ZG91dDogYXdhaXQgcmVhZChwYXRoKSwgc3RkZXJyIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBGUy5jbG9zZShmZCwgaGFuZGxlRXJyKVxuICAgIEZTLnVubGluayhwYXRoLCBoYW5kbGVFcnIpXG4gIH1cbn1cblxuZnVuY3Rpb24gaGFuZGxlRXJyKGVycjogTm9kZUpTLkVycm5vRXhjZXB0aW9uKTogdm9pZCB7XG4gIGlmIChlcnIpIHtcbiAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkRXJyb3IoZXJyLm5hbWUsIHtcbiAgICAgIGRldGFpbDogZXJyLm1lc3NhZ2UsXG4gICAgICBkaXNtaXNzYWJsZTogdHJ1ZSxcbiAgICB9KVxuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/lib/prettify/util-stylish-haskell.js b/lib/prettify/util-stylish-haskell.js index 5d1a2ea..46fe860 100644 --- a/lib/prettify/util-stylish-haskell.js +++ b/lib/prettify/util-stylish-haskell.js @@ -4,10 +4,6 @@ const util_run_filter_1 = require("./util-run-filter"); async function format(text, workingDirectory, scope) { const command = atom.config.get('ide-haskell.stylishHaskellPath', { scope }); const args = atom.config.get('ide-haskell.stylishHaskellArguments', { scope }); - if (command === undefined) - throw new Error("Couldn't get 'ide-haskell.stylishHaskellPath'"); - if (args === undefined) - throw new Error("Couldn't get 'ide-haskell.stylishHaskellArguments'"); return util_run_filter_1.runFilter({ command, args, @@ -16,4 +12,4 @@ async function format(text, workingDirectory, scope) { }); } exports.format = format; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC1zdHlsaXNoLWhhc2tlbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJldHRpZnkvdXRpbC1zdHlsaXNoLWhhc2tlbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx1REFBNkM7QUFHdEMsS0FBSyxpQkFBaUIsSUFBWSxFQUFFLGdCQUF3QixFQUFFLEtBQWdDO0lBQ25HLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUM1RSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxxQ0FBcUMsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDOUUsRUFBRSxDQUFDLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQztRQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQTtJQUMzRixFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDO1FBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFBO0lBQzdGLE1BQU0sQ0FBQywyQkFBUyxDQUFDO1FBQ2YsT0FBTztRQUNQLElBQUk7UUFDSixHQUFHLEVBQUUsZ0JBQWdCO1FBQ3JCLEtBQUssRUFBRSxJQUFJO0tBQ1osQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQVhELHdCQVdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcnVuRmlsdGVyIH0gZnJvbSAnLi91dGlsLXJ1bi1maWx0ZXInXG5pbXBvcnQgKiBhcyBBdG9tVHlwZXMgZnJvbSAnYXRvbSdcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZvcm1hdCh0ZXh0OiBzdHJpbmcsIHdvcmtpbmdEaXJlY3Rvcnk6IHN0cmluZywgc2NvcGU6IEF0b21UeXBlcy5TY29wZURlc2NyaXB0b3IpIHtcbiAgY29uc3QgY29tbWFuZCA9IGF0b20uY29uZmlnLmdldCgnaWRlLWhhc2tlbGwuc3R5bGlzaEhhc2tlbGxQYXRoJywgeyBzY29wZSB9KVxuICBjb25zdCBhcmdzID0gYXRvbS5jb25maWcuZ2V0KCdpZGUtaGFza2VsbC5zdHlsaXNoSGFza2VsbEFyZ3VtZW50cycsIHsgc2NvcGUgfSlcbiAgaWYgKGNvbW1hbmQgPT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZ2V0ICdpZGUtaGFza2VsbC5zdHlsaXNoSGFza2VsbFBhdGgnXCIpXG4gIGlmIChhcmdzID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGdldCAnaWRlLWhhc2tlbGwuc3R5bGlzaEhhc2tlbGxBcmd1bWVudHMnXCIpXG4gIHJldHVybiBydW5GaWx0ZXIoe1xuICAgIGNvbW1hbmQsXG4gICAgYXJncyxcbiAgICBjd2Q6IHdvcmtpbmdEaXJlY3RvcnksXG4gICAgc3RkaW46IHRleHQsXG4gIH0pXG59XG4iXX0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC1zdHlsaXNoLWhhc2tlbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJldHRpZnkvdXRpbC1zdHlsaXNoLWhhc2tlbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx1REFBNkM7QUFHdEMsS0FBSyxpQkFDVixJQUFZLEVBQ1osZ0JBQXdCLEVBQ3hCLEtBQWdDO0lBRWhDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUM1RSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxxQ0FBcUMsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDOUUsTUFBTSxDQUFDLDJCQUFTLENBQUM7UUFDZixPQUFPO1FBQ1AsSUFBSTtRQUNKLEdBQUcsRUFBRSxnQkFBZ0I7UUFDckIsS0FBSyxFQUFFLElBQUk7S0FDWixDQUFDLENBQUE7QUFDSixDQUFDO0FBYkQsd0JBYUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBydW5GaWx0ZXIgfSBmcm9tICcuL3V0aWwtcnVuLWZpbHRlcidcbmltcG9ydCAqIGFzIEF0b21UeXBlcyBmcm9tICdhdG9tJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZm9ybWF0KFxuICB0ZXh0OiBzdHJpbmcsXG4gIHdvcmtpbmdEaXJlY3Rvcnk6IHN0cmluZyxcbiAgc2NvcGU6IEF0b21UeXBlcy5TY29wZURlc2NyaXB0b3IsXG4pIHtcbiAgY29uc3QgY29tbWFuZCA9IGF0b20uY29uZmlnLmdldCgnaWRlLWhhc2tlbGwuc3R5bGlzaEhhc2tlbGxQYXRoJywgeyBzY29wZSB9KVxuICBjb25zdCBhcmdzID0gYXRvbS5jb25maWcuZ2V0KCdpZGUtaGFza2VsbC5zdHlsaXNoSGFza2VsbEFyZ3VtZW50cycsIHsgc2NvcGUgfSlcbiAgcmV0dXJuIHJ1bkZpbHRlcih7XG4gICAgY29tbWFuZCxcbiAgICBhcmdzLFxuICAgIGN3ZDogd29ya2luZ0RpcmVjdG9yeSxcbiAgICBzdGRpbjogdGV4dCxcbiAgfSlcbn1cbiJdfQ== \ No newline at end of file diff --git a/lib/tooltip-registry/index.js b/lib/tooltip-registry/index.js index 399670a..be484a3 100644 --- a/lib/tooltip-registry/index.js +++ b/lib/tooltip-registry/index.js @@ -12,7 +12,10 @@ class TooltipRegistry { } register(pluginName, provider) { const idx = this.providers.findIndex(({ priority }) => priority < provider.priority); - const defaultEvT = ["selection", "mouse"]; + const defaultEvT = [ + "selection", + "mouse", + ]; const record = { pluginName, eventTypes: provider.eventTypes || defaultEvT, @@ -65,6 +68,7 @@ class TooltipRegistry { controller.tooltips.hide(type, undefined, { persistent: false }); return; } + ; ({ pluginName, tooltipData } = tooltip); } const newEventRange = controller.getEventRange(type); @@ -102,7 +106,10 @@ class TooltipRegistry { return { pluginName, tooltipData }; } catch (e) { - this.pluginManager.backendStatus(pluginName, { status: 'warning', detail: `${e}` }); + this.pluginManager.backendStatus(pluginName, { + status: 'warning', + detail: `${e}`, + }); continue; } } @@ -110,4 +117,4 @@ class TooltipRegistry { } } exports.TooltipRegistry = TooltipRegistry; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHRpcC1yZWdpc3RyeS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLCtCQUFxRTtBQUNyRSxvQ0FBd0M7QUF5QnhDO0lBRUUsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDOUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUE7SUFDckIsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQTtJQUNyQixDQUFDO0lBRU0sUUFBUSxDQUFDLFVBQWtCLEVBQUUsUUFBNkI7UUFDL0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3BGLE1BQU0sVUFBVSxHQUFzQixzQkFBa0QsQ0FBQTtRQUN4RixNQUFNLE1BQU0sR0FBRztZQUNiLFVBQVU7WUFDVixVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVUsSUFBSSxVQUFVO1lBQzdDLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUTtZQUMzQixPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU87U0FDMUIsQ0FBQTtRQUNELEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUM3QixDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ3ZDLENBQUM7UUFDRCxNQUFNLENBQUMsSUFBSSxpQkFBVSxDQUFDLEdBQUcsRUFBRTtZQUN6QixNQUFN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QUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUE7Z0JBQ3hFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztvQkFDakIsUUFBUSxDQUFBO2dCQUNWLENBQUM7Z0JBQ0QsTUFBTSxDQUFDLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUFBO1lBQ3BDLENBQUM7WUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNYLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO2dCQUNuRixRQUFRLENBQUE7WUFDVixDQUFDO1FBQ0gsQ0FBQztRQUNELE1BQU0sQ0FBQyxTQUFTLENBQUE7SUFDbEIsQ0FBQztDQUNGO0FBdEdELDBDQXNHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRleHRFZGl0b3IsIERpc3Bvc2FibGUsIFJhbmdlLCBSYW5nZUNvbXBhdGlibGUgfSBmcm9tICdhdG9tJ1xuaW1wb3J0IHsgTWVzc2FnZU9iamVjdCB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgUGx1Z2luTWFuYWdlciB9IGZyb20gJy4uL3BsdWdpbi1tYW5hZ2VyJ1xuaW1wb3J0ICogYXMgVVBJIGZyb20gJ2F0b20taGFza2VsbC11cGknXG5pbXBvcnQgVEV2ZW50UmFuZ2VUeXBlID0gVVBJLlRFdmVudFJhbmdlVHlwZVxuXG5leHBvcnQgaW50ZXJmYWNlIFRUb29sdGlwSGFuZGxlclNwZWMge1xuICBwcmlvcml0eTogbnVtYmVyXG4gIGhhbmRsZXI6IFRUb29sdGlwSGFuZGxlckV4dFxuICBldmVudFR5cGVzPzogVEV2ZW50UmFuZ2VUeXBlW11cbn1cbmV4cG9ydCB0eXBlIFRUb29sdGlwSGFuZGxlckV4dCA9XG4gICAgKGVkaXRvcjogVGV4dEVkaXRvciwgY3JhbmdlOiBSYW5nZSwgdHlwZTogVEV2ZW50UmFuZ2VUeXBlKSA9PiBJVG9vbHRpcERhdGFFeHRcbiAgfCB1bmRlZmluZWRcbiAgfCBQcm9taXNlPElUb29sdGlwRGF0YUV4dCB8IHVuZGVmaW5lZD5cbmV4cG9ydCBpbnRlcmZhY2UgSVRvb2x0aXBTcGVjIHtcbiAgcGx1Z2luTmFtZTogc3RyaW5nXG4gIHRvb2x0aXA6IFRUb29sdGlwRnVuY3Rpb25FeHQgfCBJVG9vbHRpcERhdGFFeHRcbn1cbmV4cG9ydCB0eXBlIFRUb29sdGlwRnVuY3Rpb25FeHQgPSAoY3JhbmdlOiBSYW5nZSkgPT4gSVRvb2x0aXBEYXRhRXh0IHwgUHJvbWlzZTxJVG9vbHRpcERhdGFFeHQ+XG5leHBvcnQgaW50ZXJmYWNlIElUb29sdGlwRGF0YUV4dCB7XG4gIHJhbmdlOiBSYW5nZUNvbXBhdGlibGVcbiAgdGV4dDogVVBJLlRTaW5nbGVPckFycmF5PFVQSS5UTWVzc2FnZSB8IE1lc3NhZ2VPYmplY3Q+XG4gIHBlcnNpc3RlbnQ/OiBib29sZWFuXG59XG5cbmV4cG9ydCBjbGFzcyBUb29sdGlwUmVnaXN0cnkge1xuICBwcml2YXRlIHByb3ZpZGVyczogQXJyYXk8VFRvb2x0aXBIYW5kbGVyU3BlYyAmIHsgcGx1Z2luTmFtZTogc3RyaW5nLCBldmVudFR5cGVzOiBURXZlbnRSYW5nZVR5cGVbXSB9PlxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBsdWdpbk1hbmFnZXI6IFBsdWdpbk1hbmFnZXIpIHtcbiAgICB0aGlzLnByb3ZpZGVycyA9IFtdXG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZSgpIHtcbiAgICB0aGlzLnByb3ZpZGVycyA9IFtdXG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXIocGx1Z2luTmFtZTogc3RyaW5nLCBwcm92aWRlcjogVFRvb2x0aXBIYW5kbGVyU3BlYyk6IERpc3Bvc2FibGUge1xuICAgIGNvbnN0IGlkeCA9IHRoaXMucHJvdmlkZXJzLmZpbmRJbmRleCgoeyBwcmlvcml0eSB9KSA9PiBwcmlvcml0eSA8IHByb3ZpZGVyLnByaW9yaXR5KVxuICAgIGNvbnN0IGRlZmF1bHRFdlQ6IFRFdmVudFJhbmdlVHlwZVtdID0gW1RFdmVudFJhbmdlVHlwZS5zZWxlY3Rpb24sIFRFdmVudFJhbmdlVHlwZS5tb3VzZV1cbiAgICBjb25zdCByZWNvcmQgPSB7XG4gICAgICBwbHVnaW5OYW1lLFxuICAgICAgZXZlbnRUeXBlczogcHJvdmlkZXIuZXZlbnRUeXBlcyB8fCBkZWZhdWx0RXZULFxuICAgICAgcHJpb3JpdHk6IHByb3ZpZGVyLnByaW9yaXR5LFxuICAgICAgaGFuZGxlcjogcHJvdmlkZXIuaGFuZGxlcixcbiAgICB9XG4gICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgIHRoaXMucHJvdmlkZXJzLnB1c2gocmVjb3JkKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByb3ZpZGVycy5zcGxpY2UoaWR4LCAwLCByZWNvcmQpXG4gICAgfVxuICAgIHJldHVybiBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICBjb25zdCBpeCA9IHRoaXMucHJvdmlkZXJzLmluZGV4T2YocmVjb3JkKVxuICAgICAgdGhpcy5wcm92aWRlcnMuc3BsaWNlKGl4LCAxKVxuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2hvd1Rvb2x0aXAoXG4gICAgZWRpdG9yOiBUZXh0RWRpdG9yLCB0eXBlOiBURXZlbnRSYW5nZVR5cGUsIHNwZWM/OiBJVG9vbHRpcFNwZWMsXG4gICkge1xuICAgIGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLnBsdWdpbk1hbmFnZXIuY29udHJvbGxlcihlZGl0b3IpXG4gICAgaWYgKCFjb250cm9sbGVyKSB7IHJldHVybiB9XG4gICAgbGV0IHBsdWdpbk5hbWU6IHN0cmluZ1xuICAgIGxldCB0b29sdGlwRGF0YTogVFRvb2x0aXBGdW5jdGlvbkV4dCB8IElUb29sdGlwRGF0YUV4dFxuICAgIGlmIChzcGVjICYmIHR5cGVvZiBzcGVjLnRvb2x0aXAgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRvb2x0aXBEYXRhID0gc3BlYy50b29sdGlwXG4gICAgICBwbHVnaW5OYW1lID0gc3BlYy5wbHVnaW5OYW1lXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGV2ZW50UmFuZ2UgPSBjb250cm9sbGVyLmdldEV2ZW50UmFuZ2UodHlwZSlcbiAgICAgIGlmICghZXZlbnRSYW5nZSkgeyByZXR1cm4gfVxuICAgICAgaWYgKHNwZWMgJiYgdHlwZW9mIHNwZWMudG9vbHRpcCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBwbHVnaW5OYW1lID0gc3BlYy5wbHVnaW5OYW1lXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdG9vbHRpcERhdGEgPSBhd2FpdCBQcm9taXNlLnJlc29sdmUoc3BlYy50b29sdGlwKGV2ZW50UmFuZ2UuY3JhbmdlKSlcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRoaXMucGx1Z2luTWFuYWdlci5iYWNrZW5kU3RhdHVzKHNwZWMucGx1Z2luTmFtZSwge1xuICAgICAgICAgICAgc3RhdHVzOiAnd2FybmluZycsXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tdW5zYWZlLWFueVxuICAgICAgICAgICAgZGV0YWlsOiBlLnRvU3RyaW5nKCksXG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdG9vbHRpcCA9IGF3YWl0IHRoaXMuZGVmYXVsdFRvb2x0aXBGdW5jdGlvbihlZGl0b3IsIHR5cGUsIGV2ZW50UmFuZ2UuY3JhbmdlKVxuICAgICAgICBpZiAoIXRvb2x0aXApIHtcbiAgICAgICAgICAvLyBpZiBub2JvZHkgd2FudHMgdG8gc2hvdyBhbnl0aGluZywgbWlnaHQgYXMgd2VsbCBoaWRlLi4uXG4gICAgICAgICAgLy8gVE9ETzogdGhpcyBkb2Vzbid0IHNlZW0gbGlrZSBhIHBhcnRpY3VsYXJseSBicmlnaHQgaWRlYT9cbiAgICAgICAgICBjb250cm9sbGVyLnRvb2x0aXBzLmhpZGUodHlwZSwgdW5kZWZpbmVkLCB7IHBlcnNpc3RlbnQ6IGZhbHNlIH0pXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgKHsgcGx1Z2luTmFtZSwgdG9vbHRpcERhdGEgfSA9IHRvb2x0aXApXG4gICAgICB9XG4gICAgICBjb25zdCBuZXdFdmVudFJhbmdlID0gY29udHJvbGxlci5nZXRFdmVudFJhbmdlKHR5cGUpXG4gICAgICBpZiAoIW5ld0V2ZW50UmFuZ2UgfHwgIWV2ZW50UmFuZ2UuY3JhbmdlLmlzRXF1YWwobmV3RXZlbnRSYW5nZS5jcmFuZ2UpKSB7IHJldHVybiB9XG4gICAgfVxuICAgIGNvbnN0IHsgcGVyc2lzdGVudCA9IGZhbHNlIH0gPSB0b29sdGlwRGF0YVxuICAgIGxldCBtc2dcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0b29sdGlwRGF0YS50ZXh0KSkge1xuICAgICAgbXNnID0gdG9vbHRpcERhdGEudGV4dC5tYXAoTWVzc2FnZU9iamVjdC5mcm9tT2JqZWN0KVxuICAgIH0gZWxzZSB7XG4gICAgICBtc2cgPSBNZXNzYWdlT2JqZWN0LmZyb21PYmplY3QodG9vbHRpcERhdGEudGV4dClcbiAgICB9XG4gICAgY29udHJvbGxlci50b29sdGlwcy5zaG93KFxuICAgICAgUmFuZ2UuZnJvbU9iamVjdCh0b29sdGlwRGF0YS5yYW5nZSksIG1zZywgdHlwZSwgcGx1Z2luTmFtZSwgeyBwZXJzaXN0ZW50IH0sXG4gICAgKVxuICB9XG5cbiAgcHVibGljIGhpZGVUb29sdGlwKGVkaXRvcjogVGV4dEVkaXRvciwgdHlwZT86IFRFdmVudFJhbmdlVHlwZSwgc291cmNlPzogc3RyaW5nKSB7XG4gICAgY29uc3QgY29udHJvbGxlciA9IHRoaXMucGx1Z2luTWFuYWdlci5jb250cm9sbGVyKGVkaXRvcilcbiAgICBpZiAoIWNvbnRyb2xsZXIpIHsgcmV0dXJuIH1cbiAgICBjb250cm9sbGVyLnRvb2x0aXBzLmhpZGUodHlwZSwgc291cmNlKVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBkZWZhdWx0VG9vbHRpcEZ1bmN0aW9uKGVkaXRvcjogVGV4dEVkaXRvciwgdHlwZTogVEV2ZW50UmFuZ2VUeXBlLCBjcmFuZ2U6IFJhbmdlKSB7XG4gICAgZm9yIChjb25zdCB7IHBsdWdpbk5hbWUsIGhhbmRsZXIsIGV2ZW50VHlwZXMgfSBvZiB0aGlzLnByb3ZpZGVycykge1xuICAgICAgaWYgKCFldmVudFR5cGVzLmluY2x1ZGVzKHR5cGUpKSB7IGNvbnRpbnVlIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHRvb2x0aXBEYXRhID0gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKGhhbmRsZXIoZWRpdG9yLCBjcmFuZ2UsIHR5cGUpKVxuICAgICAgICBpZiAoIXRvb2x0aXBEYXRhKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBwbHVnaW5OYW1lLCB0b29sdGlwRGF0YSB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMucGx1Z2luTWFuYWdlci5iYWNrZW5kU3RhdHVzKHBsdWdpbk5hbWUsIHsgc3RhdHVzOiAnd2FybmluZycsIGRldGFpbDogYCR7ZX1gIH0pXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxufVxuIl19 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHRpcC1yZWdpc3RyeS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLCtCQUFxRTtBQUNyRSxvQ0FBd0M7QUE0QnhDO0lBSUUsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDOUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUE7SUFDckIsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQTtJQUNyQixDQUFDO0lBRU0sUUFBUSxDQUNiLFVBQWtCLEVBQ2xCLFFBQTZCO1FBRTdCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUNsQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUMvQyxDQUFBO1FBQ0QsTUFBTSxVQUFVLEdBQXNCOzs7U0FHckMsQ0FBQTtRQUNELE1BQU0sTUFBTSxHQUFHO1lBQ2IsVUFBVTtZQUNWLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVSxJQUFJLFVBQVU7WUFDN0MsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRO1lBQzNCLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTztTQUMxQixDQUFBO1FBQ0QsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzdCLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDdkMsQ0FBQztRQUNELE1BQU0sQ0FBQyxJQUFJLGlCQUFVLENBQUMsR0FBRyxFQUFFO1lBQ3pCLE1B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QUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQTtnQkFDeEUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO29CQUNqQixRQUFRLENBQUE7Z0JBQ1YsQ0FBQztnQkFDRCxNQUFNLENBQUMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUE7WUFDcEMsQ0FBQztZQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ1gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFO29CQUMzQyxNQUFNLEVBQUUsU0FBUztvQkFDakIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFO2lCQUNmLENBQUMsQ0FBQTtnQkFDRixRQUFRLENBQUE7WUFDVixDQUFDO1FBQ0gsQ0FBQztRQUNELE1BQU0sQ0FBQyxTQUFTLENBQUE7SUFDbEIsQ0FBQztDQUNGO0FBL0lELDBDQStJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRleHRFZGl0b3IsIERpc3Bvc2FibGUsIFJhbmdlLCBSYW5nZUNvbXBhdGlibGUgfSBmcm9tICdhdG9tJ1xuaW1wb3J0IHsgTWVzc2FnZU9iamVjdCB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgUGx1Z2luTWFuYWdlciB9IGZyb20gJy4uL3BsdWdpbi1tYW5hZ2VyJ1xuaW1wb3J0ICogYXMgVVBJIGZyb20gJ2F0b20taGFza2VsbC11cGknXG5pbXBvcnQgVEV2ZW50UmFuZ2VUeXBlID0gVVBJLlRFdmVudFJhbmdlVHlwZVxuXG5leHBvcnQgaW50ZXJmYWNlIFRUb29sdGlwSGFuZGxlclNwZWMge1xuICBwcmlvcml0eTogbnVtYmVyXG4gIGhhbmRsZXI6IFRUb29sdGlwSGFuZGxlckV4dFxuICBldmVudFR5cGVzPzogVEV2ZW50UmFuZ2VUeXBlW11cbn1cbmV4cG9ydCB0eXBlIFRUb29sdGlwSGFuZGxlckV4dCA9IChcbiAgZWRpdG9yOiBUZXh0RWRpdG9yLFxuICBjcmFuZ2U6IFJhbmdlLFxuICB0eXBlOiBURXZlbnRSYW5nZVR5cGUsXG4pID0+IElUb29sdGlwRGF0YUV4dCB8IHVuZGVmaW5lZCB8IFByb21pc2U8SVRvb2x0aXBEYXRhRXh0IHwgdW5kZWZpbmVkPlxuZXhwb3J0IGludGVyZmFjZSBJVG9vbHRpcFNwZWMge1xuICBwbHVnaW5OYW1lOiBzdHJpbmdcbiAgdG9vbHRpcDogVFRvb2x0aXBGdW5jdGlvbkV4dCB8IElUb29sdGlwRGF0YUV4dFxufVxuZXhwb3J0IHR5cGUgVFRvb2x0aXBGdW5jdGlvbkV4dCA9IChcbiAgY3JhbmdlOiBSYW5nZSxcbikgPT4gSVRvb2x0aXBEYXRhRXh0IHwgUHJvbWlzZTxJVG9vbHRpcERhdGFFeHQ+XG5leHBvcnQgaW50ZXJmYWNlIElUb29sdGlwRGF0YUV4dCB7XG4gIHJhbmdlOiBSYW5nZUNvbXBhdGlibGVcbiAgdGV4dDogVVBJLlRTaW5nbGVPckFycmF5PFVQSS5UTWVzc2FnZSB8IE1lc3NhZ2VPYmplY3Q+XG4gIHBlcnNpc3RlbnQ/OiBib29sZWFuXG59XG5cbmV4cG9ydCBjbGFzcyBUb29sdGlwUmVnaXN0cnkge1xuICBwcml2YXRlIHByb3ZpZGVyczogQXJyYXk8XG4gICAgVFRvb2x0aXBIYW5kbGVyU3BlYyAmIHsgcGx1Z2luTmFtZTogc3RyaW5nOyBldmVudFR5cGVzOiBURXZlbnRSYW5nZVR5cGVbXSB9XG4gID5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwbHVnaW5NYW5hZ2VyOiBQbHVnaW5NYW5hZ2VyKSB7XG4gICAgdGhpcy5wcm92aWRlcnMgPSBbXVxuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKSB7XG4gICAgdGhpcy5wcm92aWRlcnMgPSBbXVxuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyKFxuICAgIHBsdWdpbk5hbWU6IHN0cmluZyxcbiAgICBwcm92aWRlcjogVFRvb2x0aXBIYW5kbGVyU3BlYyxcbiAgKTogRGlzcG9zYWJsZSB7XG4gICAgY29uc3QgaWR4ID0gdGhpcy5wcm92aWRlcnMuZmluZEluZGV4KFxuICAgICAgKHsgcHJpb3JpdHkgfSkgPT4gcHJpb3JpdHkgPCBwcm92aWRlci5wcmlvcml0eSxcbiAgICApXG4gICAgY29uc3QgZGVmYXVsdEV2VDogVEV2ZW50UmFuZ2VUeXBlW10gPSBbXG4gICAgICBURXZlbnRSYW5nZVR5cGUuc2VsZWN0aW9uLFxuICAgICAgVEV2ZW50UmFuZ2VUeXBlLm1vdXNlLFxuICAgIF1cbiAgICBjb25zdCByZWNvcmQgPSB7XG4gICAgICBwbHVnaW5OYW1lLFxuICAgICAgZXZlbnRUeXBlczogcHJvdmlkZXIuZXZlbnRUeXBlcyB8fCBkZWZhdWx0RXZULFxuICAgICAgcHJpb3JpdHk6IHByb3ZpZGVyLnByaW9yaXR5LFxuICAgICAgaGFuZGxlcjogcHJvdmlkZXIuaGFuZGxlcixcbiAgICB9XG4gICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgIHRoaXMucHJvdmlkZXJzLnB1c2gocmVjb3JkKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByb3ZpZGVycy5zcGxpY2UoaWR4LCAwLCByZWNvcmQpXG4gICAgfVxuICAgIHJldHVybiBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICBjb25zdCBpeCA9IHRoaXMucHJvdmlkZXJzLmluZGV4T2YocmVjb3JkKVxuICAgICAgdGhpcy5wcm92aWRlcnMuc3BsaWNlKGl4LCAxKVxuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2hvd1Rvb2x0aXAoXG4gICAgZWRpdG9yOiBUZXh0RWRpdG9yLFxuICAgIHR5cGU6IFRFdmVudFJhbmdlVHlwZSxcbiAgICBzcGVjPzogSVRvb2x0aXBTcGVjLFxuICApIHtcbiAgICBjb25zdCBjb250cm9sbGVyID0gdGhpcy5wbHVnaW5NYW5hZ2VyLmNvbnRyb2xsZXIoZWRpdG9yKVxuICAgIGlmICghY29udHJvbGxlcikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGxldCBwbHVnaW5OYW1lOiBzdHJpbmdcbiAgICBsZXQgdG9vbHRpcERhdGE6IFRUb29sdGlwRnVuY3Rpb25FeHQgfCBJVG9vbHRpcERhdGFFeHRcbiAgICBpZiAoc3BlYyAmJiB0eXBlb2Ygc3BlYy50b29sdGlwICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0b29sdGlwRGF0YSA9IHNwZWMudG9vbHRpcFxuICAgICAgcGx1Z2luTmFtZSA9IHNwZWMucGx1Z2luTmFtZVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBldmVudFJhbmdlID0gY29udHJvbGxlci5nZXRFdmVudFJhbmdlKHR5cGUpXG4gICAgICBpZiAoIWV2ZW50UmFuZ2UpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoc3BlYyAmJiB0eXBlb2Ygc3BlYy50b29sdGlwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHBsdWdpbk5hbWUgPSBzcGVjLnBsdWdpbk5hbWVcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0b29sdGlwRGF0YSA9IGF3YWl0IFByb21pc2UucmVzb2x2ZShzcGVjLnRvb2x0aXAoZXZlbnRSYW5nZS5jcmFuZ2UpKVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdGhpcy5wbHVnaW5NYW5hZ2VyLmJhY2tlbmRTdGF0dXMoc3BlYy5wbHVnaW5OYW1lLCB7XG4gICAgICAgICAgICBzdGF0dXM6ICd3YXJuaW5nJyxcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby11bnNhZmUtYW55XG4gICAgICAgICAgICBkZXRhaWw6IGUudG9TdHJpbmcoKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB0b29sdGlwID0gYXdhaXQgdGhpcy5kZWZhdWx0VG9vbHRpcEZ1bmN0aW9uKFxuICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIGV2ZW50UmFuZ2UuY3JhbmdlLFxuICAgICAgICApXG4gICAgICAgIGlmICghdG9vbHRpcCkge1xuICAgICAgICAgIC8vIGlmIG5vYm9keSB3YW50cyB0byBzaG93IGFueXRoaW5nLCBtaWdodCBhcyB3ZWxsIGhpZGUuLi5cbiAgICAgICAgICAvLyBUT0RPOiB0aGlzIGRvZXNuJ3Qgc2VlbSBsaWtlIGEgcGFydGljdWxhcmx5IGJyaWdodCBpZGVhP1xuICAgICAgICAgIGNvbnRyb2xsZXIudG9vbHRpcHMuaGlkZSh0eXBlLCB1bmRlZmluZWQsIHsgcGVyc2lzdGVudDogZmFsc2UgfSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICA7KHsgcGx1Z2luTmFtZSwgdG9vbHRpcERhdGEgfSA9IHRvb2x0aXApXG4gICAgICB9XG4gICAgICBjb25zdCBuZXdFdmVudFJhbmdlID0gY29udHJvbGxlci5nZXRFdmVudFJhbmdlKHR5cGUpXG4gICAgICBpZiAoIW5ld0V2ZW50UmFuZ2UgfHwgIWV2ZW50UmFuZ2UuY3JhbmdlLmlzRXF1YWwobmV3RXZlbnRSYW5nZS5jcmFuZ2UpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB7IHBlcnNpc3RlbnQgPSBmYWxzZSB9ID0gdG9vbHRpcERhdGFcbiAgICBsZXQgbXNnXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodG9vbHRpcERhdGEudGV4dCkpIHtcbiAgICAgIG1zZyA9IHRvb2x0aXBEYXRhLnRleHQubWFwKE1lc3NhZ2VPYmplY3QuZnJvbU9iamVjdClcbiAgICB9IGVsc2Uge1xuICAgICAgbXNnID0gTWVzc2FnZU9iamVjdC5mcm9tT2JqZWN0KHRvb2x0aXBEYXRhLnRleHQpXG4gICAgfVxuICAgIGNvbnRyb2xsZXIudG9vbHRpcHMuc2hvdyhcbiAgICAgIFJhbmdlLmZyb21PYmplY3QodG9vbHRpcERhdGEucmFuZ2UpLFxuICAgICAgbXNnLFxuICAgICAgdHlwZSxcbiAgICAgIHBsdWdpbk5hbWUsXG4gICAgICB7IHBlcnNpc3RlbnQgfSxcbiAgICApXG4gIH1cblxuICBwdWJsaWMgaGlkZVRvb2x0aXAoXG4gICAgZWRpdG9yOiBUZXh0RWRpdG9yLFxuICAgIHR5cGU/OiBURXZlbnRSYW5nZVR5cGUsXG4gICAgc291cmNlPzogc3RyaW5nLFxuICApIHtcbiAgICBjb25zdCBjb250cm9sbGVyID0gdGhpcy5wbHVnaW5NYW5hZ2VyLmNvbnRyb2xsZXIoZWRpdG9yKVxuICAgIGlmICghY29udHJvbGxlcikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnRyb2xsZXIudG9vbHRpcHMuaGlkZSh0eXBlLCBzb3VyY2UpXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGRlZmF1bHRUb29sdGlwRnVuY3Rpb24oXG4gICAgZWRpdG9yOiBUZXh0RWRpdG9yLFxuICAgIHR5cGU6IFRFdmVudFJhbmdlVHlwZSxcbiAgICBjcmFuZ2U6IFJhbmdlLFxuICApIHtcbiAgICBmb3IgKGNvbnN0IHsgcGx1Z2luTmFtZSwgaGFuZGxlciwgZXZlbnRUeXBlcyB9IG9mIHRoaXMucHJvdmlkZXJzKSB7XG4gICAgICBpZiAoIWV2ZW50VHlwZXMuaW5jbHVkZXModHlwZSkpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHRvb2x0aXBEYXRhID0gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKGhhbmRsZXIoZWRpdG9yLCBjcmFuZ2UsIHR5cGUpKVxuICAgICAgICBpZiAoIXRvb2x0aXBEYXRhKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBwbHVnaW5OYW1lLCB0b29sdGlwRGF0YSB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMucGx1Z2luTWFuYWdlci5iYWNrZW5kU3RhdHVzKHBsdWdpbk5hbWUsIHtcbiAgICAgICAgICBzdGF0dXM6ICd3YXJuaW5nJyxcbiAgICAgICAgICBkZXRhaWw6IGAke2V9YCxcbiAgICAgICAgfSlcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/lib/upi-3/index.js b/lib/upi-3/index.js index fc88807..8ff1145 100644 --- a/lib/upi-3/index.js +++ b/lib/upi-3/index.js @@ -5,13 +5,15 @@ const atom_1 = require("atom"); const utils_1 = require("../utils"); tslib_1.__exportStar(require("./instance"), exports); function consume(pluginManager, options) { - const { name, menu, messageTypes, events, controls, params, tooltip } = options; + const { name, menu, messageTypes, events, controls, params, tooltip, } = options; const disp = new atom_1.CompositeDisposable(); if (menu) { - const menuDisp = atom.menu.add([{ + const menuDisp = atom.menu.add([ + { label: utils_1.MAIN_MENU_LABEL, submenu: [{ label: menu.label, submenu: menu.menu }], - }]); + }, + ]); disp.add(menuDisp); } if (messageTypes) { @@ -39,12 +41,17 @@ function consume(pluginManager, options) { handler = tooltip; } else { + ; ({ handler, priority, eventTypes } = tooltip); } if (!priority) { priority = 100; } - disp.add(pluginManager.tooltipRegistry.register(name, { priority, handler, eventTypes })); + disp.add(pluginManager.tooltipRegistry.register(name, { + priority, + handler, + eventTypes, + })); } if (controls) { for (const i of controls) { @@ -72,4 +79,4 @@ function registerEvent(cb, reg) { return reg(cb); } } -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXBpLTMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQXNEO0FBR3RELG9DQUEwQztBQUkxQyxxREFBMEI7QUFFMUIsaUJBQXdCLGFBQTRCLEVBQUUsT0FBaUM7SUFDckYsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQTtJQUMvRSxNQUFNLElBQUksR0FBRyxJQUFJLDBCQUFtQixFQUFFLENBQUE7SUFFdEMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNULE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzlCLEtBQUssRUFBRSx1QkFBZTtnQkFDdEIsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3JELENBQUMsQ0FBQyxDQUFBO1FBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNwQixDQUFDO0lBQ0QsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUVqQixHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3QyxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7WUFFL0IsYUFBYSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ2pELENBQUM7SUFDSCxDQUFDO0lBQ0QsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNY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O1FBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUNoQixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvc2l0ZURpc3Bvc2FibGUsIERpc3Bvc2FibGUgfSBmcm9tICdhdG9tJ1xuXG5pbXBvcnQgeyBQbHVnaW5NYW5hZ2VyIH0gZnJvbSAnLi4vcGx1Z2luLW1hbmFnZXInXG5pbXBvcnQgeyBNQUlOX01FTlVfTEFCRUwgfSBmcm9tICcuLi91dGlscydcbmltcG9ydCAqIGFzIFVQSSBmcm9tICdhdG9tLWhhc2tlbGwtdXBpJ1xuaW1wb3J0IFRFdmVudFJhbmdlVHlwZSA9IFVQSS5URXZlbnRSYW5nZVR5cGVcblxuZXhwb3J0ICogZnJvbSAnLi9pbnN0YW5jZSdcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnN1bWUocGx1Z2luTWFuYWdlcjogUGx1Z2luTWFuYWdlciwgb3B0aW9uczogVVBJLklSZWdpc3RyYXRpb25PcHRpb25zKTogRGlzcG9zYWJsZSB7XG4gIGNvbnN0IHsgbmFtZSwgbWVudSwgbWVzc2FnZVR5cGVzLCBldmVudHMsIGNvbnRyb2xzLCBwYXJhbXMsIHRvb2x0aXAgfSA9IG9wdGlvbnNcbiAgY29uc3QgZGlzcCA9IG5ldyBDb21wb3NpdGVEaXNwb3NhYmxlKClcblxuICBpZiAobWVudSkge1xuICAgIGNvbnN0IG1lbnVEaXNwID0gYXRvbS5tZW51LmFkZChbe1xuICAgICAgbGFiZWw6IE1BSU5fTUVOVV9MQUJFTCxcbiAgICAgIHN1Ym1lbnU6IFt7IGxhYmVsOiBtZW51LmxhYmVsLCBzdWJtZW51OiBtZW51Lm1lbnUgfV0sXG4gICAgfV0pXG4gICAgZGlzcC5hZGQobWVudURpc3ApXG4gIH1cbiAgaWYgKG1lc3NhZ2VUeXBlcykge1xuICAgIC8vIFRPRE86IG1ha2UgZGlzcG9zYWJsZVxuICAgIGZvciAoY29uc3QgdHlwZSBvZiBPYmplY3Qua2V5cyhtZXNzYWdlVHlwZXMpKSB7XG4gICAgICBjb25zdCBvcHRzID0gbWVzc2FnZVR5cGVzW3R5cGVdXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICAgIHBsdWdpbk1hbmFnZXIub3V0cHV0UGFuZWwuY3JlYXRlVGFiKHR5cGUsIG9wdHMpXG4gICAgfVxuICB9XG4gIGlmIChldmVudHMpIHtcbiAgICBpZiAoZXZlbnRzLm9uV2lsbFNhdmVCdWZmZXIpIHtcbiAgICAgIGRpc3AuYWRkKHJlZ2lzdGVyRXZlbnQoZXZlbnRzLm9uV2lsbFNhdmVCdWZmZXIsIHBsdWdpbk1hbmFnZXIub25XaWxsU2F2ZUJ1ZmZlcikpXG4gICAgfVxuICAgIGlmIChldmVudHMub25EaWRTYXZlQnVmZmVyKSB7XG4gICAgICBkaXNwLmFkZChyZWdpc3RlckV2ZW50KGV2ZW50cy5vbkRpZFNhdmVCdWZmZXIsIHBsdWdpbk1hbmFnZXIub25EaWRTYXZlQnVmZmVyKSlcbiAgICB9XG4gICAgaWYgKGV2ZW50cy5vbkRpZFN0b3BDaGFuZ2luZykge1xuICAgICAgZGlzcC5hZGQocmVnaXN0ZXJFdmVudChldmVudHMub25EaWRTdG9wQ2hhbmdpbmcsIHBsdWdpbk1hbmFnZXIub25EaWRTdG9wQ2hhbmdpbmcpKVxuICAgIH1cbiAgfVxuICBpZiAodG9vbHRpcCkge1xuICAgIGxldCBoYW5kbGVyOiBVUEkuVFRvb2x0aXBIYW5kbGVyXG4gICAgbGV0IHByaW9yaXR5OiBudW1iZXIgfCB1bmRlZmluZWRcbiAgICBsZXQgZXZlbnRUeXBlczogVEV2ZW50UmFuZ2VUeXBlW10gfCB1bmRlZmluZWRcbiAgICBpZiAodHlwZW9mIHRvb2x0aXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGhhbmRsZXIgPSB0b29sdGlwXG4gICAgfSBlbHNlIHtcbiAgICAgICh7IGhhbmRsZXIsIHByaW9yaXR5LCBldmVudFR5cGVzIH0gPSB0b29sdGlwKVxuICAgIH1cbiAgICBpZiAoIXByaW9yaXR5KSB7IHByaW9yaXR5ID0gMTAwIH1cbiAgICBkaXNwLmFkZChwbHVnaW5NYW5hZ2VyLnRvb2x0aXBSZWdpc3RyeS5yZWdpc3RlcihuYW1lLCB7IHByaW9yaXR5LCBoYW5kbGVyLCBldmVudFR5cGVzIH0pKVxuICB9XG4gIGlmIChjb250cm9scykge1xuICAgIGZvciAoY29uc3QgaSBvZiBjb250cm9scykge1xuICAgICAgZGlzcC5hZGQocGx1Z2luTWFuYWdlci5vdXRwdXRQYW5lbC5hZGRQYW5lbENvbnRyb2woaSkpXG4gICAgfVxuICB9XG4gIGlmIChwYXJhbXMpIHtcbiAgICBmb3IgKGNvbnN0IHBhcmFtTmFtZSBvZiBPYmplY3Qua2V5cyhwYXJhbXMpKSB7XG4gICAgICBjb25zdCBzcGVjID0gcGFyYW1zW3BhcmFtTmFtZV1cbiAgICAgIGRpc3AuYWRkKFxuICAgICAgICBwbHVnaW5NYW5hZ2VyLmNvbmZpZ1BhcmFtTWFuYWdlci5hZGQobmFtZSwgcGFyYW1OYW1lLCBzcGVjKSxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGlzcFxufVxuXG5mdW5jdGlvbiByZWdpc3RlckV2ZW50KFxuICBjYjogVVBJLlRTaW5nbGVPckFycmF5PFVQSS5UVGV4dEJ1ZmZlckNhbGxiYWNrPixcbiAgcmVnOiAoY2I6IFVQSS5UVGV4dEJ1ZmZlckNhbGxiYWNrKSA9PiBEaXNwb3NhYmxlLFxuKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNiKSkge1xuICAgIGNvbnN0IGRpc3AgPSBuZXcgQ29tcG9zaXRlRGlzcG9zYWJsZSgpXG4gICAgZm9yIChjb25zdCBpIG9mIGNiKSB7XG4gICAgICBkaXNwLmFkZChyZWcoaSkpXG4gICAgfVxuICAgIHJldHVybiBkaXNwXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJlZyhjYilcbiAgfVxufVxuIl19 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXBpLTMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQXNEO0FBR3RELG9DQUEwQztBQUkxQyxxREFBMEI7QUFFMUIsaUJBQ0UsYUFBNEIsRUFDNUIsT0FBaUM7SUFFakMsTUFBTSxFQUNKLElBQUksRUFDSixJQUFJLEVBQ0osWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLE9BQU8sR0FDUixHQUFHLE9BQU8sQ0FBQTtJQUNYLE1BQU0sSUFBSSxHQUFHLElBQUksMEJBQW1CLEVBQUUsQ0FBQTtJQUV0QyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ1QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDN0I7Z0JBQ0UsS0FBSyxFQUFFLHVCQUFlO2dCQUN0QixPQUFPLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDckQ7U0FDRixDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3BCLENBQUM7SUFDRCxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBRWpCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUUvQixhQUFhLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDakQsQ0FBQztJQUNILENBQUM7SUFDRCxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ1gs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LENBQUMsQ0FBQztRQUNOLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDaEIsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb3NpdGVEaXNwb3NhYmxlLCBEaXNwb3NhYmxlIH0gZnJvbSAnYXRvbSdcblxuaW1wb3J0IHsgUGx1Z2luTWFuYWdlciB9IGZyb20gJy4uL3BsdWdpbi1tYW5hZ2VyJ1xuaW1wb3J0IHsgTUFJTl9NRU5VX0xBQkVMIH0gZnJvbSAnLi4vdXRpbHMnXG5pbXBvcnQgKiBhcyBVUEkgZnJvbSAnYXRvbS1oYXNrZWxsLXVwaSdcbmltcG9ydCBURXZlbnRSYW5nZVR5cGUgPSBVUEkuVEV2ZW50UmFuZ2VUeXBlXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5zdGFuY2UnXG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdW1lKFxuICBwbHVnaW5NYW5hZ2VyOiBQbHVnaW5NYW5hZ2VyLFxuICBvcHRpb25zOiBVUEkuSVJlZ2lzdHJhdGlvbk9wdGlvbnMsXG4pOiBEaXNwb3NhYmxlIHtcbiAgY29uc3Qge1xuICAgIG5hbWUsXG4gICAgbWVudSxcbiAgICBtZXNzYWdlVHlwZXMsXG4gICAgZXZlbnRzLFxuICAgIGNvbnRyb2xzLFxuICAgIHBhcmFtcyxcbiAgICB0b29sdGlwLFxuICB9ID0gb3B0aW9uc1xuICBjb25zdCBkaXNwID0gbmV3IENvbXBvc2l0ZURpc3Bvc2FibGUoKVxuXG4gIGlmIChtZW51KSB7XG4gICAgY29uc3QgbWVudURpc3AgPSBhdG9tLm1lbnUuYWRkKFtcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6IE1BSU5fTUVOVV9MQUJFTCxcbiAgICAgICAgc3VibWVudTogW3sgbGFiZWw6IG1lbnUubGFiZWwsIHN1Ym1lbnU6IG1lbnUubWVudSB9XSxcbiAgICAgIH0sXG4gICAgXSlcbiAgICBkaXNwLmFkZChtZW51RGlzcClcbiAgfVxuICBpZiAobWVzc2FnZVR5cGVzKSB7XG4gICAgLy8gVE9ETzogbWFrZSBkaXNwb3NhYmxlXG4gICAgZm9yIChjb25zdCB0eXBlIG9mIE9iamVjdC5rZXlzKG1lc3NhZ2VUeXBlcykpIHtcbiAgICAgIGNvbnN0IG9wdHMgPSBtZXNzYWdlVHlwZXNbdHlwZV1cbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1mbG9hdGluZy1wcm9taXNlc1xuICAgICAgcGx1Z2luTWFuYWdlci5vdXRwdXRQYW5lbC5jcmVhdGVUYWIodHlwZSwgb3B0cylcbiAgICB9XG4gIH1cbiAgaWYgKGV2ZW50cykge1xuICAgIGlmIChldmVudHMub25XaWxsU2F2ZUJ1ZmZlcikge1xuICAgICAgZGlzcC5hZGQoXG4gICAgICAgIHJlZ2lzdGVyRXZlbnQoZXZlbnRzLm9uV2lsbFNhdmVCdWZmZXIsIHBsdWdpbk1hbmFnZXIub25XaWxsU2F2ZUJ1ZmZlciksXG4gICAgICApXG4gICAgfVxuICAgIGlmIChldmVudHMub25EaWRTYXZlQnVmZmVyKSB7XG4gICAgICBkaXNwLmFkZChcbiAgICAgICAgcmVnaXN0ZXJFdmVudChldmVudHMub25EaWRTYXZlQnVmZmVyLCBwbHVnaW5NYW5hZ2VyLm9uRGlkU2F2ZUJ1ZmZlciksXG4gICAgICApXG4gICAgfVxuICAgIGlmIChldmVudHMub25EaWRTdG9wQ2hhbmdpbmcpIHtcbiAgICAgIGRpc3AuYWRkKFxuICAgICAgICByZWdpc3RlckV2ZW50KFxuICAgICAgICAgIGV2ZW50cy5vbkRpZFN0b3BDaGFuZ2luZyxcbiAgICAgICAgICBwbHVnaW5NYW5hZ2VyLm9uRGlkU3RvcENoYW5naW5nLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH1cbiAgfVxuICBpZiAodG9vbHRpcCkge1xuICAgIGxldCBoYW5kbGVyOiBVUEkuVFRvb2x0aXBIYW5kbGVyXG4gICAgbGV0IHByaW9yaXR5OiBudW1iZXIgfCB1bmRlZmluZWRcbiAgICBsZXQgZXZlbnRUeXBlczogVEV2ZW50UmFuZ2VUeXBlW10gfCB1bmRlZmluZWRcbiAgICBpZiAodHlwZW9mIHRvb2x0aXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGhhbmRsZXIgPSB0b29sdGlwXG4gICAgfSBlbHNlIHtcbiAgICAgIDsoeyBoYW5kbGVyLCBwcmlvcml0eSwgZXZlbnRUeXBlcyB9ID0gdG9vbHRpcClcbiAgICB9XG4gICAgaWYgKCFwcmlvcml0eSkge1xuICAgICAgcHJpb3JpdHkgPSAxMDBcbiAgICB9XG4gICAgZGlzcC5hZGQoXG4gICAgICBwbHVnaW5NYW5hZ2VyLnRvb2x0aXBSZWdpc3RyeS5yZWdpc3RlcihuYW1lLCB7XG4gICAgICAgIHByaW9yaXR5LFxuICAgICAgICBoYW5kbGVyLFxuICAgICAgICBldmVudFR5cGVzLFxuICAgICAgfSksXG4gICAgKVxuICB9XG4gIGlmIChjb250cm9scykge1xuICAgIGZvciAoY29uc3QgaSBvZiBjb250cm9scykge1xuICAgICAgZGlzcC5hZGQocGx1Z2luTWFuYWdlci5vdXRwdXRQYW5lbC5hZGRQYW5lbENvbnRyb2woaSkpXG4gICAgfVxuICB9XG4gIGlmIChwYXJhbXMpIHtcbiAgICBmb3IgKGNvbnN0IHBhcmFtTmFtZSBvZiBPYmplY3Qua2V5cyhwYXJhbXMpKSB7XG4gICAgICBjb25zdCBzcGVjID0gcGFyYW1zW3BhcmFtTmFtZV1cbiAgICAgIGRpc3AuYWRkKHBsdWdpbk1hbmFnZXIuY29uZmlnUGFyYW1NYW5hZ2VyLmFkZChuYW1lLCBwYXJhbU5hbWUsIHNwZWMpKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkaXNwXG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyRXZlbnQoXG4gIGNiOiBVUEkuVFNpbmdsZU9yQXJyYXk8VVBJLlRUZXh0QnVmZmVyQ2FsbGJhY2s+LFxuICByZWc6IChjYjogVVBJLlRUZXh0QnVmZmVyQ2FsbGJhY2spID0+IERpc3Bvc2FibGUsXG4pIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY2IpKSB7XG4gICAgY29uc3QgZGlzcCA9IG5ldyBDb21wb3NpdGVEaXNwb3NhYmxlKClcbiAgICBmb3IgKGNvbnN0IGkgb2YgY2IpIHtcbiAgICAgIGRpc3AuYWRkKHJlZyhpKSlcbiAgICB9XG4gICAgcmV0dXJuIGRpc3BcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcmVnKGNiKVxuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/lib/upi-3/instance.js b/lib/upi-3/instance.js index 379dae4..eb61ee6 100644 --- a/lib/upi-3/instance.js +++ b/lib/upi-3/instance.js @@ -12,7 +12,8 @@ function instance(pluginManager, options) { disposables.add(_1.consume(pluginManager, options)); return { setMenu(name, menu) { - const menuDisp = atom.menu.add([{ + const menuDisp = atom.menu.add([ + { label: utils_1.MAIN_MENU_LABEL, submenu: [{ label: name, submenu: menu }], }, @@ -29,11 +30,14 @@ function instance(pluginManager, options) { async addMessageTab(name, opts) { return pluginManager.outputPanel.createTab(name, opts); }, - async showTooltip({ editor, eventType, detail, tooltip }) { + async showTooltip({ editor, eventType, detail, tooltip, }) { if (!eventType) { eventType = utils_1.getEventType(detail); } - return pluginManager.tooltipRegistry.showTooltip(editor, eventType, { pluginName, tooltip }); + return pluginManager.tooltipRegistry.showTooltip(editor, eventType, { + pluginName, + tooltip, + }); }, addPanelControl(def) { return pluginManager.outputPanel.addPanelControl(def); @@ -70,4 +74,4 @@ function instance(pluginManager, options) { }; } exports.instance = instance; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXBpLTMvaW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxvQ0FBMkU7QUFFM0UseUJBQTRCO0FBRTVCLGtDQUFpQztBQUNqQyxJQUFPLG1CQUFtQixHQUFHLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQTtBQUkxRCxrQkFDRSxhQUE0QixFQUFFLE9BQWlDO0lBRS9ELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUE7SUFDL0IsTUFBTSxXQUFXLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFBO0lBQzdDLE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtJQUNsRSxXQUFXLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFBO0lBQ2hDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBTyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBRWhELE1BQU0sQ0FBQztRQUNMLE9BQU8sQ0FBRSxJQUFZLEVBQUUsSUFBMEM7WUFDL0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDOUIsS0FBSyxFQUFFLHVCQUFlO29CQUN0QixPQUFPLEVBQUUsQ0FBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFFO2lCQUM1QzthQUNBLENBQUMsQ0FBQTtZQUNGLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDekIsTUFBTSxDQUFDLFFBQVEsQ0FBQTtRQUNqQixDQUFDO1FBQ0QsU0FBUyxDQUFFLE1BQW1CO1lBQzVCLE1BQU0sQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUN4RCxDQUFDO1FBQ0QsV0FBVyxDQUFFLFFBQTJCO1lBQ3RDLGVBQWUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDdkMsQ0FBQztRQUNELEtBQUssQ0FBQyxhQUFhLENBQUUsSUFBWSxFQUFFLElBQWdDO1lBQ2pFLE1BQU0sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDeEQsQ0FBQztRQUNELEtBQUssQ0FBQyxXQUFXLENBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQTBCO1lBQy9FLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDZixTQUFTLEdBQUcsb0JBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUNsQyxDQUFDO1lBQ0QsTUFBTSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUM5QyxNQUFNLEVBQUUsU0FBUyxFQUFFLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUMzQyxDQUFBO1FBQ0gsQ0FBQztRQUNELGVBQWUsQ0FBSyxHQUE4QjtZQUNoRCxNQUFNLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDdkQsQ0FBQztRQUNELGNBQWMsQ0FBSyxTQUFpQixFQUFFLElBQXVCO1lBQzNELE1BQU0sQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDMUUsQ0FBQztRQUNELEtBQUssQ0FBQyxjQUFjLENBQUssSUFBWTtZQUNuQyxNQUFNLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBSSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDbEUsQ0FBQztRQUNELEtBQUssQ0FBQyxvQkFBb0IsQ0FBSyxNQUFjLEVBQUUsSUFBWTtZQUN6RCxNQUFNLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBSSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDOUQsQ0FBQztRQUNELEtBQUssQ0FBQyxjQUFjLENBQUssSUFBWSxFQUFFLEtBQVM7WUFDOUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUksVUFBVSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUN6RSxDQUFDO1FBQ0QsYUFBYSxDQUFFLE1BQWtCLEVBQUUsWUFBc0M7WUFDdkUsSUFBSSxJQUFxQixDQUFBO1lBQ3pCLEVBQUUsQ0FBQyxDQUFDLHlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEMsSUFBSSxHQUFHLFlBQVksQ0FBQTtZQUNyQixDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ04sSUFBSSxHQUFHLG9CQUFZLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDbkMsQ0FBQztZQUNELE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDbkQsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUE7WUFBQyxDQUFDO1lBQ3JDLE1BQU0sQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3ZDLENBQUM7UUFDRCxPQUFPO1lBQ0wsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQ3ZCLENBQUM7S0FDRixDQUFBO0FBQ0gsQ0FBQztBQWxFRCw0QkFrRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNQUlOX01FTlVfTEFCRUwsIGdldEV2ZW50VHlwZSwgaXNURXZlbnRSYW5nZVR5cGUgfSBmcm9tICcuLi91dGlscydcbmltcG9ydCB7IFBsdWdpbk1hbmFnZXIgfSBmcm9tICcuLi9wbHVnaW4tbWFuYWdlcidcbmltcG9ydCB7IGNvbnN1bWUgfSBmcm9tICcuLydcbmltcG9ydCAqIGFzIFVQSSBmcm9tICdhdG9tLWhhc2tlbGwtdXBpJ1xuaW1wb3J0ICogYXMgQXRvbVR5cGVzIGZyb20gJ2F0b20nXG5pbXBvcnQgQ29tcG9zaXRlRGlzcG9zYWJsZSA9IEF0b21UeXBlcy5Db21wb3NpdGVEaXNwb3NhYmxlXG5pbXBvcnQgVGV4dEVkaXRvciA9IEF0b21UeXBlcy5UZXh0RWRpdG9yXG5pbXBvcnQgVEV2ZW50UmFuZ2VUeXBlID0gVVBJLlRFdmVudFJhbmdlVHlwZVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFuY2UoXG4gIHBsdWdpbk1hbmFnZXI6IFBsdWdpbk1hbmFnZXIsIG9wdGlvbnM6IFVQSS5JUmVnaXN0cmF0aW9uT3B0aW9ucyxcbik6IFVQSS5JVVBJSW5zdGFuY2Uge1xuICBjb25zdCBwbHVnaW5OYW1lID0gb3B0aW9ucy5uYW1lXG4gIGNvbnN0IGRpc3Bvc2FibGVzID0gbmV3IENvbXBvc2l0ZURpc3Bvc2FibGUoKVxuICBjb25zdCBtZXNzYWdlUHJvdmlkZXIgPSBwbHVnaW5NYW5hZ2VyLnJlc3VsdHNEQi5yZWdpc3RlclByb3ZpZGVyKClcbiAgZGlzcG9zYWJsZXMuYWRkKG1lc3NhZ2VQcm92aWRlcilcbiAgZGlzcG9zYWJsZXMuYWRkKGNvbnN1bWUocGx1Z2luTWFuYWdlciwgb3B0aW9ucykpXG5cbiAgcmV0dXJuIHtcbiAgICBzZXRNZW51IChuYW1lOiBzdHJpbmcsIG1lbnU6IFJlYWRvbmx5QXJyYXk8QXRvbVR5cGVzLk1lbnVPcHRpb25zPikge1xuICAgICAgY29uc3QgbWVudURpc3AgPSBhdG9tLm1lbnUuYWRkKFt7XG4gICAgICAgIGxhYmVsOiBNQUlOX01FTlVfTEFCRUwsXG4gICAgICAgIHN1Ym1lbnU6IFsgeyBsYWJlbDogbmFtZSwgc3VibWVudTogbWVudSB9IF0sXG4gICAgICB9LFxuICAgICAgXSlcbiAgICAgIGRpc3Bvc2FibGVzLmFkZChtZW51RGlzcClcbiAgICAgIHJldHVybiBtZW51RGlzcFxuICAgIH0sXG4gICAgc2V0U3RhdHVzIChzdGF0dXM6IFVQSS5JU3RhdHVzKSB7XG4gICAgICByZXR1cm4gcGx1Z2luTWFuYWdlci5iYWNrZW5kU3RhdHVzKHBsdWdpbk5hbWUsIHN0YXR1cylcbiAgICB9LFxuICAgIHNldE1lc3NhZ2VzIChtZXNzYWdlczogVVBJLklSZXN1bHRJdGVtW10pIHtcbiAgICAgIG1lc3NhZ2VQcm92aWRlci5zZXRNZXNzYWdlcyhtZXNzYWdlcylcbiAgICB9LFxuICAgIGFzeW5jIGFkZE1lc3NhZ2VUYWIgKG5hbWU6IHN0cmluZywgb3B0czogVVBJLklTZXZlcml0eVRhYkRlZmluaXRpb24pIHtcbiAgICAgIHJldHVybiBwbHVnaW5NYW5hZ2VyLm91dHB1dFBhbmVsLmNyZWF0ZVRhYihuYW1lLCBvcHRzKVxuICAgIH0sXG4gICAgYXN5bmMgc2hvd1Rvb2x0aXAgKHsgZWRpdG9yLCBldmVudFR5cGUsIGRldGFpbCwgdG9vbHRpcCB9OiBVUEkuSVNob3dUb29sdGlwUGFyYW1zKSB7XG4gICAgICBpZiAoIWV2ZW50VHlwZSkge1xuICAgICAgICBldmVudFR5cGUgPSBnZXRFdmVudFR5cGUoZGV0YWlsKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHBsdWdpbk1hbmFnZXIudG9vbHRpcFJlZ2lzdHJ5LnNob3dUb29sdGlwKFxuICAgICAgICBlZGl0b3IsIGV2ZW50VHlwZSwgeyBwbHVnaW5OYW1lLCB0b29sdGlwIH0sXG4gICAgICApXG4gICAgfSxcbiAgICBhZGRQYW5lbENvbnRyb2w8VD4gKGRlZjogVVBJLlRDb250cm9sRGVmaW5pdGlvbjxUPikge1xuICAgICAgcmV0dXJuIHBsdWdpbk1hbmFnZXIub3V0cHV0UGFuZWwuYWRkUGFuZWxDb250cm9sKGRlZilcbiAgICB9LFxuICAgIGFkZENvbmZpZ1BhcmFtPFQ+IChwYXJhbU5hbWU6IHN0cmluZywgc3BlYzogVVBJLklQYXJhbVNwZWM8VD4pIHtcbiAgICAgIHJldHVybiBwbHVnaW5NYW5hZ2VyLmNvbmZpZ1BhcmFtTWFuYWdlci5hZGQocGx1Z2luTmFtZSwgcGFyYW1OYW1lLCBzcGVjKVxuICAgIH0sXG4gICAgYXN5bmMgZ2V0Q29uZmlnUGFyYW08VD4gKG5hbWU6IHN0cmluZyk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgICAgcmV0dXJuIHBsdWdpbk1hbmFnZXIuY29uZmlnUGFyYW1NYW5hZ2VyLmdldDxUPihwbHVnaW5OYW1lLCBuYW1lKVxuICAgIH0sXG4gICAgYXN5bmMgZ2V0T3RoZXJzQ29uZmlnUGFyYW08VD4gKHBsdWdpbjogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICAgIHJldHVybiBwbHVnaW5NYW5hZ2VyLmNvbmZpZ1BhcmFtTWFuYWdlci5nZXQ8VD4ocGx1Z2luLCBuYW1lKVxuICAgIH0sXG4gICAgYXN5bmMgc2V0Q29uZmlnUGFyYW08VD4gKG5hbWU6IHN0cmluZywgdmFsdWU/OiBUKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgICByZXR1cm4gcGx1Z2luTWFuYWdlci5jb25maWdQYXJhbU1hbmFnZXIuc2V0PFQ+KHBsdWdpbk5hbWUsIG5hbWUsIHZhbHVlKVxuICAgIH0sXG4gICAgZ2V0RXZlbnRSYW5nZSAoZWRpdG9yOiBUZXh0RWRpdG9yLCB0eXBlT3JEZXRhaWw6IFRFdmVudFJhbmdlVHlwZSB8IE9iamVjdCkge1xuICAgICAgbGV0IHR5cGU6IFRFdmVudFJhbmdlVHlwZVxuICAgICAgaWYgKGlzVEV2ZW50UmFuZ2VUeXBlKHR5cGVPckRldGFpbCkpIHtcbiAgICAgICAgdHlwZSA9IHR5cGVPckRldGFpbFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHlwZSA9IGdldEV2ZW50VHlwZSh0eXBlT3JEZXRhaWwpXG4gICAgICB9XG4gICAgICBjb25zdCBjb250cm9sbGVyID0gcGx1Z2luTWFuYWdlci5jb250cm9sbGVyKGVkaXRvcilcbiAgICAgIGlmICghY29udHJvbGxlcikgeyByZXR1cm4gdW5kZWZpbmVkIH1cbiAgICAgIHJldHVybiBjb250cm9sbGVyLmdldEV2ZW50UmFuZ2UodHlwZSlcbiAgICB9LFxuICAgIGRpc3Bvc2UgKCkge1xuICAgICAgZGlzcG9zYWJsZXMuZGlzcG9zZSgpXG4gICAgfSxcbiAgfVxufVxuIl19 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXBpLTMvaW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxvQ0FBMkU7QUFFM0UseUJBQTRCO0FBRTVCLGtDQUFpQztBQUNqQyxJQUFPLG1CQUFtQixHQUFHLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQTtBQUkxRCxrQkFDRSxhQUE0QixFQUM1QixPQUFpQztJQUVqQyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFBO0lBQy9CLE1BQU0sV0FBVyxHQUFHLElBQUksbUJBQW1CLEVBQUUsQ0FBQTtJQUM3QyxNQUFNLGVBQWUsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLENBQUE7SUFDbEUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUNoQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQU8sQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUVoRCxNQUFNLENBQUM7UUFDTCxPQUFPLENBQUMsSUFBWSxFQUFFLElBQTBDO1lBQzlELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUM3QjtvQkFDRSxLQUFLLEVBQUUsdUJBQWU7b0JBQ3RCLE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7aUJBQzFDO2FBQ0YsQ0FBQyxDQUFBO1lBQ0YsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUN6QixNQUFNLENBQUMsUUFBUSxDQUFBO1FBQ2pCLENBQUM7UUFDRCxTQUFTLENBQUMsTUFBbUI7WUFDM0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ3hELENBQUM7UUFDRCxXQUFXLENBQUMsUUFBMkI7WUFDckMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUN2QyxDQUFDO1FBQ0QsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFZLEVBQUUsSUFBZ0M7WUFDaEUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN4RCxDQUFDO1FBQ0QsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUNoQixNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixPQUFPLEdBQ2dCO1lBQ3ZCLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDZixTQUFTLEdBQUcsb0JBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUNsQyxDQUFDO1lBQ0QsTUFBTSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUU7Z0JBQ2xFLFVBQVU7Z0JBQ1YsT0FBTzthQUNSLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFDRCxlQUFlLENBQUksR0FBOEI7WUFDL0MsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3ZELENBQUM7UUFDRCxjQUFjLENBQUksU0FBaUIsRUFBRSxJQUF1QjtZQUMxRCxNQUFNLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQzFFLENBQUM7UUFDRCxLQUFLLENBQUMsY0FBYyxDQUFJLElBQVk7WUFDbEMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUksVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ2xFLENBQUM7UUFDRCxLQUFLLENBQUMsb0JBQW9CLENBQ3hCLE1BQWMsRUFDZCxJQUFZO1lBRVosTUFBTSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUksTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQzlELENBQUM7UUFDRCxLQUFLLENBQUMsY0FBYyxDQUFJLElBQVksRUFBRSxLQUFTO1lBQzdDLE1BQU0sQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFJLFVBQVUsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDekUsQ0FBQztRQUNELGFBQWEsQ0FBQyxNQUFrQixFQUFFLFlBQXNDO1lBQ3RFLElBQUksSUFBcUIsQ0FBQTtZQUN6QixFQUFFLENBQUMsQ0FBQyx5QkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BDLElBQUksR0FBRyxZQUFZLENBQUE7WUFDckIsQ0FBQztZQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNOLElBQUksR0FBRyxvQkFBWSxDQUFDLFlBQVksQ0FBQyxDQUFBO1lBQ25DLENBQUM7WUFDRCxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ25ELEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDaEIsTUFBTSxDQUFDLFNBQVMsQ0FBQTtZQUNsQixDQUFDO1lBQ0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDdkMsQ0FBQztRQUNELE9BQU87WUFDTCxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDdkIsQ0FBQztLQUNGLENBQUE7QUFDSCxDQUFDO0FBL0VELDRCQStFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1BSU5fTUVOVV9MQUJFTCwgZ2V0RXZlbnRUeXBlLCBpc1RFdmVudFJhbmdlVHlwZSB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgUGx1Z2luTWFuYWdlciB9IGZyb20gJy4uL3BsdWdpbi1tYW5hZ2VyJ1xuaW1wb3J0IHsgY29uc3VtZSB9IGZyb20gJy4vJ1xuaW1wb3J0ICogYXMgVVBJIGZyb20gJ2F0b20taGFza2VsbC11cGknXG5pbXBvcnQgKiBhcyBBdG9tVHlwZXMgZnJvbSAnYXRvbSdcbmltcG9ydCBDb21wb3NpdGVEaXNwb3NhYmxlID0gQXRvbVR5cGVzLkNvbXBvc2l0ZURpc3Bvc2FibGVcbmltcG9ydCBUZXh0RWRpdG9yID0gQXRvbVR5cGVzLlRleHRFZGl0b3JcbmltcG9ydCBURXZlbnRSYW5nZVR5cGUgPSBVUEkuVEV2ZW50UmFuZ2VUeXBlXG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW5jZShcbiAgcGx1Z2luTWFuYWdlcjogUGx1Z2luTWFuYWdlcixcbiAgb3B0aW9uczogVVBJLklSZWdpc3RyYXRpb25PcHRpb25zLFxuKTogVVBJLklVUElJbnN0YW5jZSB7XG4gIGNvbnN0IHBsdWdpbk5hbWUgPSBvcHRpb25zLm5hbWVcbiAgY29uc3QgZGlzcG9zYWJsZXMgPSBuZXcgQ29tcG9zaXRlRGlzcG9zYWJsZSgpXG4gIGNvbnN0IG1lc3NhZ2VQcm92aWRlciA9IHBsdWdpbk1hbmFnZXIucmVzdWx0c0RCLnJlZ2lzdGVyUHJvdmlkZXIoKVxuICBkaXNwb3NhYmxlcy5hZGQobWVzc2FnZVByb3ZpZGVyKVxuICBkaXNwb3NhYmxlcy5hZGQoY29uc3VtZShwbHVnaW5NYW5hZ2VyLCBvcHRpb25zKSlcblxuICByZXR1cm4ge1xuICAgIHNldE1lbnUobmFtZTogc3RyaW5nLCBtZW51OiBSZWFkb25seUFycmF5PEF0b21UeXBlcy5NZW51T3B0aW9ucz4pIHtcbiAgICAgIGNvbnN0IG1lbnVEaXNwID0gYXRvbS5tZW51LmFkZChbXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogTUFJTl9NRU5VX0xBQkVMLFxuICAgICAgICAgIHN1Ym1lbnU6IFt7IGxhYmVsOiBuYW1lLCBzdWJtZW51OiBtZW51IH1dLFxuICAgICAgICB9LFxuICAgICAgXSlcbiAgICAgIGRpc3Bvc2FibGVzLmFkZChtZW51RGlzcClcbiAgICAgIHJldHVybiBtZW51RGlzcFxuICAgIH0sXG4gICAgc2V0U3RhdHVzKHN0YXR1czogVVBJLklTdGF0dXMpIHtcbiAgICAgIHJldHVybiBwbHVnaW5NYW5hZ2VyLmJhY2tlbmRTdGF0dXMocGx1Z2luTmFtZSwgc3RhdHVzKVxuICAgIH0sXG4gICAgc2V0TWVzc2FnZXMobWVzc2FnZXM6IFVQSS5JUmVzdWx0SXRlbVtdKSB7XG4gICAgICBtZXNzYWdlUHJvdmlkZXIuc2V0TWVzc2FnZXMobWVzc2FnZXMpXG4gICAgfSxcbiAgICBhc3luYyBhZGRNZXNzYWdlVGFiKG5hbWU6IHN0cmluZywgb3B0czogVVBJLklTZXZlcml0eVRhYkRlZmluaXRpb24pIHtcbiAgICAgIHJldHVybiBwbHVnaW5NYW5hZ2VyLm91dHB1dFBhbmVsLmNyZWF0ZVRhYihuYW1lLCBvcHRzKVxuICAgIH0sXG4gICAgYXN5bmMgc2hvd1Rvb2x0aXAoe1xuICAgICAgZWRpdG9yLFxuICAgICAgZXZlbnRUeXBlLFxuICAgICAgZGV0YWlsLFxuICAgICAgdG9vbHRpcCxcbiAgICB9OiBVUEkuSVNob3dUb29sdGlwUGFyYW1zKSB7XG4gICAgICBpZiAoIWV2ZW50VHlwZSkge1xuICAgICAgICBldmVudFR5cGUgPSBnZXRFdmVudFR5cGUoZGV0YWlsKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHBsdWdpbk1hbmFnZXIudG9vbHRpcFJlZ2lzdHJ5LnNob3dUb29sdGlwKGVkaXRvciwgZXZlbnRUeXBlLCB7XG4gICAgICAgIHBsdWdpbk5hbWUsXG4gICAgICAgIHRvb2x0aXAsXG4gICAgICB9KVxuICAgIH0sXG4gICAgYWRkUGFuZWxDb250cm9sPFQ+KGRlZjogVVBJLlRDb250cm9sRGVmaW5pdGlvbjxUPikge1xuICAgICAgcmV0dXJuIHBsdWdpbk1hbmFnZXIub3V0cHV0UGFuZWwuYWRkUGFuZWxDb250cm9sKGRlZilcbiAgICB9LFxuICAgIGFkZENvbmZpZ1BhcmFtPFQ+KHBhcmFtTmFtZTogc3RyaW5nLCBzcGVjOiBVUEkuSVBhcmFtU3BlYzxUPikge1xuICAgICAgcmV0dXJuIHBsdWdpbk1hbmFnZXIuY29uZmlnUGFyYW1NYW5hZ2VyLmFkZChwbHVnaW5OYW1lLCBwYXJhbU5hbWUsIHNwZWMpXG4gICAgfSxcbiAgICBhc3luYyBnZXRDb25maWdQYXJhbTxUPihuYW1lOiBzdHJpbmcpOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICAgIHJldHVybiBwbHVnaW5NYW5hZ2VyLmNvbmZpZ1BhcmFtTWFuYWdlci5nZXQ8VD4ocGx1Z2luTmFtZSwgbmFtZSlcbiAgICB9LFxuICAgIGFzeW5jIGdldE90aGVyc0NvbmZpZ1BhcmFtPFQ+KFxuICAgICAgcGx1Z2luOiBzdHJpbmcsXG4gICAgICBuYW1lOiBzdHJpbmcsXG4gICAgKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgICByZXR1cm4gcGx1Z2luTWFuYWdlci5jb25maWdQYXJhbU1hbmFnZXIuZ2V0PFQ+KHBsdWdpbiwgbmFtZSlcbiAgICB9LFxuICAgIGFzeW5jIHNldENvbmZpZ1BhcmFtPFQ+KG5hbWU6IHN0cmluZywgdmFsdWU/OiBUKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgICByZXR1cm4gcGx1Z2luTWFuYWdlci5jb25maWdQYXJhbU1hbmFnZXIuc2V0PFQ+KHBsdWdpbk5hbWUsIG5hbWUsIHZhbHVlKVxuICAgIH0sXG4gICAgZ2V0RXZlbnRSYW5nZShlZGl0b3I6IFRleHRFZGl0b3IsIHR5cGVPckRldGFpbDogVEV2ZW50UmFuZ2VUeXBlIHwgT2JqZWN0KSB7XG4gICAgICBsZXQgdHlwZTogVEV2ZW50UmFuZ2VUeXBlXG4gICAgICBpZiAoaXNURXZlbnRSYW5nZVR5cGUodHlwZU9yRGV0YWlsKSkge1xuICAgICAgICB0eXBlID0gdHlwZU9yRGV0YWlsXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0eXBlID0gZ2V0RXZlbnRUeXBlKHR5cGVPckRldGFpbClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBwbHVnaW5NYW5hZ2VyLmNvbnRyb2xsZXIoZWRpdG9yKVxuICAgICAgaWYgKCFjb250cm9sbGVyKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb250cm9sbGVyLmdldEV2ZW50UmFuZ2UodHlwZSlcbiAgICB9LFxuICAgIGRpc3Bvc2UoKSB7XG4gICAgICBkaXNwb3NhYmxlcy5kaXNwb3NlKClcbiAgICB9LFxuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/package.json b/package.json index 925f873..8528c91 100644 --- a/package.json +++ b/package.json @@ -3,24 +3,20 @@ "main": "./lib/ide-haskell", "version": "2.2.2", "description": "Haskell IDE", - "keywords": [ - "ide-haskell", - "ide", - "haskell" - ], + "keywords": ["ide-haskell", "ide", "haskell"], "repository": "https://github.com/atom-haskell/ide-haskell", "license": "MIT", - "activationHooks": [ - "language-haskell:grammar-used" - ], + "activationHooks": ["language-haskell:grammar-used"], "engines": { "atom": ">=1.23.0 <2.0.0" }, "scripts": { - "typecheck": "tsc --noEmit -p . && tsc --noEmit -p ./spec", - "lint": "tslint --project . && tslint --project ./spec", - "test": "npm run typecheck && npm run lint" "build": "tsc -p .", + "prettier": "prettier --write 'src/**/*.ts' 'spec/**/*.ts'", + "prettier-check": "prettier -l 'src/**/*.ts' 'spec/**/*.ts'", + "typecheck": "tsc --noEmit -p . && tsc --noEmit -p spec", + "lint": "tslint --project . && tslint --project spec", + "test": "npm run typecheck && npm run lint && npm run prettier-check" }, "atomTestRunner": "./spec/runner.js", "providedServices": { @@ -59,17 +55,18 @@ "tslib": "^1.8.1" }, "devDependencies": { - "@types/atom": "^1.23.0", - "@types/chai": "^4.0.10", - "@types/mocha": "^2.2.45", - "@types/node": "^8.5.2", + "@types/atom": "^1.23.1", + "@types/chai": "^4.1.0", + "@types/mocha": "^2.2.46", + "@types/node": "^9.3.0", "@types/temp": "^0.8.31", - "atom-haskell-tslint-rules": "^0.1.1", + "atom-haskell-tslint-rules": "^0.1.3", "atom-mocha-test-runner": "^1.2.0", "chai": "^4.1.2", "mocha": "^4.1.0", + "prettier": "^1.10.2", "ts-node": "^4.1.0", - "tslint": "^5.8.0", + "tslint": "^5.9.1", "typedoc": "^0.9.0", "typescript": "~2.6.2" }, diff --git a/spec/package.spec.ts b/spec/package.spec.ts index 8906b97..2c91b7d 100644 --- a/spec/package.spec.ts +++ b/spec/package.spec.ts @@ -3,7 +3,7 @@ import { join } from 'path' const pkg = join(__dirname, '..') -describe('package', function () { +describe('package', function() { this.timeout(60000) it('should activate', async () => { const packages: any = atom.packages diff --git a/src/check-results-provider/editor-control.ts b/src/check-results-provider/editor-control.ts index 2875cc4..75812db 100644 --- a/src/check-results-provider/editor-control.ts +++ b/src/check-results-provider/editor-control.ts @@ -1,5 +1,10 @@ import { - Range, TextEditor, Point, CompositeDisposable, Gutter, DisplayMarker, + Range, + TextEditor, + Point, + CompositeDisposable, + Gutter, + DisplayMarker, DisplayMarkerLayer, } from 'atom' import * as UPI from 'atom-haskell-upi' @@ -71,25 +76,32 @@ export class CREditorControl implements IEditorController { const markers = this.find(pos, type) const result: MessageObject[] = [] for (const marker of markers) { - if (!marker.isValid()) { continue } + if (!marker.isValid()) { + continue + } const res = this.markerProps.get(marker) - if (!res) { continue } + if (!res) { + continue + } result.push(res.message) } return result } private registerGutterEvents() { - this.disposables.add(listen( - this.gutterElement, 'mouseover', '.decoration', - (e) => { - const bufferPt = bufferPositionFromMouseEvent(this.editor, e as MouseEvent) + this.disposables.add( + listen(this.gutterElement, 'mouseover', '.decoration', (e) => { + const bufferPt = bufferPositionFromMouseEvent( + this.editor, + e as MouseEvent, + ) if (bufferPt) { const msg = this.getMessageAt(bufferPt, 'gutter') if (msg.length > 0) { // tslint:disable-next-line:no-floating-promises this.tooltipRegistry.showTooltip( - this.editor, TEventRangeType.mouse, + this.editor, + TEventRangeType.mouse, { pluginName: 'builtin:check-results', tooltip: { @@ -100,27 +112,39 @@ export class CREditorControl implements IEditorController { ) } } - }, - )) - this.disposables.add(listen( - this.gutterElement, 'mouseout', '.decoration', () => - this.tooltipRegistry.hideTooltip(this.editor, TEventRangeType.mouse, 'builtin:check-results'), - )) + }), + ) + this.disposables.add( + listen(this.gutterElement, 'mouseout', '.decoration', () => + this.tooltipRegistry.hideTooltip( + this.editor, + TEventRangeType.mouse, + 'builtin:check-results', + ), + ), + ) } private updateResults = () => { this.markers.clear() const path = this.editor.getPath() - for (const r of this.resultsDB.filter((m) => m.uri === path && m.isValid())) { + for (const r of this.resultsDB.filter( + (m) => m.uri === path && m.isValid(), + )) { this.markerFromCheckResult(r) } } private markerFromCheckResult(resItem: ResultItem) { const { position } = resItem - if (!position) { return } + if (!position) { + return + } - const range = new Range(position, Point.fromObject([position.row, position.column + 1])) + const range = new Range( + position, + Point.fromObject([position.row, position.column + 1]), + ) const marker = this.markers.markBufferRange(range, { invalidate: 'inside' }) this.markerProps.set(marker, resItem) const disp = new CompositeDisposable() @@ -153,7 +177,8 @@ export class CREditorControl implements IEditorController { return this.markers.findMarkers({ startBufferPosition: pos }) case 'mouse': return this.markers.findMarkers({ containsBufferPosition: pos }) - default: throw new TypeError('Switch assertion failed') + default: + throw new TypeError('Switch assertion failed') } } } diff --git a/src/check-results-provider/index.ts b/src/check-results-provider/index.ts index cd3e1a6..4fb2544 100644 --- a/src/check-results-provider/index.ts +++ b/src/check-results-provider/index.ts @@ -1,6 +1,4 @@ -import { - Range, TextEditor, CompositeDisposable, -} from 'atom' +import { Range, TextEditor, CompositeDisposable } from 'atom' import * as UPI from 'atom-haskell-upi' import TEventRangeType = UPI.TEventRangeType @@ -28,14 +26,24 @@ export class CheckResultsProvider { this.disposables.dispose() } - private tooltipProvider = (editor: TextEditor, crange: Range, type: TEventRangeType): ITooltipDataExt | undefined => { - const controller - = this.pluginManager.controllerType( - CREditorControl, editor, - ) - if (!controller) { return undefined } - if (type === TEventRangeType.keyboard - && atom.config.get('ide-haskell.onCursorMove', { scope: editor.getRootScopeDescriptor() }) !== 'Show Tooltip') { + private tooltipProvider = ( + editor: TextEditor, + crange: Range, + type: TEventRangeType, + ): ITooltipDataExt | undefined => { + const controller = this.pluginManager.controllerType< + CREditorControl, + typeof CREditorControl + >(CREditorControl, editor) + if (!controller) { + return undefined + } + if ( + type === TEventRangeType.keyboard && + atom.config.get('ide-haskell.onCursorMove', { + scope: editor.getRootScopeDescriptor(), + }) !== 'Show Tooltip' + ) { return undefined } const msg = controller.getMessageAt(crange.start, type) diff --git a/src/config-params/index.ts b/src/config-params/index.ts index 9e3cbcb..0d30a3e 100644 --- a/src/config-params/index.ts +++ b/src/config-params/index.ts @@ -22,7 +22,11 @@ export class ConfigParamManager { return this.store.serialize() } - public add(pluginName: string, paramName: string, spec: UPI.IParamSpec) { + public add( + pluginName: string, + paramName: string, + spec: UPI.IParamSpec, + ) { const disp = new CompositeDisposable() disp.add( this.store.addParamSpec(pluginName, paramName, spec), diff --git a/src/config-params/param-select-view.ts b/src/config-params/param-select-view.ts index 2cda79d..50e9744 100644 --- a/src/config-params/param-select-view.ts +++ b/src/config-params/param-select-view.ts @@ -9,9 +9,13 @@ export interface ISelectListParams { activeItem?: T } -export async function selectListView( - { items, heading, itemTemplate, itemFilterKey, activeItem }: ISelectListParams, -): Promise { +export async function selectListView({ + items, + heading, + itemTemplate, + itemFilterKey, + activeItem, +}: ISelectListParams): Promise { const elementForItem = (item: T) => { const li = document.createElement('li') const div = document.createElement('div') diff --git a/src/config-params/param-store.ts b/src/config-params/param-store.ts index 328ce41..67f7d16 100644 --- a/src/config-params/param-store.ts +++ b/src/config-params/param-store.ts @@ -11,14 +11,21 @@ export interface IState { [pluginNameParamName: string]: Object } -interface TUpdatedCallbackArg { pluginName: string, paramName: string, value: T | undefined } +interface TUpdatedCallbackArg { + pluginName: string + paramName: string + value: T | undefined +} export type TUpdatedCallback = (arg: TUpdatedCallbackArg) => void export class ConfigParamStore { private disposables: CompositeDisposable - private emitter: Emitter<{}, { - 'did-update': { pluginName: string, paramName: string, value: any } - }> + private emitter: Emitter< + {}, + { + 'did-update': { pluginName: string; paramName: string; value: any } + } + > private saved: IState private plugins: Map>> constructor(state: IState = {}) { @@ -37,7 +44,11 @@ export class ConfigParamStore { this.disposables.dispose() } - public onDidUpdate(pluginName: string, paramName: string, callback: TUpdatedCallback) { + public onDidUpdate( + pluginName: string, + paramName: string, + callback: TUpdatedCallback, + ) { return this.emitter.on('did-update', (val) => { if (val.pluginName === pluginName && val.paramName === paramName) { callback(val) @@ -45,7 +56,11 @@ export class ConfigParamStore { }) } - public addParamSpec(pluginName: string, paramName: string, spec: UPI.IParamSpec) { + public addParamSpec( + pluginName: string, + paramName: string, + spec: UPI.IParamSpec, + ) { let pluginConfig = this.plugins.get(pluginName) if (!pluginConfig) { pluginConfig = new Map() @@ -55,7 +70,9 @@ export class ConfigParamStore { throw new Error(`Parameter ${pluginName}.${paramName} already defined!`) } let value: T | undefined = this.saved[`${pluginName}.${paramName}`] as T - if (value === undefined) { value = spec.default } + if (value === undefined) { + value = spec.default + } pluginConfig.set(paramName, { spec, value }) this.emitter.emit('did-update', { pluginName, paramName, value }) return new Disposable(() => { @@ -68,10 +85,20 @@ export class ConfigParamStore { }) } - public async setValue(pluginName: string, paramName: string, value?: T): Promise { - const paramConfig = await this.getParamConfig(pluginName, paramName, 'set') + public async setValue( + pluginName: string, + paramName: string, + value?: T, + ): Promise { + const paramConfig = await this.getParamConfig( + pluginName, + paramName, + 'set', + ) if (paramConfig === undefined) return undefined - if (value === undefined) { value = await this.showSelect(paramConfig) } + if (value === undefined) { + value = await this.showSelect(paramConfig) + } if (value !== undefined) { paramConfig.value = value this.saved[`${pluginName}.${paramName}`] = value @@ -80,22 +107,46 @@ export class ConfigParamStore { return value } - public async getValue(pluginName: string, paramName: string): Promise { - const paramConfig = await this.getParamConfig(pluginName, paramName, 'get') + public async getValue( + pluginName: string, + paramName: string, + ): Promise { + const paramConfig = await this.getParamConfig( + pluginName, + paramName, + 'get', + ) if (paramConfig === undefined) return undefined - if (paramConfig.value === undefined) { await this.setValue(pluginName, paramName) } + if (paramConfig.value === undefined) { + await this.setValue(pluginName, paramName) + } return paramConfig.value } - public async getValueRaw(pluginName: string, paramName: string): Promise { - const paramConfig = await this.getParamConfig(pluginName, paramName, 'get raw') + public async getValueRaw( + pluginName: string, + paramName: string, + ): Promise { + const paramConfig = await this.getParamConfig( + pluginName, + paramName, + 'get raw', + ) if (paramConfig === undefined) return undefined return paramConfig.value } - private async getParamConfig(pluginName: string, paramName: string, reason: string): Promise | undefined> { + private async getParamConfig( + pluginName: string, + paramName: string, + reason: string, + ): Promise | undefined> { if (!atom.packages.isPackageLoaded(pluginName)) { - console.error(new Error(`No ${pluginName} package while trying to ${reason} ${pluginName}.${paramName}`)) + console.error( + new Error( + `No ${pluginName} package while trying to ${reason} ${pluginName}.${paramName}`, + ), + ) return undefined } if (!atom.packages.isPackageActive(pluginName)) { @@ -103,11 +154,15 @@ export class ConfigParamStore { } const pluginConfig = this.plugins.get(pluginName) if (!pluginConfig) { - throw new Error(`${pluginName} is not defined while trying to ${reason} ${pluginName}.${paramName}`) + throw new Error( + `${pluginName} is not defined while trying to ${reason} ${pluginName}.${paramName}`, + ) } const paramConfig = pluginConfig.get(paramName) if (!paramConfig) { - throw new Error(`${paramName} is not defined while trying to ${reason} ${pluginName}.${paramName}`) + throw new Error( + `${paramName} is not defined while trying to ${reason} ${pluginName}.${paramName}`, + ) } return paramConfig } @@ -115,7 +170,7 @@ export class ConfigParamStore { private async showSelect(param: IParamData): Promise { const spec = param.spec return selectListView({ - items: (typeof spec.items === 'function') ? spec.items() : spec.items, + items: typeof spec.items === 'function' ? spec.items() : spec.items, heading: spec.description, itemTemplate: spec.itemTemplate.bind(spec), itemFilterKey: spec.itemFilterKey, diff --git a/src/editor-control/event-table.ts b/src/editor-control/event-table.ts index 802baed..1ed7f5e 100644 --- a/src/editor-control/event-table.ts +++ b/src/editor-control/event-table.ts @@ -3,13 +3,11 @@ import { eventRangeTypeVals } from '../utils' import * as UPI from 'atom-haskell-upi' import TEventRangeType = UPI.TEventRangeType -export type IMarkerGroup = Array<{ type: TEventRangeType, source?: string }> +export type IMarkerGroup = Array<{ type: TEventRangeType; source?: string }> export type TTableCell = Map -export type TTable = { - [K in TEventRangeType]: TTableCell -} +export type TTable = { [K in TEventRangeType]: TTableCell } export class EventTable { private table: TTable @@ -25,7 +23,7 @@ export class EventTable { const layer = this.editor.addMarkerLayer() this.layers.add(layer) for (const { type, source } of i) { - (this.table[type] as TTableCell).set(source, layer) + ;(this.table[type] as TTableCell).set(source, layer) } } } @@ -65,13 +63,13 @@ export class EventTable { return count } - public * values() { + public *values() { for (const i of eventRangeTypeVals) { yield this.table[i] as TTableCell } } - public * entries() { + public *entries() { for (const i of eventRangeTypeVals) { yield [i, this.table[i]] } diff --git a/src/editor-control/index.ts b/src/editor-control/index.ts index fc9367f..50bf29e 100644 --- a/src/editor-control/index.ts +++ b/src/editor-control/index.ts @@ -1,18 +1,14 @@ -import { - Range, TextEditor, Point, CompositeDisposable, - Disposable, -} from 'atom' -import { - bufferPositionFromMouseEvent, - listen, -} from '../utils' +import { Range, TextEditor, Point, CompositeDisposable, Disposable } from 'atom' +import { bufferPositionFromMouseEvent, listen } from '../utils' import { TooltipManager } from './tooltip-manager' import { TooltipRegistry } from '../tooltip-registry' import { PluginManager, IEditorController } from '../plugin-manager' import * as UPI from 'atom-haskell-upi' import TEventRangeType = UPI.TEventRangeType -export type TEventRangeResult = { crange: Range, pos: Point, eventType: TEventRangeType } | undefined +export type TEventRangeResult = + | { crange: Range; pos: Point; eventType: TEventRangeType } + | undefined export class EditorControl implements IEditorController { public tooltips: TooltipManager @@ -23,8 +19,13 @@ export class EditorControl implements IEditorController { private editorElement: HTMLElement & { onDidChangeScrollTop(a: () => void): Disposable onDidChangeScrollLeft(a: () => void): Disposable - pixelRectForScreenRange(r: Range): { - left: number, top: number, width: number, height: number + pixelRectForScreenRange( + r: Range, + ): { + left: number + top: number + width: number + height: number } } private tooltipRegistry: TooltipRegistry @@ -42,12 +43,28 @@ export class EditorControl implements IEditorController { // buffer events for automatic check buffer.onWillSave(() => pluginManager.willSaveBuffer(buffer)), buffer.onDidSave(() => pluginManager.didSaveBuffer(buffer)), - this.editor.onDidStopChanging(() => pluginManager.didStopChanging(buffer)), + this.editor.onDidStopChanging(() => + pluginManager.didStopChanging(buffer), + ), // tooltip tracking (mouse and selection) - this.editorElement.onDidChangeScrollLeft(() => this.tooltips.hide(TEventRangeType.mouse)), - this.editorElement.onDidChangeScrollTop(() => this.tooltips.hide(TEventRangeType.mouse)), - listen(this.editorElement, 'mousemove', '.scroll-view', this.trackMouseBufferPosition), - listen(this.editorElement, 'mouseout', '.scroll-view', this.stopTrackingMouseBufferPosition), + this.editorElement.onDidChangeScrollLeft(() => + this.tooltips.hide(TEventRangeType.mouse), + ), + this.editorElement.onDidChangeScrollTop(() => + this.tooltips.hide(TEventRangeType.mouse), + ), + listen( + this.editorElement, + 'mousemove', + '.scroll-view', + this.trackMouseBufferPosition, + ), + listen( + this.editorElement, + 'mouseout', + '.scroll-view', + this.stopTrackingMouseBufferPosition, + ), this.editor.onDidChangeSelectionRange(this.trackSelection), ) } @@ -74,9 +91,7 @@ export class EditorControl implements IEditorController { this.lastMouseBufferPt = undefined } - public getEventRange( - eventType: TEventRangeType, - ): TEventRangeResult { + public getEventRange(eventType: TEventRangeType): TEventRangeResult { let crange: Range let pos: Point switch (eventType) { @@ -84,7 +99,8 @@ export class EditorControl implements IEditorController { case 'context': if (!this.lastMouseBufferPt) return undefined pos = this.lastMouseBufferPt - const [selRange] = this.editor.getSelections() + const [selRange] = this.editor + .getSelections() .map((sel) => sel.getBufferRange()) .filter((sel) => sel.containsPoint(pos)) crange = selRange || new Range(pos, pos) @@ -94,16 +110,19 @@ export class EditorControl implements IEditorController { crange = this.editor.getLastSelection().getBufferRange() pos = crange.start break - default: throw new TypeError('Switch assertion failed') + default: + throw new TypeError('Switch assertion failed') } return { crange, pos, eventType } } private shouldShowTooltip(pos: Point, type: TEventRangeType) { - if ((pos.row < 0) || - (pos.row >= this.editor.getLineCount()) || - pos.isEqual(this.editor.getBuffer().rangeForRow(pos.row, false).end)) { + if ( + pos.row < 0 || + pos.row >= this.editor.getLineCount() || + pos.isEqual(this.editor.getBuffer().rangeForRow(pos.row, false).end) + ) { this.tooltips.hide(type) } else { // tslint:disable-next-line:no-floating-promises @@ -113,7 +132,9 @@ export class EditorControl implements IEditorController { private trackMouseBufferPosition = (e: MouseEvent) => { const bufferPt = bufferPositionFromMouseEvent(this.editor, e) - if (!bufferPt) { return } + if (!bufferPt) { + return + } if (this.lastMouseBufferPt && this.lastMouseBufferPt.isEqual(bufferPt)) { return @@ -125,10 +146,9 @@ export class EditorControl implements IEditorController { } this.exprTypeTimeout = window.setTimeout( () => bufferPt && this.shouldShowTooltip(bufferPt, TEventRangeType.mouse), - atom.config.get( - 'ide-haskell.expressionTypeInterval', - { scope: this.editor.getRootScopeDescriptor() }, - ), + atom.config.get('ide-haskell.expressionTypeInterval', { + scope: this.editor.getRootScopeDescriptor(), + }), ) } @@ -151,34 +171,50 @@ export class EditorControl implements IEditorController { } // tslint:disable-next-line:no-floating-promises this.tooltipRegistry.showTooltip(this.editor, TEventRangeType.keyboard) - if (atom.config.get( - 'ide-haskell.onCursorMove', - { scope: this.editor.getRootScopeDescriptor() }, - ) === 'Hide Tooltip') { - this.tooltips.hide(TEventRangeType.mouse, undefined, { persistent: false }) - this.tooltips.hide(TEventRangeType.context, undefined, { persistent: false }) + if ( + atom.config.get('ide-haskell.onCursorMove', { + scope: this.editor.getRootScopeDescriptor(), + }) === 'Hide Tooltip' + ) { + this.tooltips.hide(TEventRangeType.mouse, undefined, { + persistent: false, + }) + this.tooltips.hide(TEventRangeType.context, undefined, { + persistent: false, + }) } } else { this.selTimeout = window.setTimeout( - () => this.shouldShowTooltip(newBufferRange.start, TEventRangeType.selection), - atom.config.get( - 'ide-haskell.expressionTypeInterval', - { scope: this.editor.getRootScopeDescriptor() }, - ), + () => + this.shouldShowTooltip( + newBufferRange.start, + TEventRangeType.selection, + ), + atom.config.get('ide-haskell.expressionTypeInterval', { + scope: this.editor.getRootScopeDescriptor(), + }), ) } } private handleCursorUnderTooltip(currentRange: Range) { const tooltipElement = document.querySelector('ide-haskell-tooltip') - if (!tooltipElement) { return } - const slcl = this.editorElement.pixelRectForScreenRange(this.editor.screenRangeForBufferRange(currentRange)) + if (!tooltipElement) { + return + } + const slcl = this.editorElement.pixelRectForScreenRange( + this.editor.screenRangeForBufferRange(currentRange), + ) const sv = this.editorElement.querySelector('.scroll-view') - if (!sv) { return } + if (!sv) { + return + } const eecl = sv.getBoundingClientRect() const ttcl = tooltipElement.getBoundingClientRect() const div = tooltipElement.querySelector('div') - if (!div) { return } + if (!div) { + return + } const ttcld = div.getBoundingClientRect() const ttbox = { left: ttcl.left - eecl.left, @@ -187,14 +223,16 @@ export class EditorControl implements IEditorController { height: ttcld.height, } const xmax = Math.round(Math.max(ttbox.left, slcl.left)) - const xmin = Math.round(Math.min(ttbox.left + ttbox.width, slcl.left + - slcl.width)) + const xmin = Math.round( + Math.min(ttbox.left + ttbox.width, slcl.left + slcl.width), + ) const ymax = Math.round(Math.max(ttbox.top, slcl.top)) - const ymin = Math.round(Math.min(ttbox.top + ttbox.height, slcl.top + - slcl.height)) + const ymin = Math.round( + Math.min(ttbox.top + ttbox.height, slcl.top + slcl.height), + ) const tt = document.querySelector('ide-haskell-tooltip') as HTMLElement if (tt) { - if ((ymax <= ymin) && (xmax <= xmin)) { + if (ymax <= ymin && xmax <= xmin) { tt.classList.add('ide-haskell-tooltip-subdued') } else { tt.classList.remove('ide-haskell-tooltip-subdued') diff --git a/src/editor-control/tooltip-manager.ts b/src/editor-control/tooltip-manager.ts index a9d0ad4..1a913e3 100644 --- a/src/editor-control/tooltip-manager.ts +++ b/src/editor-control/tooltip-manager.ts @@ -29,17 +29,26 @@ export class TooltipManager { } public show( - range: Range, text: MessageObject | MessageObject[], - type: TEventRangeType, source: string, detail: IMarkerProperties, + range: Range, + text: MessageObject | MessageObject[], + type: TEventRangeType, + source: string, + detail: IMarkerProperties, ) { this.hide(type, source) - const highlightMarker = this.markers.get(type, source).markBufferRange(range) + const highlightMarker = this.markers + .get(type, source) + .markBufferRange(range) highlightMarker.setProperties(detail) this.decorate(highlightMarker, new TooltipMessage(text)) this.editorElement.classList.add('ide-haskell--has-tooltips') } - public hide(type?: TEventRangeType, source?: string, template?: IMarkerProperties) { + public hide( + type?: TEventRangeType, + source?: string, + template?: IMarkerProperties, + ) { if (!type) { this.markers.clear() return @@ -47,12 +56,21 @@ export class TooltipManager { if (!template) { this.markers.get(type, source).clear() } else { - this.markers.get(type, source).findMarkers(template).forEach((m: DisplayMarker) => m.destroy()) + this.markers + .get(type, source) + .findMarkers(template) + .forEach((m: DisplayMarker) => m.destroy()) + } + if (!this.has()) { + this.editorElement.classList.remove('ide-haskell--has-tooltips') } - if (!this.has()) { this.editorElement.classList.remove('ide-haskell--has-tooltips') } } - public has(type?: TEventRangeType, source?: string, template?: IMarkerProperties) { + public has( + type?: TEventRangeType, + source?: string, + template?: IMarkerProperties, + ) { if (!type) { return this.markers.getMarkerCount() > 0 } diff --git a/src/ide-haskell.ts b/src/ide-haskell.ts index c826f8d..3131f36 100644 --- a/src/ide-haskell.ts +++ b/src/ide-haskell.ts @@ -18,7 +18,9 @@ let menu: CompositeDisposable | undefined export { config } from './config' -function cleanConfig() { /*noop*/ } +function cleanConfig() { + /*noop*/ +} export function activate(state: IState) { cleanConfig() @@ -31,29 +33,36 @@ export function activate(state: IState) { upiProvided = false if (atom.config.get('ide-haskell.startupMessageIdeBackend')) { - setTimeout( - () => { - if (!upiProvided) { - atom.notifications.addWarning( - `Ide-Haskell needs backends that provide most of functionality. + setTimeout(() => { + if (!upiProvided) { + atom.notifications.addWarning( + `Ide-Haskell needs backends that provide most of functionality. Please refer to README for details`, - { dismissable: true }) - } - }, - 5000, - ) + { dismissable: true }, + ) + } + }, 5000) } disposables = new CompositeDisposable() - pluginManager = new PluginManager(state, outputPanel || new OutputPanel.OutputPanel()) + pluginManager = new PluginManager( + state, + outputPanel || new OutputPanel.OutputPanel(), + ) // global commands disposables.add( atom.commands.add('atom-workspace', { - 'ide-haskell:toggle-output': () => { pluginManager && pluginManager.togglePanel() }, - 'ide-haskell:next-error': () => { pluginManager && pluginManager.nextError() }, - 'ide-haskell:prev-error': () => { pluginManager && pluginManager.prevError() }, + 'ide-haskell:toggle-output': () => { + pluginManager && pluginManager.togglePanel() + }, + 'ide-haskell:next-error': () => { + pluginManager && pluginManager.nextError() + }, + 'ide-haskell:prev-error': () => { + pluginManager && pluginManager.prevError() + }, }), atom.commands.add('atom-text-editor.ide-haskell', { 'ide-haskell:prettify-file': ({ currentTarget }) => { @@ -63,7 +72,8 @@ export function activate(state: IState) { }), atom.commands.add('atom-text-editor.ide-haskell--has-tooltips', { 'ide-haskell:close-tooltip': ({ currentTarget, abortKeyBinding }) => { - const controller = pluginManager && pluginManager.controller(currentTarget.getModel()) + const controller = + pluginManager && pluginManager.controller(currentTarget.getModel()) if (controller && controller.tooltips.has()) { controller.tooltips.hide() } else if (abortKeyBinding) { @@ -74,13 +84,17 @@ export function activate(state: IState) { ) menu = new CompositeDisposable() - menu.add(atom.menu.add([{ - label: MAIN_MENU_LABEL, - submenu: [ - { label: 'Prettify', command: 'ide-haskell:prettify-file' }, - { label: 'Toggle Panel', command: 'ide-haskell:toggle-output' }, - ], - }])) + menu.add( + atom.menu.add([ + { + label: MAIN_MENU_LABEL, + submenu: [ + { label: 'Prettify', command: 'ide-haskell:prettify-file' }, + { label: 'Toggle Panel', command: 'ide-haskell:toggle-output' }, + ], + }, + ]), + ) } export function deactivate() { @@ -108,12 +122,18 @@ export function deserializeOutputPanel(state: OutputPanel.IState) { export function provideUpi3(): UPI.IUPIRegistration { upiProvided = true return (options: UPI.IRegistrationOptions) => { - if (!pluginManager) { throw new Error('IDE-Haskell failed to provide UPI instance: pluginManager is undefined') } + if (!pluginManager) { + throw new Error( + 'IDE-Haskell failed to provide UPI instance: pluginManager is undefined', + ) + } return UPI3.instance(pluginManager, options) } } -export function consumeUpi3(registration: UPI.IRegistrationOptions): Disposable | undefined { +export function consumeUpi3( + registration: UPI.IRegistrationOptions, +): Disposable | undefined { upiProvided = true if (pluginManager) { return UPI3.consume(pluginManager, registration) @@ -121,16 +141,24 @@ export function consumeUpi3(registration: UPI.IRegistrationOptions): Disposable return undefined } -export function consumeLinter(register: (opts: {}) => Linter.IndieDelegate): Disposable | undefined { - if (!(disposables && pluginManager)) { return undefined } +export function consumeLinter( + register: (opts: {}) => Linter.IndieDelegate, +): Disposable | undefined { + if (!(disposables && pluginManager)) { + return undefined + } const linter = register({ name: 'IDE-Haskell' }) disposables.add(linter) pluginManager.setLinter(linter) return linter } -export function consumeStatusBar(statusBar: StatusBar.StatusBar): Disposable | undefined { - if (!pluginManager) { return undefined } +export function consumeStatusBar( + statusBar: StatusBar.StatusBar, +): Disposable | undefined { + if (!pluginManager) { + return undefined + } pluginManager.setStatusBar(statusBar) return new Disposable(() => { if (pluginManager) { diff --git a/src/linter-support/index.ts b/src/linter-support/index.ts index 5c291c9..ddee2e4 100644 --- a/src/linter-support/index.ts +++ b/src/linter-support/index.ts @@ -4,7 +4,10 @@ import * as Linter from 'atom/linter' export class LinterSupport { private disposables: CompositeDisposable - constructor(private linter: Linter.IndieDelegate, private resultDb: ResultsDB) { + constructor( + private linter: Linter.IndieDelegate, + private resultDb: ResultsDB, + ) { this.disposables = new CompositeDisposable() this.disposables.add(resultDb.onDidUpdate(this.update)) @@ -18,9 +21,9 @@ export class LinterSupport { public update = () => { this.linter.clearMessages() this.linter.setAllMessages(Array.from(this.messages())) - } + }; - private * messages(): IterableIterator { + private *messages(): IterableIterator { for (const result of this.resultDb.results()) { if (result.uri && result.position) { let severity: 'error' | 'warning' | 'info' @@ -38,7 +41,10 @@ export class LinterSupport { excerpt: result.message.toPlain(), location: { file: result.uri, - position: new Range(result.position, result.position.translate([0, 1])), + position: new Range( + result.position, + result.position.translate([0, 1]), + ), }, } } diff --git a/src/plugin-manager.ts b/src/plugin-manager.ts index 5f7cfd6..e967289 100644 --- a/src/plugin-manager.ts +++ b/src/plugin-manager.ts @@ -1,4 +1,11 @@ -import { CompositeDisposable, Emitter, TextEditor, TextBuffer, Grammar, Disposable } from 'atom' +import { + CompositeDisposable, + Emitter, + TextEditor, + TextBuffer, + Grammar, + Disposable, +} from 'atom' import { ResultsDB } from './results-db' import { OutputPanel, IState as IOutputViewState } from './output-panel' import { ConfigParamManager, IState as IParamState } from './config-params' @@ -22,21 +29,32 @@ export interface IState { } export interface IEditorController { - destroy (): void + destroy(): void } -export type IEditorControllerFactory = IEditorControllerFactoryT +export type IEditorControllerFactory = IEditorControllerFactoryT< + IEditorController +> export interface IEditorControllerFactoryT { new (editor: TextEditor, manager: PluginManager): T - supportsGrammar (grammar: string): boolean + supportsGrammar(grammar: string): boolean } -export type ECMap = WeakMap - -export interface TMap extends Map> { - get> (key: T): ECMap - set> (key: T, val: ECMap): this +export type ECMap = WeakMap< + TextEditor, + { controller: T; disposable: Disposable } +> + +export interface TMap + extends Map> { + get>( + key: T, + ): ECMap + set>( + key: T, + val: ECMap, + ): this } export class PluginManager { @@ -46,21 +64,27 @@ export class PluginManager { private checkResultsProvider?: CheckResultsProvider private linterSupport?: LinterSupport private disposables = new CompositeDisposable() - private emitter: Emitter<{}, { - 'will-save-buffer': TextBuffer - 'did-save-buffer': TextBuffer - 'did-stop-changing': TextBuffer - }> = new Emitter() + private emitter: Emitter< + {}, + { + 'will-save-buffer': TextBuffer + 'did-save-buffer': TextBuffer + 'did-stop-changing': TextBuffer + } + > = new Emitter() private statusBarTile?: StatusBar.Tile private statusBarView?: StatusBarView private controllers: TMap = new Map() - constructor (state: IState, public outputPanel: OutputPanel) { + constructor(state: IState, public outputPanel: OutputPanel) { this.disposables.add(this.emitter) this.resultsDB = new ResultsDB() this.outputPanel.connectResults(this.resultsDB) this.tooltipRegistry = new TooltipRegistry(this) - this.configParamManager = new ConfigParamManager(this.outputPanel, state.configParams) + this.configParamManager = new ConfigParamManager( + this.outputPanel, + state.configParams, + ) this.disposables.add( this.addEditorController(EditorControl), @@ -74,7 +98,7 @@ export class PluginManager { this.subscribeEditorController() } - public deactivate () { + public deactivate() { this.resultsDB.destroy() this.disposables.dispose() this.checkResultsProvider && this.checkResultsProvider.destroy() @@ -89,7 +113,7 @@ export class PluginManager { } } - public serialize (): IState { + public serialize(): IState { return { configParams: this.configParamManager.serialize(), } @@ -104,51 +128,58 @@ export class PluginManager { public onDidStopChanging = (callback: UPI.TTextBufferCallback) => this.emitter.on('did-stop-changing', callback) - public willSaveBuffer (buffer: TextBuffer) { + public willSaveBuffer(buffer: TextBuffer) { return this.emitter.emit('will-save-buffer', buffer) } - public didSaveBuffer (buffer: TextBuffer) { + public didSaveBuffer(buffer: TextBuffer) { return this.emitter.emit('did-save-buffer', buffer) } - public didStopChanging (buffer: TextBuffer) { + public didStopChanging(buffer: TextBuffer) { return this.emitter.emit('did-stop-changing', buffer) } - public togglePanel () { + public togglePanel() { // tslint:disable-next-line:no-floating-promises atom.workspace.toggle(this.outputPanel) } - public controller (editor: TextEditor): EditorControl | undefined { + public controller(editor: TextEditor): EditorControl | undefined { return this.controllerType(EditorControl, editor) } - public controllerType> ( - factory: T, editor: TextEditor, - ): U | undefined { + public controllerType< + U extends IEditorController, + T extends IEditorControllerFactoryT + >(factory: T, editor: TextEditor): U | undefined { const ecmap = this.controllers.get(factory) const rec = ecmap && ecmap.get(editor) return rec && rec.controller } - public setLinter (linter: Linter.IndieDelegate) { - if (atom.config.get('ide-haskell.messageDisplayFrontend') !== 'linter') { return } + public setLinter(linter: Linter.IndieDelegate) { + if (atom.config.get('ide-haskell.messageDisplayFrontend') !== 'linter') { + return + } this.linterSupport = new LinterSupport(linter, this.resultsDB) } - public nextError () { - if (atom.config.get('ide-haskell.messageDisplayFrontend') !== 'builtin') { return } + public nextError() { + if (atom.config.get('ide-haskell.messageDisplayFrontend') !== 'builtin') { + return + } this.outputPanel.showNextError() } - public prevError () { - if (atom.config.get('ide-haskell.messageDisplayFrontend') !== 'builtin') { return } + public prevError() { + if (atom.config.get('ide-haskell.messageDisplayFrontend') !== 'builtin') { + return + } this.outputPanel.showPrevError() } - public backendStatus (pluginName: string, st: UPI.IStatus) { + public backendStatus(pluginName: string, st: UPI.IStatus) { if (this.outputPanel) { this.outputPanel.backendStatus(pluginName, st) } @@ -157,9 +188,10 @@ export class PluginManager { } } - public addEditorController> ( - factory: T, - ): Disposable { + public addEditorController< + U extends IEditorController, + T extends IEditorControllerFactoryT + >(factory: T): Disposable { if (this.controllers.has(factory)) { throw new Error(`Duplicate controller factory ${factory.toString()}`) } @@ -174,7 +206,7 @@ export class PluginManager { }) } - public setStatusBar (sb: StatusBar.StatusBar) { + public setStatusBar(sb: StatusBar.StatusBar) { this.statusBarView = new StatusBarView(this.outputPanel) this.statusBarTile = sb.addRightTile({ item: this.statusBarView.element, @@ -182,7 +214,7 @@ export class PluginManager { }) } - public removeStatusBar () { + public removeStatusBar() { if (this.statusBarTile) { this.statusBarTile.destroy() this.statusBarTile = undefined @@ -193,7 +225,7 @@ export class PluginManager { } } - private controllerOnGrammar (editor: TextEditor, grammar: Grammar) { + private controllerOnGrammar(editor: TextEditor, grammar: Grammar) { for (const [factory, map] of this.controllers.entries()) { const rec = map.get(editor) if (!rec && factory.supportsGrammar(grammar.scopeName)) { @@ -214,7 +246,7 @@ export class PluginManager { } // Observe text editors to attach controller - private subscribeEditorController () { + private subscribeEditorController() { this.disposables.add( atom.workspace.observeTextEditors((editor) => { const editorDisp = new CompositeDisposable() diff --git a/src/prettify/editor-controller.ts b/src/prettify/editor-controller.ts index 77a1b7e..e001b2c 100644 --- a/src/prettify/editor-controller.ts +++ b/src/prettify/editor-controller.ts @@ -1,22 +1,20 @@ -import { - TextEditor, CompositeDisposable, -} from 'atom' +import { TextEditor, CompositeDisposable } from 'atom' import { prettifyFile } from './index' import { config } from '../config' import { IEditorController } from '../plugin-manager' -type SavePrettifyFormats = {[K in keyof typeof config.onSavePrettifyFormats.properties]: boolean} +type SavePrettifyFormats = { + [K in keyof typeof config.onSavePrettifyFormats.properties]: boolean +} export class PrettifyEditorController implements IEditorController { private disposables = new CompositeDisposable() - constructor (private editor: TextEditor) { + constructor(private editor: TextEditor) { const buffer = this.editor.getBuffer() - this.disposables.add( - buffer.onWillSave(this.prettify), - ) + this.disposables.add(buffer.onWillSave(this.prettify)) } - public static supportsGrammar (grammar: string): boolean { + public static supportsGrammar(grammar: string): boolean { return [ 'source.c2hs', 'source.cabal', // NOTE: special case @@ -27,19 +25,27 @@ export class PrettifyEditorController implements IEditorController { ].includes(grammar) } - public destroy () { + public destroy() { this.disposables.dispose() } private prettify = async () => { - if (atom.config.get('ide-haskell.onSavePrettify', { scope: this.editor.getRootScopeDescriptor() })) { + if ( + atom.config.get('ide-haskell.onSavePrettify', { + scope: this.editor.getRootScopeDescriptor(), + }) + ) { const format = this.editor.getGrammar().scopeName.replace(/\./g, '*') const enabled: SavePrettifyFormats | undefined = atom.config.get( 'ide-haskell.onSavePrettifyFormats', { scope: this.editor.getRootScopeDescriptor() }, ) - if (! enabled) throw new Error("Couldn't get 'ide-haskell.onSavePrettifyFormats'") - if (! enabled[format]) { return } + if (!enabled) { + throw new Error("Couldn't get 'ide-haskell.onSavePrettifyFormats'") + } + if (!enabled[format]) { + return + } await prettifyFile(this.editor) } } diff --git a/src/prettify/index.ts b/src/prettify/index.ts index d2595b7..b179026 100644 --- a/src/prettify/index.ts +++ b/src/prettify/index.ts @@ -4,24 +4,35 @@ import { format as cabalFormat } from './util-cabal-format' import { format as filterFormat } from './util-stylish-haskell' export async function prettifyFile(editor: TextEditor) { - const [firstCursor, ...cursors] = editor.getCursors().map((cursor) => cursor.getBufferPosition()) + const [firstCursor, ...cursors] = editor + .getCursors() + .map((cursor) => cursor.getBufferPosition()) const format = editor.getGrammar().scopeName const prettify = format === 'source.cabal' ? cabalFormat : filterFormat const workDir = (await getRootDir(editor.getBuffer())).getPath() try { - const { stdout, stderr } = await prettify(editor.getText(), workDir, editor.getRootScopeDescriptor()) + const { stdout, stderr } = await prettify( + editor.getText(), + workDir, + editor.getRootScopeDescriptor(), + ) editor.setText(stdout) if (editor.getLastCursor()) { - editor.getLastCursor().setBufferPosition(firstCursor, { autoscroll: false }) + editor + .getLastCursor() + .setBufferPosition(firstCursor, { autoscroll: false }) } cursors.forEach((cursor) => { editor.addCursorAtBufferPosition(cursor, { autoscroll: false }) }) if (stderr.length > 0) { - atom.notifications.addWarning('Prettifier reported the following problems:', { - detail: stderr, - dismissable: true, - }) + atom.notifications.addWarning( + 'Prettifier reported the following problems:', + { + detail: stderr, + dismissable: true, + }, + ) } } catch (e) { // tslint:disable-next-line:no-unsafe-any diff --git a/src/prettify/util-cabal-format.ts b/src/prettify/util-cabal-format.ts index 5fd6d04..d79b1a5 100644 --- a/src/prettify/util-cabal-format.ts +++ b/src/prettify/util-cabal-format.ts @@ -5,17 +5,15 @@ import * as AtomTypes from 'atom' async function makeTempFile(contents: string) { return new Promise((resolve, reject) => { - Temp.open( - { prefix: 'ide-haskell', suffix: '.cabal' }, - (err, info) => { - if (err) { - // tslint:disable-next-line:no-console - console.error(err) - return reject(err) - } - FS.writeSync(info.fd, contents) - resolve(info) - }) + Temp.open({ prefix: 'ide-haskell', suffix: '.cabal' }, (err, info) => { + if (err) { + // tslint:disable-next-line:no-console + console.error(err) + return reject(err) + } + FS.writeSync(info.fd, contents) + resolve(info) + }) }) } @@ -26,16 +24,21 @@ async function read(path: string): Promise { // tslint:disable-next-line:no-console console.error(error) reject(error) - } else { resolve(text) } + } else { + resolve(text) + } }) }) } -export async function format(text: string, workingDirectory: string, scope: AtomTypes.ScopeDescriptor) { +export async function format( + text: string, + workingDirectory: string, + scope: AtomTypes.ScopeDescriptor, +) { const { path, fd } = await makeTempFile(text) try { const command = atom.config.get('ide-haskell.cabalPath', { scope }) - if (command === undefined) throw new Error("Couldn't get 'ide-haskell.cabalPath'") const { stderr } = await runFilter({ command, args: ['format', path], @@ -50,6 +53,9 @@ export async function format(text: string, workingDirectory: string, scope: Atom function handleErr(err: NodeJS.ErrnoException): void { if (err) { - atom.notifications.addError(err.name, { detail: err.message, dismissable: true }) + atom.notifications.addError(err.name, { + detail: err.message, + dismissable: true, + }) } } diff --git a/src/prettify/util-run-filter.ts b/src/prettify/util-run-filter.ts index 557697f..5d51497 100644 --- a/src/prettify/util-run-filter.ts +++ b/src/prettify/util-run-filter.ts @@ -8,21 +8,26 @@ export interface IRunFilterArgs { } export async function runFilter({ command, args, cwd, stdin }: IRunFilterArgs) { - return new Promise<{stdout: string, stderr: string}>((resolve, reject) => { + return new Promise<{ stdout: string; stderr: string }>((resolve, reject) => { try { - const proc = CP.execFile(command, args, { cwd }, (error, stdout, stderr) => { - if (!error) { - resolve({ stdout, stderr }) - } else { - reject({ error, stderr }) - } - }) + const proc = CP.execFile( + command, + args, + { cwd }, + (error, stdout, stderr) => { + if (!error) { + resolve({ stdout, stderr }) + } else { + reject({ error, stderr }) + } + }, + ) if (stdin) { proc.stdin.write(stdin) proc.stdin.end() } } catch (error) { - // tslint:disable-next-line:no-console + // tslint:disable-next-line:no-console console.error(error) reject(error) } diff --git a/src/prettify/util-stylish-haskell.ts b/src/prettify/util-stylish-haskell.ts index 052d7ca..3d1bd77 100644 --- a/src/prettify/util-stylish-haskell.ts +++ b/src/prettify/util-stylish-haskell.ts @@ -1,11 +1,13 @@ import { runFilter } from './util-run-filter' import * as AtomTypes from 'atom' -export async function format(text: string, workingDirectory: string, scope: AtomTypes.ScopeDescriptor) { +export async function format( + text: string, + workingDirectory: string, + scope: AtomTypes.ScopeDescriptor, +) { const command = atom.config.get('ide-haskell.stylishHaskellPath', { scope }) const args = atom.config.get('ide-haskell.stylishHaskellArguments', { scope }) - if (command === undefined) throw new Error("Couldn't get 'ide-haskell.stylishHaskellPath'") - if (args === undefined) throw new Error("Couldn't get 'ide-haskell.stylishHaskellArguments'") return runFilter({ command, args, diff --git a/src/results-db/index.ts b/src/results-db/index.ts index 48873f0..faee0d4 100644 --- a/src/results-db/index.ts +++ b/src/results-db/index.ts @@ -12,9 +12,12 @@ export class ResultsDB { private currentId: number private messages: Map private disposables: CompositeDisposable - private emitter: Emitter<{}, { - 'did-update': UPI.TSeverity[] - }> + private emitter: Emitter< + {}, + { + 'did-update': UPI.TSeverity[] + } + > constructor() { this.currentId = 0 this.disposables = new CompositeDisposable() @@ -34,7 +37,7 @@ export class ResultsDB { public didUpdate(providerId: number, msgs: ResultItem[]) { const uris: string[] = msgs.map((v) => v.uri).filter(notUndefined) for (const [k, v] of Array.from(this.messages)) { - if (v.providerId === providerId || v.uri && uris.includes(v.uri)) { + if (v.providerId === providerId || (v.uri && uris.includes(v.uri))) { this.messages.delete(k) } } @@ -55,13 +58,17 @@ export class ResultsDB { return this.messages.values() } - public * filter(f: (item: ResultItem) => boolean) { + public *filter(f: (item: ResultItem) => boolean) { for (const v of this.results()) { - if (f(v)) { yield v } + if (f(v)) { + yield v + } } } public isEmpty(severities: UPI.TSeverity[]) { - return !Array.from(this.messages.values()).some(({ severity }) => severities.includes(severity)) + return !Array.from(this.messages.values()).some(({ severity }) => + severities.includes(severity), + ) } } diff --git a/src/results-db/provider.ts b/src/results-db/provider.ts index 34c0976..47aa4fa 100644 --- a/src/results-db/provider.ts +++ b/src/results-db/provider.ts @@ -2,24 +2,28 @@ import { ResultItem } from './result-item' import { ResultsDB } from './' import * as UPI from 'atom-haskell-upi' -export type TMessageProviderFunction = (pushMessages: (messages: UPI.IResultItem[]) => void) => void +export type TMessageProviderFunction = ( + pushMessages: (messages: UPI.IResultItem[]) => void, +) => void export class Provider { private disposed: boolean - constructor( - private parent: ResultsDB, public readonly id: number, - ) { + constructor(private parent: ResultsDB, public readonly id: number) { this.disposed = false } public dispose() { - if (this.disposed) { return } + if (this.disposed) { + return + } this.disposed = true this.parent.didUpdate(this.id, []) } public setMessages(messages: UPI.IResultItem[]): void { - if (this.disposed) { return } + if (this.disposed) { + return + } const msgs = messages.map((m) => new ResultItem(this.id, m)) this.parent.didUpdate(this.id, msgs) } diff --git a/src/results-db/result-item.ts b/src/results-db/result-item.ts index 224f920..c6923da 100644 --- a/src/results-db/result-item.ts +++ b/src/results-db/result-item.ts @@ -11,7 +11,10 @@ export class ResultItem { public readonly context?: string private _isValid: boolean private _hash?: string - constructor(public readonly providerId: number, { uri, message, severity, position, context }: UPI.IResultItem) { + constructor( + public readonly providerId: number, + { uri, message, severity, position, context }: UPI.IResultItem, + ) { this.uri = uri this.message = MessageObject.fromObject(message) this.severity = severity @@ -29,13 +32,19 @@ export class ResultItem { } public hash() { - if (this._hash) { return this._hash } + if (this._hash) { + return this._hash + } const h = createHash('sha1') - h.update(JSON.stringify({ - uri: this.uri, position: this.position && this.position.serialize(), - message: this.message.raw(), severity: this.severity, - context: this.context, - })) + h.update( + JSON.stringify({ + uri: this.uri, + position: this.position && this.position.serialize(), + message: this.message.raw(), + severity: this.severity, + context: this.context, + }), + ) this._hash = h.digest('base64') return this._hash } diff --git a/src/tooltip-registry/index.ts b/src/tooltip-registry/index.ts index 68f2ad2..5fbba6c 100644 --- a/src/tooltip-registry/index.ts +++ b/src/tooltip-registry/index.ts @@ -9,15 +9,18 @@ export interface TTooltipHandlerSpec { handler: TTooltipHandlerExt eventTypes?: TEventRangeType[] } -export type TTooltipHandlerExt = - (editor: TextEditor, crange: Range, type: TEventRangeType) => ITooltipDataExt - | undefined - | Promise +export type TTooltipHandlerExt = ( + editor: TextEditor, + crange: Range, + type: TEventRangeType, +) => ITooltipDataExt | undefined | Promise export interface ITooltipSpec { pluginName: string tooltip: TTooltipFunctionExt | ITooltipDataExt } -export type TTooltipFunctionExt = (crange: Range) => ITooltipDataExt | Promise +export type TTooltipFunctionExt = ( + crange: Range, +) => ITooltipDataExt | Promise export interface ITooltipDataExt { range: RangeCompatible text: UPI.TSingleOrArray @@ -25,7 +28,9 @@ export interface ITooltipDataExt { } export class TooltipRegistry { - private providers: Array + private providers: Array< + TTooltipHandlerSpec & { pluginName: string; eventTypes: TEventRangeType[] } + > constructor(private pluginManager: PluginManager) { this.providers = [] } @@ -34,9 +39,17 @@ export class TooltipRegistry { this.providers = [] } - public register(pluginName: string, provider: TTooltipHandlerSpec): Disposable { - const idx = this.providers.findIndex(({ priority }) => priority < provider.priority) - const defaultEvT: TEventRangeType[] = [TEventRangeType.selection, TEventRangeType.mouse] + public register( + pluginName: string, + provider: TTooltipHandlerSpec, + ): Disposable { + const idx = this.providers.findIndex( + ({ priority }) => priority < provider.priority, + ) + const defaultEvT: TEventRangeType[] = [ + TEventRangeType.selection, + TEventRangeType.mouse, + ] const record = { pluginName, eventTypes: provider.eventTypes || defaultEvT, @@ -55,10 +68,14 @@ export class TooltipRegistry { } public async showTooltip( - editor: TextEditor, type: TEventRangeType, spec?: ITooltipSpec, + editor: TextEditor, + type: TEventRangeType, + spec?: ITooltipSpec, ) { const controller = this.pluginManager.controller(editor) - if (!controller) { return } + if (!controller) { + return + } let pluginName: string let tooltipData: TTooltipFunctionExt | ITooltipDataExt if (spec && typeof spec.tooltip !== 'function') { @@ -66,7 +83,9 @@ export class TooltipRegistry { pluginName = spec.pluginName } else { const eventRange = controller.getEventRange(type) - if (!eventRange) { return } + if (!eventRange) { + return + } if (spec && typeof spec.tooltip === 'function') { pluginName = spec.pluginName try { @@ -80,17 +99,23 @@ export class TooltipRegistry { return } } else { - const tooltip = await this.defaultTooltipFunction(editor, type, eventRange.crange) + const tooltip = await this.defaultTooltipFunction( + editor, + type, + eventRange.crange, + ) if (!tooltip) { // if nobody wants to show anything, might as well hide... // TODO: this doesn't seem like a particularly bright idea? controller.tooltips.hide(type, undefined, { persistent: false }) return } - ({ pluginName, tooltipData } = tooltip) + ;({ pluginName, tooltipData } = tooltip) } const newEventRange = controller.getEventRange(type) - if (!newEventRange || !eventRange.crange.isEqual(newEventRange.crange)) { return } + if (!newEventRange || !eventRange.crange.isEqual(newEventRange.crange)) { + return + } } const { persistent = false } = tooltipData let msg @@ -100,19 +125,35 @@ export class TooltipRegistry { msg = MessageObject.fromObject(tooltipData.text) } controller.tooltips.show( - Range.fromObject(tooltipData.range), msg, type, pluginName, { persistent }, + Range.fromObject(tooltipData.range), + msg, + type, + pluginName, + { persistent }, ) } - public hideTooltip(editor: TextEditor, type?: TEventRangeType, source?: string) { + public hideTooltip( + editor: TextEditor, + type?: TEventRangeType, + source?: string, + ) { const controller = this.pluginManager.controller(editor) - if (!controller) { return } + if (!controller) { + return + } controller.tooltips.hide(type, source) } - private async defaultTooltipFunction(editor: TextEditor, type: TEventRangeType, crange: Range) { + private async defaultTooltipFunction( + editor: TextEditor, + type: TEventRangeType, + crange: Range, + ) { for (const { pluginName, handler, eventTypes } of this.providers) { - if (!eventTypes.includes(type)) { continue } + if (!eventTypes.includes(type)) { + continue + } try { const tooltipData = await Promise.resolve(handler(editor, crange, type)) if (!tooltipData) { @@ -120,7 +161,10 @@ export class TooltipRegistry { } return { pluginName, tooltipData } } catch (e) { - this.pluginManager.backendStatus(pluginName, { status: 'warning', detail: `${e}` }) + this.pluginManager.backendStatus(pluginName, { + status: 'warning', + detail: `${e}`, + }) continue } } diff --git a/src/upi-3/index.ts b/src/upi-3/index.ts index b0d4b15..4257ce9 100644 --- a/src/upi-3/index.ts +++ b/src/upi-3/index.ts @@ -7,15 +7,28 @@ import TEventRangeType = UPI.TEventRangeType export * from './instance' -export function consume(pluginManager: PluginManager, options: UPI.IRegistrationOptions): Disposable { - const { name, menu, messageTypes, events, controls, params, tooltip } = options +export function consume( + pluginManager: PluginManager, + options: UPI.IRegistrationOptions, +): Disposable { + const { + name, + menu, + messageTypes, + events, + controls, + params, + tooltip, + } = options const disp = new CompositeDisposable() if (menu) { - const menuDisp = atom.menu.add([{ - label: MAIN_MENU_LABEL, - submenu: [{ label: menu.label, submenu: menu.menu }], - }]) + const menuDisp = atom.menu.add([ + { + label: MAIN_MENU_LABEL, + submenu: [{ label: menu.label, submenu: menu.menu }], + }, + ]) disp.add(menuDisp) } if (messageTypes) { @@ -28,13 +41,22 @@ export function consume(pluginManager: PluginManager, options: UPI.IRegistration } if (events) { if (events.onWillSaveBuffer) { - disp.add(registerEvent(events.onWillSaveBuffer, pluginManager.onWillSaveBuffer)) + disp.add( + registerEvent(events.onWillSaveBuffer, pluginManager.onWillSaveBuffer), + ) } if (events.onDidSaveBuffer) { - disp.add(registerEvent(events.onDidSaveBuffer, pluginManager.onDidSaveBuffer)) + disp.add( + registerEvent(events.onDidSaveBuffer, pluginManager.onDidSaveBuffer), + ) } if (events.onDidStopChanging) { - disp.add(registerEvent(events.onDidStopChanging, pluginManager.onDidStopChanging)) + disp.add( + registerEvent( + events.onDidStopChanging, + pluginManager.onDidStopChanging, + ), + ) } } if (tooltip) { @@ -44,10 +66,18 @@ export function consume(pluginManager: PluginManager, options: UPI.IRegistration if (typeof tooltip === 'function') { handler = tooltip } else { - ({ handler, priority, eventTypes } = tooltip) + ;({ handler, priority, eventTypes } = tooltip) + } + if (!priority) { + priority = 100 } - if (!priority) { priority = 100 } - disp.add(pluginManager.tooltipRegistry.register(name, { priority, handler, eventTypes })) + disp.add( + pluginManager.tooltipRegistry.register(name, { + priority, + handler, + eventTypes, + }), + ) } if (controls) { for (const i of controls) { @@ -57,9 +87,7 @@ export function consume(pluginManager: PluginManager, options: UPI.IRegistration if (params) { for (const paramName of Object.keys(params)) { const spec = params[paramName] - disp.add( - pluginManager.configParamManager.add(name, paramName, spec), - ) + disp.add(pluginManager.configParamManager.add(name, paramName, spec)) } } diff --git a/src/upi-3/instance.ts b/src/upi-3/instance.ts index 92b54f1..6c32943 100644 --- a/src/upi-3/instance.ts +++ b/src/upi-3/instance.ts @@ -8,7 +8,8 @@ import TextEditor = AtomTypes.TextEditor import TEventRangeType = UPI.TEventRangeType export function instance( - pluginManager: PluginManager, options: UPI.IRegistrationOptions, + pluginManager: PluginManager, + options: UPI.IRegistrationOptions, ): UPI.IUPIInstance { const pluginName = options.name const disposables = new CompositeDisposable() @@ -17,48 +18,58 @@ export function instance( disposables.add(consume(pluginManager, options)) return { - setMenu (name: string, menu: ReadonlyArray) { - const menuDisp = atom.menu.add([{ - label: MAIN_MENU_LABEL, - submenu: [ { label: name, submenu: menu } ], - }, + setMenu(name: string, menu: ReadonlyArray) { + const menuDisp = atom.menu.add([ + { + label: MAIN_MENU_LABEL, + submenu: [{ label: name, submenu: menu }], + }, ]) disposables.add(menuDisp) return menuDisp }, - setStatus (status: UPI.IStatus) { + setStatus(status: UPI.IStatus) { return pluginManager.backendStatus(pluginName, status) }, - setMessages (messages: UPI.IResultItem[]) { + setMessages(messages: UPI.IResultItem[]) { messageProvider.setMessages(messages) }, - async addMessageTab (name: string, opts: UPI.ISeverityTabDefinition) { + async addMessageTab(name: string, opts: UPI.ISeverityTabDefinition) { return pluginManager.outputPanel.createTab(name, opts) }, - async showTooltip ({ editor, eventType, detail, tooltip }: UPI.IShowTooltipParams) { + async showTooltip({ + editor, + eventType, + detail, + tooltip, + }: UPI.IShowTooltipParams) { if (!eventType) { eventType = getEventType(detail) } - return pluginManager.tooltipRegistry.showTooltip( - editor, eventType, { pluginName, tooltip }, - ) + return pluginManager.tooltipRegistry.showTooltip(editor, eventType, { + pluginName, + tooltip, + }) }, - addPanelControl (def: UPI.TControlDefinition) { + addPanelControl(def: UPI.TControlDefinition) { return pluginManager.outputPanel.addPanelControl(def) }, - addConfigParam (paramName: string, spec: UPI.IParamSpec) { + addConfigParam(paramName: string, spec: UPI.IParamSpec) { return pluginManager.configParamManager.add(pluginName, paramName, spec) }, - async getConfigParam (name: string): Promise { + async getConfigParam(name: string): Promise { return pluginManager.configParamManager.get(pluginName, name) }, - async getOthersConfigParam (plugin: string, name: string): Promise { + async getOthersConfigParam( + plugin: string, + name: string, + ): Promise { return pluginManager.configParamManager.get(plugin, name) }, - async setConfigParam (name: string, value?: T): Promise { + async setConfigParam(name: string, value?: T): Promise { return pluginManager.configParamManager.set(pluginName, name, value) }, - getEventRange (editor: TextEditor, typeOrDetail: TEventRangeType | Object) { + getEventRange(editor: TextEditor, typeOrDetail: TEventRangeType | Object) { let type: TEventRangeType if (isTEventRangeType(typeOrDetail)) { type = typeOrDetail @@ -66,10 +77,12 @@ export function instance( type = getEventType(typeOrDetail) } const controller = pluginManager.controller(editor) - if (!controller) { return undefined } + if (!controller) { + return undefined + } return controller.getEventRange(type) }, - dispose () { + dispose() { disposables.dispose() }, } diff --git a/src/utils/cast.ts b/src/utils/cast.ts index ea649ad..fcfab25 100644 --- a/src/utils/cast.ts +++ b/src/utils/cast.ts @@ -8,7 +8,9 @@ export function isDock(object: Dock | WorkspaceCenter): object is Dock { return object.constructor.name === 'Dock' } -export function isSimpleControlDef(def: UPI.TControlDefinition): def is UPI.IControlSimpleDefinition { +export function isSimpleControlDef( + def: UPI.TControlDefinition, +): def is UPI.IControlSimpleDefinition { return typeof def.element === 'string' } @@ -23,8 +25,12 @@ export const eventRangeTypeVals = [ TEventRangeType.selection, ] -export function isTEventRangeType(x: TEventRangeType | Object): x is TEventRangeType { - return typeof x === 'string' && eventRangeTypeVals.includes(x as TEventRangeType) +export function isTEventRangeType( + x: TEventRangeType | Object, +): x is TEventRangeType { + return ( + typeof x === 'string' && eventRangeTypeVals.includes(x as TEventRangeType) + ) } export function isTextMessage(msg: UPI.TMessage): msg is UPI.IMessageText { diff --git a/src/utils/element-listener.ts b/src/utils/element-listener.ts index db3c279..122736e 100644 --- a/src/utils/element-listener.ts +++ b/src/utils/element-listener.ts @@ -1,7 +1,10 @@ import { Disposable } from 'atom' export function listen( - element: HTMLElement, event: T, selector: string, callback: (event: HTMLElementEventMap[T]) => void, + element: HTMLElement, + event: T, + selector: string, + callback: (event: HTMLElementEventMap[T]) => void, ): Disposable { const bound = (evt: Event) => { const sel = (evt.target as HTMLElement).closest(selector) diff --git a/src/utils/index.ts b/src/utils/index.ts index aa9a70e..a8968ee 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -10,15 +10,27 @@ export const MAIN_MENU_LABEL = 'Haskell IDE' export function getEventType(detail: any) { // tslint:disable-next-line:no-unsafe-any - if (detail && (detail.contextCommand || (detail[0] && detail[0].contextCommand))) { + if ( + detail && + (detail.contextCommand || (detail[0] && detail[0].contextCommand)) + ) { return TEventRangeType.context - } else { return TEventRangeType.keyboard } + } else { + return TEventRangeType.keyboard + } } - // screen position from mouse event -export function bufferPositionFromMouseEvent(editor: TextEditor, event: MouseEvent) { +// screen position from mouse event +export function bufferPositionFromMouseEvent( + editor: TextEditor, + event: MouseEvent, +) { // tslint:disable-next-line:no-unsafe-any - const sp: Point = (atom.views.getView(editor) as any).component.screenPositionForMouseEvent(event) - if (isNaN(sp.row) || isNaN(sp.column)) { return undefined } + const sp: Point = (atom.views.getView( + editor, + ) as any).component.screenPositionForMouseEvent(event) + if (isNaN(sp.row) || isNaN(sp.column)) { + return undefined + } return editor.bufferPositionForScreenPosition(sp) } diff --git a/src/utils/message-object.ts b/src/utils/message-object.ts index 816fa50..20ce335 100644 --- a/src/utils/message-object.ts +++ b/src/utils/message-object.ts @@ -8,7 +8,9 @@ export class MessageObject { // noop } - public static fromObject = (message: UPI.TMessage | MessageObject): MessageObject => { + public static fromObject = ( + message: UPI.TMessage | MessageObject, + ): MessageObject => { if (message instanceof MessageObject) { return message } else {