open-index/open-npm huggingface dataset:
npm package: @stackmason/nest-ioredis
Description: Configurable ioRedis Module for NestJs
Author: John Biundo
Latest version: 1.0.4
Deprecated: This package has been moved to @stackmason/nestjs-ioredis

<h1 align="center">Configurable ioRedis module for NestJS</h1>


<div align="center">
  <a href="https://github.com/johnbiundo/nestjs-config-manager/blob/master/LICENSE">
    <img src="https://img.shields.io/badge/license-MIT-brightgreen.svg" alt="License" />
  </a>
  <a href="https://badge.fury.io/js/nestjs-config-manager">
    <img src="https://badge.fury.io/js/nestjs-config-manager.svg" alt="npm version" height="18">
  </a>
</div>


## Documentation

```typescript
DEFAULT_REDIS_OPTIONS = {
    // Connection
    port: 6379,
    host: 'localhost',
    family: 4,
    connectTimeout: 10000,
    retryStrategy: function (times) {
        return Math.min(times * 50, 2000);
    },
    keepAlive: 0,
    noDelay: true,
    connectionName: null,
    // Sentinel
    sentinels: null,
    name: null,
    role: 'master',
    sentinelRetryStrategy: function (times) {
        return Math.min(times * 10, 1000);
    },
    natMap: null,
    enableTLSForSentinelMode: false,
    updateSentinels: true,
    // Status
    password: null,
    db: 0,
    // Others
    dropBufferSupport: false,
    enableOfflineQueue: true,
    enableReadyCheck: true,
    autoResubscribe: true,
    autoResendUnfulfilledCommands: true,
    lazyConnect: false,
    keyPrefix: '',
    reconnectOnError: null,
    readOnly: false,
    stringNumbers: false,
    maxRetriesPerRequest: 20,
    maxLoadingRetryTime: 10000
};
```

## Change Log

See [Changelog](CHANGELOG.md) for more information.

## Contributing

Contributions welcome! See [Contributing](CONTRIBUTING.md).

## Author

* **John Biundo (Y Prospect on [Discord](https://discord.gg/G7Qnnhy))**

## License

Licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
npm package: @stackmason/nestjs-ioredis
Description: Configurable ioRedis Module for NestJs
Author: John Biundo
Latest version: 1.0.4

<h1 align="center">Configurable ioRedis module for NestJS</h1>


<div align="center">
  <a href="https://github.com/johnbiundo/nestjs-config-manager/blob/master/LICENSE">
    <img src="https://img.shields.io/badge/license-MIT-brightgreen.svg" alt="License" />
  </a>
  <a href="https://badge.fury.io/js/nestjs-config-manager">
    <img src="https://badge.fury.io/js/nestjs-config-manager.svg" alt="npm version" height="18">
  </a>
</div>


## Documentation

```typescript
DEFAULT_REDIS_OPTIONS = {
    // Connection
    port: 6379,
    host: 'localhost',
    family: 4,
    connectTimeout: 10000,
    retryStrategy: function (times) {
        return Math.min(times * 50, 2000);
    },
    keepAlive: 0,
    noDelay: true,
    connectionName: null,
    // Sentinel
    sentinels: null,
    name: null,
    role: 'master',
    sentinelRetryStrategy: function (times) {
        return Math.min(times * 10, 1000);
    },
    natMap: null,
    enableTLSForSentinelMode: false,
    updateSentinels: true,
    // Status
    password: null,
    db: 0,
    // Others
    dropBufferSupport: false,
    enableOfflineQueue: true,
    enableReadyCheck: true,
    autoResubscribe: true,
    autoResendUnfulfilledCommands: true,
    lazyConnect: false,
    keyPrefix: '',
    reconnectOnError: null,
    readOnly: false,
    stringNumbers: false,
    maxRetriesPerRequest: 20,
    maxLoadingRetryTime: 10000
};
```

## Change Log

See [Changelog](CHANGELOG.md) for more information.

## Contributing

Contributions welcome! See [Contributing](CONTRIBUTING.md).

## Author

* **John Biundo (Y Prospect on [Discord](https://discord.gg/G7Qnnhy))**

## License

Licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
npm package: @stackmastery/gitignore
Description: Adds a .gitignore file to your project directory
Author: Md Junaid Islam
Latest version: 2.0.0

# @stackmastery/gitignore

`@stackmastery/gitignore` is a simple CLI tool that allows you to quickly add a `.gitignore` file to your project by selecting from predefined templates for popular frameworks and tools, such as Node.js, Angular, React, and Vite.

With just one command, you can get the correct `.gitignore` file based on your project type.

## Installation

Run this to your main terminal
```bash
npm i @stackmastery/gitignore
```

You can use `gitignore` directly via `npx` without needing to install it globally.

```bash
npx gitignore
npm package: @stackmate/stackmate
Description: Stackmate - Infrastructure for busy developers
Author: Fotis Alexandrou
Latest version: 0.3.4

<p align="center">
  <img src="https://user-images.githubusercontent.com/301123/185978300-f0f8d5e5-e2ce-44e2-b507-be6d8d9a3f4b.png" alt="Stackmate logo" />
</p>

<p align="center">
  <a href="https://stackmate.io">
    🏡 Website
  </a>
  &nbsp;
  <a href="https://github.com/orgs/stackmate-io/projects/3">
    🧭 Roadmap
  </a>
  &nbsp;
  <a href="https://github.com/stackmate-io/stackmate/issues/new">
    🐞 Report an issue
  </a>
  &nbsp;
  <a href="https://docs.stackmate.io">
    📖 Documentation
  </a>
</p>

## Geting started
Follow [this]([https://docs.stackmate.io/guides/quick-start](https://docs.stackmate.io/guides/getting-started)) simple and comprehensive "[getting started](https://docs.stackmate.io/guides/getting-started)" guide to deploy yout first project with Stackmate

## What is Stackmate?
[Stackmate](https://stackmate.io) is a free, opinionated, open source tool that helps busy professionals deploy their cloud infrastructure without doing much. It abstracts and simplifies resource creation, modification and destruction in an intuitive way.
The reasoning behind Stackmate is that most of the times, all developers want is to simply deploy their database, cache or object storage services, without having to read the manual or go through complex DevOps processes.

## Who is Stackmate for?
Stackmate was built with the busy developer in mind. It's for people who want to deploy an average traffic website, that depends on a database and a few complementary services, without spending a lifetime in complex consoles or developer tools.

## How it works
Stackmate uses an extremely simple configuration file either in JSON or YAML format (yes, we hear ya). After that's done, you can use `stackmate deploy <environment` to deploy your infrastructure on the provider of your choice.
Alternatively, you can use our [Cloud](https://stackmate.io/cloud/) version that abstracts even more details away from you.

## Get support
- 🧭 Follow our [public roadmap](https://github.com/orgs/stackmate-io/projects/3)
- 🐞 For bug reports, issues, questions feature requests, [create a GitHub issue in this repository](/issues/new)
- 📖 Our documentation can be found at [docs.stackmate.io](https://docs.stackmate.io)
- ❤️ Follow us on Twitter at [@stackmate](https://twitter.com/stackmate) and [@falexandrou](https://twitter.com/falexandrou)

**Note**: If you're looking for the outdated Python / Ansible version, you can find it in [this repository](https://github.com/falexandrou/python-ansible-deployer)
npm package: @stackmeister/class-names
Description: @stackmeister/class-names =========================
Latest version: 0.1.8

@stackmeister/class-names
=========================

A class name concatenation utility for UI building.

Install
=======

```bash
// Yarn
yarn add @stackmeister/class-names

// NPM
npm i @stackmeister/class-names
```

TypeScript typings are included (No `@types/` package needed)

Usage
=====

```ts
import classNames from '@stackmeister/class-names'

classNames('btn') // "btn"
classNames('btn', 'btn-primary') // "btn btn-primary"
classNames('btn', disabled && 'btn-disabled') // "btn" or "btn btn-disabled"
classNames('btn', submit ? 'btn-submit' : 'btn-default') // "btn btn-submit" or "btn btn-default"
```
npm package: @stackmeister/clone
Description: @stackmeister/clone ===================
Latest version: 0.1.7

@stackmeister/clone
===================

Deep cloning utility.

Supports reference integrity. Can clone circular structures.

It won't keep object identity, only for arrays.

Install
=======

```bash
// Yarn
yarn add @stackmeister/clone

// NPM
npm i @stackmeister/clone
```

TypeScript typings are included (No `@types/` package needed)

Usage
=====

```ts
import clone from '@stackmeister/clone'
import equals from '@stackmeister/equals'

const a = { a: [1, 2, 3] }
const b = clone(a)

a === b      // false
equals(a, b) // true
```
npm package: @stackmeister/color
Description: @stackmeister/color ===================
Latest version: 0.1.7

@stackmeister/color
===================

Color conversion and manipulation toolbelt.

Install
=======

```bash
// Yarn
yarn add @stackmeister/color

// NPM
npm i @stackmeister/color
```

TypeScript typings are included (No `@types/` package needed)

Usage
=====

Notice many features are not documented yet.

### Parsing colors

```ts
import { parse } from '@stackmeister/color'

const red = parse('red') // { space: 'rgb', data: [255, 0, 0] }
const blue = parse('#00f') // { space: 'rgb', data: [0, 0, 255] }
const green = parse('rgb(0, 255, 0)') // { space: 'rgb', data: [0, 255, 0] }
```

Supported syntaxes:
- Color names (extensive list of over 600 known colors)
- Hex codes (short and long)
- Function syntax (rgb, rgba, hsl, hsla)

### Manipulating colors

Check auto-completion for full capabilities for now

```ts
const darkRed = red.darken(.5)
```
npm package: @stackmeister/equals
Description: @stackmeister/equals ====================
Latest version: 0.1.6

@stackmeister/equals
====================

A small function to check for deep, strict and structural equality.

Install
=======

```bash
// Yarn
yarn add @stackmeister/equals

// NPM
npm i @stackmeister/equals
```

TypeScript typings are included (No `@types/` package needed)

Usage
=====

```ts
import equals from '@stackmeister/equals'

equals(1, 2) // false
equals(1, 1) // true

equals({ a: 1 }, { a: 2 }) // false
equals({ a: 1 }, { a: 1 }) // true

// Require exact property order
equals({ a: 1, b: 2 }, { b: 2, a: 1 }) // true
equals({ a: 1, b: 2 }, { b: 2, a: 1 }, { propertyOrder: 'exact' }) // false
```
npm package: @stackmeister/json-patch
Description: @stackmeister/json-patch ============================
Latest version: 0.1.5

@stackmeister/json-patch
============================

Typing and utilities for working with JSON-Patches

See [RFC-6902](https://datatracker.ietf.org/doc/html/rfc6902) for more information on JSON-Patch documents.

Install
=======

```bash
// Yarn
yarn add @stackmeister/json-patch

// NPM
npm i @stackmeister/json-patch
```

TypeScript typings are included (No `@types/` package needed)

Usage
=====

### Creating patches manually with factories

```ts
import type { JsonPatch } from '@stackmeister/json-patch'
import { add, replace, remove, move, copy, test } from '@stackmeister/json-patch'

const myPatch: JsonPatch = [
  add('/c', 10),
  replace('/b', 5),
  remove('/a'),
  move('/b', '/d'),
  copy('/d', '/e'),
  test('/e', 5),
]
```

### Apply patches to values

```ts
import { applyPatch } from '@stackmeister/json-patch'

const value = { a: 1, b: 2 }
const result = applyPatch(value, myPatch)

// Result:
// { c: 10, d: 5, e: 5 }
```

### Create patches from mutations

```ts
import { createPatch } from '@stackmeister/json-patch'

const value = { id: 1, firstName: '' }
const patch = createPatch(value, draft => {
  draft.firstName = 'John'
  draft.lastName = 'Doe'
  draft.skills = ['js', 'ts']
  draft.skills.push('css')
})

// Patch:
// [
//   { op: 'replace', path: '/firstName', value: 'John' },
//   { op: 'add', path: '/lastName', value: 'Doe' },
//   { op: 'add', path: '/skills', value: ['js', 'ts'] },
//   { op: 'add', path: '/skills/-', value: 'css' },
// ]
```
npm package: @stackmeister/json-pointer
Description: @stackmeister/json-pointer ==========================
Latest version: 0.1.6

@stackmeister/json-pointer
==========================

Utilities for JSON-pointers.

Install
=======

```bash
// Yarn
yarn add @stackmeister/json-pointer

// NPM
npm i @stackmeister/json-pointer
```

TypeScript typings are included (No `@types/` package needed)

Usage
=====

```ts
import { get, set, remove } from '@stackmeister/json-pointer'

get('/someProperty/2', { someProperty: ['a', 'b', 'c', 'd'] }) // "c"

set('/a/b', { a: { b: 2 } }, 5) // { a: { b: 5 } }

remove('/a/b', { a: { b: 2, c: 3 } }) // { a: { c: 3 } }
```
npm package: @stackmeister/json-ref
Description: @stackmeister/json-ref ==========================
Latest version: 0.1.5

@stackmeister/json-ref
==========================

Typing and utilities for working with JSON-Schema Refs (`{ $ref: '' }`)

Install
=======

```bash
// Yarn
yarn add @stackmeister/json-ref

// NPM
npm i @stackmeister/json-ref
```

TypeScript typings are included (No `@types/` package needed)

Usage
=====

### Dereferencing a value

The most important key function of this library is **dereferencing**.

It takes any value and will recursively resolve any JSON-refs found in it.

It supports all common operations regarding `$id` and `$anchor` in the JSON-schema standard.

Notice the input value doesn't have to be a JSON-Schema! Dereferencing can be used on any
JavaScript value freely.

```ts
import type { deref } from '@stackmeister/json-ref'

const user = {
  properties: {
    email: { $ref: '#/$defs/email' },
    password: { type: 'string', minLength: 5 },
  },
  $defs: {
    email: { type: 'string' }
  }
}

const resolvedUser = await deref(user)
```

Resolving external URLs, handling internal ID/Base-URLs via `$id`, internal anchors etc. are all fully supported.

It also comes with proper typing which allows you to cleanly remove refs from a type-definition
once resolved.
npm package: @stackmeister/openapi
Description: @stackmeister/openapi ==========================
Latest version: 0.1.5

@stackmeister/openapi
==========================

Typing and utilities for OpenAPI, mostly focused on 3.x versions.

Install
=======

```bash
// Yarn
yarn add @stackmeister/openapi

// NPM
npm i @stackmeister/openapi
```

TypeScript typings are included (No `@types/` package needed)

Usage
=====

This library consists of types, mostly. Soon there will also be factories.

```ts
import type { Document } from '@stackmeister/openapi'

const spec: Document = {
  openapi: '3.0',
  info: {
    // From here on, just follow auto-completion
  }
}
```

For every structure that exists in the OpenAPI 3 spec, there will be a fitting type in here, including complex schema typing
through `@stackmeister/json-schema`
npm package: @stackmeister/react-define-component
Description: @stackmeister/react-define-component ====================================
Latest version: 0.0.5

@stackmeister/react-define-component
====================================

> TBD

Install
=======

```bash
// Yarn
yarn add @stackmeister/react-define-component

// NPM
npm i @stackmeister/react-define-component
```

TypeScript typings are included (No `@types/` package needed)

Usage
=====

```tsx
import defineComponent from '@stackmeister/react-define-component'

// TBD
```
npm package: @stackmeister/react-overlay
Description: @stackmeister/react-overlay ===============================
Latest version: 0.1.7

@stackmeister/react-overlay
===============================

Utility for easily overlaying elements over the whole app in React.

It helps elements deep inside the DOM to break out of it
and avoid z-index fuckery when creating modals, dialogs, tooltips,
tutorial markers etc.

Create modals and tooltips from wherever you are in your components!

It is using React Portals, some DOM-manipulation, but no CSS. Positioning
etc. is up to your app. The OverlayPortal will just help you to break
out of the DOM.

Install
=======

```bash
// Yarn
yarn add @stackmeister/react-overlay

// NPM
npm i @stackmeister/react-overlay
```

TypeScript typings are included (No `@types/` package needed)

Usage
=====

```tsx
import { OverlayPortal } from '@stackmeister/react-overlay'
import { useState } from 'react'
import { render } from 'react-dom'

const App = () => {
  const [open, setOpen] = useState(false)

  return (
    <div class="app">
      <button type="button" onClick={() => setOpen(true)}>
        Open Overlay
      </button>

      {open && (
        <OverlayPortal>
          <div className="modal" style={{ position: 'absolute', top: 100, left: 100 }}>
            This will overlay everything by default

            <button type="button" onClick={() => setOpen(false)}>
              Close Overlay
            </button>
          </div>
        </OverlayPortal>
      )}
    </div>
  )
}

render(<App />, rootElement)
```
npm package: @stackmeister/react-use-calc
Description: @stackmeister/react-use-calc ============================
Latest version: 0.4.7

@stackmeister/react-use-calc
============================

Provides a CSS-like `calc`-function in React with support for all CSS units.

Install
=======

```bash
// Yarn
yarn add @stackmeister/react-use-calc

// NPM
npm i @stackmeister/react-use-calc
```

TypeScript typings are included (No `@types/` package needed)

Usage
=====

### Normal usage

```tsx
import useCalc from '@stackmeister/react-use-calc'

const App = () => {
  const { calc } = useCalc()

  return (
    <div style={{ width: calc`100vw - 12px` }}>
      Hello World!
    </div>
  )
}
```

### With a reference element

With a reference element, units like `em` and `%` will be bound to the referenced element.

```tsx
import useCalc from '@stackmeister/react-use-calc'

const App = () => {
  const { calc, ref } = useCalc()

  return (
    <div ref={ref}>
      <div style={{ height: calc`50% - 2em` }}>
        Hello World!
      </div>
    </div>
  )
}
```
npm package: @stackmeister/react-use-document-visibility
Description: @stackmeister/react-use-document-visibility ===========================================
Latest version: 0.1.5

@stackmeister/react-use-document-visibility
===========================================

A hook that checks if a screen is currently rendered by its system or not.

Mostly relies on `document.hidden` and the `visibilitychange` event.

This hook can help with **green coding**, to stop animations and heavy stuff when the
app is not currently on top or rendered.

Install
=======

```bash
// Yarn
yarn add @stackmeister/react-use-document-visibility

// NPM
npm i @stackmeister/react-use-document-visibility
```

TypeScript typings are included (No `@types/` package needed)

Usage
=====

```tsx
import useDocumentVisibility from '@stackmeister/react-use-document-visibility'

const App = () => {
  const { visible } = useDocumentVisibility()

  return (
    <div>
      {visible && <HeavyComponent />}
    </div>
  )
}
```
npm package: @stackmeister/react-use-intersection-observer
Description: @stackmeister/react-use-intersection-observer =============================================
Latest version: 0.1.5

@stackmeister/react-use-intersection-observer
=============================================

A hook that wraps around the DOM IntersectionObserver.

With it you can check things like "for how many percent is this element in that element"
or "am I scrolled half over this element".

Install
=======

```bash
// Yarn
yarn add @stackmeister/react-use-intersection-observer

// NPM
npm i @stackmeister/react-use-intersection-observer
```

TypeScript typings are included (No `@types/` package needed)

Usage
=====

```tsx
import useIntersectionObserver from '@stackmeister/react-use-intersection-observer'

const App = () => {
  const { ref, entry } = useIntersectionObserver()

  // entry =
  // {
  //   boundingClientRect: DOMRect,
  //   intersectionRatio: number,
  //   intersectionRect: DOMRect,
  //   isIntersecting: boolean,
  //   rootBounds: DOMRect,
  //   time: number,
  // }

  return (
    <div ref={ref}>
      ...
    </div>
  )
}
```
npm package: @stackmeister/react-use-media-query-match
Description: @stackmeister/react-use-media-query-match =========================================
Latest version: 0.1.5

@stackmeister/react-use-media-query-match
=========================================

Use reactive media queries directly inside React.

Great for reactive, responsive design and responsive DOM changes.

Install
=======

```bash
// Yarn
yarn add @stackmeister/react-use-media-query-match

// NPM
npm i @stackmeister/react-use-media-query-match
```

TypeScript typings are included (No `@types/` package needed)

Usage
=====

```tsx
import useMediaQueryMatch from '@stackmeister/react-use-media-query-match'

const App = () => {
  const matches = useMediaQueryMatch('all and (min-width: 1200px')

  return (
    <div ref={ref}>
      Hello {matches ? 'Desktop!' : 'Mobile!'}!
    </div>
  )
}
```
npm package: @stackmeister/react-use-merged-ref
Description: @stackmeister/react-use-merged-ref ==================================
Latest version: 0.1.5

@stackmeister/react-use-merged-ref
==================================

Got multiple refs from hooks or own `useRef` calls, but you can only pass one to an element?

This library can merge multiple refs of the same type into one.

Install
=======

```bash
// Yarn
yarn add @stackmeister/react-use-merged-ref

// NPM
npm i @stackmeister/react-use-merged-ref
```

TypeScript typings are included (No `@types/` package needed)

Usage
=====

### Basic Usage


```tsx
import useMergedRef from '@stackmeister/react-use-merged-ref'

const App = () => {
  const scrollingRef = useScrolling()
  const { ref: touchRef } = useTouchControls()
  const { calc, ref: calcRef } = useCalc()
  const ref = useMergedRef(scrollingRef, touchRef, calcRef)

  return (
    <div ref={ref}>
      Hello World!
    </div>
  )
}
```

### Easy to encapsulate

```tsx
import useMergedRef from '@stackmeister/react-use-merged-ref'

const useAppThings = () => {
  const scrollingRef = useScrolling()
  const { ref: touchRef } = useTouchControls()
  const { calc, ref: calcRef } = useCalc()

  return {
    calc,
    ref: useMergedRef(scrollingRef, touchRef, calcRef)
  }
}

const App = () => {
  const { calc, ref } = useAppThings()

  return (
    <div ref={ref}>
      Hello World!
    </div>
  )
}
```
npm package: @stackmeister/react-use-reactive-ref
Description: @stackmeister/react-use-calc ================================
Latest version: 0.0.5

@stackmeister/react-use-calc
================================

Provides a CSS-like `calc`-function in React with support for all CSS units.

Usage
=====

### Normal usage

```tsx
import useCalc from '@stackmeister/react-use-calc'

const App = () => {
  const { calc } = useCalc()

  return (
    <div style={{ width: calc`100vw - 12px` }}>
      Hello World!
    </div>
  )
}
```

### With a reference element

With a reference element, units like `em` and `%` will be bound to the referenced element.

```tsx
import useCalc from '@stackmeister/react-use-calc'

const App = () => {
  const { calc, ref } = useCalc()

  return (
    <div ref={ref}>
      <div style={{ height: calc`50% - 2em` }}>
        Hello World!
      </div>
    </div>
  )
}
```
npm package: @stackmeister/react-use-reinitialized-refs
Description: @stackmeister/react-use-merged-ref ======================================
Latest version: 0.0.3

@stackmeister/react-use-merged-ref
======================================

Got multiple refs from hooks or own `useRef` calls, but you can only pass one to an element?

This library can merge multiple refs of the same type into one.

Usage
=====

### Basic Usage


```tsx
import useMergedRef from '@stackmeister/react-use-merged-ref'

const App = () => {
  const scrollingRef = useScrolling()
  const { ref: touchRef } = useTouchControls()
  const { calc, ref: calcRef } = useCalc()
  const ref = useMergedRef(scrollingRef, touchRef, calcRef)

  return (
    <div ref={ref}>
      Hello World!
    </div>
  )
}
```

### Easy to encapsulate

```tsx
import useMergedRef from '@stackmeister/react-use-merged-ref'

const useAppThings = () => {
  const scrollingRef = useScrolling()
  const { ref: touchRef } = useTouchControls()
  const { calc, ref: calcRef } = useCalc()

  return {
    calc,
    ref: useMergedRef(scrollingRef, touchRef, calcRef)
  }
}

const App = () => {
  const { calc, ref } = useAppThings()

  return (
    <div ref={ref}>
      Hello World!
    </div>
  )
}
```
npm package: @stackmeister/react-use-simple-state
Description: @stackmeister/react-use-calc ================================
Latest version: 0.0.4

@stackmeister/react-use-calc
================================

Provides a CSS-like `calc`-function in React with support for all CSS units.

Usage
=====

### Normal usage

```tsx
import useCalc from '@stackmeister/react-use-calc'

const App = () => {
  const { calc } = useCalc()

  return (
    <div style={{ width: calc`100vw - 12px` }}>
      Hello World!
    </div>
  )
}
```

### With a reference element

With a reference element, units like `em` and `%` will be bound to the referenced element.

```tsx
import useCalc from '@stackmeister/react-use-calc'

const App = () => {
  const { calc, ref } = useCalc()

  return (
    <div ref={ref}>
      <div style={{ height: calc`50% - 2em` }}>
        Hello World!
      </div>
    </div>
  )
}
```
npm package: @stackmeister/react-use-ssr-state
Description: @stackmeister/react-use-calc ================================
Latest version: 0.0.4

@stackmeister/react-use-calc
================================

Provides a CSS-like `calc`-function in React with support for all CSS units.

Usage
=====

### Normal usage

```tsx
import useCalc from '@stackmeister/react-use-calc'

const App = () => {
  const { calc } = useCalc()

  return (
    <div style={{ width: calc`100vw - 12px` }}>
      Hello World!
    </div>
  )
}
```

### With a reference element

With a reference element, units like `em` and `%` will be bound to the referenced element.

```tsx
import useCalc from '@stackmeister/react-use-calc'

const App = () => {
  const { calc, ref } = useCalc()

  return (
    <div ref={ref}>
      <div style={{ height: calc`50% - 2em` }}>
        Hello World!
      </div>
    </div>
  )
}
```
npm package: @stackmeister/react-use-stable
Description: @stackmeister/react-use-calc ================================
Latest version: 0.0.4

@stackmeister/react-use-calc
================================

Provides a CSS-like `calc`-function in React with support for all CSS units.

Usage
=====

### Normal usage

```tsx
import useCalc from '@stackmeister/react-use-calc'

const App = () => {
  const { calc } = useCalc()

  return (
    <div style={{ width: calc`100vw - 12px` }}>
      Hello World!
    </div>
  )
}
```

### With a reference element

With a reference element, units like `em` and `%` will be bound to the referenced element.

```tsx
import useCalc from '@stackmeister/react-use-calc'

const App = () => {
  const { calc, ref } = useCalc()

  return (
    <div ref={ref}>
      <div style={{ height: calc`50% - 2em` }}>
        Hello World!
      </div>
    </div>
  )
}
```
npm package: @stackmeister/react-use-state-with-equals
Description: @stackmeister/react-use-merged-ref ======================================
Latest version: 0.0.4

@stackmeister/react-use-merged-ref
======================================

Got multiple refs from hooks or own `useRef` calls, but you can only pass one to an element?

This library can merge multiple refs of the same type into one.

Usage
=====

### Basic Usage


```tsx
import useMergedRef from '@stackmeister/react-use-merged-ref'

const App = () => {
  const scrollingRef = useScrolling()
  const { ref: touchRef } = useTouchControls()
  const { calc, ref: calcRef } = useCalc()
  const ref = useMergedRef(scrollingRef, touchRef, calcRef)

  return (
    <div ref={ref}>
      Hello World!
    </div>
  )
}
```

### Easy to encapsulate

```tsx
import useMergedRef from '@stackmeister/react-use-merged-ref'

const useAppThings = () => {
  const scrollingRef = useScrolling()
  const { ref: touchRef } = useTouchControls()
  const { calc, ref: calcRef } = useCalc()

  return {
    calc,
    ref: useMergedRef(scrollingRef, touchRef, calcRef)
  }
}

const App = () => {
  const { calc, ref } = useAppThings()

  return (
    <div ref={ref}>
      Hello World!
    </div>
  )
}
```
npm package: @stackmeister/react-use-uncontrolled
Description: @stackmeister/react-use-calc ================================
Latest version: 0.0.5

@stackmeister/react-use-calc
================================

Provides a CSS-like `calc`-function in React with support for all CSS units.

Usage
=====

### Normal usage

```tsx
import useCalc from '@stackmeister/react-use-calc'

const App = () => {
  const { calc } = useCalc()

  return (
    <div style={{ width: calc`100vw - 12px` }}>
      Hello World!
    </div>
  )
}
```

### With a reference element

With a reference element, units like `em` and `%` will be bound to the referenced element.

```tsx
import useCalc from '@stackmeister/react-use-calc'

const App = () => {
  const { calc, ref } = useCalc()

  return (
    <div ref={ref}>
      <div style={{ height: calc`50% - 2em` }}>
        Hello World!
      </div>
    </div>
  )
}
```
npm package: @stackmeister/types
Description: @stackmeister/types ===================
Latest version: 0.1.7

@stackmeister/types
===================

Minimalistic and strict utility functions for JavaScript's primitive types.

Install
=======

```bash
// Yarn
yarn add @stackmeister/types

// NPM
npm i @stackmeister/types
```

TypeScript typings are included (No `@types/` package needed)

Usage
=====

#### Predicates for simple type checks

```ts
import {
  isUndefined,
  isNull,
  isNullOrUndefined,
  isBoolean,
  isString,
  isNumber,
  isInteger,
  isNumeric,
  isArray,
  isObject,
  isFunction,
} from '@stackmeister/types'

isUndefined('test') // false
isUndefined(undefined) // true
isUndefined(null) // false

isNull('test') // false
isNull(null) // true
isNull(undefined) // false

// etc...
```

> Notice: In the Stackmeister typing mindset, objects and arrays are two very different things
>         An object will not be an object, when it is an array. It will only match the `isArray` predicate.
npm package: @stackmeister/uri
Description: @stackmeister/uri =================
Latest version: 0.1.8

@stackmeister/uri
=================

A small set of URI utility functions.

Install
=======

```bash
// Yarn
yarn add @stackmeister/uri

// NPM
npm i @stackmeister/uri
```

TypeScript typings are included (No `@types/` package needed)

Usage
=====

```ts
import { parse, stringify, resolve } from '@stackmeister/uri'

const { scheme, userInfo, host, port, path, query, fragment } = parse(
  'https://example.com/some/path?query=test#someFragment'
)


const uri = stringify({ scheme, userInfo, host, port, path, query, fragment })

const fullUri = resolve('https://example.com', '/some/path')
```
npm package: @stackmemoryai/sweep-addon
Description: Sweep 1.5B next-edit prediction addon for StackMemory
Latest version: 0.1.0

# @stackmemory/sweep-addon

Optional addon for StackMemory that provides next-edit predictions using the Sweep 1.5B model.

## Overview

Sweep 1.5B is a code completion model trained to predict the next edit you'll make based on:
- Current file content
- Recent diffs (what you just changed)
- Context from other files in your codebase

## Requirements

- Node.js 18+
- Python 3.10+
- pip packages: `huggingface_hub`, `llama-cpp-python`

## Installation

### Via CLI

```bash
stackmemory sweep setup
```

This installs the required Python dependencies.

### Manual

```bash
pip install huggingface_hub llama-cpp-python
```

## Usage

### CLI

```bash
# Check status
stackmemory sweep status

# Predict next edit for a file
stackmemory sweep predict src/app.ts

# Setup with model pre-download
stackmemory sweep setup --download
```

### Programmatic (TypeScript)

```typescript
import { predict, checkStatus } from '@stackmemory/sweep-addon';

// Check if addon is ready
const status = await checkStatus();
console.log(status.installed, status.model_downloaded);

// Run prediction
const result = await predict({
  file_path: 'src/app.ts',
  current_content: '...',
  context_files: {
    'src/utils.ts': '...'
  },
  recent_diffs: [{
    file_path: 'src/app.ts',
    original: '...',
    updated: '...'
  }]
});

if (result.success) {
  console.log(result.predicted_content);
}
```

## Model

The Sweep 1.5B model (~1.5GB GGUF Q8 quantized) is downloaded from HuggingFace on first use:
- Repo: `sweepai/sweep-next-edit-1.5B`
- File: `sweep-next-edit-1.5b.q8_0.v2.gguf`
- Location: `~/.stackmemory/models/sweep/`

## License

MIT
npm package: @stacknet/rackutils
Description: React hooks and components for reading and writing StackNet Racks
Latest version: 0.3.3

# @stacknet/rackutils

React hooks and components for reading and writing StackNet Racks — a decentralized VCS backed by IPFS.

## Install

```bash
pnpm add @stacknet/rackutils
```

Peer dependencies: `react >= 18`, `react-dom >= 18`

## Quick Start

```tsx
import { RackBrowser } from '@stacknet/rackutils/components';

<RackBrowser
  config={{ apiBaseUrl: '' }}
  className="h-[600px]"
/>
```

## Hooks

```tsx
import { useRepos, useRepoTree, useRepoPush, useRackClient } from '@stacknet/rackutils/hooks';
```

### `useRepos(config)`
List repositories.

```tsx
const { repos, loading, error, refresh } = useRepos({ apiBaseUrl: '' });
```

### `useRepoTree(config, repoId, ref?)`
Get the file tree for a repo at a given ref (branch/commit).

```tsx
const { entries, loading, getFileContent } = useRepoTree(config, repoId, 'main');
// entries: TreeEntry[] — { path, mode, cid, isDir }
// getFileContent(cid) → Promise<string>
```

### `useRepoPush(config)`
Push files to a repository.

```tsx
const { push, pushing, error } = useRepoPush(config);

await push(repoId, [
  { path: 'SKILL.md', content: '# My Skill\n...' },
  { path: 'agent.yaml', content: 'name: my-agent\n...' },
], 'Update skill definition');
```

### `useRackClient(config)`
Low-level client with all Rack API operations.

```tsx
const client = useRackClient(config);
await client.initRepo({ name: 'my-skill', is_gitagent: true });
await client.getBranches(repoId);
await client.getDiff(repoId, 'main', 'feature');
```

## Components

### `RackBrowser`
Full file browser with repo list, file tree, and content viewer.

```tsx
<RackBrowser
  config={{
    apiBaseUrl: '',       // same-origin proxy
    ownerMid: 'mid-123', // filter by owner
    authorMid: 'mid-123', // for write operations
  }}
  category="skills"      // optional category filter
  className="h-[600px]"
/>
```

## API Proxy

The hooks expect a proxy at `/api/rack/*` that forwards to StackNet's `/cpx/rack/*`:

| Widget Route | StackNet Route |
|-------------|----------------|
| `/api/rack/repos` | `/cpx/rack/repos` |
| `/api/rack/init` | `/cpx/rack/init` |
| `/api/rack/:id/push` | `/cpx/rack/:id/push` |
| `/api/rack/:id/tree/:ref` | `/cpx/rack/:id/tree/:ref` |
| `/api/rack/:id/blob/:cid` | `/cpx/rack/:id/blob/:cid` |
| `/api/rack/:id/log` | `/cpx/rack/:id/log` |
| `/api/rack/:id/branches` | `/cpx/rack/:id/branches` |

## Types

```tsx
import type { RepoInfo, RepoCommit, RepoTree, TreeEntry, RepoFile, RackConfig } from '@stacknet/rackutils/types';
```

## License

MIT
npm package: @stackomate/data-structures
Description: [![styled with prettier](https://img.shields.io/badge/styled_with-prettier-ff69b4.svg)](https://github.com/prettier/prettier) [![Build Status](https://www.travis-ci.com/Stackomate/data-structures.svg?branch=master)](https://www.travis-ci.com/Stackomate/da
Author: rafaelcalpena
Latest version: 0.0.0-development.11

# Data-structures

[![styled with prettier](https://img.shields.io/badge/styled_with-prettier-ff69b4.svg)](https://github.com/prettier/prettier)
[![Build Status](https://www.travis-ci.com/Stackomate/data-structures.svg?branch=master)](https://www.travis-ci.com/Stackomate/data-structures)

A collection of useful data-structures for Typescript Development.

## Usage

1. `npm i @stackomate/data-structures`
2. Import desired data-structure into your project. See examples below:

Each data-structure contains a prefix to better differentiate similar methods

## Composite Key Map (`ckm` prefix)

* **Documentation:** [CompositeKeyMap](./classes/composite_key_map_composite_key_node.compositekeynode.html)

A map that allows multiple ordered keys (composite key) to be mapped to some value. Can contain an arbitrary number of keys.
Keys are stored as pointers that contain maps to the child keys, in recursive tree structure.
**Important:** Order of iteration is not preserved for the keys


### Examples

See live example in Stackblitz: [Demo](https://stackblitz.com/edit/typescript-hi91jd?devtoolsheight=60&file=index.ts)

```
[root] => 10
[root, 'a'] => 20
[root, 'b', 'c'] => 30 (note that root.b is not a key) 
```



## BijectiveMap

* **Documentation:** [BijectiveMap](./classes/bijectivemap.html)

A stricter type of map that only allows Bijective (one-to-one) relationships.

![Bijection Mapping Example](https://upload.wikimedia.org/wikipedia/commons/a/a5/Bijection.svg)

(Credit: [Wikipedia](https://commons.wikimedia.org/wiki/File:Bijection.svg))

* Example: *Create a mapping of usernames to their respective IDs* ([CodeSandbox](https://codesandbox.io/s/stackomate-bijective-map-zntoe))


```typescript
import {BijectiveMap} from '@stackomate/data-structures';
const usernameID = new BijectiveMap<string, number>();
usernameID.set('Kyle', 1);
usernameID.set('Mary', 2);
usernameID.set('John', 1); // Error: 'Value has already been registered for another key.' 
```

* `BijectiveMap`s allow for inversion:
```typescript
let idUsername = usernameID.invert(); // 1 => 'Kyle', 2 => 'Mary'
```
npm package: @stackomate/json-diff
Description: `@stackomate/json-diff` unites two widely-used packages, [`fast-json-patch`](https://www.npmjs.com/package/fast-json-patch) and [`diff`](https://www.npmjs.com/package/diff), to produce a   succint [`JSON Patch`](https://jsonpatch.com/) from two JSON objec
Author: Rafael Calpena Rodrigues
Latest version: 0.1.1

# json-diff

`@stackomate/json-diff` unites two widely-used packages, [`fast-json-patch`](https://www.npmjs.com/package/fast-json-patch) and [`diff`](https://www.npmjs.com/package/diff), to produce a   succint [`JSON Patch`](https://jsonpatch.com/) from two JSON objects.

## Differences (pun intended)
- In contrast with `fast-json-patch`, `@stackomate/json-diff` will also attempt to track moved items in arrays. This will often generate a JSON patch with a smaller payload and more easily interpreted by humans.

For example, given a `baseJSON` and a `resultJSON` defined below, both packages will produce valid patches, although `fast-json-patch` will focus on performance while `@stackomate/json-diff` will focus on simplifying the final JSON patch object:

```typescript
const baseJSON = [
    'a',
    'b',
    'c'
];

const resultJSON = [
    'b',
    'c',
    'd'
];
```

```typescript
// fast-json-patch

import { compare } from 'fast-json-patch';
console.log(compare(baseJSON, resultJSON));

// [ 
//     { op: "replace", path: "/2", value: "d" }
//     { op: "replace", path: "/1", value: "c" }
//     { op: "replace", path: "/0", value: "b" }
// ]
```

```typescript
// @stackomate/json-diff
import {jsonDiff} from '@stackomate/json-diff';
console.log(jsonDiff(baseJSON, resultJSON));

// [ 
//     { op: 'remove', path: '/0' }, 
//     { op: 'add', path: '/2', value: 'd' } 
// ]

```

## Usage

- For basic usage with primitives only, call the `jsonDiff` method with the initial and final json objects: 
```typescript
jsonDiff(initialJSON, finalJSON)
```
- **Recommended:** Add a `trackFunction` to help our algorithm identify nested objects in arrays. For example, an `id` field is commonly used as key:

```typescript
jsonDiff(initialJSON, finalJSON, (item) => item?.id)
```

- **Important:** 
  - All keys returned by the function should be **unique**;
  - This function should aim to return a value `!== undefined`; Returning `undefined` for any of the analyzed values will fallback to the default behavior from `fast-json-patch` for all items in the same array.