amos-tool 1.4.4 → 1.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/.prettierignore +2 -2
  2. package/.prettierrc +50 -50
  3. package/README.md +667 -653
  4. package/apis/objectPath.md +129 -129
  5. package/index.d.ts +50 -5
  6. package/index.js +3 -3
  7. package/lib/_browser.js +10 -8
  8. package/lib/_clone.js +67 -62
  9. package/lib/_cookie.js +35 -32
  10. package/lib/_deepCopy.js +17 -29
  11. package/lib/_deepEqual.js +6 -13
  12. package/lib/_fastDeepEqual.js +28 -44
  13. package/lib/_flashSupport.js +13 -10
  14. package/lib/_forOwn.js +8 -7
  15. package/lib/_funcThrottle.js +16 -15
  16. package/lib/_isnode.js +2 -1
  17. package/lib/_list.js +55 -67
  18. package/lib/_object.assign.js +14 -24
  19. package/lib/_object.entries.js +6 -5
  20. package/lib/_object.values.js +5 -4
  21. package/lib/_omit.js +12 -12
  22. package/lib/_parseJson.js +7 -6
  23. package/lib/_pick.js +14 -0
  24. package/lib/_queue.js +24 -21
  25. package/lib/_shallowCopy.js +24 -23
  26. package/lib/_stringify.js +14 -17
  27. package/lib/_supportWs.js +5 -5
  28. package/lib/_trim.js +5 -4
  29. package/lib/_typeOfList.js +22 -21
  30. package/lib/_uuids.js +30 -35
  31. package/lib/amostool.js +15 -63
  32. package/lib/array2tree.js +9 -10
  33. package/lib/arrayFilter.js +17 -20
  34. package/lib/arrayUtils.js +13 -11
  35. package/lib/browser/Cookie.js +34 -35
  36. package/lib/browser/indexDB.js +71 -82
  37. package/lib/browserSupport.js +76 -71
  38. package/lib/completeUnit.js +7 -4
  39. package/lib/consts.js +2 -1
  40. package/lib/dom/canvas2img.js +61 -73
  41. package/lib/dom/canvasTools.js +9 -14
  42. package/lib/dom/downloadFile.js +15 -12
  43. package/lib/dom/eventHelper.js +8 -6
  44. package/lib/dom/fileBlob.js +14 -14
  45. package/lib/dom/fileSaveAs.js +54 -61
  46. package/lib/dom/getFontSize.js +7 -10
  47. package/lib/dom/minfyImg.js +30 -25
  48. package/lib/encrypt/_base64.js +32 -25
  49. package/lib/encrypt/_md5.js +68 -31
  50. package/lib/encrypt/des.js +426 -363
  51. package/lib/extra/_common.js +119 -166
  52. package/lib/extra/filterNull.js +3 -2
  53. package/lib/extra/find.js +10 -11
  54. package/lib/extra/index.js +4 -3
  55. package/lib/extra/memo.js +18 -0
  56. package/lib/extra/pathToTree.js +48 -42
  57. package/lib/extra/pwdStrength.js +4 -2
  58. package/lib/extra/sortBy.js +28 -30
  59. package/lib/flat.js +15 -0
  60. package/lib/locationParams.js +94 -99
  61. package/lib/log.js +20 -26
  62. package/lib/math/_keyColor.js +154 -0
  63. package/lib/math/addition.js +9 -7
  64. package/lib/math/amountCase.js +8 -12
  65. package/lib/math/coinFormat.js +7 -5
  66. package/lib/math/colorUtil.js +96 -92
  67. package/lib/math/dateTime.js +76 -94
  68. package/lib/math/operations.js +33 -37
  69. package/lib/math/pwdStrength.js +4 -2
  70. package/lib/math/randomColor.js +17 -5
  71. package/lib/math/subtraction.js +10 -9
  72. package/lib/merged.js +9 -9
  73. package/lib/objectPath.js +88 -95
  74. package/lib/parseText.js +8 -7
  75. package/lib/png/Identicon.js +36 -38
  76. package/lib/png/pnglib.js +58 -32
  77. package/lib/png/randomPic.js +9 -12
  78. package/lib/positionFactory.js +25 -80
  79. package/lib/pwdPolicy.js +27 -31
  80. package/lib/qs/_assign.js +7 -5
  81. package/lib/qs/_merge.js +19 -28
  82. package/lib/qs/_tools.js +3 -2
  83. package/lib/qs/formats.js +6 -5
  84. package/lib/qs/index.js +4 -4
  85. package/lib/qs/parse.js +55 -50
  86. package/lib/qs/stringify.js +55 -77
  87. package/lib/qs/utils.js +69 -88
  88. package/lib/random.js +5 -4
  89. package/lib/shallowEqual.js +24 -34
  90. package/lib/store.js +93 -98
  91. package/lib/strUtils.js +51 -42
  92. package/lib/tableFilter.js +178 -169
  93. package/lib/throttleDebounce.js +18 -22
  94. package/lib/url/encodeUrl.js +5 -4
  95. package/lib/url/restfulUrl.js +8 -7
  96. package/lib/utils.js +169 -223
  97. package/lib/xss/htmlEncode.js +3 -2
  98. package/lib/xss/implementEncode.js +36 -37
  99. package/lib/xss/index.js +4 -3
  100. package/package.json +9 -8
@@ -1,129 +1,129 @@
1
- # objectPath
2
-
3
- ## Usage
4
-
5
- ```js
6
- var {objectPath} from 'amos-tool';
7
-
8
- var obj = {
9
- a: {
10
- b: "d",
11
- c: ["e", "f"],
12
- '\u1200': 'unicode key',
13
- 'dot.dot': 'key'
14
- }
15
- };
16
-
17
- var objectPath = require("object-path");
18
-
19
- //get deep property
20
- objectPath.get(obj, "a.b"); //returns "d"
21
- objectPath.get(obj, ["a", "dot.dot"]); //returns "key"
22
- objectPath.get(obj, 'a.\u1200'); //returns "unicode key"
23
-
24
- //get the first non-undefined value
25
- objectPath.coalesce(obj, ['a.z', 'a.d', ['a','b']], 'default');
26
-
27
- //empty a given path (but do not delete it) depending on their type,so it retains reference to objects and arrays.
28
- //functions that are not inherited from prototype are set to null.
29
- //object instances are considered objects and just own property names are deleted
30
- objectPath.empty(obj, 'a.b'); // obj.a.b is now ''
31
- objectPath.empty(obj, 'a.c'); // obj.a.c is now []
32
- objectPath.empty(obj, 'a'); // obj.a is now {}
33
-
34
- //works also with arrays
35
- objectPath.get(obj, "a.c.1"); //returns "f"
36
- objectPath.get(obj, ["a","c","1"]); //returns "f"
37
-
38
- //can return a default value with get
39
- objectPath.get(obj, ["a.c.b"], "DEFAULT"); //returns "DEFAULT", since a.c.b path doesn't exists, if omitted, returns undefined
40
-
41
- //set
42
- objectPath.set(obj, "a.h", "m"); // or objectPath.set(obj, ["a","h"], "m");
43
- objectPath.get(obj, "a.h"); //returns "m"
44
-
45
- //set will create intermediate object/arrays
46
- objectPath.set(obj, "a.j.0.f", "m");
47
-
48
- //will insert values in array
49
- objectPath.insert(obj, "a.c", "m", 1); // obj.a.c = ["e", "m", "f"]
50
-
51
- //push into arrays (and create intermediate objects/arrays)
52
- objectPath.push(obj, "a.k", "o");
53
-
54
- //ensure a path exists (if it doesn't, set the default value you provide)
55
- objectPath.ensureExists(obj, "a.k.1", "DEFAULT");
56
- var oldVal = objectPath.ensureExists(obj, "a.b", "DEFAULT"); // oldval === "d"
57
-
58
- //deletes a path
59
- objectPath.del(obj, "a.b"); // obj.a.b is now undefined
60
- objectPath.del(obj, ["a","c",0]); // obj.a.c is now ['f']
61
-
62
- //tests path existence
63
- objectPath.has(obj, "a.b"); // true
64
- objectPath.has(obj, ["a","d"]); // false
65
-
66
- //bind object
67
- var model = objectPath({
68
- a: {
69
- b: "d",
70
- c: ["e", "f"]
71
- }
72
- });
73
-
74
- //now any method from above is supported directly w/o passing an object
75
- model.get("a.b"); //returns "d"
76
- model.get(["a.c.b"], "DEFAULT"); //returns "DEFAULT"
77
- model.del("a.b"); // obj.a.b is now undefined
78
- model.has("a.b"); // false
79
-
80
- ```
81
-
82
- ### How `object-path` deals with inherited properties
83
-
84
- By default `object-path` will only access an object's own properties. Look at the following example:
85
-
86
- ```js
87
- var proto = {
88
- notOwn: {prop: 'a'}
89
- }
90
- var obj = Object.create(proto);
91
-
92
- //This will return undefined (or the default value you specified), because notOwn is
93
- //an inherited property
94
- objectPath.get(obj, 'notOwn.prop');
95
-
96
- //This will set the property on the obj instance and not the prototype.
97
- //In other words proto.notOwn.prop === 'a' and obj.notOwn.prop === 'b'
98
- objectPath.set(obj, 'notOwn.prop', 'b');
99
- ```
100
-
101
- To configure `object-path` to also deal with inherited properties, you need to create a new instance and specify
102
- the `includeInheritedProps = true` in the options object:
103
-
104
- ```js
105
- var objectPath = require("object-path");
106
- var objectPathWithInheritedProps = objectPath.create({includeInheritedProps: true})
107
- ```
108
-
109
- Alternatively, `object-path` exposes an instance already configured to handle inherited properties (`objectPath.withInheritedProps`):
110
-
111
- ```js
112
- var objectPath = require("object-path");
113
- var objectPathWithInheritedProps = objectPath.withInheritedProps
114
- ```
115
-
116
- Once you have the new instance, you can access inherited properties as you access other properties:
117
-
118
- ```js
119
- var proto = {
120
- notOwn: {prop: 'a'}
121
- }
122
- var obj = Object.create(proto);
123
-
124
- //This will return 'a'
125
- objectPath.withInheritedProps.get(obj, 'notOwn.prop');
126
-
127
- //This will set proto.notOwn.prop to 'b'
128
- objectPath.set(obj, 'notOwn.prop', 'b');
129
- ```
1
+ # objectPath
2
+
3
+ ## Usage
4
+
5
+ ```js
6
+ var {objectPath} from 'amos-tool';
7
+
8
+ var obj = {
9
+ a: {
10
+ b: "d",
11
+ c: ["e", "f"],
12
+ '\u1200': 'unicode key',
13
+ 'dot.dot': 'key'
14
+ }
15
+ };
16
+
17
+ var objectPath = require("object-path");
18
+
19
+ //get deep property
20
+ objectPath.get(obj, "a.b"); //returns "d"
21
+ objectPath.get(obj, ["a", "dot.dot"]); //returns "key"
22
+ objectPath.get(obj, 'a.\u1200'); //returns "unicode key"
23
+
24
+ //get the first non-undefined value
25
+ objectPath.coalesce(obj, ['a.z', 'a.d', ['a','b']], 'default');
26
+
27
+ //empty a given path (but do not delete it) depending on their type,so it retains reference to objects and arrays.
28
+ //functions that are not inherited from prototype are set to null.
29
+ //object instances are considered objects and just own property names are deleted
30
+ objectPath.empty(obj, 'a.b'); // obj.a.b is now ''
31
+ objectPath.empty(obj, 'a.c'); // obj.a.c is now []
32
+ objectPath.empty(obj, 'a'); // obj.a is now {}
33
+
34
+ //works also with arrays
35
+ objectPath.get(obj, "a.c.1"); //returns "f"
36
+ objectPath.get(obj, ["a","c","1"]); //returns "f"
37
+
38
+ //can return a default value with get
39
+ objectPath.get(obj, ["a.c.b"], "DEFAULT"); //returns "DEFAULT", since a.c.b path doesn't exists, if omitted, returns undefined
40
+
41
+ //set
42
+ objectPath.set(obj, "a.h", "m"); // or objectPath.set(obj, ["a","h"], "m");
43
+ objectPath.get(obj, "a.h"); //returns "m"
44
+
45
+ //set will create intermediate object/arrays
46
+ objectPath.set(obj, "a.j.0.f", "m");
47
+
48
+ //will insert values in array
49
+ objectPath.insert(obj, "a.c", "m", 1); // obj.a.c = ["e", "m", "f"]
50
+
51
+ //push into arrays (and create intermediate objects/arrays)
52
+ objectPath.push(obj, "a.k", "o");
53
+
54
+ //ensure a path exists (if it doesn't, set the default value you provide)
55
+ objectPath.ensureExists(obj, "a.k.1", "DEFAULT");
56
+ var oldVal = objectPath.ensureExists(obj, "a.b", "DEFAULT"); // oldval === "d"
57
+
58
+ //deletes a path
59
+ objectPath.del(obj, "a.b"); // obj.a.b is now undefined
60
+ objectPath.del(obj, ["a","c",0]); // obj.a.c is now ['f']
61
+
62
+ //tests path existence
63
+ objectPath.has(obj, "a.b"); // true
64
+ objectPath.has(obj, ["a","d"]); // false
65
+
66
+ //bind object
67
+ var model = objectPath({
68
+ a: {
69
+ b: "d",
70
+ c: ["e", "f"]
71
+ }
72
+ });
73
+
74
+ //now any method from above is supported directly w/o passing an object
75
+ model.get("a.b"); //returns "d"
76
+ model.get(["a.c.b"], "DEFAULT"); //returns "DEFAULT"
77
+ model.del("a.b"); // obj.a.b is now undefined
78
+ model.has("a.b"); // false
79
+
80
+ ```
81
+
82
+ ### How `object-path` deals with inherited properties
83
+
84
+ By default `object-path` will only access an object's own properties. Look at the following example:
85
+
86
+ ```js
87
+ var proto = {
88
+ notOwn: {prop: 'a'}
89
+ }
90
+ var obj = Object.create(proto);
91
+
92
+ //This will return undefined (or the default value you specified), because notOwn is
93
+ //an inherited property
94
+ objectPath.get(obj, 'notOwn.prop');
95
+
96
+ //This will set the property on the obj instance and not the prototype.
97
+ //In other words proto.notOwn.prop === 'a' and obj.notOwn.prop === 'b'
98
+ objectPath.set(obj, 'notOwn.prop', 'b');
99
+ ```
100
+
101
+ To configure `object-path` to also deal with inherited properties, you need to create a new instance and specify
102
+ the `includeInheritedProps = true` in the options object:
103
+
104
+ ```js
105
+ var objectPath = require("object-path");
106
+ var objectPathWithInheritedProps = objectPath.create({includeInheritedProps: true})
107
+ ```
108
+
109
+ Alternatively, `object-path` exposes an instance already configured to handle inherited properties (`objectPath.withInheritedProps`):
110
+
111
+ ```js
112
+ var objectPath = require("object-path");
113
+ var objectPathWithInheritedProps = objectPath.withInheritedProps
114
+ ```
115
+
116
+ Once you have the new instance, you can access inherited properties as you access other properties:
117
+
118
+ ```js
119
+ var proto = {
120
+ notOwn: {prop: 'a'}
121
+ }
122
+ var obj = Object.create(proto);
123
+
124
+ //This will return 'a'
125
+ objectPath.withInheritedProps.get(obj, 'notOwn.prop');
126
+
127
+ //This will set proto.notOwn.prop to 'b'
128
+ objectPath.set(obj, 'notOwn.prop', 'b');
129
+ ```
package/index.d.ts CHANGED
@@ -169,11 +169,14 @@ declare namespace LocationParam {
169
169
  export function parse(paramString: string): object;
170
170
  export function paramSearch(_name: string, target: string): void;
171
171
  /**
172
- * 获取 location 中的所有参数
172
+ * - 获取 location 中的所有参数
173
+ * - 对 location.href 进行查找,支持 hash 方式的路由
173
174
  */
174
175
  export function getLocationParams(): object;
175
176
  /**
176
- * 获取 location 中的参数
177
+ * - 获取 location 中的参数。
178
+ * - 采用 location.search 进行查找,因此,如果采用 react-router hash 方式,将无法获取到参数
179
+ * - why not support hash router? because in hash router location.search=''
177
180
  * @param name
178
181
  */
179
182
  export function getLocationParamByName(name: string): string | null;
@@ -384,12 +387,14 @@ declare namespace colorUtil {
384
387
  */
385
388
  export function toStringHexColor(stringRgb: string): string;
386
389
  /**
387
- * 转化为hex颜色 (仅支持 RGB),如果是 rgba 时,则舍去 a
390
+ * - 转化为hex颜色 (仅支持 RGB),如果是 rgba 时,则舍去 a
391
+ * - 如果传入的是 key color 则直接转化为与之对应的 hex 值
388
392
  * @param {string} stringRgb
389
393
  * @example
390
394
  * toHexColor('rgba(241,112,19)'); // #f17013
391
395
  * toHexColor('rgba(241,112,19, 1)'); // #f17013
392
396
  * toHexColor('rgba(241,112,19, 0.1)'); // #f17013
397
+ * toHexColor('red'); // #ff0000
393
398
  */
394
399
  export function toHexColor(stringRgb: string): string;
395
400
  /**
@@ -407,6 +412,15 @@ declare namespace colorUtil {
407
412
  */
408
413
  export function transformColor(hexColor: string): string;
409
414
  export function isHexColor(color: string): boolean;
415
+ /**
416
+ * 判断是否是内置 英文 color
417
+ * @param color
418
+ * @example
419
+ * isKeyColor('red'); // true
420
+ * isKeyColor('yellow'); // true
421
+ * isKeyColor('asdfasdfa'); // false
422
+ */
423
+ export function isKeyColor(color: string): boolean;
410
424
  export function isRgbColor(color: string): boolean;
411
425
  /**
412
426
  * 将rgb颜色转化成object
@@ -425,6 +439,12 @@ declare namespace colorUtil {
425
439
  * objRGB2str({ r:1, g:1, b:1 }); // 'rgba(1,1,1)'
426
440
  */
427
441
  export function objRGB2str(color: object): string;
442
+ /**
443
+ * key color 转化为 hex color。
444
+ * 如果不是 key color 则直接返回 color 自身
445
+ * @param color
446
+ */
447
+ export function keyColorToHex(color: string): string;
428
448
  /**
429
449
  * 产生渐变色函数
430
450
  * @param color
@@ -550,9 +570,19 @@ export function objectValues(obj): any;
550
570
  * @param obj 目标对象
551
571
  * @param keys 需要删除的键
552
572
  * @example
553
- * omit({ name: 'ilex', age: 16 }, ['age']) // { name: 'ilex' }
573
+ * omit({ name: 'ilex', age: 16 }, ['age']); // { name: 'ilex' }
574
+ */
575
+ export function omit(obj: object, keys: string | Array<String>): any;
576
+
577
+ /**
578
+ * 从指定的 obj 中获取 指定的key组成新的对象
579
+ * @param obj
580
+ * @param keys
581
+ * @example
582
+ * pick({ name: 'ilex', age: 16 }, ['age']); // { age: 16 }
583
+ * pick({ name: 'ilex', age: 16 }, ['']); // {}
554
584
  */
555
- export function omit(obj: object, keys: string | Array<any>): any;
585
+ export function pick(obj: Object | Function, keys: string | Array<String>): Object;
556
586
  /**
557
587
  * 将数据转化为json
558
588
  * @param data
@@ -959,6 +989,12 @@ declare namespace utils {
959
989
  * @return target
960
990
  */
961
991
  export function mergeAll(targetAndSources: Array<any>, overwrite?: boolean): object | Array<any>;
992
+ /**
993
+ * 比较 objTarget 中的所有属性值,是否在 objSource 中相等
994
+ * @param objSource
995
+ * @param objTarget
996
+ */
997
+ export function subObjectEqual(objSource: {}, objTarget: {}): Boolean;
962
998
  }
963
999
 
964
1000
  declare namespace throttleDebounce {
@@ -1034,3 +1070,12 @@ declare const arrayMove: {
1034
1070
  // TODO: Remove this for the next major release
1035
1071
  default: typeof arrayMove;
1036
1072
  };
1073
+
1074
+ declare namespace flat {
1075
+ /**
1076
+ * 获取树结构数据 flat keys
1077
+ * @param item
1078
+ * @param options
1079
+ */
1080
+ export function getTreeFlatKeys(item: Object | any[], options = { uniqueKey: 'key', childrenKey: 'children' }): String[] | Number[];
1081
+ }
package/index.js CHANGED
@@ -1,3 +1,3 @@
1
- var amostool = require('./lib/amostool');
2
-
3
- module.exports = amostool;
1
+ var amostool = require('./lib/amostool');
2
+
3
+ module.exports = amostool;
package/lib/_browser.js CHANGED
@@ -1,25 +1,27 @@
1
1
  "use strict";
2
+
2
3
  var Browser = {
3
4
  isFirefox: function() {
4
- return "undefined" != typeof InstallTrigger
5
+ return "undefined" != typeof InstallTrigger;
5
6
  },
6
7
  isIE: function() {
7
- return !!document.documentMode
8
+ return !!document.documentMode;
8
9
  },
9
10
  isEdge: function() {
10
- return !Browser.isIE() && !!window.StyleMedia
11
+ return !Browser.isIE() && !!window.StyleMedia;
11
12
  },
12
13
  isChrome: function() {
13
- return !!window.chrome && !!window.chrome.webstore
14
+ return !!window.chrome && !!window.chrome.webstore;
14
15
  },
15
16
  isSafari: function() {
16
- return 0 < Object.prototype.toString.call(window.HTMLElement).indexOf("Constructor") || -1 !== navigator.userAgent.toLowerCase().indexOf("safari")
17
+ return Object.prototype.toString.call(window.HTMLElement).indexOf("Constructor") > 0 || -1 !== navigator.userAgent.toLowerCase().indexOf("safari");
17
18
  },
18
19
  wp: function() {
19
- navigator.userAgent.match(/Windows Phone ([\d.]+)/)
20
+ navigator.userAgent.match(/Windows Phone ([\d.]+)/);
20
21
  },
21
22
  android: function() {
22
- navigator.userAgent.match(/(Android);?[\s\/]+([\d.]+)?/)
23
+ navigator.userAgent.match(/(Android);?[\s\/]+([\d.]+)?/);
23
24
  }
24
25
  };
25
- module.exports = Browser;
26
+
27
+ module.exports = Browser;
package/lib/_clone.js CHANGED
@@ -1,74 +1,79 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(e) {
4
- return (_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
5
- return typeof e
6
- } : function(e) {
7
- return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
8
- })(e)
9
- }
10
- var findType = function(e) {
11
- return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"), _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")), findType = function(e) {
4
+ return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1];
12
5
  };
13
6
 
14
7
  function findAllType(e) {
15
8
  switch (Object.prototype.toString.call(e)) {
16
- case "[object Date]":
17
- return "date";
18
- case "[object RegExp]":
19
- return "regexp";
20
- case "[object Arguments]":
21
- return "arguments";
22
- case "[object Array]":
23
- return "array";
24
- case "[object Error]":
25
- return "error"
9
+ case "[object Date]":
10
+ return "date";
11
+
12
+ case "[object RegExp]":
13
+ return "regexp";
14
+
15
+ case "[object Arguments]":
16
+ return "arguments";
17
+
18
+ case "[object Array]":
19
+ return "array";
20
+
21
+ case "[object Error]":
22
+ return "error";
26
23
  }
27
- return null === e ? "null" : void 0 === e ? "undefined" : e && 1 === e.nodeType ? "element" : _typeof(e = e.valueOf ? e.valueOf() : Object.prototype.valueOf.apply(e))
24
+ return null === e ? "null" : void 0 === e ? "undefined" : e && 1 === e.nodeType ? "element" : (e = e.valueOf ? e.valueOf() : Object.prototype.valueOf.apply(e),
25
+ (0, _typeof2.default)(e));
28
26
  }
29
- var simpleClone = function e(t) {
30
- switch (findType(t)) {
31
- case "Object":
32
- var r = {};
33
- for (var n in t) t.hasOwnProperty(n) && (r[n] = e(t[n]));
34
- return r;
35
- case "Array":
36
- return t.slice()
37
- }
38
- return t
39
- },
40
- clone = function(t) {
41
- try {
42
- return JSON.parse(JSON.stringify(t, function(e, t) {
43
- return "function" == typeof t ? t.toString() : t
44
- }))
45
- } catch (e) {
46
- return t
47
- }
48
- },
49
- cloneAll = function t(r) {
50
- switch (findAllType(r)) {
51
- case "object":
52
- var n = {};
53
- return Object.keys(r).forEach(function(e) {
54
- "$" !== e.charAt(0) && (n[e] = t(r[e]))
55
- }), n;
56
- case "element":
57
- return r.cloneNode(!0);
58
- case "array":
59
- for (var e = new Array(r.length), o = 0, c = r.length; o < c; o++) e[o] = t(r[o]);
60
- return e;
61
- case "regexp":
62
- var l = "";
63
- return l += r.multiline ? "m" : "", l += r.global ? "g" : "", l += r.ignoreCase ? "i" : "", new RegExp(r.source, l);
64
- case "date":
65
- return new Date(r.getTime());
66
- default:
67
- return r
68
- }
69
- };
27
+
28
+ var simpleClone = function e(r) {
29
+ switch (findType(r)) {
30
+ case "Object":
31
+ var t = {};
32
+ for (var n in r) r.hasOwnProperty(n) && (t[n] = e(r[n]));
33
+ return t;
34
+
35
+ case "Array":
36
+ return r.slice();
37
+ }
38
+ return r;
39
+ }, clone = function(e) {
40
+ try {
41
+ return JSON.parse(JSON.stringify(e, (function(e, r) {
42
+ return "function" == typeof r ? r.toString() : r;
43
+ })));
44
+ } catch (r) {
45
+ return e;
46
+ }
47
+ }, cloneAll = function e(r) {
48
+ switch (findAllType(r)) {
49
+ case "object":
50
+ var t = {};
51
+ return Object.keys(r).forEach((function(n) {
52
+ "$" !== n.charAt(0) && (t[n] = e(r[n]));
53
+ })), t;
54
+
55
+ case "element":
56
+ return r.cloneNode(!0);
57
+
58
+ case "array":
59
+ for (var n = new Array(r.length), o = 0, l = r.length; o < l; o++) n[o] = e(r[o]);
60
+ return n;
61
+
62
+ case "regexp":
63
+ var a = "";
64
+ return a += r.multiline ? "m" : "", a += r.global ? "g" : "", a += r.ignoreCase ? "i" : "",
65
+ new RegExp(r.source, a);
66
+
67
+ case "date":
68
+ return new Date(r.getTime());
69
+
70
+ default:
71
+ return r;
72
+ }
73
+ };
74
+
70
75
  module.exports = {
71
76
  simpleClone: simpleClone,
72
77
  clone: clone,
73
78
  cloneAll: cloneAll
74
- };
79
+ };
package/lib/_cookie.js CHANGED
@@ -1,68 +1,71 @@
1
1
  "use strict";
2
- var decode = decodeURIComponent,
3
- encode = encodeURIComponent,
4
- pairSplitRegExp = /; */,
5
- fieldContentRegExp = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;
2
+
3
+ var decode = decodeURIComponent, encode = encodeURIComponent, pairSplitRegExp = /; */, fieldContentRegExp = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;
6
4
 
7
5
  function parse(e, t) {
8
6
  if ("string" != typeof e) throw new TypeError("argument str must be a string");
9
7
  for (var r = {}, i = t || {}, n = e.split(pairSplitRegExp), o = i.decode || decode, a = 0; a < n.length; a++) {
10
- var s, p, d = n[a],
11
- f = d.indexOf("=");
12
- f < 0 || (s = d.substr(0, f).trim(), '"' == (p = d.substr(++f, d.length).trim())[0] && (p = p.slice(1, -1)), null == r[s] && (r[s] = tryDecode(p, o)))
8
+ var s = n[a], p = s.indexOf("=");
9
+ if (!(p < 0)) {
10
+ var d = s.substr(0, p).trim(), f = s.substr(++p, s.length).trim();
11
+ '"' == f[0] && (f = f.slice(1, -1)), null == r[d] && (r[d] = tryDecode(f, o));
12
+ }
13
13
  }
14
- return r
14
+ return r;
15
15
  }
16
16
 
17
17
  function serialize(e, t, r) {
18
- var i = r || {},
19
- n = i.encode || encode;
18
+ var i = r || {}, n = i.encode || encode;
20
19
  if ("function" != typeof n) throw new TypeError("option encode is invalid");
21
20
  if (!fieldContentRegExp.test(e)) throw new TypeError("argument name is invalid");
22
21
  var o = n(t);
23
22
  if (o && !fieldContentRegExp.test(o)) throw new TypeError("argument val is invalid");
24
23
  var a = e + "=" + o;
25
24
  if (null != i.maxAge) {
26
- var s = +i.maxAge;
25
+ var s = i.maxAge - 0;
27
26
  if (isNaN(s)) throw new Error("maxAge should be a Number");
28
- a += "; Max-Age=" + Math.floor(s)
27
+ a += "; Max-Age=" + Math.floor(s);
29
28
  }
30
29
  if (i.domain) {
31
30
  if (!fieldContentRegExp.test(i.domain)) throw new TypeError("option domain is invalid");
32
- a += "; Domain=" + i.domain
31
+ a += "; Domain=" + i.domain;
33
32
  }
34
33
  if (i.path) {
35
34
  if (!fieldContentRegExp.test(i.path)) throw new TypeError("option path is invalid");
36
- a += "; Path=" + i.path
35
+ a += "; Path=" + i.path;
37
36
  }
38
37
  if (i.expires) {
39
38
  if ("function" != typeof i.expires.toUTCString) throw new TypeError("option expires is invalid");
40
- a += "; Expires=" + i.expires.toUTCString()
39
+ a += "; Expires=" + i.expires.toUTCString();
41
40
  }
42
41
  if (i.httpOnly && (a += "; HttpOnly"), i.secure && (a += "; Secure"), i.sameSite) switch ("string" == typeof i.sameSite ? i.sameSite.toLowerCase() : i.sameSite) {
43
- case !0:
44
- a += "; SameSite=Strict";
45
- break;
46
- case "lax":
47
- a += "; SameSite=Lax";
48
- break;
49
- case "strict":
50
- a += "; SameSite=Strict";
51
- break;
52
- default:
53
- throw new TypeError("option sameSite is invalid")
42
+ case !0:
43
+ a += "; SameSite=Strict";
44
+ break;
45
+
46
+ case "lax":
47
+ a += "; SameSite=Lax";
48
+ break;
49
+
50
+ case "strict":
51
+ a += "; SameSite=Strict";
52
+ break;
53
+
54
+ default:
55
+ throw new TypeError("option sameSite is invalid");
54
56
  }
55
- return a
57
+ return a;
56
58
  }
57
59
 
58
- function tryDecode(t, e) {
60
+ function tryDecode(e, t) {
59
61
  try {
60
- return e(t)
61
- } catch (e) {
62
- return t
62
+ return t(e);
63
+ } catch (t) {
64
+ return e;
63
65
  }
64
66
  }
67
+
65
68
  module.exports = {
66
69
  parse: parse,
67
70
  serialize: serialize
68
- };
71
+ };