by ilex.h
docs: docs
npm install --save amos-tool
- amos ui
- amos tool
name | link | description |
---|---|---|
Base64 | Base64 | base64加密解密 |
MD5 | MD5 | md5加密解密 |
DES | DES | des加密解密 |
Browser | Browser | 获取浏览器类型 |
deepCopy | deepCopy | 深度复制 |
deepEqual | deepEqual | 深度比较(stringify方式) |
fastDeepEqual | fastDeepEqual | 深度比较(循环) |
parseText | parseText | 替换或者补全url |
List | List | List集合 |
Queue | Queue | 队列 |
UUID | UUID | uuid |
browserSupport | browserSupport | 浏览器支持 |
Log | Log | 定制化的log日志 |
Store | Store | 数据处理,主要是localStorage、session、cookie |
LocationParam | LocationParam | location 工具 |
array2tree | array2tree | 将array转化为tree数据 |
tableFilter | tableFilter | 表格数据过滤 |
pwdPolicy | pwdPolicy | 密码生成器 |
omit | omit | omit操作,删除object中的键 |
pick | pick | pick操作,获取object指定key组成的新对象 |
utils | utils | 常用工具 |
xss | utils | xss 工具及 |
strUtils | strUtils | string常用工具 |
other | other | 其它工具集 |
import { Base64 } from 'amos-tool';
// or import Base64 from 'amos-tool/lib/encrypt/_base64';
var b64 = new Base64();
b64.encode(input);
b64.decode(input);
import { MD5 } from 'amos-tool';
// or import MD5 from 'amos-tool/lib/encrypt/_md5';
var result = MD5('value'); // 2063c1608d6e0baf80249c42e2be5804
var result = MD5('value', 'key'); // 01433efd5f16327ea4b31144572c67f6
var result = MD5('value', null, true); // 'c\xc1`\x8dn\x0b\xaf\x80$\x9cB\xe2\xbeX\x04'
var result = MD5('value', 'key', true); // '\x01C>\xfd_\x162~\xa4\xb3\x11DW,g\xf6'
注意,加密解密时,第一个
秘钥
不能为空
DES.DesCore.encode(data, firstKey, secondKey, thirdKey)
DES.DesCore.decode(data, firstKey, secondKey, thirdKey)
DES.encode(data, secretKey);
DES.decode(data, secretKey);
- example
import { DES } from 'amos-tool';
// or import DES from 'amos-tool/lib/encrypt/des';
const desCore = DES.DesCore;
desCore.encode('123456', 'a'); // 484FD6D18A5501370873DB5F557A23F9
desCore.encode('123456', 'a', 'b'); // 953AFFF48E49E4B94D8B74AABB6905E5
desCore.encode('123456', 'a', 'b', 'c'); // 7C49B05CCBCBEECC5665732A177E624B
desCore.decode('484FD6D18A5501370873DB5F557A23F9', 'a'); // 123456
desCore.decode('953AFFF48E49E4B94D8B74AABB6905E5', 'a', 'b'); // 123456
desCore.decode('7C49B05CCBCBEECC5665732A177E624B', 'a', 'b', 'c'); // 123456
DES.encode('123456', 'a'); // 484FD6D18A5501370873DB5F557A23F9
DES.encode('123456', 'a,b'); // 953AFFF48E49E4B94D8B74AABB6905E5
DES.encode('123456', 'a,b,c'); // 7C49B05CCBCBEECC5665732A177E624B
DES.decode('484FD6D18A5501370873DB5F557A23F9', 'a'); // 123456
DES.decode('953AFFF48E49E4B94D8B74AABB6905E5', 'a,b'); // 123456
DES.decode('7C49B05CCBCBEECC5665732A177E624B', 'a,b,c'); // 123456
注意:
secretKey 'a,b,c' 与 a, b,c
不同,识别空格。 支持3个秘钥,采用 ,
分割
同时,DES.DesCore
第一个 key 值不可以为 空('', undefined, null)
Browser.isFirefox();
Browser.isIE();
Browser.isEdge();
Browser.isChrome();
Browser.isSafari();
import { deepCopy } from 'amos-tool';
deepCopy(source);
import deepCopy, { eq } from 'amos-tool/lib/_deepCopy';
eq(value, other)
deepEqual(valA, valB);
fastDeepEqual(valA, valB);
/**
* 解析数据
* @param {string} text
* @param {object} dataObj
* @param {string|RegExp} regexps 可选
* @doc parseText('a/{b}/{c}/d',{a: 1, b:2}) 返回: 'a/1/2/d'
* @doc parseText('a/b?name={name}&pwd={pwd}',{name: 'ilex', pwd:122}) 返回: 'a/b?name=ilex&pwd=123'
*/
parseText(text, dataObj, regexps);
List props:
ArrayList: var arrlist = new List.ArrayList();
parse2string: List.parse2string(obj)
parse2object: List.parse2object(str)
simpleEqual: List.simpleEqual(objA, objB)
isObject: List.isObject(obj)
// ArrayList
var arrlist = new List.ArrayList();
arrlist.size(); // get size of list
arrlist.values();// all values
arrlist.isEmpty();// check empty
arrlist.iterator(callBack);// iterator
arrlist.get(index);// 取得指定下标的值
arrlist.add(value); // add item
arrlist.addAll(value);// add all item, value is a arrayList
arrlist.set(index, value);// 设置值
arrlist.remove(value);// remove item
arrlist.removeAt(index); // //remove item by index
arrlist.indexOf(value); // get item index from list
arrlist.clear(); // clear list
arrlist.insert(index, value); // insert item in index place
arrlist.updateValue(key, value); // use value[key] check equal
var q = new Queue;
q.push(obj) // 入队
q.pop();// 出队
q.head();// 返回队列中头部(即最新添加的)的动态对象
q.tail();// 返回队列中尾部(即最早添加的)的动态对象
q.length();// 返回数据队列长度
q.empty(); // 队列是否为空
q.clear(); // 清空
uuid(len, radix); // radix must be <= 62 , uuid(8, 2)
uuidFast();
uuidCompact();
timeUUID(prefix = 'amos-timeuuid');
longTimeUUID(prefix = 'longtime');
otherUUID(tpl = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'); // 同 uuidCompact,无 '-'
- apis
simpleuse:
defaultConfig: ['firefox/51.0', 'chrome/56']
browserSupport();
browserSupport('firefox/51.0');
browserSupport(['firefox/51.0', 'chrome/56']);
withMatchs:
muitlConfig: ['firefox/', 'chrome/'];
browserSupport(null, {
'firefox/': {limit: consts.GREATER_EQUAL, version: 51},
'chrome/': {limit: consts.GREATER_EQUAL, version: 56}
});
browserSupport('firefox/', {limit: consts.GREATER_EQUAL, version: 51});
browserSupport(['firefox/', 'chrome/'], {
'firefox/': {limit: consts.GREATER_EQUAL, version: 51},
'chrome/': {limit: consts.GREATER_EQUAL, version: 56}
});
consts:
GREATER: 1, // 大于
EQUAL: 2, // 等于
LESS: 3, // 小于
GREATER_EQUAL: 4, // 大于等于
LESS_EQUAL: 5 // 小于等于
- demo
// 基本使用
const result = browserSupport();
const paramsList = ['firefox/', 'chrome/', 'ie'];
const limit = {
'firefox/': { limit: consts.GREATER_EQUAL, version: 50 },
'chrome/': { limit: consts.GREATER_EQUAL, version: 55 },
'ie': { limit: consts.GREATER_EQUAL, version: 6 }
};
// 自定义使用 (注意适配ie时 写法)
const result2 = browserSupport(paramsList, limit);
window.LogConfig
window.LogConfig.isDebug
Log.trace()
Log.debug()
Log.info()
Log.warn()
Log.error()
Log.fatal()
// 展示 pkg 信息,不受 LogConfig 配置影响
Log.pkgInfo(name, version)
`default function list`
// 所有的cookie数据,均采用 escape/unescape 进行转码、解码
encrypt(str) // 加密
decrypt(str) // 解密
setCookieByDays(name, value, days)
getAllCookies() // 获取所有的cookie,同时每个key对应的value,均执行了 JSON.parse(value)
setCookieByHour(name, value, hour)
getCookieByName(name)
removeCookieByName(name)
clearAllCookie()
`localStorage`
const ls = Store.lsTool;
ls.read(key)
ls.write(key, data)
ls.each(fn)
ls.remove(key)
ls.clearAll()
`sessionStorage`
const session = Store.session;
session.read(key)
session.write(key, data)
session.each(fn)
session.remove(key)
session.clearAll()
parse(paramString):
`if paramString is undefined, paramString=window.location.search`
`return all params Key Pair object`
paramSearch(name, target):
`if target is undefined, default window.location.search`
`and if name is undefined too `
`return keyValueObjec; else if name not empty return value;`
getLocationParams():
`get all locationParams, and return a key-value object`
getLocationParamByName(name):
`get param value by name, and return value or null`
getParameter(url, name):
`get target url Parameter by name, and return value or '' `
extractParam(url, name): `解析指定 url 中的参数,返回指定 name 的参数`
extractParams(url): `解析指定 url 中的参数,参数对象,如果 url 为undefined,则默认采用 window.location.href`
`LocationSearch` LocationParam.LocationSearch
`other search tool`
private: _keyValuePairs
public:
init():
`init this tool,set private property _keyValuePairs and return a LocationSearch`
getValue(key):
`return target value`
getParameters():
`return all param value`
import { array2tree } from 'amos-tool';
const data = [{
value: 'a',
children: [{
value: 'b',
children: [{
value: 'c'
}, {
value: 'd',
}]
}],
}];
const values = ['a', 'b', 'c'];
const result = array2tree(
data, (item, level) => item.value === values[level]
);
console.log(result);
// [
// { value: 'a', children: [...] },
// { value: 'b', children: [...] },
// { value: 'c', children: [...] }
// ]
getChildrenlength(children)
flatToHierarchy(arr)
filterParentPosition(arr)
isInclude(smallArray, bigArray)
/**
* 过滤数据
*
* @param {Array} vals 数据集合
* @param {any} treeData tree数据
* @returns
*/
filterAllCheckedData(vals, treeData)
/**
* 递归
*
* @param {any} children
* @param {any} cb
*/
recursive(children, cb)
/**
* 普通密码生成策略
* @param {string} password
* @return {object} { password, secretKey }
*/
normalPolicy(password)
/**
* 普通密码生成策略
* @param {string} password 密码
* @param {string} secretKey 秘钥
* @return {object} { password, secretKey }
*/
advancePolicy(password, secretKey)
/**
* 采用MD5生成密码 (不可逆)
* @param {string} password
* @param {string} secretKey
*/
useMd5Policy(password, secretKey)
const ilex = {name: 'ilex', age: 18};
const copy = omit(ilex, ['']); // {name: 'ilex', age: 18};
const copy = omit(ilex, ['age']); // {name: 'ilex'}
const copy = omit(ilex, ['name', 'age']); // {}
const ilex = {name: 'ilex', age: 18};
const copy = pick(ilex, ['']); // {};
const copy = pick(ilex, ['age']); // {age: 18}
const copy = pick(ilex, ['name', 'age']); // {name: 'ilex', age: 18}
isString(obj);
// Is a given value an array?
// Delegates to ECMA5's native Array.isArray
`If you want to judge object and judge array, you need to judge array first`
isArray(obj);
// Is a given variable an object?
isObject(obj);
// Is a given array, string, or object empty?
// An "empty" object has no enumerable own-properties.
isEmpty(objOrArray);
// Is a given value equal to null?
isNull(obj);
// Is a given variable undefined?
isUndefined(obj);
// Is json
isJson(obj);
// is image src,支持的格式(jpe?g|png|gif|bmp|ico|tga) 及其 base64 格式
isImageSrc(url);
/**
* 将数字部分内容转化为 *
* @param {Number} number 目标 Number
* @param {Number} start 起始位置
* @param {Number} len 转换位数
* @param {String} sign 替换的字符
*/
encodeNumber(number, start = 3, len = 4, sign = '*');
/**
* some
* some 为数组中的每一个元素执行一次 callback 函数,直到找到一个使得 callback 返回一个“真值”
* @param {Array} arr
* @param {function} fun
*/
some(arr, fun /*, thisArg */ );
//
every(arr, callbackfn, thisArg);
//
reduce(arr, callback /*, initialValue*/);
mergeAll(targetAndSources, overwrite);
merge(target, source, overwrite);
clone(source);
import htmlEncode from 'amos-tool/lib/xss/htmlEncode';
import implementEncode from 'amos-tool/lib/xss/implementEncode';
htmlEncode('<'); // <
htmlEncode('>'); // >
htmlEncode('\''); // '
htmlEncode('\"'); // "
...
implementEncode('<script language=text/javascript>alert(document.cookie);</script>');
implementEncode('</script>');
implementEncode(' eval(abc);');
implementEncode('<img src="" onerror="alert(document.cookie);"></img>');
...
toCapitalStr(obj);
// 驼峰化, 仅支持首字母大写、或者采用中杠连接的两个字母首字母大写
// 如果要支持其它输入,将正则改为: /(-|(\s+)|_)(\w)/g
camelCase(obj);
// 将中缸连接的字符串 驼峰化
transCamel(obj);
// 字符串首字母大写
capFirst(objOrArray);
// 获取字符串的hashCode码
hashCode(obj);
// 进制与单位处理
dealScaleAndUnit(obj);
-
cookie:
-
isNode isNode();
-
objectAssign:
objectAssign(target, source);
-
parseJson:
parseJson(data)
-
stringify:
stringify(json)
-
supportWs:
supportWs()
-
trim:
trim(str)
-
arrayFilter:
-
merged:
merged(args): combine object property
-
objectPath
@see doc/objectPath.md
-
random
random(len) random.randomInt(min, max)
- pathToTree
import pathToTree from 'amos-tool/lib/extra/pathToTree';
const arr = [
'main/lib',
'console/tt/design1',
'console/mm/vizlib'
];
const mapper = {
main: 'RootView',
console: 'ConsoleView'
};
var result1 = pathToTree(arr, {
pathKey: 'path',
childrenKey: 'childRoutes',
processor(item, wantedNode){
if (mapper[wantedNode]){
item.component = mapper[wantedNode];
}
}
});
- canvas2img
saveAsImage(canvas/canvasElement/, width, height, type) saveAsPNG(canvas, width, height) saveAsGIF(canvas, width, height) saveAsBMP(canvas, width, height) convert2Image(canvas, width, height, type) convert2data(canvas, type, width, height) convert2Blob
/**
* @param {Canvas} canvas
* @param {function} fn (blob) => {}
* @param {Object} options {
* type: '', // 图片类型 默认 'image/png',其它类型详见MIME手册
* width: number, // 宽
* height: number, // 高
* encoderOptions: 0-1 // 图片质量
* }
*/
convert2Blob(canvas, fn, options)
convert2PNG(canvas, width, height) convert2JPEG(canvas, width, height) convert2GIF(canvas, width, height) convert2BMP(canvas, width, height)
-
v1.6.13
*
fix color Log -
v1.6.3
*
fix Log -
v1.6.1
*
fix saver -
v1.4.1
*
addpathToRoutes
-
v1.4.0
*
addpathToTree
to calc react router path -
v1.3.21
*
modify colorUtil -
v1.3.19
*
modify colorUtil*
modifyutils#getFileExtension
*
modifyindex.d.ts
-
v1.3.14
*
modify cookie encode method+
browser/indexDB -
v1.3.13
+
htmlEncode+
implementEncode