open-index/open-npm huggingface dataset:
npm package: @sigveh/css
Description: A simple CSS Reset and base styles, for a clean start to every project.
Author: Sigve Hansen
Latest version: 1.1.0

# @sigveh/css

A simple CSS Reset and base styles, for a clean start to every project.  
Inspired by [@acab/reset.css](https://github.com/mayank99/reset.css)

## Usage

Install the package via `npm`.

```sh
npm install @sigveh/css
```

You can then import the stylesheet in your css file.

```css
@import '@sigveh/css';
```

## Customization

There are certain customization options when you are using the base styles. Make sure to define the CSS variables in `:root` to correctly override the default values.

```css
:root {
  /* define variables here */
  --border-radius: 6px;
}
```

These are the available CSS variables:

| Name            | Description                                   | Default value |
| --------------- | --------------------------------------------- | ------------- |
| --border-radius | Other radii are calculated from this          | `4px`         |
| --border-color  | Used for form elements, tables and separators | `#808080`     |

## License

This package is licensed under the [MIT license](./LICENSE).
npm package: @sigveh/nuxt-base
Description: A Nuxt layer with accessible components, SEO tooling and more
Latest version: 0.0.3

# @sigveh/nuxt-base

A Nuxt layer with accessible components, SEO tooling and more.

```bash
pnpm install -D @sigveh/nuxt-base
```

## Setup

Make sure to install the dependencies:

```bash
pnpm install
```

## Development Server

Start the development server on `http://localhost:3000`

```bash
pnpm dev
```

## Production

Build the application for production:

```bash
pnpm build
```

Locally preview production build:

```bash
pnpm preview
```
npm package: @sigveh/use-datepicker
Description: Headless datepicker component for Vue 3.
Author: Sigve Hansen
Latest version: 0.0.1

# @sigveh/use-datepicker

A headless datepicker component for Vue 3.

## Installation

```sh
# npm
npm install @sigveh/use-datepicker

# pnpm
pnpm add @sigveh/use-datepicker
```

## Usage

The `useDatepicker` composable encapsulates logic needed for a functional datepicker component.

```html
<script setup lang="ts">
  import { useDatepicker } from '@sigveh/use-datepicker'
  const { currentDate, getDateProps, getDateEvents, days } = useDatepicker()
</script>

<template>
  <div>
    <h2>{{ currentDate }}</h2>
    <ul>
      <li v-for="date in days" :key="date">
        <button v-bind="getDateProps(date)" v-on="getDateEvents(date)">
          {{ date }}
        </button>
      </li>
    </ul>
  </div>
</template>
```

## License

This project is licensed under [MIT](./LICENSE)
npm package: @sigx/reactivity
Description: Reactivity system for SignalX
Author: Andreas Ekdahl
Latest version: 0.2.4

# @sigx/reactivity

Reactivity system for SignalX. Provides fine-grained reactive primitives including signals, computed values, effects, and watchers.

## Install

```bash
npm install @sigx/reactivity
```

## Usage

```tsx
import { signal, computed, effect, batch } from '@sigx/reactivity';

const count = signal(0);
const doubled = computed(() => count.value * 2);

effect(() => {
  console.log(`count: ${count.value}, doubled: ${doubled.value}`);
});

batch(() => {
  count.value++;
  count.value++;
});
// Logs once: "count: 2, doubled: 4"
```

## API

| Export | Description |
|---|---|
| `signal(value)` | Create a reactive signal |
| `computed(fn)` | Derived reactive value |
| `effect(fn)` | Run a side effect when dependencies change |
| `batch(fn)` | Batch multiple updates into a single notification |
| `watch(source, callback)` | Watch a reactive source with old/new value tracking |
| `untrack(fn)` | Read reactive values without tracking dependencies |
| `effectScope()` | Create a scope to collect and dispose effects |
| `toRaw(value)` | Get the raw underlying value of a reactive object |
| `isReactive(value)` | Check if a value is reactive |
| `isComputed(value)` | Check if a value is a computed signal |
| `detectAccess(fn)` | Detect which signals are accessed in a function |

## Documentation

Full documentation and guides are available at the [SignalX repository](https://github.com/signalxjs/core).

## License

[MIT](https://github.com/signalxjs/core/blob/main/LICENSE)
npm package: @sigx/runtime-core
Description: Runtime core for SignalX
Author: Andreas Ekdahl
Latest version: 0.2.4

# @sigx/runtime-core

Runtime core for SignalX. Provides the platform-agnostic component system, JSX runtime, reconciler, lifecycle hooks, dependency injection, and control flow primitives.

## Install

```bash
npm install @sigx/runtime-core
```

## Usage

```tsx
import { component, signal, onMounted, onUnmounted } from '@sigx/runtime-core';

const Timer = component(() => {
  const elapsed = signal(0);
  let interval: number;

  onMounted(() => {
    interval = setInterval(() => elapsed.value++, 1000);
  });

  onUnmounted(() => {
    clearInterval(interval);
  });

  return () => <span>Elapsed: {elapsed.value}s</span>;
});
```

## Key Exports

- **Component** — `component`, `getCurrentInstance`, `getComponentMeta`
- **Lifecycle** — `onMounted`, `onUnmounted`, `onCreated`, `onUpdated`
- **JSX Runtime** — `jsx`, `jsxs`, `jsxDEV`, `Fragment`, `Text`, `Comment`
- **Lazy Loading** — `lazy`, `Suspense`, `isLazyComponent`
- **Async** — `useAsync`
- **Control Flow** — `Show`, `Switch`, `Match`
- **App** — `defineApp`
- **DI** — `defineInjectable`, `defineProvide`, `useAppContext`
- **Model** — `createModel`, `createModelFromBinding`, `isModel`
- **Directives** — `defineDirective`, `isDirective`
- **Error Handling** — `ErrorBoundary`
- **Messaging** — Domain models and pub/sub messaging

> **Note:** Most users should install [`sigx`](https://www.npmjs.com/package/sigx) instead, which bundles this package with a DOM renderer and the reactivity system.

## Documentation

Full documentation and guides are available at the [SignalX repository](https://github.com/signalxjs/core).

## License

[MIT](https://github.com/signalxjs/core/blob/main/LICENSE)
npm package: @sigx/runtime-dom
Description: DOM runtime for SignalX
Author: Andreas Ekdahl
Latest version: 0.2.4

# @sigx/runtime-dom

DOM runtime for SignalX. Provides the DOM-specific renderer, event handling, attribute patching, directive system, and SVG support.

## Install

```bash
npm install @sigx/runtime-dom
```

## Usage

```tsx
import { component, signal } from '@sigx/runtime-core';
import { render } from '@sigx/runtime-dom';

const App = component(() => {
  const name = signal('world');

  return () => (
    <div>
      <input
        value={name.value}
        onInput={(e) => (name.value = e.currentTarget.value)}
      />
      <p>Hello, {name.value}!</p>
    </div>
  );
});

render(<App />, document.getElementById('app')!);
```

## Key Exports

| Export | Description |
|---|---|
| `render(vnode, container)` | Mount a component tree to a DOM element |
| `Portal` | Render children into a different DOM container |
| `show` | Built-in directive for conditional display |

The module also handles DOM property/attribute patching, event delegation, form control bindings, SVG namespace handling, and directive lifecycle management.

> **Note:** Most users should install [`sigx`](https://www.npmjs.com/package/sigx) instead, which bundles this package with the core runtime and reactivity system.

## Documentation

Full documentation and guides are available at the [SignalX repository](https://github.com/signalxjs/core).

## License

[MIT](https://github.com/signalxjs/core/blob/main/LICENSE)
npm package: @sigx/runtime-terminal
Description: Terminal renderer for SignalX
Author: Andreas Ekdahl
Latest version: 0.2.4

# @sigx/runtime-terminal

Terminal UI components for the Sigx runtime (demo/experimental).

## Components

- `Button` - a focusable, clickable control.
- `Input` - a focusable text input with two-way `model` binding.
- `ProgressBar` - a read-only progress indicator.
- `Checkbox` - a focusable checkbox with two-way `model` binding.

## `Checkbox` Usage

The `Checkbox` component uses two-way `model` binding. That means you can write:

```tsx
/** @jsxImportSource @sigx/terminal */
import { signal, renderTerminal, Checkbox } from '@sigx/terminal';

const state = signal({ enabled: true });

renderTerminal(
    <Checkbox model={() => state.enabled} label="Enabled" />,
    { clearConsole: true }
);
```

When the user presses Space or Enter while the `Checkbox` is focused, it will emit `update:modelValue` and `change` events in addition to toggling the visual state.

Props:

- `modelValue` (model) - boolean - current value (two-way binding via `model`).
- `label` - string - optional label to display.
- `autofocus` - boolean - focus on mount.
- `disabled` - boolean - disable interaction.

Events:

- `update:modelValue` - emitted when the value changes (used by `model`).
- `change` - emitted with the new value when toggled.
npm package: @sigx/server-renderer
Description: Server-side rendering and client hydration for SigX
Author: Andreas Ekdahl
Latest version: 0.2.4

# @sigx/server-renderer

Server-side rendering and client hydration for SignalX. Supports streaming and string-based rendering, plugin-driven architecture, and head management.

## Install

```bash
npm install @sigx/server-renderer
```

## Server-Side Rendering

```tsx
import { renderToStream, renderToString } from '@sigx/server-renderer/server';
import App from './App';

// Streaming (recommended)
const stream = renderToStream(<App />);

// Or render to string
const html = await renderToString(<App />);
```

## Client Hydration

```tsx
import { defineApp } from 'sigx';
import { ssrClientPlugin } from '@sigx/server-renderer/client';
import App from './App';

defineApp(<App />)
  .use(ssrClientPlugin)
  .hydrate('#root');
```

## Plugin System

```tsx
import { createSSR } from '@sigx/server-renderer';

const ssr = createSSR().use(myPlugin());
const html = await ssr.render(<App />);
```

## Key Exports

**Main entry (`@sigx/server-renderer`)**
- `createSSR` — Plugin-driven SSR instance
- `renderToStream`, `renderToString`, `renderVNodeToString`
- `createSSRContext` — Create an SSR rendering context
- `ssrClientPlugin` — Client-side hydration plugin
- `useHead`, `renderHeadToString` — Head tag management

**Server (`@sigx/server-renderer/server`)**
- Streaming and string rendering APIs
- SSR context and serialization utilities

**Client (`@sigx/server-renderer/client`)**
- `hydrate`, `hydrateNode` — Core hydration functions
- `ssrClientPlugin` — Plugin for `defineApp().use()`

## Documentation

Full documentation and guides are available at the [SignalX repository](https://github.com/signalxjs/core).

## License

[MIT](https://github.com/signalxjs/core/blob/main/LICENSE)
npm package: @sigx/store
Description: Store framework for SignalX - State management abstraction
Author: Andreas Ekdahl
Latest version: 0.2.4

# @sigx/store

Store framework for SignalX — a state management abstraction built on signals. Define stores with reactive state, computed getters, actions, and event-driven mutation tracking.

## Install

```bash
npm install @sigx/store
```

## Usage

```tsx
import { component } from 'sigx';
import { defineStore, useStore } from '@sigx/store';

const useCounterStore = defineStore('counter', ({ defineState, defineActions }) => {
  const state = defineState({ count: 0 });

  const actions = defineActions({
    increment() {
      state.count++;
    },
    decrement() {
      state.count--;
    },
  });

  return { state, actions };
});

const Counter = component(() => {
  const store = useStore(useCounterStore);

  return () => (
    <div>
      <p>Count: {store.state.count}</p>
      <button onClick={store.actions.increment}>+</button>
      <button onClick={store.actions.decrement}>-</button>
    </div>
  );
});
```

## Key Exports

| Export | Description |
|---|---|
| `defineStore(name, setup)` | Define a new store with reactive state and actions |
| `useStore(store)` | Access a store instance within a component |

### Setup Context

The setup function receives a context with:

- **`defineState(initial)`** — Creates reactive state with automatic mutation events
- **`defineActions(actions)`** — Wraps action functions with lifecycle events (`onDispatching`, `onDispatched`, `onFailure`)

## Documentation

Full documentation and guides are available at the [SignalX repository](https://github.com/signalxjs/core).

## License

[MIT](https://github.com/signalxjs/core/blob/main/LICENSE)
npm package: @sigx/terminal
Description: SignalX Terminal - TUI framework with TSX support
Author: Andreas Ekdahl
Latest version: 0.2.4

# @sigx/terminal

SignalX Terminal — a TUI framework with TSX support. Build interactive terminal applications using the same component model and reactive signals as SignalX.

## Install

```bash
npm install @sigx/terminal
```

## Usage

```tsx
/** @jsxImportSource @sigx/terminal */
import { component, signal, defineApp, Input, Button } from '@sigx/terminal';

const App = component(() => {
  const name = signal('');

  return () => (
    <box border="single" borderColor="cyan" label="Greeting">
      <Input model={() => name} label="Name" autofocus />
      <br />
      <text color="green">Hello, {name.value || 'world'}!</text>
      <br />
      <Button label="Exit" onClick={() => process.exit(0)} />
    </box>
  );
});

defineApp(<App />).mount({ clearConsole: true });
```

## Built-in Elements

- `<box>` — Container with optional borders (`single`, `double`, `rounded`), colors, shadows, and labels
- `<text>` — Text with ANSI color support
- `<br>` — Line break

## Components

| Component | Description |
|---|---|
| `Input` | Text input with model binding |
| `Button` | Clickable button |
| `Select` | Option list with keyboard navigation |
| `Checkbox` | Toggle checkbox |
| `ProgressBar` | Visual progress indicator |

## Utilities

- `onKey(handler)` — Subscribe to keyboard events
- `focusNext()` / `focusPrev()` — Programmatic focus management

## Documentation

Full documentation and guides are available at the [SignalX repository](https://github.com/signalxjs/core).

## License

[MIT](https://github.com/signalxjs/core/blob/main/LICENSE)
npm package: @sigx/vite
Description: Vite plugin for SignalX Framework with HMR, library builds, and automatic type generation
Author: Andreas Ekdahl
Latest version: 0.2.4

# @sigx/vite

Hot Module Replacement plugin for SignalX Framework development.

## Installation

```bash
npm install -D @sigx/vite
```

## Usage

Simply import at the top of your component files during development:

```typescript
import '@sigx/vite';
import { component } from 'sigx';

component('my-component', ({ html, signal }) => {
  // Your component code
});
```

The plugin automatically:
- Detects when component code changes
- Preserves component state during updates
- Re-renders affected components
- Only activates in development (tree-shaken in production)

## How It Works

The plugin uses sigx's plugin system to:
1. Track component instances
2. Intercept component redefinitions
3. Trigger hot reloads without full page refresh

## Requirements

- Vite or another dev server with HMR support
- `sigx` as a peer dependency
npm package: @sigyl/jsonnet-drone
Description: jsonnet to build and deploy with drone
Author: giles bradshaw
Latest version: 2.0.3

# @sigyl/jsonnet-drone

drone deployment

## release

use https://www.conventionalcommits.org/en/v1.0.0/ to control releases.

to release

```shell
yarn release
```

prerelease

```shell
yarn release --prerelease alpha
```

release as

```shell
yarn release --release-as 1.0.0
```

dry run

```shell
yarn release --dry-run
```
npm package: @sigyl/jsonnet-drone-environment
Description: function compose
Author: giles bradshaw
Latest version: 0.0.9

# @sigyl/jsonnet-drone-environment

drone environment functionality

## release

use https://www.conventionalcommits.org/en/v1.0.0/ to control releases.

to release

```shell
yarn release
```

prerelease

```shell
yarn release --prerelease alpha
```

release as

```shell
yarn release --release-as 1.0.0
```

dry run

```shell
yarn release --dry-run
```
npm package: @sigyn/agent
Description: Loki alerting agent
Author: GENTILHOMME Thomas
Latest version: 4.1.1

<p align="center"><h1 align="center">
  Agent
</h1></p>

<p align="center">
  Sigyn alerting agent
</p>

<p align="center">
  <a href="https://github.com/MyUnisoft/sigyn/src/agent">
    <img src="https://img.shields.io/github/package-json/v/MyUnisoft/sigyn/main/src/agent?style=for-the-badge&label=version" alt="npm version">
  </a>
  <a href="https://github.com/MyUnisoft/sigyn/src/agent">
    <img src="https://img.shields.io/bundlephobia/min/@sigyn/agent?style=for-the-badge" alt="size">
  </a>
  <a>
  <img src="https://api.securityscorecards.dev/projects/github.com/MyUnisoft/sigyn/badge?style=for-the-badge" alt="ossf scorecard">
  </a>
  <a href="https://github.com/MyUnisoft/sigyn/tree/main/src/agent">
    <img src="https://img.shields.io/github/actions/workflow/status/MyUnisoft/sigyn/agent.yml?style=for-the-badge">
  </a>
  <a href="https://github.com/MyUnisoft/sigyn/tree/main/src/LICENSE">
    <img src="https://img.shields.io/github/license/MyUnisoft/sigyn?style=for-the-badge" alt="license">
  </a>
</p>

## 🚧 Requirements

- [Node.js](https://nodejs.org/en/) version 20 or higher

## 🚀 Getting Started

This package is available in the Node Package Repository and can be easily installed with [npm](https://doc.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com)

```bash
$ npm i @sigyn/agent
# or
$ yarn add @sigyn/agent
```

### Add environment variables

```bash
$ touch .env
```

Add these variables:

```Dotenv
# Required
GRAFANA_API_TOKEN=your_token
# Default to sigyn.sqlite3
SIGYN_DB=your_db
```

### Add Sigyn config

```bash
$ touch sigyn.config.json
```

Please see [here](../config/docs/index.md#example-configuration) for config documentation

## 📚 Usage

```ts
import { start } from "@sigyn/agent";

await start();
```

## 🌐 API

### `start(location?: string, options?: StartOptions): Promise<ToadScheduler>`

Run Sigyn agent. It will fetch logs depending your rules `polling` and send alerts when `count` threshold is reached.

- `location: string` Optional, default to `process.cwd()`. The path to your SQLite database, it will create the file if it doesn't exists but the directory **must** exists.
- `options.logger: Logger` Optional, default to `pino`. You can use your own logger which must be an object with theses 3 methods: `debug`, `info` & `error`.
- `options.level` Optional, only works if no logger given. Set log level: `"info" | "debug" | "error"`.
- `options.timeout` Optional, you can provide a timeout for Grafana API requests. Default: `30_000`.

The returned scheduler instance allow you to put some extra logic if needed, see [API for scheduler](https://github.com/kibertoad/toad-scheduler/blob/main/README.md#api-for-scheduler).

## 🖋️ Interfaces

```ts
interface Logger {
  info: (message: string) => void;
  error: (message: string) => void;
  debug: (message: string) => void;
}

interface StartOptions {
  logger?: Logger;
  level?: "info" | "debug" | "error";
  timeout?: number;
}
```

## License
MIT
npm package: @sigyn/discord
Description: Send Sigyn alerts to Discord via webhook
Author: GENTILHOMME Thomas
Latest version: 2.0.0

<p align="center"><h1 align="center">
  Discord notifier
</h1></p>

<p align="center">
  Send Sigyn alerts to Discord via webhook
</p>

<p align="center">
  <a href="https://github.com/MyUnisoft/sigyn/src/discord">
    <img src="https://img.shields.io/github/package-json/v/MyUnisoft/sigyn/main/src/discord?style=for-the-badge&label=version" alt="npm version">
  </a>
  <a href="https://github.com/MyUnisoft/sigyn/src/discord">
    <img src="https://img.shields.io/bundlephobia/min/@sigyn/discord?style=for-the-badge" alt="size">
  </a>
    <img src="https://api.securityscorecards.dev/projects/github.com/MyUnisoft/sigyn/badge?style=for-the-badge" alt="ossf scorecard">
  </a>
  <a href="https://github.com/MyUnisoft/sigyn/tree/main/src/discord">
    <img src="https://img.shields.io/github/actions/workflow/status/MyUnisoft/sigyn/discord.yml?style=for-the-badge">
  </a>
  <a href="https://github.com/MyUnisoft/sigyn/tree/main/src/LICENSE">
    <img src="https://img.shields.io/github/license/MyUnisoft/sigyn?style=for-the-badge" alt="license">
  </a>
</p>

## 🚧 Requirements

- [Node.js](https://nodejs.org/en/) version 18 or higher

## 🚀 Getting Started

This package is available in the Node Package Repository and can be easily installed with [npm](https://doc.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com)

```bash
$ npm i @sigyn/discord
# or
$ yarn add @sigyn/discord
```

## 📚 Usage

Add the Discord notifier to your Sigyn config:

```json

{
  "notifiers": {
    "@sigyn/discord": {
      "webhookUrl": "https://discord.com/api/webhooks/xxx/yyy"
    },
    ...
  },
  "rules": [
    ...
  ]
}
```

**Webhook URL**

Using Discord webhooks is very simple: go to you server settings, **APPS** > **Integrations** > **Webhooks** then choose or create your webhook and click **Copy Webhook URL** button 🎉

## License
MIT
npm package: @sigyn/logql
Description: Parse and serialize LogQL queries
Author: GENTILHOMME Thomas
Latest version: 2.2.0

<p align="center"><h1 align="center">
  LogQL
</h1></p>

<p align="center">
  Parse and serialize LogQL query
</p>

<p align="center">
  <a href="https://github.com/MyUnisoft/sigyn/src/logql">
    <img src="https://img.shields.io/github/package-json/v/MyUnisoft/sigyn/main/src/logql?style=for-the-badge&label=version" alt="npm version">
  </a>
  <a href="https://github.com/MyUnisoft/sigyn/src/logql">
    <img src="https://img.shields.io/bundlephobia/min/@sigyn/logql?style=for-the-badge" alt="size">
  </a>
<a>
    <img src="https://api.securityscorecards.dev/projects/github.com/MyUnisoft/sigyn/badge?style=for-the-badge" alt="ossf scorecard">
  </a>
  <a href="https://github.com/MyUnisoft/sigyn/tree/main/src/logql">
    <img src="https://img.shields.io/github/actions/workflow/status/MyUnisoft/sigyn/logql.yml?style=for-the-badge">
  </a>
  <a href="https://github.com/MyUnisoft/sigyn/tree/main/src/LICENSE">
    <img src="https://img.shields.io/github/license/MyUnisoft/sigyn?style=for-the-badge" alt="license">
  </a>
</p>

## Please see the [documentation here](https://myunisoft.github.io/sigyn/logql/installation).

## License
MIT
npm package: @sigyn/pattern
Description: Loki pattern in JavaScript
Author: GENTILHOMME Thomas
Latest version: 1.1.0

<p align="center"><h1 align="center">
  Pattern
</h1></p>

<p align="center">
  Loki pattern in JavaScript/TypeScript
</p>

<p align="center">
  <a href="https://github.com/MyUnisoft/sigyn/src/pattern">
    <img src="https://img.shields.io/github/package-json/v/MyUnisoft/sigyn/main/src/pattern?style=for-the-badge&label=version" alt="npm version">
  </a>
  <a href="https://github.com/MyUnisoft/sigyn/src/pattern">
    <img src="https://img.shields.io/bundlephobia/min/@sigyn/pattern?style=for-the-badge" alt="size">
  </a>
    <img src="https://api.securityscorecards.dev/projects/github.com/MyUnisoft/sigyn/badge?style=for-the-badge" alt="ossf scorecard">
  </a>
  <a href="https://github.com/MyUnisoft/sigyn/tree/main/src/pattern">
    <img src="https://img.shields.io/github/actions/workflow/status/MyUnisoft/sigyn/pattern.yml?style=for-the-badge">
  </a>
  <a href="https://github.com/MyUnisoft/sigyn/tree/main/src/LICENSE">
    <img src="https://img.shields.io/github/license/MyUnisoft/sigyn?style=for-the-badge" alt="license">
  </a>
</p>

## 🚧 Requirements

- [Node.js](https://nodejs.org/en/) version 18 or higher

## 🚀 Getting Started

This package is available in the Node Package Repository and can be easily installed with [npm](https://doc.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com)

```bash
$ npm i @sigyn/pattern
# or
$ yarn add @sigyn/pattern
```

## 📚 Usage

```ts
import { Pattern } from "@sigyn/pattern";

const parser = new Pattern("HTTP <verb> <_> <endpoint>");

const parsedLogs = parser.executeOnLogs([
  "HTTP POST 200 /api/v1/dowork",
  "HTTP GET 200 /api/v1/dowork"
]);

// Automatically infer types 
for (const { verb, endpoint } of parsedLogs) {
  console.log(verb, endpoint);
}
```

You can also provide an Array to Pattern constructor (quite helpful with long or multipart patterns).

```ts
new Pattern([
  "[schema: <id>|type: <user_type>]",
  "HTTP <verb> <_> <endpoint>"
] as const)
```

> [!TIP]
> Use `as const` to benefit from type inference

## 🌐 API

- [Pattern](./docs/Pattern.md)
- [NoopPattern](./docs/NoopPattern.md)

### Shape

<em>Pattern</em> and <em>NoopPattern</em> both implement the same Shape using `PatternShape` interface.

```ts
type LokiPatternType = string | Array<string> | ReadonlyArray<string>;

interface PatternShape<T extends LokiPatternType = string> {
  compile(): (log: string) => [] | [log: LokiLiteralPattern<T>];
  executeOnLogs(logs: Array<string>): LokiLiteralPattern<T>[];
}
```

## License
MIT
npm package: @sigyn/slack
Description: Send Sigyn alerts to Slack via webhook
Author: GENTILHOMME Thomas
Latest version: 2.0.0

<p align="center"><h1 align="center">
  Slack notifier
</h1></p>

<p align="center">
  Send Sigyn alerts to Slack via webhook
</p>

<p align="center">
  <a href="https://github.com/MyUnisoft/sigyn/src/slack">
    <img src="https://img.shields.io/github/package-json/v/MyUnisoft/sigyn/main/src/slack?style=for-the-badge&label=version" alt="npm version">
  </a>
  <a href="https://github.com/MyUnisoft/sigyn/src/slack">
    <img src="https://img.shields.io/bundlephobia/min/@sigyn/slack?style=for-the-badge" alt="size">
  </a>
    <img src="https://api.securityscorecards.dev/projects/github.com/MyUnisoft/sigyn/badge?style=for-the-badge" alt="ossf scorecard">
  </a>
  <a href="https://github.com/MyUnisoft/sigyn/tree/main/src/slack">
    <img src="https://img.shields.io/github/actions/workflow/status/MyUnisoft/sigyn/slack.yml?style=for-the-badge">
  </a>
  <a href="https://github.com/MyUnisoft/sigyn/tree/main/src/LICENSE">
    <img src="https://img.shields.io/github/license/MyUnisoft/sigyn?style=for-the-badge" alt="license">
  </a>
</p>

## 🚧 Requirements

- [Node.js](https://nodejs.org/en/) version 18 or higher

## 🚀 Getting Started

This package is available in the Node Package Repository and can be easily installed with [npm](https://doc.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com)

```bash
$ npm i @sigyn/slack
# or
$ yarn add @sigyn/slack
```

## 📚 Usage

Add the Slack notifier to your Sigyn config:

```json

{
  "notifiers": {
    "@sigyn/slack": {
      "webhookUrl": "https://hooks.slack.com/services/aaa/bbb"
    },
    ...
  },
  "rules": [
    ...
  ]
}
```

**Webhook URL**

You can follow [this guide](https://api.slack.com/messaging/webhooks) for guidance on how to create a Slack webhook.

## License
MIT
npm package: @sigyn/teams
Description: Send Sigyn alerts to Teams via webhook
Author: GENTILHOMME Thomas
Latest version: 2.0.0

<p align="center"><h1 align="center">
  Teams notifier
</h1></p>

<p align="center">
  Send Sigyn alerts to Teams via webhook
</p>

<p align="center">
  <a href="https://github.com/MyUnisoft/sigyn/src/teams">
    <img src="https://img.shields.io/github/package-json/v/MyUnisoft/sigyn/main/src/teams?style=for-the-badge&label=version" alt="npm version">
  </a>
  <a href="https://github.com/MyUnisoft/sigyn/src/teams">
    <img src="https://img.shields.io/bundlephobia/min/@sigyn/teams?style=for-the-badge" alt="size">
  </a>
    <img src="https://api.securityscorecards.dev/projects/github.com/MyUnisoft/sigyn/badge?style=for-the-badge" alt="ossf scorecard">
  </a>
  <a href="https://github.com/MyUnisoft/sigyn/tree/main/src/teams">
    <img src="https://img.shields.io/github/actions/workflow/status/MyUnisoft/sigyn/teams.yml?style=for-the-badge">
  </a>
  <a href="https://github.com/MyUnisoft/sigyn/tree/main/src/LICENSE">
    <img src="https://img.shields.io/github/license/MyUnisoft/sigyn?style=for-the-badge" alt="license">
  </a>
</p>

## 🚧 Requirements

- [Node.js](https://nodejs.org/en/) version 18 or higher

## 🚀 Getting Started

This package is available in the Node Package Repository and can be easily installed with [npm](https://doc.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com)

```bash
$ npm i @sigyn/teams
# or
$ yarn add @sigyn/teams
```

## 📚 Usage

Add the Teams notifier to your Sigyn config:

```json

{
  "notifiers": {
    "@sigyn/teams": {
      "webhookUrl": "https://biz.webhook.office.com/webhook2/xxx/yyy"
    },
    ...
  },
  "rules": [
    ...
  ]
}
```

> [!IMPORTANT]
> Unlike other notifiers, **Teams** require both a `title` and a `content` otherwise it will fail with a 400.

**Webhook URL**

You can follow [this guide](https://learn.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook?tabs=dotnet#create-incoming-webhooks-1s) for guidance on how to create a Teams webhook.

## License
MIT
npm package: @siharilabs/ai-agent
Description: A React component for AI chatbot integration
Author: Vicky Kumar Maurya
Latest version: 0.0.9

## install @siharilabs/ai-agent 
```bash
npm install @siharilabs/ai-agent
```

## import the component in your app
```tsx
import { Agent } from '@siharilabs/ai-agent';
```

## use the component
```tsx
<Agent server="" user_id="" tenant_id="" />
```

## contact us if you have any issues
vicky@siharilabs.com
npm package: @sihay.ztch/encrypt_lib
Description: Encryption lib
Author: Christian Martínez
Latest version: 1.1.0

# Encryption / Descryption library

This library provide support for encryption and decryption

## Methods

### Encrypt

```javascript
import { encrypt } from '../encryption';

const input = 'Text to ecrypt';
const secret = 'long-secret-string';

const ecryptedText = await encrypt(input, secret);
```

### Decrypt

```javascript
import { decrypt } from '../decryption';

const ecryptedText = 'encrypted-text';
const secret = 'long-secret-string';

const text = await encrypt(ecryptedText, secret);
```

## Installation

```bash
$ npm install --save @sihay.ztch/encrypt_lib
```
npm package: @sihay.ztch/logger-digital-account
Description: Library for Digital Account logs
Author: Christian Martínez
Latest version: 1.0.2

# RabbitMQ NestJs Logger

This library reports logs through RabbitMQ in Digital Account project

### Dependencies

- `amqplib` `amqp-connection-manager`
- `@nestjs/microservices`

### Environment variables

- `APP_NAME`
- `LOGS_QUEUE`
- `HTTP_LOG_EVENT_PATTERN` (default value: **http_log**)
- `RCP_LOG_EVENT_PATTERN` (default value: **rcp_log**)
- `RABBIT_MQ_HOST`
- `RABBIT_MQ_PORT`
- `RABBIT_MQ_USER`
- `RABBIT_MQ_PASS`
npm package: @sihay.ztch/logger-lms
Description: Library report logs
Author: Christian Martínez
Latest version: 1.0.0

# RabbitMQ NestJs Logger

This library reports logs through RabbitMQ in LMS project

### Dependencies

- `amqplib` `amqp-connection-manager`
- `@nestjs/microservices`

### Environment variables

- `APP_NAME`
- `LOGS_QUEUE`
- `HTTP_LOG_EVENT_PATTERN` (default value: **http_log**)
- `RCP_LOG_EVENT_PATTERN` (default value: **rcp_log**)
- `RABBIT_MQ_HOST`
- `RABBIT_MQ_PORT`
- `RABBIT_MQ_USER`
- `RABBIT_MQ_PASS`
npm package: @sihay.ztch/logger_async
Description: Custom logger for NestJs projects. Report logs through RabbitMQ
Author: Christian Martinez
Latest version: 1.0.8

# RabbitMQ NestJs Logger

This library reports logs through RabbitMQ

## Requiremnets

### Dependencies

- `amqplib` `amqp-connection-manager`
- `@nestjs/microservices`

### Environment variables

- `LOGS_QUEUE`
- `LOG_EVENT_PATTERN`
- `MESSAGE_BROKER_USER`
- `MESSAGE_BROKER_PASS`
- `MESSAGE_BROKER_HOST`
- `MESSAGE_BROKER_PORT`

## Installation

```bash
$ npm install --save @sihay.ztch/logger_async
```
npm package: @sihay.ztch/nestcli
Description: CLI for scaffolding NestJs projects
Author: Christian Martinez
Latest version: 1.1.1

# CLI for scaffoling NestJs projects

This is a simple CLI package for helping into creating new projects based on NestJs and custom templates: **Microservice** and **Http Service**

## Requiremnets

- Node Js >= 12
- Nest Js CLI (global installation)

## Installation

```bash
$ npm install -g @sihay.ztch/nestcli
```

## Commands

It's possible execute two commands at the moment:

### Help

```bash
$ cmb help
# Shows help documnentations
```

### Create project

```bash
$ cmb new <name-of-project>
# You can pass --module=<name-of-main-module> to set main module of project
# To set template pass --microservice (-m) or --httpservice (-h)
# If you work with http service, can pass --db=<type> to establish the type of database (types: mariadb | mysql | postgres | mssql | oracle)
# If you do not pass arguments, the CLI will ask for them
```
npm package: @sihay.ztch/pagination_lib
Description: Pagination library
Author: Christian Martínez
Latest version: 1.0.1

# Pagination Library

Help libary for pagination

## Installation

```
npm install @sihay.ztch/pagination_lib
```

> Note: The class PaginationQueryDto use `class-validator` and `class-transformer` dependencies

## Utilities

### DTO Validator

You can extends of this class it is necessary

```typescript
class PaginationQueryDto {
  @IsOptional()
  @IsNumber()
  @Min(1)
  @Type(() => Number)
  page: number;

  @IsOptional()
  @IsNumber()
  @Min(2)
  @Type(() => Number)
  perPage: number;
}
```

### Exceptions

When current page is more granther than last page throws a PaginationExcepetion

```typescript
class PaginationException {
  private code = 400;
  private message = 'Page out of range';
  private error = 'Bad request';

  getResponse(): IPaginationExcepion {
    return {
      code: this.code,
      message: this.message,
      error: this.error,
    };
  }
}
```

### Paginator

This function returns a paginated response

```typescript
import { paginateResponse } from '@sihay.ztch/pagination_lib';

const data = new Array(100);
const total = data.length;
const perPage = 10;
const currentPage = 1;
const portionOfData = new Array(perPage);

const result = paginateResponse(portionOfData, total, currentPage, perPage);
```

`paginateResponse` return an object who implements **PaginationResponse** interface:

```typescript
interface PaginationResponse {
  data: any[];
  total: number;
  current_page: number;
  next_page: number | null;
  prev_page: number | null;
  last_page: number | null;
}
```
npm package: @sihl/core
Description: This package contains namespaced libraries and glue code that Sihl apps depend on. Some of the libraries get pulled from NPM and Sihl provides the typed bindings.
Author: Josef Erben josef@oxidizing.io
Latest version: 0.0.19

# sihl-core

This package contains namespaced libraries and glue code that Sihl apps depend on. Some of the libraries get pulled from NPM and Sihl provides the typed bindings.

## Components

* Async
* Base64
* Uuid
* Bcrypt
* Config
* Date
* Db
* Error
* HTTP
* Logging
* Testing
* Settings
* App
npm package: @sihl/mysql
Description: This package contains bindings to [mysql2](https://www.npmjs.com/package/mysql2) and it implements the persistence API, so it can be used as data storage.
Author: Josef Erben josef@oxidizing.io
Latest version: 0.0.19

# @sihl/mysql

This package contains bindings to [mysql2](https://www.npmjs.com/package/mysql2) and it implements the persistence API, so it can be used as data storage.
npm package: @sihl/users
Description: This package contains a Sihl app that deals with user management.
Author: Josef Erben josef@oxidizing.io
Latest version: 0.0.19

# Users

This package contains a Sihl app that deals with user management.

## Features

* Login, logout
* Register, confirm email flow
* Forgot password flow (reset password)
* Update password, set password (as admin)
* Update user
* Fetch users
* Admin UI: Show users, user details, set password, login, logout

## Admin UI

![User management](/@sihl/users/images/screen.png)
npm package: @sihq/reactive
Description: Sihq Reactive
Author: Brad Martin
Latest version: 1.0.4

# Sihq \ Reactive

[![Latest Version on Packagist](https://img.shields.io/packagist/v/sihq/laravel-reactive.svg?style=flat-square)](https://packagist.org/packages/sihq/laravel-reactive)
[![Total Downloads](https://img.shields.io/packagist/dt/sihq/laravel-reactive.svg?style=flat-square)](https://packagist.org/packages/sihq/laravel-reactive)
![GitHub Actions](https://github.com/sihq/laravel-reactive/actions/workflows/main.yml/badge.svg)

Sihq Reactive for Laravel.

## Installation

You can install the package via composer:

```bash
yarn add @sihq/reactive
```
npm package: @sihq/ui-components
Description: Sihq UI Components
Author: Brad Martin
Latest version: 1.0.58

# SIHQ \ UI Components

[![Latest Version on Packagist](https://img.shields.io/packagist/v/sihq/laravel-reactive.svg?style=flat-square)](https://packagist.org/packages/sihq/laravel-reactive)
[![Total Downloads](https://img.shields.io/packagist/dt/sihq/laravel-reactive.svg?style=flat-square)](https://packagist.org/packages/sihq/laravel-reactive)
![GitHub Actions](https://github.com/sihq/laravel-reactive/actions/workflows/main.yml/badge.svg)

SIHQ UI Component library, Components can be viewed on storybook: [SIHQ UI - Storybook](https://sihq.github.io/ui-components)

## Installation

You can install the package via yarn:

```bash
yarn add sihq/ui-components
```

## Usage

```php
// See storybook above
```

### Changelog

Please see [CHANGELOG](CHANGELOG.md) for more information what has changed recently.

## Contributing

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

### Security

If you discover any security related issues, please email bradley.r.martin@me.com instead of using the issue tracker.
npm package: @sihuaguofen/base-converter
Description: Base converter is a NPM Package useful for converting numbers from one base to another.
Latest version: 1.1.1

# Base converter

Base converter is a NPM Package useful for converting numbers from one base to another.

## Installation

if you are using yarn:

```bash
yarn add @sihuaguofen/base-converter
```

if you are using npm:

```bash
npm install @sihuaguofen/base-converter
```

## Usage

### Initialize

```javascript
import { BaseConverter } from '@sihuaguofen/base-converter';

const baseConverter = new BaseConverter();
```

### API

**`convertFromBaseNToDecimal(numberToConvert: string, fromBase: number): number`**

Converts a number in base `N` to a decimal number. `numberToConvert` needs to be a string because when `N` is greater than or equal to `10`, we need to use letters.

```javascript
baseConverter.convertFromBaseNToDecimal('101', 2) // returns 5
baseConverter.convertFromBaseNToDecimal('ABC', 16) // returns 2748
baseConverter.convertFromBaseNToDecimal('101.11', 2) // returns 5.75
```

**`convertFromDecimalToBaseN(numberToConvert: number, toBase: number, precision: number): string`**

Convert a decimal number to a number in base `N`.

```javascript
baseConverter.convertFromDecimalToBaseN(173, 16); // returns 'AD'
baseConverter.convertFromDecimalToBaseN(17.6, 3); // returns '122.12'
```

**`convert(numberToConvert: string, convertOptions: object)`**

Converts a number in base `N` to a number in base `M`. The `convertOptions` contains the following properties.

```javascript
convertOptions = {
    fromBase: number;
    toBase: number;
    precision: number = 2;
}
```

```javascript
baseConverter.convert('78', { fromBase: 11, toBase: 6} ) // returns '221'
baseConverter.convert('45.5', { fromBase: 14, toBase: 2} ) // returns '111101.01'
```

## Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

## License

[MIT](https://choosealicense.com/licenses/mit/)
npm package: @siimple/cli
Description: Command Line for siimple
Author: Josemi Juanes
Latest version: 0.4.0

# @siimple/cli

The **siimple** command line.

> This package is included in the main `siimple` package and a separate installation is not required.

## Installation

Add this package to your project using **npm**:

```bash
$ npm install --save @siimple/cli
```

Note that **Node.js version >=14** is required for running the CLI tool.

## Usage

The easiest way is using `npx` for running the **siimple** CLI tool:

```bash
$ npx siimple -c siimple.config.js -o siimple.css
```

Instead of using `npx`, you can drop it inside of an `npm run` script in your `package.json` file:

```json title=package.json
{
    "name": "my-project",
    "version": "1.0.0",
    "type": "module",
    "scripts": {
        "build-siimple": "siimple -c siimple.config.js -o siimple.css"
    },
    // ...other package.json content
}
```

Or you can directly execute it using the relative path to the executable file instead:

```bash
$ ./node_modules/.bin/siimple -c siimple.config.js -o siimple.css
```

## Generate your CSS

Create a file called `siimple.config.js` with your configuration, and print the output CSS **to stdout**: 

```bash
$ npx siimple -c siimple.config.js
```

If you would like to save the generated CSS **to a file**, use the `-o` option instead with the path of the output `.css` file:

```bash
$ npx siimple -c siimple.config.js -o siimple.css
```

> **Note**: **siimple** uses ECMAScript modules, so you will need to set `"type": "module"` in your `package.json` file or use `.mjs` as the extension for your configuration file (`siimple.config.mjs`).

## License

[MIT License](https://github.com/jmjuanes/siimple/blob/main/LICENSE).
npm package: @siimple/colors
Description: A color palette for the siimple css toolkit
Author: Josemi Juanes
Latest version: 0.4.0

# @siimple/colors

A color palette for the **siimple CSS toolkit**.

## Install

Install this module using **npm**:

```bash
$ npm install --save @siimple/colors
```

## Usage

You can use the colors exported by this module in your `siimple.config.js` file, for example to generate your colors scale:

```js
import colors from "@siimple/colors";

export default {
    colors: {
        text: colors.gray["700"],
        background: colors.gray["100"],
        primary: colors.mint["600"],
    },
    // ...other configuration
};
```

Check out the [full list of available colors](https://siimple.josemi.xyz/colors).

## License

[MIT License](https://github.com/jmjuanes/siimple/blob/main/LICENSE).
npm package: @siimple/core
Description: Core module of the siimple css toolkit
Author: Josemi Juanes
Latest version: 0.4.0

# @siimple/core

The core engine of the **siimple CSS toolkit**, that can be used for building your own themeable CSS framework.

## Install

Install this package using **npm**:

```bash
$ npm install --save @siimple/core
```

## API

### css(config)

Given a [configuration object](https://siimple.josemi.xyz/configuration), this method will generate a CSS string with the parsed styles in `config.styles` and using the provided theme in the configuration object.

```js
import {css} from "@siimple/core";

const result = css({
    useBorderBox: false,
    useRootStyles: false,
    colors: {
        primary: "#34dde5",
    },
    styles: {
        button: {
            backgroundColor: "primary",
            color: "white",
            p: "2rem",
        },
    },
});
```

This will generate the following CSS string:

```css
button {
    background-color: #34dde5;
    color: white;
    padding: 2rem;
}
```

### mergeStyles(source, target)

Performs a **deep merge** of the styles defined in the `target` object into the `source` object, and returns the merged styles object.

```js
import {mergeStyles} from "@siimple/core";

const sourceStyles = {
    ".button": {
        backgroundColor: "primary",
        color: "white",
        padding: "1.5rem",
        "&:hover": {
            backgroundColor: "secondary",
        },
    },
};

const mergedStyles = mergeStyles(sourceStyles, {
    ".button": {
        borderRadius: "0.5rem",
        "&:hover": {
            backgroundColor: "inherit",
            opacity: "0.5",
        },
    },
});
``` 

In the previous example the merged styles will be:

```js
mergedStyles = {
    ".button": {
        backgroundColor: "primary",
        borderRadius: "0.5rem",
        color: "white",
        padding: "1.5rem",
        "&:hover": {
            backgroundColor: "inherit",
            opacity: "0.5",
        },
    },
};
```

### mergeConfig(source, target)

This function will return a new configuration object as a result of performing a **deep merge** of the `target` configuration object into `source`.

```js
import {mergeConfig} from "@siimple/core";

const config = mergeConfig({ /* source */}, {/* target */});
```


## License

[MIT License](https://github.com/jmjuanes/siimple/blob/main/LICENSE).
npm package: @siimple/icons
Description: Siimple icons in JSON format.
Author: Josemi Juanes
Latest version: 0.4.0

# @siimple/icons

Siimple icons in JSON format.

## Installation

Use **npm** or **yarn** for adding this package to your project:

```bash
$ yarn add @siimple/icons
``` 

## Usage

This package export all icons as a JavaScript object. The icon ID is the key, and as a value that is an object with the following properties:

- `path`: the icon SVG path in string format.
- `category`: the category which the icon belongs to (for example `arrows` or `interfaces`).

Example: 

```json
{
    "arrow-right": {
        "category": "arrows",
        "path": "...",
    },
    // ...
}
```

All icons have a size of 24x24 pixels and a padding of 2 pixels.

# License

[MIT License](https://github.com/jmjuanes/siimple/blob/main/LICENSE).
npm package: @siimple/postcss
Description: PostCSS plugin for siimple.
Author: Josemi Juanes
Latest version: 0.4.0

# @siimple/postcss

Integrate **siimple** in your PostCSS build process using our plugin for PostCSS.

## Installation

Add this package to your project using **npm**:

```bash
$ npm install --save @siimple/postcss
```

Note that **Node.js >=14** and **postcss-cli >=10** are required.

## Usage

In your `postcss.config.js`, include the plugin of **siimple** for PostCSS with the path to your `siimple.config.js` (or `siimple.config.mjs` if you are not in an ESM env):

```js
import autoprefixer from "autoprefixer";
import siimple from "@siimple/postcss";

export default {
    plugins: [
        siimple("./siimple.config.js"),
        autoprefixer(),
        // other plugins
    ],
};
```

## License

[MIT License](https://github.com/jmjuanes/siimple/blob/main/LICENSE).
npm package: @siimple/preset-base
Description: Base theme preset for the siimple css toolkit
Author: Josemi Juanes
Latest version: 0.4.0

# @siimple/preset-base

Default theme preset for the **siimple CSS toolkit**.

## Install

Install this package using **npm**:

```bash
$ npm install --save @siimple/preset-base
```

## Usage

Use the base theme in your `siimple.config.js` file:

```js
import base from "@siimple/preset-base";

export default {
    // Import all default scales, breakpoints and root styles
    ...base,
    // Extend default theme scales
    colors: {
        ...base.colors,
        text: "#000",
    },
    // ...other configuration
};
```
npm package: @siimple/preset-dark
Description: Dark theme preset for the siimple css toolkit
Author: Josemi Juanes
Latest version: 0.4.0

# @siimple/preset-dark

A dark theme preset for the **siimple CSS toolkit**. You can use this preset as a starting point for building your own dark theme for **siimple**.

## Install

Add this preset to your project using **npm** or **yarn**:

```bash
$ npm install --save @siimple/preset-dark
```

## Usage

Include this preset in your `siimple.config.js` file:

```js
import dark from "@siimple/preset-dark";

export default {
    ...dark,
    // ...other configuration
};
```