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

@guardian-network/policy-contracts

v0.3.6

Published

Policy with dynamic conditions defined onchain

Readme

Contracts for Composable policy with arbitrary artifacts system

DO NOT USE IN PRODUCTION.
This implementation is in early development. It has not been reviewed or audited. It is not suitable to be used in production. Expect bugs!

The policy system needs to be backed with all kinds of setellite contracts to work properly. This package provides them.

  • Predefined artifacts
    Provides a set of already writted basic artifacts to start with.
    They include some kinds of logical operators, mathematical operations, language constructions and so on.
    packages/contracts/contracts/pre-defined

  • Policy handler entrypoint
    The main contract a third-party developer will interact with.
    packages/contracts/contracts/PolicyHandler.sol
    Contains 3 crusial methods:

  1. set
    Creates the policy using its definition in final representation form (IR translator output, DSL compiler output).
  2. evaluate
    Evaluates the policy agains provided variables. That is the main method to use when one wants to test if the operation (transaction, action, request, etc) complies with the policy created on step 1 (set). The variables must be provided in a specific format which can be fitted in with the help of variables package.
  3. getVariablesList
    Used to obtain, enumerate or show to the client all the variables that must be filled for evaluate to be dispatched. Contains descriptors of the variables, their types and other metadata.

To use the policy system, one needs to deploy PolicyHandler.sol and all needed artifacts (ours or writted by third-party). After this, the following steps are considered standard:

  1. Create policy
    Freshly deployed PolicyHandler do not contain any policy logic. Create the policy using DSL or other instrument that translates into FR, and then use the output to invoke set.
  2. Prepare arguments
    If the policy contains any variables that need to be filled, use getVariablesList to get them and format their values in any convenient way (e.g. with the help of variables package).
  3. Evaluate policy
    Use values obtained on step 2 to dispatch evaluate method. The policy may pass or reject - get the evaluation result as the method return value or via Evaluated(bool result, bytes32 rootNode) event.