npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

data-parser-js

v1.0.0

Published

A powerful data parsing library with TypeScript support

Downloads

86

Readme

DataParser

English | 简体中文

一个功能强大的数据解析器,用于处理数据的初始化、清理、搜索转换等操作。支持多种数据类型和模块格式,提供灵活的配置选项和自定义回调函数。

功能特性

  • 🌟 多模块格式支持:支持 ES 模块、CommonJS 和 UMD 格式
  • 📦 多种数据类型:支持字符串、数字、布尔值、数组、对象、日期、正则表达式、Set、Map 等
  • 🎯 灵活的配置选项:支持删除空值、默认值、空数组等
  • 🔧 自定义回调函数:支持 init、toSearch 等自定义回调
  • 🔄 数据转换:支持数据的初始化、清理、搜索转换等
  • 💪 类型安全:使用 TypeScript 编写,提供完整的类型定义
  • 高性能:优化的类型转换和数据处理逻辑
  • 🔍 可扩展:支持自定义数据类型和转换规则

安装

# 使用 npm
npm install data-parser-js

# 使用 yarn
yarn add data-parser-js

# 使用 pnpm
pnpm add data-parser-js

快速开始

ES 模块

import { DataParser } from 'data-parser-js';

CommonJS

const { DataParser } = require('data-parser-js');

UMD

<script src="https://unpkg.com/data-parser-js/dist/index.umd.js"></script>
<script>
  const { DataParser } = window.DataParser;
</script>

基本用法

1. 初始化

// 定义模型
const model = {
  name: { type: String, default: 'default' },
  age: { type: Number, default: 18 },
  active: { type: Boolean, default: true }
};

// 创建解析器实例
const parser = new DataParser(model);

// 初始化数据
const data = parser.init({ name: 'John', age: 25, active: false });
console.log(data); // { name: 'John', age: 25, active: false }

2. 搜索格式转换

// 定义模型
const model = {
  pageNum: { type: Number, default: 1, deleteDefaultFromSearch: true },
  pageSize: { type: Number, default: 10, deleteDefaultFromSearch: true },
  keywords: { type: String, default: '' }
};

const parser = new DataParser(model);

// 转换为搜索格式
const searchData = parser.toSearch({ pageNum: 1, pageSize: 20, keywords: 'test' });
console.log(searchData); // { pageSize: 20, keywords: 'test' }

3. 数据清理

// 定义模型
const model = {
  name: { type: String, default: null, deleteNullOnDispose: true },
  email: { type: String, default: '', deleteNullOnDispose: true }
};

const parser = new DataParser(model);

// 清理数据
const cleanData = parser.dispose({ name: null, email: '' });
console.log(cleanData); // {}

核心功能

1. 数据初始化 (init)

将原始数据转换为符合模型定义的数据结构,应用默认值和类型转换。

2. 数据清理 (dispose)

清理数据,删除空值和无效数据,可配置是否删除 null 和空字符串。

3. 搜索格式转换 (toSearch)

将数据转换为搜索格式,可配置是否删除默认值、null 值和空数组。

4. 数据转换 (toData)

将数据转换为标准格式,可配置是否删除数组中的空项。

配置选项

全局配置

| 配置项 | 类型 | 默认值 | 描述 | |--------|------|--------|------| | deleteNullOnDispose | boolean | true | 在 dispose 操作中删除 null 值和空字符串 | | deleteDefaultFromSearch | boolean | true | 在 toSearch 操作中删除默认值 | | deleteNullFromSearch | boolean | true | 在 toSearch 操作中删除 null 值 | | deleteEmptyArrayFromSearch | boolean | true | 在 toSearch 操作中删除空数组 | | deleteNullArrayItemFromData | boolean | true | 在 toData 操作中删除数组中的空项 | | arrayStringSeparator | string | ',' | 数组字符串的分隔符 | | castType | boolean | true | 是否启用类型转换 |

模型项配置

| 配置项 | 类型 | 描述 | |--------|------|------| | type | Function | 数据类型构造函数 | | default | any | 默认值 | | init | Function | 初始化回调函数 | | toSearch | Function | 搜索转换回调函数 | | deleteNullOnDispose | boolean | 在 dispose 操作中删除 null 值 | | deleteDefaultFromSearch | boolean | 在 toSearch 操作中删除默认值 | | deleteNullFromSearch | boolean | 在 toSearch 操作中删除 null 值 | | deleteEmptyArrayFromSearch | boolean | 在 toSearch 操作中删除空数组 | | deleteNullArrayItemFromData | boolean | 在 toData 操作中删除数组空项 | | arrayStringSeparator | string | 数组字符串分隔符 | | castType | boolean | 是否启用类型转换 |

API 文档

DataParser 类

constructor(model: any, config?: DataParserConfig)

创建 DataParser 实例。

  • model: 数据模型定义
  • config: 解析器配置

init(data: any): any

初始化数据。

  • data: 原始数据
  • 返回: 初始化后的数据

dispose(data: any): any

清理数据。

  • data: 原始数据
  • 返回: 清理后的数据

toSearch(data: any): any

转换为搜索格式。

  • data: 原始数据
  • 返回: 搜索格式数据

toData(data: any): any

转换为标准数据格式。

  • data: 原始数据
  • 返回: 标准格式数据

示例

1. 数组处理

const model = {
  tags: { type: Array, default: [], arrayStringSeparator: ';' }
};

const parser = new DataParser(model);
const data = parser.init({ tags: 'tag1;tag2;tag3' });
console.log(data); // { tags: ['tag1', 'tag2', 'tag3'] }

2. 日期和正则表达式

const model = {
  createdAt: { type: Date, default: null },
  pattern: { type: RegExp, default: /default/ }
};

const parser = new DataParser(model);
const data = parser.init({ createdAt: '2023-01-01', pattern: 'test.*' });
console.log(data); // { createdAt: Date(2023-01-01), pattern: /test.*/ }

3. Set 和 Map

const model = {
  uniqueTags: { type: Set, default: new Set() },
  metadata: { type: Map, default: new Map() }
};

const parser = new DataParser(model);
const data = parser.init({ 
  uniqueTags: 'tag1,tag2,tag1',
  metadata: { key1: 'value1', key2: 'value2' }
});
console.log(data); // { uniqueTags: Set(['tag1', 'tag2']), metadata: Map({ key1: 'value1', key2: 'value2' }) }

4. 嵌套对象

const model = {
  user: {
    name: { type: String, default: 'default' },
    address: {
      city: { type: String, default: 'default city' },
      zip: { type: Number, default: 12345 }
    }
  }
};

const parser = new DataParser(model);
const data = parser.init({
  user: { name: 'John', address: { city: 'New York' } }
});
console.log(data); // { user: { name: 'John', address: { city: 'New York', zip: 12345 } } }

5. 自定义回调函数

const model = {
  firstName: { type: String, default: '' },
  lastName: { type: String, default: '' },
  fullName: {
    type: String,
    default: '',
    init: (key, value, data) => {
      return `${data.firstName} ${data.lastName}`.trim();
    }
  }
};

const parser = new DataParser(model);
const data = parser.init({ firstName: 'John', lastName: 'Doe' });
console.log(data); // { firstName: 'John', lastName: 'Doe', fullName: 'John Doe' }

测试和覆盖率

运行测试

# 运行单元测试
npm test

# 运行测试并生成覆盖率报告
npm run test:coverage

覆盖率

| 文件 | 语句覆盖率 | 分支覆盖率 | 函数覆盖率 | 行覆盖率 | |------|------------|------------|------------|----------| | 所有文件 | 73.02% | 62.35% | 83.78% | 73.2% | | data-parser.ts | 73% | 56.17% | 80.95% | 72.86% | | utils.ts | 75.3% | 74.38% | 100% | 75% |

构建和开发

构建

# 构建所有模块格式
npm run build

# 开发模式,监听文件变化
npm run dev

目录结构

├── src/                 # 源代码目录
│   ├── index.ts         # 入口文件
│   ├── data-parser.ts   # 数据解析器主类
│   └── utils.ts         # 工具函数
├── dist/                # 构建输出目录
│   ├── index.esm.js     # ES 模块
│   ├── index.cjs.js     # CommonJS
│   ├── index.umd.js     # UMD
│   └── index.d.ts       # TypeScript 类型定义
├── examples/            # 示例目录
│   └── basic-usage.js   # 基本用法示例
├── __tests__/           # 测试目录
│   ├── data-parser.test.ts  # 数据解析器测试
│   └── utils.test.ts    # 工具函数测试
├── tsconfig.json        # TypeScript 配置
├── rollup.config.js     # Rollup 配置
├── package.json         # 项目配置
└── README.md            # 项目文档

许可证

MIT License

贡献

欢迎提交 Issue 和 Pull Request!

版本变更

v1.0.0

  • 初始版本
  • 支持多种数据类型和模块格式
  • 提供完整的类型定义
  • 支持灵活的配置选项和自定义回调函数

联系方式


DataParser - 让数据处理更简单! 🚀