Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@dyne/slangroom-chain

Package Overview
Dependencies
Maintainers
2
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@dyne/slangroom-chain

Execute chain of slangroom smart contracts

  • 1.5.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
0
Maintainers
2
Weekly downloads
 
Created
Source

@dyne/slangroom-chain

Execute chain of slangroom smart contracts

coverage badge Dyne.org



Zenroom and zencode are part of the DECODE project about data-ownership and technological sovereignty. Our effort is that of improving people's awareness of how their data is processed by algorithms, as well facilitate the work of developers to create along privacy by design principles using algorithms that can be deployed in any situation without any change.

🚩 Table of Contents (click to expand)

💾 Install

pnpm add @dyne/slangroom-chain


🎮 Quick start

In many use-cases you want to chain execution of different slangroom and pass the output as keys/data to other slangrooms. This small library helps to achieve that by putting your slangroom in an array of steps.

in the following example we define two steps and the result of the first is passed as keys to the second one.

import { execute } from '@dyne/slangroom-chain';

const newAccount = `{"username": "Alice"}`;

const steps_definition = {
  verbosity: false,
  steps: [
    {
      id: 'step1',
      slangroom: `Scenario ecdh: create the keypair at user creation
Given that my name is in a 'string' named 'username'
When I create the keypair
Then print my 'keypair'`,
      data: newAccount,
    },
    {
      id: 'step2',
      slangroom: `Scenario 'ecdh': Publish the public key
Given that my name is in a 'string' named 'username'
and I have my 'keypair'
Then print my 'public key' from 'keypair'`,
      data: newAccount,
      keysFromStep: 'step1',
    },
  ],
};

execute(steps).then((r) => console.log(r));

Step definitions

The steps definition is an object literal defined as follows:

type Steps = {
  readonly steps: readonly Step[]; // an array of step definitions
  readonly conf?: string; // zenroom configuration, could be overridden by each step
  readonly verbose?: boolean;
};

The single step definition is an object literal defined as follows:

type Step = {
  readonly id: string;
  readonly slangroom: string;
  readonly data?: string;
  readonly dataFromStep?: string;
  readonly dataTransform?:
    | ((data: string) => string)
    | ((data: string) => Promise<string>);
  readonly keys?: string;
  readonly keysFromStep?: string;
  readonly keysTransform?:
    | ((data: string) => string)
    | ((data: string) => Promise<string>);
  readonly conf?: string;
};

The list of the attributes are:

  • id mandatory, a unique string to identify your step
  • slangroom mandatory, your slangroom to run
  • data optional, the data; when you want to pass it directly
  • dataFromStep optional, the step.id to get the result as input
  • dataTransform optional, a function that accepts a string and return a string, that will be executed on data just before the execution. This intended to be used to mangle your data with some transformation (eg. remove a key, or rename it)
  • keys optional, the keys; when you want to pass it directly
  • keysFromStep optional, the step.id to get the result as input
  • keysTransform optional, a function that accepts a string and return a string, that will be executed on keys just before the execution. This intended to be used to mangle your keys with some transformation (eg. remove an attribute, or rename it)
  • conf optional, the zenroom conf for the specific slangroom_exec (eg. 'memmanager=lw') overrides generic one

📋 Testing

pnpm coverage

🔝 back to top


🐛 Troubleshooting & debugging

No known issue by now

🔝 back to top


😍 Acknowledgements

software by Dyne.org

Copyleft (ɔ) 2021 by Dyne.org foundation, Amsterdam

Designed, written and maintained by Puria Nafisi Azizi Slangroom added by Matteo Cristino

🔝 back to top


https://dev.zenroom.org/

https://dyne.org/

🔝 back to top


👤 Contributing

Please first take a look at the Dyne.org - Contributor License Agreement then

  1. 🔀 FORK IT
  2. Create your feature branch git checkout -b feature/branch
  3. Commit your changes git commit -am 'Add some fooBar'
  4. Push to the branch git push origin feature/branch
  5. Create a new Pull Request
  6. 🙏 Thank you

🔝 back to top


💼 License

@dyne/slangroom-chain - Execute chain of slangroom smart contracts
Copyleft (ɔ) 2021-2024 Dyne.org foundation, Amsterdam

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

🔝 back to top

FAQs

Package last updated on 17 May 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc