UNPKG

matrix-react-sdk

Version:
134 lines (111 loc) 12.5 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireDefault(require("react")); var _languageHandler = require("../languageHandler"); var _AutocompleteProvider = _interopRequireDefault(require("./AutocompleteProvider")); var _Components = require("./Components"); /* Copyright 2016 Aviral Dasgupta Copyright 2017 Vector Creations Ltd Copyright 2017, 2018 New Vector Ltd Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ const DDG_REGEX = /\/ddg\s+(.+)$/g; const REFERRER = 'vector'; class DuckDuckGoProvider extends _AutocompleteProvider.default { constructor() { super(DDG_REGEX); } static getQueryUri(query /*: string*/ ) { return `https://api.duckduckgo.com/?q=${encodeURIComponent(query)}` + `&format=json&no_redirect=1&no_html=1&t=${encodeURIComponent(REFERRER)}`; } async getCompletions(query /*: string*/ , selection /*: ISelectionRange*/ , force = false, limit = -1) /*: Promise<ICompletion[]>*/ { const { command, range } = this.getCurrentCommand(query, selection); if (!query || !command) { return []; } const response = await fetch(DuckDuckGoProvider.getQueryUri(command[1]), { method: 'GET' }); const json = await response.json(); const maxLength = limit > -1 ? limit : json.Results.length; const results = json.Results.slice(0, maxLength).map(result => { return { completion: result.Text, component: /*#__PURE__*/_react.default.createElement(_Components.TextualCompletion, { title: result.Text, description: result.Result }), range }; }); if (json.Answer) { results.unshift({ completion: json.Answer, component: /*#__PURE__*/_react.default.createElement(_Components.TextualCompletion, { title: json.Answer, description: json.AnswerType }), range }); } if (json.RelatedTopics && json.RelatedTopics.length > 0) { results.unshift({ completion: json.RelatedTopics[0].Text, component: /*#__PURE__*/_react.default.createElement(_Components.TextualCompletion, { title: json.RelatedTopics[0].Text }), range }); } if (json.AbstractText) { results.unshift({ completion: json.AbstractText, component: /*#__PURE__*/_react.default.createElement(_Components.TextualCompletion, { title: json.AbstractText }), range }); } return results; } getName() { return '🔍 ' + (0, _languageHandler._t)('Results from DuckDuckGo'); } renderCompletions(completions /*: React.ReactNode[]*/ ) /*: React.ReactNode*/ { return /*#__PURE__*/_react.default.createElement("div", { className: "mx_Autocomplete_Completion_container_block", role: "listbox", "aria-label": (0, _languageHandler._t)("DuckDuckGo Results") }, completions); } } exports.default = DuckDuckGoProvider; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdXRvY29tcGxldGUvRHVja0R1Y2tHb1Byb3ZpZGVyLnRzeCJdLCJuYW1lcyI6WyJEREdfUkVHRVgiLCJSRUZFUlJFUiIsIkR1Y2tEdWNrR29Qcm92aWRlciIsIkF1dG9jb21wbGV0ZVByb3ZpZGVyIiwiY29uc3RydWN0b3IiLCJnZXRRdWVyeVVyaSIsInF1ZXJ5IiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZ2V0Q29tcGxldGlvbnMiLCJzZWxlY3Rpb24iLCJmb3JjZSIsImxpbWl0IiwiY29tbWFuZCIsInJhbmdlIiwiZ2V0Q3VycmVudENvbW1hbmQiLCJyZXNwb25zZSIsImZldGNoIiwibWV0aG9kIiwianNvbiIsIm1heExlbmd0aCIsIlJlc3VsdHMiLCJsZW5ndGgiLCJyZXN1bHRzIiwic2xpY2UiLCJtYXAiLCJyZXN1bHQiLCJjb21wbGV0aW9uIiwiVGV4dCIsImNvbXBvbmVudCIsIlJlc3VsdCIsIkFuc3dlciIsInVuc2hpZnQiLCJBbnN3ZXJUeXBlIiwiUmVsYXRlZFRvcGljcyIsIkFic3RyYWN0VGV4dCIsImdldE5hbWUiLCJyZW5kZXJDb21wbGV0aW9ucyIsImNvbXBsZXRpb25zIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFrQkE7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBdEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFTQSxNQUFNQSxTQUFTLEdBQUcsZ0JBQWxCO0FBQ0EsTUFBTUMsUUFBUSxHQUFHLFFBQWpCOztBQUVlLE1BQU1DLGtCQUFOLFNBQWlDQyw2QkFBakMsQ0FBc0Q7QUFDakVDLEVBQUFBLFdBQVcsR0FBRztBQUNWLFVBQU1KLFNBQU47QUFDSDs7QUFFRCxTQUFPSyxXQUFQLENBQW1CQztBQUFuQjtBQUFBLElBQWtDO0FBQzlCLFdBQVEsaUNBQWdDQyxrQkFBa0IsQ0FBQ0QsS0FBRCxDQUFRLEVBQTNELEdBQ0gs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QUFDL0Qsd0JBQ0k7QUFDSSxNQUFBLFNBQVMsRUFBQyw0Q0FEZDtBQUVJLE1BQUEsSUFBSSxFQUFDLFNBRlQ7QUFHSSxvQkFBWSx5QkFBRyxvQkFBSDtBQUhoQixPQUtNQSxXQUxOLENBREo7QUFTSDs7QUFyRmdFIiwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDE2IEF2aXJhbCBEYXNndXB0YVxuQ29weXJpZ2h0IDIwMTcgVmVjdG9yIENyZWF0aW9ucyBMdGRcbkNvcHlyaWdodCAyMDE3LCAyMDE4IE5ldyBWZWN0b3IgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IF90IH0gZnJvbSAnLi4vbGFuZ3VhZ2VIYW5kbGVyJztcbmltcG9ydCBBdXRvY29tcGxldGVQcm92aWRlciBmcm9tICcuL0F1dG9jb21wbGV0ZVByb3ZpZGVyJztcblxuaW1wb3J0IHtUZXh0dWFsQ29tcGxldGlvbn0gZnJvbSAnLi9Db21wb25lbnRzJztcbmltcG9ydCB7SUNvbXBsZXRpb24sIElTZWxlY3Rpb25SYW5nZX0gZnJvbSBcIi4vQXV0b2NvbXBsZXRlclwiO1xuXG5jb25zdCBEREdfUkVHRVggPSAvXFwvZGRnXFxzKyguKykkL2c7XG5jb25zdCBSRUZFUlJFUiA9ICd2ZWN0b3InO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEdWNrRHVja0dvUHJvdmlkZXIgZXh0ZW5kcyBBdXRvY29tcGxldGVQcm92aWRlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKERER19SRUdFWCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldFF1ZXJ5VXJpKHF1ZXJ5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGBodHRwczovL2FwaS5kdWNrZHVja2dvLmNvbS8/cT0ke2VuY29kZVVSSUNvbXBvbmVudChxdWVyeSl9YFxuICAgICAgICAgKyBgJmZvcm1hdD1qc29uJm5vX3JlZGlyZWN0PTEmbm9faHRtbD0xJnQ9JHtlbmNvZGVVUklDb21wb25lbnQoUkVGRVJSRVIpfWA7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0Q29tcGxldGlvbnMoXG4gICAgICAgIHF1ZXJ5OiBzdHJpbmcsXG4gICAgICAgIHNlbGVjdGlvbjogSVNlbGVjdGlvblJhbmdlLFxuICAgICAgICBmb3JjZSA9IGZhbHNlLFxuICAgICAgICBsaW1pdCA9IC0xLFxuICAgICk6IFByb21pc2U8SUNvbXBsZXRpb25bXT4ge1xuICAgICAgICBjb25zdCB7Y29tbWFuZCwgcmFuZ2V9ID0gdGhpcy5nZXRDdXJyZW50Q29tbWFuZChxdWVyeSwgc2VsZWN0aW9uKTtcbiAgICAgICAgaWYgKCFxdWVyeSB8fCAhY29tbWFuZCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChEdWNrRHVja0dvUHJvdmlkZXIuZ2V0UXVlcnlVcmkoY29tbWFuZFsxXSksIHtcbiAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBqc29uID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgICAgICBjb25zdCBtYXhMZW5ndGggPSBsaW1pdCA+IC0xID8gbGltaXQgOiBqc29uLlJlc3VsdHMubGVuZ3RoO1xuICAgICAgICBjb25zdCByZXN1bHRzID0ganNvbi5SZXN1bHRzLnNsaWNlKDAsIG1heExlbmd0aCkubWFwKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgY29tcGxldGlvbjogcmVzdWx0LlRleHQsXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiAoXG4gICAgICAgICAgICAgICAgICAgIDxUZXh0dWFsQ29tcGxldGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3Jlc3VsdC5UZXh0fVxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249e3Jlc3VsdC5SZXN1bHR9IC8+XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICByYW5nZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoanNvbi5BbnN3ZXIpIHtcbiAgICAgICAgICAgIHJlc3VsdHMudW5zaGlmdCh7XG4gICAgICAgICAgICAgICAgY29tcGxldGlvbjoganNvbi5BbnN3ZXIsXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiAoXG4gICAgICAgICAgICAgICAgICAgIDxUZXh0dWFsQ29tcGxldGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e2pzb24uQW5zd2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249e2pzb24uQW5zd2VyVHlwZX0gLz5cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHJhbmdlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGpzb24uUmVsYXRlZFRvcGljcyAmJiBqc29uLlJlbGF0ZWRUb3BpY3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmVzdWx0cy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBjb21wbGV0aW9uOiBqc29uLlJlbGF0ZWRUb3BpY3NbMF0uVGV4dCxcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6IChcbiAgICAgICAgICAgICAgICAgICAgPFRleHR1YWxDb21wbGV0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17anNvbi5SZWxhdGVkVG9waWNzWzBdLlRleHR9IC8+XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICByYW5nZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChqc29uLkFic3RyYWN0VGV4dCkge1xuICAgICAgICAgICAgcmVzdWx0cy51bnNoaWZ0KHtcbiAgICAgICAgICAgICAgICBjb21wbGV0aW9uOiBqc29uLkFic3RyYWN0VGV4dCxcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6IChcbiAgICAgICAgICAgICAgICAgICAgPFRleHR1YWxDb21wbGV0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17anNvbi5BYnN0cmFjdFRleHR9IC8+XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICByYW5nZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH1cblxuICAgIGdldE5hbWUoKSB7XG4gICAgICAgIHJldHVybiAn8J+UjSAnICsgX3QoJ1Jlc3VsdHMgZnJvbSBEdWNrRHVja0dvJyk7XG4gICAgfVxuXG4gICAgcmVuZGVyQ29tcGxldGlvbnMoY29tcGxldGlvbnM6IFJlYWN0LlJlYWN0Tm9kZVtdKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteF9BdXRvY29tcGxldGVfQ29tcGxldGlvbl9jb250YWluZXJfYmxvY2tcIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtfdChcIkR1Y2tEdWNrR28gUmVzdWx0c1wiKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7IGNvbXBsZXRpb25zIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==