open-index/open-npm huggingface dataset:
npm package: @sil/storage
Description: Keep state in storage
Author: Sil van Diepen
Latest version: 0.0.7

# Storage

Save your state in localstorage and automatically retrieve on initialisation.

## Installation

```bash
npm install @sil/storage
```

## Usage

Example in Vue, initialize a state and make sure the state taken from local storage when available. The `watchState` makes sure your state will automatically be saved whenever changes are made.

```ts
import { reactive } from "vue";
import { retrieveState, watchState } from "@sil/storage";

const state = reactive(
  retrieveState(
    {
      count: 0,
    },
    "MY_STATE"
  )
);

watchState(state, "MY_STATE");
```

### Options

You can add the options to your retrieveState and watchState in order to change defaults.

| Option  | Default | Description                                        |
| ------- | ------- | -------------------------------------------------- |
| verbose | `false` | Show logging in console whenever an action happens |

example:

```ts
const options = {
  verbose: true,
};

const state = reactive(
  retrieveState(
    {
      count: 0,
    },
    "MY_STATE",
    options
  )
);

watchState(state, "MY_STATE", options);
```
npm package: @sil/test
Description: Simple testing lib without Jest
Author: Sil van Diepen
Latest version: 0.0.6

##  Test



This testing framework provides a simple and flexible way to write and execute tests for JavaScript code. It allows developers to define test suites, individual tests, and expectations using intuitive syntax.

## Installation

```bash
npm install @sil/test
```


## Usage
Define Test Suites: Use the describe function to group related tests into suites.

```js
describe('Suite Name', () => {
    // Define tests here using the `it` function
});
```

Define Tests: Inside each suite, use the it function to specify individual tests.

```js
describe('Array Tests', () => {
    it('should return true for an empty array', () => {
        expect([]).toHaveLength(0);
    });
});
```

Expectations: Use the expect function to make assertions about values.

```js
describe('String Tests', () => {
    it('should check if a string is defined', () => {
        expect('Hello').toBeDefined();
    });
});
```

```js
run()
```

## Assertion Methods

The expect function provides a variety of assertion methods to validate different types of values:

- `toEqual(expected)`: Check if two values are equal.
- `toBe(expected)`: Check if two values are strictly equal.
- `toHaveBeenCalled()`: Check if a mock function has been called.
- `toBeDefined()`: Check if a value is defined.
- `toBeTruthy()`: Check if a value is truthy.
- `toBeFalsy()`: Check if a value is falsy.
- `toBeGreaterThan(expected)`: Check if a value is greater than the expected value.
- `toBeLessThan(expected)`: Check if a value is less than the expected value.
- `toBeNull()`: Check if a value is null.
- `toBeUndefined()`: Check if a value is undefined.
- `toBeNaN()`: Check if a value is NaN.
- `toContain(expected)`: Check if an array or string contains a specific element/value.
- `toContainEqual(expected)`: Check if an array contains an element that matches the expected value.
- `toMatchObject(expected)`: Check if an object contains properties matching those of the expected object.
- `toStrictEqual(expected)`: Check if two values are strictly equal.
- `toHaveLength(expected)`: Check if the length of an array or string matches the expected length.

```js
describe('Math Tests', () => {
    it('should check if 2 + 2 equals 4', () => {
        expect(2 + 2).toEqual(4);
    });
});
```