open-index/open-npm huggingface dataset:
npm package: @spacier/remix-image
Description: Optimized image processing for Remix, similar to Next.js Image
Author: Admir Saheta
Latest version: 1.0.0

# Rslib project

## Setup

Install the dependencies:

```bash
pnpm install
```

## Get started

Build the library:

```bash
pnpm build
```

Build the library in watch mode:

```bash
pnpm dev
```
npm package: @spacingbat3/jsonc-parser
Description: Simple JSON with Comments file parser.
Author: SpacingBat3
Latest version: 3.1.1
Deprecated: No longer being worked on, please use another package.

# JSONC Parser

A simple module to parse *JSON with comments* files with the magic of `RegExp`.

It allows for the specifying your own comments `RegExp`'s as I couldn't found
any information about JSONC being standarized (so for instance, if your JSONC
file has single-line comments starting with hashtag, you can include that as an
additional rule as well).

## Usage

### CommonJS

```js
const JSONC = require('@spacingbat3/jsonc-parser').default

const parsedObject = JSONC.parse('file.jsonc')

console.log(parsedObject) // e.g. { "foo": "bar" }
```

### ESM / TypeScript

```ts
import JSONC from '@spacingbat3/jsonc-parser'

/* NOTE: `pasedObject` is of the unknown type! */
const parsedObject = JSONC.parse('file.jsonc')

console.log(parsedObject) // e.g. { "foo": "bar" }
```

### Custom comments formats

By the default, `jsonc-parser` only accepts the comments that are valid for the
regular JavaScript files, but if you want to parse the other comments formats,
you may specify them as shown below:

``` ts
import JSONC from '@spacingbat3/jsonc-parser'

/* 
 * Removes the JavaScript-like comments and `sh`-like comments
 * (e.g. `{ "foo": "bar" # comment }`).
 */
const parsedObject = JSONC.parse('file.jsonc', /#.*/g)

console.log(parsedObject) // e.g. { "foo": "bar" }
```
npm package: @spada/eslint-config
Description: My custom ESlint config for Typescript and Vue projects, inspired by @antfu
Author: Nicola Spadari
Latest version: 0.3.11

# @spada/eslint-config

> Inspired by @antfu/eslint-config

### About

Lint and format `.js`, `.ts`, `.vue` files

<br>

### Install

```bash
npm i -D eslint @spada/eslint-config
```

<br>

### `.eslintrc` file

```json
{
  "extends": "@spada/eslint-config"
}
```

<br>

### `.vscode/.settings.json` file

```json
{
  "editor.formatOnSave": false,
  "editor.defaultFormatter": "dbaeumer.vscode-eslint",
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  }
}
```
npm package: @spada/prettier-config
Description: My custom Prettier config for Typescript and Vue projects
Author: Nicola Spadari
Latest version: 0.0.2

# @spada/prettier-config

### Install

```bash
npm i eslint @spada/prettier-config -D
```

<br>

### `package.json` file

```json
{
	"prettier": "@spada/prettier-config"
}
```

<br>

### VSCode automatic fix on save

Add `.vscode/settings.json` with content:

```json
{
	"editor.formatOnSave": true,
	"editor.defaultFormatter": "esbenp.prettier-vscode",
}
```
npm package: @spada/windicss-plugin-bsgrid
Description: Bootstrap 5 barebone grid system for WindiCSS
Author: Nicola Spadari
Latest version: 0.1.4

# @spada/windicss-plugin-bsgrid

[![License: MIT][license-badge]][license]

Bootstrap 5 barebone grid system for WindiCSS

## Installation

```shell
npm i @spada/windicss-plugin-bsgrid -D
```

```js
/* main.ts */
import { defineConfig } from "vite-plugin-windicss";
import BsGrid from "@spada/windicss-plugin-bsgrid";

export default defineConfig({
    ...
    plugins: [
        BsGrid({
            // Optional options
        })
    ]
    ...
});

```

This plugin generates the grid classes under the `components` layer, so you must include it such as:

```css
/* main.ts */
import "virtual:windi-base.css";
import "virtual:windi-components.css"; <---
import "virtual:windi-utilities.css";
```

or just import the whole thing:

```css
/* main.ts */
import "virtual:windi.css";
```

Remember to disable the core plugin of the default `.container` class:

```js
// windi.config.ts
export default defineConfig({
	// ...
	corePlugins: {
		container: false,
	},
	// ...
});
```

## Options

-   `gridColumns` (default 12)
-   `gridGutterWidth` (default 1.5rem)
-   `respectImportant` (default true) to respect the windi config setting

## Related

Heavily inspired by karolis-sh's [tailwind-bootstrap-grid](https://github.com/karolis-sh/tailwind-bootstrap-grid)

[license-badge]: https://img.shields.io/badge/License-MIT-yellow.svg
[license]: https://opensource.org/licenses/MIT
npm package: @spadalabs/btc-address-finder
Description: ## Instalação Dev
Latest version: 1.0.0

# @spadalabs/btc-address-finder

## Instalação Dev

yarn && yarn dev

## Npx Usage:

npx @spadalabs/btc-address-finder --file='./file.tsv' --amount=1000000

## Getting tsv file:
https://blockchair.com/dumps
https://gz.blockchair.com/bitcoin/addresses/
npm package: @spadalabs/freebtc
Description: ## Instalação Dev
Latest version: 1.3.1

# @spadalabs/freebtc

## Instalação Dev

yarn && yarn dev

## Npx Usage:

npx @spadalabs/freebtc@latest --jsonFile='./session.json'

## Getting cookies:

npx @spadalabs/freebtc@latest --getCookies

## Showing Client (headless = off)

npx @spadalabs/freebtc@latest --showClient
npm package: @spadebox/spadebox
Description: A toolbox for AI agents
Latest version: 0.1.1

# Spadebox &emsp; [![crates.io version]][crates-io] [![NPM version]][npm]

[crates-io]: https://crates.io/crates/spadebox-core
[npm]: https://www.npmjs.com/package/@spadebox/spadebox
[crates.io version]: https://img.shields.io/crates/v/spadebox-core
[NPM version]: https://img.shields.io/npm/v/%40spadebox%2Fspadebox


<div align="center">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/2f832204-4edc-477a-aec5-f5268aea4756">
    <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/d0611572-8b35-4d7e-9be1-b1143af419e1">
    <img src="https://github.com/user-attachments/assets/d0611572-8b35-4d7e-9be1-b1143af419e1" width="200px" alt="The Spadebox logo"/>
  </picture>
</div>
<br/>

Spadebox is a set of common tools for AI agents, written in Rust with JavaScript bindings.

Currently, Spadebox includes the following tools:
- `read_file`
- `write_file`
- `edit_file`
- `grep`
- `glob`

Spadebox uses the [`cap-std` crate](https://github.com/bytecodealliance/cap-std) for file system sandboxing.
npm package: @spadin/tsconfig
Description: tsconfig.json files
Author: Joel Spadin
Latest version: 1.3.0

# tsconfig

This is just a repository of common tsconfig.json files, so I don't have to duplicate build configuration between my projects.

## Install

```shell
$ npm install -D @spadin/tsconfig
```

## Usage

### tsconfig.json
```json
{
    "extends": "./node_modules/@spadin/tsconfig/base",
    ...
}
```
npm package: @spadin/webextension-build-utils
Description: webpack build utilities for webextension-toolbox
Author: Joel Spadin
Latest version: 2.0.0

# WebExtension Build Utils

Webpack build utilities for [webextension-toolbox](https://github.com/webextension-toolbox/webextension-toolbox).

## Install

```shell
$ npm install -S @spadin/webextension-build-utils
```

## Usage

Create an extension using webextension-toolbox, then create a `webextension-toolbox-config.js` file. Use the following functions to configure Webpack:

```javascript
const {
    dedupeModules,
    fixZipPackage,
    useCss,
    useExternal,
    useSourceMap,
    useTypescript,
} = require('@spadin/webextension-build-utils');

module.exports = {
    webpack: (config, { dev }) => {
        // Set up source maps to work nicely with the Chrome debugger.
        useSourceMap(config, dev);

        // Build TypeScript files and allow them as entry points.
        useTypescript(config);

        // Bundle CSS files and any resources referenced by them.
        useCss(config, {
            optimizeImages: !dev,
        });

        // Don't bundle certain large modules to speed up build times and allow
        // the browser to cache them between builds.
        const mode = dev ? 'development' : 'production.min';

        useExternal(config, {
            module: 'react',
            global: 'React',
            from: `../node_modules/react/umd/react.${mode}.js`,
            to: 'scripts/react/react.js',
        });

        // Fix for duplicate modules in bundles when some of our dependencies
        // are installed via npm link.
        dedupeModules(config, [
            'webextension-polyfill',
            'webextension-polyfill-ts',
            '@spadin/webextension-storage',
        ]);

        // Workaround for issue in webextension-toolbox v3.0.0:
        // The ZipPlugin added by webextension-toolbox will get run before the
        // copy done in useExternal(), so the external libraries won't be
        // included in the output package unless we move ZipPlugin to the end of
        // the plugins list.
        fixZipPackage(config);

        return config;
    },
    copyIgnore: [
        '**/*.js',
        '**/*.json',
        '**/*.ts',
        '**/*.tsx',
    ]
};
```
npm package: @spadin/webextension-options
Description: Helper for creating a browser extension options page using @spadin/webextension-storage
Author: Joel Spadin
Latest version: 1.3.0

# WebExtension Build Utils

Helper for creating a browser extension options page using [@spadin/webextension-storage](https://github.com/ChaosinaCan/webextension-storage).

## Install

```shell
$ npm install -S @spadin/webextension-options
```

## Usage

TODO
npm package: @spadin/webextension-plural
Description: Localize plurals using browser.i18n and plurals-cldr
Author: Joel Spadin
Latest version: 1.2.0

# WebExtension Plural

Localize plurals using browser.i18n and [plurals-cldr](https://github.com/nodeca/plurals-cldr).

## Install

```shell
$ npm install -S @spadin/webextension-plural
```

## Usage

Call `plural()` with the key of a message in the current locale's messages.json and the number to pluralize. If `options.substitutions` is not set, this number will automatically be provided as a substitution parameter.

The message should contain one string per [CLDR plural form](http://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html) for the current locale in the order, `zero`, `one`, `two`, `few`, `many`, `other`, with forms not used by the locale omitted. The strings should be separated by the `|` character by default, or you may set `options.separator` to use a different string.

By default this uses cardinal forms. Set `options.ordinal` to `true` to use ordinal forms instead.

### _locale/en/messages.json
```json
{
    "duck_cardinal": {
        "message": "There is $num$ duck.|There are $num$ two ducks.",
        "description": "Example for cardinal numbers.",
        "placeholders": {
            "num": {
                "content": "$1",
                "description": "The number of ducks"
            }
        }
    },
    "item_ordinal": {
        "message": "This is the $num$st $item$.|This is the $num$nd $item$.|This is the $num$rd $item$.|This is the $num$th $item$.",
        "description": "Example for ordinal numbers.",
        "placeholders": {
            "num": {
                "content": "$1",
                "description": "The ordinal number of the item"
            },
            "item": {
                "content": "$2",
                "description": "The type of item"
            }
        }
    }
}
```

### script.ts

```typescript
import plural from '@spadin/webextension-plural';

plural('duck_cardinal', 0); // returns 'There are 0 ducks.'
plural('duck_cardinal', 1); // returns 'There is 1 duck.'
plural('duck_cardinal', 2); // returns 'There are 2 ducks.'
plural('duck_cardinal', 2.5); // returns 'There are 2.5 ducks.'

plural('duck_cardinal', 1, { substitutions: ['one'] }); // returns 'There is one duck.'

// returns 'This is the 2nd duck.'
let index = 2;
plural('item_ordinal', index, {
    substitutions: [index, 'duck'],
    ordinal: true,
});

// returns 'This is the 1st dog.'
index = 1;
plural('item_ordinal', index, {
    substitutions: [index, 'dog'],
    ordinal: true,
});
```
npm package: @spadin/webextension-storage
Description: Helper for storing browser extension settings
Author: Joel Spadin
Latest version: 1.0.5

# WebExtension Storage

Helper for storing browser extension settings with TypeScript type information.

## Install

```shell
$ npm install -S @spadin/webextension-storage
```

## Usage

See [the documentation in index.ts](./src/index.ts) for more detailed usage info.

Also see [webextension-options](https://github.com/ChaosinaCan/webextension-options) for a React-based library that uses this to create an options page for your extension, and [webextension-example](https://github.com/ChaosinaCan/webextension-example) for an example extension using both libraries.

```typescript
// storage.ts
import { StorageArea } from '@spadin/webextension-storage';

export interface StorageItems {
    foo: boolean;
    bar: string;
    baz: number;
}

export var storage = StorageArea.create<StorageItems>({
    defaults: {
        foo: false,
        bar: 'bar',
        baz: 0,
    }
});

// background.ts
import { browser } from 'webextension-polyfill-ts';
import { storage } from './storage';

browser.runtime.onInstalled.addListener(async (details) => {
    // Fill in default values for any unset settings.
    await storage.initDefaults();

    // A property is automatically created on the StorageArea object for each
    // setting with get(), set(), and other functions. Use addListener() to run
    // a function when a setting changes.
    storage.foo.addListener((change, key) => {
        console.log(`key changed from ${change.oldValue} to ${change.newValue}`);
    });
});

async function toggleFoo() {
    // Any operation that reads from or writes to storage is asynchronous and
    // returns a promise.
    const foo = await storage.foo.get();
    await storage.foo.set(!foo);
}

async function incrementBaz() {
    // You can also access settings by name instead of using properties.
    const baz = await storage.get('baz');
    await storage.set('baz', baz + 1);
}

async function mogrify() {
    // You can get all settings with StorageArea.get() and write multiple
    // settings with StorageArea.set().
    const { foo, bar } = await storage.get();
    await storage.set({
        foo: !foo,
        bar: bar + bar,
    });
}
```
npm package: @spaguettiscope/cli
Description: CLI for SpaguettiScope — code topology and entropy analysis for monorepos
Latest version: 2.2.0

# @spaguettiscope/cli

CLI for SpaguettiScope — code topology and entropy analysis for monorepos.

## Try without installing

```bash
npx -p @spaguettiscope/cli spasco init
npx -p @spaguettiscope/cli spasco scan
npx -p @spaguettiscope/cli spasco dashboard
```

## Install globally

```bash
npm install -g @spaguettiscope/cli
```

## Commands

| Command                   | Description                                                              |
| ------------------------- | ------------------------------------------------------------------------ |
| `spasco init`             | Auto-detect tools and write `spasco.config.json`                         |
| `spasco scan`             | Scan files, build topology, propose dimension values                     |
| `spasco dashboard`        | Generate HTML dashboard with pass rates, coverage, entropy, and findings |
| `spasco analyze`          | Run analysis rules and compute entropy. Always exits 0.                  |
| `spasco check`            | CI gate — exits 1 on findings above severity or entropy above threshold  |
| `spasco annotate list`    | List skeleton entries with unresolved dimensions                         |
| `spasco annotate resolve` | Confirm or override proposed dimension values                            |

## Quick start

```bash
spasco init
spasco scan
spasco annotate resolve --as domain --all
spasco annotate resolve --as layer --all
spasco dashboard
```

See the [main repository](https://github.com/jasonsantos/spaguettiscope) for full documentation.
npm package: @spaguettiscope/core
Description: Classification engine, skeleton, import graph, and analysis rules for SpaguettiScope
Latest version: 2.2.0

# @spaguettiscope/core

Classification engine, skeleton, import graph, and analysis rules for SpaguettiScope.

## What it does

- Loads and validates `spasco.config.json`
- Reads/writes the skeleton YAML (file topology)
- Builds import graphs from TypeScript/JavaScript sources
- Runs analysis rules (coverage gaps, unused exports, circular deps, flaky tests)
- Computes entropy scores (0–10) from five weighted subscores
- Classifies files into dimensions (role, layer, domain) via inference rules

## Usage

```typescript
import { loadConfig, readSkeleton, buildImportGraph, runAnalysis } from '@spaguettiscope/core'
```

See the [main repository](https://github.com/jasonsantos/spaguettiscope) for full documentation.
npm package: @spaguettiscope/jest-reporter
Description: Jest reporter for SpaguettiScope — writes test results to .spasco/results/
Latest version: 2.2.0

# @spaguettiscope/jest-reporter

Jest reporter for [SpaguettiScope](https://github.com/jasonsantos/spaguettiscope). Writes test
results to `.spasco/results/` in the native spasco format.

## Installation

```bash
pnpm install -D @spaguettiscope/jest-reporter
```

## Usage

Add to your `jest.config.ts` (or `jest.config.js`):

```typescript
export default {
  reporters: ['default', '@spaguettiscope/jest-reporter'],
}
```

Or in `package.json`:

```json
{
  "jest": {
    "reporters": ["default", "@spaguettiscope/jest-reporter"]
  }
}
```

## Monorepo Setup

In a monorepo, add the reporter to each package's Jest config. The reporter auto-detects the
workspace root and writes all results to a shared `.spasco/results/` directory.
npm package: @spaguettiscope/playwright-reporter
Description: Playwright reporter for SpaguettiScope — writes test results to .spasco/results/
Latest version: 2.2.0

# @spaguettiscope/playwright-reporter

Playwright reporter for [SpaguettiScope](https://github.com/jasonsantos/spaguettiscope) — writes
test results to `.spasco/results/` in the native SpaguettiScope format.

## Installation

```bash
npm install --save-dev @spaguettiscope/playwright-reporter
# or
pnpm add -D @spaguettiscope/playwright-reporter
```

> **Peer dependency:** `@playwright/test >= 1.40.0` must be installed.

## Usage

Add the reporter to your `playwright.config.ts`:

```ts
import { defineConfig } from '@playwright/test'

export default defineConfig({
  reporter: [['list'], ['@spaguettiscope/playwright-reporter']],
})
```

### With options

```ts
export default defineConfig({
  reporter: [
    ['list'],
    [
      '@spaguettiscope/playwright-reporter',
      {
        outputDir: '.spasco/results', // relative to workspace root (default)
        workspaceRoot: '../..', // override workspace root detection
      },
    ],
  ],
})
```

## Options

| Option          | Type     | Default           | Description                                                                                                             |
| --------------- | -------- | ----------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `outputDir`     | `string` | `.spasco/results` | Directory for results, relative to workspace root                                                                       |
| `workspaceRoot` | `string` | auto-detected     | Override workspace root (walks up looking for `pnpm-workspace.yaml`, `turbo.json`, or `package.json` with `workspaces`) |

## Output format

Each test run produces a directory under `.spasco/results/{runId}/`:

```
.spasco/results/
  2024-01-15T12-00-00-a1b2c3/
    meta.json          # run metadata (tool, version, git info, CI info)
    results/
      <testCaseId>.json  # one file per test case
```

The `meta.json` includes `"tool": "playwright"` so the SpaguettiScope dashboard can distinguish runs
from different test tools.

## Monorepo setup

In a monorepo, the reporter automatically detects the workspace root by walking up from Playwright's
`rootDir`. You typically don't need to configure anything:

```ts
// apps/web/playwright.config.ts
export default defineConfig({
  reporter: [['@spaguettiscope/playwright-reporter']],
  // results go to <workspace-root>/.spasco/results/
})
```

If auto-detection fails, set `workspaceRoot` explicitly:

```ts
export default defineConfig({
  reporter: [['@spaguettiscope/playwright-reporter', { workspaceRoot: '../../' }]],
})
```

## Integration with spasco dashboard

After running your Playwright tests, generate the SpaguettiScope dashboard:

```bash
spasco dashboard
```

Make sure your `spasco.config.json` includes a connector pointing at the results directory:

```json
{
  "dashboard": {
    "connectors": [{ "id": "spasco", "resultsDir": ".spasco/results" }]
  }
}
```
npm package: @spaguettiscope/plugin-drizzle
Description: Drizzle ORM scan plugin for SpaguettiScope
Latest version: 2.2.0

# @spaguettiscope/plugin-drizzle

Drizzle ORM scan plugin for SpaguettiScope. Classifies Drizzle schema, migration, and query files
into topology dimensions.

```json
{ "plugins": ["@spaguettiscope/plugin-drizzle"] }
```

See the [main repository](https://github.com/jasonsantos/spaguettiscope) for full documentation.
npm package: @spaguettiscope/plugin-electron
Description: Electron scan plugin for SpaguettiScope
Latest version: 2.2.0

# @spaguettiscope/plugin-electron

Electron scan plugin for SpaguettiScope. Classifies Electron main process, renderer, and preload
files into topology dimensions.

```json
{ "plugins": ["@spaguettiscope/plugin-electron"] }
```

See the [main repository](https://github.com/jasonsantos/spaguettiscope) for full documentation.
npm package: @spaguettiscope/plugin-nextjs
Description: Next.js scan and analysis plugin for SpaguettiScope
Latest version: 2.2.0

# @spaguettiscope/plugin-nextjs

Next.js scan and analysis plugin for SpaguettiScope.

Classifies Next.js files (pages, layouts, server actions, route handlers) into topology dimensions
and enforces architectural boundaries (no client-imports-server, no cross-domain pages, BFF layer
boundaries).

```json
{
  "plugins": ["@spaguettiscope/plugin-nextjs"],
  "analysisPlugins": ["@spaguettiscope/plugin-nextjs/analysis"]
}
```

See the [main repository](https://github.com/jasonsantos/spaguettiscope) for full documentation.
npm package: @spaguettiscope/plugin-playwright
Description: Playwright scan plugin for SpaguettiScope
Latest version: 2.2.0

# @spaguettiscope/plugin-playwright

Playwright scan plugin for SpaguettiScope. Classifies Playwright test files, page objects, and
fixtures into topology dimensions.

```json
{ "plugins": ["@spaguettiscope/plugin-playwright"] }
```

See the [main repository](https://github.com/jasonsantos/spaguettiscope) for full documentation.
npm package: @spaguettiscope/plugin-prisma
Description: Prisma scan plugin for SpaguettiScope
Latest version: 2.2.0

# @spaguettiscope/plugin-prisma

Prisma scan plugin for SpaguettiScope. Classifies Prisma schema, client, and migration files into
topology dimensions.

```json
{ "plugins": ["@spaguettiscope/plugin-prisma"] }
```

See the [main repository](https://github.com/jasonsantos/spaguettiscope) for full documentation.
npm package: @spaguettiscope/plugin-react
Description: React scan plugin for SpaguettiScope
Latest version: 2.2.0

# @spaguettiscope/plugin-react

React scan plugin for SpaguettiScope. Classifies React components, hooks, and context files into
topology dimensions.

```json
{ "plugins": ["@spaguettiscope/plugin-react"] }
```

See the [main repository](https://github.com/jasonsantos/spaguettiscope) for full documentation.
npm package: @spaguettiscope/plugin-storybook
Description: Storybook scan plugin for SpaguettiScope
Latest version: 2.2.0

# @spaguettiscope/plugin-storybook

Storybook scan plugin for SpaguettiScope. Classifies Storybook stories and documentation files into
topology dimensions.

```json
{ "plugins": ["@spaguettiscope/plugin-storybook"] }
```

See the [main repository](https://github.com/jasonsantos/spaguettiscope) for full documentation.
npm package: @spaguettiscope/reports
Description: Connectors, aggregation, and HTML dashboard renderer for SpaguettiScope
Latest version: 2.2.0

# @spaguettiscope/reports

Connectors, aggregation, and HTML dashboard renderer for SpaguettiScope.

## What it does

- **Connectors** read CI test artifacts: Allure, Playwright, Vitest, LCov, ESLint, TypeScript
- **Aggregator** rolls up records by dimension, connector, and overall
- **Renderer** generates a self-contained HTML dashboard (React + Recharts) with:
  - Pass rate, coverage, entropy, and findings metric cards
  - Package health map with per-package drilldown
  - Dimension panels (by role, domain, layer) with test counts and coverage
  - Trend sparklines from run history
  - Findings tab with severity filtering

## Usage

```typescript
import { VitestConnector, LcovConnector, writeDashboardData } from '@spaguettiscope/reports'
```

See the [main repository](https://github.com/jasonsantos/spaguettiscope) for full documentation.
npm package: @spaguettiscope/vitest-reporter
Description: Vitest reporter for SpaguettiScope — writes skeleton-aware test results to native format
Latest version: 2.2.0

# @spaguettiscope/vitest-reporter

Vitest reporter for [SpaguettiScope](https://github.com/jasonsantos/spaguettiscope). Writes test
results to `.spasco/results/` in the native spasco format, readable by the SpascoConnector.

## Installation

```bash
pnpm install -D @spaguettiscope/vitest-reporter
```

## Usage

Add to your `vitest.config.ts`:

```typescript
import { defineConfig } from 'vitest/config'

export default defineConfig({
  test: {
    reporters: ['default', '@spaguettiscope/vitest-reporter'],
  },
})
```

## Options

Pass options as the second element of the reporter tuple:

```typescript
reporters: [
  'default',
  [
    '@spaguettiscope/vitest-reporter',
    {
      workspaceRoot: '../..', // defaults to auto-detected monorepo root
      outputDir: '.spasco/results', // defaults to {workspaceRoot}/.spasco/results
    },
  ],
]
```

## Monorepo Setup

In a monorepo with multiple test packages, add the reporter to **each** package's vitest config. The
reporter auto-detects the workspace root (via `pnpm-workspace.yaml`, `turbo.json`, or `package.json`
with `workspaces`) and writes all results to a shared `.spasco/results/` directory at the workspace
root.

For example, if you have:

- `apps/admin/vitest.config.ts`
- `apps/web/vitest.config.ts`
- `packages/database/vitest.config.ts`

Add the reporter to each one. `spasco init` will list all the configs that need updating.

## How It Works

Each test run creates a timestamped directory under `.spasco/results/` containing:

- `meta.json` — run metadata (vitest version, git info, timestamps, CI detection)
- `results/{testCaseId}.json` — one file per test case with name, status, duration, and inferred
  dimensions

The `testCaseId` is a deterministic hash of the source file + full test name, enabling deduplication
across runs.
npm package: @spain-ai-kit/boe-mcp-server
Description: MCP server for BOE (Boletín Oficial del Estado) - Spanish legal documents
Latest version: 0.1.1

# @spain-ai-kit/boe-mcp-server

MCP server for the Boletín Oficial del Estado (BOE).

Provides AI applications with access to Spanish legislation, royal decrees, and official gazette documents via the BOE Open Data XML API.

## Status

Under development.
npm package: @spain-ai-kit/ine-mcp-server
Description: MCP server for INE (Instituto Nacional de Estadística) - Spanish statistics
Latest version: 0.1.1

# @spain-ai-kit/ine-mcp-server

MCP server for the Spanish National Statistics Institute (INE).

Provides AI applications with access to Spanish demographic, economic, and census data via the INE JSON-stat API.

## Status

Under development.
npm package: @spainewwolrd/sdk
Description: 🛠 An SDK for building applications on top of SpaiAI.
Latest version: 2.4.4


> **Notice**
>
> Moved to https://github.com/pancakeswap/pancake-frontend/tree/develop/packages/swap-sdk

# Pancakeswap SDK

Forked from the [Uniswap SDK](https://github.com/Uniswap/uniswap-v2-sdk/commit/a88048e9c4198a5bdaea00883ca00c8c8e582605).

You can refer to the Uniswap SDK documentation [uniswap.org](https://docs.uniswap.org/sdk/2.0.0/).

## Running tests

To run the tests, follow these steps. You must have at least node v10 and [yarn](https://yarnpkg.com/) installed.

First clone the repository:

```sh
git clone https://github.com/pancakeswap/pancake-swap-sdk.git
```

Move into the pancakeswap-sdk working directory

```sh
cd pancakeswap-sdk/
```

Install dependencies

```sh
yarn install
```

Run tests

```sh
yarn test
```

You should see output like the following:

```sh
yarn run v1.22.4
$ tsdx test
 PASS  test/constants.test.ts
 PASS  test/pair.test.ts
 PASS  test/fraction.test.ts
 PASS  test/miscellaneous.test.ts
 PASS  test/entities.test.ts
 PASS  test/trade.test.ts

Test Suites: 1 skipped, 6 passed, 6 of 7 total
Tests:       3 skipped, 82 passed, 85 total
Snapshots:   0 total
Time:        5.091s
Ran all test suites.
✨  Done in 6.61s.
```
npm package: @spainewwolrd/uikit
Description: Set of UI components for SpaceAI projects
Author: newworlddev2023
Latest version: 0.66.0

# 🥞 Pancake UIkit

[![Version](https://img.shields.io/npm/v/@pancakeswap-libs/uikit)](https://www.npmjs.com/package/@pancakeswap-libs/uikit) [![Size](https://img.shields.io/bundlephobia/min/@pancakeswap-libs/uikit)](https://www.npmjs.com/package/@pancakeswap-libs/uikit)

Pancake UIkit is a set of React components and hooks used to build pages on Pancake's apps. It also contains a theme file for dark and light mode.

## Install

`yarn add @pancakeswap-libs/uikit`

## Setup

### Theme

Before using Pancake UIkit, you need to provide the theme file to styled-component.

```
import { ThemeProvider } from 'styled-components'
import { light, dark } from '@pancakeswap-libs/uikit'
...
<ThemeProvider theme={isDark}>...</ThemeProvider>
```

### Reset

A reset CSS is available as a global styled component.

```
import { ResetCSS } from '@pancakeswap-libs/uikit'
...
<ResetCSS />
```

### Types

This project is built with Typescript and export all the relevant types.

## How to use the UIkit

If you want to use components from the UIkit, check the [Storybook documentation](https://pancakeswap.github.io/pancake-uikit/)