@webqit/webqit.dev
Version:
webqit.dev Site
64 lines (60 loc) • 1.73 kB
JavaScript
/**
* @imports
*/
//import _delay from '@webqit/util/js/delay.js';
import nodeFetch from 'node-fetch';
import { render as packageRender } from '../../common/package.js';
import { tooling } from '../../common/data.js';
/**
* @var object
*/
const pkgs = {};
/**
* Handles main HTTP process.
*
* @param object process
* @param any recieved
* @param function next
*
* @return object
*/
export default async function(process, recieved, next) {
if (next.pathname) {
var pkgName = next.pathname.split('/')[0];
if (!pkgs[pkgName]) {
//await _delay(4000);
//var pkgDocsUrl = 'https://unpkg.com/@web-native-js/' + pkgName + '/docs';
var pkgDocsUrl = 'http://localhost:8081/' + pkgName + '/docs';
try {
pkgs[pkgName] = await Promise.all([
nodeFetch(pkgDocsUrl + '/bundle.json').then(res => res.json()),
nodeFetch(pkgDocsUrl + '/bundle.html').then(res => res.text()),
]);
} catch(e) {}
var [ _package, html ] = pkgs[pkgName] || [];
}
return {
pkgName, package: _package, html, title: (_package || {}).title || pkgName
};
}
return {
title: 'Web-Native Tooling',
outline: tooling,
};
};
/**
* Creates and configures the rendering window.
*
* @param object data
* @param window _window
* @param function next
*
* @return window
*/
export async function render(data, _window, next) {
const window = await next();
if (next.pathname) {
await packageRender(window, data);
}
return window;
};