open-index/open-npm huggingface dataset:
npm package: @ragibkl/promisify-ts
Description: Promisify utility function that preserves the original type annotation
Author: Ragib Badaruddin
Latest version: 0.0.4

# promisify-ts

Promisify utility function that preserves the original type annotation

# Introduction

Node's `util.promisify` function transforms a callback-style function, into a function that returns a promise.

However, I've noticed that some transformation do not preserve the TypeScript type annotations of the original function.

This package is an attempt to create a similar promisify utility function, with proper typescript support.

# Installation

Install using npm or yarn

```shell
# install using npm
npm install @ragibkl/promisify-ts
```

```shell
# install using yarn
yarn add @ragibkl/promisify-ts
```

# Usage

```typescript
import promisify from '@ragibkl/promisify-ts';

// Sample function that calculates division of a by b
function divide(a: number, b: number, cb: (err: Error | null, data?: number) => void) {
  setTimeout(() => {
    try {
      if (!b) {
        throw new TypeError('Cannot divide by zero!');
      }

      cb(null, a / b);
    } catch (err) {
      cb(err);
    }
  }, 100);
}

const divideAsync = promisify(divide);
// (a: number, b: number) => Promise<number>

divideAsync(10, 2).then(console.log);
// 5

divideAsync(0, 0).then(console.log).catch(console.log);
// TypeError: Cannot divide by zero!
//     at Timeout._onTimeout (/home/ragib/Projects/ragibkl/promisify-ts/src/divide.ts:7:15)
//     at listOnTimeout (internal/timers.js:549:17)
//     at processTimers (internal/timers.js:492:7)
```
npm package: @ragingwind/tsconfig
Description: Typescript config using everyday
Author: Jimmy Moon
Latest version: 1.1.0

# tsconfig

> Shared [Typescript Config](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) using everyday for every node based projects. inspired by [sindresorhus/tsconfig](https://github.com/sindresorhus/tsconfig)

# Install

```sh
npm install --save-dev @ragingwind/tsconfig

or

yarn add --dev @ragingwind/tsconfig
```

# Usage

```json
{
	"extends": "@ragingwind/tsconfig/tsconfig.json",
	"compilerOptions": {
		"outDir": "dist"
	}
}
```
npm package: @ragnaroksj/sitemap-generator
Description: Easily create XML sitemaps for your website with url-parse 1.5.10 based on sitemap generator
Author: ragnaroksj
Latest version: 1.0.1

# Sitemap Generator

[![Travis](https://img.shields.io/travis/lgraubner/sitemap-generator.svg)](https://travis-ci.org/lgraubner/sitemap-generator) [![David](https://img.shields.io/david/lgraubner/sitemap-generator.svg)](https://david-dm.org/lgraubner/sitemap-generator) [![npm](https://img.shields.io/npm/v/sitemap-generator.svg)](https://www.npmjs.com/package/@ragnaroksj/sitemap-generator)

This package is based on sitemap-generator created by [Lars Graubner](https://www.npmjs.com/package/sitemap-generator).

It is the same as original one but upgrading url-parse to version 1.5.10.

## License

[MIT](https://github.com/ragnaroksj/sitemap-generator-js/blob/master/LICENSE) © ragnaroksj
npm package: @ragnarpa/alphavantage
Description: Alpha Vantage API client side throttling for Free plan.
Author: Ragnar Paide
Latest version: 0.1.4

# alphavantage

A small library and CLI for Alpha Vantage Stock and Forex API.

## Installation

Npm

```
npm install -g @ragnarpa/alphavantage
```

Yarn

```
yarn global add @ragnarpa/alphavantage
```


## Usage

### CLI

Claim your free API key at https://www.alphavantage.co/support/#api-key.

Store your key in `~/.env` file.

Example contents of `~/.env` file

```
ALPHAVANTAGE_KEY=demo
```

```
cd ~
av --help
```

#### Stock

```
av stock quote tsla
```

#### Forex

```
av forex rate usd eur
```

## Features

- throttling for Free plan
- locking for API key sharing between multiple processes
npm package: @ragnarpa/quantity
Description: A lib to convert quantities to real numbers
Author: Ragnar Paide
Latest version: 0.2.0

# Quantity with (sub)multipliers to real numbers

A library for converting quantities with multipliers to real numbers. Motivated by Kubernetes' API machinery quantity.

## Installation

```
npm install @ragnarpa/quantity
```

## Example usage

```javascript
const { real } = require("@ragnarpa/quantity");

const giga = real("10G");
const gibi = real("100Gi");
const micro = real("1000u");

console.log(giga, gibi, micro);
```

## Supported (sub)multipliers

| Multiplier | Unit prefix |
| ---------- | ----------- |
| n          | nano        |
| u          | micro       |
| m          | milli       |
| k          | kilo        |
| M          | mega        |
| G          | giga        |
| T          | tera        |
| P          | peta        |
| E          | exa         |
| Ki         | kibi        |
| Mi         | mebi        |
| Gi         | gibi        |
| Ti         | tebi        |
| Pi         | pebi        |
| Ei         | exbi        |
npm package: @ragone/svelte-maplibre
Description: Svelte bindings for MapLibre
Author: Daniel Imfeld
Latest version: 0.7.16

<p align="center">
<picture>
  <source media="(prefers-color-scheme: dark)" srcset="./static/logos/svelte-maplibre-logo-color-for-dark.svg">
  <img alt="svelte-maplibre logo" height="60px" src="./static/logos/svelte-maplibre-logo-color-for-light.svg" />
</picture>

</p>
<p align="center">Svelte wrapper for the <a href="https://maplibre.org/projects/maplibre-gl-js/">maplibre</a> mapping library.
</p>

---

This library is functional, but I'm still experimenting with extra features to make advanced functionality easier to use. It also needs proper documentation. In the meantime, the [demo site](https://svelte-maplibre.vercel.app) includes code for all the examples, and is a good place to start.

[Changelog](./CHANGELOG.md)

## Installation

```
npm install svelte-maplibre
```

## Usage

```svelte
<script>
  import { MapLibre } from 'svelte-maplibre';
</script>

<MapLibre 
  center={[50,20]}
  zoom={7}
  class="map"
  standardControls
  style="https://basemaps.cartocdn.com/gl/positron-gl-style/style.json" />

<style>
  :global(.map) {
    height: 500px;
  }
</style>
```

## Developing

You should create a `.env` file to configure the environment. See the `.env.example` file for the
necessary settings.

Currently the only environment variable is a MapTiler API key, required for the 3D Buildings example.
If you don't have one, you can set this to a blank value to use the other examples.

## Credits

Logo created by [Bruce Wayyn](https://github.com/brucewayyn)
npm package: @ragonzalezm19/platzom
Description: Traductor de idioma platzom
Author: Roberto Gonzalez
Latest version: 0.1.0

# Platzom

Platzom es un idioma inventado para el [Curso de Fundamentos de Javascript](https://platzi.com/js) de [Platzi](https://platzi.com), el mejor lugar de educación online

## Descripción del idioma

- Si la palabra termina con "ar", se le quitan esas dos letras.
- Si la palabra inicia con Z, se le añade "pe" al final.
- Si la palara traducida tiene 10 o más letras, se debe partir en dos por la mitad y unir con un guión medio
- Por último, si la palabra original es un palindromo, ninguna de las reglas anteriores cuenta y se devuelve la misma palabra pero intercalando letras mayúsculas y menúsculas

## Instalación
```
npm install platzom
```

## Uso

```
import platzom from 'platzom'

platzom("Programar") // Program
platzom("Zorro") // Zorrope
platzom("Zarpar") // Zarppe
platzom("abecedario") // abece-dario
platzom("sometemos") // SoMeTeMoS
```

## Créditos
- [Roberto Gonzalez](https://twitter.com/ragonzalezm19)

## Licencia

[MIT](https://opensource.org/licenses/MIT)
npm package: @ragopor/dtac-component-web
Description: dtac Components for web helps developers execute dtac design. Developed by a core team of engineers and UX designers at dtac
Author: Siam Wannakosit
Latest version: 2.0.38

# dtac Components for web

dtac Components for web helps developers execute dtac design. Developed by a core team of engineers and UX designers at dtac, these components enable a reliable development workflow to build beautiful and functional web apps. 

## Trying out dtac Components

## Installation and Usage

### ES6 via npm

```sh
npm install dtac-component-web
```
npm package: @ragpipe/plugin-cloudflare
Description: Cloudflare Workers AI embedding and generation plugin for ragpipe
Author: yungblud
Latest version: 0.4.0

# @ragpipe/plugin-cloudflare

Cloudflare Workers AI embedding and generation plugin for [ragpipe](https://github.com/yungblud/ragpipe).

## Install

```bash
pnpm add ragpipe @ragpipe/plugin-cloudflare
```

## Usage

```ts
import { defineConfig } from "ragpipe";
import { cloudflareEmbedding, cloudflareGeneration } from "@ragpipe/plugin-cloudflare";

export default defineConfig({
  embedding: cloudflareEmbedding({
    accountId: process.env.CLOUDFLARE_ACCOUNT_ID!,
    apiToken: process.env.CLOUDFLARE_API_TOKEN!,
    model: "@cf/qwen/qwen3-embedding-0.6b",
  }),
  generation: cloudflareGeneration({
    accountId: process.env.CLOUDFLARE_ACCOUNT_ID!,
    apiToken: process.env.CLOUDFLARE_API_TOKEN!,
    model: "@cf/openai/gpt-oss-20b",
    systemPrompt: "Answer based on the provided context.",
  }),
  // ... vectorStore
});
```

## API

### `cloudflareEmbedding(options)`

Returns an `EmbeddingPlugin` that calls the Cloudflare Workers AI Embedding API.

| Option | Type | Default | Description |
|---|---|---|---|
| `accountId` | `string` | — | Cloudflare account ID (required) |
| `apiToken` | `string` | — | Cloudflare API token (required) |
| `model` | `string` | — | Embedding model name (required) |

- **Batch support**: `embedMany()` sends an array of texts in a single API call

### `cloudflareGeneration(options)`

Returns a `GenerationPlugin` that calls the Cloudflare Workers AI Generation API.

| Option | Type | Default | Description |
|---|---|---|---|
| `accountId` | `string` | — | Cloudflare account ID (required) |
| `apiToken` | `string` | — | Cloudflare API token (required) |
| `model` | `string` | — | Generation model name (required) |
| `systemPrompt` | `string` | `"Answer based on the provided context."` | Default system instruction |

- **Streaming**: `generateStream()` returns an `AsyncIterable<string>` via SSE
- **History**: Pass `{ history }` to include conversation context
- **Per-call override**: Pass `{ systemPrompt }` at call time to override the default

## Get an API Token

1. Go to [Cloudflare Dashboard](https://dash.cloudflare.com/profile/api-tokens)
2. Create a token with **Workers AI** read permission
3. Set `CLOUDFLARE_ACCOUNT_ID` and `CLOUDFLARE_API_TOKEN` in your environment

## License

MIT
npm package: @ragpipe/plugin-gemini
Description: Gemini embedding and generation plugin for ragpipe
Author: yungblud
Latest version: 0.4.0

# @ragpipe/plugin-gemini

Google Gemini embedding and generation plugin for [ragpipe](https://github.com/yungblud/ragpipe).

## Install

```bash
pnpm add ragpipe @ragpipe/plugin-gemini
```

## Usage

```ts
import { defineConfig } from "ragpipe";
import { geminiEmbedding, geminiGeneration } from "@ragpipe/plugin-gemini";

export default defineConfig({
  embedding: geminiEmbedding({
    apiKey: process.env.GEMINI_API_KEY ?? "",
    model: "gemini-embedding-001",
  }),
  generation: geminiGeneration({
    apiKey: process.env.GEMINI_API_KEY ?? "",
    model: "gemini-3.1-flash-lite-preview",
    systemPrompt: "Answer based on the provided context.",
  }),
  // ... vectorStore
});
```

## API

### `geminiEmbedding(options)`

Returns an `EmbeddingPlugin` that calls the Gemini Embedding API.

| Option | Type | Default | Description |
|---|---|---|---|
| `apiKey` | `string` | — | Google AI API key (required) |
| `model` | `string` | - | Embedding model name (required) |

- **Dimensions**: 3072
- **Rate limit**: 800ms between calls (built-in)
- **Batch support**: `embedMany()` uses `batchEmbedContents` for efficient bulk embedding

### `geminiGeneration(options)`

Returns a `GenerationPlugin` that calls the Gemini Content Generation API.

| Option | Type | Default | Description |
|---|---|---|---|
| `apiKey` | `string` | — | Google AI API key (required) |
| `model` | `string` | - | Generation model name (required) |
| `systemPrompt` | `string` | `"Answer based on the provided context."` | Default system instruction |

- **Streaming**: `generateStream()` returns an `AsyncIterable<string>` via SSE
- **History**: Pass `{ history }` to include conversation context
- **Per-call override**: Pass `{ systemPrompt }` at call time to override the default

## Get an API Key

1. Go to [Google AI Studio](https://makersuite.google.com/app/apikey)
2. Create an API key
3. Set it as `GEMINI_API_KEY` in your environment

## License

MIT
npm package: @ragpipe/plugin-ollama
Description: Ollama local embedding and generation plugin for ragpipe
Author: yungblud
Latest version: 0.2.0

# @ragpipe/plugin-ollama

Ollama local embedding and generation plugin for [ragpipe](https://github.com/yungblud/ragpipe).

No API key required. Pair with `@ragpipe/plugin-sqlite-vec` for a fully local RAG setup.

## Prerequisites

```bash
# Install and start Ollama
ollama serve

# Pull models
ollama pull bge-m3
ollama pull llama3
```

## Install

```bash
pnpm add ragpipe @ragpipe/plugin-ollama
```

## Usage

```ts
import { defineConfig } from "ragpipe";
import { ollamaEmbedding, ollamaGeneration } from "@ragpipe/plugin-ollama";

export default defineConfig({
  embedding: ollamaEmbedding({
    model: "bge-m3",
    dimensions: 1024,
  }),
  generation: ollamaGeneration({
    model: "llama3",
  }),
  // ... vectorStore
});
```

### Remote Ollama server

```ts
ollamaEmbedding({
  model: "bge-m3",
  dimensions: 1024,
  baseUrl: "http://gpu-server.local:11434",
});
```

## API

### `ollamaEmbedding(options)`

Returns an `EmbeddingPlugin` that calls Ollama's `/api/embed` endpoint.

| Option | Type | Default | Description |
|---|---|---|---|
| `model` | `string` | — | Embedding model name (required) |
| `dimensions` | `number` | — | Vector dimensions (required) |
| `baseUrl` | `string` | `"http://localhost:11434"` | Ollama server URL |

- **Batch support**: `embedMany()` sends an array of texts in a single API call

### `ollamaGeneration(options)`

Returns a `GenerationPlugin` that calls Ollama's `/api/chat` endpoint.

| Option | Type | Default | Description |
|---|---|---|---|
| `model` | `string` | — | Generation model name (required) |
| `baseUrl` | `string` | `"http://localhost:11434"` | Ollama server URL |
| `systemPrompt` | `string` | `"Answer based on the provided context."` | Default system instruction |

- **Streaming**: `generateStream()` returns an `AsyncIterable<string>` via NDJSON
- **History**: Pass `{ history }` to include conversation context
- **Per-call override**: Pass `{ systemPrompt }` at call time to override the default

### Supported models

#### Embedding

| Model | Dimensions |
|---|---|
| `bge-m3` | 1024 |
| `nomic-embed-text` | 768 |
| `mxbai-embed-large` | 1024 |
| `all-minilm` | 384 |

#### Generation

`llama3`, `llama3.1`, `mistral`, `gemma2`, `phi3`, `qwen2`, and any model available via `ollama pull`.

## License

MIT
npm package: @ragpipe/plugin-openai
Description: OpenAI embedding and generation plugin for ragpipe
Author: yungblud
Latest version: 0.1.0

# @ragpipe/plugin-openai

OpenAI embedding and generation plugin for [ragpipe](https://github.com/yungblud/ragpipe).

## Install

```bash
pnpm add ragpipe @ragpipe/plugin-openai
```

## Usage

```ts
import { defineConfig } from "ragpipe";
import { openaiEmbedding, openaiGeneration } from "@ragpipe/plugin-openai";

export default defineConfig({
  embedding: openaiEmbedding({
    apiKey: process.env.OPENAI_API_KEY ?? "",
    model: "text-embedding-3-small",
  }),
  generation: openaiGeneration({
    apiKey: process.env.OPENAI_API_KEY ?? "",
    model: "gpt-4o-mini",
    systemPrompt: "Answer based on the provided context.",
  }),
  // ... vectorStore
});
```

## API

### `openaiEmbedding(options)`

Returns an `EmbeddingPlugin` that calls the OpenAI Embeddings API.

| Option | Type | Default | Description |
|---|---|---|---|
| `apiKey` | `string` | — | OpenAI API key (required) |
| `model` | `string` | `"text-embedding-3-small"` | Embedding model name |
| `dimensions` | `number` | model default (1536 / 3072) | Output dimensions (`text-embedding-3-*` only) |
| `baseUrl` | `string` | `"https://api.openai.com/v1"` | API base URL |

- **Rate limit**: 200ms between calls (built-in)
- **Batch support**: `embedMany()` sends array input in a single API call
- **Dimension reduction**: `text-embedding-3-small/large` support custom `dimensions` to reduce output size
- **Compatible APIs**: Set `baseUrl` to use OpenRouter, Azure OpenAI, or other OpenAI-compatible endpoints

### `openaiGeneration(options)`

Returns a `GenerationPlugin` that calls the OpenAI Chat Completions API.

| Option | Type | Default | Description |
|---|---|---|---|
| `apiKey` | `string` | — | OpenAI API key (required) |
| `model` | `string` | `"gpt-4o-mini"` | Chat model name |
| `systemPrompt` | `string` | `"Answer based on the provided context."` | Default system instruction |
| `baseUrl` | `string` | `"https://api.openai.com/v1"` | API base URL |

- **Streaming**: `generateStream()` returns an `AsyncIterable<string>` via SSE
- **History**: Pass `{ history }` to include conversation context
- **Per-call override**: Pass `{ systemPrompt }` at call time to override the default
- **Compatible APIs**: Set `baseUrl` to use OpenRouter, Azure OpenAI, or other OpenAI-compatible endpoints

## Supported Models

### Embedding

| Model | Dimensions | Notes |
|---|---|---|
| `text-embedding-3-small` | 1536 | Default, cost-efficient |
| `text-embedding-3-large` | 3072 | High precision |
| `text-embedding-ada-002` | 1536 | Legacy |

### Generation

| Model | Notes |
|---|---|
| `gpt-4o-mini` | Default, cost-efficient |
| `gpt-4o` | Flagship |
| `o1` | Reasoning |
| `o3-mini` | Reasoning (lightweight) |

## Get an API Key

1. Go to [OpenAI Platform](https://platform.openai.com/api-keys)
2. Create an API key
3. Set it as `OPENAI_API_KEY` in your environment

## License

MIT
npm package: @ragpipe/plugin-supabase
Description: Supabase pgvector vector store plugin for ragpipe
Author: yungblud
Latest version: 0.5.0

# @ragpipe/plugin-supabase

Supabase vector store plugin for [ragpipe](https://github.com/yungblud/ragpipe), powered by [`@supabase/supabase-js`](https://github.com/supabase/supabase-js).

## Install

```bash
pnpm add ragpipe @ragpipe/plugin-supabase
```

## Usage

```ts
import { defineConfig } from "ragpipe";
import { supabaseVectorStore } from "@ragpipe/plugin-supabase";

export default defineConfig({
  // ... embedding, generation
  vectorStore: supabaseVectorStore({
    supabaseUrl: process.env.SUPABASE_URL ?? "",
    supabaseKey: process.env.SUPABASE_SERVICE_ROLE_KEY ?? "",
    tableName: "documents",   // default
    queryName: "match_documents", // default RPC function name
  }),
});
```

## API

### `supabaseVectorStore(options)`

Returns a `VectorStorePlugin` backed by Supabase using the official JS SDK.

| Option | Type | Default | Description |
|---|---|---|---|
| `supabaseUrl` | `string` | — | Supabase project URL (required) |
| `supabaseKey` | `string` | — | Service role key (required) |
| `tableName` | `string` | `"documents"` | Table to store documents |
| `queryName` | `string` | `"match_documents"` | PostgreSQL function for vector search |

### Methods

| Method | Description |
|---|---|
| `search(vector, topK)` | Calls `supabase.rpc()` for cosine similarity search |
| `upsert(source, content, vector)` | Inserts via `supabase.from().upsert()` with dedup on `source,content` |
| `clear()` | Deletes all rows from the documents table |
| `disconnect()` | No-op (Supabase JS client manages connections automatically) |

## Database Setup

Run the following in your Supabase SQL editor:

```sql
-- 1. Enable pgvector
CREATE EXTENSION IF NOT EXISTS vector;

-- 2. Create the documents table
CREATE TABLE documents (
  id BIGSERIAL PRIMARY KEY,
  source TEXT NOT NULL,
  content TEXT NOT NULL,
  vector VECTOR(3072),
  UNIQUE(source, content)
);

-- 3. Create the similarity search function
CREATE OR REPLACE FUNCTION match_documents(
  query_embedding VECTOR(3072),
  match_count INT DEFAULT 5
)
RETURNS TABLE (
  source TEXT,
  content TEXT,
  similarity FLOAT
)
LANGUAGE plpgsql
AS $$
BEGIN
  RETURN QUERY
  SELECT
    d.source,
    d.content,
    1 - (d.vector <=> query_embedding) AS similarity
  FROM documents d
  ORDER BY d.vector <=> query_embedding
  LIMIT match_count;
END;
$$;

-- 4. Create an index for faster search
CREATE INDEX ON documents
  USING ivfflat (vector vector_cosine_ops)
  WITH (lists = 100);
```

Adjust `VECTOR(3072)` to match your embedding model's dimensions.

## License

MIT
npm package: @ragrabbit/mcp
Description: A MCP server to access any documentation indexed with RagRabbit
Author: Marco D'Alia
Latest version: 0.1.0

# MCP Server for RagRabbit Documentation Search

This server implements the Model Context Protocol (MCP) to provide AI models with access to any documentation indexed with an instance of RagRabbit.

## Overview

The MCP Server acts as a bridge between AI clients and RagRabbit's hosted documentation:

- Semantic search across documentation using natural language queries
- Access to LLM-specific documentation
- Standardized communication through the Model Context Protocol

## Installation

### Claude Desktop

Add a custom mcp server with the name of your product, so that Claude AI can use it when looking for info about it.

in `claude_desktop_config.json` (Claude -> Settings -> Developer -> Edit Config)

```
{
  "mcpServers": {
    "<name of your documentation>": {
      "command": "npx",
      "args": ["@ragrabbit/mcp", "http://<RagRabbit install>/", "<name of your documentation>"]
    }
  }
}
```

### In Cursor IDE

Go to Cursor -> Settings -> Cursor Settings -> MCP

And add a new MCP of type `command` with the command:

```
npx @ragrabbit/mcp", "http://<RagRabbit install>/", "<name of your documentation>"
```

Arguments:

- `ragrabbit-url`: (Required) The base URL of your RagRabbit instance, eg https://my-ragrabbit.vercel.com/
- `name`: (Required) Custom name for the documentation search service (defaults to "RagRabbit") so that AI will know to use it when looking for info

## Exposed Tools by this MCP

### search_docs

Performs semantic search across the documentation.

Parameters:

- `query`: String - The search query to find relevant documents

Example:

```json
{
  "name": "search_docs",
  "arguments": {
    "query": "How to implement authentication?"
  }
}
```

## Available Resources

### LLMs Documentation

- URI: `llms.txt`
- Description: Documentation about LLMs and their capabilities
- MIME Type: `text/plain`

## License

MIT
npm package: @ragsters/purrse-web-plugin
Description: A React plugin to enable dApp connection with Purrse Wallet
Author: arressaye
Latest version: 1.0.0

# @ragsters/purrse-web-plugin

A React component to enable dApp connection with Purrse Wallet.

## Installation

```bash
npm install @ragsters/purrse-web-plugin
```

## Usage

```tsx
import { PurrseConnector } from "@ragsters/purrse-web-plugin";
import "@ragsters/purrse-web-plugin/styles";

function App() {
  return (
    <>
      <PurrseConnector />
      {/* Rest of your app components here */}
    </>
  );
}
```

## How It Works

By importing and adding `PurrseWallet` to your project, a CIP-30 dApp connector with the `purrse` namespace is automatically injected into the browser. This makes it possible to connect to Purrse using `window.cardano.purrse.enable()`. When this function is called, a modal will be displayed with a QR code for the user to scan using their Purrse wallet app on their mobile phone, and upon the user consenting to the connection by scanning the QR code, the standard Cardano CIP-30 API object will be returned.

This CIP-30 API object can then be used to call other CIP-30 API methods such as `getUsedAddresses()`, `getBalance()`, `getUtxos()`, `signTx()` etc. For example:

```javascript
const purrseApi = await window.cardano.enable();

const walletBalance = await purrseApi.getBalance();

const walletUtxos = await purrseApi.getUtxos();
```

Scanning the QR code will establish a link between the user's Purrse wallet and your dApp, making it possible for you to access the user's wallet address and balance and create various transactions using the standard CIP-30 API.

Calling `signTx()` will result in 2 things:

1. A request will be sent to the connected Purrse wallet app via push notification. If the user has push notification enabled in their Purrse app, this notification will trigger a transaction signing dialog for the user to review and sign the transaction.
2. At the same time, a QR code will show on the frontend which users without push notification enabled, or who fail to receive a notification for various reasons, can scan using their Purrse mobile app to load the transaction on their app for review and signing.

## License

MIT
npm package: @raguilera82/angular-github-library
Description: Github module library
Author: Rubén Aguilera Díaz-Heredero
Latest version: 2.0.2

# angular github library
[![Build Status](https://travis-ci.org/raguilera82/angular-github-library.svg?branch=master)](https://travis-ci.org/raguilera82/angular-github-library)
[![npm version](https://badge.fury.io/js/@raguilera82/angular-github-library.svg)](http://badge.fury.io/js/@raguilera82/angular-github-library)
[![devDependency Status](https://david-dm.org/raguilera82/angular-github-library/dev-status.svg)](https://david-dm.org/raguilera82/angular-github-library#info=devDependencies)
[![GitHub issues](https://img.shields.io/github/issues/raguilera82/angular-github-library.svg)](https://github.com/raguilera82/angular-github-library/issues)
[![GitHub stars](https://img.shields.io/github/stars/raguilera82/angular-github-library.svg)](https://github.com/raguilera82/angular-github-library/stargazers)
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/raguilera82/angular-github-library/master/LICENSE)

## Demo
https://raguilera82.github.io/angular-github-library/demo/

## Table of contents

- [About](#about)
- [Installation](#installation)
- [Documentation](#documentation)
- [Development](#development)
- [License](#license)

## About

Github module library

## Installation

Install through npm:
```
npm install --save @raguilera82/angular-github-library
```

Then include in your apps module:

```typescript
import { Component, NgModule } from '@angular/core';
import { GithubModule } from '@raguilera82/angular-github-library';

@NgModule({
  imports: [
    GithubModule.forRoot()
  ]
})
export class MyModule {}
```

Finally use in one of your apps components:
```typescript
import { Component } from '@angular/core';

@Component({
  template: '<hello-world></hello-world>'
})
export class MyComponent {}
```

You may also find it useful to view the [demo source](https://github.com/raguilera82/angular-github-library/blob/master/demo/demo.component.ts).

### Usage without a module bundler
```
<script src="node_modules/dist/umd/@raguilera82/angular-github-library/@raguilera82/angular-github-library.js"></script>
<script>
    // everything is exported angularGithubLibrary namespace
</script>
```

## Documentation
All documentation is auto-generated from the source via typedoc and can be viewed here:
https://raguilera82.github.io/angular-github-library/docs/

## Development

### Prepare your environment
* Install [Node.js](http://nodejs.org/) and NPM (should come with)
* Install local dev dependencies: `npm install` while current directory is this repo

### Development server
Run `npm start` to start a development server on port 8000 with auto reload + tests.

### Testing
Run `npm test` to run tests once or `npm run test:watch` to continually run tests.

### Release
* Bump the version in package.json (once the module hits 1.0 this will become automatic)
```bash
npm run release
```

## License

MIT
npm package: @raguirre.dev/config-dev
Description: Node CLI tool to create config files for development.
Author: aguirrerodrigo
Latest version: 1.0.0

# config-dev

Node CLI tool to create config files for development.

<pre>
Installs development configuration files.
usage: config-dev [options]
options:
   -a --all   		Install all config files.
   -o --overwrite	Overwrite files.
   --prettier		Install prettier files.
   --tslint		Install tslint files.
   --editorconfig	Install editorconfig files.
</pre>
npm package: @ragulan/ragulan28-test
Description: Removes all spaces from a string
Latest version: 1.1.0

# @bamblehorse/tiny

[![npm (scoped)](https://img.shields.io/npm/v/@bamblehorse/tiny.svg)](https://www.npmjs.com/package/@bamblehorse/tiny)
[![npm bundle size (minified)](https://img.shields.io/bundlephobia/min/@bamblehorse/tiny.svg)](https://www.npmjs.com/package/@bamblehorse/tiny)

Removes all spaces from a string.

## Install

```
$ npm install npm i @ragulan/ragulan28-test
```

## Usage

```js
const tiny = require("@ragulan/ragulan28-test");

tiny("So much space!");
//=> "Somuchspace!"

tiny(1337);
//=> Uncaught TypeError: Tiny wants a string!
//    at tiny (<anonymous>:2:41)
//    at <anonymous>:1:1
```