open-index/open-npm huggingface dataset:
npm package: @pilag6/csv-downloader
Description: Lightweight CSV export utility for Vue and React
Author: Pila Gonzalez
Latest version: 1.0.2

# 📄 CSV Downloader

[![npm version](https://img.shields.io/npm/v/@pilag6/csv-downloader.svg?color=blue&label=npm)](https://www.npmjs.com/package/@pilag6/csv-downloader)
[![npm downloads](https://img.shields.io/npm/dm/@pilag6/csv-downloader.svg?color=green)](https://www.npmjs.com/package/@pilag6/csv-downloader)
[![license](https://img.shields.io/npm/l/@pilag6/csv-downloader.svg)](LICENSE)

**CSV Downloader** is a lightweight and fast utility to export data as CSV directly from the browser.  
It works with **Vue**, **React**, and any JavaScript or TypeScript project.

---

## 🚀 Installation

```bash
npm install @pilag6/csv-downloader
```

---

## 📦 Basic usage

### Vue 3
```vue
<script setup lang="ts">
import { downloadCSV } from '@pilag6/csv-downloader';

const exportData = () => {
  downloadCSV({
    headers: ['Name', 'Age', 'Country'],
    contents: [
      ['John Doe', 30, 'USA'],
      ['Jane Smith', 25, 'UK']
    ]
  });
};
</script>

<template>
  <button @click="exportData">Export CSV</button>
</template>
```

### React
```tsx
import React from 'react';
import { downloadCSV } from '@pilag6/csv-downloader';

export default function App() {
  const exportData = () => {
    downloadCSV({
      headers: ['Name', 'Age', 'Country'],
      contents: [
        ['John Doe', 30, 'USA'],
        ['Jane Smith', 25, 'UK']
      ],
      filename: 'users.csv'
    });
  };

  return <button onClick={exportData}>Export CSV</button>;
}
```

---

## ⚙️ Options

| Option     | Type                    | Default     | Description |
|------------|------------------------|-------------|-------------|
| `headers`  | `string[]`              | **Required**| Column names |
| `contents` | `(string\|number)[][]`  | **Required**| Data in rows and columns |
| `filename` | `string`                | `data.csv`  | CSV file name |
| `separator`| `string`                | `,`         | Column separator |
| `bom`      | `boolean`               | `true`      | Add UTF-8 BOM for Excel compatibility |

---

## 🧪 Advanced example

```ts
import { downloadCSV } from '@pilag6/csv-downloader';

downloadCSV({
  headers: ['Product', 'Quantity', 'Price (€)'],
  contents: [
    ['T-Shirt', 3, 19.99],
    ['Pants', 1, 39.5],
    ['Shoes', 2, 59.0]
  ],
  filename: 'inventory.csv',
  separator: ';', // Use semicolon as separator
  bom: true // Excel compatible
});
```

---

## 💡 Features

✅ Works with Vue, React, and plain JavaScript projects  
✅ Supports any separator (`;`, `,`, `\t`, etc.)  
✅ Automatically escapes double quotes  
✅ Optional BOM for Excel compatibility  
✅ Lightweight, zero dependencies  

---

## 📥 Quick install & run

```bash
npm install @pilag6/csv-downloader
```

**Import and use:**
```ts
import { downloadCSV } from '@pilag6/csv-downloader';

downloadCSV({
  headers: ['A', 'B', 'C'],
  contents: [['1', '2', '3']]
});
```

---

## 🛠 Support

Found a bug or have a suggestion? Open an issue on GitHub or contact me.

---

## 📄 License

MIT — Free for personal and commercial use.
npm package: @pilaton/eslint-config-base
Description: Basic ESLint configuration including Javascript and Typescript checks
Author: Pilaton
Latest version: 1.3.0

# @pilaton/eslint-config-base

![npm](https://img.shields.io/npm/v/%40pilaton%2Feslint-config-base?style=for-the-badge&logo=npm&labelColor=%231955FF&color=%231955FF)

The configuration includes basic JS and TS code checks.

> [!NOTE]
> Package from the [`eslint-eco`](https://github.com/Pilaton/eslint-eco) monorepository.  
> I recommend reading the [documentation](https://github.com/Pilaton/eslint-eco?tab=readme-ov-file#eslint-eco) to understand the whole picture.

## Included in the package

1. [ESLint recommended config](https://github.com/eslint/eslint/blob/main/packages/js/src/configs/eslint-recommended.js)
2. [`eslint-plugin-n`](https://www.npmjs.com/package/eslint-plugin-n) — Additional ESLint rules for Node.js
3. [`eslint-plugin-import`](https://www.npmjs.com/package/eslint-plugin-import) — ES2015+ (ES6+) import/export syntax linting support
4. [`eslint-plugin-promise`](https://www.npmjs.com/package/eslint-plugin-promise) – The best practices for JS/TS promises
5. [`eslint-plugin-unicorn`](https://www.npmjs.com/package/eslint-plugin-unicorn) — More than 100 powerful ESLint rules
6. [`eslint-config-prettier`](https://www.npmjs.com/package/eslint-config-prettier) — Turns off all rules that are unnecessary or might conflict with Prettier.
7. [`eslint-config-standard`](https://www.npmjs.com/package/eslint-config-standard) — Rules to make your code conform to the general practices of the «JS Standard Code Style»
8. [`eslint-config-love`](https://www.npmjs.com/package/eslint-config-love) — Rules for TypeScript to comply with the «JS Standard Code Style»

## Install

```bash
npm i @pilaton/eslint-config-base --save-dev
```

## Usage

This configuration is created for the new ESLint Flat Config, and only supports ESM!

### [`eslint.config.js`](https://eslint.org/docs/latest/use/configure/configuration-files-new) (eslint>=v8.23.1)

```js
import base from '@pilaton/eslint-config-base';

export default [
  ...base,

  {
    // Your config
  },
];
```
npm package: @pilaton/eslint-config-markdown
Description: ESLint configuration for checking markdown files
Author: Pilaton
Latest version: 1.3.0

# @pilaton/eslint-config-markdown

![npm](https://img.shields.io/npm/v/%40pilaton%2Feslint-config-markdown?style=for-the-badge&logo=npm&labelColor=%231955FF&color=%231955FF)

ESLint configuration for checking `markdown` and `mdx` files.

> [!NOTE]
> Package from the [`eslint-eco`](https://github.com/Pilaton/eslint-eco) monorepository.  
> I recommend reading the [documentation](https://github.com/Pilaton/eslint-eco?tab=readme-ov-file#eslint-eco) to understand the whole picture.

## Included in the package

1. [`eslint-plugin-mdx`](https://www.npmjs.com/package/eslint-plugin-mdx)
2. [`eslint-plugin-markdownlint`](https://www.npmjs.com/package/eslint-plugin-markdownlint)

## Install

```bash
npm i @pilaton/eslint-config-markdown --save-dev
```

## Usage

This configuration is created for the new ESLint Flat Config, and only supports ESM!

### [`eslint.config.js`](https://eslint.org/docs/latest/use/configure/configuration-files-new) (eslint>=v8.23.1)

```js
import markdown from '@pilaton/eslint-config-markdown';

export default [
  {
    // Your config
  },

  ...markdown,

  {
    // Your config
  },
];
```
npm package: @pilaton/eslint-config-next
Description: ESLint configuration for Next.js projects
Author: Pilaton
Latest version: 1.4.0

# @pilaton/eslint-config-next

![npm](https://img.shields.io/npm/v/%40pilaton%2Feslint-config-next?style=for-the-badge&logo=npm&labelColor=%231955FF&color=%231955FF)

ESLint configuration for code inspection of Next.js projects.

> [!NOTE]
> Package from the [`eslint-eco`](https://github.com/Pilaton/eslint-eco) monorepository.  
> I recommend reading the [documentation](https://github.com/Pilaton/eslint-eco?tab=readme-ov-file#eslint-eco) to understand the whole picture.

## Included in the package

[`@next/eslint-plugin-next`](https://www.npmjs.com/package/@next/eslint-plugin-next)

## Install

```bash
npm i @pilaton/eslint-config-next --save-dev
```

I recommend using this config over [`@pilaton/eslint-config-base`](https://github.com/Pilaton/eslint-eco/tree/main/packages/base#pilatoneslint-config-base) and [`@pilaton/eslint-config-react`](https://github.com/Pilaton/eslint-eco/tree/main/packages/react#pilatoneslint-config-react):

```bash
npm i @pilaton/eslint-config-base @pilaton/eslint-config-react @pilaton/eslint-config-next --save-dev
```

## Usage

This configuration is created for the new ESLint Flat Config, and only supports ESM!

### [`eslint.config.js`](https://eslint.org/docs/latest/use/configure/configuration-files-new) (eslint>=v8.23.1)

```js
import base from '@pilaton/eslint-config-base';
import react from '@pilaton/eslint-config-react';
import next from '@pilaton/eslint-config-next';

export default [
  ...base,
  ...react,
  ...next

  {
    // Your config
  },
];
```
npm package: @pilaton/eslint-config-react
Description: ESLint configuration for React projects
Author: Pilaton
Latest version: 1.6.0

# @pilaton/eslint-config-react

![npm](https://img.shields.io/npm/v/%40pilaton%2Feslint-config-react?style=for-the-badge&logo=npm&labelColor=%231955FF&color=%231955FF)

ESLint configuration including all necessary plugins for testing React project code.

> [!NOTE]
> Package from the [`eslint-eco`](https://github.com/Pilaton/eslint-eco) monorepository.  
> I recommend reading the [documentation](https://github.com/Pilaton/eslint-eco?tab=readme-ov-file#eslint-eco) to understand the whole picture.

## Included in the package

1. [`eslint-plugin-react`](https://www.npmjs.com/package/eslint-plugin-react)
2. [`eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks)
3. [`eslint-plugin-react-refresh`](https://www.npmjs.com/package/eslint-plugin-react-refresh)
4. [`eslint-plugin-jsx-a11y`](https://www.npmjs.com/package/eslint-plugin-jsx-a11y)
5. [`eslint-plugin-tailwindcss`](https://www.npmjs.com/package/eslint-plugin-tailwindcss)

## Install

```bash
npm i @pilaton/eslint-config-react --save-dev
```

I recommend using this config over the [`@pilaton/eslint-config-base`](https://github.com/Pilaton/eslint-eco/tree/main/packages/base#pilatoneslint-config-base) base config:

```bash
npm i @pilaton/eslint-config-base @pilaton/eslint-config-react --save-dev
```

## Usage

This configuration is created for the new ESLint Flat Config, and only supports ESM!

### [`eslint.config.js`](https://eslint.org/docs/latest/use/configure/configuration-files-new) (eslint>=v8.23.1)

```js
import base from '@pilaton/eslint-config-base';
import react from '@pilaton/eslint-config-react';

export default [
  ...base,
  ...react

  {
    // Your config
  },
];
```
npm package: @pilchard/tsconfig
Description: Shared TypeScript config
Author: pilchard
Latest version: 1.0.0

# tsconfig

> Shared [TypeScript config](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html).

## Install

```
$ pnpm add -D @pilchard/tsconfig
```

## Usage

`tsconfig.json`

```json
{
  "extends": "@pilchard/tsconfig/tsconfig.json",
  "compilerOptions": {
    "outDir": "dist"
  }
}
```

When targeting higher versions of Node.js, [check](https://node.green/#ES2022) the relevant ECMAScript version and add it as `target`:

```json
{
  "extends": "@pilchard/tsconfig/tsconfig.json",
  "compilerOptions": {
    "outDir": "dist",
    "target": "ES2022"
  }
}
```
npm package: @pilcrowjs/object-parser
Description: A small utility library for parsing object fields.
Author: pilcrowOnPaper
Latest version: 0.0.4

# Object parser

A small library for parsing objects.

```ts
import { ObjectParser } from "@pilcrowjs/object-parser";

const response = await fetch("https://api.example.com/users/6493");
const result: unknown = await response.json();
const parser = new ObjectParser(result);

if (parser.has("error")) {
	const error = parser.getString("error");
} else {
	const userId = parser.getNumber("id");
	const username = parser.getString("username");
	const profilePicture = parser.getString("picture", "medium");
	const friends = parser.getArray("friends").map((friend) => {
		return new ObjectParser(friend).getString("username");
	});
}
```

```json
{
	"error": "Invalid user ID"
}
```

```json
{
	"id": 6493,
	"username": "pilcrow",
	"icons": {
		"small": "https://images.example.com/user/6493/128px.jpg",
		"medium": "https://images.example.com/user/6493/256px.jpg",
		"large": "https://images.example.com/user/6493/512px.jpg"
	},
	"friends": [
		{
			"id": 4456,
			"username": "lucy"
		}
	]
}
```

## Installation

```
npm install @pilcrowjs/object-parser
```

## API

```ts
class ObjectParser {
	constructor(value: unknown): this;

	has(...path: string[]): boolean;
	get(...path: string[]): unknown;
	isString(...path: string[]): boolean;
	getString(...path: string[]): string;
	isNumber(...path: string[]): boolean;
	getNumber(...path: string[]): number;
	isBoolean(...path: string[]): boolean;
	getBoolean(...path: string[]): boolean;
	isBigInt(...path: string[]): boolean;
	getBigInt(...path: string[]): bigint;
	// Note: 'null' is not considered an object.
	isObject(...path: string[]): boolean;
	getObject(...path: string[]): object;
	isArray(...path: string[]): boolean;
	getArray(...path: string[]): unknown[];
	isNull(...path: string[]): boolean;
	isUndefined(...path: string[]): boolean;
	createParser(...path: string[]): ObjectParser;
}
```
npm package: @pile-ui/button
Description: Now I’m the model of a modern major general / The venerated Virginian veteran whose men are all / Lining up, to put me up on a pedestal / Writin’ letters to relatives / Embellishin’ my elegance and eloquence / But the elephant is in the room / The truth i
Author: renmaomin
Latest version: 2.0.6-alpha.0

# `@pile-ui/button`

> TODO: description

## Usage

```
const button = require('@pile-ui/button');

// TODO: DEMONSTRATE API
```
npm package: @pile-ui/condition
Description: Now I’m the model of a modern major general / The venerated Virginian veteran whose men are all / Lining up, to put me up on a pedestal / Writin’ letters to relatives / Embellishin’ my elegance and eloquence / But the elephant is in the room / The truth i
Author: renmaomin
Latest version: 2.0.6-alpha.0

# `@pile/condition`

> TODO: description

## Usage

```
const condition = require('@pile/condition');

// TODO: DEMONSTRATE API
```
npm package: @pile-ui/field
Description: focus on Form layout, better combination with InputField
Author: renmaomin
Latest version: 2.0.6-alpha.0

# `@pile-ui/field`

> focus on Form layout, better combination with InputField

## Usage

```
import Field,{FieldSet} from '@pile-ui/field';
import InputFiled from '@pile-ui/inputfiled';

<FieldSet title="工作信息">
    <InputFiled placeholder="请输入工卡号" value="D03240">工卡号：</InputFiled>
    <Field arrow="right" value="企业级事业部" placeholder="请输入所在部门">所在部门：</Field>
</FieldSet>
<WhiteSpace />
<FieldSet title="其他">
    <Field align="right" extraAfter={<Switch />}>同路人信息可见：</Field>
</FieldSet>
```

## API

### Field props

|   参数    |   类型   |   默认  |   说明     |
|-----------|----------|------------|-------------------|
| prefixCls  | string  |  'pile-field'   | 组件的css前缀 |
| children  |  any  |  -      | 表单两栏布局中，左边的label值  |
| placeholder  |  string \| [React.Node](https://flow.org/en/docs/react/types/#toc-react-node)  |  -      | 类似inputField的placehodler |
| value     | string \| [React.Node](https://flow.org/en/docs/react/types/#toc-react-node)     |  -    | 类似inputField的value |
| arrow     | boolean     |  false    | 展示右边的箭头，默认false |
| align     | 'left' \| 'right'     |  left   | value的水平对齐方式，默认left |
| onClick     | function     |  -   | 点击整条Field的onClick事件。绑定了onClick事件，会有一个点击的效果 |
| extraAfter     | string \| [React.Node](https://flow.org/en/docs/react/types/#toc-react-node)     |  -    | 添加在后面的额外部分 |
| labelEllipsis  | boolean  |  false   | label文字过多时，是否启用省略状态 |
| valueEllipsis  | boolean  |  true   | value文字过多时，是否启用省略状态 |

### FieldSet props

|   参数    |   类型   |   默认  |   说明     |
|-----------|----------|------------|-------------------|
| prefixCls  | string  |  'pile-fieldset'   | 组件的css前缀 |
| children  |  string \| [React.Node](https://flow.org/en/docs/react/types/#toc-react-node)  |  -      | 展示的内容 |
| title  | string \| [React.Node](https://flow.org/en/docs/react/types/#toc-react-node)  |  -   | 展示的title |
npm package: @pile-ui/icon
Description: Now I’m the model of a modern major general / The venerated Virginian veteran whose men are all / Lining up, to put me up on a pedestal / Writin’ letters to relatives / Embellishin’ my elegance and eloquence / But the elephant is in the room / The truth i
Author: renmaomin
Latest version: 2.0.6-alpha.0

# `@pile-ui/icon`

> TODO: description

## Usage

```
const icon = require('@pile-ui/icon');

// TODO: DEMONSTRATE API
```
npm package: @pile-ui/local-provider
Description: Now I’m the model of a modern major general / The venerated Virginian veteran whose men are all / Lining up, to put me up on a pedestal / Writin’ letters to relatives / Embellishin’ my elegance and eloquence / But the elephant is in the room / The truth i
Author: wutaosusan
Latest version: 2.0.6-alpha.0

# `@pile/local-provider`

> TODO: description

## Usage

```
const localProvider = require('@pile/local-provider');

// TODO: DEMONSTRATE API
```
npm package: @pile-ui/shared
Description: Now I’m the model of a modern major general / The venerated Virginian veteran whose men are all / Lining up, to put me up on a pedestal / Writin’ letters to relatives / Embellishin’ my elegance and eloquence / But the elephant is in the room / The truth i
Author: renmaomin
Latest version: 2.0.6-alpha.0

# `@pile-ui/shared`

> TODO: description

## Usage

```
const shared = require('@pile-ui/shared');

// TODO: DEMONSTRATE API
```
npm package: @pile-ui/theme-default
Description: > TODO: description
Author: renmaomin
Latest version: 2.0.6-alpha.0

# `@pile/theme-default`

> TODO: description

## Usage

```
import '@pile/theme-default';

// TODO: DEMONSTRATE API
```

## build

```
npm run build
```


## postcss plugs

* postcss-import
* postcss-nested
* postcss-preset-env
* postcss-color-mod-function
* postcss-normalize
* cssnano