Skip to content

$

source test1.0.0

类似 jQuery 的 dom 操作库。

类型定义
typescript
namespace $ {
    class $ extends Select {
        find(selector: string): $;
        each(fn: types.AnyFn): $;
        offset(): $offset.IOffset;
        hide(): $;
        show(): $;
        first(): $;
        last(): $;
        get(index: number): Element;
        eq(index: number): $;
        on(event: string, selector: string, handler: types.AnyFn): $;
        on(event: string, handler: types.AnyFn): $;
        off(event: string, selector: string, handler: types.AnyFn): $;
        off(event: string, handler: types.AnyFn): $;
        html(): string;
        html(value: string): $;
        text(): string;
        text(value: string): $;
        val(): string;
        val(value: string): $;
        css(name: string): string;
        css(name: string, value: string): $;
        css(properties: types.PlainObj<string | number>): $;
        attr(name: string): string;
        attr(name: string, value: string): $;
        attr(attributes: types.PlainObj<string>): $;
        data(name: string): string;
        data(name: string, value: string): $;
        data(attributes: types.PlainObj<string>): $;
        rmAttr(name: string): $;
        remove(): $;
        addClass(name: string | string[]): $;
        rmClass(name: string): $;
        toggleClass(name: string): $;
        hasClass(name: string): boolean;
        parent(): $;
        append(content: string | Element): $;
        prepend(content: string | Element): $;
        before(content: string | Element): $;
        after(content: string | Element): $;
    }
}
declare function $(selector: string | Element | Document): $.$;

支持方法列表

offset, hide, show, first, last, get, eq, on, off, html, text, val, css, attr, data, rmAttr, remove, addClass, rmClass, toggleClass, hasClass, append, prepend, before, after

javascript
const $btn = $('#btn');
$btn.html('eustia');
$btn.addClass('btn');
$btn.show();
$btn.on('click', function() {
    // Do something...
});

$attr

source test1.0.0

操作元素属性。

类型定义
typescript
namespace $attr {
    function remove(element: $safeEls.El, name: string): void;
}
function $attr(
    element: $safeEls.El,
    name: string,
    value: string
): void;
function $attr(
    element: $safeEls.El,
    attributes: types.PlainObj<string>
): void;
function $attr(element: $safeEls.El, name: string): string;

获取元素集中第一个元素的指定属性值。

参数名说明
element目标元素集
name属性名
返回值第一个元素的属性值

设置元素集中一个或多个属性的值。

参数名说明
element目标元素集
name属性名
val属性值
参数名说明
element目标元素集
attributes包含多个要设置属性-值对的对象

remove

对元素集中的所有元素,移除指定的属性。

参数名说明
element目标元素集
name属性名
javascript
$attr('#test', 'attr1', 'test');
$attr('#test', 'attr1'); // -> test
$attr.remove('#test', 'attr1');
$attr('#test', {
    attr1: 'test',
    attr2: 'test'
});

$class

source test1.0.0

操作元素 class。

类型定义
typescript
const $class: {
    add(element: $safeEls.El, name: string | string[]): void;
    has(element: $safeEls.El, name: string): boolean;
    toggle(element: $safeEls.El, name: string): void;
    remove(element: $safeEls.El, name: string): void;
};

add

对元素集中的所有元素,添加指定的 class。

参数名说明
element目标元素集
names添加的 class

has

判断元素集中是否有元素含有指定的 class。

参数名说明
element目标元素集
nameclass 值
返回值如果有,返回真

toggle

对于元素集中的每个元素,如果含有指定的 class 就将其删除,反之则添加。

参数名说明
element目标元素集
nameclass 值

remove

对于元素集中的所有元素,移除指定的 class。

参数名说明
element目标元素集
nameclass 值
javascript
$class.add('#test', 'class1');
$class.add('#test', ['class1', 'class2']);
$class.has('#test', 'class1'); // -> true
$class.remove('#test', 'class1');
$class.has('#test', 'class1'); // -> false
$class.toggle('#test', 'class1');
$class.has('#test', 'class1'); // -> true

$css

source test1.0.0

操作元素样式。

类型定义
typescript
function $css(element: $safeEls.El, name: string): string;
function $css(
    element: $safeEls.El,
    name: string,
    val: string
): void;
function $css(
    element: $safeEls.El,
    properties: types.PlainObj<string | number>
): void;

获取元素集中第一个元素的指定样式。

参数名说明
element目标元素集
name样式名
返回值样式值

设置元素集中一个或多个样式的值。

参数名说明
element目标元素集
name样式名
val样式值
参数名说明
element目标元素集
properties包含多个要设置样式-值对的对象
javascript
$css('#test', {
    color: '#fff',
    background: 'black',
    opacity: 0.5
});
$css('#test', 'display', 'block');
$css('#test', 'color'); // -> #fff

$data

source test1.0.0

同 $attr,自动给属性名加 data- 前缀。

类型定义
typescript
function $data(
    element: $safeEls.El,
    name: string,
    value: string
): void;
function $data(
    element: $safeEls.El,
    attributes: types.PlainObj<string>
): void;
function $data(element: $safeEls.El, name: string): string;
javascript
$data('#test', 'attr1', 'eustia');

$event

source test1.0.0

给指定 dom 元素绑定事件。

类型定义
typescript
const $event: {
    on(
        element: $safeEls.El,
        event: string,
        selector: string,
        handler: types.AnyFn
    ): void;
    on(element: $safeEls.El, event: string, handler: types.AnyFn): void;
    off(
        element: $safeEls.El,
        event: string,
        selector: string,
        handler: types.AnyFn
    ): void;
    off(element: $safeEls.El, event: string, handler: types.AnyFn): void;
};
javascript
function clickHandler() {
    // Do something...
}
$event.on('#test', 'click', clickHandler);
$event.off('#test', 'click', clickHandler);

$insert

source test1.0.0

插入 html 到不同位置。

类型定义
typescript
namespace $insert {
    type IInsert = (element: $safeEls.El, content: string | Element) => void;
}
const $insert: {
    before: $insert.IInsert;
    after: $insert.IInsert;
    append: $insert.IInsert;
    prepend: $insert.IInsert;
};

before

插入 html 到元素前。

after

插入 html 到元素后。

prepend

插入 html 到元素内部前。

append

插入 html 到元素内部后。

参数名说明
element目标元素集
contenthtml 字符串或元素
javascript
// <div id="test"><div class="mark"></div></div>
$insert.before('#test', '<div>licia</div>');
// -> <div>licia</div><div id="test"><div class="mark"></div></div>
$insert.after('#test', '<div>licia</div>');
// -> <div id="test"><div class="mark"></div></div><div>licia</div>
$insert.prepend('#test', '<div>licia</div>');
// -> <div id="test"><div>licia</div><div class="mark"></div></div>
$insert.append('#test', '<div>licia</div>');
// -> <div id="test"><div class="mark"></div><div>licia</div></div>

$offset

source test1.0.0

获取元素在文档中的位置。

类型定义
typescript
namespace $offset {
    interface IOffset {
        left: number;
        top: number;
        width: number;
        height: number;
    }
}
function $offset(element: $safeEls.El): $offset.IOffset;
参数名说明
element目标元素集
返回值元素位置
javascript
$offset('#test'); // -> {left: 0, top: 0, width: 0, height: 0}

$property

source test1.0.0

设置或获取元素的 html, text,val 等值。

类型定义
typescript
namespace $property {
    interface IProperty {
        (element: $safeEls.El, value: string): void;
        (element: $safeEls.El): string;
    }
}
const $property: {
    html: $property.IProperty;
    val: $property.IProperty;
    text: $property.IProperty;
};

html

设置或获取元素的 html 值。

text

设置或获取元素的 text 值。

val

设置或获取元素的 val 值。

javascript
$property.html('#test', 'licia');
$property.html('#test'); // -> licia

$remove

source test1.0.0

移除指定元素集。

类型定义
typescript
function $remove(element: $safeEls.El);
参数名说明
element目标元素集
javascript
$remove('#test');

$safeEls

source test1.0.0

将值转换为数组,如果值为字符串,使用 querySelector 获取元素集。

类型定义
typescript
namespace $safeEls {
    type El = Element | Element[] | NodeListOf<Element> | string;
}
function $safeEls(val: $safeEls.El): Element[];
参数名说明
val要转换的值
返回值元素集
javascript
$safeEls(document.querySelector('.test'));
$safeEls(document.querySelectorAll('.test'));
$safeEls('.test'); // -> Array of elements with test class

$show

source test1.0.0

显示元素。

类型定义
typescript
function $show(element: $safeEls.El): void;
参数名说明
element目标元素集
javascript
$show('#test');

Benchmark

source test1.30.0

JavaScript 基准测试。

类型定义
typescript
namespace Benchmark {
    interface IOptions {
        minTime?: number;
        maxTime?: number;
        minSamples?: number;
        delay?: number;
        name?: string;
    }
    interface IResult {
        name: string;
        mean: number;
        variance: number;
        deviation: number;
        sem: number;
        moe: number;
        rme: number;
        hz: number;
        sample: number[];
    }
}
class Benchmark {
    constructor(fn: types.AnyFn, options?: Benchmark.IOptions);
    run(): Promise<Benchmark.IResult>;
    static all(
        benches: Array<types.AnyFn | Benchmark>,
        options?: Benchmark.IOptions
    ): Promise<Benchmark.IResult[]>;
}

constructor

参数名说明
fn要测试的代码
options测试选项

可用选项:

参数名说明
minTime=50用于减少误差的时间
maxTime=5000测试运行最大时间
minSamples=5最小样本数量
delay=5测试周期间隔
name测试名称

run

运行基准测试,返回 promise。

all

[static] 运行多个基准测试。

javascript
const benchmark = new Benchmark(
    function test() {
        !!'Hello World!'.match(/o/);
    },
    {
        maxTime: 1500
    }
);
benchmark.run().then(result => {
    console.log(String(result));
});
Benchmark.all([
    function regExp() {
        /o/.test('Hello World!');
    },
    function indexOf() {
        'Hello World!'.indexOf('o') > -1;
    },
    function match() {
        !!'Hello World!'.match(/o/);
    }
]).then(results => {
    console.log(String(results));
});

Blob

source test1.0.0

如果支持 Blob,直接返回 Blob,否则使用 BlobBuilder 进行兼容。

constructor

参数名说明
partsBlob 分片
options选项
javascript
const blob = new Blob([]);

BloomFilter

source test1.10.0

布隆过滤器实现。

类型定义
typescript
class BloomFilter {
    constructor(size?: number, k?: number);
    add(val: string): void;
    test(val: string): boolean;
}

constructor

参数名说明
size=1024桶数目
k=3哈希函数数目

add

添加元素。

参数名说明
val要加的值

test

检测元素是否在过滤器中。

参数名说明
val要检查的值
返回值如果可能在返回真,如果绝对不在返回假
javascript
const bloom = new BloomFilter(256, 3);
bloom.add('Bruce Wayne');
bloom.add('Clark Kent');
bloom.test('Clark Kent'); // -> true
bloom.test('Bruce Wayne'); // -> true
bloom.test('Tony Stark'); // -> false

Caseless

source test1.9.0

修改对象的属性值时,无需关心键值的大小写情况。

类型定义
typescript
class Caseless {
    constructor(obj: any);
    getKey(key: string): string | void;
    set(key: string, val: any): void;
    get(key: string): any;
    remove(key: string): void;
    has(key: string): boolean;
}

constructor

参数名说明
obj目标对象

getKey

获取原始键值。

参数名说明
key不区分大小写的键名
返回值原始键值

set

设置值。

参数名说明
key不区分大小写的键名
val要设置的值

get

获取值。

参数名说明
key不区分大小写的键名
返回值键值

remove

移除值。

参数名说明
key不区分大小写的键名

has

判断是否存在给定的键名。

参数名说明
key不区分大小写的键名
返回值如果有,返回真
javascript
const headers = { 'Content-Type': 'text/javascript' };
const c = new Caseless(headers);
c.set('content-type', 'text/css');
console.log(headers); // -> { 'Content-Type': 'text/css' }
c.getKey('content-type'); // -> 'Content-Type'
c.remove('content-type');
c.has('content-type'); // -> false

Channel

source test1.42.0

可以相互连接的消息通道。

类型定义
typescript
class Channel extends Emitter {
    send(msg: any): void;
    connect(channel: Channel): void;
    disconnect(channel: Channel): void;
    isConnected(channel: Channel): boolean;
    destroy(): void;
}

send

发送消息给所有连接的通道。

参数名说明
msg要发送的消息

connect

连接到指定通道。

参数名说明
channel要连接的通道

disconnect

断开与指定通道的连接。

参数名说明
channel要断开的通道

isConnected

检查两个通道是否连接。

参数名说明
channel目标通道
返回值是否连接

destroy

销毁通道,断开所有连接的通道。

javascript
const channelA = new Channel();
const channelB = new Channel();
channelA.connect(channelB);
channelB.on('message', msg => {
    console.log(msg); // -> 'hello'
});
channelA.send('hello');
channelA.on('message', msg => {
    console.log(msg); // -> 'world'
});
channelB.send('world');
channelA.isConnected(channelB); // -> true
channelB.isConnected(channelA); // -> true

Class

source test demo1.0.0

创建 JavaScript 类。

类型定义
typescript
namespace Class {
    class Base {
        toString(): string;
    }
    class IConstructor extends Base {
        constructor(...args: any[]);
        static extend(methods: any, statics: any): IConstructor;
        static inherits(Class: types.AnyFn): void;
        static methods(methods: any): IConstructor;
        static statics(statics: any): IConstructor;
        [method: string]: any;
    }
}
function Class(methods: any, statics?: any): Class.IConstructor;
参数名说明
methods公有方法
statics静态方法
返回值用于创建实例的函数
javascript
const People = Class({
    initialize: function People(name, age) {
        this.name = name;
        this.age = age;
    },
    introduce: function() {
        return 'I am ' + this.name + ', ' + this.age + ' years old.';
    }
});

const Student = People.extend(
    {
        initialize: function Student(name, age, school) {
            this.callSuper(People, 'initialize', arguments);

            this.school = school;
        },
        introduce: function() {
            return (
                this.callSuper(People, 'introduce') +
                '\n I study at ' +
                this.school +
                '.'
            );
        }
    },
    {
        is: function(obj) {
            return obj instanceof Student;
        }
    }
);

const a = new Student('allen', 17, 'Hogwarts');
a.introduce(); // -> 'I am allen, 17 years old. \n I study at Hogwarts.'
Student.is(a); // -> true

Color

source test1.0.0

颜色转换。

类型定义
typescript
namespace Color {
    interface IColor {
        val: number[];
        model: string;
    }
}
class Color {
    constructor(color: string | Color.IColor);
    toRgb(): string;
    toHex(): string;
    toHsl(): string;
    static parse(colorStr: string): Color.IColor;
}

constructor

参数名说明
color要转换的颜色

toRgb

获取颜色 rgb 格式。

toHex

获取颜色十六进制格式。

toHsl

获取颜色 hsl 格式。

parse

【静态】将颜色字符串转换为含有值及颜色模型的对象。

参数名说明
color颜色字符串
返回值含有值及颜色模型的对象
javascript
Color.parse('rgb(170, 287, 204, 0.5)'); // -> {val: [170, 187, 204, 0.5], model: 'rgb'}
const color = new Color('#abc');
color.toRgb(); // -> 'rgb(170, 187, 204)'
color.toHsl(); // -> 'hsl(210, 25%, 73%)'

Delegator

source test1.17.0

对象委托。

类型定义
typescript
class Delegator {
    constructor(host: object, target: object | string);
    method(name: string, target?: string): Delegator;
    getter(name: string, target?: string): Delegator;
    setter(name: string, target?: string): Delegator;
    access(name: string, target?: string): Delegator;
}

constructor

参数名说明
host宿主对象
target委托目标

method

允许在宿主对象上访问目标方法。

参数名说明
name宿主方法名
target=name目标方法名

getter

创建 getter。

setter

创建 setter。

access

创建 accessor,效果等于同时调用 setter 和 getter。

javascript
const host = {
    target: {
        a() {
            return 'a';
        },
        b: 'b',
        c: 'c',
        d: 'd',
        e() {
            return 'e';
        }
    }
};
const delegator = new Delegator(host, 'target');
delegator
    .method('a')
    .getter('b')
    .setter('c')
    .access('d');
host.a(); // -> 'a'
host.b; // -> 'b'
host.c = 5;
host.target.c; // -> 5
host.d; // -> 'd'
host.d = 5;
host.d; // -> 5

Dispatcher

source test1.0.0

Flux 调度器。

类型定义
typescript
class Dispatcher {
    dispatch(payload: any);
    register(cb: types.AnyFn): void;
    waitFor(ids: string[]): void;
    unregister(id: string): void;
    isDispatching(): boolean;
}

相关文档

javascript
const dispatcher = new Dispatcher();

dispatcher.register(function(payload) {
    switch (
        payload.actionType
        // Do something
    ) {
    }
});

dispatcher.dispatch({
    actionType: 'action'
});

Emitter

source test1.0.0

提供观察者模式的 Event emitter 类。

类型定义
typescript
class Emitter {
    on(event: string, listener: types.AnyFn): Emitter;
    off(event: string, listener: types.AnyFn): Emitter;
    once(event: string, listener: types.AnyFn): Emitter;
    emit(event: string, ...args: any[]): Emitter;
    removeAllListeners(event?: string): Emitter;
    static mixin(obj: any): any;
}

on

绑定事件。

off

解绑事件。

once

绑定只触发一次的事件。

参数名说明
event事件名称
listener事件监听器

emit

触发事件。

参数名说明
event事件名称
...args传递给监听器的参数

removeAllListeners

解绑所有事件。

参数名说明
event事件名称

mixin

【静态】 将 Emitter 类的方法绑定到指定对象上去。

参数名说明
obj目标对象
javascript
const event = new Emitter();
event.on('test', function(name) {
    console.log(name);
});
event.emit('test', 'licia'); // Logs out 'licia'.
Emitter.mixin({});

Enum

source test1.0.0

Enum 类实现。

类型定义
typescript
class Enum {
    size: number;
    constructor(map: string[] | { [member: string]: any });
    [key: string]: any;
}

constructor

参数名说明
arr字符串数组
参数名说明
obj键值对
javascript
const importance = new Enum([
    'NONE',
    'TRIVIAL',
    'REGULAR',
    'IMPORTANT',
    'CRITICAL'
]);
const val = 1;
if (val === importance.CRITICAL) {
    // Do something.
}

FileBlobStore

source test1.32.0

二进制文件存储。

类型定义
typescript
class FileBlobStore extends Emitter {
    constructor(path: string, data?: types.PlainObj<Buffer>);
    set(key: string, buf: Buffer): void;
    set(values: types.PlainObj<Buffer>): void;
    get(key: string): Buffer | void;
    get(keys: string[]): types.PlainObj<Buffer>;
    remove(key: string): void;
    remove(keys: string[]): void;
    clear(): void;
    each(fn: (val: Buffer, key: string) => void): void;
    save(): void;
}

API 基本与 Store 模块一致,主要不同点是只接收 Buffer 类型。

save

保存内容到磁盘。

javascript
const store = new FileBlobStore('path/to/file');
store.set('name', Buffer.from('licia'));
process.on('exit', () => store.save());

FileStore

source test1.32.0

constructor

类型定义
typescript
class FileStore extends Store {
    constructor(path: string, data?: any);
}
参数名说明
path存储文件路径
data默认数据
javascript
const store = new FileStore('path/to/file');
store.set('name', 'licia');

HashTable

source test1.13.0

哈希表实现。

类型定义
typescript
class HashTable {
    constructor(size?: number);
    set(key: string, val: any): void;
    get(key: string): any;
    has(key: string): boolean;
    delete(key: string): void;
}

constructor

参数名说明
size=32桶数目

set

设置值。

参数名说明
key键名
val键值

get

获取值。

参数名说明
key键名
返回值键值

has

检查是否有指定值。

参数名说明
key键名
返回值如果值存在,返回真

delete

删除值。

javascript
const hashTable = new HashTable(128);
hashTable.set('name', 'redhoodsu');
hashTable.get('name'); // -> 'redhoodsu'
hashTable.has('name'); // -> true
hashTable.delete('name');
hashTable.has('name'); // -> false

Heap

source test1.11.0

堆实现。

类型定义
typescript
class Heap {
    size: number;
    constructor(cmp?: types.AnyFn);
    clear(): void;
    add(item: any): number;
    poll(): any;
    peek(): any;
}

size

堆大小。

constructor

参数名说明
cmp比较器

clear

清空堆数据。

add

往堆里添加元素。

参数名说明
item入堆元素
返回值当前大小

poll

获取并删除堆的根元素。

peek

与 poll 一样,只是不删除。

javascript
const heap = new Heap(function(a, b) {
    return b - a;
});
heap.add(2);
heap.add(1);
heap.add(4);
heap.add(5);
heap.poll(); // -> 5
console.log(heap.size); // -> 4

HeapSnapshot

source test1.31.0

V8 内存快照操作库。

类型定义
typescript
class HeapSnapshot {
    nodes: LinkedList;
    edges: LinkedList;
    constructor(profile: any);
}

constructor

参数名说明
profile要解析的内存快照

nodes

解析后的节点信息。

edges

解析后的边信息。

javascript
const fs = require('fs');
const data = fs.readFileSync('path/to/heapsnapshot', 'utf8');
const heapSnapshot = new HeapSnapshot(data);
let totalSize = 0;
heapSnapshot.nodes.forEach(node => (totalSize += node.selfSize));
console.log(totalSize);

I18n

source test1.23.0

简单国际化库。

类型定义
typescript
class I18n {
    constructor(locale: string, langs: types.PlainObj<any>);
    set(locale: string, lang: types.PlainObj<any>): void;
    t(path: string | string[], data?: types.PlainObj<any>): string;
    locale(locale: string): void;
}

constructor

参数名说明
locale地区代码
langs语言数据

set

添加语言或者向已有的语言新增键值。

参数名说明
locale地区代码
lang语言数据

locale

设置当前地区。

参数名说明
locale地区代码

t

获取翻译文本。

参数名说明
path要获取文本的键值
data要传递的数据
返回值翻译文本
javascript
const i18n = new I18n('en', {
    en: {
        welcome: 'Hello, {{name}}!',
        curTime(data) {
            return 'Current time is ' + data.time;
        }
    },
    cn: {
        welcome: '你好,{{name}}!'
    }
});
i18n.set('cn', {
    curTime(data) {
        return '当前时间是 ' + data.time;
    }
});
i18n.t('welcome', { name: 'licia' }); // -> 'Hello, licia!'
i18n.locale('cn');
i18n.t('curTime', { time: '5:47 pm' }); // -> '当前时间是 5:47 pm'

JsonTransformer

source test1.0.0

JSON 转换器。

类型定义
typescript
class JsonTransformer {
    constructor(data: any);
    set(key: string, val: any): JsonTransformer;
    get(key?: string): any;
    map(from: string, to: string, fn: types.AnyFn): JsonTransformer;
    map(from: string, fn: types.AnyFn): JsonTransformer;
    filter(from: string, to: string, fn: types.AnyFn): JsonTransformer;
    filter(from: string, fn: types.AnyFn): JsonTransformer;
    remove(keys: string | string[]): JsonTransformer;
    compute(
        from: string | string[],
        to: string,
        fn: types.AnyFn
    ): JsonTransformer;
    compute(from: string, fn: types.AnyFn): JsonTransformer;
    toString(): string;
}

constructor

参数名说明
data={}目标 JSON 对象

set

设置属性值。

参数名说明
key属性路径
val

如果属性路径为空,整个对象将被值替换。

get

获取属性值。

参数名说明
key属性路径
返回值指定值或整个对象

remove

移除属性值。

参数名说明
key属性路径

map

数组 map 的快捷方式。

参数名说明
from源对象路径
to目标对象路径
fn真值检测函数

filter

数组 filter 的快捷方式。

compute

从多个属性值计算新值。

参数名说明
from源属性路径
to目标属性路径
fn计算函数
javascript
const data = new JsonTransformer({
    books: [
        {
            title: 'Book 1',
            price: 5
        },
        {
            title: 'Book 2',
            price: 10
        }
    ],
    author: {
        lastname: 'Su',
        firstname: 'RedHood'
    }
});
data.filter('books', function(book) {
    return book.price > 5;
});
data.compute('author', function(author) {
    return author.firstname + author.lastname;
});
data.set('count', data.get('books').length);
data.get(); // -> {books: [{title: 'Book 2', price: 10}], author: 'RedHoodSu', count: 1}

LinkedList

source test1.0.0

双向链表实现。

类型定义
typescript
namespace LinkedList {
    class Node {
        value: any;
        prev: Node | null;
        next: Node | null;
    }
}
class LinkedList {
    size: number;
    head: LinkedList.Node;
    tail: LinkedList.Node;
    push(val: any): number;
    pop(): any;
    unshift(val: any): number;
    shift(): any;
    find(fn: types.AnyFn): LinkedList.Node | void;
    delNode(node: LinkedList.Node): void;
    forEach(iterator: types.AnyFn, ctx?: any);
    toArr(): any[];
}

size

链表大小。

链表首结点。

tail

链表尾结点。

push

向链表尾部添加值。

参数名说明
val要添加的值
返回值链表大小

pop

获取链表尾部值。

unshift

向链表头部添加值。

shift

获取链表头部值。

rmNode

删除节点。

find

查找节点。

参数名说明
fn真值检测函数
返回值第一个通过的节点

forEach

遍历链表。

toArr

将链表转换成 JavaScript 数组。

javascript
const linkedList = new LinkedList();
linkedList.push(5);
linkedList.pop(); // -> 5

LocalStore

source test1.0.0

LocalStorage 存储。

类型定义
typescript
class LocalStore extends Store {
    constructor(name: string, data?: {});
}

继承自 Store 类。

constructor

参数名说明
nameLocalStorage 存储名
data默认数据
javascript
const store = new LocalStore('licia');
store.set('name', 'licia');

Logger

source test demo1.0.0

带日志级别的简单日志库。

类型定义
typescript
class Logger extends Emitter {
    name: string;
    formatter(type: string, argList: any[]): any[];
    constructor(name: string, level?: string | number);
    setLevel(level: string | number): Logger;
    getLevel(): number;
    trace(...args: any[]): Logger;
    debug(...args: any[]): Logger;
    info(...args: any[]): Logger;
    warn(...args: any[]): Logger;
    error(...args: any[]): Logger;
    static level: Enum;
}

constructor

参数名说明
name日志名称
level=DEBUG日志级别

setLevel

设置日志级别。

参数名说明
level日志级别

getLevel

获取当前日志级别。

trace,debug,info,warn,error

打日志方法。

日志级别

TRACE,DEBUG,INFO,WARN,ERROR 和 SILENT。

javascript
const logger = new Logger('licia', Logger.level.ERROR);
logger.trace('test');

// Format output.
logger.formatter = function(type, argList) {
    argList.push(new Date().getTime());

    return argList;
};

logger.on('all', function(type, argList) {
    // It's not affected by log level.
});

logger.on('debug', function(argList) {
    // Affected by log level.
});

Lru

source test1.4.5

简单 LRU 缓存。

类型定义
typescript
class Lru {
    constructor(max: number);
    has(key: string): boolean;
    remove(key: string): void;
    get(key: string): any;
    set(key: string, val: any): void;
    clear(): void;
}

constructor

参数名说明
max最大缓存数

has

检查是否有缓存。

参数名说明
key缓存键名
返回值如果有,返回真

remove

删除缓存。

参数名说明
key缓存键名

get

获取缓存。

参数名说明
key缓存键名
返回值缓存值

set

设置缓存。

参数名说明
key缓存键名
val缓存值

clear

清除所有缓存。

javascript
const cache = new Lru(50);
cache.set('test', 'licia');
cache.get('test'); // -> 'licia'

MediaQuery

source test demo1.5.2

CSS 媒体查询监听器。

类型定义
typescript
class MediaQuery extends Emitter {
    constructor(query: string);
    setQuery(query: string): void;
    isMatch(): boolean;
}

继承自 Emitter 类。

constructor

参数名说明
query媒体查询字符串

setQuery

更新查询字符串。

isMatch

如果媒体查询匹配,返回真。

事件

match

当媒体查询匹配时触发。

unmatch

与 match 事件相反。

javascript
const mediaQuery = new MediaQuery('screen and (max-width:1000px)');
mediaQuery.isMatch(); // -> false
mediaQuery.on('match', () => {
    // Do something...
});

MutationObserver

source test1.0.0

MutationObserver 安全版本,如果不支持,则什么也不做。

javascript
const observer = new MutationObserver(function(mutations) {
    // Do something.
});
observer.observe(document.documentElement);
observer.disconnect();

PriorityQueue

source test1.11.0

优先队列实现。

类型定义
typescript
class PriorityQueue {
    size: number;
    constructor(cmp?: types.AnyFn);
    clear(): void;
    enqueue(item: any): number;
    dequeue(): any;
    peek(): any;
}

size

队列大小。

constructor

参数名说明
cmp比较器

clear

清空队列。

enqueue

元素入列。

参数名说明
item入列元素
返回值当前大小

dequeue

获取并删除队列中拥有最高优先级的元素。

peek

同 dequeue,只是不删除。

javascript
const queue = new PriorityQueue(function(a, b) {
    if (a.priority > b.priority) return 1;
    if (a.priority === b.priority) return -1;
    return 0;
});
queue.enqueue({
    priority: 1000,
    value: 'apple'
});
queue.enqueue({
    priority: 500,
    value: 'orange'
});
queue.dequeue(); // -> { priority: 1000, value: 'apple' }

Promise

source test demo1.0.0

轻量 Promise 实现。

Promises 标准

javascript
function get(url) {
    return new Promise(function(resolve, reject) {
        const req = new XMLHttpRequest();
        req.open('GET', url);
        req.onload = function() {
            req.status == 200
                ? resolve(req.response)
                : reject(Error(req.statusText));
        };
        req.onerror = function() {
            reject(Error('Network Error'));
        };
        req.send();
    });
}

get('test.json').then(function(result) {
    // Do something...
});

PseudoMap

source test1.0.0

类似 es6 的 Map,不支持遍历器。

类型定义
typescript
const PseudoMap: typeof Map;

只支持字符串键名,当 Map 存在时会直接使用 Map。

javascript
const map = new PseudoMap();
map.set('1', 1);
map.get('1'); // -> 1

Queue

source test1.0.0

队列数据结构。

类型定义
typescript
class Queue {
    size: number;
    clear(): void;
    enqueue(item: any): number;
    dequeue(): any;
    peek(): any;
    forEach(iterator: types.AnyFn, context?: any): void;
    toArr(): any[];
}

size

队列大小。

clear

清空队列。

enqueue

元素入列。

参数名说明
item入列元素
返回值当前大小

dequeue

元素出列。

peek

获取第一个元素但不移除它。

forEach

遍历队列。

参数名说明
iterator调用函数
ctx*

toArr

将队列转换为 JavaScript 数组。

javascript
const queue = new Queue();

console.log(queue.size); // -> 0
queue.enqueue(2);
queue.enqueue(3);
queue.dequeue(); // -> 2
console.log(queue.size); // -> 1
queue.peek(); // -> 3
console.log(queue.size); // -> 1

QuickLru

source test benchmark1.4.5

不使用链表的 LRU 实现。

类型定义
typescript
class QuickLru {
    constructor(max: number);
    has(key: string): boolean;
    remove(key: string): void;
    get(key: string): any;
    set(key: string, val: any): void;
    clear(): void;
}

参考 hashlru 算法,空间占用相比使用链表更多。

API 与 Lru 模块保持一致。

javascript
const cache = new QuickLru(50);
cache.set('test', 'licia');
cache.get('test'); // -> 'licia'

Readiness

source test1.32.0

任务就绪回调管理。

类型定义
typescript
class Readiness {
    signal(tasks: string | string[]): void;
    isReady(tasks: string | string[]): boolean;
    ready(tasks: string | string[], fn?: types.AnyFn): Promise<void>;
}

signal

设置任务为就绪状态。

参数名说明
tasks就绪任务

ready

注册任务就绪回调。

参数名说明
tasks要监听的任务
fn任务就绪时触发的回调函数
返回值任务就绪时 resolve 的 Promise

isReady

检查任务是否准备就绪。

参数名说明
tasks要检查的任务
返回值任务准备就绪,返回真
javascript
const readiness = new Readiness();
readiness.ready('serverCreated', function() {
    // Do something.
});
readiness.signal('serverCreated');
readiness.isReady('serverCreated'); // -> true

ReduceStore

source test1.0.0

简单类 redux 状态管理。

类型定义
typescript
class ReduceStore {
    constructor(reducer: types.AnyFn, initialState: any);
    subscribe(listener: types.AnyFn): types.AnyFn;
    dispatch(action: any): any;
    getState(): any;
}

constructor

参数名说明
reducer生成下一个状态的函数
initialState初始状态

subscribe

订阅状态改变事件。

参数名说明
listener回调函数
返回值取消订阅函数

dispatch

发出动作。

参数名说明
action描述改变内容的对象
返回值传入对象

getState

获取当前状态。

javascript
const store = new ReduceStore(function(state, action) {
    switch (action.type) {
        case 'INCREMENT':
            return state + 1;
        case 'DECREMENT':
            return state - 1;
        default:
            return state;
    }
}, 0);

store.subscribe(function() {
    console.log(store.getState());
});

store.dispatch({ type: 'INCREMENT' }); // 1
store.dispatch({ type: 'INCREMENT' }); // 2
store.dispatch({ type: 'DECREMENT' }); // 1

ResizeSensor

source test demo1.29.0

检查元素的大小是否发生变化。

类型定义
typescript
class ResizeSensor extends SingleEmitter {
    constructor(el: HTMLElement);
    destroy(): void;
}

constructor

参数名说明
element要监听大小的元素

destroy

停止监听大小变化事件。

javascript
const target = document.getElementById('test');
const sensor = new ResizeSensor(target);
sensor.addListener(function() {
    // Trigger if element's size changed.
});

Select

source test1.0.0

querySelectorAll 的简单包装类。

类型定义
typescript
class Select {
    constructor(selector: string | Element | Document);
    find(selector: string): Select;
    each(fn: types.AnyFn): Select;
}

constructor

参数名说明
selector选择器

find

查找子元素。

参数名说明
selector选择器

each

遍历匹配的元素。

参数名说明
fn调用函数
javascript
const $test = new Select('#test');
$test.find('.test').each(function(idx, element) {
    // Manipulate dom nodes
});

Semaphore

source test1.20.0

限制资源同时访问次数。

类型定义
typescript
class Semaphore {
    constructor(counter?: number);
    wait(fn: () => void): void;
    signal(): void;
}

constructor

参数名说明
counter=1初始计数

wait

等待计数器大于 0 时,执行函数。

参数名说明
fn要执行的函数

signal

执行队列中未执行任务。

javascript
const sem = new Semaphore(10);
require('http')
    .createServer((req, res) => {
        sem.wait(function() {
            res.end('.');
            setTimeout(() => sem.signal(), 500);
        });
    })
    .listen(3000);

SessionStore

source test1.0.0

SessionStorage 存储。

类型定义
typescript
class SessionStore extends Store {
    constructor(name: string, data?: any);
}

继承自 Store 类。

constructor

参数名说明
nameSessionStorage 存储名
data默认数据
javascript
const store = new SessionStore('licia');
store.set('name', 'licia');

SingleEmitter

source test1.29.0

与 Event emitter 类似,但仅有一种事件类型。

类型定义
typescript
class SingleEmitter {
    addListener(listener: types.AnyFn): void;
    rmListener(listener: types.AnyFn): void;
    emit(...args: any[]): void;
    rmAllListeners(): void;
    static mixin(obj: any): void;
}

addListener

添加监听器。

rmListener

移除监听器。

参数名说明
listener事件监听器

rmAllListeners

移除所有监听器。

emit

触发监听器。

参数名说明
...args传递给监听器的参数

mixin

【静态】将 SingleEmitter 类的方法绑定到指定对象上去。

参数名说明
obj目标对象
javascript
const event = new SingleEmitter();
event.addListener(function(name) {
    console.log(name);
});
event.emit('licia'); // Logs out 'licia'.

Socket

source test1.22.0

WebSocket 类的简单包装。

类型定义
typescript
class Socket extends Emitter {
    constructor(
        url: string,
        options?: {
            protocols?: string | string[];
            reconnect?: boolean;
        }
    );
    send(message: any): void;
    close(code?: number, reason?: string): void;
    connect(): void;
}

继续自 Emitter 类。

constructor

参数名说明
urlWebSocket 地址
options连接选项

可用选项:

参数名说明
protocols协议
reconnect=true是否尝试重新连接

send

发送数据。

参数名说明
message要发送的数据

close

关闭 WebSocket 连接。

参数名说明
code状态码
reason关闭原因

connect

连接 WebSocket,初始化时就会被调用。

javascript
const ws = new Socket('ws://localhost:8001');
ws.on('open', e => ws.send('Hello'));

Stack

source test1.0.0

栈数据结构。

类型定义
typescript
class Stack {
    size: number;
    clear(): void;
    push(item: any): number;
    pop(): any;
    peek(): any;
    forEach(iterator: types.AnyFn, context?: any): void;
    toArr(): any[];
}

size

栈大小。

clear

清空栈。

push

元素入栈。

参数名说明
item入栈元素
返回值当前大小

pop

元素出栈。

peek

获取最后一个元素但不移除它。

forEach

遍历栈。

参数名说明
iterator调用函数
ctx函数上下文

toArr

将栈转换为 JavaScript 数组。

javascript
const stack = new Stack();

stack.push(2); // -> 1
stack.push(3); // -> 2
stack.pop(); // -> 3

State

source test1.0.0

简单状态机。

类型定义
typescript
class State extends Emitter {
    constructor(initial: string, events: any);
    is(state: string): boolean;
    [event: string]: any;
}

继承自 Emitter 类。

constructor

参数名说明
initial初始状态
events改变状态的事件

is

检查当前状态是否是指定状态。

参数名说明
state要检查的状态
返回值如果是,返回真
javascript
const state = new State('empty', {
    load: { from: 'empty', to: 'pause' },
    play: { from: 'pause', to: 'play' },
    pause: { from: ['play', 'empty'], to: 'pause' },
    unload: { from: ['play', 'pause'], to: 'empty' }
});

state.is('empty'); // -> true
state.load();
state.is('pause'); // -> true
state.on('play', function(src) {
    console.log(src); // -> 'eustia'
});
state.on('error', function(err, event) {
    // Error handler
});
state.play('eustia');

Store

source test1.0.0

内存存储。

类型定义
typescript
class Store extends Emitter {
    constructor(data?: {});
    set(key: string, val: any): void;
    set(values: {}): void;
    get(key: string): any;
    get(keys: string[]): {};
    remove(key: string): void;
    remove(keys: string[]): void;
    clear(): void;
    each(fn: (...args: any[]) => void): void;
}

继承自 Emitter 类。

constructor

参数名说明
data初始数据

set

设置值。

参数名说明
key键名
val键值

设置多个值。

参数名说明
values包含多个键值对的对象

该方法被调用时发触发 change 事件。

get

获取值。

参数名说明
key键名
返回值键值

获取多个值。

参数名说明
keys键名列表
返回值包含多个键值对的对象

remove

移除值。

参数名说明
key键名

clear

清空数据。

each

遍历数据。

参数名说明
fn遍历函数
javascript
const store = new Store('test');
store.set('user', { name: 'licia' });
store.get('user').name; // -> 'licia'
store.clear();
store.each(function(val, key) {
    // Do something.
});
store.on('change', function(key, newVal, oldVal) {
    // It triggers whenever set is called.
});

Trace

source test1.33.0

解析、处理和生成 Chrome Trace 格式数据。

类型定义
typescript
namespace Trace {
    interface IEvent {
        name: string;
        cat: string;
        ph: string;
        ts: number;
        pid: number;
        tid: number;
        args: any;
        [key: string]: any;
    }
    class Process {
        constructor(id);
        id(): string;
        name(): string;
        addEvent(IEvent): void;
        rmEvent(IEvent): void;
        getThread(id: number): Thread;
        rmThread(id: number): void;
        threads(): Thread[];
        toJSON(): IEvent[];
    }
    class Thread {
        constructor(id, pid);
        id(): string;
        name(): string;
        addEvent(IEvent): void;
        rmEvent(IEvent): void;
        events(): IEvent[];
        toJSON(): IEvent[];
    }
}
class Trace {
    constructor(events: Trace.IEvent[]);
    addEvent(event: Trace.IEvent);
    rmEvent(event: Trace.IEvent);
    getProcess(id: number): Trace.Process;
    rmProcess(id: number): void;
    processes(): Trace.Process[];
    toJSON(): Trace.IEvent[];
}
javascript
const fs = require('fs');
const data = fs.readFileSync('path/to/trace', 'utf8');
const trace = new Trace(JSON.parse(data));
trace.rmProcess(627);
fs.writeFileSync(
    'path/to/trace',
    JSON.stringify(trace.toJSON()),
    'utf8',
    function() {}
);

Tracing

source test1.33.0

创建 chrome trace 格式数据。

类型定义
typescript
class Tracing {
    constructor(options?: {
        pid?: number;
        tid?: number;
        processName?: string;
        threadName?: string;
    });
    start(cat?: string): void;
    stop(): Trace.IEvent[];
    metadata(name: string, args: any): void;
    begin(cat: string, name: string, args?: any): void;
    end(args?: any): void;
    asyncBegin(cat: string, name: string, id?: string, args?: any): string;
    asyncEnd(id: string, args?: any): void;
    instant(
        cat: string,
        name: string,
        scope?: 'g' | 'p' | 't',
        args?: any
    ): void;
    id(): string;
}

constructor

参数名说明
options录制选项

可用选项:

参数名说明
pid进程 id
tid线程 id
processName进程名称
threadName线程名称

start

开始录制。

参数名说明
cat开启类别

stop

停止录制并获取事件列表。

begin

记录开始事件。

参数名说明
cat事件类别
name事件名称
args参数

end

记录结束事件。

asyncBegin

记录异步开始事件。

asyncEnd

记录异步结束事件。

instant

记录 instant 事件。

id

获取一个唯一 id。

javascript
const fs = require('fs');
const tracing = new Tracing();
tracing.start();
tracing.begin('cat', 'name');
// Do something...
tracing.end();
fs.writeFileSync(
    'path/to/trace',
    JSON.stringify(tracing.stop()),
    'utf8',
    function() {}
);

Trie

source test1.25.0

字典树数据结构。

类型定义
typescript
class Trie {
    add(word: string): void;
    remove(word: string): void;
    has(word: string): boolean;
    words(prefix: string): string[];
    clear(): void;
}

add

添加单词到字典数。

参数名说明
word要添加的单词

remove

从字典树中移除单词。

has

检查字典树中是否存在单词。

words

获取所有带指定前缀的单词。

参数名说明
prefix单词前缀
返回值所有带指定前缀的单词

clear

清除字典树中的所有单词。

javascript
const trie = new Trie();
trie.add('carpet');
trie.add('car');
trie.add('cat');
trie.add('cart');
trie.has('cat'); // -> true
trie.remove('carpet');
trie.has('carpet'); // -> false
trie.words('car'); // -> ['car', 'cart']
trie.clear();

Tween

source test demo1.0.0

JavaScript 补间动画库。

类型定义
typescript
class Tween extends Emitter {
    constructor(target: any);
    to(props: any, duration?: number, ease?: string | Function): Tween;
    progress(): number;
    progress(progress: number): Tween;
    play(): Tween;
    pause(): Tween;
    paused(): boolean;
}

继承自 Emitter 类。

constructor

参数名说明
obj要补间的对象

to

参数名说明
destination目标属性值
duration补间时长
ease缓动函数

play

开始播放。

pause

暂停动画。

paused

检查动画是否暂停。

progress

设置或获取动画进度。

参数名说明
progress介于 0 到 1 之间的数字
javascript
const pos = { x: 0, y: 0 };

const tween = new Tween(pos);
tween
    .on('update', function(target) {
        console.log(target.x, target.y);
    })
    .on('end', function(target) {
        console.log(target.x, target.y); // -> 100, 100
    });
tween.to({ x: 100, y: 100 }, 1000, 'inElastic').play();

Url

source test1.0.0

简单 url 操作库。

类型定义
typescript
namespace Url {
    interface IUrl {
        protocol: string;
        auth: string;
        hostname: string;
        hash: string;
        query: any;
        port: string;
        pathname: string;
        slashes: boolean;
    }
}
class Url {
    protocol: string;
    auth: string;
    hostname: string;
    hash: string;
    query: any;
    port: string;
    pathname: string;
    slashes: boolean;
    constructor(url?: string);
    setQuery(name: string, val: string | number): Url;
    setQuery(query: types.PlainObj<string | number>): Url;
    rmQuery(name: string | string[]): Url;
    toString(): string;
    static parse(url: string): Url.IUrl;
    static stringify(object: Url.IUrl): string;
}

constructor

参数名说明
url=locationurl 地址

setQuery

设置 query 值。

参数名说明
namequery 名
valquery 值
返回值this
参数名说明
queryquery 对象
返回值this

rmQuery

移除 query 值。

参数名说明
namequery 名
返回值this

parse

【静态】将 url 解析成对象。

参数名说明
urlurl 地址
返回值url 对象

stringify

【静态】将 url 对象转换为 url 地址。

参数名说明
urlurl 对象
返回值url 地址

url 对象包含以下属性值:

属性名说明
protocol协议名,(如 http:)
slashes协议名后是否有双斜杠
auth身份验证(例如 用户名:密码)
hostnameHost 名,不带端口号
port端口号
pathnameURL 路径
queryquery 对象
hashURL # 字符后边的部分,# 包含在内
javascript
const url = new Url('http://example.com:8080?eruda=true');
console.log(url.port); // -> '8080'
url.query.foo = 'bar';
url.rmQuery('eruda');
url.toString(); // -> 'http://example.com:8080/?foo=bar'

Validator

source test1.0.0

对象属性值校验。

类型定义
typescript
class Validator {
    constructor(options: types.PlainObj<any>);
    validate(object: any): string | boolean;
    static plugins: any;
    static addPlugin(name: string, plugin: types.AnyFn): void;
}

constructor

参数名说明
options校验配置

validate

校验对象。

参数名说明
obj目标对象
返回值校验结果,true 表示通过

addPlugin

【静态】添加插件。

参数名说明
name插件名
plugin校验函数

默认插件

required,number,boolean,string 和 regexp。

javascript
Validator.addPlugin('custom', function(val, key, config) {
    if (typeof val === 'string' && val.length === 5) return true;

    return key + ' should be a string with length 5';
});
const validator = new Validator({
    test: {
        required: true,
        custom: true
    }
});
validator.validate({}); // -> 'test is required'
validator.validate({ test: 1 }); // -> 'test should be a string with length 5';
validator.validate({ test: 'licia' }); // -> true

Wrr

source test1.21.0

加权轮询调度算法实现。

类型定义
typescript
class Wrr {
    size: number;
    set(val: any, weight: number): void;
    get(val: any): number | void;
    remove(val: any): void;
    clear(): void;
    next(): any;
}

size

池大小。

set

设置值和权重,如果值已存在则更新其权重。

参数名说明
val要设置的值
weight值的权重

get

获取指定值的权重。

参数名说明
val要获取的值
返回值值的权重

remove

移除指定值。

参数名说明
val要移除的值

next

从池中获取下一个值。

clear

清除所有值。

javascript
const pool = new Wrr();
pool.set('A', 4);
pool.set('B', 8);
pool.set('C', 2);
pool.next();
pool.remove('A');
console.log(pool.size); // -> 2

abbrev

source test1.0.0

计算字符串集的缩写集合。

类型定义
typescript
function abbrev(...names: string[]): types.PlainObj<string>;
参数名说明
names字符串集
返回值缩写集合
javascript
abbrev('lina', 'luna');
// -> {li: 'lina', lin: 'lina', lina: 'lina', lu: 'luna', lun: 'luna', luna: 'luna'}

after

source test1.0.0

创建一个函数,只有在调用 n 次后才会调用一次。

类型定义
typescript
function after<T extends types.AnyFn>(n: number, fn: T): T;
参数名说明
n调用次数
fn源函数
返回值输出函数
javascript
const fn = after(5, function() {
    // -> Only invoke after fn is called 5 times.
});

ajax

source test1.0.0

执行异步 HTTP 请求。

类型定义
typescript
namespace ajax {
    function get(
        url: string,
        data: string | {},
        success: types.AnyFn,
        dataType?: string
    ): XMLHttpRequest;
    function get(
        url: string,
        success: types.AnyFn,
        dataType?: string
    ): XMLHttpRequest;
    function post(
        url: string,
        data: string | {},
        success: types.AnyFn,
        dataType?: string
    ): XMLHttpRequest;
    function post(
        url: string,
        success: types.AnyFn,
        dataType?: string
    ): XMLHttpRequest;
}
function ajax(options: {
    type?: string;
    url: string;
    data?: string | {};
    dataType?: string;
    contentType?: string;
    success?: types.AnyFn;
    error?: types.AnyFn;
    complete?: types.AnyFn;
    timeout?: number;
}): XMLHttpRequest;
参数名说明
optionsAjax 选项

可用选项:

参数名说明
type请求类型
url请求地址
data请求数据
dataType=json响应类型(json,xml)
contentType=application/x-www-form-urlencoded请求内容类型
success成功回调
error失败回调
complete结束回调
timeout请求超时

get

type = GET 的快捷方式。

post

type = POST 的快捷方式。

参数名说明
url请求地址
data请求数据
success成功回调
dataType响应类型
javascript
ajax({
    url: 'http://example.com',
    data: { test: 'true' },
    error() {},
    success(data) {
        // ...
    },
    dataType: 'json'
});

ajax.get('http://example.com', {}, function(data) {
    // ...
});

allKeys

source test1.0.0

获取对象的所有键名,包括自身的及继承的。

类型定义
typescript
namespace allKeys {
    interface IOptions {
        prototype?: boolean;
        unenumerable?: boolean;
    }
}
function allKeys(
    obj: any,
    options: { symbol: true } & allKeys.IOptions
): Array<string | Symbol>;
function allKeys(
    obj: any,
    options?: ({ symbol: false } & allKeys.IOptions) | allKeys.IOptions
): string[];
参数名说明
obj目标对象
options选项
返回值包含所有键名的数组

可用选项:

参数名说明
prototype=true包含原型键名
unenumerable=false包含不可枚举键名
symbol=false包含 Symbol 键名

Object 对象原型上的方法不会被获取到。

javascript
const obj = Object.create({ zero: 0 });
obj.one = 1;
allKeys(obj); // -> ['zero', 'one']

ansiColor

source test1.4.1

控制台颜色。

类型定义
typescript
namespace ansiColor {
    type IFn = (str: string) => string;
}
const ansiColor: {
    black: ansiColor.IFn;
    red: ansiColor.IFn;
    green: ansiColor.IFn;
    yellow: ansiColor.IFn;
    blue: ansiColor.IFn;
    magenta: ansiColor.IFn;
    cyan: ansiColor.IFn;
    white: ansiColor.IFn;
    gray: ansiColor.IFn;
    grey: ansiColor.IFn;
    bgBlack: ansiColor.IFn;
    bgRed: ansiColor.IFn;
    bgGreen: ansiColor.IFn;
    bgYellow: ansiColor.IFn;
    bgBlue: ansiColor.IFn;
    bgMagenta: ansiColor.IFn;
    bgCyan: ansiColor.IFn;
    bgWhite: ansiColor.IFn;
    blackBright: ansiColor.IFn;
    redBright: ansiColor.IFn;
    greenBright: ansiColor.IFn;
    yellowBright: ansiColor.IFn;
    blueBright: ansiColor.IFn;
    magentaBright: ansiColor.IFn;
    cyanBright: ansiColor.IFn;
    whiteBright: ansiColor.IFn;
    bgBlackBright: ansiColor.IFn;
    bgRedBright: ansiColor.IFn;
    bgGreenBright: ansiColor.IFn;
    bgYellowBright: ansiColor.IFn;
    bgBlueBright: ansiColor.IFn;
    bgMagentaBright: ansiColor.IFn;
    bgCyanBright: ansiColor.IFn;
    bgWhiteBright: ansiColor.IFn;
};

支持颜色

black, red, green, yellow, blue, magenta, cyan, white, gray, grey

bgBlack, bgRed, bgGreen, bgYellow, bgBlue, bgMagenta, bgCyan, bgWhite,

blackBright, redBright, greenBright, yellowBright, blueBright, magentaBright, cyanBright, whiteBright

bgBlackBright, bgRedBright, bgGreenBright, bgYellowBright, bgBlueBright, bgMagentaBright, bgCyanBright, bgWhiteBright

javascript
ansiColor.red('Warning');

arrToMap

source test1.0.0

将字符串列表转换为映射。

类型定义
typescript
function arrToMap<T>(
    arr: string[],
    val?: T
): { [key: string]: T };
参数名说明
arr字符串列表
val=true键值
返回值映射
javascript
const needPx = arrToMap([
    'column-count',
    'columns',
    'font-weight',
    'line-weight',
    'opacity',
    'z-index',
    'zoom'
]);
const key = 'column-count';
let val = '5';
if (needPx[key]) val += 'px';
console.log(val); // -> '5px'

atob

source test1.0.0

window.atob,运行在 node 环境时使用 Buffer 进行模拟。

类型定义
typescript
function atob(str: string): string;
javascript
atob('SGVsbG8gV29ybGQ='); // -> 'Hello World'

average

source test1.0.0

获取数字的平均值。

类型定义
typescript
function average(...numbers: number[]): number;
参数名说明
numbers要计算的数字
返回值平均值
javascript
average(5, 3, 1); // -> 3

base64

source test1.0.0

base64 编解码。

类型定义
typescript
const base64: {
    encode(bytes: number[]): string;
    decode(str: string): number[];
};

encode

将字节数组编码为 base64 字符串。

参数名说明
bytes字节数组
返回值base64 编码的字符串

decode

将 base64 字符串解码为字节数组。

参数名说明
strbase64 编码的字符串
返回值字节数组
javascript
base64.encode([168, 174, 155, 255]); // -> 'qK6b/w=='
base64.decode('qK6b/w=='); // -> [168, 174, 155, 255]

before

source test1.0.0

创建一个函数,只能调用少于 n 次。

类型定义
typescript
function before<T extends types.AnyFn>(n: number, fn: T): T;
参数名说明
n调用次数
fn源函数
返回值输出函数

超过 n 次后再次调用函数将直接返回最后一次函数的调用结果。

javascript
const fn = before(5, function() {});
fn(); // Allow function to be call 4 times at last.

binarySearch

source test1.4.0

二分查找实现。

类型定义
typescript
function binarySearch(
    array: any[],
    val: any,
    cmp?: types.AnyFn
): number;
参数名说明
array目标数组
val要查找的值
cmp比较器
返回值第一次出现的位置,如果没有,返回 -1
javascript
binarySearch([1, 2, 3], 2); // -> 1
binarySearch([1, 2], 3); // -> -1
binarySearch(
    [
        {
            key: 1
        },
        {
            key: 2
        }
    ],
    { key: 1 },
    (a, b) => {
        if (a.key === b.key) return 0;
        return a.key < b.key ? -1 : 1;
    }
); // -> 0

bind

source test1.0.0

创建一个绑定到指定对象的函数。

类型定义
typescript
function bind(
    fn: types.AnyFn,
    ctx: any,
    ...args: any[]
): types.AnyFn;
参数名说明
fn源函数
ctx绑定对象
args可选参数
返回值输出函数
javascript
const fn = bind(
    function(msg) {
        console.log(this.name + ':' + msg);
    },
    { name: 'eustia' },
    'I am a utility library.'
);
fn(); // -> 'eustia: I am a utility library.'

btoa

source test1.0.0

window.btoa,运行在 node 环境时使用 Buffer 进行模拟。

类型定义
typescript
function btoa(str: string): string;
javascript
btoa('Hello World'); // -> 'SGVsbG8gV29ybGQ='

bubbleSort

source test1.0.0

冒泡排序实现。

类型定义
typescript
function bubbleSort(arr: any[], cmp?: types.AnyFn): any[];
参数名说明
arr要排序的数组
cmp比较器
返回值有序数组
javascript
bubbleSort([2, 1]); // -> [1, 2]

bytesToStr

source test1.1.0

将字节数组转换为字符串。

类型定义
typescript
function bytesToStr(bytes: number[], encoding?: string): string;
参数名说明
bytes字节数组
encoding=utf8字符串编码
返回值目标字符串
javascript
bytesToStr([108, 105, 99, 105, 97]); // -> 'licia'

bytesToWords

source test1.16.0

将字节数组转换为 32 位字长数组。

类型定义
typescript
function bytesToWords(bytes: number[]): number[];

在使用 CryptoJS 时会派上用处。

参数名说明
bytes字节数组
返回值字长数组
javascript
bytesToWords([0x12, 0x34, 0x56, 0x78]); // -> [0x12345678]

cacheRequire

source test benchmark1.32.0

缓存模块加载,提高应用启动速度。

类型定义
typescript
function cacheRequire(options?: {
    dir?: string;
    requirePath?: boolean;
    code?: boolean;
    compileCache?: boolean;
}): void;
参数名说明
options缓存选项

可用选项:

参数名说明
dir缓存文件夹
requirePath=trueWhether require path should be cached
code=falseWhether js code should be cached
compileCache=trueWhether compile cache should be used
javascript
cacheRequire({
    dir: 'path/to/cache/dir'
});

callbackify

source test1.0.0

将返回 Promise 的函数转换为使用回调的函数。

类型定义
typescript
function callbackify(fn: types.AnyFn): types.AnyFn;
参数名说明
fn返回 Promise 的函数
返回值使用回调的函数
javascript
function fn() {
    return new Promise(function(resolve, reject) {
        // ...
    });
}

const cbFn = callbackify(fn);

cbFn(function(err, value) {
    // ...
});

camelCase

source test1.0.0

将字符串转换为驼峰式。

类型定义
typescript
function camelCase(str: string): string;
参数名说明
str源字符串
返回值驼峰式字符串
javascript
camelCase('foo-bar'); // -> fooBar
camelCase('foo bar'); // -> fooBar
camelCase('foo_bar'); // -> fooBar
camelCase('foo.bar'); // -> fooBar

capitalize

source test1.0.0

将字符串的第一个字符转换为大写,其余字符转换为小写。

类型定义
typescript
function capitalize(str: string): string;
参数名说明
str源字符串
返回值目标字符串
javascript
capitalize('rED'); // -> Red

castPath

source test1.0.0

将值转换为属性路径数组。

类型定义
typescript
function castPath(path: string | string[], obj?: any): string[];
参数名说明
path要转换的值
obj目标对象
返回值属性路径数组
javascript
castPath('a.b.c'); // -> ['a', 'b', 'c']
castPath(['a']); // -> ['a']
castPath('a[0].b'); // -> ['a', '0', 'b']
castPath('a.b.c', { 'a.b.c': true }); // -> ['a.b.c']

centerAlign

source test1.0.0

字符串居中。

类型定义
typescript
function centerAlign(
    str: string | string[],
    width?: number
): string;
参数名说明
str源字符串
width每行宽度
返回值居中字符串
javascript
centerAlign('test', 8); // -> '  test'
centerAlign('test\nlines', 8); // -> '  test\n lines'
centerAlign(['test', 'lines'], 8); // -> '  test\n lines'

cgroup

source test1.35.0

在容器内读取 cgroup 信息。

类型定义
typescript
const cgroup: {
    cpu: {
        stat(): {
            usage: number;
        };
        max(): number;
    };
    cpuset: {
        cpus(): {
            effective: number[];
        };
    };
    memory: {
        max(): number;
        current(): number;
    };
    version(): number;
};
javascript
cgroup.cpu.stat();

char

source test1.0.0

根据指定的整数返回 unicode 编码为该整数的字符。

类型定义
typescript
function char(num: number): string;
参数名说明
num要转换的整数
返回值对应字符
javascript
char(65); // -> 'A'
char(97); // -> 'a'

chunk

source test1.0.0

将数组拆分为指定长度的子数组。

类型定义
typescript
function chunk(arr: any[], size?: number): Array<any[]>;
参数名说明
arr源数组
size=1子数组的长度
返回值目标数组
javascript
chunk([1, 2, 3, 4], 2); // -> [[1, 2], [3, 4]]
chunk([1, 2, 3, 4], 3); // -> [[1, 2, 3], [4]]
chunk([1, 2, 3, 4]); // -> [[1], [2], [3], [4]]

clamp

source test1.0.0

将数字限定于指定区间。

类型定义
typescript
function clamp(n: number, lower: number, upper: number): number;
function clamp(n: number, upper: number): number;
参数名说明
n要处理的数字
lower下限
upper上限
返回值限定后的数字
javascript
clamp(-10, -5, 5); // -> -5
clamp(10, -5, 5); // -> 5
clamp(2, -5, 5); // -> 2
clamp(10, 5); // -> 5
clamp(2, 5); // -> 2

className

source test1.0.0

合并 class。

类型定义
typescript
function className(...names: any[]): string;
参数名说明
names要合并的 class
返回值合并后的 class 字符串
javascript
className('a', 'b', 'c'); // -> 'a b c'
className('a', false, 'b', 0, 1, 'c'); // -> 'a b 1 c'
className('a', ['b', 'c']); // -> 'a b c'
className('a', { b: false, c: true }); // -> 'a c'
className('a', ['b', 'c', { d: true, e: false }]); // -> 'a b c d';

cliHelp

source test1.27.0

输出命令行帮助。

类型定义
typescript
namespace cliHelp {
    interface IOption {
        name: string;
        shorthand?: string;
        desc: string;
    }
    interface ICommand {
        name: string;
        desc: string;
        usage: string | string[];
        options?: IOption[];
    }
    interface IData {
        name: string;
        usage: string | string[];
        commands: ICommand[];
    }
}
function cliHelp(data: cliHelp.IData | cliHelp.ICommand): string;
参数名说明
data帮助数据
返回值命令行帮助
javascript
const test = {
    name: 'test',
    desc: 'Generate test files',
    usage: ['<module-name> [options]', 'lpad --browser'],
    options: [
        {
            name: 'browser',
            shorthand: 'b',
            desc: 'True if test should run in a browser'
        }
    ]
};
const data = {
    name: 'licia',
    usage: '<command> [options]',
    commands: [test]
};

cliHelp(data);
cliHelp(test);

clone

source test1.0.0

对指定对象进行浅复制。

类型定义
typescript
function clone<T>(val: T): T;

任何嵌套的对象或数组只会拷贝其引用。

参数名说明
val要克隆的值
返回值克隆值
javascript
clone({ name: 'eustia' }); // -> {name: 'eustia'}

cloneDeep

source test1.0.0

深复制。

类型定义
typescript
function cloneDeep<T>(val: T): T;
参数名说明
val要克隆的值
返回值克隆值
javascript
const obj = [{ a: 1 }, { a: 2 }];
const obj2 = cloneDeep(obj);
console.log(obj[0] === obj2[1]); // -> false

cmpVersion

source test1.0.0

比较版本号。

类型定义
typescript
function cmpVersion(v1: string, v2: string): number;
参数名说明
v1版本号
v2版本号
返回值比较结果
javascript
cmpVersion('1.1.8', '1.0.4'); // -> 1
cmpVersion('1.0.2', '1.0.2'); // -> 0
cmpVersion('2.0', '2.0.0'); // -> 0
cmpVersion('3.0.1', '3.0.0.2'); // -> 1
cmpVersion('1.1.1', '1.2.3'); // -> -1

combine

source test1.1.0

创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值。

类型定义
typescript
function combine(keys: string[], values: any[]): any;
参数名说明
keys键名数组
values键值数组
返回值目标对象
javascript
combine(['a', 'b', 'c'], [1, 2, 3]); // -> {a: 1, b: 2, c: 3}

compact

source test1.0.0

返回数组的拷贝并移除其中的虚值。

类型定义
typescript
function compact(arr: any[]): any[];

虚值包括 false,null,0,空字符串,undefined 和 NaN。

参数名说明
arr源数组
返回值目标数组
javascript
compact([0, 1, false, 2, '', 3]); // -> [1, 2, 3]

compose

source test1.0.0

将多个函数组合成一个函数。

类型定义
typescript
function compose(...fn: types.AnyFn[]): types.AnyFn;

每个函数使用下一个函数的返回值作为参数。

参数名说明
...fn要组合的函数
返回值目标函数
javascript
const welcome = compose(
    function(name) {
        return 'hi: ' + name;
    },
    function(name) {
        return name.toUpperCase() + '!';
    }
);

welcome('licia'); // -> 'hi: LICIA!'

compressImg

source test demo1.0.0

使用 canvas 对图像进行压缩。

类型定义
typescript
function compressImg(
    file: File | Blob | string,
    cb: types.AnyFn
): void;
function compressImg(
    file: File | Blob | string,
    options?: {
        maxWidth?: number;
        maxHeight?: number;
        width?: number;
        height?: number;
        mimeType?: string;
        quality?: number;
    },
    cb?: types.AnyFn
): void;
参数名说明
file图片文件或 url
options选项
cb回调

可用选项:

参数名说明
maxWidth最大宽度
maxHeight最大高度
width输出图片宽度
height输出图片高度
mimeTypeMine 类型
quality=0.8图片质量,从 0 到 1

为了保持图片比例,当宽度设置时高度将被忽略。

如果设置了宽高,最大宽度跟最大高度将被忽略。

javascript
const file = new Blob([]);
compressImg(
    file,
    {
        maxWidth: 200
    },
    function(err, file) {
        // ...
    }
);

concat

source test1.0.0

将多个数组合并成一个数组。

类型定义
typescript
function concat(...args: Array<any[]>): any[];
参数名说明
...arr要合并的数组
返回值合并后的数组
javascript
concat([1, 2], [3], [4, 5]); // -> [1, 2, 3, 4, 5]

contain

source test1.0.0

检查数组中是否有指定值。

类型定义
typescript
function contain(arr: any[] | {} | string, val: any): boolean;
参数名说明
target目标对象
val要检查的值
返回值如果有,返回真
javascript
contain([1, 2, 3], 1); // -> true
contain({ a: 1, b: 2 }, 1); // -> true
contain('abc', 'a'); // -> true

container

source test1.35.0

在容器内读取容器信息。

类型定义
typescript
const container: {
    cpuNum(): number;
    cpuUsage(period?: number): Promise<number>;
    cpuLoad(period?: number): Promise<number>;
    memUsage(): number;
    memLoad(): number;
};
javascript
container.cpuNum();

convertBase

source test1.0.0

对数字进行进制转换。

类型定义
typescript
function convertBase(
    num: number | string,
    from: number,
    to: number
): string;
参数名说明
num要转换的数字
from源进制
to目标进制
返回值转换后的数字
javascript
convertBase('10', 2, 10); // -> '2'
convertBase('ff', 16, 2); // -> '11111111'

convertBin

source test1.5.0

二进制数据格式转换。

类型定义
typescript
namespace convertBin {
    function blobToArrBuffer(blob: any): Promise<ArrayBuffer>;
}
function convertBin(bin: any, type: string): any;
参数名说明
bin源二进制数据
type二进制类型
返回值目标二进制数据

支持格式

base64, ArrayBuffer, Array, Uint8Array, Blob(browser), Buffer(node)

因为将 Blob 转换为其它格式是个异步过程,所以你不能直接对它进行转换。

blobToArrBuffer

将 Blob 类型转换为 ArrayBuffer 类型。

参数名说明
blobBlob 数据
返回值ArrayBuffer promise
javascript
convertBin('qK6b/w==', 'Uint8Array'); // -> [168, 174, 155, 255]
convertBin.blobToArrBuffer(new Blob([])).then(arrBuffer => {
    // Do something...
});

source test1.0.0

浏览器 cookie 操作库。

类型定义
typescript
namespace cookie {
    interface IOptions {
        path?: string;
        expires?: number;
        domain?: string;
        secure?: boolean;
    }
    interface ICookie {
        get(key: string, options?: cookie.IOptions): string;
        set(key: string, val: string, options?: cookie.IOptions): ICookie;
        remove(key: string, options?: cookie.IOptions): ICookie;
    }
}
const cookie: cookie.ICookie;

get

获取 cookie 值。

参数名说明
keyCookie 键名
返回值对应的 cookie 值

set

设置 cookie 值。

参数名说明
keycookie 键名
valcookie 值
optionscookie 选项
返回值cookie 模块

remove

移除 cookie 值。

参数名说明
keyCookie 键名
optionsCookie 选项
返回值cookie 模块
javascript
cookie.set('a', '1', { path: '/' });
cookie.get('a'); // -> '1'
cookie.remove('a');

copy

source test demo1.0.0

使用 document.execCommand 将文本拷贝到剪贴板。

类型定义
typescript
function copy(text: string, cb?: types.AnyFn): void;
参数名说明
text要拷贝的文本
cb可选回调
javascript
copy('text', function(err) {
    // Handle errors.
});

crc1

source test1.5.7

CRC1 算法实现。

类型定义
typescript
function crc1(
    input: string | number[],
    previous?: number
): number;
参数名说明
input信息码
previous用于累积计算的 CRC1 校验码
返回值CRC1 校验码
javascript
crc1('1234567890').toString(16); // -> 'd'

crc16

source test1.5.9

CRC16 算法实现。

类型定义
typescript
function crc16(
    input: string | number[],
    previous?: number
): number;
参数名说明
input信息码
previous用于累积计算的 CRC16 校验码
返回值CRC16 校验码
javascript
crc16('1234567890').toString(16); // -> 'c57a'

crc32

source test1.5.9

CRC32 算法实现。

类型定义
typescript
function crc32(
    input: string | number[],
    previous?: number
): number;
参数名说明
input信息码
previous用于累积计算的 CRC32 校验码
返回值CRC32 校验码
javascript
crc32('1234567890').toString(16); // -> '261daee5'

crc8

source test1.5.9

CRC8 算法实现。

类型定义
typescript
function crc8(
    input: string | number[],
    previous?: number
): number;
参数名说明
input信息码
previous用于累积计算的 CRC8 校验码
返回值CRC8 校验码
javascript
crc8('1234567890').toString(16); // -> '52'

create

source test1.16.0

创建对象并指定它的原型。

类型定义
typescript
function create(proto?: object): any;
参数名说明
proto新对象原型
返回值目标对象
javascript
const obj = create({ a: 1 });
console.log(obj.a); // -> 1

createAssigner

source test1.0.0

用于创建 extend,extendOwn 和 defaults 等模块。

类型定义
typescript
function createAssigner(
    keysFn: types.AnyFn,
    defaults: boolean
): types.AnyFn;
参数名说明
keysFn获取对象键名的函数
defaults设置为真时不对值进行覆盖
返回值目标函数

createUrl

source test1.0.0

CreateObjectURL 的包裹函数。

类型定义
typescript
function createUrl(
    data: any,
    options?: { type?: string }
): string;
参数名说明
data数据
options当数据不是 File 或者 Blob 对象时使用
返回值Blob 地址
javascript
createUrl('test', { type: 'text/plain' }); // -> Blob url
createUrl(['test', 'test']);
createUrl(new Blob([]));
createUrl(new File(['test'], 'test.txt'));

css

source test1.14.0

CSS 解析器。

类型定义
typescript
const css: {
    parse(css: string): object;
    stringify(stylesheet: object, options?: { indent?: string }): string;
};

注释会被移除掉。

parse

将 CSS 字符串转换为 js 对象。

参数名说明
cssCSS 字符串
返回值js 对象

stringify

将 js 对象序列化成 CSS 字符串。

参数名说明
stylesheet要序列化的对象
options序列化选项
返回值CSS 字符串

选项:

参数名说明
indent=' '缩进
javascript
const stylesheet = css.parse('.name { background: #000; color: red; }');
// {type: 'stylesheet', rules: [{type: 'rule', selector: '.name', declarations: [...]}]}
css.stringify(stylesheet);

cssPriority

source test1.29.0

计算与比较 CSS 选择器/样式的优先级。

类型定义
typescript
namespace cssPriority {
    function compare(p1: number[], p2: number[]): number;
}
function cssPriority(
    selector: string,
    options?: {
        important?: boolean;
        inlineStyle?: boolean;
        position?: number;
    }
): number[];
参数名说明
selectorCSS 选择器
options样式额外信息
返回值优先级数组

优先级数组包括六个数字值。

  1. important 标识
  2. 内联样式
  3. ID 选择器
  4. 类选择器
  5. 类型选择器
  6. 样式位置

compare

比较优先级。

参数名说明
p1优先级数组
p2优先级数组
返回值比较结果
javascript
cssPriority('a.button > i.icon:before', {
    important: true,
    inlineStyle: false,
    position: 100
}); // -> [1, 0, 0, 2, 3, 100]

cssSupports

source test1.0.0

检查浏览器是否支持某项 CSS 特性。

类型定义
typescript
function cssSupports(name: string, val?: string): boolean;
参数名说明
nameCss 属性名
valCss 属性值
返回值如果支持,返回真
javascript
cssSupports('display', 'flex'); // -> true
cssSupports('display', 'invalid'); // -> false
cssSupports('text-decoration-line', 'underline'); // -> true
cssSupports('grid'); // -> true
cssSupports('invalid'); // -> false

curry

source test1.0.0

函数柯里化。

类型定义
typescript
function curry(fn: types.AnyFn): types.AnyFn;
参数名说明
fn源函数
返回值目标函数
javascript
const add = curry(function(a, b) {
    return a + b;
});
const add1 = add(1);
add1(2); // -> 3

dataUrl

source test1.41.0

解析序列化 Data URL。

类型定义
typescript
const dataUrl: {
    parse(
        dataUrl: string
    ): { data: string; mime: string; charset: string; base64: boolean } | null;
    stringify(
        data: any,
        mime: string,
        options?: { base64?: boolean; charset?: string }
    ): string;
};

parse

解析 Data URL。

参数名说明
dataUrlData URL 字符串
返回值解析后的对象

stringify

将数据转化为 Data URL。

参数名说明
data要转化的数据
mimemime 类型
optionsStringify options
返回值Data url string

选项

选项名说明
base64=true是否是 base64 编码
charset字符集
javascript
dataUrl.parse('data:,Hello%2C%20World%21'); // -> {data: 'Hello, World!', mime: 'text/plain', charset: '', base64: false}
dataUrl.stringify('Hello, World!', 'text/plain'); // -> 'data:,Hello%2C%20World%21'

dateFormat

source test1.0.0

简单日期格式化。

类型定义
typescript
function dateFormat(
    date: Date,
    mask: string,
    utc?: boolean,
    gmt?: boolean
): string;
function dateFormat(
    mask: string,
    utc?: boolean,
    gmt?: boolean
): string;
参数名说明
date=new Date要格式化的日期对象
mask日期掩码
utc=false是否是 UTC
gmt=false是否是 GMT
返回值格式化日期
掩码说明
d月份天数,不补零
dd月份天数,不足两位补零
ddd星期几,简称
dddd星期几,全称
m月份,数字,不补零
mm月份,数字,不足两位补零
mmm月份,简称
mmmm月份,全称
yy年份,只显示后两位数字,不足两位补零
yyyy年份,显示四位数字
h小时,不补零 (12 小时制)
hh小时,不足两位补零(12 小时制)
H小时,不补零(24 小时制)
HH小时,不足两位补零(24 小时制)
M分钟,不补零
MM分钟,不足两位补零
s秒数,不补零
ss秒数,不足两位补零
l L毫秒,l 显示 3 位, L 显示 2 位
t小写显示上午下午,a 或 p
tt小写显示上午下午,am 或 pm
T大写显示上午下午,A 或 P
TT大写显示上午下午,AM 或 PM
Z美国时区缩写,比如 EST 或 MDT
oGMT/UTC 时区时差,比如 -0500 或 +0230
S月份天数序数后缀 (st,nd,rd,或 th)
UTC:是否是 UTC,必须写在最前面
javascript
dateFormat('isoDate'); // -> 2016-11-19
dateFormat('yyyy-mm-dd HH:MM:ss'); // -> 2016-11-19 19:00:04
dateFormat(new Date(), 'yyyy-mm-dd'); // -> 2016-11-19

debounce

source test1.0.0

返回函数的防反跳版本。

类型定义
typescript
function debounce<T extends types.AnyFn>(fn: T, wait: number): T;
参数名说明
fn源函数
wait延迟毫秒数
返回值目标函数
javascript
const calLayout = debounce(function() {}, 300);
// $(window).resize(calLayout);

debug

source test demo1.0.0

简单的 JavaScript 输出 debug 日志函数。

类型定义
typescript
function debug(name: string): any;
参数名说明
name名称
返回值打印格式化日志的函数
javascript
const d = debug('test');
d('doing lots of uninteresting work');
d.enabled = false;

deburr

source test1.6.1

转换拉丁语-1补充字母和拉丁语扩展字母-A为基本拉丁字母,并且去除组合变音标记。

类型定义
typescript
function deburr(str: string): string;
参数名说明
str要处理的字符串
返回值目标字符串
javascript
deburr('déjà vu'); // -> 'deja vu'

decodeUriComponent

source test1.0.0

类似 decodeURIComponent 函数,只是输入不合法时不抛出错误并尽可能地对其进行解码。

类型定义
typescript
function decodeUriComponent(str: string): string;
参数名说明
str要解码的字符串
返回值解码后的字符串
javascript
decodeUriComponent('%%25%'); // -> '%%%'
decodeUriComponent('%E0%A4%A'); // -> '\xE0\xA4%A'

defaults

source test1.0.0

填充对象的默认值。

类型定义
typescript
function defaults(obj: any, ...src: any[]): any;
参数名说明
obj目标对象
...src提供默认值对象
返回值目标对象
javascript
defaults({ name: 'RedHood' }, { name: 'Unknown', age: 24 }); // -> {name: 'RedHood', age: 24}

define

source test1.0.0

定义一个模块,需要跟 use 模块配合使用。

类型定义
typescript
function define(
    name: string,
    requires: string[],
    method: types.AnyFn
): void;
function define(name: string, method: types.AnyFn): void;
参数名说明
name模块名
requires依赖
method模块主体函数

模块主体函数只有被 use 模块使用时才会被执行。

javascript
define('A', function() {
    return 'A';
});
define('B', ['A'], function(A) {
    return 'B' + A;
});

defineProp

source test1.0.0

Object.defineProperty(defineProperties) 的快捷方式。

类型定义
typescript
function defineProp<T>(
    obj: T,
    prop: string,
    descriptor: PropertyDescriptor
): T;
function defineProp<T>(
    obj: T,
    descriptor: PropertyDescriptorMap
): T;
参数名说明
obj要定义的对象
prop属性路径
descriptor属性描述
返回值传入对象
参数名说明
obj要定义的对象
prop属性描述
返回值传入对象
javascript
const obj = { b: { c: 3 }, d: 4, e: 5 };
defineProp(obj, 'a', {
    get: function() {
        return this.e * 2;
    }
});
// obj.a is equal to 10
defineProp(obj, 'b.c', {
    set: function(val) {
        // this is pointed to obj.b
        this.e = val;
    }.bind(obj)
});
obj.b.c = 2;
// obj.a is equal to 4

const obj2 = { a: 1, b: 2, c: 3 };
defineProp(obj2, {
    a: {
        get: function() {
            return this.c;
        }
    },
    b: {
        set: function(val) {
            this.c = val / 2;
        }
    }
});
// obj2.a is equal to 3
obj2.b = 4;
// obj2.a is equal to 2

defined

source test1.16.0

返回第一个不是未定义的参数。

类型定义
typescript
function defined(...args: any[]): any;
参数名说明
...args参数列表
返回值第一个定义了的参数
javascript
defined(false, 2, void 0, 100); // -> false

delRequireCache

source test1.5.4

删除 node.js require 缓存。

类型定义
typescript
function delRequireCache(id: string): void;
参数名说明
id模块名或路径
javascript
const licia = require('licia');
licia.a = 5;
delRequireCache('licia');
require('licia').a; // -> undefined

delay

source test1.0.0

在指定时长后执行函数。

类型定义
typescript
function delay(
    fn: types.AnyFn,
    wait: number,
    ...args: any[]
): void;
参数名说明
fn源函数
wait延迟的毫秒数
...args绑定参数
javascript
delay(
    function(text) {
        console.log(text);
    },
    1000,
    'later'
);
// -> Logs 'later' after one second

delegate

source test1.0.0

事件委托。

类型定义
typescript
const delegate: {
    add(el: Element, type: string, selector: string, cb: types.AnyFn): void;
    remove(el: Element, type: string, selector: string, cb: types.AnyFn): void;
};

add

添加事件委托。

参数名说明
el父元素
type事件类型
selector匹配选择器
cb事件回调

remove

移除事件委托。

javascript
const container = document.getElementById('container');
function clickHandler() {
    // Do something...
}
delegate.add(container, 'click', '.children', clickHandler);
delegate.remove(container, 'click', '.children', clickHandler);

deprecate

source test demo1.5.0

Node.js util.deprecate 方法,支持浏览器。

类型定义
typescript
function deprecate(fn: types.AnyFn, msg: string): types.AnyFn;
参数名说明
fn即将废弃的方法
msg调用警告
返回值废弃方法,调用时会打印警告
javascript
const fn = () => {};
const obsoleteFn = deprecate(fn, 'obsoleteFn is deprecated.');
obsoleteFn();

detectBrowser

source test1.0.0

使用 ua 检测浏览器信息。

类型定义
typescript
function detectBrowser(
    ua?: string
): {
    name: string;
    version: number;
};
参数名说明
ua=navigator.userAgent浏览器用户代理
返回值包含名称和版本的对象

支持浏览器:ie,chrome,edge,firefox,opera,safari,ios(mobile safari),android(android browser)

javascript
const browser = detectBrowser();
if (browser.name === 'ie' && browser.version < 9) {
    // Do something about old IE...
}

detectMocha

source test1.0.0

检测是否有 mocha 测试框架在运行。

类型定义
typescript
function detectMocha(): boolean;
javascript
detectMocha(); // -> True if mocha is running.

detectOs

source test1.0.0

使用 ua 检测操作系统。

类型定义
typescript
function detectOs(ua?: string): string;
参数名说明
ua=navigator.userAgent浏览器用户代理
返回值操作系统名称

支持操作系统: windows, os x, linux, ios, android, windows phone

javascript
if (detectOs() === 'ios') {
    // Do something about ios...
}

difference

source test1.0.0

创建一个数组,该数组的元素不存在于给定的其它数组中。

类型定义
typescript
function difference(arr: any[], ...args: any[]): any[];
参数名说明
arr源数组
...args要排除的元素
返回值目标数组
javascript
difference([3, 2, 1], [4, 2]); // -> [3, 1]

dotCase

source test1.0.0

将字符串转换为点式。

类型定义
typescript
function dotCase(str: string): string;
参数名说明
str源字符串
返回值点式字符串
javascript
dotCase('fooBar'); // -> foo.bar
dotCase('foo bar'); // -> foo.bar

download

source test demo1.0.0

在浏览器端触发文件下载。

类型定义
typescript
function download(
    data: Blob | File | string | any[],
    name: string,
    type?: string
): void;
参数名说明
data下载的数据
name文件名
type=text/plain数据类型
javascript
download('test', 'test.txt');

durationFormat

source test1.18.0

简单时间格式化。

类型定义
typescript
function durationFormat(duration: number, mask?: string): string;
参数名说明
duration要格式化的时间,单位为毫秒
mask='hh:mm:ss'时间掩码
返回值格式化时间
掩码说明
d天数
h小时数
m分钟数
s秒数
l毫秒数
javascript
durationFormat(12345678); // -> '03:25:45'
durationFormat(12345678, 'h:m:s:l'); // -> '3:25:45:678'

each

source test benchmark1.0.0

遍历集合中的所有元素,用每个元素当做参数调用迭代器。

类型定义
typescript
function each<T>(
    list: types.List<T>,
    iterator: types.ListIterator<T, void>,
    ctx?: any
): types.List<T>;
function each<T>(
    object: types.Dictionary<T>,
    iterator: types.ObjectIterator<T, void>,
    ctx?: any
): types.Collection<T>;
参数名说明
obj目标集合
iterator迭代器
ctx函数上下文
javascript
each({ a: 1, b: 2 }, function(val, key) {});

easing

source test1.0.0

缓动函数,参考 http://jqueryui.com/

类型定义
typescript
const easing: {
    linear(percent: number): number;
    inQuad(percent: number): number;
    outQuad(percent: number): number;
    inOutQuad(percent: number): number;
    outInQuad(percent: number): number;
    inCubic(percent: number): number;
    outCubic(percent: number): number;
    inQuart(percent: number): number;
    outQuart(percent: number): number;
    inQuint(percent: number): number;
    outQuint(percent: number): number;
    inExpo(percent: number): number;
    outExpo(percent: number): number;
    inSine(percent: number): number;
    outSine(percent: number): number;
    inCirc(percent: number): number;
    outCirc(percent: number): number;
    inElastic(percent: number, elasticity?: number): number;
    outElastic(percent: number, elasticity?: number): number;
    inBack(percent: number): number;
    outBack(percent: number): number;
    inOutBack(percent: number): number;
    outInBack(percent: number): number;
    inBounce(percent: number): number;
    outBounce(percent: number): number;
};
参数名说明
percent位于 0 到 1 之前的数字
返回值计算结果
javascript
easing.linear(0.5); // -> 0.5
easing.inElastic(0.5, 500); // -> 0.03125

emulateTouch

source test demo1.9.0

在桌面端浏览器模拟 touch 事件。

类型定义
typescript
function emulateTouch(el: Element): void;
参数名说明
el目标元素
javascript
const el = document.querySelector('#test');
emulateTouch(el);
el.addEventListener('touchstart', () => {}, false);

endWith

source test1.0.0

检查字符串是否以指定字符串结尾。

类型定义
typescript
function endWith(str: string, suffix: string): boolean;
参数名说明
str目标字符串
suffix字符串后缀
返回值如果是后缀,返回真
javascript
endWith('ab', 'b'); // -> true

escape

source test1.0.0

转义 HTML 字符串,替换 &,<,>,",`,和 ' 字符。

类型定义
typescript
function escape(str: string): string;
参数名说明
str源字符串
返回值目标字符串
javascript
escape('You & Me'); // -> 'You &amp; Me'

escapeJsStr

source test1.0.0

转义字符串为合法的 JavaScript 字符串字面量。

类型定义
typescript
function escapeJsStr(str: string): string;

http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.4

参数名说明
str源字符串
返回值目标字符串
javascript
escapeJsStr('"\n'); // -> '\\"\\\\n'

escapeRegExp

source test1.0.0

转义特殊字符用于 RegExp 构造函数。

类型定义
typescript
function escapeRegExp(str: string): string;
参数名说明
str源字符串
返回值目标字符串
javascript
escapeRegExp('[licia]'); // -> '\\[licia\\]'

evalCss

source test1.0.0

加载 css 到页面中。

类型定义
typescript
function evalCss(css: string): HTMLStyleElement;
参数名说明
csscss 代码
返回值style 节点
javascript
evalCss('body{background:#08c}');

evalJs

source test benchmark1.0.0

在指定的上下文执行 js 代码。

类型定义
typescript
function evalJs(js: string, ctx?: any): void;
参数名说明
jsJavaScript 代码
ctx=global上下文
javascript
evalJs('5+2'); // -> 7
evalJs('this.a', { a: 2 }); // -> 2

every

source test1.0.0

检查是否集合中的所有元素都能通过真值检测。

类型定义
typescript
function every<T>(
    object: types.List<T>,
    iterator?: types.ListIterator<T, boolean>,
    context?: any
): boolean;
function every<T>(
    object: types.Dictionary<T>,
    iterator?: types.ObjectIterator<T, boolean>,
    context?: any
): boolean;
参数名说明
object目标集合
iterator真值检测函数
context函数上下文
返回值如果都能通过,返回真
javascript
every([2, 4], function(val) {
    return val % 2 === 0;
}); // -> true

extend

source test1.0.0

复制多个对象中的所有属性到目标对象上。

类型定义
typescript
function extend(destination: any, ...sources: any[]): any;
参数名说明
destination目标对象
...sources源对象
返回值目标对象
javascript
extend({ name: 'RedHood' }, { age: 24 }); // -> {name: 'RedHood', age: 24}

extendDeep

source test1.0.0

类似 extend,但会递归进行扩展。

类型定义
typescript
function extendDeep(destination: any, ...sources: any[]): any;
参数名说明
destination目标对象
...sources源对象
返回值目标对象
javascript
extendDeep(
    {
        name: 'RedHood',
        family: {
            mother: 'Jane',
            father: 'Jack'
        }
    },
    {
        family: {
            brother: 'Bruce'
        }
    }
);
// -> {name: 'RedHood', family: {mother: 'Jane', father: 'Jack', brother: 'Bruce'}}

extendOwn

source test1.0.0

类似 extend,但只复制自己的属性,不包括原型链上的属性。

类型定义
typescript
function extendOwn(destination: any, ...sources: any[]): any;
参数名说明
obj目标对象
...sources源对象
返回值目标对象
javascript
extendOwn({ name: 'RedHood' }, { age: 24 }); // -> {name: 'RedHood', age: 24}

extractBlockCmts

source test1.0.0

从源码中提取块注释。

类型定义
typescript
function extractBlockCmts(str: string): string[];
参数名说明
str源码
返回值块注释
javascript
extractBlockCmts('\/*licia*\/'); // -> ['licia']

extractUrls

source test1.0.0

从文本中提取 url。

类型定义
typescript
function extractUrls(str: string): string[];
参数名说明
str文本
返回值url 列表
javascript
const str =
    '[Official site: http://eustia.liriliri.io](http://eustia.liriliri.io)';
extractUrls(str); // -> ['http://eustia.liriliri.io']

fetch

source test1.0.0

将 XMLHttpRequest 转换为 promise 的形式。

类型定义
typescript
namespace fetch {
    interface IResult {
        ok: boolean;
        status: number;
        statusText: string;
        url: string;
        clone(): IResult;
        text(): Promise<string>;
        json(): Promise<any>;
        xml(): Promise<Document | null>;
        blob(): Promise<Blob>;
        headers: {
            keys(): string[];
            entries(): Array<string[]>;
            get(name: string): string;
            has(name: string): boolean;
        };
    }
}
function fetch(
    url: string,
    options?: {
        method?: string;
        timeout?: number;
        headers?: types.PlainObj<string>;
        body?: any;
    }
): Promise<fetch.IResult>;

注意:这并不是 fetch 的 pollyfill。

参数名说明
url请求地址
options请求选项
返回值请求 promise
javascript
fetch('test.json', {
    method: 'GET',
    timeout: 3000,
    headers: {},
    body: ''
})
    .then(function(res) {
        return res.json();
    })
    .then(function(data) {
        console.log(data);
    });

fibonacci

source test1.0.0

计算斐波那契数列中某位数字。

类型定义
typescript
function fibonacci(n: number): number;
参数名说明
n序号 n
返回值斐波那契数列 n 位的数字
javascript
fibonacci(1); // -> 1
fibonacci(3); // -> 2

fileSize

source test1.0.0

将字节数转换为易于阅读的形式。

类型定义
typescript
function fileSize(bytes: number): string;
参数名说明
bytes文件字节大小
返回值易于阅读的文件大小
javascript
fileSize(5); // -> '5'
fileSize(1500); // -> '1.46K'
fileSize(1500000); // -> '1.43M'
fileSize(1500000000); // -> '1.4G'
fileSize(1500000000000); // -> '1.36T'

fileType

source test1.5.1

使用幻数检测文件类型。

类型定义
typescript
function fileType(
    input: Buffer | ArrayBuffer | Uint8Array
):
    | {
          ext: string;
          mime: string;
      }
    | undefined;
参数名说明
input文件输入
返回值包括扩展名和 mime 类型的对象

支持的文件类型

jpg, png, gif, webp, bmp, gz, zip, rar, pdf, exe

javascript
const fs = require('fs');
const file = fs.readFileSync('path/to/file');
console.log(fileType(file)); // -> { ext: 'jpg', mime: 'image/jpeg' }

fileUrl

source test1.36.0

将文件路径转换为文件协议 URL。

类型定义
typescript
function fileUrl(path: string): string;
参数名说明
path文件路径
返回值文件协议 URL
javascript
fileUrl('c:\\foo\\bar'); // -> 'file:///c:/foo/bar'

fill

source test1.0.0

在数组指定位置填充指定值。

类型定义
typescript
function fill(
    list: any[],
    val: any,
    start?: number,
    end?: number
): any[];
参数名说明
list源数组
val填充数组的值
start=0起始位置
end=arr.length结束位置,不包括
返回值目标数组
javascript
fill([1, 2, 3], '*'); // -> ['*', '*', '*']
fill([1, 2, 3], '*', 1, 2); // -> [1, '*', 3]

filter

source test1.0.0

遍历集合中的每个元素,返回所有通过真值检测的元素组成的数组。

类型定义
typescript
function filter<T>(
    list: types.List<T>,
    iterator: types.ListIterator<T, boolean>,
    context?: any
): T[];
function filter<T>(
    object: types.Dictionary<T>,
    iterator: types.ObjectIterator<T, boolean>,
    context?: any
): T[];
参数名说明
obj要遍历的集合
predicate真值检测函数
ctx函数上下文
返回值包含所有通过真值检测元素的数组
javascript
filter([1, 2, 3, 4, 5], function(val) {
    return val % 2 === 0