1.1.1 • Published 3 years ago

fastify-console v1.1.1

Weekly downloads
8
License
ISC
Repository
github
Last release
3 years ago

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

OptionTypeDefaultsDescriptions
quietBooleanfalseDisplays help descriptions when console get started
promptStringfastify >The input prompt to display.
useGlobalBooleantrueDefault evaluation function will use the JavaScript global
ignoreUndefinedBooleantrueWriter will not output the return value of a command if it evaluates to undefined
historyPathString''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.