open-index/open-npm huggingface dataset:
npm package: @jannael/glinter
Description: A high-performance, transparent Git wrapper with interactive staging
Author: Jannael
Latest version: 1.0.1

# Glinter

Glinter is a high-performance, transparent Git wrapper built with **Bun**. It enhances the standard `git add` workflow with a beautiful, interactive CLI interface while acting as a seamless pass-through for all other Git commands.

## Preview

<video src="https://github.com/user-attachments/assets/f488ac07-f36a-4a56-a533-9598c46596ed" controls="false" autoplay="true" loop="true" muted="true" style="max-width: 100%;">
Your browser does not support the video tag.
</video>


## Features

- **Interactive `add`**: When you run `g add`, it presents a color-coded list of your modified, new, and deleted files. You can multi-select exactly what you want to stage using a GUI-like interface in your terminal.

- **Transparent Wrapper**: For every other command (like `commit`, `push`, `log`, or `status`), Glinter acts as a direct tunnel to Git. It preserves all original colors, formatting, and interactive features of the native Git CLI.

- **Safe by Default**: Automatically filters and prevents accidental staging of sensitive files: `.env` and `node_modules`.

- **Abbreviation**: You can use `g` instead of `git`.

## How it works

Glinter is designed to be as "natural" as possible, meaning it shouldn't feel like a wrapper at all.

### 1. The Transparent Proxy
In `src/index.ts`, Glinter uses `Bun.spawn` with `stdio: 'inherit'`. This is a low-level operation that connects the standard input, output, and error streams of the Git process directly to your terminal. 
- **Result**: Git "knows" it's in a real terminal, so it correctly detects colors and allows for interactive prompts (like credential entry).

### 2. Reliable Status Parsing
For the interactive `add` feature, Glinter runs `git status --porcelain`. 
- **Why?**: Standard `git status` output is designed for humans and can change based on your Git version or system language. `--porcelain` is a machine-readable format that is consistent across all environments, making the file detection 100% reliable.

### 3. Interactive Selection
Using the `@clack/prompts` library, Glinter transforms the raw status data into a selectable list. 
- The selection logic uses Bun's high-speed shell to execute the final `git add` command, correctly escaping filenames to handle spaces and special characters.

## Installation

To use Glinter as your primary Git interface (e.g., using the command `g`):

```bash
npm install -g @jannael/glinter
```

### For Development

1. **Clone the repo**
2. **Install dependencies**: `bun install`
3. **Link the binary**: `bun link`

now you can simply run:
```bash
g add           # Opens the interactive selector
g add <file>    # Runs standard git add <file>
g status        # Runs standard git status
g push          # Runs standard git push
```
npm package: @jannajs/git-guards
Description: > 基于 Git Hooks 的 Git 守卫
Author: Yuns
Latest version: 0.0.8

# @jannajs/git-guards

> 基于 Git Hooks 的 Git 守卫

## 功能特色

- 合并守卫
  - 黑名单/白名单，默认禁用 `['test', 'origin/test']` 分支
  - 默认禁止基于当前分支的合并提交

## 如何使用

### 安装

```sh
$ npm i -D @jannajs/git-guards
# yarn add -D @jannajs/git-guards
# pnpm add -D @jannajs/git-guards
```

### 使用

在 `commit-msg` 首行添加如下命令：

```sh
npx --no -- @jannajs/git-guards merge -f "$1"
```

### 配置

在项目根目录中创建 `git-guards.config.ts` 以配置守卫规则：

```ts
import { defineConfig } from '@jannajs/git-guards'

export default defineConfig({
  // ...
})
```
npm package: @jannchie/active-window
Description: Get information about active windows and idle time on Windows, Linux and MacOS
Author: Yves Hoppe
Latest version: 1.1.0

# Active Window

Node C++ N-API module to get information on the currently selected window and the user idle time on Linux, MacOS and Windows.

> Currently only supports Windows, Linux / Xorg and MacOS

Work in progress. Not on every platform all information are supported.

### Building / Installation

```bash
pnpm install
```
or
```bash
npm install
```
### Usage

```javascript
const activeWindows = require('electron-active-window');

activeWindows().getActiveWindow().then((result)=>{
    console.log(result)
});
```

See `sample.js` for more information.

### Return-Value

```javascript
{
  // Operating system (linux | windows | macos)
  os: 'linux',
  // Process name (chromium.exe on windows)
  windowClass: 'chromium',
  // Blog | bytee.net
  windowName: 'Blog | bytee.net - Chromium',
  // Desktop on which the window is displayed (Linux only)
  windowDesktop: '2',
  // Window Type (Linux only)
  windowType: '340',
  // Process ID of the window
  windowPid: '34218',
  // Idle Time in seconds
  idleTime: '42',
}

```
### MacOS return value
```javascript
{
  os: 'macos',
  windowClass: 'com.microsoft.VSCode',
  windowName: 'Code',
  windowDesktop: null,
  windowType: null,
  windowPid: '7531',
  atTime: '2020-05-08 16:34:00',
  launchDate: '(null)',
  isTerminated: 0
}
```
npm package: @jannchie/eslint-config
Description: Jannchie's ESLint config
Author: Jianqi Pan
Latest version: 3.7.7

# @jannchie/eslint-config

> [!WARNING]
> This repository is an extension of @antfu/eslint-config. While it remains fundamentally similar to the original, it includes additional configurations that are better tailored to my specific needs.

```bash
npm install --save-dev @jannchie/eslint-config
```

## Usage

```js
// eslint.config.js
import jannchie from '@jannchie/eslint-config'

export default jannchie()
```

## License

[MIT](./LICENSE)
npm package: @jannchie/uiohook-napi
Description: ```bash npm i @jannchie/uiohook-napi ```
Author: Alexander Drozdov
Latest version: 1.0.5

# uiohook-napi

```bash
npm i @jannchie/uiohook-napi
```

Fixed an issue where the package path could not be located due to execution path changes when using WebPack packaging. Specific performance is as follows:

```
Error: No native build was found for platform=win32 arch=x64 runtime=electron abi=106 uv=1 libc=glibc node=16.14.2 electron=19.0.4 webpack=true
    loaded from: xxxxxx\uiohook-napi

    at load.path (xxxxxx\.webpack\main\index.js:26432:9)
    at load (xxxxxx\.webpack\main\index.js:26408:30)
    at ./node_modules/.pnpm/uiohook-napi@1.2.0/node_modules/uiohook-napi/dist/index.js (xxxxxx\.webpack\main\index.js:36148:136)
    at __webpack_require__ (xxxxxx\.webpack\main\index.js:76498:42)
    at xxxxxx\.webpack\main\index.js:76584:5
    at xxxxxx\.webpack\main\index.js:76795:3
    at Object.<anonymous> (xxxxxx\.webpack\main\index.js:76798:12)
    at Module._compile (node:internal/modules/cjs/loader:1118:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1173:10)
    at Module.load (node:internal/modules/cjs/loader:988:32)
```

[![](https://img.shields.io/npm/v/uiohook-napi/latest?color=CC3534&label=uiohook-napi&logo=npm&labelColor=212121)](https://www.npmjs.com/package/uiohook-napi)


N-API C-bindings for [libuiohook](https://github.com/kwhat/libuiohook).


### Usage example

```typescript
import { uIOhook, UiohookKey } from 'uiohook-napi'

uIOhook.on('keydown', (e) => {
  if (e.keycode === UiohookKey.Q) {
    console.log('Hello!')
  }

  if (e.keycode === UiohookKey.Escape) {
    process.exit(0)
  }
})

uIOhook.start()
```

### API

```typescript
interface UiohookNapi {
  on(event: 'input', listener: (e: UiohookKeyboardEvent | UiohookMouseEvent | UiohookWheelEvent) => void): this

  on(event: 'keydown', listener: (e: UiohookKeyboardEvent) => void): this
  on(event: 'keyup', listener: (e: UiohookKeyboardEvent) => void): this

  on(event: 'mousedown', listener: (e: UiohookMouseEvent) => void): this
  on(event: 'mouseup', listener: (e: UiohookMouseEvent) => void): this
  on(event: 'mousemove', listener: (e: UiohookMouseEvent) => void): this
  on(event: 'click', listener: (e: UiohookMouseEvent) => void): this

  on(event: 'wheel', listener: (e: UiohookWheelEvent) => void): this
}

export interface UiohookKeyboardEvent {
  altKey: boolean
  ctrlKey: boolean
  metaKey: boolean
  shiftKey: boolean
  keycode: number
}

export interface UiohookMouseEvent {
  altKey: boolean
  ctrlKey: boolean
  metaKey: boolean
  shiftKey: boolean
  x: number
  y: number
  button: unknown
  clicks: number
}

export interface UiohookWheelEvent {
  altKey: boolean
  ctrlKey: boolean
  metaKey: boolean
  shiftKey: boolean
  x: number
  y: number
  clicks: number
  amount: number
  direction: WheelDirection
  rotation: number
}
```
npm package: @jannie-shao/components-antd4
Description: 基于 Antd 4 的组件封装
Author: JannieShao
Latest version: 0.0.2

## @jannie-shao/components-antd4

基于 Antd4 的组件封装

## 安装

在项目中安装 @jannie-shao/components-antd4

```shell
$ npm i -S @jannie-shao/components-antd4
```
npm package: @janniks-stacks/connect-react
Description: A library for building excellent user experiences with [Blockstack](https://blockstack.org/).
Latest version: 13.0.2-2

# `@stacks/connect`

A library for building excellent user experiences with [Blockstack](https://blockstack.org/).

:blue_book: [View documentation](https://docs.blockstack.org/develop/connect/overview.html)
npm package: @janniks/randombytes
Description: fork: random bytes from browserify stand alone
Latest version: 2.1.1

randombytes
===

[![Version](http://img.shields.io/npm/v/randombytes.svg)](https://www.npmjs.org/package/randombytes) [![Build Status](https://travis-ci.org/crypto-browserify/randombytes.svg?branch=master)](https://travis-ci.org/crypto-browserify/randombytes)

randombytes from node that works in the browser.  In node you just get crypto.randomBytes, but in the browser it uses .crypto/msCrypto.getRandomValues

```js
var randomBytes = require('randombytes');
randomBytes(16);//get 16 random bytes
randomBytes(16, function (err, resp) {
  // resp is 16 random bytes
});
```
npm package: @janniks/typedoc-plugin-monorepo
Description: Optimize Typedoc documentation output for libraries that are organized in a monorepo.
Author: janniks
Latest version: 0.4.2-1

## @strictsoftware/typedoc-plugin-monorepo

### What

A plugin for [TypeDoc](http://typedoc.org)

When trying to unify documentation for multiple modules residing inside a shared source repository, the default way TypeDoc assignes top-level module names might not satisfy.

This plugin allows you to specify a regular expression with a capture group. This is then used to collect related items into one module.

This plugin is inspired by, and based on, [asgerjensen/typedoc-plugin-external-module-map](https://github.com/asgerjensen/typedoc-plugin-external-module-map). However, this plugin will automagically rename top-level modules discovered to a new "Package" type, and auto-discover and display READMEs for the individual packages. Furthermore, these packages are used as top-level entries in the table of contents.

This plugin is intended for monorepos that deliver more than one NPM package in a single Git repository.

Suppose you have

```
packages/@namespace/package-1/index.ts
packages/@namespace/package-1/src/otherfiles.ts
packages/@namespace/package-2/index.ts
packages/@namespace/package-2/src/otherfiles.ts
```

TypeDoc will create four "Modules", named for each .ts file.

- "@namespace/package-1/index"
- "@namespace/package-1/src/otherfiles"
- "@namespace/package-2/index"
- "@namespace/package-2/src/otherfiles"

This plugin allows each file to specify the TypeDoc Module its code should belong to. If multiple files belong to the same module, they are merged.

This allows more control over the modules that TypeDoc generates.
Instead of the four modules above, we could group them into two:

- @namespace/package-1
- @namespace/package-2

In addition to grouping these modules, the plugin will attempt to discover README files in each module root to display with the documented package. In this plugin, top-level typedoc "modules" are renamed to the more semantic name "packages" in generated documentation.

### Installing

TypeDoc >=0.11 has the ability to discover and load typedoc plugins found in node_modules.
Simply install the plugin and run typedoc.

```
npm install --save @strictsoftware/typedoc-plugin-monorepo
typedoc
```

### Using

This plugin adds some new options

#### --external-modulemap
```
--external-modulemap  ".*packages\/(@namespace\/[^\/]+)\/.*"
```

If you specify it from the command line, be sure to escape the input string so bash doesn't expand it.

It is probably easier to create a typedoc options file (typedoc.json) and add it there:

```
{
  "name": "My Library",
  "out": "doc",
  "theme": "default",
  "preserveConstEnums": "true",
  "exclude": "*.spec.ts",
  "external-modulemap": ".*packages\/(@namespace\/[^\/]+)\/.*",
  "excludeExternals": false
}
```

#### --inline-references

Replace references with actual target declarations in output project symbols. This is required
when re-exports with same name are presented in project files because this will lead to collisions in output
symbols map and references links would target to nowhere.
npm package: @jannis/metalsmith-watch
Description: Metalsmith plugin to watch for changes and trigger partial and full rebuilds
Latest version: 1.0.4

# metalsmith-watch [![Build Status](https://travis-ci.org/FWeinb/metalsmith-watch.svg?branch=master)](https://travis-ci.org/FWeinb/metalsmith-watch) [![NPM version](http://img.shields.io/npm/v/metalsmith-watch.svg?style=flat)](https://www.npmjs.org/package/metalsmith-watch)

> Metalsmith plugin to watch for changes and trigger partial and full rebuilds.

## Installation

```console
$ npm install metalsmith-watch
```

## Usage

```js
var metalsmith = require('metalsmith');
var watch = require('metalsmith-watch');

metalsmith(__dirname)
  .use(
    watch({
      paths: {
        "${source}/**/*": true,
        "templates/**/*": "**/*.md",
      },
      livereload: true,
    })
  )
  .build();
```

## Options

### paths (default: `{"${source}/**/*": true}`)

Map of paths to trigger rebuild. Both keys and value accept a [glob pattern](https://github.com/isaacs/node-glob).

```js
{
  "file(s) to watch": "file(s) to rebuild"
}
```

Value accept a boolean. When a boolean is used, only watched files changed will be rebuilded.

```js
{
  "${source}/**/*": true, // every changed files will trigger a rebuild of themselves
  "templates/**/*": "**/*", // every templates changed will trigger a rebuild of all files
}
```

**Please note that**:
- `${source}` is replaced by `metalsmith.source()`.
- _values of the map are relative to `metalsmith.source()`_ (because it's the only place where to build files)


### livereload (default: `false`)

Allows you to enable a livereload server.
Using a boolean will enable a livereload server on port the default port is `35729`.
Accept a port number to start on the port you need.

To get live reload working properly, you should add the following `<script>` in your templates files to enable livereloading of each pages:

```html
<script src="http://localhost:35729/livereload.js"></script>
```

Make sure to update the port number in the script above accordingly to the port specified.

### onUpdateCallback (default: `undefined`)

Allows you to define a function to get called _after_ metalsmith has reloaded all the files. If a function is passed, this will be called with the updated files and all options passed.

```javascript
{
  onUpdateCallback: function (files, options) {
    // Called on every rebuild
  }
}
```

### log (default: `function(...args) { console.log(prefix, ...args)}`)

Function used to display the logs.

### invalidateCache (default: `true`)

Allows you to enable cache invalidation for js files.
Convenient if you use some js files for templates
(eg: React templates) to get updated components.
If disabled you won't get update for changed js files as node/iojs use a cache.

## [Changelog](CHANGELOG.md)

## [License](LICENSE.md)
npm package: @jannis6023/tourguidejs
Description: [Fork with types] A customizable tour guide library for front-end applications.
Author: JC
Latest version: 0.0.9

<p style="text-align: center" align="center">
<img src="tg-logo.svg" width="100"/>
</p>
<h1 align="center" style="text-align: center">TourGuide JS</h1>
<p align="center" style="text-align: center">
Intuitive and customisable tours for user application onboarding
<br />
<a href="https://tourguidejs.com/docs/"><strong>Explore the docs »</strong></a>
</p>


----


<p align="center">
<img src="https://tourguidejs.com/tourguidejs-demo.gif" width="624">
</p>

## QuickStart
### Installation
```
npm i @sjmc11/tourguidejs
```

### Usage
Include the tourGuide script and style in your project. A CDN method is supported.
```
// Style
import "@sjmc11/tourguidejs/src/scss/tour.scss"
// JS
import {TourGuideClient} from "@sjmc11/tourguidejs/src/Tour"
```

### Declare steps
Add the [data-tg-tour] attribute to elements that you want to include in your tour. This attribute should contain the relevant text for the tour guide step.
```
<div data-tg-tour="Welcome aboard 👋> ... </div>
```

### Create a tour
```
const tg = new TourGuideClient({} : TourGuideOptions)
```

### Start the tour
```
tg.start()
```

----

#### TourGuide JS uses Floating-Ui for intelligent dialog positioning
See [Floating UI](https://floating-ui.com/) for more information.
npm package: @jannnik/mdx
Description: A collection of MDX plugins which make writing documentation a bit easier
Author: J. Wibker
Latest version: 1.0.2-1

# MDX plugins

This is a collection of MDX plugins which make writing documentation a bit easier.

## Features

- Syntax highlighting (using [shiki](https://shiki.matsu.io/))
- Annotate and highlight certain sections of code
- Add custom props to mdx elements (using [mdx-annotations](https://www.npmjs.com/package/mdx-annotations))

## Usage

1. Install
2. Add plugins to your `next.config.js` file

```bash
pnpm add @jannnik/mdx
```

```js
import {
  rehypeParseCodeBlocks,
  rehypeShiki,
  rehypeHighlight,
  rehypeMdxAnnotations,
  recmaNextjsStaticProps,
  recmaMdxAnnotations,
  remarkMdxAnnotations
} from '@jannnik/mdx'

const withMDX = nextMDX({
  options: {
    remarkPlugins: [remarkMdxAnnotations],
    rehypePlugins: [rehypeMdxAnnotations, rehypeParseCodeBlocks, rehypeShiki, rehypeHighlight],
    recmaPlugins: [recmaMdxAnnotations, recmaNextjsStaticProps],
    providerImportSource: '@mdx-js/react'
  }
})

/** @type {import('next').NextConfig} */
const nextConfig = {
  // ...
}

export default withMDX(nextConfig)
```
npm package: @jannnik/ui
Description: A collection of useful UI components for documentation websites
Author: J. Wibker
Latest version: 1.0.2-3

# Docs ui components

This is a collection of useful UI components for documentation websites.
Works best together with [@jannnik/mdx](../mdx).

## Features

- Pure TypeScript, no JS bundle
- Fancy code blocks
- Sidebar with headings, etc.
- Cards
- A few icons
- [twind](https://twind.style)

## Usage

1. Install
2. Add twind dependencies
3. Set up next to transpile `@jannnik/ui`
4. Configure mdx to use `@jannnik/ui`
5. Initialize twind
6. Start using the components, icons and hooks


**Install**:

```bash
pnpm add @jannnik/ui
```

**Set up next to transpile `@jannnik/ui`**:

```js
// next.config.mjs
const nextConfig = {
  distDir: 'build',
  reactStrictMode: true,
  pageExtensions: ['ts', 'tsx', 'mdx'],
  swcMinify: true,
  transpilePackages: ['@jannnik/ui']
}

export default withMDX(nextConfig)
```

**Add twind dependencies**:

```bash
pnpm add @twind/core @twind/preset-autoprefix @twind/preset-tailwind @twind/preset-tailwind-forms @twind/preset-typography
```


**Configure mdx to use `@jannnik/ui`**:

```tsx
// pages/_app.tsx
import { components } from '@jannnik/ui/components/native-replacements'

<MDXProvider components={components}>
  {/* ... */}
</MDXProvider>
```

**Initialize twind**:

```tsx
// pages/_app.tsx
import { tw } from '@twind/core'
import withNextApp from '@jannnik/ui/twind/next/app'
import { config } from '@jannnik/ui/twind/config'

// ...

export default withNextApp(config, MyApp)
```

**Start using the components, icons and hooks**:

```tsx
import { Card } from '@jannnik/ui'
import { Info } from '@jannnik/ui/icons'

<Card variant="primary" Icon={Info}>
  This is some kind of message.

  Some more text.
</Card>
```