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

crepuscule

v1.0.0

Published

Sunlight raster tile layer, with twilight, dynamically generated for MapLibre GL and MapTiler SDK.

Downloads

3

Readme

crepuscule logo

Day/Night layer with twilight zone for MapLibre GL JS and MapTiler SDK.

Tiles are dynamically generated in the browser (no fetch from API) from zoom level 0 to 22. The twilight zone (smooth gradient) appears when the sun is between the horizon and -6° below horizon.

npm install crepuscule

This is how it looks like:

Coupled with the TemperatureLayer MapTiler Weather library:

Crepuscule comes with two different kinds of layers:

  • a fixed one that can programmatically be updated to any date and time (Crepuscule)
  • an automatic one that is being refreshed every 5 seconds to show realtime conditions (CrepusculeLive)

Usage of Crepuscule with ES Module:

import {
  Crepuscule
} from "crepuscule";

// You first need to instanciate your Map object from MapLibre or MapTiler SDK.

// Instanciate the Crepuscule instance:
const crepObj = new Crepuscule(map);

// Alternatively with some options:
const crepObj = new Crepuscule(map, {
  color: [0, 12, 55], // RGB in [0, 255]
  opacity: 0.7,       // in [0, 1] 
  date: new Date(),   // any date
  debug: true,        // removes the twilight gradient
});

// You can hide and show the Crepuscule layer:
crepObj.hide();
crepObj.show();

// Alternatively, both hide and show can take some option to make smooth transitions:
crepObj.show({
  duration: 1000,  // Millisconds it takes to fade in or out
  delay: 100,      // Milliseconds it takes to start showing/hiding
});

// You can update the date of the Crepuscule instance
crepObj.setDate(new Date(...));

// Remove the layers and source created by this Crepuscule instance
crepObj.unmount();

// crepObj will no longer be usable after unmounting!

Usage of CrepusculeLive with ES Module:

import {
  CrepusculeLive
} from "crepuscule";

// You first need to instanciate your Map object from MapLibre or MapTiler SDK.

// Instanciate the Crepuscule instance:
const crepLiveObj = new crepuscule.CrepusculeLive(map);

// Alternatively with the same options as the simple Crepuscule instance:
const crepLiveObj = new crepuscule.CrepusculeLive(map, {...});

// Once instanciated, the CrepusculeLive will start updating every 5sec
// automatically. Yet it can be stopped and restarted:

crepLiveObj.stop();
crepLiveObj.start();

// A CrepusculeLive can also be unmounted
crepLiveObj.unmount();