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

fastify-console

v1.1.1

Published

command line tool to debug fastify app and execute app methods directly.

Downloads

121

Readme

fastify-console

Command line tool to debug fastify app and execute app methods directly. alt text

Install

  npm i fastify-console -s

Setup

To use the package you have to intergrate with your server.js file in your project.

  const Fastify = require('fastify');
  const fp = require('fastify-plugin');
  const FastifyConsole = require('fastify-console');
  // Instantiate Fastify with some config
  const app = Fastify({ logger: true, pluginTimeout: 3000 });
  const App = require('./app');

  // Register your application as a normal plugin.
  app.register(fp(App), {});

  if (FastifyConsole.active()) {
    app.ready((error) => {
      if (error) {
        // eslint-disable-next-line no-console
        console.error(error);
        return false;
      }
      return FastifyConsole.start(app, {
        prompt: 'fastify > ',
      });
    });
  } else if (require.main === module) {
    // Start listening.
    app.listen(process.env.PORT || 3000, '0.0.0.0', (err) => {
      if (err) {
        app.log.error(err);
        process.exit(1);
      }
    });
  }

use below command to run console

node server.js --console

for ease of use you can update your package.json as below and then run npm run console

  "scripts": {
    "console": "node server.js --console",
  }

Configurations

| Option | Type | Defaults | Descriptions | | ----------------- |:-------------: | :----------: | :-------------: | | quiet | Boolean | false | Displays help descriptions when console get started | | prompt | String | fastify > | The input prompt to display. | | useGlobal | Boolean | true | Default evaluation function will use the JavaScript global | | ignoreUndefined | Boolean | true | Writer will not output the return value of a command if it evaluates to undefined | | historyPath | String | '' | The path to a file to persist command history. eg: .data/history.log |

Note:

  1. History feature will work only for on and above Node 12 version.
  2. For more details about config please check NodeJS Repl

Examples

app handle provide the fastify instance which is being used in application.

  1. Provide accessibility to all plugin by assigned decorator for example if we registerd timestamp decorator as below
  module.exports = fp(async (fastify, opts) => {
    fastify.decorate('timestamp', () => Date.now());
  });

then we can execute it directly from console by using app.timestamp()

  1. Provide accessibility to routes of application
  app.inject({ url: '/home', methods: 'GET', headers: {access_token: 'my-secret-token'} })
  1. Provide accessibility to registered models from mongoose
  class StoryClass {
    // `getFullTitle()` becomes a document method
    getFullTitle() {
      return this.title;
    }
  }

  module.exports = {
    name: 'Story',
    alias: 'Story',
    schema: {
      title: {
        type: String,
        required: true,
      },
    },
    class: StoryClass,
  };
  Story.findOne().then(story => story.getFullTitle())

Note: fastify-console uses fastify-mongoose-driver plugin to access models in console. or you can use mongoose decorator for mongo connections. please check mongoose for better understanding about schema definations.


Inspired By

Loopback Console


License

fastify-console uses the MIT license. See LICENSE for more details.