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

@nfdi4plants/rocratepcc

v0.1.1

Published

Top level ARC DataModel and API function descriptions.

Readme

RO-Crate Profile Crate Creator

Polyglot library for creation of RO-Crate Profile Crates according to the official documentation, and based on the examples of profile run crate and workflow crate.

| Version | Downloads | | :--------|-----------:| ||| ||| |||

Install

.NET

#r "nuget: ROCratePCC"
<PackageReference Include="ROCratePCC" Version="1.1.0" />

JavaScript

npm i @nfdi4plants/rocratepcc

Python

pip install rocratepcc

Documentation

Python

from rocratepcc import *

# List all types which are used in this profile
types = [
    UsedType(iri = "https://schema.org/CreativeWork", name = "CreativeWork"),
    UsedType(iri = "http://www.w3.org/ns/dx/prof/Profile", name = "Profile"),
]

# List all authors of this profile
authors = [
    Author(orcid = "0000-0002-5526-71389", name = "Florian Wetzels"),
    Author(orcid = "0000-0003-1945-6342", name = "Heinrich Lukas Weil"),
]

# Version of the profile (semver if possible)
version = "1.0.0-draft.2"

# Identifier of the root data entity of the profile, if url not applicable then use "./"
id = f"https://github.com/nfdi4plants/isa-ro-crate-profile/tree/{version}/profile"

# Name of the profile
name = "ISA RO-Crate Profile"

# Description of the profile
description = "An RO-Crate profile for representing ISA data in Research Object Crates (RO-Crates). This profile defines how to represent ISA Investigation, Study, and Assay data using RO-Crate metadata."

# License by which the profile is published
license = License(iri = "https://mit-license.org/", name = "MIT License")

# List of the textual resources we use as specifications for this profile
specifications = [
    TextualResource(
        name = "ISA RO-Crate Profile description",
        file_path = "isa_ro_crate.md",
        encoding_format = "text/markdown",
        root_data_entity_id = id
    )
]

# List of all the resource descriptors. Here, only the specification is given. Other possible types
resourceDescriptors = [
    Specification(specifications)
    # Example()
    # Guidance()
    # Constraint()
]

# The root data entity of the profile
rootEntity = RootDataEntity(
        id = id,
        name = name,
        description = description,
        license = license,
        used_types = types,
        resource_descriptors = resourceDescriptors,
        authors = authors
    )

# Profile entity
profile = Profile(
        rootEntity,
        license = license
    )

# Convert the profile to a JSON-LD string
string = profile.ToROCrateJsonString(spaces = 2)

# Write the string to a file "ro-crate-metadata.json"
with open("ro-crate-metadata.json", "w", encoding="utf-8") as f:
    f.write(string)

resulting in the following ro-crate-metadata.json:

{
  "@context": "https://w3id.org/ro/crate/1.2-DRAFT/context",
  "@graph": [
    {
      "@id": "https://mit-license.org/",
      "@type": "CreativeWork",
      "name": "MIT License"
    },
    {
      "@id": "https://orcid.org/0000-0002-5526-71389",
      "@type": "Person",
      "name": "Florian Wetzels"
    },
    {
      "@id": "https://orcid.org/0000-0003-1945-6342",
      "@type": "Person",
      "name": "Heinrich Lukas Weil"
    },
    {
      "@id": "isa_ro_crate.md",
      "@type": "File",
      "name": "ISA RO-Crate Profile description",
      "encodingFormat": "text/markdown",
      "about": {
        "@id": "https://github.com/nfdi4plants/isa-ro-crate-profile/tree/1.0.0-draft.2/profile"
      }
    },
    {
      "@id": "https://schema.org/CreativeWork",
      "@type": "DefinedTerm",
      "name": "CreativeWork"
    },
    {
      "@id": "http://www.w3.org/ns/dx/prof/Profile",
      "@type": "DefinedTerm",
      "name": "Profile"
    },
    {
      "@id": "#hasSpecification",
      "@type": "ResourceDescriptor",
      "hasRole": {
        "@id": "http://www.w3.org/ns/dx/prof/role/specification"
      },
      "hasArtifact": {
        "@id": "isa_ro_crate.md"
      }
    },
    {
      "@id": "https://github.com/nfdi4plants/isa-ro-crate-profile/tree/1.0.0-draft.2/profile",
      "@type": [
        "Dataset",
        "Profile"
      ],
      "license": {
        "@id": "https://mit-license.org/"
      },
      "name": "ISA RO-Crate Profile",
      "description": "An RO-Crate profile for representing ISA data in Research Object Crates (RO-Crates). This profile defines how to represent ISA Investigation, Study, and Assay data using RO-Crate metadata.",
      "author": [
        {
          "@id": "https://orcid.org/0000-0002-5526-71389"
        },
        {
          "@id": "https://orcid.org/0000-0003-1945-6342"
        }
      ],
      "hasPart": [
        {
          "@id": "isa_ro_crate.md"
        },
        {
          "@id": "https://schema.org/CreativeWork"
        },
        {
          "@id": "http://www.w3.org/ns/dx/prof/Profile"
        }
      ],
      "hasResource": {
        "@id": "#hasSpecification"
      }
    },
    {
      "@id": "ro-crate-metadata.json",
      "@type": "CreativeWork",
      "about": {
        "@id": "https://github.com/nfdi4plants/isa-ro-crate-profile/tree/1.0.0-draft.2/profile"
      },
      "license": {
        "@id": "https://mit-license.org/"
      },
      "conformsTo": "https://w3id.org/ro/crate/1.2"
    }
  ]
}

FSharp

open ROCratePCC

let types : ResizeArray<UsedType> = ResizeArray [
    UsedType(iri = "https://schema.org/CreativeWork", name = "CreativeWork");
    UsedType(iri = "http://www.w3.org/ns/dx/prof/Profile", name = "Profile");
]

let authors : ResizeArray<Author> = ResizeArray [
    Author(orcid = "0000-0002-5526-71389", name = "Florian Wetzels");
    Author(orcid = "0000-0003-1945-6342", name = "Heinrich Lukas Weil");
]

let version = "1.0.0-draft.2"

let id = $"https://github.com/nfdi4plants/isa-ro-crate-profile/tree/{version}/profile"

let name = "ISA RO-Crate Profile"

let description = "An RO-Crate profile for representing ISA data in Research Object Crates (RO-Crates). This profile defines how to represent ISA Investigation, Study, and Assay data using RO-Crate metadata."

let license = License(iri = "https://mit-license.org/", name = "MIT License")

let specifications = ResizeArray[
    TextualResource(
        name = "ISA RO-Crate Profile description",
        filePath = "isa_ro_crate.md",
        encodingFormat = "text/markdown",
        rootDataEntityId = id
    )
]


let resourceDescriptors = ResizeArray [
    Specification(specifications) :> ResourceDescriptor
]

let rootEntity = 
    RootDataEntity(
        id = id,
        name = name,
        description = description,
        license = license,
        usedTypes = types,
        resourceDescriptors = resourceDescriptors,
        authors = ResizeArray authors
    )

let profile = 
    Profile(
        rootEntity,
        license = license
    )

let string = profile.ToROCrateJsonString(spaces = 2)

System.IO.File.WriteAllText("profile/ro-crate-metadata.json", string)

Development

Requirements

  • nodejs and npm
    • verify with node --version (Tested with v18.16.1)
    • verify with npm --version (Tested with v9.2.0)
  • .NET SDK
    • verify with dotnet --version (Tested with 7.0.306)
  • Python
    • verify with py --version (Tested with 3.12.2, known to work only for >=3.11)

Local Setup

On windows you can use the setup.cmd to run the following steps automatically!

  1. Setup dotnet tools

    dotnet tool restore

  2. Install NPM dependencies

    npm install

  3. Setup python environment

    py -m venv .venv

  4. Install uv and dependencies

    1. .\.venv\Scripts\python.exe -m pip install -U pip setuptools
    2. .\.venv\Scripts\python.exe -m pip install uv
    3. .\.venv\Scripts\python.exe -m uv pip install -r pyproject.toml --group dev

Verify correct setup with ./build.cmd runtests