open-index/open-npm huggingface dataset:
npm package: @spare/xr
Description: A sentence builder
Author: Hoyeung Wong
Latest version: 0.16.29

<div align="center">
  <img alt="banner" src="../../../media/spare-banner.svg">
  <p align="center">@spare/xr - add parenthesis and brackets in console log</p>
</div>

[![npm-version](https://img.shields.io/npm/v/@spare/xr?logo=npm&style=flat-square)][url-npm]
[![npm-downloads](https://img.shields.io/npm/dm/@spare/xr?logo=npm&style=flat-square)]()
[![npm-dependents](https://img.shields.io/librariesio/dependents/npm/@spare/xr?logo=npm&style=flat-square)]()
[![npm-last-update](https://img.shields.io/npm/last-update/@spare/xr?logo=npm&style=flat-square)]()
[![npm-maintenance](https://img.shields.io/npms-io/maintenance-score/@spare/xr?logo=npm&style=flat-square)]()
[![npm-license](https://img.shields.io/npm/l/@spare/xr?logo=npm&style=flat-square)]()
[![github-commit](https://img.shields.io/github/commit-activity/t/gadge/spare?logo=github&style=flat-square)][url-github]
[![node-version](https://img.shields.io/node/v/@spare/xr/latest?logo=node.js&style=flat-square)]()
[![npm-unpacked-size](https://img.shields.io/npm/unpacked-size/@spare/xr?logo=hackthebox&style=flat-square)]()

[//]: <> (Link)

[url-github]: https://github.com/gadge/spare
[url-npm]: https://npmjs.org/package/@spare/xr

## Features

- Add parenthesis and brackets in console log

## Install
```console
$ npm install @spare/xr
```

## Usage
```js
import { Temp } from '@spare/xr'
```

## Meta
[LICENSE (MIT)](LICENSE)

Copyright (c) 2019-present, Haoyang (Vincent) Wang

[//]: <> (Shields)
[npm-image]: https://img.shields.io/npm/v/@spare/xr.svg?style=flat-square
[quality-image]: http://npm.packagequality.com/shield/@spare/xr.svg?style=flat-square
[download-image]: https://img.shields.io/npm/dm/@spare/xr.svg?style=flat-square
[total-download-image]:https://img.shields.io/npm/dt/@spare/xr.svg?style=flat-square
[license-image]: https://img.shields.io/npm/l/@spare/xr.svg?style=flat-square
[size]: https://flat.badgen.net/packagephobia/install/@spare/xr

[//]: <> (Link)
[npm-url]: https://npmjs.org/package/@spare/xr
[quality-url]: http://packagequality.com/#?package=@spare/xr
[size-url]: https://packagephobia.now.sh/result?p=@spare/xr
npm package: @sparesparrow/mcp-prompts-contracts
Description: Kontrakty (schémata, typy) pro MCP Prompts ekosystém
Author: sparesparrow
Latest version: 1.0.1

# MCP Prompts - Contracts

This package provides shared API contracts, JSON schemas, and type definitions for the entire MCP Prompts ecosystem.

## Purpose

- Single source of truth for all data structures and API contracts used by MCP servers, clients, and tools.
- Ensures type safety, validation, and interoperability across all implementations (TypeScript, Rust, Python, Android, etc.).

## Usage

- Import the package in your MCP-compatible project to access the latest schemas and types.
- All prompt data and API payloads should be validated against these schemas.

## Usage: Conversion and Validation

```ts
import { convertToPrompt, validatePrompt } from 'mcp-prompts-contracts';

const raw = {
  name: 'my-prompt',
  template: 'Hello, {{name}}!'
};
const prompt = convertToPrompt(raw, { replace: { name: 'World' } });
const result = validatePrompt(prompt);
if (result.valid) {
  console.log('Prompt is valid!');
} else {
  console.error('Prompt is invalid:', result.errors);
}
```

## Generating OpenAPI Specification

OpenAPI specification is generated automatically from Zod schemas in `src/schemas.ts`.

**To generate OpenAPI:**

```bash
npm install # install dependencies
npm run gen:openapi
```

The output file is `openapi.json` in the package root.

## Contributing

- Add new types and schemas to `src/interfaces.ts` and `src/schemas.ts`.
- After any schema change, run `npm run gen:openapi` and commit the updated `openapi.json`.
- If you add a new endpoint, extend the schemas and types as needed.

## Publishing to NPM

This package is published as `@sparesparrow/mcp-prompts-contracts`.

```bash
npm publish --access public
```

## CI/CD and Workflow

- Every commit to the main branch triggers CI to check types, schemas, and generate OpenAPI.
- Publishing to NPM is automated after successful CI.

## Next Steps

- Type generation for other languages (Rust, Kotlin, Python) will be based on OpenAPI using `openapi-generator`.
- See the meta-repository for strategic documents and further roadmap.
npm package: @sparing-software/100vh
Description: Lightweight JS package for easy overcoming the problem with 100vh on mobile devices
Author: SparingSoftware
Latest version: 1.2.0

# 100vh

[![MIT license](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/SparingSoftware/nuxt-sparing-center/blob/master/LICENSE)
[![Downloads number](https://img.shields.io/npm/dt/@sparing-software/100vh.svg)](https://www.npmjs.com/package/@sparing-software/100vh)
[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)

Lightweight JS package for easy overcoming the problem with 100vh on mobile devices :iphone:

## How does it work?
It creates the CSS variable called `--vh` at the `<html>` tag and `vh` variable in the `window`, which is changed only on orientation change and stays still during scroll. This will prevent the page "jumping" on scroll, which leads to bad user experience.<br>
##### Important note:
This will stay still only on mobile devices, on desktop the value changes together with the viewport. That means that it can be used on any resolution and there is no need for additional css media queries.

## Installation
Install package in your project 
```bash
npm i @sparing-software/100vh
```

## Initialization
Import the package and run the init function at the page start.<br>
(for Nuxt.js/Vue app it can be initialized in plugins, if you're using other technology – init the script above all the other code)

```js
import vh from '@sparing-software/100vh'

vh.init()
```

## Examples
CSS
```css
.section {
  height: var(--vh);
}
```
JS
```js
window.querySelectorAll('section').style.height = window.vh
```

## Contributing
Want to help improve this plugin? Great!  
Project is open-source so fork repo and join us!

## License
MIT License © [Sparing Interactive](https://github.com/SparingSoftware)
npm package: @sparing-software/nuxt-dynamic-styles-module
Description: Nuxt.js module for on-build dynamic styles import
Author: SparingSoftware
Latest version: 1.0.0

# Nuxt dynamic styles module

[![MIT license](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/SparingSoftware/nuxt-dynamic-styles-module/blob/master/LICENSE)
[![Downloads number](https://img.shields.io/npm/dt/@sparing-software/nuxt-dynamic-styles-module.svg)](https://www.npmjs.com/package/@sparing-software/nuxt-dynamic-styles-module)
[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)

Nuxt module for on-build dynamic styles import :dizzy:

## Installation
Install package in your project 
```bash
npm i @sparing-software/nuxt-dynamic-styles-module
```

Install [`@nuxtjs/style-resources`](https://github.com/nuxt-community/style-resources-module) if you don't already have
```bash
npm i @nuxtjs/style-resources
```

## Configuration
Add module in `nuxt.config.js`
```js
modules: [
  ['@sparing-software/nuxt-dynamic-styles-module', {
    // ... options
  }]
]
```
Caveat: `@nuxtjs/nuxt-dynamic-styles-module` must be set before `@nuxtjs/style-resources` module.

## Options

| Option                 | Description     | Default |
|------------------------|-----------------|---------|
| `content`              | Content of the styles that will be imported. Could be `string` or `function`  | `''` |
| `addTo`                | Where to add styles in styleResources list. Available options: `'start'`, `'end'` | `'start'` |

## Example
```js
['@sparing-software/nuxt-dynamic-styles-module', {
  content: function () {
    return axios.get('https://example.com/current-styles').then(res => res.data)
    // '$primary-color: #bebebe; .main { background: $primary-color; }'
  },
  addTo: 'end'
}]
```

And then in the code

```html
<main class="main"> <!-- background: #bebebe; -->
  ...
</main>
```

```scss
button {
  color: $primary-color; // color: #bebebe;
}
```

## Contributing
Want to help improve this plugin? Great!  
Project is open-source so fork repo and join us!

## License
MIT License © [Sparing Interactive](https://github.com/SparingSoftware)
npm package: @sparing-software/nuxt-service-module
Description: Services integration with Nuxt.js
Author: SparingSoftware
Latest version: 1.0.1

# Nuxt service module

[![MIT license](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/SparingSoftware/nuxt-service-module/blob/master/LICENSE)
[![Downloads number](https://img.shields.io/npm/dt/@sparing-software/nuxt-service-module.svg)](https://www.npmjs.com/package/@sparing-software/nuxt-service-module)
[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)

Services integration with Nuxt.js

## Installation
Install package in your project 
```bash
$ npm install @sparing-software/nuxt-service-module
```
 
## Configuration
Add module to `nuxt.config.js`
```js
modules: [
  '@sparing-software/nuxt-service-module'
  // or
  ['@sparing-software/nuxt-service-module', {
  // ... options
  }]
]
```

## Options

| Option                         | Description     | Default |
|--------------------------------|-----------------|---------|
| `httpClient`                   | Relative path to your favourite httpClient  | `null` (httpClient received in service will be set to [$axios](https://github.com/nuxt-community/axios-module). Caveat: `@sparing-software/nuxt-service-module` must be set before `@nuxtjs/axios` module) |

## Example
```js
['@sparing-software/nuxt-service-module', {
  httpClient: 'plugins/axios'
}]
```

And in `@/plugins/axios.js`
```js
const axios = require('axios')
export default axios // or module.exports = axios
```

## Usage
1. Create `service` folder in your root directory
2. Add service by creating js file - for example: `@/service/books.js` will create `books` service
```js
export default httpClient => ({
  getAll () {
    return httpClient.get('/books')
  },
  getById (id) {
    return httpClient.get('/books?id=' + id)
  }
})
```
3. `books` service is now accessible all over the app:
 - Components: `this.$service.books.getAll()`
 - Vuex actions: `this.app.$service.books.getAll()`
 - The Context: `ctx.$service.books.getAll()`


## Contributing
Want to help improve this module? Great!  
Project is open-source so fork repo and join us!

## License
MIT License © [Sparing Interactive](https://github.com/SparingSoftware)
npm package: @sparing-software/nuxt-service-plugin
Description: Services integration with Nuxt.js
Author: SparingSoftware
Latest version: 1.0.2

# Nuxt service plugin

[![MIT license](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/SparingSoftware/nuxt-service-plugin/blob/master/LICENSE)
[![Downloads number](https://img.shields.io/npm/dt/@sparing-software/nuxt-service-plugin.svg)](https://www.npmjs.com/package/@sparing-software/nuxt-service-plugin)
[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)

Services integration with Nuxt.js

## Installation
Install package in your project 
```bash
$ npm install @sparing-software/nuxt-service-plugin
```
 
## Configuration
1. Create `@/plugins/service.js` - feel free to use your favourite http client
```js 
import createService from '@sparing-software/nuxt-service-plugin'

export default function (ctx, inject) {
  const httpClient = ctx.$axios
  const service = createService(httpClient)

  ctx.$service = service
  inject('service', service)
}
```

2. Add plugin (`nuxt.config.js`)
```js
plugins: [
  '@/plugins/service'
]
```

3. Transpile plugin with webpack to autoimport services files (`nuxt.config.js`)
```js
build: {
  transpile: ['@sparing-software/nuxt-service-plugin']
}
```

## Usage
1. Create `service` folder in your root directory
2. Add service by creating js file - for example: `@/service/books.js` will create `books` service
```js
export default axios => ({
  getAll () {
    return axios.get('/books')
  },
  getById (id) {
    return axios.get('/books?id=' + id)
  }
})
```
3. `books` service is now accessible all over the app:
 - Components: `this.$service.books.getAll()`
 - Vuex actions: `this.app.$service.books.getAll()`
 - The Context: `ctx.$service.books.getAll()`


## Contributing
Want to help improve this plugin? Great!  
Project is open-source so fork repo and join us!

## License
MIT License © [Sparing Interactive](https://github.com/SparingSoftware)
npm package: @sparing-software/sparing-open-api
Description: Generate http service based on open api schema
Author: Panowie Programiści
Latest version: 13.1.1

## Installation

```
npm i @sparing-software/sparing-open-api
```

## Usage

Create a sparing-open-api.config.js file at the root of the project

```js
/** @type {import('@sparing-software/sparing-open-api').Config} */
export default {
  url: 'https://example.com/schema/'
}
```

---

To comfortly use generated service in futher application consider creating another file in `service` folder:

`service/http.service.ts`

```ts
import { Api } from './$OPEN_API_OUT_FILENAME'

export const httpService = new Api({
  baseURL: process.env.VUE_APP_API_URL
})

httpService.instance.interceptors.request.use(config => {
  config.headers.Authorization = localStorage.getItem('token')
  return config
})
```

Which can be later easily used as follows:

```ts
import { httpService } from '@/service/http.service'
const issues = await httpService.projects.getIssues(project.id)
```

---

It is also recommended to add `prebuild` and `preserve`/`predev` scripts to your `package.json` file in order to get the newest api on each start:

```json
{
  "scripts": {
    "prebuild": "sparing-open-api",
    "preserve": "sparing-open-api",
    ...
  }
}
```

Or you can always do it manually by running `sparing-open-api` from terminal opened inside your project.

## Contributing

Want to help improve this plugin? Great!  
Project is open-source so fork repo and join us!

## Releasing and versioning

Use [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) to automatically bump major, minor and patch versions. Read more about semantic releasing in this [docs](https://semantic-release.gitbook.io/semantic-release/recipes/release-workflow).

## License

MIT License © [Sparing Interactive](https://github.com/SparingSoftware)
npm package: @sparing-software/v-clamp
Description: Vue directive plugin for text truncate
Author: SparingSoftware
Latest version: 1.0.1

<div align="center">
<h1>V-clamp :speech_balloon:</h1> 

[![MIT license](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/SparingSoftware/v-clamp/blob/master/LICENSE)
[![Downloads number](https://img.shields.io/npm/dt/@sparing-software/v-clamp.svg)](https://www.npmjs.com/package/@sparing-software/v-clamp)
[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)

Vue directive plugin for text truncate.
Plugin cuts too long text and replace it with ellipsis.
</div>

![Comparison basic multiline text-overflow and multiline text with use v-clamp directive](https://user-images.githubusercontent.com/33500690/56319221-5ce8e680-6161-11e9-9bba-6cd484a17eb7.png)

## How to use
### Installation
Install package in your project 
```bash
$ npm install @sparing-software/v-clamp
```
 
### Configuration
Basic config in Vue app by global import plugin in main.js file
```javascript
import Clamp from '@sparing-software/v-clamp'

Vue.use(Clamp)
```

### Implementation
All you need to do is add **v-clamp** directive to element on which you want to ellipsis overflow and specify its **height** or **max-height** style property.

Look at the example below:
```html
<template>
  <p v-clamp class="text">
    Lorem ipsum dolor sit amet, consectetur adipisicing elit.
  </p>
</template>

<style>
  .text {
     max-height: 100px;
  }
</style>
```

## Contributing
Want to help improve this plugin? Great!  
Project is open-source so fork repo and join us!

## License
MIT License © [Sparing Interactive](https://github.com/SparingSoftware)
npm package: @sparing-software/vue-on-resize
Description: Vue plugin for resize handlers
Author: SparingSoftware
Latest version: 1.1.1

# Vue on resize

[![MIT license](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/SparingSoftware/vue-on-resize/blob/master/LICENSE)
[![Downloads number](https://img.shields.io/npm/dt/@sparing-software/vue-on-resize.svg)](https://www.npmjs.com/package/@sparing-software/vue-on-resize)
[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)

Vue plugin for resize handlers. 

Reduce your old code:
```js
mounted() {
  const resizeHandler = e => {
    // handler code
  }
  resizeHandler()
  
  const debouncedHandler = debounce(resizeHandler, 250)
  window.addEventListener('resize', debouncedHandler)
  this.$once('hook:beforeDestroy', () => {
    window.removeEventListener('resize', debouncedHandler)
  })
}
```
to simple:
```js
mounted() {
  this.$onResize(width => {
    // ... handler code
  }).fire()
}
```

## Installation
Install package in your project 
```bash
$ npm install @sparing-software/vue-on-resize
```

## Configuration
```js
import Vue from 'vue'
import VueOnResize from '@sparing-software/vue-on-resize'

Vue.use(VueOnResize)
```

## Examples
Simple usage:
```js
mounted() {
  this.$onResize(width => {
    // ... handler code
  })
}
```

Immediately execute callback:
```js
mounted() {
  this.$onResize(width => {
    // ... handler code
  }).fire()
}
```

Programmatically execute callback:
```js
mounted() {
  const resizeHandler = this.$onResize(width => {
     // ... handler code
  }).fire()

  resizeHandler.fire()
}
```

Custom debounce time (default 250ms):
```js
mounted() {
  this.$onResize(width => {
    // ... handler code
  }, 100)
}
```

Get more info about resize event:
```js
mounted() {
  this.$onResize((windowWidth, windowHeight, event) => {
    // ... handler code
  })
}
```

## Contributing
Want to help improve this plugin? Great!  
Project is open-source so fork repo and join us!

## License
MIT License © [Sparing Interactive](https://github.com/SparingSoftware)