@kurkle/color 0.2.0 → 0.3.0
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.
- package/README.md +1 -1
- package/dist/{color.js → color.cjs} +14 -9
- package/dist/color.esm.js +15 -10
- package/dist/color.min.js +2 -2
- package/package.json +15 -9
package/README.md
CHANGED
|
@@ -64,7 +64,7 @@ hsv(244, 100%, 100%, 0.6)
|
|
|
64
64
|
|
|
65
65
|
[typedocs](https://kurkle.github.io/color/)
|
|
66
66
|
|
|
67
|
-
**note** The docs are for the ESM module. UMD module only exports the [default export](https://kurkle.github.io/color/
|
|
67
|
+
**note** The docs are for the ESM module. UMD module only exports the [default export](https://kurkle.github.io/color/modules.html#default)
|
|
68
68
|
|
|
69
69
|
## Benchmarks
|
|
70
70
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @kurkle/color v0.
|
|
2
|
+
* @kurkle/color v0.3.0
|
|
3
3
|
* https://github.com/kurkle/color#readme
|
|
4
4
|
* (c) 2022 Jukka Kurkela
|
|
5
5
|
* Released under the MIT License
|
|
@@ -423,13 +423,6 @@ function rgbString(v) {
|
|
|
423
423
|
: `rgb(${v.r}, ${v.g}, ${v.b})`
|
|
424
424
|
);
|
|
425
425
|
}
|
|
426
|
-
function rgbMix(rgb1, rgb2, t = 0.5) {
|
|
427
|
-
t = 1 - t;
|
|
428
|
-
rgb1.r = 0xFF & rgb1.r + t * (rgb2.r - rgb1.r) + 0.5;
|
|
429
|
-
rgb1.g = 0xFF & rgb1.g + t * (rgb2.g - rgb1.g) + 0.5;
|
|
430
|
-
rgb1.b = 0xFF & rgb1.b + t * (rgb2.b - rgb1.b) + 0.5;
|
|
431
|
-
rgb1.a = rgb1.a + t * (rgb2.a - rgb1.a);
|
|
432
|
-
}
|
|
433
426
|
|
|
434
427
|
const to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;
|
|
435
428
|
const from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);
|
|
@@ -518,7 +511,19 @@ class Color {
|
|
|
518
511
|
}
|
|
519
512
|
mix(color, weight) {
|
|
520
513
|
if (color) {
|
|
521
|
-
|
|
514
|
+
const c1 = this.rgb;
|
|
515
|
+
const c2 = color.rgb;
|
|
516
|
+
let w2;
|
|
517
|
+
const p = weight === w2 ? 0.5 : weight;
|
|
518
|
+
const w = 2 * p - 1;
|
|
519
|
+
const a = c1.a - c2.a;
|
|
520
|
+
const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;
|
|
521
|
+
w2 = 1 - w1;
|
|
522
|
+
c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;
|
|
523
|
+
c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;
|
|
524
|
+
c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;
|
|
525
|
+
c1.a = p * c1.a + (1 - p) * c2.a;
|
|
526
|
+
this.rgb = c1;
|
|
522
527
|
}
|
|
523
528
|
return this;
|
|
524
529
|
}
|
package/dist/color.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @kurkle/color v0.
|
|
2
|
+
* @kurkle/color v0.3.0
|
|
3
3
|
* https://github.com/kurkle/color#readme
|
|
4
4
|
* (c) 2022 Jukka Kurkela
|
|
5
5
|
* Released under the MIT License
|
|
@@ -420,13 +420,6 @@ function rgbString(v) {
|
|
|
420
420
|
: `rgb(${v.r}, ${v.g}, ${v.b})`
|
|
421
421
|
);
|
|
422
422
|
}
|
|
423
|
-
function rgbMix(rgb1, rgb2, t = 0.5) {
|
|
424
|
-
t = 1 - t;
|
|
425
|
-
rgb1.r = 0xFF & rgb1.r + t * (rgb2.r - rgb1.r) + 0.5;
|
|
426
|
-
rgb1.g = 0xFF & rgb1.g + t * (rgb2.g - rgb1.g) + 0.5;
|
|
427
|
-
rgb1.b = 0xFF & rgb1.b + t * (rgb2.b - rgb1.b) + 0.5;
|
|
428
|
-
rgb1.a = rgb1.a + t * (rgb2.a - rgb1.a);
|
|
429
|
-
}
|
|
430
423
|
|
|
431
424
|
const to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;
|
|
432
425
|
const from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);
|
|
@@ -515,7 +508,19 @@ class Color {
|
|
|
515
508
|
}
|
|
516
509
|
mix(color, weight) {
|
|
517
510
|
if (color) {
|
|
518
|
-
|
|
511
|
+
const c1 = this.rgb;
|
|
512
|
+
const c2 = color.rgb;
|
|
513
|
+
let w2;
|
|
514
|
+
const p = weight === w2 ? 0.5 : weight;
|
|
515
|
+
const w = 2 * p - 1;
|
|
516
|
+
const a = c1.a - c2.a;
|
|
517
|
+
const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;
|
|
518
|
+
w2 = 1 - w1;
|
|
519
|
+
c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;
|
|
520
|
+
c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;
|
|
521
|
+
c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;
|
|
522
|
+
c1.a = p * c1.a + (1 - p) * c2.a;
|
|
523
|
+
this.rgb = c1;
|
|
519
524
|
}
|
|
520
525
|
return this;
|
|
521
526
|
}
|
|
@@ -581,4 +586,4 @@ function index_esm(input) {
|
|
|
581
586
|
return new Color(input);
|
|
582
587
|
}
|
|
583
588
|
|
|
584
|
-
export { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl,
|
|
589
|
+
export { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };
|
package/dist/color.min.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @kurkle/color v0.
|
|
2
|
+
* @kurkle/color v0.3.0
|
|
3
3
|
* https://github.com/kurkle/color#readme
|
|
4
4
|
* (c) 2022 Jukka Kurkela
|
|
5
5
|
* Released under the MIT License
|
|
6
6
|
*/
|
|
7
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self)["@kurkle/color"]=t()}(this,(function(){"use strict";function e(e){return e+.5|0}const t=(e,t,f)=>Math.max(Math.min(e,f),t);function f(f){return t(e(2.55*f),0,255)}function r(f){return t(e(255*f),0,255)}function
|
|
7
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self)["@kurkle/color"]=t()}(this,(function(){"use strict";function e(e){return e+.5|0}const t=(e,t,f)=>Math.max(Math.min(e,f),t);function f(f){return t(e(2.55*f),0,255)}function r(f){return t(e(255*f),0,255)}function a(f){return t(e(f/2.55)/100,0,1)}function n(f){return t(e(100*f),0,100)}const i={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},s=[..."0123456789ABCDEF"],c=e=>s[15&e],d=e=>s[(240&e)>>4]+s[15&e],b=e=>(240&e)>>4==(15&e);function g(e){var t=(e=>b(e.r)&&b(e.g)&&b(e.b)&&b(e.a))(e)?c:d;return e?"#"+t(e.r)+t(e.g)+t(e.b)+((e,t)=>e<255?t(e):"")(e.a,t):void 0}const o=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function u(e,t,f){const r=t*Math.min(f,1-f),a=(t,a=(t+e/30)%12)=>f-r*Math.max(Math.min(a-3,9-a,1),-1);return[a(0),a(8),a(4)]}function h(e,t,f){const r=(r,a=(r+e/60)%6)=>f-f*t*Math.max(Math.min(a,4-a,1),0);return[r(5),r(3),r(1)]}function l(e,t,f){const r=u(e,1,.5);let a;for(t+f>1&&(a=1/(t+f),t*=a,f*=a),a=0;a<3;a++)r[a]*=1-t-f,r[a]+=t;return r}function p(e){const t=e.r/255,f=e.g/255,r=e.b/255,a=Math.max(t,f,r),n=Math.min(t,f,r),i=(a+n)/2;let s,c,d;return a!==n&&(d=a-n,c=i>.5?d/(2-a-n):d/(a+n),s=function(e,t,f,r,a){return e===a?(t-f)/r+(t<f?6:0):t===a?(f-e)/r+2:(e-t)/r+4}(t,f,r,d,a),s=60*s+.5),[0|s,c||0,i]}function y(e,t,f,a){return(Array.isArray(t)?e(t[0],t[1],t[2]):e(t,f,a)).map(r)}function m(e,t,f){return y(u,e,t,f)}function Y(e){return(e%360+360)%360}function v(e){const t=o.exec(e);let a,n=255;if(!t)return;t[5]!==a&&(n=t[6]?f(+t[5]):r(+t[5]));const i=Y(+t[2]),s=+t[3]/100,c=+t[4]/100;return a="hwb"===t[1]?function(e,t,f){return y(l,e,t,f)}(i,s,c):"hsv"===t[1]?function(e,t,f){return y(h,e,t,f)}(i,s,c):m(i,s,c),{r:a[0],g:a[1],b:a[2],a:n}}const x={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},w={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};let F;function _(e){F||(F=function(){const e={},t=Object.keys(w),f=Object.keys(x);let r,a,n,i,s;for(r=0;r<t.length;r++){for(i=s=t[r],a=0;a<f.length;a++)n=f[a],s=s.replace(n,x[n]);n=parseInt(w[i],16),e[s]=[n>>16&255,n>>8&255,255&n]}return e}(),F.transparent=[0,0,0,0]);const t=F[e.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:4===t.length?t[3]:255}}const M=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const k=e=>e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055,X=e=>e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4);function O(e,t,f){if(e){let r=p(e);r[t]=Math.max(0,Math.min(r[t]+r[t]*f,0===t?360:1)),r=m(r),e.r=r[0],e.g=r[1],e.b=r[2]}}function T(e,t){return e?Object.assign(t||{},e):e}function S(e){var t={r:0,g:0,b:0,a:255};return Array.isArray(e)?e.length>=3&&(t={r:e[0],g:e[1],b:e[2],a:255},e.length>3&&(t.a=r(e[3]))):(t=T(e,{r:0,g:0,b:0,a:1})).a=r(t.a),t}function Z(e){return"r"===e.charAt(0)?function(e){const r=M.exec(e);let a,n,i,s=255;if(r){if(r[7]!==a){const e=+r[7];s=r[8]?f(e):t(255*e,0,255)}return a=+r[1],n=+r[3],i=+r[5],a=255&(r[2]?f(a):t(a,0,255)),n=255&(r[4]?f(n):t(n,0,255)),i=255&(r[6]?f(i):t(i,0,255)),{r:a,g:n,b:i,a:s}}}(e):v(e)}class ${constructor(e){if(e instanceof $)return e;const t=typeof e;let f;var r,a,n;"object"===t?f=S(e):"string"===t&&(n=(r=e).length,"#"===r[0]&&(4===n||5===n?a={r:255&17*i[r[1]],g:255&17*i[r[2]],b:255&17*i[r[3]],a:5===n?17*i[r[4]]:255}:7!==n&&9!==n||(a={r:i[r[1]]<<4|i[r[2]],g:i[r[3]]<<4|i[r[4]],b:i[r[5]]<<4|i[r[6]],a:9===n?i[r[7]]<<4|i[r[8]]:255})),f=a||_(e)||Z(e)),this._rgb=f,this._valid=!!f}get valid(){return this._valid}get rgb(){var e=T(this._rgb);return e&&(e.a=a(e.a)),e}set rgb(e){this._rgb=S(e)}rgbString(){return this._valid?(e=this._rgb)&&(e.a<255?`rgba(${e.r}, ${e.g}, ${e.b}, ${a(e.a)})`:`rgb(${e.r}, ${e.g}, ${e.b})`):void 0;var e}hexString(){return this._valid?g(this._rgb):void 0}hslString(){return this._valid?function(e){if(!e)return;const t=p(e),f=t[0],r=n(t[1]),i=n(t[2]);return e.a<255?`hsla(${f}, ${r}%, ${i}%, ${a(e.a)})`:`hsl(${f}, ${r}%, ${i}%)`}(this._rgb):void 0}mix(e,t){if(e){const f=this.rgb,r=e.rgb;let a;const n=t===a?.5:t,i=2*n-1,s=f.a-r.a,c=((i*s==-1?i:(i+s)/(1+i*s))+1)/2;a=1-c,f.r=255&c*f.r+a*r.r+.5,f.g=255&c*f.g+a*r.g+.5,f.b=255&c*f.b+a*r.b+.5,f.a=n*f.a+(1-n)*r.a,this.rgb=f}return this}interpolate(e,t){return e&&(this._rgb=function(e,t,f){const n=X(a(e.r)),i=X(a(e.g)),s=X(a(e.b));return{r:r(k(n+f*(X(a(t.r))-n))),g:r(k(i+f*(X(a(t.g))-i))),b:r(k(s+f*(X(a(t.b))-s))),a:e.a+f*(t.a-e.a)}}(this._rgb,e._rgb,t)),this}clone(){return new $(this.rgb)}alpha(e){return this._rgb.a=r(e),this}clearer(e){return this._rgb.a*=1-e,this}greyscale(){const t=this._rgb,f=e(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=f,this}opaquer(e){return this._rgb.a*=1+e,this}negate(){const e=this._rgb;return e.r=255-e.r,e.g=255-e.g,e.b=255-e.b,this}lighten(e){return O(this._rgb,2,e),this}darken(e){return O(this._rgb,2,-e),this}saturate(e){return O(this._rgb,1,e),this}desaturate(e){return O(this._rgb,1,-e),this}rotate(e){return function(e,t){var f=p(e);f[0]=Y(f[0]+t),f=m(f),e.r=f[0],e.g=f[1],e.b=f[2]}(this._rgb,e),this}}return function(e){return new $(e)}}));
|
|
8
8
|
//# sourceMappingURL=color.min.js.map
|
package/package.json
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kurkle/color",
|
|
3
|
-
"
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "0.3.0",
|
|
4
5
|
"description": "css color parsing, manupulation and conversion",
|
|
5
|
-
"main": "dist/color.
|
|
6
|
+
"main": "dist/color.cjs",
|
|
6
7
|
"module": "dist/color.esm.js",
|
|
7
8
|
"types": "dist/color.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
"types": "./dist/color.d.ts",
|
|
11
|
+
"import": "./dist/color.esm.js",
|
|
12
|
+
"require": "./dist/color.cjs"
|
|
13
|
+
},
|
|
8
14
|
"scripts": {
|
|
9
15
|
"build": "node util/copy_dist.js && rollup -c",
|
|
10
16
|
"lint": "eslint src/*.js test/*.js util/*.js",
|
|
@@ -37,13 +43,14 @@
|
|
|
37
43
|
},
|
|
38
44
|
"homepage": "https://github.com/kurkle/color#readme",
|
|
39
45
|
"devDependencies": {
|
|
46
|
+
"@rollup/plugin-terser": "^0.1.0",
|
|
40
47
|
"assert": "^2.0.0",
|
|
41
48
|
"benchmark": "^2.1.4",
|
|
42
49
|
"chartjs-color": "^2.4.1",
|
|
43
50
|
"chartjs-color-string": "^0.6.0",
|
|
44
51
|
"child_process": "^1.0.2",
|
|
45
52
|
"chroma-js": "^2.1.1",
|
|
46
|
-
"color-name": "^
|
|
53
|
+
"color-name": "^2.0.0",
|
|
47
54
|
"color-names": "^2.0.0",
|
|
48
55
|
"color-parse": "^1.4.2",
|
|
49
56
|
"color-parser": "^0.1.0",
|
|
@@ -56,15 +63,14 @@
|
|
|
56
63
|
"eslint-plugin-react": "^7.22.0",
|
|
57
64
|
"fs": "0.0.1-security",
|
|
58
65
|
"perf_hooks": "0.0.1",
|
|
59
|
-
"rollup": "^
|
|
66
|
+
"rollup": "^3.5.0",
|
|
60
67
|
"rollup-plugin-analyzer": "^4.0.0",
|
|
61
68
|
"rollup-plugin-cleanup": "^3.2.1",
|
|
62
|
-
"rollup-plugin-istanbul": "^
|
|
63
|
-
"rollup-plugin-
|
|
64
|
-
"rollup-plugin-visualizer": "^5.5.0",
|
|
69
|
+
"rollup-plugin-istanbul": "^4.0.0",
|
|
70
|
+
"rollup-plugin-visualizer": "^5.8.3",
|
|
65
71
|
"tinycolor2": "^1.4.2",
|
|
66
|
-
"typedoc": "^0.
|
|
67
|
-
"typescript": "^4.
|
|
72
|
+
"typedoc": "^0.23.21",
|
|
73
|
+
"typescript": "^4.9.3",
|
|
68
74
|
"util": "^0.12.3"
|
|
69
75
|
}
|
|
70
76
|
}
|