open-index/open-npm huggingface dataset:
npm package: @jeroeno_boy/neuralnetwork
Description: Basic Neural network for machine learning
Author: Jeroeno_Boy
Latest version: 1.0.4

# NeuralNetwork
 Basic Neural network for machine learning

<hr />

This neural network has been based on the one from [The Coding Train](https://www.youtube.com/channel/UCvjgXvBlbQiydffZU7m1_aw)
but improved, this provides propper documentation, explenations and more customizability.
npm package: @jeroenpeeters/picoui
Description: ## CSS classes based on pico
Author: Jeroen Peeters
Latest version: 1.0.0-beta

# 💖 picoui

## CSS classes based on pico

A set of classes based on the semantic UI provided by [pico](https://github.com/picocss/pico) that intends with as minimal extension to pico as possible provide a toolkit for building on top of headless components.

## Installation

### CDN

```html
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@jeroenpeeters/picoui@1/css/ui/picoui.min.css" />
```

### npm

```shell
pnpm add @picocss/pico @jeroenpeeters/picoui
yarn add @picocss/pico @jeroenpeeters/picoui
npm add @picocss/pico @jeroenpeeters/picoui
```

## Usage

As the Installation guides already give away, picoui is not intended to be used in isolation. Please make sure pico itself is installed as well.

```HTML
<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="color-scheme" content="light dark" />
    <link rel="stylesheet" href="css/pico.min.css">
    <link rel="stylesheet" href="css/picoui.min.css">
    <title>Hello world!</title>
  </head>
  <body>
    <main class="container">
      <div class="card">
        <h1>Hello world!</h1>
      </div>
    </main>
  </body>
</html>
```
npm package: @jeroenpeeters/read-per-minute
Description: Class to parse a string and return an estimated reading time based on a lang rate
Author: Jeroen Peeters
Latest version: 3.0.0

# @jeroenpeeters/read-per-minute

Class to parse a long text and return an estimated reading time based on a lang rate.

![npm](https://img.shields.io/npm/v/@jeroenpeeters/read-per-minute?style=for-the-badge)
[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/untemps/read-per-minute/index.yml?style=for-the-badge)](https://github.com/untemps/read-per-minute/actions)
![Codecov](https://img.shields.io/codecov/c/github/untemps/read-per-minute?style=for-the-badge)

## Installation

```bash
yarn add @jeroenpeeters/read-per-minute
```

## Usage

Import `ReadPerMinute`:

```javascript
import { ReadPerMinute } from '@jeroenpeeters/read-per-minute'
```

Create an instance of `ReadPerMinute`:

```javascript
const rpm = new ReadPerMinute()
```

Call the `parse` method with a string and a lang (see [Override the value for a one-time parsing](#override-the-value-for-a-one-time-parsing) for an alternative usage):

```javascript
rpm.parse('Long text', 'en')
```

The `parse` function returns an object with the following properties:

| Property | Description
| -------- | ------------------------------------------------- |
| time     | The estimated reading time in minutes             |
| words    | The number of words in the text                   |
| rate     | The rate value used to calculate the reading time |

## Default Rates

Default rate values come from ["How many words do we read per minute? A review and meta-analysis of reading rate"](https://osf.io/4nv9f/) by Marc Brysbaert - Department of Experimental Psychology Ghent University

| Lang    | Rate |
| ------- | ---- |
| default | 200  |
| ar      | 181  |
| zh      | 260  |
| nl      | 228  |
| en      | 236  |
| fi      | 195  |
| fr      | 214  |
| de      | 260  |
| he      | 224  |
| it      | 285  |
| ko      | 226  |
| es      | 278  |
| sv      | 218  |

If the lang is not listed or is undefined, the default value will be used instead.

## Custom Rates

### Override all the values

You can specify an entire custom rates object in the constructor of an instance:

```javascript
const customRates = {
	default: 220,
	ar: 191,
	zh: 255,
	nl: 234,
	en: 244,
}
const rpm = new ReadPerMinute(customRates)
```

**NOTE**: Set a `default` property in the object if you want the parsing to fallback to a specific value.  
Otherwise, the static value will be used (`ReadPerMinute.rates.default`).

### Override the value for a one-time parsing

Simply pass the desired custom reading rate in words per minute instead of a language code:

```javascript
// For very fast readers: 425 words per minute.
rpm.parse('Long text', 425)
```

**NOTE**: The custom reading rate must be greater than zero or the default value will be used.
npm package: @jeroenpeeters/tsconfig
Description: tsconfig file for @jeroenpeeters projects
Author: Jeroen Peeters
Latest version: 1.2.0

<img src="https://upload.wikimedia.org/wikipedia/commons/4/4c/Typescript_logo_2020.svg" style="width: 200px; display: block; margin: auto;"/>

# <p style="text-align: center;">tsconfig</p>

This is the tsconfig file shared by any project created for @jeroenpeeters.

## Usage

In a `tsconfig.json` file, after installing `@jeroenpeeters/tsconfig` as a package, use the `extends` field to define this configuration:
```json
{
  "extends": "@jeroenpeeters/tsconfig",
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "dist"
  }
}
```
npm package: @jeroenpol/eslint-config
Description: ESLint config made for Angular, configured by Polware
Author: Jeroen Pol
Latest version: 2.1.4

# @jeroenpol/eslint-config

Shareable ESLint flat config for TypeScript/JavaScript projects.

## ESLint standard this package follows

- Uses the ESLint flat config format (`eslint.config.*`).
- Designed as a shareable config package imported into your project config.
- Keeps `eslint` as `peerDependencies`.
- Ships required plugins as package `dependencies` for easier consumer setup.

## Install

```bash
npm i -D eslint typescript @jeroenpol/eslint-config
```

## Use in another project

Create `eslint.config.mjs` in your project root:

```js
import config from '@jeroenpol/eslint-config';

export default config;
```

## Override rules in your project

```js
import config from '@jeroenpol/eslint-config';

export default [
	...config,
	{
		files: ['**/*.ts'],
		rules: {
			'@typescript-eslint/explicit-function-return-type': 'off',
		},
	},
];
```

## Use only part of the config

```js
import bestPractices from '@jeroenpol/eslint-config/best-practices';
import stylistic from '@jeroenpol/eslint-config/stylistic';

export default [
	...bestPractices,
	...stylistic,
];
```

## Validate locally (smoke test)

Run this in this repository to verify the config can be consumed through its package export:

```bash
npm run lint:smoke
```
npm package: @jerojugon/dragon-ball-1942-game
Description: Recreación del clásico juego 1942 en React
Author: Tu Nombre
Latest version: 1.0.0

# React + Vite

This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.

Currently, two official plugins are available:

- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh

## Expanding the ESLint configuration

If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project.
npm package: @jerome1337/ccc
Description: Reusable Claude Code rules, CLAUDE.md, and AGENTS.md
Author: Jérôme Pogeant
Latest version: 1.0.0

# ccc

Reusable Claude Code Config, rules, skills, CLAUDE.md, RTK.md and AGENTS.md for your projects.

## Contents

```
claude-rules/
├── CLAUDE.md       # Claude Code project instructions (security, RTK reference)
├── RTK.md          # Rust Token Killer instructions (token-optimized CLI proxy)
├── AGENTS.md       # General AI agent instructions (conventions, structure, workflow)
├── rules/          # Claude Code rules (auto-loaded by .claude/rules/)
│   ├── architecture.md   # Monorepo structure, stack, import conventions
│   ├── code-style.md     # Naming, exports, Biome, comments, reusability
│   ├── commands.md       # Dev commands (build, lint, db, turbo)
│   └── patterns.md       # Frontend patterns, auth routes, AI integration
└── README.md
```

## Usage

```bash
npx @jerome1337/ccc init
```

This copies the following into your project:

| Source | Destination |
|---|---|
| `CLAUDE.md` | `./CLAUDE.md` |
| `AGENTS.md` | `./AGENTS.md` |
| `RTK.md` | `./RTK.md` |
| `rules/*.md` | `./.claude/rules/*.md` |

Existing files are skipped by default. Use `--force` to overwrite:

```bash
npx @jerome1337/ccc init --force
```

## How It Works

- **CLAUDE.md** — Loaded automatically by Claude Code at the project root. Contains security guidelines and references RTK.md.
- **AGENTS.md** — Read by AI coding agents (Claude, Cursor, Copilot, etc.) for project conventions.
- **rules/** — Files in `.claude/rules/` are automatically loaded by Claude Code based on their `alwaysApply` / `globs` frontmatter. All rules here use `alwaysApply: true`.

## Customization

These rules are tailored for a Next.js 16 + Turborepo + Bun + Drizzle + Biome + shadcn/ui stack. To adapt for a different project:

1. Update `rules/architecture.md` with your project structure
2. Update `rules/commands.md` with your dev commands
3. Update `rules/patterns.md` with your architecture patterns
4. Adjust `rules/code-style.md` naming conventions if different
npm package: @jerome1337/unplugin-swc
Description: SWC plugin for Vite and Rollup
Author: EGOIST
Latest version: 1.0.0

# unplugin-swc

[![npm version](https://badgen.net/npm/v/unplugin-swc)](https://npm.im/unplugin-swc)

> [SWC](https://swc.rs/) plugin for Vite and Rollup.

## Install

```bash
npm i unplugin-swc @swc/core -D
```

## Usage

Vite or Rollup:

```ts
import swc from 'unplugin-swc'

export default {
  plugins: [
    // Vite plugin
    swc.vite(),
    // Rollup plugin
    swc.rollup(),
  ],
}
```

### `tsconfig.json`

Following SWC options are inferred from `tsconfig.json`:

- `jsc.parser.syntax`: based on file extension
- `jsc.parser.jsx`, `parser.tsx`: `compilerOptions.jsx`
- `jsc.parser.decorators`: `compilerOptions.experimentalDecorators`
- `jsc.transform.react.pragma`: `compilerOptions.jsxFactory`
- `jsc.transform.react.pragmaFrag`: `compilerOptions.jsxFragmentFactory`
- `jsc.transform.react.importSource`: `compilerOptions.jsxImportSource`
- `jsc.transform.legacyDecorator`: `compilerOptions.experimentalDecorators`
- `jsc.transform.decoratorMetadata`: `compilerOptions.emitDecoratorMetadata`
- `jsc.keepClassNames`: when decorator is enabled, because original class name is required by libs like `type-graphql` to generate correct graphql type

If you wish to disable this behavior and use `.swcrc` to control above `jsc` options, you can use `tsconfigFile` option:

```ts
// Or swc.rollup
swc.vite({
  tsconfigFile: false,
})

// It's also possible to use a custom tsconfig file instead of tsconfig.json
swc.vite({
  tsconfigFile: './tsconfig.build.json',
})
```

### Minification

Use the `minify: true` option, it only works for Rollup as Vite uses esbuild to minify the code and cannot be changed.

To have advanced control over the minification process, [use `jsc.minify` option in `.swcrc`](https://swc.rs/docs/configuration/minification).

### Vite

`esbuild` will be automatically disabled if you use this plugin.

## Options

This plugin accepts all `@swc/core` options, except for `jsc` which should be configured in `.swcrc` instead, and some extra options that are specific to this plugin:

### `options.tsconfigFile`

- Type: `boolean`, `string`
- Default: `tsconfig.json`

Disable the use of tsconfig file or specify a custom one.

### `options.include`

- Type: `RegExp`
- Default: `/\.[jt]sx?$/`

Files to include in the transpilation process.

### `options.exclude`

- Type: `RegExp`
- Default: `/node_modules/`

Files to exclude in the transpilation process.

### `options.jsc`

- Type: `object`

Custom [jsc](https://swc.rs/docs/configuration/compilation) options to merge with the default one.

## License

MIT &copy; [EGOIST](https://github.com/sponsors/egoist)
npm package: @jerome778/perf-monitor-sdk
Description: A performance monitoring SDK for web applications
Author: jerome778
Latest version: 2.2.0

# Performance Monitor SDK

A lightweight SDK for monitoring HTTP request performance in web applications.

## Features

- Monitor fetch and XMLHttpRequest performance
- Detect blocked requests
- Batch reporting
- TypeScript support
- Zero dependencies
- Easy integration

## Installation

```bash
npm install jerome778-perf-monitor-sdk
# or
yarn add jerome778-perf-monitor-sdk
# or
pnpm add jerome778-perf-monitor-sdk
```

## Usage

```typescript
import PerfMonitor from 'jerome778-perf-monitor-sdk';

const monitor = new PerfMonitor({
  serverUrl: 'http://your-server-url',
  appId: 'your-app-id',
  // Optional configuration
  batchSize: 10,        // Number of records to batch before sending
  flushInterval: 5000   // Flush interval in milliseconds
});
```

## Configuration

| Option | Type | Required | Default | Description |
|--------|------|----------|---------|-------------|
| serverUrl | string | Yes | - | The URL of your performance monitoring server |
| appId | string | Yes | - | Your application ID |
| batchSize | number | No | 10 | Number of records to batch before sending |
| flushInterval | number | No | 5000 | Flush interval in milliseconds |

## Data Format

The SDK collects the following data for each request:

```typescript
interface PerformanceData {
  appId: string;        // Your application ID
  url: string;         // Request URL
  method: string;      // HTTP method
  startTime: number;   // Request start timestamp
  duration: number;    // Request duration in milliseconds
  status: number;      // HTTP status code
  isBlocked: boolean;  // Whether the request was blocked
  blockDuration?: number; // Duration of blocking if blocked
  timestamp: number;   // Record timestamp
}
```

## API

### Constructor

```typescript
new PerfMonitor(config: PerfMonitorConfig)
```

### Methods

#### destroy()

Cleans up the monitor and sends any remaining data.

```typescript
monitor.destroy();
```

## Browser Support

- Chrome
- Firefox
- Safari
- Edge
- IE11+ (with appropriate polyfills)

## License

MIT
npm package: @jeromefitz/codestyle
Description: ESLint + TypeScript + Prettier + Lint Staged
Author: Jerome Fitzgerald
Latest version: 8.0.28

# `@jeromefitz/codestyle`

## Overview

- 🚨️ `eslint` + `@typescript-eslint`
- 🎭️ `lint-staged`
- 📐️ `prettier` + `pretty-quick`
- 🆎️ TypeScript Config

## Installation

```bash
yarn add @jeromefitz/codestyle --dev
```

### Husky

I tend to use this with [`husky`](https://github.com/typicode/husky) (w/ [`is-ci`](https://github.com/watson/is-ci) [`pinst`](https://github.com/typicode/pinst)), feel free to look at how this monorepo has it set up to follow / alter how you would like to implement.

- `./husky`

## Overrides

### ESLint + TypeScript

`./.eslintrc.cjs`

```js
const config = require('@jeromefitz/codestyle/.eslintrc.next.cjs')

module.exports = {
  ...config,
  parser: '@babel/eslint-parser',
}
```

📝️ **Note:** Depending on if you are lifting packages in your repo, you may need to explicitly pass the `parser`.

### lint-staged

`./lint-staged.config.mjs`

```js
import config from '@jeromefitz/codestyle/lint-staged.config.js'

export default config
```

### Prettier

`./.prettierrc.cjs`

```js
const config = require('@jeromefitz/codestyle/.prettierrc.cjs')

module.exports = {
  ...config,
}
```

### TypeScript

`./tsconfig.json`

```json
{
  "extends": "@jeromefitz/codestyle/tsconfig.node.json"
}
```

Currently there are the following to extend:

- `tsconfig.jest.json`
- `tsconfig.node.json`
- `tsconfig.react-native.json`
- `tsconfig.react.json`

## Scripts

Some packages have you call directly like `yarn codestyle` to run everything, however, I tend to prefer the opt-in / override approach.

If you want to add the following to your `package.json` scripts, these are the current recommendations:

```json
{
  "scripts": {
    "lint:eslint": "eslint ./src --ext cjs,js,jsx,mjs,ts,tsx --max-warnings=0",
    "lint:prettier": "prettier \"./src/**/*.{cjs,js,jsx,mjs,ts,tsx,json,md,mdx,css,html,yml,yaml,scss}\" --ignore-unknown --loglevel warn",
    "lint:typescript": "tsc --noEmit --declaration",
    "lint": "yarn lint:prettier --check && yarn lint:eslint && yarn lint:typescript",
    "lint:fix": "yarn lint:eslint --fix && yarn lint:prettier --write"
  }
}
```

Then with `lint-staged` you can just run `yarn lint` or pass `yarn lint --fix` (I believe `yarn lint:fix` may be not needed).
npm package: @jeromefitz/conventional-gitmoji
Description: Helper package for dual gitmoji / conventional commits
Author: Jerome Fitzgerald
Latest version: 5.0.0

# @jeromefitz/conventional-gitmoji

1. 🌉️ A bridge between `gitmoji` and `conventional-commits` configured for `semantic-release`.
2. 🛠️ A `conventional-changelog` plugin for `semantic-release`.

## Usage

```sh
yarn install @jeromefitz/conventional-gitmoji
```

```ts
import { releaseRules, typeSpecs, types } from '@jeromefitz/conventional-gitmoji`
```

- `releaseRules`: informs `@semantic-release/commit-analyzer`
- `typeSpecs`: informs `@jeromefitz/release-notes-generator` (via `writerOpts`)
  - `@hack`: This informs three different ways to ensure we catch the change from `gitmoji` to `conventional`
- `types`: informs `@jeromefitz/git-cz` for the `gitmoji` theme.

### Commit Analyzer

```sh
  [
    '@semantic-release/commit-analyzer',
    {
      config: '@jeromefitz/conventional-gitmoji',
      releaseRules,
    },
  ]
```

### Release Notes Generator

```sh
  [
    '@jeromefitz/release-notes-generator',
    {
      config: '@jeromefitz/conventional-gitmoji',
    },
  ]
```

## Overview

### 😄️ gitmoji

This maps `gitmoji` to an equivalent `conventional-commit`.

**⚗️ Example(s):**

- ✨️ => `feat`
- 🐛️ => `fix`
- 🚑️ => `hotfix`

### 📝️ conventional-commits

This expands on the original `conventional-commits` nomenclature to account for the multitude coming from `gitmoji`

**⚗️ Example(s):**

- ⚗️ (gitmoji)
  - `alembic` (emoji code)
  - `experiement` (conventional)
- 🤡️ (gitmoji)
  - `clown-face` (emoji code)
  - `mock` (conventional)
- 🚨️ (gitmoji)
  - `rotating-light` (emoji code)
  - `lint` (conventional)

### 🚀️ semantic-release

Adds `semver` to each type to inform `@jeromefitz/semantic` how to handle each commit type (and if it is a convential branch type).

**⚗️ Example(s):**

```json
{
  "experiment": {
    "branch": false,
    "code": ":alembic:",
    "commit": "experiment",
    "description": "Perform experiments.",
    "emoji": "⚗️",
    "entity": "&#128248;",
    "name": "alembic",
    "semver": "patch"
  },
  "feat": {
    "branch": "feature",
    "code": ":sparkles:",
    "commit": "feat",
    "description": "Introduce new features.",
    "emoji": "✨",
    "entity": "&#x2728;",
    "name": "sparkles",
    "semver": "minor"
  },
  "log-add": {
    "branch": false,
    "code": ":loud_sound:",
    "commit": "log-add",
    "description": "Add or update logs.",
    "emoji": "🔊",
    "entity": "&#128266;",
    "name": "loud-sound",
    "semver": null
  }
}
```

**📝️ Please Note:** The values `major|minor|patch` are moving to `breaking|feature|fix`
npm package: @jeromefitz/design-system
Description: Design System for JeromeFitzgerald.com (Radix UI)
Author: Jerome Fitzgerald
Latest version: 4.2.3

# `@jeromefitz/design-system`

Design System for [`jeromefitzgerald.com`](https://jeromefitzgerald.com).

## Overview

```bash
pnpm install @jeromefitz/design-system

npm install @jeromefitz/design-system

yarn install @jeromefitz/design-system
```

Everything is lifted to the top-level. Probably need to look at tree-shaking a bit because of it. 😆

### Dependencies

Please install `peerDependencies` if you are using components that use:

- `@heroicons/react`
  - `Icon`
- `@radix-ui/react-icons`
  - `Icon`
- `cmdk`
  - `CommandMenu`
- `framer-motion`:
  - `CommandMenu`
  - `NavigationMenu`
  - `usePrefersReducedMotion`
  - `useRefScrollProgress`
- `next`
  - `CardSpotify`
  - `EmojiParser`
  - `HeroImage`

At the moment the `theme` system can only be overwritten, not "instead of" so should probably move this to `dependencies`:

- `@radix-ui/colors`

## Architecture

In the process of building out a `Storybook` to assist with seeing the Components visually (and crafting improved Documentation).

- `./components`: You guessed it
- `./custom`: Not ready for primetime Components
- `./hooks`: You guessed it again
- `./lib`: Theme & Tokens for Design System via Stitches
  - See `Configuration`

## Configuration

TODO

## Notion

If you are using `Notion` check out [`next-notion`](https://github.com/JeromeFitz/websites/tree/main/packages/next-notion) in [`@jeromefitz/websites`](https://github.com/JeromeFitz/websites) as that cannot be ported just yet to this monorepo.

However, it has the `Notion` components that you can use with (or without) this Design System. And in generally see how you can do that.

## Issues

- Very closely tied to `next` for some Components so please work on making this more agnostic.
- Breaking change in `3.6.0` if you use `kbar`. Was supposed to get picked up with the prerelease but did not.

## Props

- [`radix-ui/design-system`](https://github.com/radix-ui/design-system)
- [`stitches`](https://github.com/stitchesjs/stitches)
npm package: @jeromefitz/eslint-config
Description: ESLint Configuration
Author: Jerome Fitzgerald
Latest version: 5.0.4

# @jeromefitz/eslint-config

Custom `eslint-config` setup that can be extended and incorporates:

- `@babel/eslint-parser`
- `@eslint/*`
- `eslint`
- `eslint-config-next`
- `eslint-config-prettier`
- `eslint-plugin-import-x`
- `eslint-plugin-jest`
- `eslint-plugin-jsx-a11y`
- `eslint-plugin-react`
- `eslint-plugin-react-hooks`
- `eslint-plugin-storybook`
- `prettier`
- `typescript-eslint`

## Breakdown

- `./index` (base)
- `./typescript`
- `./react` (+ typescript)
  - `./jest` (+ react)
  - `./next` (+ react)
    - `./tailwind` (+ next)

```sh
pnpm add @jeromefitz/eslint-config --save-dev
```

### Base

```ts
import { configBase } from '@jeromefitz/eslint-config/base.js'

// ...

const config = [...configBase]
```

### Jest

```js
import { configJest } from '@jeromefitz/eslint-config/jest.js'

// ...

const config = [...configJest]
```

### Next

```js
import { configNext } from '@jeromefitz/eslint-config/next.js'

// ...

const config = [...configNext]
```

### React

```js
import { configReact } from '@jeromefitz/eslint-config/react.js'

// ...

const config = [...configReact]
```

### Tailwind

```js
import { configTailwind } from '@jeromefitz/eslint-config/tailwind.js'

// ...

const config = [...configTailwind]
```

### Typescript

```js
import { configTypescript } from '@jeromefitz/eslint-config/typescript.js'

// ...

const config = [...configTypescript]
```
npm package: @jeromefitz/hyper-statusline
Description: Status Line Plugin for Hyper
Author: Henrik Dahlheim
Latest version: 1.7.7-canary.1

# hyper-statusline [![hyper](https://img.shields.io/badge/Hyper-v1.3.3-brightgreen.svg)](https://github.com/zeit/hyper/releases/tag/1.3.3) [![npm](https://img.shields.io/npm/v/hyper-statusline.svg?maxAge=86400?style=flat-square)](https://www.npmjs.com/package/hyper-statusline) [![npm](https://img.shields.io/npm/dt/hyper-statusline.svg?maxAge=86400?style=flat-square)](https://www.npmjs.com/package/hyper-statusline)

> Status Line Plugin for [Hyper](https://hyper.is). Shows clickable & useful information. Matches any theme.

![hyper-statusline](https://cloud.githubusercontent.com/assets/1430576/21891665/14d29070-d8d4-11e6-9e98-b12ed28be93a.png)


## Install

Add following to your `~/.hyper.js` config.

```javascript
module.exports = {
  ...
  plugins: ['hyper-statusline']
  ...
}
```


## Config

Add following to `~/.hyper.js`

### Change Git Dirty Color
Expected value is `CSS color`

```javascript
module.exports = {
  config: {
    ...
      hyperStatusLine: {
        dirtyColor: 'salmon',
      }
    ...
  }
}
```

### Change Git Ahead Color
Expected value is `CSS color`

```javascript
module.exports = {
  config: {
    ...
      hyperStatusLine: {
        aheadColor: 'ivory',
      }
    ...
  }
}
```

### Disable Footer Transparency
Default value is set to `true`

```javascript
module.exports = {
  config: {
    ...
      hyperStatusLine: {
        footerTransparent: false,
      }
    ...
  }
}
```


## Theme

* [hyper-chesterish](https://github.com/henrikdahl/hyper-chesterish)


## License

MIT © Henrik
npm package: @jeromefitz/lint-staged
Description: Lint Staged Configuration
Author: Jerome Fitzgerald
Latest version: 3.0.3

# @jeromefitz/lint-staged

Custom `lint-staged` setup that can be extended and incorporates:

- `lint-staged`

Since `node@22.6.0` you can call [`.ts` directly now](https://github.com/lint-staged/lint-staged?tab=readme-ov-file#typescript). Until `node@24` you will want to set the following `NODE_OPTIONS`:

```bash
▲ export NODE_OPTIONS="--disable-warning=ExperimentalWarning"
▲ export NODE_OPTIONS="--experimental-strip-types"
```

With `pnpm` you can do that via the `pnpm-workspace.yaml`:

```yaml
nodeOptions: '--experimental-strip-types --disable-warning=ExperimentalWarning'
```

## lint-staged.config

```ts
import config from '@jeromefitz/lint-staged'

export default config
```

## What It Do

Pre-commit check against files for:

- `eslint`
- `prettier`

And re-add if any updates were applied on auto-fix.

## Git Hooks

Since `lint-staged@12` passing the direct _built_ configuration file locally to this monorepo has helped. But you _should_ be able to call .
npm package: @jeromefitz/prettier-config
Description: Prettier Configuration
Author: Jerome Fitzgerald
Latest version: 3.0.1

# @jeromefitz/prettier-config

> [!INFO]
>
> Moving to [`biome`](https://biomejs.dev).

This package is now a wrapper for `prettier-plugin-pkg` basically.

## Migration

`prettier-plugin-tailwindcss` => [useSortedClasses](https://biomejs.dev/linter/rules/use-sorted-classes/#description)

`.prettierignore`:

```bash
# migrating to biome

**!package.json
!**/package.json

```

## Usage

```ts
import config from '@jeromefitz/prettier-config'

export default config
```
npm package: @jeromefitz/release-notes-generator
Description: Custom Release Note Generator for Semantic Release.
Author: Jerome Fitzgerald
Latest version: 4.0.0

# @jeromefitz/release-notes-generator

Heavily customized fork (_cannot_ stress that enough) of [`conventional-changelog`](https://github.com/conventional-changelog/conventional-changelog) and [`release-notes-generator`](https://github.com/semantic-release/release-notes-generator).

This moves away from Handlebars into TypeScript and is currently hyper-specific to GitHub only. :octocat:

May move to `remark` once `semantic-release` is ESM.

```sh
[
  '@jeromefitz/release-notes-generator',
  {
    config: '@jeromefitz/conventional-gitmoji',
  },
]
```

## Installation

Also add the `changelog-config` customization:

```sh
pnpm add @jeromefitz/release-notes-generator @jeromefitz/conventional-gitmoji --save-dev
```
npm package: @jeromefitz/semantic
Description: Semantic Versioning, Conventional Commits with CI/CD for GitHub Actions.
Author: Jerome Fitzgerald
Latest version: 12.0.2

# @jeromefitz/semantic

## Overview

<!--
- ✨️ Conventional Commit CLI ([`@jeromefitz/git-cz`](https://github.com/JeromeFitz/git-cz))
- 🎋️ Branch Name Generator ([`@jeromefitz/git-cz`](https://github.com/JeromeFitz/git-cz))
-->

- 🤖️ Semantic Versioning ([`semantic-release`](https://github.com/semantic-release/semantic-release))

## Installation

```bash
# pnpm
pnpm add @jeromefitz/semantic --save-dev

```

<!--
```bash

# npm
npm install @jeromefitz/semantic --save-dev

# yarn
yarn add @jeromefitz/semantic --dev
```

This extends [`@jeromefitz/git-cz`](../git-cz).
-->

### Semantic Release

`./release.config.js`

Custom values:

- `enableGit?: boolean`
- `enableGithub?: boolean`
- `enableNpm?: boolean`
- `enableReleaseNotes?: boolean`
- `enableReleaseNotesCustom?: boolean`

And then the rest of the traditional configuration values for `semantic-release` and `conventional-changelog`.

#### Example

You can look at this monorepo as it re-uses a lot of code ethroughout via `release.config`

```js
const { getConfig } = require('@jeromefitz/semantic')

const { name } = require('./package.json')

const configPassed = {
  tagFormat: `${name}@\${version}`,
}

const config = getConfig(configPassed)

module.exports = config
```

## Scripts

### Branch Names

Add a script in `package.json`:

```json
  "scripts": {
    "branch": "git-cz --branch --allow-empty"
  }
```

Running `yarn branch` will then trigger the CLI to create branch for you based on

### CI/CD

Add a script in `package.json` as this extends [`semantic-release`](https://github.com/semantic-release/semantic-release):

```json
  "scripts": {
    "semantic-release": "semantic-release"
  }
```

Be sure to allow for Git + GitHub access so [`semantic-release`](https://github.com/semantic-release/semantic-release) can create commits and more actions on your repo.

Configured in this repo via `./github/workflows/semantic-release.yml`.
npm package: @jeromefitz/semantic-release-plugin-decorators
Description: [![Build Status](https://travis-ci.org/pmowrer/semantic-release-plugin-decorators.svg?branch=master)](https://travis-ci.org/pmowrer/semantic-release-plugin-decorators) [![npm](https://img.shields.io/npm/v/semantic-release-plugin-decorators.svg)](https://w
Latest version: 3.1.0

# semantic-release-plugin-decorators

[![Build Status](https://travis-ci.org/pmowrer/semantic-release-plugin-decorators.svg?branch=master)](https://travis-ci.org/pmowrer/semantic-release-plugin-decorators) [![npm](https://img.shields.io/npm/v/semantic-release-plugin-decorators.svg)](https://www.npmjs.com/package/semantic-release-plugin-decorators) [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)


This library provides utility functions to inject/extend plugins passed to `semantic-release`, allowing augmentation of any arbitrary plugin configuration in a way that the plugin system itself doesn't allow.
npm package: @jeromefitz/spotify
Description: Spotify Wrapper for: Now Playing, Top Artists, & Top Tracks
Author: Jerome Fitzgerald
Latest version: 4.2.6

# `@jeromefitz/spotify`

Custom API for [`jeromefitzgerald.com/music`](https://jeromefitzgerald.com/music).

- `nowPlaying`: Current Track
- `recentlyPlayed`: Recently Played
- `topArtists`: Top Artists
- `topTracks`: Top Tracks

## 🛠️ Usage

Must provide:

```ts
const {
  SPOTIFY_CLIENT_ID: clientId,
  SPOTIFY_CLIENT_SECRET: clientSecret,
  SPOTIFY_REFRESH_TOKEN: refreshToken,
} = process.env

const credentials = {
  clientId,
  clientSecret,
  refreshToken,
}

const spotify: ClientProps = new Client({ ...credentials })
```

This will get the Authorization Token for the Bearer and consistently apply for API calls on your behalf.

📝️ **Note:** Need to verify w. `2.0.1` release what happens if the token expires 😅️ (before we were getting the token on every request)

Following functions are exposed via `spotify.get.*`:

- `nowPlaying`: Current Track
- `recentlyPlayed`: Recently Played
- `topArtists`: Top Artists
- `topTracks`: Top Tracks

**Example:**

```tsx
spotify.get.topArtists({
  limit,
  offset,
  time_range,
  withImages: true,
})
```

## ✨️ Customizations

### 🧑‍🎤️ `artist`

For a `track` we create an `artist` key that maps across all available `artists[artist.name]`.

### 🖼️ `withImages`

If this is passed we dynamically use `plaiceholder` to add an `image` key to:

- `nowPlaying`: `album`
- `recentlyPlayed`: `album`
- `topArtists`: `artist`
- `topTracks`: `album`

Only call this via an `API` call.
npm package: @jeromefitz/tsconfig
Description: TypeScript Configuration
Author: Jerome Fitzgerald
Latest version: 3.0.0

# @jeromefitz/tsconfig

Custom `tsconfig` setup that can be extended.

## Breakdown

All currently `cjs` format:

- `./base`
  - `./jest`
  - `./next`
  - `./node14`
  - `./react`
  - `./react-library`
  - `./react-native`

```sh
yarn add @jeromefitz/tsconfig --dev
```

### Example

```json
{
  // ...
  "extends": "@jeromefitz/tsconfig/node14.json"
  // ...
}
```
npm package: @jeromejoh/credit-footer
Description: A customizable web component that provides an animated footer with social media links. Perfect for demo projects to showcase author information.
Author: Jerome Joh
Latest version: 1.0.1

# Reusable Credit Footer

A customizable web component that provides an animated footer with social media links. Perfect for demo projects to showcase author information.

## Features

- Animated sector-style footer reveal
- Customizable button color
- Social media links with hover effects
- Built as a web component for easy reuse
- No dependencies

### Attributes

- `button-color`: Sets the color of the toggle button (optional, defaults to black)

## Usage

1. Copy `index.js` to your project
2. Add the component to your HTML:

```html
<credit-footer button-color="#000000"></credit-footer>
```

## Example

```html
<!DOCTYPE html>
<html>
  <head>
    <title>My Project</title>
  </head>
  <body>
    <!-- Your content -->
    <script src="index.js"></script>
    <credit-footer></credit-footer>
  </body>
</html>
```
npm package: @jerone/assert-includes
Description: Assert string includes
Author: Jeroen van Warmerdam
Latest version: 0.1.1

# assert-includes

> Assert string includes

Assert that an value is included in a string.

## Install

Most likely you want to use this package as development dependency.

```sh
npm install @jerone/assert-includes --save-dev
```

Or with Yarn:
```sh
yarn install @jerone/assert-includes --dev
```

## Usage

```js
import assertIncludes from '@jerone/assert-includes';

test("value contains string", () => {
  assertIncludes("abc", "a");
});
```

If the test fails, it will throw an `AssertionError`,
which can be picked up by your testing library.

For example with Jest, it will produce the following log:

![Jest log](https://raw.githubusercontent.com/jerone/assert-includes/master/docs/failing-test.png)

## API

### assertIncludes(value, includes)

Returns `true` if valid or throws `AssertionError` if invalid.

#### value

Type: `string`

Value expected to contain the included text.

#### includes

Type: `string`

The text that is part of the `value`.
npm package: @jerridan/convert-keys
Description: A tool for converting object keys between camel case, snake case and kebab case.
Author: Jerridan Quiring
Latest version: 1.1.0

# ConvertKeys

`ConvertKeys` is a tool for converting object keys between camel case, snake case and kebab case.

### Key Features:

- Accepts objects and arrays
- Handles deeply-nested keys
- Supports overrides for specific key conversions

## Installation

Install `ConvertKeys` via npm or yarn:

```bash
npm install @jerridan/convert-keys
# or
yarn add @jerridan/convert-keys
```

## Usage

ConvertKeys exports three functions:

- `toSnakeCase` -> for converting keys to snake case
- `toCamelCase` -> for converting keys to camel case
- `toKebabCase` -> for converting keys to kebab case

Each function accepts two arguments:

1. `input` -> the object or array to convert
2. `overrides` -> an optional object containing overrides for specific key conversions

### Examples

**Converting an object**

```javascript
toSnakeCase({ objectKey: "value" });
// Output: { object_key: "value" }
```

**Converting a complex nested object**

```javascript
toCamelCase({
  object_key: [
    [{ nested_key: 1 }, { nested_key: 2 }],
    [{ nested_key: 3 }, { nested_key: 4 }],
  ],
});
// Output:
// {
//   objectKey: [
//     [{ nestedKey: 1 }, { nestedKey: 2 }],
//     [{ nestedKey: 3 }, { nestedKey: 4 }],
//   ],
// }
```

**Using overrides**

```javascript
const overrides = { nestedKey: "overridden-key" };
toKebabCase({ objectKey: { nestedKey: "value" } }, overrides);
// Output:
// { "object-key": { "overridden-key": "value" } }
```

## Contributing

Contributions to this project are welcome. Please follow these general guidelines:

- **Reporting Bugs**: Submit an issue via GitHub with a clear title and description, steps to reproduce, expected behavior, and the actual behavior observed.
- **Pull Requests**: Pull requests should be well-tested, readable, and maintain the integrity of the project. If your pull request is aimed at fixing a bug, link the relevant issue in the description. Additionally, please update the CHANGELOG.md file with a summary of your changes.
- **Feature Requests**: Feel free to open an issue to discuss new feature ideas before starting implementation.

## License

This project is released under the MIT License. For more details, see the LICENSE file in the repository.
npm package: @jerryan/pi-task-tree
Description: Nested task list with completed tracking and focus mode for pi
Latest version: 0.1.0

# pi-task-tree

Nested task list with completed tracking and focus mode for pi.

> ⚠️ **Early Stage Development**: This extension is in active development. Expect bugs and breaking changes. Specifically, **data loss of created plans may occur** as the internal format evolves. Use with caution and back up important plans.

```bash
pi install npm:@jerryan/pi-task-tree
```

Or add to `~/.pi/agent/settings.json`:

```json
{
  "packages": ["npm:@jerryan/pi-task-tree"]
}
```

## Features

- **Hierarchical tasks**: Break down work into parent tasks and subtasks
- **Completed tracking**: Mark tasks complete with `[✅]` display
- **Focus mode**: Shows the working path - first incomplete at each level
- **Insert mode**: Add tasks at specific positions
- **Soft delete**: Tasks can be deleted without losing context
- **Persistence**: State survives restarts

## Agent Tools

The agent can use these tools to manage tasks:

- `task_create_root` - Create a new task list
- `task_extend_root` - Add tasks to root level
- `task_breakdown` - Add subtasks under existing tasks
- `task_update` - Update task title/description
- `task_close` - Mark tasks complete or delete them
- `task_list` - Show tasks in focus or full mode
- `task_get` - Get details about a specific task

## Human Commands

You can also manage tasks directly with slash commands:

| Command | Description |
|---------|-------------|
| `/plans` | Show current plan (focus mode) |
| `/plans list` | List all available plans |
| `/plans switch <id>` | Switch to a different plan |
| `/plans delete <id>` | Delete a plan (with confirmation) |
| `/plans help` | Show command help |

## Development

```bash
# Install dependencies
npm install

# Run tests
npm test

# Watch mode
npm run test:watch

# Build
npm run build

# Type check
npm run lint
```

## License

MIT
npm package: @jerryc/mini-logger
Description: A mini logger with four level
Author: JerryC
Latest version: 0.0.4

# mini-logger

[![CircleCI](https://circleci.com/gh/JerryC8080/mini-logger/tree/master.svg?style=svg)](https://circleci.com/gh/JerryC8080/mini-logger/tree/master)

[![NPM Version](https://img.shields.io/npm/v/@jerryc/mini-logger.svg)](https://www.npmjs.com/package/@jerryc/mini-logger) [![NPM Downloads](https://img.shields.io/npm/dm/@jerryc/mini-logger.svg)](https://www.npmjs.com/package/@jerryc/mini-logger) [![Coverage Status](https://coveralls.io/repos/github/JerryC8080/mini-logger/badge.svg?branch=master)](https://coveralls.io/github/JerryC8080/mini-logger?branch=master) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@jerryc/mini-logger.svg)

一个迷你小 Logger，它可以：

1. 提供最小的 4 个 log level，你可以根据不同需要来控制日志输出 level。
2. 提供 `onLog` 钩子, 方便你扩展你需要的逻辑。
3. 以及提供 `prefix`, `title template` 来个性化输出的日志样式。

## Quick Usage

1. Install

   ```
   $ npm install @jerryc/mini-logger
   ```

2. Import and use

   ```javascript
   import { Logger } from '@jerryc/mini-logger';
   const logger = new Logger();

   logger.error('Hi');
   logger.warn('Hi');
   logger.info('Hi');
   logger.debug('Hi');

   // 输出：[error] Hi
   // 输出：[warn] Hi
   // 输出：[info] Hi
   // 输出：[debug] Hi
   ```

## Level 控制

Level 有级别之分，`new Logger({ level })` 时可以定义最低的 level，那么在比此 level 高的级别日志，就会被输出。

Level 级别：

| Level       | 级别 |
| ----------- | ---- |
| Level.ERROR | 1    |
| Level.WARN  | 2    |
| Level.INFO  | 3    |
| Level.DEBUG | 4    |

如：

```javascript
import { Logger, Level } from '@jerryc/mini-logger';
const logger = new Logger({ level: Level.ERROR });

logger.info('Hi, i am info');
logger.error('Hi, i am error');

// 输出: Hi, i am error
```

**运行时更新 level**

```javascript
logger.level = Level.INFO;

logger.info('Hi, i am info');
logger.error('Hi, i am error');

// 输出: Hi, i am info
// 输出: Hi, i am error
```

## 个性化格式输出

默认输出格式：`[prefix:level] log content`，支持输出格式的自定义。

**1. 使用 `prefix` 来区分模块**

```javascript
import { Logger, Level } from '@jerryc/mini-logger';
const userLogger = new Logger({
  prefix: 'user-services',
});

const goodsLogger = new Logger({
  prefix: 'goods-services',
});

userLogger.info('hi, i am info');
// 输出：[user-services:info] hi, i am info

goodsLogger.info('hi, i am info');
// 输出：[goods-services:info] hi, i am info
```

**2. 使用 `titleTemplate` 来更个性化改变格式**

```javascript
import { Logger, Level } from '@jerryc/mini-logger';

const logger = new Logger({
  prefix: 'my-logger',
  titleTemplate: ({ prefix, level }) => {
    return `[${prefix}-${levelMapper[level]}]`;
  },
});

logger.info('hi, i am info');
// 输出：[my-logger-info] hi, i am info
```

## 通过 `onLog` 钩子，进行更自定义的逻辑

```javascript
const logger = new Logger({
  onLog: (level, args) => {
    console.log({ level, args });
    // 连接自建的日志上报系统...
  },
});

logger.info('hi, i am info');

// 输出：{ level: 3, args: [ 'hi, i am info' ] }
```

## API

详见：https://jerryc8080.github.io/mini-logger/

## 测试覆盖率

详见：https://jerryc8080.github.io/mini-logger/coverage/index.html
npm package: @jerryc/single-queue
Description: Single queue
Author: JerryC
Latest version: 0.0.1

# Module Seed

一个集成了常用工作流的模块开发种子仓库。

平时喜欢写一些 NPM 模块，写得多了，整理出一套工作流，解放一些重复的搭建工作。
如果你喜欢，请直接拿去用，也可以参照该项目的一些 Feature ，给你一些提示与帮助。

## Feature

## Npm Script

## Architecture

## Docs

## Test and Coverage

## CI Config
npm package: @jerryc/wxapp-router
Description: 🛵 The router for Wechat Miniprogram
Author: JerryC
Latest version: 0.0.76

# WxApp Router

<p align="center">
  <img src="https://bluesun-1252625244.cos.ap-guangzhou.myqcloud.com/img/20210302174607.svg" width=350 />
</p>

[![CircleCI](https://img.shields.io/circleci/build/github/JerryC8080/wxapp-router/master?style=for-the-badge)](https://circleci.com/gh/JerryC8080/wxapp-router/tree/master)
[![Coveralls github branch](https://img.shields.io/coveralls/github/JerryC8080/wxapp-router/master?style=for-the-badge)](https://coveralls.io/github/JerryC8080/wxapp-router?branch=master)
[![NPM Version](https://img.shields.io/npm/v/@jerryc/wxapp-router.svg?style=for-the-badge)](https://www.npmjs.com/package/@jerryc/wxapp-router)
[![NPM Downloads](https://img.shields.io/npm/dm/@jerryc/wxapp-router.svg?style=for-the-badge)](https://www.npmjs.com/package/@jerryc/wxapp-router)
![npm bundle size](https://img.shields.io/bundlephobia/minzip/@jerryc/mini-logger.svg?style=for-the-badge)

## 动机

对于微信小程序原生路由：

1. 写代码，要显式判断情况，然后使用不同的 wx.xxx
2. 暴露真实路由，通过小程序二维码等方式暴露出去的路径，不利于修改项目结构。
3. 微信路由十层级路由问题、页面死循环问题。
4. 小程序无限二维码解决方案。（短链参数解析）

## 介绍

1. 虚拟路由，解决小程序对外暴露真实路径的问题。
1. 动态路由参数。
1. 智能跳转，解决小程序页面栈十层限制问题，与解决小程序页面死循环问题

## 下载

```shell
npm install @jerryc/wxapp-router
```

## 使用说明

### 快速使用

```typescript
import { Router } from '@jerryc/wxapp-router';

// 创建路由实例
const router = new Router();

// 注册路由
router.register({
  route: '/pages/user/index', // 真实路由
  path: '/user/:id', // 虚拟路由
});

const query = { name: 'jc', age: 18 };

// 智能跳转
router.gotoPage('/user/123', query);
// 跳转到 /pages/user/index
// onLoad(options) 中 options = {name: 'jc', age: 18, id: '123'};

// 显式跳转
router.redirectTo('/user/:123', query);
router.navigateTo('/user/:123', query);
router.navigateBack('/user/:123', query);
router.switchTab('/user/:123', query);
```

### 智能跳转策略

### 动态路由参数

### 外部路由策略：虚拟路由 & 落地中转策略

### 内部路由策略：体验更加的调用方式

### 使用自定义组件跳转

### TypeScript 支持

### 如何组织项目

### 导航器 Navigator

### 通过替换跳转引擎，以支持 TaroJS

## 架构设计

## API

详见官网：[wxapp-router](https://jerryc8080.github.io/wxapp-router/)

## License

This project is licensed under the [MIT license](LICENSE).  
Copyright (c) JerryC Huang (huangjerryc@gmail.com)