Skip to content
/ such Public

A powerful fake data library, expandable, configurable, generate data exactly as you want.

License

Notifications You must be signed in to change notification settings

suchjs/such

Folders and files

NameName
Last commit message
Last commit date
Mar 28, 2022
Nov 5, 2020
Sep 2, 2022
Nov 8, 2023
Aug 2, 2021
Sep 2, 2022
Sep 2, 2022
Aug 19, 2021
Feb 18, 2022
Feb 22, 2022
Nov 5, 2020
Jul 18, 2021
Aug 1, 2022
Nov 22, 2018
Feb 26, 2022
Feb 18, 2022
Sep 2, 2022
Feb 26, 2022
Jan 22, 2022
Aug 20, 2021
Mar 14, 2023

Repository files navigation

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';
// assign a city data
globalSuch.assign('city', {
  BeiJing: {
    BeiJing: ['ChaoYang', 'HaiDian', 'DongCheng'],
  },
  ShangHai: {
    ShangHai: ['JingAn', 'PuDong', 'PuTuo'],
  },
  GuangZhou: {
    GuangZhou: ['PanYu', 'YueXiu', 'BaiYun'],
  },
});
// assign a type 'mobile$china' base on 'regexp' type
globalSuch.define(
  'mobile$china',
  'regexp',
  '/(\\+86-)?(?<service>1[3-8][0-9])\\d{8}/',
);
// assign a type 'who' as an enum type
globalSuch.define('who', ["I'm", "He's", "She's"]);
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.