open-index/open-npm huggingface dataset:
npm package: @nerdcow/tio-mcp
Description: MCP server for The Image Optimizer — compress images with AI assistants like Claude
Author: Nerd Cow Ltd.
Latest version: 1.2.1

# @nerdcow/tio-mcp

MCP (Model Context Protocol) server for [The Image Optimizer](https://theimageoptimizer.com). Lets AI assistants like Claude compress and optimize your images.

## What it does

This package bridges your local AI assistant (Claude Desktop, Claude Code, etc.) to The Image Optimizer API. It exposes three tools:

- **compress_image** — Compress an image from a local file path, URL, or base64 data. Supports JPEG, PNG, GIF, WebP, HEIC, and HEIF. Outputs optimized AVIF/WebP for maximum savings.
- **check_balance** — Check your remaining credit balance and usage stats.
- **list_transactions** — View your credit transaction history.

## Get an API key

1. Go to [theimageoptimizer.com](https://theimageoptimizer.com) and create an account
2. Subscribe to a paid plan or purchase credits
3. Copy your license key from the dashboard

## Setup

### Claude Desktop

Add this to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "tio-image-optimizer": {
      "command": "npx",
      "args": ["-y", "@nerdcow/tio-mcp"],
      "env": {
        "TIO_API_KEY": "YOUR-LICENSE-KEY"
      }
    }
  }
}
```

Config file location:
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
- **Linux**: `~/.config/Claude/claude_desktop_config.json`

### Claude Code

```bash
claude mcp add tio-image-optimizer -- npx -y @nerdcow/tio-mcp
```

Then set the environment variable `TIO_API_KEY` with your license key.

## Usage

Once configured, just ask your AI assistant:

- "Compress /path/to/image.jpg"
- "Optimize this image: https://example.com/photo.png"
- "Check my TIO credit balance"

The assistant handles the rest.

## Environment variables

| Variable | Required | Description |
|---|---|---|
| `TIO_API_KEY` | Yes | Your TIO license key |
| `TIO_API_URL` | No | API endpoint (defaults to `https://api.theimageoptimizer.com`) |

## License

MIT
npm package: @nerdearla-style-react/core
Description: <div align="center">     <img alt="nestjs-logo" width="250" height="auto" src="https://raw.githubusercontent.com/tiimiit-lab/nerdearla-style-react/main/.readme-static/logo-tiimiit.svg" />     <h1>Tiimiit Lab - Core </h1> </div>
Latest version: 0.1.0-beta.0

<div align="center">
    <img alt="nestjs-logo" width="250" height="auto" src="https://raw.githubusercontent.com/tiimiit-lab/nerdearla-style-react/main/.readme-static/logo-tiimiit.svg" />
    <h1>Tiimiit Lab - Core </h1>
</div>

<div align="center">
    <img src="https://img.shields.io/static/v1.svg?style=flat&label=Node&message=v14.17.0&labelColor=339933&color=757575&logoColor=FFFFFF&logo=Node.js" alt="Node.js"/>
    <img src="https://img.shields.io/static/v1.svg?style=flat&label=Npm&message=v6.14.13&labelColor=CB3837&logoColor=FFFFFF&color=757575&logo=npm" alt="Npm"/>
    <a href="./license.md">
        <img alt="GitHub license" src="https://img.shields.io/github/license/tiimiit-lab/nerdearla-style-react?style=flat">
    </a>
    <img alt="Release" src="https://img.shields.io/npm/v/@nerdearla-style-react/core.svg">
    <br/> 
</div>
<br>

## Glosario

- [📝 Requerimientos básicos](#basic-requirements)
- [🛠️ Instalar dependencia](#install-dependencies)
- [👨‍💻 Uso](#use)
- [📄 Changelog](./CHANGELOG.md)
- [📜 License MIT](../../license.md)

---

<a name="basic-requirements"></a>

## 📝 Requerimientos básicos

- Node.js v14.17.0 or higher ([Download](https://nodejs.org/es/download/))
- YARN v1.22.17 or higher
- NPM v6.14.13 or higher

<a name="install-dependencies"></a>

## 🛠️ Instalar dependencia

```
npm install -S @nerdearla-style-react/core
```

```
yarn add @nerdearla-style-react/core
```

<a name="use"></a>

## 👨‍💻 Uso

### Provider

Se requiere instnaciar el provider en el componente de mayor jerarquia para impactar a los componentes hijos.

```typescript
import { Provider } from '@nerdearla-style-react/core';

function App() {
  return (
    <Provider variant={'theme-a'}>
      <Components />
    </Provider>
  );
}

export default App;
```

Ejemplo para importar un componente y usarlo en la app.

```typescript
import { Button } from '@nerdearla-style-react/core';

function Component() {
  return <Button>Example</Button>;
}

export default Component;
```

## 📄 Changelog

Todos los cambios notables de este paquete se documentarán en el archivo [Changelog](./CHANGELOG.md).

---

<div align="center">
    <a href="mailto:arqteam@prismamp.com" target="_blank" alt="Send a email">
        <img src="https://raw.githubusercontent.com/tiimiit-lab/nerdearla-style-react/main/.readme-static/iso-tiimiit.svg" width="80" alt="Iso Tiimiit" />
    </a><br/>
    <p>Made with ❤</p>
</div>
npm package: @nerdenough/gatsby-remark-embed-youtube
Description: Embed Youtube Videos in Gatsby via Markdown
Author: Marvin Mieth
Latest version: 0.0.9

# gatsby-remark-embed-youtube
Embed a Youtube Video in your Markdown


## Install 
1. Install plugin to your site:

```bash
yarn add gatsby-remark-embed-youtube
```

2. Add following to your `gatsby-config.js`:
```js
    plugins: [      
      {
        resolve: "gatsby-transformer-remark",
        options: {
          plugins: [
          {
            resolve: "gatsby-remark-embed-youtube",
            options: {
              width: 800,
              height: 400
            }
          }
          ]
        }
      },
```

Note: if you also rely on `gatsby-remark-responsive-iframe`, you have to define the embed-youtube plugin first:
``` js
plugins: [
  "gatsby-remark-embed-youtube",
  "gatsby-remark-responsive-iframe"
]
```

3. Restart gastby.

## Usage

```markdown
# Look at this Video:

`youtube:https://www.youtube.com/embed/2Xc9gXyf2G4`

```


## License

MIT
npm package: @nerdenough/mjml-ncc-bundle
Description: mjml bundled by @vercel/ncc
Author: Brendan Goodenough
Latest version: 1.2.0

# @nerdenough/mjml-ncc-bundle

[MJML](https://github.com/mjmlio/mjml) bundled by [@vercel/ncc](https://github.com/vercel/ncc).
npm package: @nerdic-coder/stencil-cli
Description: A command line interface for StencilJS
Author: Johan Axelsson
Latest version: 1.0.1

# Stencil Command Line Interface
The unofficial command line interface for StencilJS.

## Installation

Stencil requires a recent LTS version of NodeJS and npm. Make sure you've installed and/or updated Node before continuing.

You can install the Stencil CLI globally with command,
```bash
npm i -g @nerdic-coder/stencil-cli
```

Now the `stencil` command should be available in your command line tool.

## Usage

### Reusable Components

You can create a reusable stencil component or library with command,
```bash
stencil start-component my-component
```

Where `my-component` is the name you want for the component or library.

This will create a folder with the basics that you need to develop your component.

You can read more about how to create and publish Stencil components in my article: [How I created and published my first Stencil component](https://nerdic-coder.com/2018/05/27/how-i-created-and-published-my-first-stencil-component/) 

### Building an app

You can build entire apps with Stencil, here is the command to get a starter app for Stencil,
```bash
stencil start-app my-app
```

Where `my-app` is the name you want for the app.

This will create a folder with the basics that you need to develop your awesome app.

### Generating a component

With the following command you can generate a new Stencil component in your exisiting Stencil projects,
```bash
stencil generate my-component
```

Where `my-component` is the name you want for the new component.

This will create a new folder for the component under `src/components`, with a css file, unit test spec.ts file and the component tsx file.

### Start development server

The following command is simply an alias to `npm start` that starts the Stencil development server.
```bash
stencil start
```

### Wildcard command

If you write any other command after `stencil` it acts like an alias for a npm run script.

For example `stencil build` will run the `npm run build` command.

## Contribute

If you see anything that can be improved just let me know or fix it in a pull request. :)

### Development

To help develop this tool start with cloning it down to your machine and run npm install.
```bash
git clone https://github.com/nerdic-coder/stencil-cli.git stencil-cli
cd stencil-cli
npm install
```

To test your local changes run the following in the stencil-cli folder,
```bash
npm link
```

and now you should be able to run the `stencil` command anywhere and your changes is reflected instantly.
npm package: @nerdjs/fluffy-the-cat
Description: Can log "hi 🐱" to the console!
Latest version: 1.1.0

# POC - Fluffy the cat

Fluffy the cat package is a "Proof of concept" to contain and expose a couple of functionalities.

This is a private package.

## Installation
```bash
npm i @nerdjs/fluffy-the-cat
```

## Usage

```typescript
import {showMeCats} from "@nerdjs/fluffy-the-cat";

# returns 'hi 🐱'
showMeCats()
```
```typescript
import {CatEntity} from "@nerdjs/fluffy-the-cat";

# returns 'The cat 🐱 did purr'
const cat = new CatEntity('🐱');
cat.purr();
```

## Run locally
### node package hot realod
`npx tsc src/index.ts ---watch --outDir ./dist`
### Link package to project (consumer)
`npm run --prefix <local_package_route> build && npm link <local_package_route>`

## publish package
- **Build:** `npm run build && npm publish`
- **Build a beta version:** `npm run build && npm publish --tag beta`
npm package: @nerdko/testchallenge
Description: test challenge for QA automation
Author: Nyussim
Latest version: 1.0.0

# testChallenge

test challenge for QA automation
If you downloaded this package and you are not interested in evaluating my automation skills, sorry, this package is just for that.

Running automation:
For running the test, please run the next command:
npx cypress run

For running automation with browser open, run the next command:
npx cypress run --headless:false

Test will run headless as default and report will be saved in:
mochawesome-report\challenge-report.html
or
mochawesome-report\challenge-report.json

Test definition:
Test include comments for better options to use in a real scenario, since I don't have access to the swagger, I cannot make faster custom commands for login and clean up before test execution
When possible, test wait for server side communication to complete before running assertion on the UI
Focus and should methods are used as waits hooks for test reliability
Each element with ID is found by that selector, other elements are found using the nearest parent with an ID or class as selector and then filtering with a contains command for selecting the specific element.
By using a should after each element selector allows for maintainability in the future, since the report will have exactly which element was not found or which value changed
npm package: @nerdko/web-services-test-challenge
Description: web services automation challenge
Author: Nyussim
Latest version: 1.0.0

# web-services-test-challenge
 code challenge for test services automation
If you downloaded this package and you are not interested in evaluating my automation skills, sorry, this package is just for that.

Running automation: For running the test, please run the next command: npx cypress run

For running automation with browser open, run the next command: npx cypress run --headless:false

Test will run headless as default and report will be saved in: mochawesome-report\challenge-report.html or mochawesome-report\challenge-report.json

For changing browser or disabling headless mode please reffer to Cypress documentation for all flags

Test definition:
Test include failing tests due to issues with the API
Swagger states to user $int64 but displays java.lang errors related to the size of the number provided
This issue causes put request to fail, since the pet is not found
I added a ficture with the crude's base json format so I can worry less about hierarchy when testing and providing a better and easier way to update in the future.
npm package: @nerdo/dex
Description: Finds a running docker container with the closest matching name and executes a command.
Author: Dannel Albert
Latest version: 1.0.6

# @nerdo/dex

A commmand line utility that finds a running docker container with the closest matching name and executes a command on it.

## Installation

`npm i -g @nerdo/dex`

## Usage

`dex <container name> [command]`

`<container name>` can be the partial name of a container and is required.

`[command]` is optional, but defaults to `/bin/bash`. It can consist of a command with any number of arguments, e.g. `dex some-container ls -al`.
npm package: @nerdo/jest-extended
Description: nerdo's custom jest matchers
Author: Dannel Albert
Latest version: 1.0.0

# @nerdo/jest-extended
> nerdo's custom jest matchers

## Install it

```bash
npm install --save-dev @nerdo/jest-extended
```

## Set it up

```
// jest.config.js
module.exports = {
  setupFilesAfterEnv: [
    '@nerdo/jest-extended'
  ]
}
```

If you are using TypeScript and your editor does not recognize the new matchers, create a `global.d.ts` file in your project.

```
// global.d.ts
import '@nerdo/jest-extended'
```

If it _still_ is not working, you may also need to create a `tsconfig.json` with an empty object `{}` defined as the contents.

## Asymmetric Matchers

### expect.arrayExclusivelyContaining(array)
expect.arrayExclusivelyContaining(array) matches a received array which contains all of the elements in the expected array AND contains the same number of elements.

It usage is exactly the same as [jest's built-in expect.arrayContaining(array)](https://jestjs.io/docs/en/expect#expectarraycontainingarray).

### expect.objectExclusivelyContaining(object)
expect.objectExclusivelyContaining(object) matches a received object which contains all of the keys and values in the expected object AND contains the same number of properties.

It usage is exactly the same as [jest's built-in expect.objectContaining(object)](https://jestjs.io/docs/en/expect#expectobjectcontainingobject)
npm package: @nerdos/page-metadata-parser
Description: A simple library for extracting metadata from a web page.
Author: Captain Martin
Latest version: 0.0.5

# page-metadata-parser

A simple library for extracting metadata from a web page.

## Thanks to

[page-metadata-parser](https://github.com/mozilla/page-metadata-parser)

## License

[MIT](./LICENSE) License © 2022 [Captain Martin](https://github.com/captain-martin)
npm package: @nerdos/typewriter
Description: ```sh $ yarn add typewriter
Author: Captain Martin
Latest version: 0.0.9

# Typewriter - WIP

```sh
$ yarn add typewriter

# or

$ pnpm install typewriter
```

## Example

```ts
import Typewriter from "./dist/index.mjs";
(async () => {
  const typewriter = new Typewriter({
    containerId: "output",
    // cursorBG: '#ee30a1',
  });
  await typewriter.sleep(2000);
  await typewriter.typingFunction();
  await typewriter.typing(" ");
  await typewriter.typingFunctionName("beepInterval");
  await typewriter.typing("() ");
  await typewriter.typingBlock("{}");
  await typewriter.sleep(1800);
  await typewriter.typingEnter();
  await typewriter.sleep(500);
  await typewriter.typingComment("// function ");
  await typewriter.typingComment(["comes here", "detail..."]);
  await typewriter.sleep(1500);
  await typewriter.newLine(1);
  await typewriter.sleep(1200);
  await typewriter.typingFunction("return ");
  await typewriter.typingFunctionName("setInterval");
  await typewriter.typingBlock("()");
  await typewriter.sleep(1200);
  await typewriter.typing("() => ");
  await typewriter.typingBlock("{}");
  await typewriter.sleep(800);
  await typewriter.typingEnter(1);
  await typewriter.typingFunction("if ");
  await typewriter.typingBlock("()");
  await typewriter.typingFunctionName("this");
  await typewriter.typing(".");
  await typewriter.typingVariable("cursorElement");
  await typewriter.relocateCursor();
  await typewriter.typing(" ");
  await typewriter.typingBlock("{}");
  await typewriter.sleep(1200);
  await typewriter.typingEnter(2);
  await typewriter.typingFunction("const ");
  await typewriter.typingBlock("{}");
  await typewriter.typingVariable(" visibility ");
  await typewriter.relocateCursor();
  await typewriter.typingFunction(" = ");
  await typewriter.typingFunctionName("this");
  await typewriter.typing(".");
  await typewriter.typingVariable("cursorElement");
  await typewriter.typing(".");
  await typewriter.typingVariable("style");
  await typewriter.sleep(1200);
  await typewriter.newLine(3);
  await typewriter.typingComment("// More detail...");
})();
```

## License

[MIT](./LICENSE) License © 2022 [Captain Martin](https://github.com/captain-martin)
npm package: @nerds-and-company/sass-lint-webpack-plugin
Description: sass-lint plugin for webpack
Author: Bob Olde Hampsink
Latest version: 1.0.5

> ##Notice: This is a fork of [sasslint-webpack-plugin](https://github.com/alleyinteractive/sasslint-webpack-plugin) with updated dependencies

**NOTE**
Due to how non-js files are handled via webpack, this has been forked from sasslint-loader and rewritten as plugin instead of a loader.

# Sasslint Plugin

> Sasslint plugin for Webpack

## Install

```console
$ npm install sasslint-webpack-plugin
```

## Usage

In your webpack configuration

```js
var sassLintPlugin = require('sasslint-webpack-plugin');


module.exports = {
  // ...
  plugins: [
    new sassLintPlugin(),
  ],
  // ...
}
```

### Options

You can customize the lint settings via a `.sass-lint.yml` file. See [sasslint options](https://github.com/sasstools/sass-lint/blob/develop/docs/sass-lint.yml), for complete options.

* `configFile`: You can change the config file location. Default: (`.sass-lint.yml`)
* `context`: Array of strings or String, Change the root of your SCSS files. Default inherits from webpack config.
* `ignoreFiles`: Array of files to ignore, must be full path, Default: none
* `ignorePlugins`: Array of plugins to ignore, Default: none (example: `extract-text-webpack-plugin`)
* `glob`: Change the glob pattern for finding files. Default: (`**/*.s?(a|c)ss`)
* `quiet`: Suppress warnings, errors will still show. Default: `false`
* `failOnWarning`: Have Webpack's build process die on warning. Default: `false`
* `failOnError`: Have Webpack's build process die on error. Default: `false`
* `testing`: Quites output normally for testing purposes, Default: 'false' **Caution** do not use this unless you are catching errors via Webpack CLI!

```js
// Default settings
module.exports = {
  plugins: [
    new sassLintPlugin({
      configFile: '.sass-lint.yml',
      context: ['inherits from webpack'],
      ignoreFiles: [],
      ignorePlugins: [],
      glob: '**/*.s?(a|c)ss',
      quiet: false,
      failOnWarning: false,
      failOnError: false,
      testing: false
    }),
  ]
}
```

#### Errors and Warnings

The plugin will dump full reporting of errors and warnings.
You can use the `quiet` option to hide files which only have warnings.
`quiet` will not hide errors, nor will it hide warnings on files with errors.

### Extract Text Plugin

You will can duplicate output of errors and warnings if you use the extract-text-webpack-plugin, add it to the `ignorePlugins` config option to prevent that.

### NoErrorsPlugin

`NoErrorsPlugin` prevents Webpack from outputting anything into a bundle. So even sass-lint warnings
will fail the build. No matter what error settings are used for `sasslint-webpack-plugin`.

So if you want to see sass-lint warnings in console during development using `WebpackDevServer`
remove `NoErrorsPlugin` from webpack config.

#### [License](LICENSE)
npm package: @nerds-cooking/electron-overlay-window
Description: Library for creating overlay windows, intended to complement the Electron.
Author: nerds.cooking
Latest version: 3.1.0

## electron-overlay-window

Library for creating overlay windows, intended to complement the Electron.

Responsible for:
  - Finding target window by title
  - Making overlay window a child of target
  - Keeping position and size of overlay window with target in sync
  - Emits lifecycle events

Important notes:
  - You can initialize library only once (overlay window must never die, and title by which target window is searched cannot be changed)
  - You can have only one overlay window
  - Found target window remains "valid" even if its title has changed
  - Correct behavior is guaranteed only for top-level windows *(A top-level window is a window that is not a child window, or has no parent window (which is the same as having the "desktop window" as a parent))*
  - Windows: target window must have the same or lower privilege level than overlay window
  - X11: library relies on EWHM, more specifically `_NET_ACTIVE_WINDOW`, `_NET_WM_STATE_FULLSCREEN`, `_NET_WM_NAME`

Supported backends:
  - Windows (7 - 10)
  - Linux (X11)

Recommended dev utils
- Windows: AccEvent (accevent.exe) and Inspect Object (inspect.exe) from Windows SDK
- X11: xwininfo, xprop, xev
npm package: @nerdsandcompany/browserslist-config-default
Description: Nerds & Company Browserslist Config
Author: Nerds & Company
Latest version: 0.0.1

# Browserslist Config

> Company-wide Browserslist Config.

## Installation

- yarn add -D @nerdsandcompany/browserslist-config-default
- Add Browserslist extends to package.json

```json
"browserslist": [
  "extends @nerdsandcompany/browserslist-config-default"
],
```

## Publishing

Clone this repository and go to a package directory
Update the version in package.json
Run `npm publish --access public`
npm package: @nerdsandcompany/stylelint-config
Description: Nerds & Company Stylelint Config
Author: Nerds & Company
Latest version: 0.0.11

# Stylelint Config

> Company-wide Stylelint Config.

## Installation

* yarn add -D @nerdsandcompany/stylelint-config
* yarn stylelint-config init
* Add `"prettier": "@nerdsandcompany/prettier-config"` to package.json

## Publishing

Clone this repository and go to a package directory
Update the version in package.json
Run `npm publish --access public`
npm package: @nerdsandcompany/webpack-sprite-svg-loader
Description: [![npm version](https://img.shields.io/npm/v/webpack-sprite-svg-loader)](https://www.npmjs.com/package/webpack-sprite-svg-loader) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/nerds-and-company/webpack-sprite-sv
Latest version: 0.0.3

# @nerdsandcompany/webpack-sprite-svg-loader

[![npm version](https://img.shields.io/npm/v/@nerdsandcompany/webpack-sprite-svg-loader)](https://www.npmjs.com/package/@nerdsandcompany/webpack-sprite-svg-loader)
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/nerds-and-company/webpack-sprite-svg-loader/blob/master/LICENSE)

Webpack loader for generating external svg symbol sprite files, inspired by https://github.com/vadymshymko/svg-sprite-generation-loader

## Table of contents

- [How it works?](#how-it-works)
- [TODO (limitations)](#todo)
- [Installation](#installation)
- [Usage](#usage)
- [Options](#options)

## TODO

- Currently you have to restart your webpacker after you've added or removed a SVG,
- Caching is currently disabled (perhaps related to previous bullet).

## How it works?

@nerdsandcompany/webpack-sprite-svg-loader is a webpack-loader that takes a multiple svg files, transform (parse and return as an object with `symbolId` and `attributes` keys) and put them back in one file.

Input multiple svg files, e.g:

```html
<!-- file1.svg -->
<svg viewBox="0 0 10 10">
  <!-- file1.svg content -->
</svg>

<!-- file2.svg -->
<svg viewBox="0 0 10 30">
  <!-- file2.svg content -->
</svg>

<!-- file3.svg -->
<svg viewBox="0 0 15 40">
  <!-- file3.svg content -->
</svg>
```

Output one svg file (svg sprite):

```html
<svg xmlns="http://www.w3.org/2000/svg">
  <symbol viewBox="0 0 10 10" id="file1">
    <!-- file1.svg content -->
  </symbol>

  <symbol viewBox="0 0 10 30" id="file2">
    <!-- file1.svg content -->
  </symbol>

  <symbol viewBox="0 0 15 40" id="file3">
    <!-- file3.svg content -->
  </symbol>
</svg>
```

You can refer to this file to display all your icons using [SVG stacking technique](https://css-tricks.com/svg-fragment-identifiers-work/#article-header-id-4)

## Installation:

```bash
npm install @nerdsandcompany/webpack-sprite-svg-loader --save-dev
```

**yarn**

```bash
yarn add @nerdsandcompany/webpack-sprite-svg-loader --dev
```

## Usage:

In your webpack config:

```javascript
const path = require('path');
const glob = require('glob');

const WebpackSpriteSvgLoaderState = require('@nerdsandcompany/webpack-sprite-svg-loader/src/plugin.js');

module.exports = {
  entry: {
    sprite: glob.sync(path.resolve(__dirname, './src/assets/img/sprite/**/*.svg'))
  },
  module: {
    rules: [
      {
        test: /\.svg$/,
        use: '@nerdsandcompany/webpack-sprite-svg-loader',
        options: {
          spriteFilename: 'assets/img/sprite.svg'
        }
      },
    ],
  },
  plugins: [new WebpackSpriteSvgLoaderState()]
};
```

## Options

TODO: test the options and write docs
npm package: @nerdscoding/eslint-config
Description: coding style guide
Author: nerdscoding
Latest version: 1.3.0

# eslint-config
[![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)

Coding style guide for @nerdscoding.

## Install

```shell
npm install @nerdscoding/eslint-config
```

## Usage

Add below line in your project's `.eslintrc.json`:

```json
{
  "extends": "@nerdscoding"
}
```

## TODO

override the "eslint-plugin-import" rules
npm package: @nerdsofalltrad.es/gdpr-cookie-monster
Description: A minimal EU-GDPR compliant cookie consent banner for websites and shops (5.6K gzipped)
Author: Sebastian Misch - Nerds of all Trades GmbH
Latest version: 0.1.3

# GDPR Cookie Monster

[![Build Status](https://api.travis-ci.org/nerdsofalltrades/gdpr-cookie-monster.svg?branch=master)](https://travis-ci.org/nerdsofalltrades/gdpr-cookie-monster)
[![Greenkeeper badge](https://badges.greenkeeper.io/nerdsofalltrades/gdpr-cookie-monster.svg)](https://greenkeeper.io/)

A minimal EU-GDPR compliant cookie consent banner for websites and shops (5.6K
gzipped).

This is Open-Source Software under MIT license. Use it, change it, copy it,
break it. But don't sell it as your's.

## Try it

```
$ npm i
$ npm start
```

## Use it straight away in your Shop/ Website

Add the following `script` tag to your website, right before the closing
`</body>` tag:

```
<script language="javascript" src="dist/gdpr-cookie-monster.min.js"></script>
```

Reload the page and a banner should appear at the bottom.

## Reopening banner

The banner asks for permission to store cookies once per session for cookie
deniers and once a month for cookie approvers.

To allow the user to change his mind (must have with GDPR-compliance) you must
add a link in at least the footer of your page (every page):

```
<a href="#" id="noat-cookie-consent__setup">Cookie Settings</a>
```

This is the re-open link
🤙 <a href="#" id="noat-cookie-consent__setup">I am the magic link</a>
(does not work on GitHub).

## Customization

### Custom texts

Add the following code right before the `gdpr-cookie-monster` script tag:

```
<script>
if (!window.noat) {
  window.noat = {};
}
window.noat.cookieConsent = {
  text: 'Use your text why you are using Cookies here',
  privacyPolicyText: 'The title of the cookie policy link',
  privacyPolicyUrl: 'The URL to the cookie policy',
  denyText: 'The deny button title',
  allowText: 'The allow button title'
};
</script>
```

### Custom styles

Add the following code right before the `gdpr-cookie-monster` script tag:

```
<script>
if (!window.noat) {
  window.noat = {};
}
window.noat.cookieConsent = {
  // ... keep settings from above here
  useCustomCSS: true
};
</script>
```

If you are a CSS guru now you can style everythi:ng on your own:

* .noat-cookie\_\_consent
* .noat-cookie-consent\_\_banner
* .noat-cookie-consent-banner\_\_text
* .noat-cookie-consent-banner\_\_other-actions
* .noat-cookie-consent-banner-other-actions\_\_privacy-policy
* .noat-cookie-consent-banner-other-actions\_\_deny
* .noat-cookie-consent-banner\_\_allow

## See it live

* https://nerdsofalltrad.es
* https://uhrwerk.berlin

## Legal Notice

WE ARE NO LAWYERS. SINCE THIS IS OPEN-SOURCE SOFTWARE, CUSTOMIZABLE AND
IMPOSSIBLE TO TRACK HOW IT IS USED WE CANNOT GIVE ANY WARRANTY OR PROMISE
THAT THIS PIECE OF SOFTWARE IS FULLY GDPR COMPLIANT.

Please contribute if you find issues.
npm package: @nerdstgamers/electron-forge-publish-google-storage
Description: Electron Forge publisher for Google Cloud Storage with fixes for GitHub Actions
Latest version: 2.0.5

# electron-forge-publisher-google-storage

Google Cloud Storage publisher for Electron Forge.

The publisher will upload the newly compiled application to `<bucket>/<platform>/<application>` path. It will also upload a manifest JSON file with the latest version number and path to the downloadable file under the platform path for easier auto-update logic.

This publisher supports `electron-forge@6`.

## Usage

Example config:

```javascript
{
  name: '@nerdstgamers/electron-forge-publish-google-storage',
  config: {
    projectId: 'my-google-cloud-project',
    bucket: 'bucket-to-store-updates-in',
    public: true,
    storageUrl: 'https://assets.my-project.com',
  },
}
```

`storageUrl` is optional and meant to be used with CNAME'd Google Cloud Storage buckets.

## License

MIT
npm package: @nerdswithkeyboards/flite
Description: minimal coding agent CLI
Author: Floyd Noel III
Latest version: 0.0.2

# flite

One file. No dependencies. Just bash.

## Install

```bash
npm i -g @nerdswithkeyboards/flite
```

## Setup

1. Obtain an OpenRouter API key
2. Set the API key for `flite` by either:
   - `export OPENROUTER_API_KEY=sk-or-...`
   - create a config at `~/.flite/config.json` with your API key: `{"apiKey": "OPENROUTER_API_KEY=sk-or-...", "defaultModel": "openrouter/sonoma-sky-alpha"}`
     Note: `defaultModel` is optional.

## Use

### Interactive Mode

```bash
flite
```

### CLI Mode (Non-interactive)

```bash
# One-shot command
flite "what is 2+2"

# Pipe to file
flite "list files in current directory" > files.txt

# Use in scripts
result=$(flite "get current time")

# Multi-word prompts (no quotes needed)
flite what is the answer to the ultimate question
```

## Features

- **Interactive mode**: Full REPL with confirmation prompts
- **CLI mode**: One-shot execution for scripting
- **Bash execution**: All commands with automatic output capture
- **Smart confirmations**: Yes/No/Always per command (interactive only)
- **Piping friendly**: Clean output for `>`, `|`, and `$()`
- That's it

## Commands (Interactive Mode Only)

- `/help` - Show commands
- `/model` - Current model
- `/cost` - Session cost
- `/clear` - Clear chat
- `/exit` - Quit

## How AI Executes Commands

The AI uses a special format to request command execution:

Single command:

```
fff/execute:ls -la
```

Multiple commands:

````
```fff/execute:
ls -la
cat README.md
```
````

**Interactive mode**: You'll be prompted to confirm each command:

- `y` - Execute once
- `n` - Skip this command
- `a` - Always allow this exact command (this session only)

**CLI mode**: Commands execute automatically without confirmation

## Philosophy

Every line of code is a liability. This is what happens when you actually follow that principle.

No:

- Classes
- Config files
- Dependencies
- Fancy UI
- Caching
- Metrics
- Tests

Just:

- One file
- Direct API calls
- Basic tools
- Simple REPL

## When to use

**Use flite when:**

- You want simplicity
- You need scripting/automation
- You're building pipelines
- You're debugging
- You're learning

## License

MIT - Because even the license should be simple.

```

```