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

@mazeltov/service

v1.0.3

Published

A service repository for Mazeltov

Downloads

1

Readme

Services (DRAFT)

In the context of this repo, we are refering to the service layer that is often introduced into MVC patterns. Here is an example:

We all know that in MVC:

  • The Controller is responsible to passing requested data to model
  • Model operates business logic on entities
  • Views represent the results/errors of the model or Controller

So where do things like sending an email fall in here?

What about caching results with a remote DB?

Usually the response is to put this logic into the Controller but it can create bloated and unmanageable code, so the best approach is to isolate into a Service and inject this into the Controller.

Another thing to consider is what happens if you tie all your caching/email to a third party API? What if this code is sprinkled everywhere in every controller. Injecting these things into the service and providing a unified API will allow easy changing of third party tools in the future.

This is Presently in Draft

Right now things are plenty isolated but could use reconsideration. For example:

  • An email service
    • Could allow either an http api client or smtp client to be injected as driver
  • A separate SMS service
    • If we think sendInBlue sucks for SMS we can inject other provider into this service
  • A cache service
  • Logging?

For each of the above we could use the abstract factory pattern to switch implementations

Each variety of service would share a common interface but could then branch on how it does its thing.

Why is this not pressing

This may become more important when:

  • Various applicaitons use different drivers for sending emails, caching, sms