open-index/open-npm huggingface dataset:
npm package: @gagan-personal/common
Description: Cmmon Authentication related code
Author: Gagandeep Singh
Latest version: 1.0.14

# Custom npm package

- [Custom npm package](#custom-npm-package)
  - [Description](#description)
  - [Login to npm](#login-to-npm)
  - [Steps to Publish](#steps-to-publish)
  - [Dependencies](#dependencies)
    - [Production `--save`](#production---save)
    - [Dev `--save-dev`](#dev---save-dev)
  - [Exporting libraries](#exporting-libraries)
  - [Creating a patch upgrade (Bugfixes)](#creating-a-patch-upgrade-bugfixes)
  - [Steps](#steps)
  - [NOTE](#note)

## Description

- Common Authorization code
- Imported via package.json
- Wrrten in typescript, however porduction code is converted in Javascript

## Login to npm

1. `npm login`
2. Enter username and password

## Steps to Publish

1. Makre sure you are logged In
2. `git init`
3. Commit your files
4. Publish package `npm publish --access public`

## Dependencies

### Production `--save`

- `@types/cookie-session`
- `@types/express`
- `@types/jsonwebtoken`
- `cookie-session`
- `express`
- `express-validator`
- `jsonwebtoken`
- `node-nats-streaming`

### Dev `--save-dev`

- `typescript`
- `del-cli` - Allows cleaning build riectory before every build

## Exporting libraries

- Update package.json with target source code
```json
{
  "main": "./build/index.js",
  "types": "./build/index.d.ts",
  "files": [
    "./build/**/*"
  ]
}
```

## Creating a patch upgrade (Bugfixes)
- `npm version patch`
- Must be executed everytime we publsh an upgrade

## Steps
1. `npm version patch`
2. `npm run build`
3. `npm publish`

## NOTE

- **Always** make sure a new build is published using `npm run publish` after making any changes
- Other microservices use this library as a `npm package`
npm package: @gagandeep023/drift-well
Description: A physics browser game where you navigate a particle through gravity wells to reach checkpoints
Author: Gagandeep Bhatia
Latest version: 0.1.0

# @gagandeep023/drift-well

**Master gravity. Find the well.**

A physics-based browser game where you navigate a particle through invisible gravity wells to reach checkpoints. Built as a React component with Canvas 2D rendering.

## Install

```bash
npm install @gagandeep023/drift-well
```

## Usage

```tsx
import { DriftWell } from '@gagandeep023/drift-well/frontend';
import '@gagandeep023/drift-well/frontend/styles.css';

function App() {
  return <DriftWell width={600} height={500} onGameOver={(score) => console.log(score)} />;
}
```

## How It Works

- Tap/click and drag to aim, release to push your particle
- Your particle drifts with momentum through invisible gravity fields
- Reach each glowing checkpoint ring in order
- Each push costs energy; hitting walls drains more
- Complete all checkpoints to advance to harder levels

## Props

| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `width` | `number` | `600` | Canvas width in pixels |
| `height` | `number` | `500` | Canvas height in pixels |
| `onGameOver` | `(score: number) => void` | - | Callback when game ends |

## License

MIT
npm package: @gagandeep023/glyph-lock
Description: Decode the pattern before it shifts - a pattern-deduction browser game
Author: Gagandeep Bhatia
Latest version: 0.1.0

# @gagandeep023/glyph-lock

> Decode the pattern. Before it shifts.

A pattern-deduction browser game built with React and Canvas 2D. A grid of cells displays a partial pattern using colors. Deduce the rule governing the pattern, fill in the missing cells, and submit before the timer expires.

## Install

```bash
npm install @gagandeep023/glyph-lock
```

## Usage

```tsx
import { GlyphLockGame } from '@gagandeep023/glyph-lock/frontend';
import '@gagandeep023/glyph-lock/frontend/styles.css';

function App() {
  return <GlyphLockGame />;
}
```

## How it works

- Some cells are revealed following a hidden pattern rule
- Select a color and tap empty cells to fill them
- Submit to check your answer
- Wrong answers cost a life (3 lives total)
- Patterns get more complex as you progress
- Timer decreases each level

## Peer Dependencies

- `react` ^18 || ^19
- `react-dom` ^18 || ^19

## License

MIT
npm package: @gagandeep023/pulse-weave
Description: A rhythm-timing browser game where you thread a dot through gaps in rotating concentric rings
Author: Gagandeep Bhatia
Latest version: 0.1.0

# @gagandeep023/pulse-weave

**Feel the rhythm. Thread the needle.**

A rhythm-timing browser game where concentric rings pulse and rotate around the center of the screen. Each ring has a gap. Tap to advance your dot outward through the gaps. Miss a gap and you bounce back to the center.

## Install

```bash
npm install @gagandeep023/pulse-weave
```

## Usage

```tsx
import { PulseWeaveGame } from '@gagandeep023/pulse-weave/frontend';
import '@gagandeep023/pulse-weave/frontend/styles.css';

function App() {
  return <PulseWeaveGame />;
}
```

## How to Play

1. Rings rotate around the center. Each has a gap.
2. Tap anywhere to jump to the next ring outward.
3. Time it right to pass through the gap.
4. Miss the gap and you bounce back to the center.
5. Three bounces in one level and the run ends.

Reach the outermost ring to complete a level. Score is total levels cleared.

## Exports

- `@gagandeep023/pulse-weave/frontend` - React components and game engine
- `@gagandeep023/pulse-weave/types` - TypeScript type definitions
- `@gagandeep023/pulse-weave/frontend/styles.css` - Default dark theme styles

## License

MIT
npm package: @gagandeep023/signal-hop
Description: A reflex/strategy browser game where you hop between network nodes to keep them alive
Author: Gagandeep Bhatia
Latest version: 0.1.1

# @gagandeep023/signal-hop

A reflex/strategy browser game where you hop between network nodes to keep them alive. Built with Canvas 2D and React.

## How It Works

You control a signal hopping between nodes in a network graph. Each node has a countdown timer. When a timer reaches zero, the node dies and severs all its connections. Hopping to a node resets its timer. The game ends when all your neighboring nodes are dead and you have nowhere to hop.

The network decays faster as time progresses, forcing you to plan routes instead of just saving the nearest dying node.

## Installation

```bash
npm install @gagandeep023/signal-hop
```

## Quick Start

```tsx
import { SignalHop } from '@gagandeep023/signal-hop/frontend';
import '@gagandeep023/signal-hop/frontend/styles.css';

function GamePage() {
  return (
    <div style={{ width: '100vw', height: '100vh' }}>
      <SignalHop theme="dark" onGameOver={(score) => console.log('Score:', score)} />
    </div>
  );
}
```

## Props

| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `theme` | `'dark' \| 'light'` | `'dark'` | Visual theme |
| `onGameOver` | `(score: number) => void` | - | Callback when game ends |

## How to Play

1. You are the bright node. Tap or click connected nodes to hop to them.
2. Every node has a countdown timer. When it hits zero, the node dies.
3. Hopping to a node resets its timer.
4. Dead nodes sever connections. If all your neighbors die, game over.
5. The network decays faster as time passes.

**Tip:** Plan your route. Don't just save the nearest dying node. Think 2-3 hops ahead.

## Development

```bash
git clone https://github.com/Gagandeep023/signal-hop.git
cd signal-hop
npm install
npm test        # run tests
npm run build   # build to dist/
npm run dev     # watch mode
```

## Exports

- `@gagandeep023/signal-hop/frontend` - React component
- `@gagandeep023/signal-hop/types` - TypeScript types
- `@gagandeep023/signal-hop/frontend/styles.css` - Styles

## License

MIT
npm package: @gagandeep023/spore-field
Description: A turn-based territory control browser game - grow spores, spread across the field, outcompete the AI
Author: Gagandeep Bhatia
Latest version: 0.1.0

# @gagandeep023/spore-field

**Grow. Spread. Outcompete.**

A turn-based territory control browser game on a hex-like grid. Place spores, spread across the field, sacrifice outliers to power up your next move, and outcompete the AI opponent.

## Install

```bash
npm install @gagandeep023/spore-field
```

## Usage

```tsx
import { SporeField } from '@gagandeep023/spore-field/frontend';
import '@gagandeep023/spore-field/frontend/styles.css';

function App() {
  return (
    <SporeField
      onGameOver={({ winner, playerPercent, aiPercent, turns }) => {
        console.log(`${winner} won with ${playerPercent}% in ${turns} turns`);
      }}
    />
  );
}
```

## How to Play

1. Tap an empty cell to place a spore.
2. After both you and the AI place, all spores spread to adjacent empty cells.
3. Higher-nutrient spores spread first and win conflicts.
4. Sacrifice your own cells to boost your next placement's nutrient level.
5. If the AI controls 70% of the field, you lose instantly.
6. When the field fills up, whoever controls more territory wins.

## License

MIT
npm package: @gagigante/biome-config
Description: Robust reusable Biome configuration files for JavaScript/TypeScript projects
Author: Gabriel Gigante
Latest version: 1.0.0

# Biome Config

A collection of reusable Biome configuration files for JavaScript/TypeScript projects, with a primary focus on React applications.

## What is Biome?

Biome is a fast, modern alternative to ESLint and Prettier combined. It's written in Rust, which makes it extremely fast, and combines formatting and linting in a single tool.

## Installation

Using bun:

```bash
bun add -D @biomejs/biome @gagigante/biome-config
```

Using npm:

```bash
npm install --save-dev @biomejs/biome @gagigante/biome-config
```

Using yarn:

```bash
yarn add -D @biomejs/biome @gagigante/biome-config
```

## Usage

### React Projects

Create a `biome.json` file in the root of your project:

```json
{
  "$schema": "https://biomejs.dev/schemas/1.5.3/schema.json",
  "extends": ["./node_modules/@gagigante/biome-config/configs/react.json"]
}
```

### Customizing the Configuration

You can extend the base configuration and override specific rules:

```json
{
  "$schema": "https://biomejs.dev/schemas/1.5.3/schema.json",
  "extends": ["./node_modules/@gagigante/biome-config/configs/react.json"],
  "linter": {
    "rules": {
      "suspicious": {
        "noExplicitAny": "warn" // Override from "error" to "warn"
      },
      "style": {
        "useTemplate": "off" // Disable this rule
      }
    }
  },
  "formatter": {
    "indentWidth": 4 // Override indent width
  }
}
```

### Add Scripts to package.json

Add these scripts to your `package.json`:

```json
{
  "scripts": {
    "lint": "biome check src",
    "lint:fix": "biome check --apply src",
    "format": "biome format --write src"
  }
}
```