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

fundate

v0.0.3

Published

Functional style date utility library.

Downloads

9

Readme

fundate

This library grew out of some frustration of using moment.js. Moment.js is a very helpful library, but this is an attempt to explore the possiblity that a date library with a better API - for me, at least - could exist.

This library is a work in progress and is far from feature parity with moment.js.

The Frustrations

I will list the afore mentioned frustrations:

  • the need to wrap date objects with moments
  • moment objects do not display nicely when rendered in the console either in the repl or with console.log()
  • the moment manipulation APIs like add and subtract modify the target moment, but I prefer an immutable API
  • moment.js is seen as the de-facto date library in the JS community. It has a large code base. I believe that it is because of this that some tend to learn the moment way over understanding how plain JS dates work, which has caused - as I've observed in some code bases - some superstitious code.

Approaches / Design Principles

The principles behind this project are:

  • the library will work with the native JS Date object, rather than with some wrapper object
  • this library will use a functional style rather than an object oriented style. It will not support a chainable or "fluent" API style.
  • all date manipulation APIs will return a new date object rather than modify the existing one
  • small API surface area, yet feature rich enough to be useful across different types of projects
  • small and manageable code base

Code

For now, to see some code, please read the tests.

Feature Scope

At the current moment, I am focusing on

  • date manipulation
    • time durations
    • adding and subtracting time durations
    • startOfYear(), startOfMonth(), startOfDay(), etc
  • date parsing with custom formatting like strptime or moment.js
  • date formatting with custom formatting like strftime or moment.js
  • a second mirroring set of utility functions for working in utc mode
  • humanized wording of time durations

Contributing

At this stage, I could use contributions in

  1. design discussions
  2. test code
  3. implementation code