open-index/open-npm huggingface dataset:
npm package: @langri-sha/babel-preset
Description: This is Babel preset that suitable for targetting modern browsers and runtimes, with support for [TypeScript], [Emotion] and [React].
Author: Filip Dupanović
Latest version: 0.5.4

# @langri-sha/babel-preset

This is Babel preset that suitable for targetting modern browsers and runtimes,
with support for [TypeScript], [Emotion] and [React].

## Usage

Install the preset and it's realted dependencies:

```sh
npm install -D @babel/core @langri-sha/babel-preset
```

Add a root Babel configuration:

```js
// babel.config.js
module.exports = {
  presets: ['@langri-sha/babel-preset'],
}
```

For usage with [Webpack] and [`babel-loader`]:

```js
// webpack.config.js
module.exports = {
  module: {
    rules: [
      {
        test: /\.(c|m)?(t|j)sx?$/,
        loader: 'babel-loader',
      },
    ],
  },
}
```

## See

- [Using Babel]

[`babel-loader`]: https://www.npmjs.com/package/babel-loader
[emotion]: https://emotion.sh/docs/babel
[react]: https://react.dev/learn
[typescript]:
  https://www.typescriptlang.org/docs/handbook/babel-with-typescript.html
[using babel]: https://babeljs.io/setup
[webpack]: https://webpack.js.org/loaders/babel-loader/
npm package: @langri-sha/babel-test
Description: Provides convenience helpers for inspecting and testing your [Babel] preset.
Author: Filip Dupanović
Latest version: 0.6.5

# @langri-sha/babel-test

Provides convenience helpers for inspecting and testing your [Babel] preset.

## Features

- load Babel presets with options, and produce a serializable, cross-platform
  output of all the loaded plugins and their settings

## Usage

Install related dependencies:

```sh
npm install -D @babel/core @langri-sha/babel-test
```

Then load the preset plugins:

```js
// Load preset plugins.
await loadPresetPlugins(
  // Set Babel API environment.
  'development',
  [
    // Preset to load.
    '@babel/preset-env',
    // Configure related preset options.
    { test: 'TEST_OPTIONS' },
  ]
)

/*
[
  [
    "<WORKSPACE>/node_modules/@babel/preset-env/index.js",
    {
      "foobar": "quuxnorf",
    },
  ],
]
```

[babel]: https://babeljs.io/docs/config-files
npm package: @langri-sha/lint-staged
Description: A [`lint-staged`] configuration for running [ESLint] and [Prettier] on pre-commit hooks with [Husky], respecting ignored files.
Author: Filip Dupanović
Latest version: 0.9.0

# @langri-sha/lint-staged

A [`lint-staged`] configuration for running [ESLint] and [Prettier] on
pre-commit hooks with [Husky], respecting ignored files.

## Usage

Install the required dependencies:

```sh
npm install -D eslint prettier husky lint-staged @langri-sha/lint-staged
```

Then add your configuration:

```js
// lint-staged.config.(m)js
import config from '@langri-sha/lint-staged'

export default {
  ...config,
  /* ... */
}
```

Configure Husky:

```
echo "npm -q lint-staged" > .husky-precommit
```

[`lint-staged`]: https://github.com/lint-staged/lint-staged
[eslint]: https://eslint.org/docs/latest/use/getting-started
[husky]: https://typicode.github.io/husky/get-started.html
[prettier]: https://prettier.io/docs/en/
npm package: @langri-sha/monorepo
Description: A utility package that helps you resolve paths relative to your monorepo root.
Author: Filip Dupanović
Latest version: 0.5.5

# @langri-sha/monorepo

A utility package that helps you resolve paths relative to your monorepo root.

Useful when you want packages from your workspaces to read and write from a
common path, even when changing directories in your workspace.

## Usage

Install the package:

```sh
npm install -D @langri-sha/monorepo
```

The root of your repository will be synchronously resolved by going upwards
until a package manager's lockfile is found, or it an error is thrown:

```js
// /workspaces/acme-monorepo/packages/myapp/index.js
import monorepo from '@langri-sha/monorepo'

monorepo.resolve('build', 'myapp') === '/workspaces/acme-monorepo/build/myapp'
```

If you need to switch the root, for example during tests, you can manually
configure the resolved root:

```js
monorepo.root = tempy.directory()

// ...elsewhere in your codebase
monorepo.resolve('build', 'myapp') === '/tmp/aa11bb22/build/myapp'
```

## See

- [`find-up`]

[`find-up`]: https://github.com/sindresorhus/find-up
npm package: @langri-sha/prettier
Description: An opinionated [Prettier] configuration that focuses on easy to read and maintainable code, intended to be used on laptops and single monitors.
Author: Filip Dupanović
Latest version: 0.4.0

# @langri-sha/prettier

An opinionated [Prettier] configuration that focuses on easy to read and
maintainable code, intended to be used on laptops and single monitors.

Works great in conjunction with [EditorConfig] in your workspace.

## Usage

Install the dependency:

```sh
npm install -D @langri-sha/prettier
```

Add your configuration to `prettier.config.mjs`:

```js
export { default } from '@langri-sha/prettier'
```

[editorconfig]: https://editorconfig.org/
[prettier]: https://prettier.io/docs/en/
npm package: @langri-sha/projen-beachball
Description: A [projen] component for configuring [Beachball].
Author: Filip Dupanović
Latest version: 0.5.0

# @langri-sha/beachball

A [projen] component for configuring [Beachball].

[projen]: https://projen.io/
[beachball]: https://microsoft.github.io/beachball/
npm package: @langri-sha/projen-codeowners
Description: A [projen] component for managing [CODEOWNERS].
Author: Filip Dupanović
Latest version: 0.5.0

# @langri-sha/projen-codeowners

A [projen] component for managing [CODEOWNERS].

## Usage

```sh
npm install -D projen @langri-sha/projen-codeowners`.
```

Then, create the `Codeowners` component for your root project:

```js
import { Project } from 'projen'
import { Codeowners } from '@langri-sha/projen-codeowners`

const project = new Project({
  name: 'my-project',
})

new Codeowners(project, {
  '*': '@admins',
  '*.js': ['@developers', '@frontend']
}
```

[projen]: https://projen.io/
[codeowners]:
  https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
npm package: @langri-sha/projen-editorconfig
Description: A [projen] component that you can add to your project to author [EditorConfig] configurations.
Author: Filip Dupanović
Latest version: 0.6.0

# @langri-sha/editorconfig

A [projen] component that you can add to your project to author [EditorConfig]
configurations.

## Usage

Install dependencies:

```sh
npm install -D @langri-sha/editorconfig
```

Then, create an `EditorConfig` component for your projects:

```js
import { Project } from 'projen'
import { EditorConfig } from '@langri-sha/editorconfig'

const project = new Project({
  name: 'my-project',
})

new EditorConfig(project, {
  '*': {
    indent_size: 2,
  },
  Dockerfile: {
    indent_size: 4,
    indent_style: 'tab',
  },
})
```

[editorconfig]: https://editorconfig.org/
[projen]: https://projen.io/
npm package: @langri-sha/projen-eslint
Description: A [projen] component for configuring [ESLint].
Author: Filip Dupanović
Latest version: 0.3.0

# @langri-sha/projen-eslint

A [projen] component for configuring [ESLint].

## Usage

Install dependencies:

```sh
npm install -D eslint @langri-sha/projen-eslint
```

Then, create an `ESLint` component for your project:

```js
import { Project } from 'projen'
import { ESLint } from '@langri-sha/projen-eslint'

const project = new Project({
  name: 'my-project',
})

new ESLint(project, {
  ignorePatterns: ['.*'],
  extends: '@langri-sha/eslint-config'
  config: [
    {
      rules: {
        'unicorn/prefer-node-modules': 'error'
      }
    }
  ]
})
```

[eslint]: https://eslint.org/docs/latest/
[projen]: https://projen.io/
npm package: @langri-sha/projen-husky
Description: A [projen] component for managing [CODEOWNERS].
Author: Filip Dupanović
Latest version: 0.3.5

# @langri-sha/projen-codeowners

A [projen] component for managing [CODEOWNERS].

## Usage

```sh
npm install -D projen @langri-sha/projen-codeowners`.
```

Then, create the `Codeowners` component for your root project:

```js
import { Project } from 'projen'
import { Codeowners } from '@langri-sha/projen-codeowners`

const project = new Project({
  name: 'my-project',
})

new Codeowners(project, {
  '*': '@admins',
  '*.js': ['@developers', '@frontend']
}
```

[projen]: https://projen.io/
[codeowners]:
  https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
npm package: @langri-sha/projen-jest-config
Description: A [projen] component for authoring [Jest] configurations. This component is suitable for monorepos and offers support for extending from an existing Jest configuration.
Author: Filip Dupanović
Latest version: 0.4.0

# @langri-sha/projen-jest-config

A [projen] component for authoring [Jest] configurations. This component is
suitable for monorepos and offers support for extending from an existing Jest
configuration.

## Usage

Install required dependencies:

```sh
npm install -D jest @langri-sha/projen-jest-config
```

Configure Jest for your project:

```ts
// .projenrc.ts
import { Project } from 'projen'
import { JestConfig } from '@langri-sha/projen-jest-config'

const project = new Project({
  name: 'my-project',
})

new JestConfig(project, {
  // Configure the desired Jest configuration module. Optional.
  filename: 'jest.config.ts',
  // Choose a desired Jest configuration module. Optional.
  extends: '@langri-sha/jest-config',
  // Inline your preferred configuration overrides.
  config: {
    testEnvironment: 'node',
  },
})
```

This should produce the following output:

```ts
// jest.config.ts
import type { Config } from 'jest'
import defaults from '@langri-sha/jest-config'

const config: Config = {
  ...defaults,
  testEnvironment: 'node',
}

export default config
```

[projen]: https://projen.io/
[jest]: https://jestjs.io/docs/
npm package: @langri-sha/projen-license
Description: A [projen] component for generating license files using [`license-o-matic`].
Author: Filip Dupanović
Latest version: 0.3.3

# @langri-sha/projen-license

A [projen] component for generating license files using [`license-o-matic`].

## Usage

Install dependencies:

```sh
npm install -D projen @langri-sha/projen-license
```

Then, create an `License` component for your projects:

```js
import { Project } from 'projen'
import { License } from '@langri-sha/license'

const project = new Project({
  name: 'my-project',
})

new License(project, {
  filename: 'license',
  spdx: 'MIT',
  copyrightHolder: 'John Smith <john.smith@example.com>',
  copyrightYear: '2000',
})
```

[license-o-matic]: https://www.npmjs.com/package/license-o-matic
[projen]: https://projen.io/
npm package: @langri-sha/projen-lint-synthesized
Description: A [projen] component that you can add to your project to configure linters for synthesized files.
Author: Filip Dupanović
Latest version: 0.5.1

# @langri-sha/projen-lint-synthesized

A [projen] component that you can add to your project to configure linters for
synthesized files.

This is especially uself for workspaces that are migrating to projen, or rely on
existing lint configurations.

[projen]: https://projen.io/
npm package: @langri-sha/projen-prettier
Description: A [projen] component for configuring [Prettier].
Author: Filip Dupanović
Latest version: 0.4.0

# @langri-sha/projen-prettier

A [projen] component for configuring [Prettier].

## Usage

Install dependencies:

```sh
npm install -D projen @langri-sha/projen-prettier
```

Then, create an `Prettier` component for your project:

```js
import { Project } from 'projen'
import { License } from '@langri-sha/projen-prettier'

const project = new Project({
  name: 'my-project',
})

new Prettier(project, {
  filename: '',
  spdx: 'MIT',
  copyrightHolder: 'John Smith <john.smith@example.com>',
  copyrightYear: '2000',
})
```

[prettier]: https://prettier.io/docs/en/
[projen]: https://projen.io/
npm package: @langri-sha/projen-project
Description: Collection of [projen] templates for bootstraping monorepos and workspace projects.
Author: Filip Dupanović
Latest version: 0.16.1

# @langri-sha/projen-project

Collection of [projen] templates for bootstraping monorepos and workspace
projects.

## Features

- managing [Beacbhall] configuration for publishing packages
- configures [PNPM] [workspaces]
- configures [`@langri-sha/tsconfig`] for TypeScript monorepos
- managing Git hooks with [`@langri-sha/projen-husky`]
- configures extensive list of Git ignore patterns
- manages [code owners] with [`@langri-sha/projen-codeowners`]

[`@langri-sha/codeowners`]: https://www.npmjs.com/package/@langri-sha/codeowners
[`@langri-sha/projen-husky`]:
  https://www.npmjs.com/package/@langri-sha/projen-husky
[`@langri-sha/tsconfig`]: https://www.npmjs.com/package/@langri-sha/tsconfig
[beachball]: https://microsoft.github.io/beachball/
[code owners]:
  https://docs.github.com/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
[pnpm]: https://pnpm.io
[projen]: https://projen.io/
[workspaces]: https://pnpm.io/workspaces
npm package: @langri-sha/projen-readme
Description: A [projen] component for creating sample [`README` files].
Author: Filip Dupanović
Latest version: 0.1.0

# @langri-sha/readme

A [projen] component for creating sample [`README` files].

## Usage

Install dependencies:

```sh
npm install -D @langri-sha/readme
```

Then, create a `README` component for your projects:

```js
import { Project } from 'projen'
import { ReadmeFile } from '@langri-sha/readme'

const project = new Project({
  name: 'my-project',
})

new ReadmeFile(project)
```

[readme files]:
  https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-readmes
[projen]: https://projen.io/
npm package: @langri-sha/projen-renovate
Description: A [projen] component for authoring [Renovate] configurations.
Author: Filip Dupanović
Latest version: 0.4.4

# @langri-sha/projen-renovate

A [projen] component for authoring [Renovate] configurations.

## Usage

```sh
npm install -D projen @langri-sha/projen-renovate
```

Add the Renovate configuration:

```js
import { Project } from 'projen'
import { Renovate } from '@langri-sha/projen-renovate'

const project = new Project({
  name: 'test',
})

new Renovate(project, {
  addLabels: ['dependencies'],
})

project.synth()
```

## See also

- [Renovate Docs]
- [Renovate NPM Package]

[projen]: https://projen.io/
[renovate docs]: https://docs.renovatebot.com/
[renovate npm package]: https://www.npmjs.com/package/renovate
[renovate]: https://www.mend.io/renovate/
npm package: @langri-sha/projen-swcrc
Description: A [projen] component for [configuring] [SWC].
Author: Filip Dupanović
Latest version: 0.1.4

# @langri-sha/projen-swcrc

A [projen] component for [configuring] [SWC].

## Usage

```sh
npm install -D projen @langri-sha/projen-swcrc
```

Add the SWC configuration:

```js
import { Project } from 'projen'
import { SWCConfiguration } from '@langri-sha/projen-swcrc'

const project = new Project({
  name: 'test',
})

new SWCConfiguration(project, {
  jsc: {
    parser: {
      syntax: 'ecmascript',
    },
  },
})

project.synth()
```

[configuring]: https://swc.rs/docs/configuration/swcrc
[projen]: https://projen.io/
[swc]: https://swc.rs/
npm package: @langri-sha/projen-typescript-config
Description: A [projen] component for managing [TSConfig] files for [TypeScript] projects.
Author: Filip Dupanović
Latest version: 0.5.3

# @langri-sha/typescript-config

A [projen] component for managing [TSConfig] files for [TypeScript] projects.

Offers full support for configuring TypeScript via [`@schemastore/tsconfig`], as
well as a handful of helpers that make it easy to maintain several TypeScript
projects inside a monorepo.

## Usage

Install required dependencies:

```sh
npm install projen @langri-sha/typescript-config
```

Create a TypeScript configuration for your project:

```sh
import { Project } from 'projen'
import { TypeScriptConfig } from '@langri-sha/typescript-config'

const project = new Project({
  name: 'test',
})

const tsconfig = new TypeScriptConfig(project)

const tsconfigBuild = new TypeScriptConfig(project, {
  fileName: 'tsconfig.build.json',
  config: {
    extends: ['tsconfig.json'],
    compilerOptions: {
      target: 'es2020',
    },
  }
})

project.synth()
```

[@schemastore/tsconfig]: https://github.com/schemastore/tsconfig
[projen]: https://projen.io/
[tsconfig]: https://www.typescriptlang.org/tsconfig.
[typescript]: https://www.typescriptlang.org/
npm package: @langri-sha/schemastore-to-typescript
Description: Fetch [JSON Schema] from the [JSON Schema Store] and compiles [TypeScript typings].
Author: Filip Dupanović
Latest version: 0.1.4

# @langri-sha/schemastore-to-typescript

Fetch [JSON Schema] from the [JSON Schema Store] and compiles [TypeScript
typings].

## Features

- uses [`json-schema-to-typescript`]
- offline cache using [`got`]

[got]: https://www.npmjs.com/package/got
[json schema store]: https://www.schemastore.org/json/
[json schema]: https://json-schema.org/
[json-schema-to-typescript]:
  https://www.npmjs.com/package/json-schema-to-typescript
[typescript typings]:
  https://www.typescriptlang.org/docs/handbook/declaration-files/templates/module-d-ts.html
npm package: @langri-sha/webpack
Description: A package that aggregates [Webpack] dependencies, making it easier to use Webpack for your builds in monorepos.
Author: Filip Dupanović
Latest version: 0.5.7

# @langri-sha/webpack

A package that aggregates [Webpack] dependencies, making it easier to use
Webpack for your builds in monorepos.

## Features

- provides a resolve loader, so you can build in the monorepo without having to
  install dependencies in each package
- supports resolving TypeScript modules out of the box

## Usage

Install the dependencies:

```sh
npm install -D wepback webpack-cli
```

Then configure your Webpack configuration:

```js
// webpack.config.js
import { type Configuration, resolve, resolveLoader } from '@langri-sha/webpack'

export default {
  resolve,
  resolveLoader
} as Configuration
```

[webpack]: https://webpack.js.org/
npm package: @langsam/richmann
Description: A simple project with wasm-pack
Latest version: 1.0.0

# Richmannsche Mischungsregel

Build a Webassembly module that provides functions that allow different calculations based on the [Richmannsche Mischungsregel](https://de.wikipedia.org/wiki/Richmannsche_Mischungsregel).

## Build

To build the npm package:

```bash
wasm-pack build --scope [npm-username]
```

To publish the npm package:

```bash
cd pkg
npm publish --access=public
```
npm package: @langstory/langstory
Description: This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Author: Yoaquim Cintron
Latest version: 0.0.1-rc2

# 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 {
  // other rules...
  parserOptions: {
    ecmaVersion: 'latest',
    sourceType: 'module',
    project: ['./tsconfig.json', './tsconfig.node.json'],
    tsconfigRootDir: __dirname,
  },
}
```

- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked`
- Optionally add `plugin:@typescript-eslint/stylistic-type-checked`
- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list
npm package: @langtail/openai-chat-tokens
Description: Estimate the number of tokens an OpenAI chat completion request will use
Author: Harry Marr
Latest version: 0.3.0

# openai-chat-tokens

[![npm version](https://badge.fury.io/js/openai-chat-tokens.svg)](https://badge.fury.io/js/openai-chat-tokens)
[![CI](https://github.com/hmarr/openai-chat-tokens/actions/workflows/ci.yml/badge.svg)](https://github.com/hmarr/openai-chat-tokens/actions/workflows/ci.yml)

A TypeScript / JavaScript library for estimating the number of tokens an OpenAI chat completion request will use.

Estimating token usage for chat completions isn't quite as easy as it sounds.

For regular chat messages, you need to consider how the messages are formatted by OpenAI when they're provided to the model, as they don't simply dump the JSON messages they receive via the API into the model.

For function calling, things are even more complex, as the OpenAPI-style function definitions get rewritten into TypeScript type definitions.

This library handles both of those cases, as well as a minor adjustment needed for handling the _results_ of function calling. [tiktoken](https://github.com/dqbd/tiktoken) is used to do the tokenization.

## Usage

```typescript
import { promptTokensEstimate } from "openai-chat-tokens";

const estimate = promptTokensEstimate({
  messages: [
    { role: "system", content: "These aren't the droids you're looking for" },
    { role: "user", content: "You can go about your business. Move along." },
  ],
  functions: [
    {
      name: "activate_hyperdrive",
      description: "Activate the hyperdrive",
      parameters: {
        type: "object",
        properties: {
          destination: { type: "string" },
        },
      },
    },
  ],
});
```

## Development and testing

Built in TypeScript, tested with Jest.

```bash
$ npm install
$ npm test
```

When adding new test cases or debugging token count mismatches, it can be helpful to validate the estimated tokens in the tests against the live OpenAI API. To do this:

1. Set up the `OPENAI_API_KEY` environment variable with a live API key
2. Add `validate: true` to one of the test examples, or set `validateAll` to `true` in `token-counts.test.ts`, then run the tests

## References

1. "Counting tokens for chat completions API calls" in OpenAI's ["How to count tokens with tiktoken" notebook](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb)
2. A post about [counting function call tokens](https://community.openai.com/t/how-to-calculate-the-tokens-when-using-function-call/266573/23) on the OpenAI forum.
npm package: @langtail/react-datasheet-grid
Description: An Excel-like React component to create beautiful spreadsheets.
Author: Nicolas Keller
Latest version: 0.1.2-alpha0

# react-datasheet-grid

![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/nick-keller/react-datasheet-grid/tests.yml?branch=master)
[![Coveralls](https://img.shields.io/coveralls/github/nick-keller/react-datasheet-grid)](https://coveralls.io/github/nick-keller/react-datasheet-grid)
[![npm](https://img.shields.io/npm/dm/react-datasheet-grid)](https://www.npmjs.com/package/react-datasheet-grid)
[![GitHub last commit](https://img.shields.io/github/last-commit/nick-keller/react-datasheet-grid)](https://github.com/nick-keller/react-datasheet-grid)
![npm bundle size](https://img.shields.io/bundlephobia/min/react-datasheet-grid)
[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)

View [demo and documentation](https://react-datasheet-grid.netlify.app/)

An Airtable-like / Excel-like component to create beautiful spreadsheets.

![Preview](./images/preview.png)

Feature rich:
- Dead simple to set up and to use
- Supports copy / pasting to and from Excel, Google-sheet...
- Keyboard navigation and shortcuts fully-supported
- Supports right-clicking and custom context menu
- Supports dragging corner to expand selection
- Easy to extend and implement custom widgets
- Blazing fast, optimized for speed, minimal renders count
- Smooth animations
- Virtualized rows and columns, supports hundreds of thousands of rows
- Extensively customizable, controllable behaviors
- Built with Typescript

## Install

```bash
npm i react-datasheet-grid
```

## Usage

```tsx
import {
  DataSheetGrid,
  checkboxColumn,
  textColumn,
  keyColumn,
} from 'react-datasheet-grid'

// Import the style only once in your app!
import 'react-datasheet-grid/dist/style.css'

const Example = () => {
  const [ data, setData ] = useState([
    { active: true, firstName: 'Elon', lastName: 'Musk' },
    { active: false, firstName: 'Jeff', lastName: 'Bezos' },
  ])

  const columns = [
    {
      ...keyColumn('active', checkboxColumn),
      title: 'Active',
    },
    {
      ...keyColumn('firstName', textColumn),
      title: 'First name',
    },
    {
      ...keyColumn('lastName', textColumn),
      title: 'Last name',
    },
  ]

  return (
    <DataSheetGrid
      value={data}
      onChange={setData}
      columns={columns}
    />
  )
}
```
npm package: @language-kit/core
Description: Base classes for parser strings into Nodes
Author: Henrique Oliveira
Latest version: 0.1.3

<div align=center>

# Language-kit core

![language-kit](../docs/public/logo.png)

[Documentation](https://sidekick-coder.github.io/language-kit/core/getting-started/installation) -
[Support](https://github.com/sponsors/zzhenryquezz)


Set of base classes to create language parsers
</div>
npm package: @language-kit/lexer
Description: Transforms a string into a list of tokens
Author: Henrique Oliveira
Latest version: 1.1.6

# @language-kit/lexer (beta)

A package to convert strings to tokens.

## Install

```bash
npm install @language-kit/lexer
```

## Usage
```js
import { Lexer } from '@language-kit/lexer'

const lexer = new Lexer()

const tokens = lexer.tokenize('1 + 2')

// output
[
  Token { type: 'Word', value: '1' },
  Token { type: 'WhiteSpace', value: ' ' },
  Token { type: 'Symbol', value: '+' },
  Token { type: 'WhiteSpace', value: ' ' },
  Token { type: 'Word', value: '2' },
  Token { type: 'EndOfFile', value: '' }
]
```

## Support the development

Suggestions and issues are welcome

And for financial support you can check my: [Github sponsor link](https://github.com/sponsors/zzhenryquezz)
npm package: @language-kit/markdown
Description: Parser and process markdown strings
Author: Henrique Oliveira
Latest version: 1.8.0

<div align=center>

# Language-kit markdown

![language-kit](../docs/public/logo.png)

[Documentation](https://sidekick-coder.github.io/language-kit/markdown/getting-started/installation) -
[Support](https://github.com/sponsors/zzhenryquezz)


Markdown parser
</div>