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

@linkedpm/sdk

v1.0.3

Published

Linked Markdown SDK for uploading/fetching

Downloads

11

Readme

Linked.md Package Manager SDK

what?

https://linked.md

how use sdk?

  • import @linkedpm/sdk
  • requires an ethers provider
  • all read/write functions have a config object at the end, you can put in a provider/signer and a custom contract if you like

claimZone

calls the claimZone() function on the contract.

usage example:

import sdk from "@linkedpm/sdk";

async function claimIt() {
  await sdk.claimZone("zone-name", {
    signer: new ethers.Wallet("private key", provider),
    // ^ or any other signer, not just a wallet
    contract: contractAddress,
    // you don't need to specify this, it should
    // autodetect based on the signer's blockchain
  });
}

createRevision

creates a new revision of an agreement and throws if it exists (no real custom error handling).

if agreement also doesnt exist, then it'll make the agreement. note that revisions other than latest are immutable

the IPFS CID you point to should be a JSON file with the following format:

{
  "name": "Revision name here, no Markdown",
  "description": "Revision description in Markdown, may include a changelog\nThat \\n makes a newline",
  "body": "Actual agreement text here written in Linked Markdown"
}

the linked markdown parser should fetch your agreements at runtime. it should only fetch IPFS CIDs.

usage example:

import sdk from "@linkedpm/sdk";

async function create() {
  // publish your stuff to IPFS
  // this SDK is unopinionated
  let ipfsCID = ...

  // create the revision on-chain
  await sdk.createRevision("zone-name", "key-name", "latest", ipfsCID, {
    signer: new ethers.Wallet("private key", provider),
    // ^ or any other signer, not just a wallet
    contract: contractAddress,
    // you don't need to specify this, it should
    // autodetect based on the signer's blockchain
  });
}

revisionData

gets the IPFS CID of the revision.

usage example:

import sdk from "@linkedpm/sdk";

async function check() {
  const data = await sdk.revisionData("zonename", "thing", "v69.420.0", {
    provider,
    contract: contractAddress,
    // you don't need to specify this, it should
    // autodetect based on the provider's blockchain
  });

  console.log(data);
}

zoneOwner

gets the owner of a zone

usage example:

import sdk from "@linkedpm/sdk";

async function checkOwner() {
  const owner = await sdk.zoneOwner("zonename", {
    provider,
    contract: contractAddress,
    // you don't need to specify this, it should
    // autodetect based on the provider's blockchain
  });

  console.log(owner);
}

resolvePath

a pure function that takes in a path, for example "zonename/[email protected]" and returns an array of "zonename", "thing", and "v69.420.0".

you can use the spread operator to pass these values easily to createRevision and revisionData

usage example:

import sdk, { resolvePath } from "@linkedpm/sdk";

async function check() {
  await sdk.revisionData(...resolvePath("zonename/[email protected]"), {
    provider,
    // provider can be unspecified
    contract: contractAddress,
    // you don't need to specify this, it should
    // autodetect based on the provider's blockchain
  });
}