open-index/open-npm huggingface dataset:
npm package: @me3/subdomain-registrar
Description: The me3 Subdomain Registrar contract ABIs
Author: charchar.eth
Latest version: 0.1.0

# me3 Subdomain Registrar

Allow users of your NFT community, DAO, or club to register subdomains and user profiles under your project's ENS name.

Glossary:

* **Project**: an NFT project, we track their ENS node in our smart contracts (eg: pcc.eth)
* **Subdomain**: an ENS subnode attached to an associated Project node (eg: someone.pcc.eth)
* **Authoriser**: a contract that defines the authorisation rules for a project

## Deployments

| Contract | Goerli | Mainnet |
| ---      | ---    | ---     |
|Registrar|`0x8EaE99Cdb7D8889e0c12d650De138983895C22F1`||
|Gateway Beta|`0x201C5AA9556fDf8D5f6cDa1C59735Dd7151EEcEf`||

## Project Controls

NFT projects have the following set of controls for subdomain registration:

* authorise which addresses can register a subdomain
* validate that a subdomain can be registered
* decide who the subdomain owner is (the project or the registrant)

## NFT Authoriser

### Features

Subdomains...

* can only be registered by an NFT token holder
* can only be edited by the current NFT holder
* are owned by the authoriser contract
* must be longer than 3 characters

### Limitations

* user who mints the subdomain does not own it
* transferring the related token Id transfers edit access to new token holder
npm package: @me3d/async-logic
Description: An Asynchronous framework for logical operands in NodeJS
Author: Matt Griffiths
Latest version: 0.1.2

# AsyncLogic
An Asynchronous framework for logical operands in NodeJS.

[See full API docs here](https://theinsomnolent.github.io/AsyncLogic/)


## Installing
To install `AsyncLogic` simply run:
```bash
$ yarn add @me3d/async-logic
```
or
```bash
$ npm install @me3d/async-logic
```

## Using AsyncLogic
### Importing
AsyncLogic's base components can be imported into your Node project using:
```javascript
const { AsyncLogic, AsyncOr, AsyncAnd, AsyncNot } = require('@me3d/async-logic')
```

### Setting up a basic AsyncLogic environment
A basic async environment can be constructed with:
1. An `AsyncLogic` instance
2. At least one async operator such as `AsyncOr`
3. At least two async input functions to evaluate
```javascript
const result = await new AsyncLogic(
    new AsyncOr(
        asyncFunctionOne,
        asyncFunctionTwo
    )
).compute()
```

### Multi-input operators
Operators can support an arbitrary number of inputs. 
```javascript
const result = await new AsyncLogic(
    new AsyncAnd(
        asyncFunctionOne,
        asyncFunctionTwo,
        asyncFunctionThree,
        asyncFunctionFour,
        asyncFunctionFive
    )
).compute()
```


### Nesting operators
Operators can easily be nested as follows:
```javascript
const result = await new AsyncLogic(
    new AsyncAnd(
        asyncFunctionOne,
        new AsyncOr(
            asyncFunctionTwo,
            asyncFunctionThree
        )
    )
).compute()
```