UNPKG

els-addon-docs

Version:

Ember Language Server Completion Provider for Addons with Addon Docs

58 lines (51 loc) 1.46 kB
const fetch = require("node-fetch"); const { normalizeComponents } = require("./normalizers"); function demoUrl(pack) { return pack["ember-addon"].demoURL; } function addonName(pack) { return pack["name"]; } function hasDemoUrl(pack) { return ( pack["ember-addon"] && typeof pack["ember-addon"].demoUrl === "string" && pack["ember-addon"].demoUrl.length ); } module.exports.makeAddonUrl = function makeAddonUrl(el) { if (hasDemoUrl(el)) { return [addonName(el), demoUrl(el)]; } else if (el.homepage) { return [addonName(el), el.homepage]; } else { return null; } }; async function getAddonDocs(packageName, demoURL) { const result = await fetch(`${demoURL}/docs/${packageName}.json`); const data = await result.json(); return data; } module.exports.loadCompletions = async function loadCompletions(addons) { /* this implementation just draft, we should cache it */ const mapper = async ([org, repo]) => { let result = { included: [] }; try { result = await getAddonDocs(org, repo); } catch (e) { console.error(e.stack); } return result; }; const queries = addons.map(mapper); const data = await Promise.all(queries); const addonsResults = data.map(info => normalizeComponents(info)); const results = [].concat(addonsResults); return Object.assign.apply({}, results); };