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

jellyfish-scm

v0.0.9

Published

Easy to use version control management

Downloads

6

Readme

JellyFish provides an easy to use version control system, similar to git.

Install

JellyFish uses Bun as its runtime. Install bun from bun.sh.

After installing Bun, you can easily install JellyFish.

bun i -g jellyfish-scm

Features

  • Quickly create a repository (jelly init/jelly i)
  • Easily change branches (jelly edit --checkout/jelly e --checkout)
  • Quickly scan repository for changes and stage them for commit (jelly stage/jelly s)
  • Create commits (jelly commit -m <message>/jelly cm -m <message>)
  • Clone repositories from a remote source (jelly clone <source> [destination>/jelly cl <source> [destination>)
  • Pull from your remote repository quickly (jelly upsteam/jelly pull/jelly up/jelly pl)
  • Push commits to your remote repository (jelly push/jelly ps)
  • Host quick servers (jelly web) (Default port: 3675)

...see more commands and options with jelly -h

Todo

  • Issues
  • Finish Web UI
    • API endpoints for push
    • Issue management

Commit Example

jelly init # Create repository
touch README.md # Create README.md file
jelly edit --origin "https://example-remote-origin.com/example/example" # Set repo origin
jelly stage # Stage changes
jelly commit -m "Initial" # Create commit
jelly push # Push commit

Short Commit Example

All actions done through the JellyFish CLI can be done through shorter interfaces.

jelly i # Create repository
touch README.md # Create README.md file
jelly e -o "https://example-remote-origin.com/example/example" # Set repo origin
jelly s # Stage changes
jelly cm -m "Initial" # Create commit
jelly ps # Push commit

jellyignore.toml Example

The jellyignore.toml file is very similar to the .gitignore file, but it matches files by regular expressions instead.

# This file ignores everything with the name "node_modules" (case sensitive)

[regex]
ignorelist = [
    "(node_modules)"
]

This file will be created when you run jelly init, some special files and folders will be automatically added to the file on creation.

Push Example

This example covers pushing commits to a local web server run from jelly web.

# start the web server
jelly web

After starting the server, you must open it in the browser (localhost:3675) and get your access token. Add this token to your localdev.toml file with jelly edit --token <token>

jelly edit --token <token>

You can then push your changes to the server!

jelly push

File Schemas

.jelly/map.toml

  • objects: Files (and their hashes) that exist in the current stage
    • name: File name {string}
    • name_hash: Hash of file name {string}
    • parent: Parent directory name hash {string}
    • branch: Name of branch this exists in {string}
    • path: Relative path to file from repository root {string}
  • branches: All branches in the repository
    • [name]: Hash of branch name {string}

.jelly/jellyrepo.toml

  • repo:
    • name: Repository name {string}
    • mapBind: Location of map file relative to jellyrepo.toml {string}
    • masterBranch:
      • name: Master branch name {string}
      • hash: Master branch name hash {string}

.jelly/localdev.toml

  • branch: Name of the current editing branch {string}
  • remotes:
    • origin: URL of origin remote {string}
  • staged_changes: List of changes {Array<[string, OBJECT_CHANGE]>}
export enum OBJECT_CHANGE {
    CONTENT = "0", // content changes
    CREATED = "1", // created file
    DELETED = "-1", // deleted file
}

branches/[branch_name]/commits.toml

  • branch: Hash of branch these commits belong to {string}
  • commits:
    • hash: Commit hash {string}
    • changes: List of changes, same as localdev.staged_changes {Array<[string, OBJECT_CHANGE]>}
    • message: Commit message {string}