npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@kites/engine

v1.2.0

Published

Core Engine of Kites

Downloads

43

Readme

kites-engine

Core Engine of Kites

Join the chat at https://gitter.im/nodevn/kites npm version npm downloads Travis

Kites is a framework providing dynamic applications assembling and API routing. It contains a lot of templates and extensions help build up applications quickly.

The engine is a core component that is responsible for connecting extensions and initializing in order to launch the Web application.

Simplest Example

Here below is TypeScript version: The application simply prints out a greeting: Hello World!

import engine from '@kites/engine';

async function bootstrap() {
    const app = await engine().init();
    app.logger.info('Hello World!');
}

bootstrap();

Node/JavaScript version:

const engine = require('@kites/engine');

// init the kites engine
engine().init().then((core) => {
    core.logger.info('Hello World!')
})

API Usage

Extensions auto discovery

Kites engine has an option to allow the application auto discover extensions in the directory tree. This means kites will searches for files kites.config.js which describes the extensions and applies all the extensions that are found automatically.

This is fundamental principle for allowing extensions as plugins to be automatically plugged into the system. The application completed with minimalist lines of code, but very powerful!

import engine from '@kites/engine';

async function bootstrap() {
    // let kites autodiscover the extensions
    const app = await engine(true).init();
    app.logger.info('A new kites engine started!');
}

bootstrap();

Kites extensions auto discovery might slows down the startup and can be explicitly override by using use function. The following code has a slightly complicated configuration for each extensions.

import engine from '@kites/engine';
import express from '@kites/express';
import roomrtc from '@kites/roomrtc';

async function bootstrap() {
    const app = await engine()
        .use(express())
        .use(roomrtc())
        .init();

    app.logger.info('A new kites engine started!');
}

bootstrap();

Extensions

You are welcome to write your own extension or even publish it to the community. Please check test/extensions to see an example.

TODO:

  • Write an article for implementing custom kites extension

Logging

kites leverages winston 2 logging abstraction together with debug utility. To output logs in the console just simply set the DEBUG environment variable

DEBUG=kites node app.js

on windows:

set DEBUG=kites & node app.js

kites exposes logger property which can be used to adapt the logging as you like. You can for example just add winston console transport and filter in only important log messages into console.

import engine from '@kites/engine';
import winston from 'winston';

const app = engine();
app.logger.add(winston.transports.Console, { level: 'info' });