0.0.1-alpha.0 • Published 1 year ago

recap-ts v0.0.1-alpha.0

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

ReCap

A Typescript implementation of ERC-5573 ReCap, enabling applications to express UCAN-style object capabilities using Sign In With Ethereum.

This package is still ALPHA software, bugs may exist and APIs may change in future.

Installation

ReCap can be installed via npm:

npm -i siwe-recap

yarn:

yarn add siwe-recap

or package.json entry:

{
  "dependencies": {
    "siwe-recap": "0.1.0"
  }
}

Usage

ReCaps are designed to be used in conjunction with SIWE. They can be initialized and built as follows:

import { Recap } from "siwe-recap";

const recap = new Recap();

recap.addAttenuation("https://example.com/my/resource", "crud", "read");
recap.addAttenuation("https://example.com/my/resource", "crud", "update", {
  maxTimes: 5,
});
recap.addProof("bagaaierasords4njcts6vs7qvdjfcvgnume4hqohf65zsfguprqphs3icwea");

console.log(recap.attenuations);
// {
//   "https://example.com/my/resource": {
//     "crud/read": [{}],
//     "crud/update": [{ maxTimes: 5 }]
//   }
// }

They can also be applied to or extracted from SIWE messages:

import { SiweMessage } from 'siwe';
import { Recap } from 'siwe-recap';

const siwe = new SiweMessage( ... );

// we can extract the recap while verifying that the statement in `siwe` matches
// the recap listed in `siwe`s resource list
const recap = Recap.extract_and_verify(siwe);

//
recap.addAttenuation('https://example.com/my/resource', 'crud', 'read');

// the new change will be merged into the existing recap in `siwe`
recap.add_to_siwe_messate(siwe);