suchjs

Generating fake data, define your own types easily, expandable and powerful.

Usage no npm install needed!

<script type="module">
  import suchjs from 'https://cdn.skypack.dev/suchjs';
</script>

README

Suchjs

Suchjs Logo

npm version  Build Status  Coverage Status

An expandable and powerful library for generating fake data, both in nodejs & browser envirionment. You can use it to build a mock data server in nodejs, or just mocking data locally in the browser, normal built-in types can seen in official site, more extended types can seen in the document, you can start it easily.

Installation

How to install

Online demos

import globalSuch from 'suchjs';
globalSuch.assign('city', {
  BeiJing: {
    BeiJing: ['ChaoYang', 'HaiDian', 'DongCheng'],
  },
  ShangHai: {
    ShangHai: ['JingAn', 'PuDong', 'PuTuo'],
  },
  GuangZhou: {
    GuangZhou: ['PanYu', 'YueXiu', 'BaiYun'],
  },
});
globalSuch.define(
  'mobile$china',
  'regexp',
  '/(\\+86-)?(?<service>1[3-8][0-9])\\d{8}/',
);
console.log(globalSuch.as({
  string: ":string:[65,121]:{10,20}:@concat('_suffix')",
  number: ':number:[100,200]:%.2f',
  date: ":date:['-1 week','+1 week']:%yyyy-mm-dd HH\\:MM\\:ss",
  regexp: ':regexp:/[a-z]{1,3}[0-9]{2,10}/',
  range: ':increment:{2,3}:#[start=2,step=3]',
  'menu{2}': {
    id: ':increment',
    title: ':uppercase:{5,10}',
    'childs{2}': {
      cid: ':increment',
      refPid: ':ref:&../id',
      title: ':lowercase:{5,10}',
    },
  },
  cascader: {
    province: ':cascader:#[root=true,data=city]',
    city: ':cascader:&./province',
    area: ':cascader:&./city',
  },
  'enum:{1}': ['one', 'two'],
  template:
    ':::`:who` coming from `:ref:&./cascader/province`-`:ref:&./cascader/city`-`:ref:&./cascader/area`',
  diy: ':mobile$china',
  escape: '\\:number',
  extends: {
    bool: ':bool',
    int: ':int',
    percent: ':percent',
    uppercase: ':uppercase:{2,4}',
    lowercase: ':lowercase:{2,4}',
    alpha: ':alpha:{3,6}',
    alphaNumeric: ':alphaNumeric:{3,6}',
    alphaNumericDash: ':alphaNumericDash:{3,6}',
    tld: ':tld',
    domain: ':domain',
    protocol: ':protocol',
    url: ':url',
    email: ":email:#[domain='163.com']",
    ipv4: ':ipv4',
    ipv6: ':ipv6',
    color$hex: ':color$hex',
    color$rgb: ':color$rgb',
    color$rgba: ':color$rgba',
    color$hsl: ':color$hsl',
    color$hsla: ':color$hsla',
  },
}));

Playground

Changelog

Changelog

Expandable & Powerful

Suchjs has powerful APIs for you to design your own data, you can use a template literal mixed normal string and all supported data types to generate a DIY string just like an article. A built-in recommend extend types can be seen in such:recommend

Questions & Bugs?

Welcome to report to us with issue if you meet any question or bug.

License

MIT License.