open-index/open-npm huggingface dataset:
npm package: @kensodemann/game-dots-angular
Description: Angular specific proxies for @kensodemann/game-dots
Latest version: 0.0.7

# Angular

This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.3.0.

## Development server

Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The application will automatically reload if you change any of the source files.

## Code scaffolding

Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.

## Build

Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory.

## Running unit tests

Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).

## Running end-to-end tests

Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities.

## Further help

To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
npm package: @kensodemann/game-dots-react
Description: React specific proxies for @kensodemann/game-dots
Latest version: 0.0.7

# stencil-ds-react-template

This is an example repo of building plugins.

## Step 1.

- Update the `package.json` to have the correct package name for this repo.
- Replace `component-library` under `dependencies` with your core stencil package name.

## Step 2.

- Build your core stencil package.

## Step 3.

- Run build on this package.
npm package: @kensoni/react-hooks
Description: Customize hooks for React
Author: Ken Nguyen
Latest version: 0.0.7

# react-hooks
Customize hooks for React

## Installation

```sh
npm install @kensoni/react-hooks

# Or yarn
yarn add @kensoni/react-hooks
```

## Preview with Storybook

```
git clone https://github.com/ngvcanh/react-hooks.git
cd react-hooks
yarn install
yarn start
```

[Live demo](https://ngvcanh.github.io/react-hooks)



## useClickOutside()

Listen events when click/touch outside the element.

```tsx
import { useRef } from 'react';
import useClickOutside from '@kensoni/react-hooks/useClickOutside';

export default function App(){

  const element = useRef<HTMLDivElement>(null);

  useClickOutside(() => {
    console.log('Clicked outside box');
  }, element);

  return <div>
    <div 
      style={{ width: 100, height: 100, backgroundColor: '#fff' }} 
      ref={ element }
    >Click outside me</div>
  </div>

}
```

## useCombineRefs()

Combine multiple Refs to one.

```tsx
import { useRef } from 'react';
import useCombineRefs from '@kensoni/react-hooks/useCombineRefs';

export default function App(){

  const ref_1 = useRef();
  const ref_2 = useRef();

  const combinedRef= useCombineRefs([ ref_1, ref_2 ]);

  return <div>
    App
  </div>

}
```

## useEmitControl(ref)

```tsx
import React, { KeyboardEvent, useRef } from 'react';
import useEmitControl from '@kensoni/react-hooks/useEmitControl';

export default function App(){

  const inputRef = useRef<HTMLInputElement>(null);
  const emitInput = useEmitControl(inputRef);

  const onKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {
    e.preventDefault();
    emitInput('change', 'new value');
  }

  const onChange = (e: ChangeEvent<HTMLInputElement>) => {
    console.log('onchange', e.target.value);
  }

  return <div>
    <input ref={ inputRef } onKeyDown={ onKeyDown } onChange={ onChange } />
  </div>

}
```

## useForceUpdate()

Force update component

```tsx
import useForceUpdate from '@kensoni/react-hooks/useForceUpdate';

export default function App(){

  const forceUpdate = useForceUpdate();

  return <div>
    App

    <button onClick={ forceUpdate }>Force update app</button>
  </div>
}
```

## useScrollbarSize()

Get scrollbar size on browser.

```tsx
import useScrollbarSize from '@kensoni/react-hooks/useScrollbarSize';

export default function App(){

  const size = useScrollbarSize();

  return <div>
    App
  </div>

}
```

## useWindowResize()

Listen when window resize.

The callback do not apply when first render component.

```tsx
import useWindowResize from '@kensoni/react-hooks/useWindowResize';

export default function App(){

  const size = useWindowResize(() => {
    console.log('Window resized.')
  });

  return <div>
    App
  </div>

}
```
npm package: @kensoni/react-input-number
Description: Handle input number with React. Support Material UI (MUI)
Author: Ken Nguyen
Latest version: 0.0.6

# React Input Number

Handle Input number with React. Support Material UI (MUI)

## Changelog

### 0.0.6

- Allow press `tab` key.

### 0.0.5

- Fix enter double separator between integer and decimal part.

### 0.0.4

- Add `?` for prop `integer`.

### 0.0.3

- Support flag `integer` only enter integer to input

### 0.0.2

- Support `ref` is a function.

## Installation

```
# npm
npm i @kensoni/react-input-number

# Yarn
yarn add @kensoni/react-input-number
```

## Playground with storybook

```
git clone https://github.com/ngvcanh/react-input-number
cd react-input-number
yarn install
yarn start
```

[Live demo](https://ngvcanh.github.io/react-input-number)

## API

Using all `props` of `HTMLInputElement` without prop `type`. In addition, there are some additional props:

| Prop name | Type | Description |
|---|---|---|
| comma | _boolean_ | Format number with using `,` separate integer and decimal part. Only working when prop `format` is `true` |
| disableNegative | _boolean_ | Negative numbers are not allowed in input |
| format | _boolean_ | Enable format value for input |
| formatOnlyBlur | _boolean_ | Only format input number when focus out input |
| integer | _boolean_ | Only enter integer for input |
| renderInput | _Function_ | Using for render another input if using third party library |
| value | _string_, _number_ | Default value for input number. Accept normal number, format number, format comma number |

## Render Input Function With Material UI (MUI)

```tsx
import { ChangeEvent, useState } from 'react';
import InputNumber from '@kensoni/react-input-number';
import TextField from '@mui/material/TextField';
import Box from '@mui/material/Box';

export default function App(){

  const [ value, setValue ] = useState('');

  const onChange = (event: ChangeEvent<HTMLInputElement>) => {
    setValue(event.target.value);
  }

  return <Box>
    <InputNumber 
      format
      value={ value }
      onChange={ onChange }
      renderInput={(inputProps, inputRef) => (
        <TextField fullWidth inputProps={ inputProps } inputRef={ inputRef } />
      )}
    />
    <Box component="pre" sx={{ mt: 3 }}>{ value }</Box>
  </Box>

}
```

Make sure that the properties from the function's inputProps are attached to the TextField's inputProps. Do not override this props on TextField props.

Each time the onChange event emit, the cursor will jump to the end of the input. In case of preserving the cursor position, make sure that the function's inputRef must be attached to the TextField's inputRef to hold the pointer.
npm package: @kenster004/rvalid
Description: A JSON Request object validator.
Author: Ken Crucillo
Latest version: 0.0.1

Number Formatter
=========

A small library that adds commas to numbers

## Installation

  `npm install @kenster004/rvalid`

## Usage

    var numFormatter = require('@kenster004/rvalid');

    var formattedNum = numFormatter(35666);
  
  
  Output should be `35,666`


## Tests

  `npm test`

## Contributing

In lieu of a formal style guide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code.

## License

[MIT LICENSE](LICENSE)
npm package: @kent426/git-ssh
Description: switching among different github accounts
Author: kent426
Latest version: 1.0.8

# git-ssh

git-ssh is for switching among different github accounts, such as work-related account, personal account etc.

Didn't check existing solution; just create this simple one for myself switching between work-account and personal-account.

```
git-ssh <command>

Commands:
  git-ssh init               init ~/.git-ssh/config.json
  git-ssh ls                 ls github accounts in
                             ~/.git-ssh/config.json
  git-ssh add                add github account by answering prompts:
                             - 0. profile-name
                             - 1. username;
                             - 2. email;
                             - 3. ssh-private-key file path;

  git-ssh use [profileName]  use specific ssh name for git

Options:
  --version  Show version number                               [boolean]
  --help     Show help                                         [boolean]
```
 
 ## How does it work?

 Before switching github account using ssh, we need to setup [GitHub with SSH](https://docs.github.com/en/authentication/connecting-to-github-with-ssh) or follow steps in [this one](https://jdblischak.github.io/2014-09-18-chicago/novice/git/05-sshkeys.html).

Basically, this cli will init `~/.git-ssh/config.json`, this file to store git-name, git-email, and git-ssh-private-key file path as an json object.

Example one is just like this: 
```
{
    "kent": {
        "ssh_private_path": "~/.ssh/kentgithub",
        "name": "kent",
        "email": "kent@thisismyemail.com"
    },
    "aaa": {
        "ssh_private_path": "~/.ssh/aaakey",
        "name": "aaa",
        "email": "aaa@example.com"
    }
}
```

- `git-ssh ls` just gonna print out this json object in `~/.git-ssh/config.json`.

- `git-ssh add` will ask you name, email and your ssh-key-path in your file system and push them into the config json object; please create your ssh key pair beforehand.

- `git-ssh use` can be used like `git-ssh use kent` in above example.
under the hood, it simple runs three command to set git `user.name`, `user.email` and `core.sshcommand` in global scope:
```
git config --global core.sshCommand "ssh -i [the-ssh-path-goes-here]"
git config --global  user.name [name-goes-in-here]
git config --global  user.email [email-goes-in-here]
```


By running `git-ssh use [account]` in advance, now your can write comment with the account you want, and push, pull github repos with the correct permissions.
npm package: @kent426/hardhat-blockscout-verify
Description: Hardhat plugin for solidity contract verification on Blockscout block explorer
Author: ericxstone
Latest version: 1.0.1

# hardhat-blockscout-verify

[Hardhat](https://hardhat.org) plugin for solidity contract verification on Blockscout block explorer

## What

This plugin will help you to verify your solidity contract on Blockscout block explorer. Blockscout block explorer is a block explorer implmented for EVM-supported blockchain. Unlike Ethscan, Blockscout is an open-sourced project. There are many EVM-supported blockchain and sidechains has adopted Blockscout as their block explorer, including Moonriver (Moonbeam on Kusama), POA Network, xDai Chain, Ethereum Classic. Blockscout block explorer offers an API where you can verify your solidity contracts, but you will have to flatten the contract beforehand. This plugin helps you to do it in one shot.

## Installation

```bash
npm install @ericxstone/hardhat-blockscout-verify
```

Import the plugin in your `hardhat.config.js`:

```js
require("@ericxstone/hardhat-blockscout-verify");
```

Or if you are using TypeScript, in your `hardhat.config.ts`:

```ts
import "@ericxstone/hardhat-blockscout-verify";
import {SOLIDITY_VERSION, EVM_VERSION} from "@ericxstone/hardhat-blockscout-verify";
```

## Tasks

This plugin adds the `blockscout-verify` task to Hardhat:
```bash
npx hardhat blockscout-verify <contract file path> <contract address>
```

## Configuration

This plugin extends the `HardhatUserConfig` object with an optional `blockscoutVerify` field.

This is an example of how to set it:

```js
module.exports = {
  blockscoutVerify: {
    blockscoutURL: "<BLOCKSCOUT_EXPLORER_URL>",
    contracts: {
      "<CONTRACT_NAME>": {
        compilerVersion: SOLIDITY_VERSION.<CONTRACT_COMPILER_VERSION>, // checkout enum SOLIDITY_VERSION
        optimization: true,
        evmVersion: EVM_VERSION.<EVM_VERSION>, // checkout enum SOLIDITY_VERSION
        optimizationRuns: 999999,
      },
    },
  },
};
```

## Usage

There are no additional steps you need to take for this plugin to work.

Install it and access ethers through the Hardhat Runtime Environment anywhere
you need it (tasks, scripts, tests, etc).

You can use the plugin as CLI
```bash
npx hardhat blockscout-verify <contract file path> <contract address>
```

If you use it in a script, the task parameters are `filePath` and `address`.

Example:
```js
await hre.run("blockscout-verify", {
    filePath: "<contract file path>",
    address: "<contract address>"
})
```

## Known Issue

- Upgradeable contracts is current not supported.
npm package: @kentan-official/core
Description: This small framework has the goal to provide a more efficient way to generate test data.
Author: Gregor Woiwode
Latest version: 2.0.8

# `@kentan-official/core`

> Generate and maintain `Sketches` for your tests.

Please have a look at the [Documentation](https://kentan-official.github.io/kentan)
to learn more about the package `kentan-official/core`
npm package: @kentan-official/schematics
Description: Schematics for @kentan-official/core automating creation of sketches
Author: Gregor Woiwode
Latest version: 2.0.7

# `@kentan-official/schematics`

> Generate `Sketches` automatically with [Angular CLI](https://cli.angular.io).

Please have a look at the [Documentation](https://kentan-official.github.io/kentan/docs/#/angular-cli/schematics)
to learn how to use `@kentan-official/schematics` in your [Angular](https://angular.io) Project.
npm package: @kentandrian/tailwindcss-debug-screens
Description: A Tailwind CSS component that shows the currently active screen (responsive breakpoint).
Author: KenTandrian
Latest version: 2.3.1

# Tailwind CSS Debug Screens 📱

A Tailwind CSS component that shows the currently active screen (responsive breakpoint).

[Demo](https://joren.co/tailwindcss-debug-screens-demo/)

<img src="screenshot.png" width="534">

## Install

Requires **Tailwind v1.0** or higher.

1. Install the plugin:

```bash
npm install tailwindcss-debug-screens --save-dev
```

2. Add it to your `tailwind.config.js` file:

```js
// tailwind.config.js
module.exports = {
  //...
  plugins: [
    require('tailwindcss-debug-screens'),
  ]
}
```

3. Add the class `debug-screens` to your `<body>` tag:

```html
<body class="debug-screens">
```

### Disable in production

#### Laravel

```twig
<body class="{{ app()->isLocal() ? 'debug-screens' : '' }}">
```

#### Craft CMS

```twig
<body class="{{ devMode ? 'debug-screens' : '' }}">
```

## Customization

You can customize this plugin in the `theme.debugScreens` section of your `tailwind.config.js` file.

### Ignore screens

To ignore a specific screen (for instance [dark mode](https://tailwindcss.com/docs/dark-mode)), add the screen name to the `ignore` configuration array. `dark` is ignored by default.

```js
// tailwind.config.js
module.exports = {
  theme: {
    debugScreens: {
      ignore: ['dark'],
    },
  },
  plugins: [
    require('tailwindcss-debug-screens'),
  ],
}
```

### Position

The first item of the position configuration array can be `top` or `bottom`, the second item can be `left` or `right`.

```js
// tailwind.config.js
module.exports = {
  theme: {
    debugScreens: {
      position: ['bottom', 'left'],
    },
  },
  plugins: [
    require('tailwindcss-debug-screens'),
  ],
}
```

### Styles

Take a look at the [index.js](index.js) file to see all the default styles.

```js
// tailwind.config.js
module.exports = {
  theme: {
    debugScreens: {
      style: {
        backgroundColor: '#C0FFEE',
        color: 'black',
        // ...
      },
    },
  },
  plugins: [
    require('tailwindcss-debug-screens'),
  ],
}
```

### Prefix

Modify the debug label prefix with the `prefix` configuration option.

```js
// tailwind.config.js
module.exports = {
  theme: {
    debugScreens: {
      prefix: 'screen: ',
    },
  },
  plugins: [
    require('tailwindcss-debug-screens'),
  ],
}
```

### Selector

Modify the debug element selector with the `selector` configuration option.

```js
// tailwind.config.js
module.exports = {
  theme: {
    debugScreens: {
      selector: '.debug-screens',
    },
  },
  plugins: [
    require('tailwindcss-debug-screens'),
  ],
}
```
npm package: @kentaroutakeda/tinify-all-images
Description: 指定ディレクトリ配下の全てのpng/jpgをtinypngに通す
Author: KentarouTakeda
Latest version: 0.0.2
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

ERROR: No README data found!
npm package: @kentaylorappdev/get-pinned-repos
Description: Get the pinned repos for a github username
Author: Ken Taylor
Latest version: 1.1.3

# get-pinned-repos 
Get the pinned repos for a github username.
No token required.

getPinnedRepos_v2 is recommended. getPinnedRepos is the old version and will be removed soon.

Feel free to submit feature requests or issues on the github page.

Or send an email to kentaylorappdev@gmail.com

## Installation

```bash
npm install --save @kentaylorappdev/get-pinned-repos
```
includes typescript support

## Usage


``` javascript
import { getPinnedRepos_v2 } from '@kentaylorappdev/get-pinned-repos'
getPinnedRepos_v2('ktappdev')
  .then(console.log)
  ```
``` javascript
[
  {
    repo: 'KTAppDev/notes-app-frontend-public',
    description: 'Secret Note Now you can add or replace an image with every note! Notes and Images stored on "secretnote" can be public or private,depending on the title. Simple titles lead to highly visible notes…',
    languages: 'Vue',
    stars: 3
  },
  {
    repo: 'KTAppDev/tm-nextjs',
    description: 'Meet Tools Manager: Your NextJS sidekick for keeping all your favorite tools in check. Organize,access,conquer – all with a dash of NextJS magic.',
    languages: 'TypeScript',
    stars: 0
  },
... ...
Array of objects with repo, description, languages and stars
  ]
```
<br>

### Old Version
```javascript
import { getPinnedRepos } from '@kentaylorappdev/get-pinned-repos'

getPinnedRepos('ktappdev')
  .then(console.log)
  ```
``` javascript
[ "KTAppDev/notes-app-frontend-public", "KTAppDev/tm-nextjs",
  "KTAppDev/notes-express-api-public", "KTAppDev/Switch-Power-profile",
  "KTAppDev/bad-words-thing", "KTAppDev/review-it-nextjs-v7"
]
This remains in here for anyone who started using the tool from day 1
```

## License

MIT


# get-pinned-repos
npm package: @kentcdodds/log-module
Description: A CLI tool that imports a module and logs all its exports with syntax highlighting.
Latest version: 1.1.1

# @kentcdodds/log-module

A CLI tool that imports a module and logs all its exports with syntax highlighting.

## Usage

```bash
npx @kentcdodds/log-module ./path/to/module.ts
```

Or install globally:

```bash
npm install -g @kentcdodds/log-module
log-module ./path/to/module.ts
```

## Features

- **Logs all exports** with colorized output using `util.inspect`
- **Awaits promises** and indicates when a value was awaited
- **Handles rejected promises** gracefully with clean stack traces
- **Syntax-highlighted code frames** for syntax errors (via `@babel/code-frame`)
- **Works with Node.js and Bun**

## Example

Given a module:

```typescript
// example.ts
export const name = 'world'
export const config = { nested: { deep: true } }
export const getData = async () => ({ data: 'fetched' })
export const promise = Promise.resolve({ resolved: 'success' })
export const failing = Promise.reject(new Error('Oops'))
```

Running `log-module example.ts` outputs:

```
name:
  'world'

config:
  { nested: { deep: true } }

getData:
  [AsyncFunction: getData]

promise (awaited):
  { resolved: 'success' }

failing (awaited):
  rejected promise: Error: Oops
      at /path/to/example.ts:5:40
```

## Syntax Errors

When a module has a syntax error, you get a highlighted code frame:

```
Failed to import module: Expected ',', got 'missing'

  1 | export const broken = {
  2 |   foo: "bar"
> 3 |   missing: "comma"
    | ^ Expected ',', got 'missing'
  4 | }
```

## License

MIT
npm package: @kentcdodds/modelcontextprotocol_inspector-client
Description: Client-side application for the Model Context Protocol inspector
Author: Anthropic, PBC
Latest version: 0.17.0-alpha.0

# React + TypeScript + 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/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh

## Expanding the ESLint configuration

If you are developing a production application, we recommend updating the configuration to enable type aware lint rules:

- Configure the top-level `parserOptions` property like this:

```js
export default tseslint.config({
  languageOptions: {
    // other options...
    parserOptions: {
      project: ["./tsconfig.node.json", "./tsconfig.app.json"],
      tsconfigRootDir: import.meta.dirname,
    },
  },
});
```

- Replace `tseslint.configs.recommended` to `tseslint.configs.recommendedTypeChecked` or `tseslint.configs.strictTypeChecked`
- Optionally add `...tseslint.configs.stylisticTypeChecked`
- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and update the config:

```js
// eslint.config.js
import react from "eslint-plugin-react";

export default tseslint.config({
  // Set the react version
  settings: { react: { version: "18.3" } },
  plugins: {
    // Add the react plugin
    react,
  },
  rules: {
    // other rules...
    // Enable its recommended rules
    ...react.configs.recommended.rules,
    ...react.configs["jsx-runtime"].rules,
  },
});
```
npm package: @kentcdodds/recoil-with-utils
Description: Recoil - A React state management library for complex UIs
Latest version: 0.0.8-alpha.0

# Recoil

[![Node.js CI](https://github.com/facebookexperimental/Recoil/workflows/Node.js%20CI/badge.svg)](https://github.com/facebookexperimental/Recoil/actions)

Recoil is an experimental set of utilities for state management with React. Please see the website: https://recoiljs.org

Please see the LICENSE file for the MIT license under which Recoil is provided.
npm package: @kentcdodds/tmp-modelcontextprotocol_-client
Description: Client-side application for the Model Context Protocol inspector
Author: Anthropic, PBC
Latest version: 0.12.0-alpha.1

# React + TypeScript + 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/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh

## Expanding the ESLint configuration

If you are developing a production application, we recommend updating the configuration to enable type aware lint rules:

- Configure the top-level `parserOptions` property like this:

```js
export default tseslint.config({
  languageOptions: {
    // other options...
    parserOptions: {
      project: ["./tsconfig.node.json", "./tsconfig.app.json"],
      tsconfigRootDir: import.meta.dirname,
    },
  },
});
```

- Replace `tseslint.configs.recommended` to `tseslint.configs.recommendedTypeChecked` or `tseslint.configs.strictTypeChecked`
- Optionally add `...tseslint.configs.stylisticTypeChecked`
- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and update the config:

```js
// eslint.config.js
import react from "eslint-plugin-react";

export default tseslint.config({
  // Set the react version
  settings: { react: { version: "18.3" } },
  plugins: {
    // Add the react plugin
    react,
  },
  rules: {
    // other rules...
    // Enable its recommended rules
    ...react.configs.recommended.rules,
    ...react.configs["jsx-runtime"].rules,
  },
});
```
npm package: @kentcdodds/tmp-random-number-2
Description: Do not use this, it is fake
Author: Kent C. Dodds
Latest version: 1.0.4

<div align="center">
<h1>@kentcdodds/tmp-random-number-2</h1>

<p>This is just a temporary package</p>
</div>

<hr />

## The problem

You need to get a random number.

## This solution

This is a function that calls `Math.random()`. This is just a temporary package
used for educational purposes.

## Installation

This module is distributed via [npm][npm] which is bundled with [node][node] and
should be installed as one of your project's `dependencies`:

```
npm install --save @kentcdodds/tmp-random-number-2
```

## Usage

```javascript
const randomNumber = require('@kentcdodds/tmp-random-number-2')
console.log(randomNumber(0, 1)) // logs a random number between 0 and 1
```

## Inspiration

This package was inspired by randomness.

## Other Solutions

I'm not aware of any.

## LICENSE

MIT

[npm]: https://www.npmjs.com/
[node]: https://nodejs.org
npm package: @kentcdodds/typecheck-modules
Description: Typecheck one or more TypeScript files while resolving the TypeScript version from the target module(s), not from this CLI.
Latest version: 1.0.0

# @kentcdodds/typecheck-modules

Typecheck one or more TypeScript files while resolving the TypeScript version
from the target module(s), not from this CLI.

## Install

```sh
npm install -D @kentcdodds/typecheck-modules
```

## Usage

```sh
npx @kentcdodds/typecheck-modules <file|dir|glob ...>
typecheck-modules <file|dir|glob ...>
node ./cli.js <file|dir|glob ...>
```

Examples:

```sh
typecheck-modules ./playground
typecheck-modules ./playground/index.ts
typecheck-modules "./playground/**/*.{ts,tsx}"
typecheck-modules --ignore "**/*.test.ts" ./playground
```

### What it does

- Resolves `typescript` from the nearest `node_modules` above each module
  (using the closest `package.json` when available).
- If a `tsconfig.json` is found, it uses those compiler options.
- If no `tsconfig.json` is found, it falls back to TypeScript defaults and
  warns once per directory group (similar to `tsc file.ts` behavior).
- Accepts directories and searches **recursively** for `.ts` and `.tsx`.
- Accepts globs cross‑platform (no shell expansion required).

### Ignoring files

By default, these are ignored during directory and glob expansion:

- `node_modules`, `.git`, `dist`, `build`, `out`, `.cache`, `coverage`,
  `test-output`, `test-results`, `test-reports`

Provide `--ignore` to replace the defaults entirely:

```sh
typecheck-modules --ignore "**/*.test.ts" ./playground
typecheck-modules --ignore "**/fixtures/**" "./playground/**/*.ts"
```

## License

MIT