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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@cumulus/hyrax-metadata-updates

v21.3.2

Published

Update granule metadata with hooks to OPeNDAP URL

Readme

@cumulus/hyrax-metadata-updates

Description

This lambda function is responsible for augmenting granule metadata files with the correct Hyrax (OPeNDAP) URL to provide subsetting and reformatting services on your granules. The URL will convey enough information to Hyrax to discover the granule using CMR. Hyrax will then determine the archive location within Cumulus from the granule's metadata.

For example, the Hyrax URL for a granule with short name GLDAS_CLSM025_DA1_D and version 2.2 from collection ID C1233603862-GES_DISC and granule UR GLDAS_CLSM025_DA1_D.2.2:GLDAS_CLSM025_DA1_D.A20030204.022.nc4:

https://opendap.uat.earthdata.nasa.gov/collections/C1233603862-GES_DISC/GLDAS_CLSM025_DA1_D.2.2/granules/GLDAS_CLSM025_DA1_D.2.2:GLDAS_CLSM025_DA1_D.A20030204.022.nc4

/UMM-C:{ShortName}.UMM-C:{Version} between "collections" and "granules" is optional and could be included using addShortnameAndVersionIdToConceptId: true in config.json. By default, it is false.

This url will be added to the Urls portion of the granule metadata as follows,

UMM-G example

"RelatedUrls": [
    ...
    {
        "URL": "opendap.uat.earthdata.nasa.gov/collections/C1233603862-GES_DISC/GLDAS_CLSM025_DA1_D.2.2/granules/GLDAS_CLSM025_DA1_D.2.2:GLDAS_CLSM025_DA1_D.A20030204.022.nc4",
        "Type": "USE SERVICE API",
        "Subtype": "OPENDAP DATA",
        "Description": "OPeNDAP request URL"
    }
]

ECHO-10 example

<OnlineResources>
    ...
    <OnlineResource>
        <URL>https://opendap.uat.earthdata.nasa.gov/collections/C1233603862-GES_DISC/GLDAS_CLSM025_DA1_D.2.2/granules/GLDAS_CLSM025_DA1_D.2.2:GLDAS_CLSM025_DA1_D.A20030204.022.nc4</URL>
        <Description>OPeNDAP request URL</Description>
        <Type>GET DATA : OPENDAP DATA</Type>
    </OnlineResource>
</OnlineResources>

The four properties we need to construct this url are as follows, | Property | Source | Notes | ------------- | ----------------------------------- | ----- | Provider ID | Configuration config.cmr.provider | | Collection ID | Derived from retrieval of parent collection from CMR | This requires a call to the CMR search API | ShortName | --//-- | optional | Version | --//-- | optional | Granule UR | Granule metadata: UMM-G GranuleUR ECHO10 Granule->GranuleUR | Environment | process.env.CMR_ENVIRONMENT | Specifies the environment of Hyrax (e.g. SIT, UAT, PROD)

For more information on configuring a Cumulus Message Adapter task, see the Cumulus workflow input/output documentation.

Config

Config object fields:

| field name | type | default | description | --------------------- | ------- | ---------- | ----------- | bucket | string | (required) | Name of S3 bucket containing public/private key pair to decrypt CMR credentials | stack | string | (required) | Name of deployment stack | cmr | object | (required) | CMR credentials object | addShortnameAndVersionIdToConceptId | boolean | false | Option to humanize the Hyrax URL. Humanizes when set to true. | skipMetadataValidation | boolean | false | Option to skip metadata validation

Input

Input object fields:

| field name | type | default | description | ---------- | ---- | ------- | ----------- | granules | array<object> | (required) | List of granule objects

Output

Output object fields:

| field name | type | default | description | ---------- | ---- | ------- | ----------- | granules | array<object> | N/A | List of granule objects

About Cumulus

Cumulus is a cloud-based data ingest, archive, distribution and management prototype for NASA's future Earth science data streams.

Cumulus Documentation

Contributing

To make a contribution, please see our contributing guidelines.