open-index/open-npm huggingface dataset:
npm package: @lgeiger/prebuild-install
Description: A command line tool for easily install prebuilds for multiple version of node/iojs on a specific platform
Author: Mathias Buus
Latest version: 2.0.3
Deprecated: All improvements have been merged into prebuild-install

# prebuild-install [![Build Status](https://travis-ci.org/mafintosh/prebuild-install.svg?branch=master)](https://travis-ci.org/mafintosh/prebuild-install)

A command line tool for easily install prebuilds for multiple version of node/iojs on a specific platform.

`prebuild-install` supports installing prebuilt binaries from GitHub by default.

## Usage

Change your package.json install script to:
```
...
  "scripts": {
    "install": "prebuild-install || node-gyp rebuild"
  }
...
```

### Requirements

You need to provide prebuilds made by [prebuild](https://github.com/mafintosh/prebuild)

### Help
```
prebuild-install [options]

  --download    -d  [url]       (download prebuilds, no url means github)
  --target      -t  version     (version to install for)
  --runtime     -r  runtime     (Node runtime [node or electron] to build or install for, default is node)
  --path        -p  path        (make a prebuild-install here)
  --build-from-source           (skip prebuild download)
  --verbose                     (log verbosely)
  --libc                        (use provided libc rather than system default)
  --debug                       (set Debug or Release configuration)
  --version                     (print prebuild-install version and exit)
 ```

## License

MIT
npm package: @lgert/react-scripts-scss-modules
Description: Custom fork of the configuration and scripts for Create React App.
Latest version: 1.1.5

# react-scripts-scss-modules

This package is based on a fork of [Create React App](https://github.com/facebookincubator/create-react-app).<br>
Added support for:
* CSS Modules: file.module.css
* SCSS: file.scss
* SCSS Modules: file.module.scss

This package includes scripts and configuration used by [Create React App](https://github.com/facebookincubator/create-react-app).<br>
Please refer to its documentation:

* [Getting Started](https://github.com/facebookincubator/create-react-app/blob/master/README.md#getting-started) – How to create a new app.
* [User Guide](https://github.com/facebookincubator/create-react-app/blob/master/packages/react-scripts/template/README.md) – How to develop apps bootstrapped with Create React App.
npm package: @lgfe/code-analysis
Description: ## 📖 介绍
Author: luoge
Latest version: 1.0.2

# <h2 align="center">@lgfe/code-analysis</h2>

## 📖 介绍

前端依赖调用和`Browser Api`静态代码分析能力（暂不支持jsx分析），可进行评分和生成分析报告
- 多进程分析能力
- 提供`api`和`配置文件`两种方式

## ⚙️ 安装

```
npm i @lgfe/code-analysis -D
```

## 🚀 快速开始

### API使用方式(api方式不会生成report文件)

```ts
import { analysis } from '@lgfe/code-analysis';
async function scan() {
  try {
    const { report, diagnosisInfos } = await analysis({
      scanSource: [
        {
          // 必须，待扫描源码的配置信息
          name: 'luoge', // 必填，项目名称
          path: ['src'], // 必填，需要扫描的文件路径（基准路径为配置文件所在路径）
          packageFile: 'package.json', // 可选，package.json 文件路径配置，用于收集依赖的版本信息
          format: null, // 可选, 文件路径格式化函数,默认为null,一般不需要配置
          httpRepo: `https://gitlab.xxx.com/xxx/-/blob/${getGitBranch()}/`   // 可选，项目gitlab/github url的访问前缀，用于点击行信息跳转，不填则不跳转
        },
      ],
      analysisTarget: 'react', // 必须，要分析的目标依赖名
      analysisPlugins: [], // 可选，自定义分析插件，默认为空数组，一般不需要配置
      tagList: ['app.localStorage.set'], // 可选，需要标记的API列表，默认为空数组
      tagList: [], // 可选，需要标记的API列表，默认为空数组
      browserApis: ['history', 'document'], // 可选，要分析的BrowserApi，默认为空数组
      reportDir: 'report', // 可选，生成代码分析报告的目录，默认为'report',不支持多级目录配置
      reportTitle: 'luoge依赖调用分析报告', // 可选，分析报告标题，默认为'依赖调用分析报告'
      isScanVue: true, // 可选，是否要扫描分析vue中的ts代码，默认为false
      scorePlugin: 'default', // 可选，评分插件: Function|'default'|null, default表示运行默认插件，默认为null表示不评分
    });
  } catch (e) {
    console.log(e);
  }
}

scan();
```


### cli方式

项目根目录下新建配置文件
```js
// analysis.config.js

/** @type {import('@lgfe/code-analysis').ConfigType} */
module.exports = {
  scanSource: [
    {
      // 必须，待扫描源码的配置信息
      name: 'luoge', // 必填，项目名称
      path: ['src'], // 必填，需要扫描的文件路径（基准路径为配置文件所在路径）
      packageFile: 'package.json', // 可选，package.json 文件路径配置，用于收集依赖的版本信息
      format: null, // 可选, 文件路径格式化函数,默认为null,一般不需要配置
      httpRepo: `https://gitlab.xxx.com/xxx/-/blob/${getGitBranch()}/`   // 可选，项目gitlab/github url的访问前缀，用于点击行信息跳转，不填则不跳转
    },
  ],
  analysisTarget: 'react', // 必须，要分析的目标依赖名
  analysisPlugins: [], // 可选，自定义分析插件，默认为空数组，一般不需要配置
  tagList: ['app.localStorage.set'], // 可选，需要标记的API列表，默认为空数组
  tagList: [], // 可选，需要标记的API列表，默认为空数组
  browserApis: ['history', 'document'], // 可选，要分析的BrowserApi，默认为空数组
  reportDir: 'report', // 可选，生成代码分析报告的目录，默认为'report',不支持多级目录配置
  reportTitle: 'luoge依赖调用分析报告', // 可选，分析报告标题，默认为'依赖调用分析报告'
  isScanVue: false, // 可选，是否要扫描分析vue中的ts代码，默认为false
  scorePlugin: 'default', // 可选，评分插件: Function|'default'|null, default表示运行默认插件，默认为null表示不评分
};

```

```ts
// package.json

"scripts": {
  ...
  analyze: "ca analysis",
  ...
}

```
命令行输入

```bash
npm run analysis -c [自定义配置文件名(不填默认为 analysis.config.js )]
```

![](https://common-1258034138.cos.ap-guangzhou.myqcloud.com/code-analysis%2Fcode-analyze-01.png)

***
本地`record`文件夹中会生成对应的`index.html`分析报告
![](https://common-1258034138.cos.ap-guangzhou.myqcloud.com/code-analysis%2Fcode-analysis-02.png)
npm package: @lgfe/eslint-config-preset
Description: my own eslint preset
Author: ls
Latest version: 1.0.2

## 基础使用

```bash
pnpm install --save-dev eslint @babel/core @babel/eslint-parser @lgfe/eslint-config-preset
```

在项目根目录下创建一个`.eslintrc.js`文件，并写入以下内容：

```js
module.exports = {
	extends: ['@lgfe/preset'],
	env: {
		// 你的环境变量（包含多个预定义的全局变量）
		//
		// browser: true,
		// node: true,
		// mocha: true,
		// jest: true,
		// jquery: true
	},
	globals: {
		// 你的全局变量（设置为 false 表示它不允许被重新赋值）
		//
		// myGlobal: false
	},
	rules: {
		// 自定义你的规则
	},
};
```

### Typescript

```bash
npm install --save-dev eslint typescript @typescript-eslint/parser @typescript-eslint/eslint-plugin @lgfe/eslint-config-preset
```

```js
module.exports = {
	extends: ['@lgfe/preset', '@lgfe/preset/typescript'],
	env: {
		// 你的环境变量（包含多个预定义的全局变量）
		//
		// browser: true,
		// node: true,
		// mocha: true,
		// jest: true,
		// jquery: true
	},
	globals: {
		// 你的全局变量（设置为 false 表示它不允许被重新赋值）
		//
		// myGlobal: false
	},
	rules: {
		// 自定义你的规则
	},
};
```

### React

```bash
npm install --save-dev eslint @babel/core @babel/eslint-parser @babel/preset-react@latest eslint-plugin-react eslint-plugin-react-hooks @lgfe/eslint-config-preset
```

```js
module.exports = {
	extends: ['@lgfe/preset', '@lgfe/preset/react'],
	env: {
		// 你的环境变量（包含多个预定义的全局变量）
		//
		// browser: true,
		// node: true,
		// mocha: true,
		// jest: true,
		// jquery: true
	},
	globals: {
		// 你的全局变量（设置为 false 表示它不允许被重新赋值）
		//
		// myGlobal: false
	},
	rules: {
		// 自定义你的规则
	},
};
```

### React Typescript

```bash
npm install --save-dev eslint typescript @typescript-eslint/parser @typescript-eslint/eslint-plugin eslint-plugin-react  eslint-plugin-react-hooks @lgfe/eslint-config-preset
```

```js
module.exports = {
	extends: ['@lgfe/preset', '@lgfe/preset/react', '@lgfe/preset/typescript'],
	env: {
		// 你的环境变量（包含多个预定义的全局变量）
		//
		// browser: true,
		// node: true,
		// mocha: true,
		// jest: true,
		// jquery: true
	},
	globals: {
		// 你的全局变量（设置为 false 表示它不允许被重新赋值）
		//
		// myGlobal: false
	},
	rules: {
		// 自定义你的规则
	},
};
```
npm package: @lgfe/git-mg-cli
Description: auto merge cli for git
Author: luoge
Latest version: 1.0.4

# git-mg-cli

🚀 (Auto) Merge CLI

Auto Merge CLI 是一个功能强大的命令行工具，旨在帮助开发者**自动拉取代码、合并分支、推送远程**等等操作。

## 👀 使用示例

背景：假设你完成了功能分支`feature/a`的开发，想要合并到测试分支`dev`，并且推到远程。

一般我们的操作步骤是：

```
# 切换到 dev 分支
git checkout dev

# 下拉 dev 分支的远程代码
git pull

# 合并功能分支 feature/a 到 dev
git merge feature/a

# 推送 dev 分支到远程仓库
git push
```

以下是使用 Auto Merge CLI 的简单示例命令:

```
# 处于 feature/a 分支中
lmg dev
```

上述会按顺序进行如下操作：

1. 在当前分支执行`git pull`
2. 获取当前分支的名称
3. 切换到目标分支`dev`
4. 执行`git pull`
5. 合并分支
6. 询问是否要推到远程
7. 询问是否要切回源分支

## ⌛️ 安装

全局安装

```
npm install -g @lgfe/git-mg-cli

# 或者
# yarn global add @lgfe/git-mg-cli
```

## 💡 具体用法

```
Usage:
  $ lmg [target_branch]

Commands:
  [target_branch]  merge current branch into target_branch

For more info, run any command with the `--help` flag:
  $ lmg --help

Options:
  -h, --help     Display this message
  -v, --version  Display version number

Examples:
lmg master    把当前分支自动合并到master
```

假设你当前项目所在的分支为：`feature/a`，你想要把这个分支合并到`dev`，并自动上传到远程仓库，你只需要执行以下命令：

```
lmg dev
```

## ⏳ 调试方式

使用 pnpm link 对当前项目链接到电脑的全局环境上，如果是在项目的根目录，则执行以下命令：

> 注意：如果你的电脑已全局安装`@lgfe/git-mg-cli`，则需要先删除全局包，再 link

```
pnpm link --global --dir packages/mg-cli
```

如果想要解除 link，只需要 全局删除即可：

```
pnpm un -g @lgfe/git-mg-cli
```
npm package: @lgfe/h5-simple-tracker
Description: simple fe monitor
Author: luoge
Latest version: 1.0.1

# @lgfe/h5-simple-tracker

简易上报前端 sdk, 仅支持 h5 使用(很简陋，上个人项目可以，工业级还是去使用成熟的 sdk 合适)

## 🔧 功能

- 全局错误上报(同步、异步)
- 路由记录上报(hash、history 均支持，可借此实现 pv 统计)
- 通过 `data-listener`实现自定义事件上报（源码里只写了 click 事件，可 fork 修改）
- 通过`Map`传递元素自定义属性和要监听的事件，实现自定义属性监听
- 通过实例 `sendTracker`方法实现自定义上报

## ⚙️ 安装

`pnpm i @lgfe/h5-simple-tracker`

## 🚀 快速开始

```typescript
// 初始化
import { Tracker } from '@lgfe/sdk-demo';

/** eat为自定义属性，click为WindowEventMap之一 */
const map = new Map<string, keyof WindowEventMap>([['eat', 'click']]);

// 无侵入埋点
export const tracker = new Tracker({
  // 自行指定后台地址(需自己写后台)
  requestUrl: 'http://localhost:3000/tracker/',
  uid: 'xxxxid',
  extra: {
    // 额外参数
    name: 'luoge',
    age: 80
  },
  historyTracker: true,
  hashTracker: true,
  jsError: true,
  domTracker: true,
  dataOnly: true,
  element: map,
});

// 手动上报
tracker.sendTracker('xxx', { name: 'luoge'})
```

```typescript
// 前端使用示例
import { useState } from 'react';
import { Link } from 'react-router-dom';
import './App.css';

const testKey = 'data-listener';

function App() {
  const [count, setCount] = useState(0);
  return (
    <>
      <div className="card">
        <button
          eat={JSON.stringify({
            text: '我是自定义数据', // domTracker 和 element结合使用
          })}
          onClick={() => setCount((count) => count + 1)}
          {...{ [testKey]: '我是自定义数据22'}} // data-only上报
        >
          count is {count}
        </button>
      </div>
      <button
        onClick={() => {
          const a = 1;
          // jsError 事件上报(同步)
          console.log(a.aaa.bbb)
        }}
      >
        throw error
      </button>

      <button
        onClick={async () => {
          const a = 1;
          // jsError 事件上报(异步)
          console.log(a.aaa.bbb)
        }}
      >
        throw async error
      </button>
      {/* 路由上报 */}
      <Link to="/home">Home</Link>
      <p className="read-the-docs"></p>
    </>
  );
}

export default App;

```

```javascript
// 服务端示例，可自定义修改
var express = require('express');
var router = express.Router();

/* post  */
router.post('/history', function(req, res, next) {
  console.log('history', JSON.stringify(req.body, null, 2));

  res.json({ retCode: 0, retMsg: 'history' })
});

router.post('/dom', function(req, res, next) {
  console.log('dom', JSON.stringify(req.body, null, 2));

  res.json({ retCode: 0, retMsg: 'dom' })
});

router.post('/error', function(req, res, next) {
  console.log('error', JSON.stringify(req.body, null, 2));
  res.json({ retCode: 0, retMsg: 'error' })
});

router.post('/data-only', function(req, res, next) {
  console.log('data-only', JSON.stringify(req.body, null, 2));
  res.json({ retCode: 0, retMsg: 'dom' })
});

module.exports = router;

```
npm package: @lgfe/mrm-preset
Description: use mrm preset to strong ur project
Author: luoge
Latest version: 1.0.4

# @lgfe/mrm-preset

根据 [mrm](https://github.com/sapegin/mrm) 开发的项目配置文件 preset。

包含的 task 设置项：

- beauty

- commitlint

- gitignore

- packageJson

- typescript

组合的 task 项：

- pkg 包含 （packageJson)

- base 包含（beauty, commitlint, gitignore, typescript）

## 使用方式

首先需要全局安装`mrm`：

```
pnpm i -g mrm
# 或者
yarn global add mrm
# 或者
npm i -g mrm
```

然后选择你想要的 task 配置项，例如你想要使用`packageJson`这个配置项，则在你的项目文件夹根目录下，执行以下代码：

```
mrm packageJson --preset @lgfe/mrm-preset
```

执行完成之后，`package.json`文件就会自动生成预设的字段，如果这个文件已存在，则会自动合并其中的值。

`package.json`的预设值如下：

```
{
  name: packageName,
  version: '1.0.0',
  description: '',
  author: '',
  main: 'index.js',
  files: ['index.js'],
  scripts: {},
  license: 'ISC',
  keywords: [],
  homepage: '',
  repository: '',
  publishConfig: {
    registry: 'https://registry.npmjs.org/',
    access: 'public',
  },
  dependencies: {},
  devDependencies: {},
}
```

### 使用场景

1. 当你的前端项目创建完毕（带有 package.json 和 lock 文件）想要添加 eslint、prettier 等一系列项目的基础设施，可以运行以下的命令：

```
mrm base --preset @lgfe/mrm-preset
```

运行成功之后，你的项目将会自动安装以下的包：

- eslint
- prettier
- husky
- lint-staged
- @commitlint/cli
- @commitlint/config-conventional
- commtizen
- cz-conventional
- typescript

同时会自动生成相应的配置文件。

运行完毕之后，就可以展开手脚着手开发项目了，无需再处理项目的一些基建配置。

## 调试

将该项目 clone 到电脑上之后，在根目录执行：

```
pnpm dev
```

然后在 mrm-preset 文件夹内会生成`dist`文件夹，我们拿到 dist 文件夹的绝对路径，然后在某个项目内，执行：

```
mrm beauty --dir <build_path>

例如: npx mrm beauty --dir ../mrm-preset/dist/mrm-preset/src
```
npm package: @lgfe/toolkit-hooks
Description: general react hooks toolkit
Author: luoge
Latest version: 1.0.2

# @lgfe/toolkit-hooks

通用hooks，满足`react`日常开发使用，包含80+常用hooks，抽取其公共特效，提供`esm`和`cjs`两种格式

## 🚀 安装

`pnpm i @lgfe/toolkit-hooks`

## ⚙️ 快速开始

```js
// 引入
import { useDebounce } from '@lgfe/toolkit-hooks';

使用见文档，直接hover到函数上即可出现example
```

```sh
# hooks名称一览

├── useActiveElement
├── useAsyncEffect
├── useClickOutside
├── useClipboard
├── useCookie
├── useCountDown
├── useCounter
├── useCssVar
├── useCustomCompareEffect
├── useCycleList
├── useDarkMode
├── useDebounce
├── useDebounceFn
├── useDeepCompareEffect
├── useDocumentVisibility
├── useDoubleClick
├── useDraggable
├── useDropZone
├── useElementBounding
├── useElementSize
├── useElementVisibility
├── useEvent
├── useEventEmitter
├── useEventListener
├── useFileDialog
├── useFocus
├── useFps
├── useFullscreen
├── useGeolocation
├── useHover
├── useIdle
├── useInfiniteScroll
├── useIntersectionObserver
├── useInterval
├── useIsFirstMount
├── useIsomorphicLayoutEffect
├── useKeyModifier
├── useLatest
├── useLatestElement
├── useLocalStorage
├── useLongPress
├── useMediaQuery
├── useMount
├── useMountedState
├── useMouse
├── useMousePressed
├── useMutationObserver
├── useNetwork
├── useObjectUrl
├── useOnceEffect
├── useOnceLayoutEffect
├── useOnline
├── useOrientation
├── usePageLeave
├── usePermission
├── usePreferredColorScheme
├── usePreferredDarkMode
├── usePrevious
├── useRafFn
├── useRafState
├── useReducedMotion
├── useResizeObserver
├── useScreenSafeArea
├── useScriptTag
├── useScroll
├── useScrollIntoView
├── useScrollLock
├── useSessionStorage
├── useSetState
├── useSticky
├── useSupported
├── useTextSelection
├── useThrottle
├── useThrottleFn
├── useTimeout
├── useTimeoutFn
├── useTitle
├── useToggle
├── useUnmount
├── useUpdate
├── useUpdateEffect
├── useUpdateLayoutEffect
├── useVirtualList
├── useWindowFocus
├── useWindowScroll
├── useWindowSize
```


借鉴了`ahooks`和`react-use`等开源hooks项目，🙏
npm package: @lgfe/toolkit-types
Description: TypeScript type utility library with various useful helper types 
Author: luoge
Latest version: 1.0.1

# @lgfe/toolkit-types

通用`types`工具库，集成了常见的类型工具，拒绝重复造轮子，提供了开箱即用的类型

## 🚀 安装

`pnpm i @lgfe/toolkit-types`

## ⚙️ 快速开始

```ts
// 引入
import type { CamelCase } from '@lgfe/toolkit-types';

所有类型见类型库即可，组件即文档，可自行查看源码
```
npm package: @lgfe/toolkit-utils
Description: Generic function tool classes and methods to facilitate rapid development
Author: luoge
Latest version: 1.0.2

# @lgfe/toolkit-utils

通用`utils`工具库，集成通用开发utils，涵盖前端平时所需各种函数工具

## 🚀 安装

`pnpm i @lgfe/toolkit-utils`

## ⚙️ 快速开始

```ts
// 引入
import { eventBus } from '@lgfe/toolkit-utils';

自行查看类型定义，大部分有提供 example
```

## 🦌 ROADMAP
  - [x] 通用(各种函数式工具)
  - [x] cookie
  - [x] 日期
  - [x] 字典
  - [x] dom
  - [x] url
  - [x] storage
  - [ ] node相关工具函数 
  - [ ] 性能监控相关工具函数
npm package: @lgfe/tsconfig-preset
Description: my own tsconfig preset
Author: ls
Latest version: 1.0.6

# @lgfe/tsconfig-preset

提供常用`tsconfig.json`配置

## 🚀 快速开始

```bash
npm i @lgfe/tsconfig-preset
```

提供四种模式 recommend | vite-react | node ｜ node-esm 在`tsconfig.json`中加入

```json
// 加入下面四种之一即可，按场景
"extends": "@lgfe/tsconfig-preset/recommend.json"
// "extends": "@lgfe/tsconfig-preset/node.json"
// "extends": "@lgfe/tsconfig-preset/node-esm.json"
// "extends": "@lgfe/tsconfig-preset/vite-react.json"
```

## 💥 注意事项
- 需要安装`typescript`
- 一般前端项目使用`recommend`即可
- nodeCJS项目使用`node`
- `node-esm`下需额外安装`ts-node`、`tslib`、`@types/node`
  - 启动**esm**命令示例 🫱 `ts-node-esm --project tsconfig.json src/index.ts`
npm package: @lgfe/vite-plugin-history-fallback
Description: historyFallback ability for vite application
Author: luoge
Latest version: 1.0.2

# vite-plugin-history-fallback

## 简介

为 vite多页应用开发提供本地调试环境插件

## ⚙️ 安装

```bash
npm install @lgfe/vite-plugin-history-fallback -D
```

## 🚀 使用

```ts
import { defineConfig } from 'vite';
import { historyFallbackPlugin } from '@lgfe/vite-plugin-history-fallback';

export default defineConfig({
  plugin: [
    historyFallbackPlugin({
      rewrites: [
        {
          from: /^\/pages\/.*$/,
          to: '/index.html',
        },
      ],
    }),
  ],
});
```
npm package: @lggruspe/fragment-router
Description: Router for dynamically-generated HTML fragments
Author: lggruspe
Latest version: 1.4.7

fragment-router
===============

![GitHub Workflow Status](https://img.shields.io/github/workflow/status/lggruspe/fragment-router/Node.js%20CI)
[![codecov](https://codecov.io/gh/lggruspe/fragment-router/branch/main/graph/badge.svg?token=PB8FIEUHRE)](https://codecov.io/gh/lggruspe/fragment-router)
![npm (scoped)](https://img.shields.io/npm/v/@lggruspe/fragment-router)
![GitHub](https://img.shields.io/github/license/lggruspe/fragment-router)

Router for dynamically-generated HTML fragments.

Installation
------------

```bash
npm install @lggruspe/fragment-router
```

Example
-------

```typescript
import { check, matches, DomAppender, Router } from '@lggruspe/fragment-router'

const router = new Router()
const appender = new DomAppender(router)

router.route(
  check(matches(/^hello\/(?<name>[a-z]+)$/)),
  req => {
    // print hello/<name> in console
    console.log(req.id)
    router.defer(() => {
      // append p element after processing request
      appender.renderHtml(`<p>Hello, ${req.params.name}!</p>`)
    })
  }
)

router.listen()
```

See `examples/`.

License
-------

[MIT](./LICENSE)
npm package: @lggruspe/todo-txt-parser
Description: todo.txt parser for typescript/javascript
Author: lggruspe
Latest version: 1.1.1

todo-txt-parser
===============

![GitHub Workflow Status](https://img.shields.io/github/workflow/status/lggruspe/todo-txt-parser/Node.js%20CI)
[![codecov](https://codecov.io/gh/lggruspe/todo-txt-parser/branch/main/graph/badge.svg?token=KICVMONX12)](https://codecov.io/gh/lggruspe/todo-txt-parser)
![npm (scoped)](https://img.shields.io/npm/v/@lggruspe/todo-txt-parser)
![GitHub](https://img.shields.io/github/license/lggruspe/todo-txt-parser)

todo.txt parser for Typescript/Javascript.

Installation
------------

```bash
npm install @lggruspe/todo-txt-parser
```

Usage
-----

```javascript
import { parse } from '@lggruspe/todo-txt-parser'
import { readFileSync } from 'fs'

const todo = readFileSync('todo.txt', 'utf8').trim()
const tasks = parse(todo)
```

Each `Task` contains the following fields.

```typescript
interface Task {
  completed?: boolean
  priority?: string
  completion?: string
  creation?: string
  description?: string
  projects?: Array<string>
  contexts?: Array<string>
  pairs?: Array<[string, string]>
}
```

See `examples/`.

License
-------

MIT.
npm package: @lggruspe/ui
Description: Simple library for writing web UIs
Author: lggruspe
Latest version: 1.2.0

ui
==

![GitHub Workflow Status](https://img.shields.io/github/workflow/status/lggruspe/ui/Node.js%20CI)
[![codecov](https://codecov.io/gh/lggruspe/ui/branch/main/graph/badge.svg?token=TNUY9T3XRE)](https://codecov.io/gh/lggruspe/ui)
![npm (scoped)](https://img.shields.io/npm/v/@lggruspe/ui)
![GitHub](https://img.shields.io/github/license/lggruspe/ui)

Simple library for writing web UIs

Installation
------------

```bash
npm install @lggruspe/ui
```

Examples
--------

- [Reddit-style upvote and downvote buttons](./examples)

License
-------

[MIT](./LICENSE)
npm package: @lggruspe/view-hooks
Description: Hooks for keeping data consistent with the DOM
Author: lggruspe
Latest version: 1.1.0

view-hooks
==========

![GitHub Workflow Status](https://img.shields.io/github/workflow/status/lggruspe/view-hooks/Node.js%20CI)
[![codecov](https://codecov.io/gh/lggruspe/view-hooks/branch/main/graph/badge.svg?token=TNUY9T3XRE)](https://codecov.io/gh/lggruspe/view-hooks)
![npm (scoped)](https://img.shields.io/npm/v/@lggruspe/view-hooks)
![GitHub](https://img.shields.io/github/license/lggruspe/view-hooks)

Hooks for keeping data consistent with the DOM.

Installation
------------

```bash
npm install @lggruspe/view-hooks
```

Examples
--------

- [Reddit-style upvote and downvote buttons](./examples)

License
-------

[MIT](./LICENSE)