Home icon indicating copy to clipboard operation
Home copied to clipboard

[Hapi] Support roadmap

Open atrauzzi opened this issue 8 years ago • 7 comments

Hapi is fairly popular and has really good mindshare. Would be a shame to not be able to use this with it!

  • Support injecting the glimpse interface whenever inert is used to serve html

atrauzzi avatar May 18 '17 02:05 atrauzzi

We have been having a discussion around HAPI support here - https://github.com/Glimpse/Home/issues/95. As of release of 0.20.9, we should be working with Hapi now... the only thing that you won't get is middleware insights. Its possible that we can light middleware but we are trying to understand more about what Hapi users would find really useful. Do you have any thoughts of what would be most valuable?

avanderhoorn avatar May 18 '17 03:05 avanderhoorn

Ah yes, so it does appear to be working, I was making the mistake of not initializing glimpse before my first hapi import. That's one item that I might suggest be improved if possible, I'll open a separate ticket for it.

Specific to hapi though, I'll spend some time with things although I suspect if you run down the feature list of what hapi as a framework offers, there may be more worth surfacing.

atrauzzi avatar May 18 '17 12:05 atrauzzi

As a follow-on, I'll edit my opening comment for this ticket with a list of things I come up with as I encounter them.

atrauzzi avatar May 18 '17 12:05 atrauzzi

Super excited to see Glimpse show love to the node.js community. I can see Glimpse being a super-useful tool during development just like it is in ASP.net. Thank you to the Glimpse team.


  • [ ] Support tracing server-methods (and the hapi.js plugins that registered them) executed when request is made to hapi.js
  • [ ] Support showing metadata of plugins used in hapi.js server such as name, version, dependencies, plugin-level options, server-methods registered, server-decorations added, properties exposed via server.expose, routes registered, and handlers registered by plugin.
  • [ ] Show log data emitted by "logging-events" of hapi.js server when request sent to a route.

jchoi2x avatar May 19 '17 18:05 jchoi2x

This is great! Thanks @kizzlebot @atrauzzi

avanderhoorn avatar May 19 '17 20:05 avanderhoorn

I'm really dying to see full hapi.js support w/ @glimpse/glimpse. I think hapi.js's configuration-based approach along with it's plugin-registration system would allow glimpse to display a serious amount of useful information if glimpse can instrument the methods defined on the hapi.js server instance.

I don't know how glimpse works w/ exactly but perhaps the following information can help with progress? Sorry if I seem arrogant, inconsiderate, or impatient regarding this issue. I just see a lot of potential using glimpse w/ hapi.js versus express.js, mostly because hapi.js has a lot more metadata to work with than express.js.

  • [ ] Support tracing server-methods calls added by plugins
    • Server-methods are added via
      server.method({name: String, method: Function, options: Object})
  • [ ] Support showing metadata of plugins used in hapi.js server such as name, version, dependencies, plugin-level options, server-methods registered, server-decorations added, properties exposed via server.expose, routes registered, and handlers registered by plugin.
    • Each hapi.js plugin exports an object with

// pkgName.js hapi.js plugin
const internals = module.exports = {};
internals.register = (server, options, next) => { ... }
internals.register.attributes = {
  name: 'pkgName',
  version: '0.0.1',
  dependencies: ['blipp']
}

// Plugins are "registered" w/ server instance via
server.register({ 
  register: require('pkgName'),
  options: { ... }
})
  • [ ] Show log data emitted by "logging-events" of hapi.js server when request sent to a route.
    • hapi.js server instance has a server.on(evtName, callback) that can add listeners for logging events

jchoi2x avatar May 24 '17 19:05 jchoi2x

I don't know how Glimpse does tracing but just general info about mysql, redis, ... query timing with query info would be very useful. I guess if you do some patching you could do plugin initialization timings as well. Just in general whatever you expose of express, expose the same thing from hapi. Not sure if there is a list somewhere, I could help map the express stuff to hapi if you want. And ofc the things stated above are 👌

AdriVanHoudt avatar Jun 12 '17 08:06 AdriVanHoudt