open-index/open-npm huggingface dataset:
npm package: @noisytransfer/test-helpers
Description: Helper transports and harnesses for testing NoisyTransfer (RTC, mailbox, signalling).
Latest version: 0.2.3

# @noisytransfer/test-helpers

Test harnesses and transports used in NoisyTransfer tests.

```js
import { mkMailbox, withSignalPair } from "@noisytransfer/test-helpers";

// mailbox-based TxLike pair for tests
const { A, B } = await mkMailbox("https://mailbox.example.com", {
  room: "room-123", side: "A", sessionId: crypto.randomUUID()
});

// WebRTC signal harness (initiator/responder)
await withSignalPair(async ({ A, B }) => {
  // use A/B as TxLike
});
npm package: @noita-ts/nxml
Description: A TypeScriptToLua package and type definitions for the [luanxml](https://github.com/NathanSnail/luanxml) library.
Latest version: 0.1.1

# @noita-ts/nxml
A TypeScriptToLua package and type definitions for the
[luanxml](https://github.com/NathanSnail/luanxml) library.

Mostly useful only for Noita modding, as nxml is an unofficial name for
"an XML-like format used by Noita by having a badly non-compliant handwritten
XML parser full of quirks".
npm package: @noita-ts/pollnet
Description: A [noita-ts](https://github.com/necauqua/noita-ts) package and type definitions for the [pollnet](https://github.com/probable-basilisk/pollnet) library.
Latest version: 0.1.0

# @noita-ts/pollnet
A [noita-ts](https://github.com/necauqua/noita-ts) package and type definitions for the
[pollnet](https://github.com/probable-basilisk/pollnet) library.

Note that this does not work with generic TypeScriptToLua!

It only contains the 32-bit `pollent.dll` (windows) binary, uses a
noita-specific way of loading it and noita-ts itself bundles it into the final
mod, the vanilla tstl bundler ignores non-lua files.
npm package: @noix/model
Description: this is a lib for state manager with model
Author: aserjoker
Latest version: 0.1.0

# @noix/model

A library for state manager with model.

## what is model ?

Model is a set for logic and data.in codes,it is contains two part named "effect" and "state". state means current data,effect is use for change "state".
a example model likes:

```javascript
const demo = {
  state: {
    count: 0,
  },
  effect: {
    addCount(payload) {
      this.setState("count", this.state.count + 1);
    },
  },
  name: "demo",
};
```

## what is container?

Container is a set for models.but container not keep the current state for any model.for container,two action is export for coder "dispatch" and "effect".
create a container likes:

```javascript
// init demo model
const { dispatch, effect } = useContainer([demo]);
```

### dispatch

Dispatch means call a effect with model name and effect name and effect payload.
likes:

```javascript
dispatch("demo", "addCount", {});
```

only dispatch can change state.

### effect

Effect means watching the change between a state.when state changed effect.handle will be call.

```javascript
effect({
  modelName: "demo",
  token: "count",
  handle: (newState) => {
    // Do something
  },
});
```

### token

All of the token in this library is support string addressing.
likes:

```javascript
const model = {
  state: {
    data: {
      count: 0,
    },
  },
  effect: {
    addCount(payload) {
      this.setState("data.count", this.state.data.count + 1);
    },
  },
};
```

## Some performance processing

This library will automatically collect changes to the dispatch.
likes:

```javascript
const model = {
  state: {
    count: 0,
  },
  effect: {
    addCount(payload) {
      this.setState("count", this.state.count + 1);
      this.setState("count", this.state.count + 1);
    },
  },
};
```

It just trigger once effect.and the effect newState is the last state.
However,if your effect function is a async function,scene is different.
If function using async/await to bind all async task to self
like

```javascript
async addCount(payload){
    await fetch(...)
}
```

This will be consistent with the synchronized scenario.

Another scene:

```javascript
const model = {
  state: {
    count: 0,
  },
  effect: {
    addCount(payload) {
      setTimeout(() => {
        this.setState("count", this.state.count + 1);
      }, 3000);
      setTimeout(() => {
        this.setState("count", this.state.count + 1);
      }, 3000);
    },
  },
};
```

it will trigger twice effect when addCount called.
npm package: @noix/model-react
Description: Adapter for [@noix/model](https://github.com/AserJoker/noix-model) with [react](https://github.com/facebook/react)
Author: aserjoker
Latest version: 0.1.1

# @noix/model-react

Adapter for [@noix/model](https://github.com/AserJoker/noix-model) with [react](https://github.com/facebook/react)

## Prerequisite

If you want use model, you need to wrap the component where you call related methods inside Container and use useModel/useDispatch to get the API.

```jsx
//App.jsx
export const App = () => {
  return (
    <Container models={[demo]}>
      <Counter />
    </Container>
  );
};
```

```jsx
//Counter.jsx
export const Counter = () => {
  const count = useModel("demo/count");
  const addCount = useDispatch("demo/addCount");
  return <button onClick={() => addCount()}>{count}</button>;
};
```

```javascript
// demo.js
export const demo = {
  name: "demo",
  state: {
    count: 0,
  },
  effect: {
    addCount() {
      this.setField("count", this.state.count + 1);
    },
  },
};
```
npm package: @noix/model-vue
Description: Adapter for [@noix/model](https://github.com/AserJoker/noix-model) with [vue3](https://github.com/vuejs/core)
Author: aserjoker
Latest version: 0.1.0

# @noix/model-vue

Adapter for [@noix/model](https://github.com/AserJoker/noix-model) with [vue3](https://github.com/vuejs/core)

## Prerequisite

If you want use model, you need to wrap the component where you call related methods inside Container and use useModel/useDispatch to get the API.

```jsx
//App.jsx
export const App = () => {
  return (
    <Container models={[demo]}>
      <Counter />
    </Container>
  );
};
```

```jsx
//Counter.jsx
export const Counter = () => {
  const count = useModel("demo/count");
  const addCount = useDispatch("demo/addCount");
  return <button onClick={() => addCount()}>{count.value}</button>;
};
```

```javascript
// demo.js
export const demo = {
  name: "demo",
  state: {
    count: 0,
  },
  effect: {
    addCount() {
      this.setField("count", this.state.count + 1);
    },
  },
};
```
npm package: @noiz/chat
Description: A chat widget powered with Noiz
Latest version: 0.2.1

# chat

## Project setup
```
yarn install
```

### Compiles and hot-reloads for development
```
yarn run serve
```

### Compiles and minifies for production
```
yarn run build
```

### Run your tests
```
yarn run test
```

### Lints and fixes files
```
yarn run lint
```

### Run your end-to-end tests
```
yarn run test:e2e
```

### Run your unit tests
```
yarn run test:unit
```

### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).