open-index/open-npm huggingface dataset:
npm package: @macellan/json-extractify
Description: ## Description
Author: Onur Özkaya
Latest version: 0.1.3

# `@macellan/json-extractify`

## Description

Parses a string and extracts JSON objects from it.

## Parameters

-   **data** (`string`): The string to parse.

## Returns

-   **Array of `object`**: An array of parsed JSON objects.

## Usage

### Basic Example

```typescript
import JsonExtractify from '@macellan/json-extractify'

const json = '{ "foo": "bar" } { "abc": "xyz" }'

const value = JsonExtractify.parse(json)

console.log(value)
// Output: [{ foo: 'bar' }, { abc: 'xyz' }]
```
npm package: @macellan/react-native-android-signature-helper
Description: React Native package for Android app signature helper.
Author: Onur Özkaya
Latest version: 0.3.0

# @macellan/react-native-android-signature-helper

React Native package for Android app signature helper.

## Installation

```sh
yarn add @macellan/react-native-android-signature-helper
```

## Usage

```tsx
import * as React from 'react'
import { Platform, View, Text } from 'react-native'

import { getSignatureHash } from '@macellan/react-native-android-signature-helper'

const App: React.FC = () => {
    const [hash, setHash] = React.useState<string>('')

    React.useEffect(() => {
        if (Platform.OS !== 'android') return
        getSignatureHash().then(hash => {
            setHash(hash)
        })
    }, [])

    return (
        <View>
            <Text>App Hash: {hash}</Text>
        </View>
    )
}

export default App
```

## Contributing

See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.

## License

MIT

---

Made with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)
npm package: @macellan/react-native-masterpass-tr
Description: React Native Masterpass Turkey Package
Author: Onur Özkaya
Latest version: 1.0.8

# React Native Masterpass TR

Masterpass Turkey Package for React Native

## Installation

```sh
npm install @macellan/react-native-masterpass-tr --save
```

or

```sh
yarn add @macellan/react-native-masterpass-tr
```

## Install Dependencies

Please, install dependencies for using this package.

```sh
yarn add react-native-webview react-native-event-listeners
```

- [React Native WebView Installation](https://github.com/react-native-webview/react-native-webview/blob/master/docs/Getting-Started.md)
- [React Native Event Listener Installation](https://github.com/meinto/react-native-event-listeners#readme)

## Usage

Wrap your parent component in Provider from react-native-masterpass-tr.

```tsx
import * as React from 'react';
import { MasterPassProvider, IConfig } from 'react-native-masterpass-tr';

const ParentComponent: React.FC = () => {

  /* MasterPass Config Object */
  const config: IConfig = {
    token: '',
    serviceUrl: '',
    clientId: '',
    userId: '',
    sendSmsLanguage: '',
    sendSms: '',
    referenceNo: '',
    clientIp: '',
  };

  return (
    <MasterPassProvider config={config}>
      <ChildComponent />
      {/* Other Child Components */}
    </MasterPassProvider>;
  );
}

export default ParentComponent;

```

Add MasterPassTurkey to the component you want to use.

```tsx
import * as React from 'react';
import {
  MasterPassTurkey,
  IMasterPassTurkeyRefs,
} from 'react-native-masterpass-tr';

const ChildComponent: React.FC = () => {
  const masterpass = React.useRef<IMasterPassTurkeyRefs>(null);

  const onRegistrationCheck = React.useCallback(() => {
    masterpass.current
      ?.registrationCheck()
      .then((result) => {
        console.log(result);
      })
      .catch((error) => {
        console.log(error);
      });
  }, []);

  return <MasterPassTurkey ref={ref} />;
};

export default ChildComponent;
```

## License

MIT

## Credits

Made with ❤️ at [Macellan](https://macellan.net) by [@nrzky](https://github.com/nrzky)
npm package: @macemclain/sdk
Description: 🛠 An SDK for building applications on top of OptionsDesk.
Latest version: 1.0.0

# Sushiswap SDK

In-depth documentation on this SDK is available at [uniswap.org](https://uniswap.org/docs/v2/SDK/getting-started/).

This modifies uniswap-sdk's UniswapV2Factory address. The new address for sushiswap is  `0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac`.

## Running tests

To run the tests, follow these steps. You must have at least node v10 and [yarn](https://yarnpkg.com/) installed.

First clone the repository:

```sh
git clone https://github.com/sushiswap/sushiswap-sdk.git
```

Move into the sushiswap-sdk working directory

```sh
cd sushiswap-sdk/
```

Install dependencies

```sh
yarn install
```

Run tests

```sh
yarn test
```

You should see output like the following:

```sh
yarn run v1.22.4
$ tsdx test
 PASS  test/constants.test.ts
 PASS  test/pair.test.ts
 PASS  test/fraction.test.ts
 PASS  test/miscellaneous.test.ts
 PASS  test/entities.test.ts
 PASS  test/trade.test.ts

Test Suites: 1 skipped, 6 passed, 6 of 7 total
Tests:       3 skipped, 82 passed, 85 total
Snapshots:   0 total
Time:        5.091s
Ran all test suites.
✨  Done in 6.61s.
```
npm package: @macfja/rollup-plugin-prompt-replace
Description: Rollup plugin that ask for text to replace
Author: MacFJA
Latest version: 1.0.1

# Rollup plugin prompt replace

Rollup plugin that ask for text to replace

----

This plugin use [`@rollup/plugin-replace`](https://github.com/rollup/plugins/tree/master/packages/replace) under the hood.
Any options of `@rollup/plugin-replace` can be used.

## Installation

```
npm install --save-dev @macfja/rollup-plugin-prompt-replace
```

## Usage

```javascript
import replace from "@macfja/rollup-plugin-prompt-replace"

module.exports = {
    ...
        plugins: [replace({ '__test_api_endpoint__': 'URL to the test API: ' })]
};
```

## Contributing

Contributions are welcome. Please open up an issue or create PR if you would like to help out.

Read more in the [Contributing file](CONTRIBUTING.md)

## License

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
npm package: @macfja/serializer
Description: Transform any object, class, array, primitive to a serialized string and vice-versa
Author: MacFJA
Latest version: 1.1.4

# Javascript data serializer

Transform any object, class, array, primitive to a serialized string and vice-versa

![Github CI](https://github.com/macfja/js-serializer/actions/workflows/quality.yml/badge.svg)
![NPM bundle size](https://img.shields.io/bundlephobia/minzip/@macfja/serializer)
![Download per week](https://img.shields.io/npm/dw/@macfja/serializer)
![License](https://img.shields.io/npm/l/@macfja/serializer)
![NPM version](https://img.shields.io/npm/v/@macfja/serializer)
![Snyk Vulnerabilities for npm package](https://img.shields.io/snyk/vulnerabilities/npm/@macfja/serializer)

## Installation

```shell
npm install @macfja/serializer
# or
yarn add @macfja/serializer
# or
pnpm add @macfja/serializer
```

## Usage

```js
import { serialize, deserialize } from "@macfja/serializer";

const serialized = serialize({ any: "data", you: "want" });
// serialized is a string

const myData = deserialize(serialized);
// myData is now `{any: 'data', you: 'want'}`
```

```js
import {
  serialize,
  deserialize,
  addGlobalAllowedClass,
} from "@macfja/serializer";

function MyClass(data) {
  this.data = data;
}
MyClass.prototype.getData = function () {
  return this.data;
};
addGlobalAllowedClass(MyClass);

let myInstance = new MyData("john");

const serialized = serialize(myInstance);
// serialized is a string

const myData = deserialize(serialized);
console.log(myData.getData()); // "john"
```

### Utilities usage

```js
import { serialize, getCollectedClasses } from "@macfja/serializer";

const serialized = serialize(myComplexData);
// serialized is a string
const usedClasses = getCollectedClasses(true);
// usedClasses contains the list of classes found during the serialization
```

```js
import { addClassHandler } from "@macfja/serializer";

function MyClass() {
  this.name = "doe";
}
MyClass.prototype.setName = function (name) {
  this.name = name;
};
MyClass.prototype.getName = function () {
  return this.name;
};

addClassHandler(
  "MyClass",
  (data) => ({ name: data.getName() }),
  (plain) => {
    const value = new MyClass();
    value.setName(plain.name);
    return value;
  }
);

// Now `serialize` and `deserialize` will use your custom serializer / deserializer
// for any instance of `MyClass`
```

## Feature

- Serialize any data, primitive, array, object, class, and any combination
- Handle Javascript native classes (`Date`, `BigInt`, `String`, `RegExp`, `Number`, `Map`, `Set`, `ArrayBuffer`, `DataView`, `Error`, `EvalError`, `RangeError`, `AggregateError`, `ReferenceError`, `SyntaxError`, `TypeError`, `URIError`, `Int8Array`, `Uint8Array`, `Uint8ClampedArray`, `Int16Array`, `Uint16Array`, `Int32Array`, `Uint32Array`, `Float32Array`, `Float64Array`, `BigInt64Array`, `BigUint64Array`)
- Handle data recursion

## Contributing

Contributions are welcome. Please open up an issue or create PR if you would like to help out.

Read more in the [Contributing file](CONTRIBUTING.md)

## License

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
npm package: @macfja/svelte-adapter-neutralino
Description: SvelteKit adapter to generate a Neutralinojs application
Author: MacFJA
Latest version: 0.3.0

# Svelte Adapter for Neutralino

A SvelteKit adapter to generate a [Neutralinojs](https://neutralino.js.org/) application

## Installation

```
npm install --save-dev @macfja/svelte-adapter-neutralino
```

## Usage

```javascript
// svelte.config.js
import adapter from "@macfja/svelte-adapter-neutralino"

export default {
    kit: {
        adapter: adapter({
            // default options are shown
            name: "Svelte Kit",
            applicationId: "dev.svelte.kit",
            icon: "favicon.png",
            window: {
                width: 800,
                height: 500,
                minWidth: 400,
                minHeight: 200,
                resizable: true,
                maximize: false,
            },
            output: "build",
            verions: {
                client: "3.1.0",
                binary: "4.2.0",
            },
        }),
    },
}
```

## Contributing

Contributions are welcome. Please open up an issue or create PR if you would like to help out.

Read more in the [Contributing file](CONTRIBUTING.md)

## License

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
npm package: @macfja/svelte-expirable
Description: A Svelte store with items that expire
Author: MacFJA
Latest version: 1.0.1

# Svelte Expirable store

A Svelte store with items that expire

## Installation

```
npm install @macfja/svelte-expirable
```

## Usage

`notification.js`
```javascript
import { expirable } from "@macfja/svelte-expirable"

export const notifications = expirable()
```

`App.svelte`
```html
<script>
    import { notifications } from './notifications.js'
    
    const onClickHandler = () => {
        // Do some action
        notifications.push('Data saved', 2) // Message expire after 2 seconds
    }
</script>

<header>
    {#each $notifications as {data, id, repeated} (id)}
        <div class="message">{data}{#if repeated > 0} (x{repeated + 1}){/if}</div>
    {/each}
</header>
```

When the same data is push to the store, the expiration time is reset to the new TTL, and the `repeated` variable is incremented

## Contributing

Contributions are welcome. Please open up an issue or create PR if you would like to help out.

Read more in the [Contributing file](CONTRIBUTING.md)

## License

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
npm package: @macfja/svelte-multi-adapter
Description: A Svelte adapter that launch other adapters
Author: MacFJA
Latest version: 1.0.2

# Svelte Multi Adapter

An adapter to launch multiple adapter

## Installation

```bash
npm install --save-dev @macfja/svelte-multi-adapter
# or
pnpm add --save-dev @macfja/svelte-multi-adapter
# or
yarn add --dev @macfja/svelte-multi-adapter
```

## Usage

Inside `svelte.config.js`:
```javascript
import staticAdapter from '@sveltejs/adapter-static'
import nodeAdapter from '@sveltejs/adapter-node'
import multiAdapter from '@macfja/svelte-multi-adapter'

const config = {
    kit: {
        adapter: multiAdapter([staticAdapter(/* ... */), nodeAdapter(/* ... */)]),
        target: '#svelte',
    }
};

export default config;
```

## Contributing

Contributions are welcome. Please open up an issue or create PR if you would like to help out.

Read more in the [Contributing file](CONTRIBUTING.md)

## License

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
npm package: @macfja/svelte-p5
Description: Small wrapper around P5 for Svelte
Author: MacFJA
Latest version: 1.2.0

# Svelte P5 wrapper

The small wrapper allow the usage of p5*js in Svelte

## Installation

```
npm install @macfja/svelte-p5
```

## Usage & Examples

The component (`<P5 />`) execute every functions that are pass as a p5*js function.
Every function have access to 3 parameters:
- 1st parameter: The current sketch context (`createVector`, `circle`, `fill`, etc.)
- 2nd parameter: The map of p5*js classes (`Color`, `Geometry`, `Shader`, etc.)
- 3rd parameter: The map of p5*js constants (`BURN`, `DEG_TO_RAD`, `PI`, `RIGHT_ARROW`, etc.)

```html
<script>
import P5 from "@macfja/svelte-p5"

function setup(p5, classes, constants) {
  p5.createCanvas(400, 400);
}

function draw(p5, classes, constants) {
  p5.background(220);
  p5.ellipse(50,50,80,80);
}
</script>

<P5 {setup} {draw} />
```

```html
<script>
import P5 from "@macfja/svelte-p5"

let y = 0;
let sketch = {
  setup: p5 => {
    p5.createCanvas(720, 400);
    p5.stroke(255); // Set line drawing color to white
    p5.frameRate(30);
  },
  draw: p5 => {
    p5.background(0); // Set the background to black
    y = y - 1;
    if (y < 0) {
      y = p5.height;
    }
    p5.line(0, y, p5.width, y);
  }
}
</script>

<P5 {...sketch} />
```

```html
<script>
import P5 from "@macfja/svelte-p5"

let y = 0;
let speed = 30;
let current;
let sketch = {
  setup: p5 => {
    p5.createCanvas(720, 400);
    p5.stroke(255); // Set line drawing color to white
  },
  draw: (p5) => {
    p5.frameRate(speed);
    p5.background(0); // Set the background to black
    y = y - 1;
    if (y < 0) {
      y = p5.height;
    }
    p5.line(0, y, p5.width, y);
    current = p5.frameRate()
  }
}
</script>

<style>
	label * {
		vertical-align: middle;
	}
</style>

<label>Speed (frame rate): <input type="range" min="1" max="100" bind:value="{speed}" /> {speed} (Current framerate: {Math.round((current + Number.EPSILON) * 100) / 100})</label>
<P5 {...sketch} />
```
([REPL for the 3 example above](https://svelte.dev/repl/5501d3af4d8e4c2caa17324c9724a8f8?version=3.29.4))

## Contributing

Contributions are welcome. Please open up an issue or create PR if you would like to help out.

Read more in the [Contributing file](CONTRIBUTING.md)

## License

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
npm package: @macfja/svelte-redux-devtools
Description: Allow to track and rewind stores value with Redux Devtools.
Author: MacFJA
Latest version: 1.0.0

# Redux Devtools connector for Svelte

Allow to track and rewind stores value with Redux Devtools.

![GitHub Repo stars](https://img.shields.io/github/stars/macfja/svelte-redux-devtools?style=social)
![Download per week](https://img.shields.io/npm/dw/@macfja/svelte-redux-devtools)
![License](https://img.shields.io/npm/l/@macfja/svelte-redux-devtools)
![NPM version](https://img.shields.io/npm/v/@macfja/svelte-redux-devtools)
[![JavaScript Style Guide: Biomejs](https://img.shields.io/badge/code%20style-biomejs-brightgreen.svg?style=flat)](https://biomejs.dev/ "One toolchain for your web project")

## Installation

### NPM

```sh
npm install @macfja/svelte-redux-devtools
```
## Usage

```sveltehtml
<script lang="ts">
import { writable } from "svelte/store"
import { trackStores } from "@macfja/svelte-redux-devtools";
let name = writable("John");
let age = writable(33)

trackStores({ name, age }, { prefix: 'app', hasOneState: true })

</script>

<h1>Hello {$name}!</h1>

<input bind:value={$name} />
<input bind:value={$age} type="range" min={0} max={120} />

```

## Contributing

Contributions are welcome. Please open up an issue or create PR if you would like to help out.

Read more in the [Contributing file](CONTRIBUTING.md)

## License

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
npm package: @macfja/svelte-undoable
Description: Memento design pattern in Svelte
Author: MacFJA
Latest version: 1.1.0

# Svelte Undoable store

Memento design pattern in Svelte

## Installation

```
npm install @macfja/svelte-undoable
```

## Usage

```javascript
import { undoable } from "@macfja/svelte-undoable"

let name = undoable("John")

$name = "Jeanne"
$name = "Doe"

name.undo()
// Now the value of $name is "Jeanne"

name.undo()
// Now $name is "John"

name.redo()
// Now $name is "Jeanne" again
```

## Example

```html
<script>
import { undoable, undo, redo, reset, canUndo, canRedo } from "@macfja/svelte-undoable"
import { derived } from "svelte/store"

let name = undoable("John")
let canUndoName = derived([name], () => canUndo(name))
let canRedoName = derived([name], () => canRedo(name))

let counter = undoable(0, 10, value => value%2 === 0)
let canUndoCounter = derived([counter], () => counter.canUndo())
let canRedoCounter = derived([counter], () => counter.canRedo())
</script>

<h1>Hello {$name}</h1>

<input bind:value={$name} />
<button disabled={!$canUndoName} on:click={() => undo(name)}>Undo</button>
<button disabled={!$canRedoName} on:click={() => redo(name)}>Redo</button>
<button disabled={!$canUndoName} on:click={() => reset(name)}>Reset</button>

<hr />
Only even number as saved in the store history. The maximum number of remembered value is 10.
(If you go to <code>20</code>, you can only go back to <code>2</code>)

<button on:click={() => $counter++}>
  Clicked {$counter} {$counter === 1 ? 'time' : 'times'}
</button>
<button disabled={!$canUndoCounter} on:click={() => undo(counter)}>Undo</button>
<button disabled={!$canRedoCounter} on:click={() => redo(counter)}>Redo</button>
```
([REPL](https://svelte.dev/repl/9412d77adca64a668055027e84619090?version=3.25.0))

## Contributing

Contributions are welcome. Please open up an issue or create PR if you would like to help out.

Read more in the [Contributing file](CONTRIBUTING.md)

## License

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
npm package: @macfja/sveltekit-cas
Description: CAS/SSO integration in SvelteKit
Author: MacFJA
Latest version: 2.0.2

# SvelteKit CAS authentication

A set of functions to ease usage of a CAS/SSO in SvelteKit

![Github CI](https://github.com/macfja/sveltekit-cas/workflows/Quality%20checks/badge.svg)
![GitHub Repo stars](https://img.shields.io/github/stars/macfja/sveltekit-cas?style=social)
![NPM bundle size](https://img.shields.io/bundlephobia/minzip/@macfja/sveltekit-cas)
![Download per week](https://img.shields.io/npm/dw/@macfja/sveltekit-cas)
![License](https://img.shields.io/npm/l/@macfja/sveltekit-cas)
![NPM version](https://img.shields.io/npm/v/@macfja/sveltekit-cas)
![Snyk Vulnerabilities for npm package](https://img.shields.io/snyk/vulnerabilities/npm/@macfja/sveltekit-cas)

## Installation

```shell
npm install --save @macfja/sveltekit-cas
```

## Usage

Protect all pages that start with `/profile/` and only allow user to go on his own page (`/profile/my-cool-username`)

```typescript
// src/hooks.server.ts
import { sessionHook } from "@macfja/sveltekit-session"
import { casHandler } from "@macfja/sveltekit-cas"
import type { Handle } from "@sveltejs/kit"
import { sequence } from "@sveltejs/kit/hooks"

export const handle: Handle = sequence(
	sessionHook(),
	casHandler(
		"http://0.0.0.0:8080",
		2,
		(event) => event.url.pathname.startsWith("/profile/"),
		(event, user) => {
			const regexp = event.url.pathname.match(/\/profile\/(\w+)/)
			return user !== regexp[1]
		}
	)
)
```

Protect endpoint, so only connected user can access it

```typescript
// src/routes/api/user/server.ts
import { error } from "@sveltejs/kit"
import { getUsername } from "@macfja/sveltekit-cas"
import type { RequestHandler } from "./$types"

export const POST: RequestHandler = async (event) => {
	if (getUsername(event) !== "admin") {
		throw error(403)
	}

	// ... Do operation that only the user `admin` can do
}

export const GET: RequestHandler = async (event) => {
	if (getUsername(event) === undefined) {
		throw error(401)
	}

	// ... Do operation that only connected user can do
}
```

## Configuration

The `casHandler` function take 4 parameters to change its behavior:

- `casRoot`: The root URL to the CAS server
- `casVersion`: The version of the CAS server (supported version: `1`, `2`, `3`)
- `authRequired` _(optional)_: A function to indicate if a request should have an authenticated user
- `rejectAccess` _(optional)_: A function to indicate if a particular authenticated user if allowed to do a request

## Contributing

Contributions are welcome. Please open up an issue or create PR if you would like to help out.

Read more in the [Contributing file](CONTRIBUTING.md)

## License

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
npm package: @macfja/sveltekit-session
Description: Session management for SvelteKit
Author: MacFJA
Latest version: 1.1.0

# SvelteKit Session

Session management for SvelteKit

![Github CI](https://github.com/macfja/sveltekit-session/workflows/Quality%20checks/badge.svg)
![GitHub Repo stars](https://img.shields.io/github/stars/macfja/sveltekit-session?style=social)
![NPM bundle size](https://img.shields.io/bundlephobia/minzip/@macfja/sveltekit-session)
![Download per week](https://img.shields.io/npm/dw/@macfja/sveltekit-session)
![License](https://img.shields.io/npm/l/@macfja/sveltekit-session)
![NPM version](https://img.shields.io/npm/v/@macfja/sveltekit-session)
![Snyk Vulnerabilities for npm package](https://img.shields.io/snyk/vulnerabilities/npm/@macfja/sveltekit-session)

## Installation

```
npm install @macfja/sveltekit-session
```

## Usage

```ts
// src/hooks.server.ts
import type { Handle } from "@sveltejs/kit";
import { serverHook } from "@macfja/sveltekit-session";

export const handle: Handle = serverHook;
```

```ts
// src/routes/.../+page.server.ts
import type { PageServerLoad } from "./$types";
import { serverLoad } from "@macfja/sveltekit-session";

export const load: PageServerLoad = serverLoad;
```

```ts
// src/routes/.../+page.ts
import type { PageLoad } from "./$types";
import { error } from "@sveltejs/kit";

export const load: PageLoad = ({ data }) => {
  const session = data?.session;
  return {
    session,
  };
};
```

## Features

- Multiple session storages (Server memory, server file system, cookies, Redis)
- Multiple session identifier exchanger (cookie, header)
- Automatically save the session upon changes

## Limitations

### Changes on the session can only be done at server side

If you want changes made in `+page.svelte` to be saved, you need to send the data to the server (`+page.server.js`/`+page.server.ts`)

## Documentation

Documentations and examples can be found in the [docs](docs/README.md) directory.

## Contributing

Contributions are welcome. Please open up an issue or create PR if you would like to help out.

Read more in the [Contributing file](CONTRIBUTING.md)

## License

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
npm package: @mach-34/aztec-statechannel-tictactoe
Description: ## Installation ### 1. Ensure correct versioning of aztec-nargo CLI: ```console aztec-nargo -V // nargo version = 0.23.0 // noirc version = 0.23.0+602f23f4fb698cf6e37071936a2a46593a998d08 // (git version hash: ea6aebcc4e190d9dbadaf1dd0f70950651eed615,, is
Latest version: 1.0.2

# Aztec State Channels

## Installation
### 1. Ensure correct versioning of aztec-nargo CLI:
```console
aztec-nargo -V
// nargo version = 0.23.0
// noirc version = 0.23.0+602f23f4fb698cf6e37071936a2a46593a998d08
// (git version hash: ea6aebcc4e190d9dbadaf1dd0f70950651eed615,, is dirty: false)
```
You can run `VERSION=0.21.0 aztec-up` to ensure you have a valid aztec-nargo compiler cli

### 2. Set up the proper folder structure for the imports as they currently exist
```
// Once everything is installed, you should have:
PARENT_DIR/
  | - aztec-packages
  | - aztec-state-channels
// such that npm imports in statechannel can access the local aztec-packages build with `file:../aztec-packages/yarn-project/*`
```

### 3. Install the fork of aztec-packages that has compatible @aztec/* for statechannel repo and runs a modified PXE through the sandbox that supports the state channel construction

a. clone the repo in your parent dir: `git clone https://github.com/mach-34/aztec-packages && cd aztec-packages`

b. ensure you are on the right branch: `git checkout app_circuit_pxe`

c. build the entire aztec-packages stack locally: `./bootstrap.sh`
- This can take over an hour. If you have a compatible version of aztec-packages already built locally, you can skip 99% of build time by only building yarn_project: `cd yarn_project && bootstrap.sh`
- You may experience issues building barretenberg. Visit the official [aztec-packages/barretenberg README.md](https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg#dependencies) for some help with this 

### 4. Install the Aztec State Channels repository in a new terminal window

a. in PARENT_DIR, run `git clone https://github.com/mach-34/aztec-state-channels && cd statechannel`

b. ensuring `file:../aztec-packages/yarn-project/*` will work for package.json, run `npm i` (yarn will not work)

## Running Tests

### 1. Start Services

a. In a new terminal in the `aztec-state-channels` folder, run a local Ethereum dev node with `npm run anvil`

b. In a new terminal in the `aztec-state-channels` folder, run the sandbox (and first PXE) with `npm run sandbox`

c. In a new terminal in the `aztec-state-channels` folder, run a second PXE with `npm run pxe:secondary`

### 2. Run the aztec-state-channel unit tests

- To run only the state channel tests, run `npm run test:statechannel`

- To run only the contract logic unit tests, run `npm run test:logic`

- To run all test suites, run the normal `npm run test`

## Modifications / Methodology
PXE
ACIR Simulator
Iterations
On Folding/ HONK
npm package: @mach-composer/mcc-sdk
Description: OpenAPI client for mcc-sdk
Author: Lab Digital
Latest version: 0.1.15

## mcc-sdk@0.1.0

This generator creates TypeScript/JavaScript client that utilizes [Fetch API](https://fetch.spec.whatwg.org/). The generated Node module can be used in the following environments:

Environment

- Node.js
- Webpack
- Browserify

Language level

- ES5 - you must have a Promises/A+ library installed
- ES6

Module system

- CommonJS
- ES6 module system

It can be used in both TypeScript and JavaScript. In TypeScript, the definition should be automatically resolved via `package.json`. ([Reference](http://www.typescriptlang.org/docs/handbook/typings-for-npm-packages.html))

### Building

To build and compile the typescript sources to javascript use:

```
pnpm install
pnpm run build
```

### Publishing

This project uses @changesets/cli for managing the changelog and the version. Use `pnpm changeset` to add a new
changelog item. When pushing to `main` GitHub actions will automatically create a PR to release a new version
once merged.


### Consuming

navigate to the folder of your consuming project and run one of the following commands.

_published:_

```
pnpm add @mach-composer/mcc-sdk
```