From 43799e291aeb3dd635ada0c055786c1680b12821 Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Wed, 15 Jan 2025 15:06:05 +0100 Subject: [PATCH 01/22] Convert utils code to es6. npx lebab --transform "commonjs,no-strict,arrow,arg-rest,arg-spread,obj-method,exponent,let,template,default-param,includes" --replace "src/utils/*.js" --- src/utils/ArrayUtil.js | 170 ++++++++++++++++----------------- src/utils/Base64Util.js | 32 +++---- src/utils/ColorCmykUtil.js | 30 +++--- src/utils/ColorHexUtil.js | 50 +++++----- src/utils/ColorRgbUtil.js | 166 ++++++++++++++++---------------- src/utils/DateUtil.js | 122 +++++++++++------------ src/utils/EaseUtil.js | 114 ++++++++++------------ src/utils/FunctionUtil.js | 100 +++++++++---------- src/utils/HexUtil.js | 8 +- src/utils/InterpolationUtil.js | 26 ++--- src/utils/JSONUtil.js | 6 +- src/utils/MathUtil.js | 60 ++++++------ src/utils/NumberUtil.js | 16 ++-- src/utils/ObjectUtil.js | 120 ++++++++++++----------- src/utils/PointUtil.js | 72 +++++++------- src/utils/RandomUtil.js | 41 ++++---- src/utils/StringUtil.js | 95 +++++++++--------- src/utils/TestUtil.js | 166 ++++++++++++++++---------------- src/utils/TrigoUtil.js | 54 +++++------ src/utils/TypeUtil.js | 34 +++---- src/utils/URLUtil.js | 54 +++++------ src/utils/UTF8Util.js | 4 +- src/utils/XMLUtil.js | 4 +- 23 files changed, 766 insertions(+), 778 deletions(-) diff --git a/src/utils/ArrayUtil.js b/src/utils/ArrayUtil.js index 3976e67..4d20555 100644 --- a/src/utils/ArrayUtil.js +++ b/src/utils/ArrayUtil.js @@ -8,8 +8,8 @@ /** global: TypeUtil */ ArrayUtil = { - all: function (list) { - return list.every(function (item) { + all(list) { + return list.every((item) => { switch (TypeUtil.of(item)) { case TypeUtil.ARRAY: return item.length > 0; @@ -21,8 +21,8 @@ ArrayUtil = { }); }, - any: function (list) { - return list.some(function (item) { + any(list) { + return list.some((item) => { switch (TypeUtil.of(item)) { case TypeUtil.ARRAY: return item.length > 0; @@ -34,15 +34,15 @@ ArrayUtil = { }); }, - clean: function (list, hard) { - var items = list.slice(); - items = items.filter(function (item) { + clean(list, hard) { + let items = list.slice(); + items = items.filter((item) => { return !TypeUtil.isNone(item); }); if (hard === true) { items = items - .map(function (item) { - var itemClean; + .map((item) => { + let itemClean; switch (TypeUtil.of(item)) { case TypeUtil.ARRAY: itemClean = ArrayUtil.clean(item, hard); @@ -57,17 +57,17 @@ ArrayUtil = { return item; } }) - .filter(function (item) { + .filter((item) => { return !TypeUtil.isNone(item); }); } return items; }, - clone: function (list) { - var cln = list.slice(); - var val; - for (var i = 0, j = cln.length; i < j; i++) { + clone(list) { + const cln = list.slice(); + let val; + for (let i = 0, j = cln.length; i < j; i++) { val = cln[i]; switch (TypeUtil.of(val)) { case TypeUtil.ARRAY: @@ -86,14 +86,14 @@ ArrayUtil = { return cln; }, - contains: function (list, value) { - var values = [value].concat(FunctionUtil.args(arguments, 2)); - var val, valFound; + contains(list, value) { + const values = [value].concat(FunctionUtil.args(arguments, 2)); + let val, valFound; - for (var i = 0, j = values.length; i < j; i++) { + for (let i = 0, j = values.length; i < j; i++) { val = values[i]; valFound = false; - for (var k = 0, m = list.length; k < m; k++) { + for (let k = 0, m = list.length; k < m; k++) { if (ObjectUtil.equals(list[k], val)) { valFound = true; } @@ -106,15 +106,15 @@ ArrayUtil = { return true; }, - equals: function (listA, listB) { + equals(listA, listB) { return ObjectUtil.equals(listA, listB); }, - flatten: function (list) { - var items = []; - for (var i = 0, j = list.length; i < j; i++) { + flatten(list) { + const items = []; + for (let i = 0, j = list.length; i < j; i++) { if (TypeUtil.isArray(list[i])) { - items.push.apply(items, ArrayUtil.flatten(list[i])); + items.push(...ArrayUtil.flatten(list[i])); } else { items.push(list[i]); } @@ -122,20 +122,20 @@ ArrayUtil = { return items; }, - index: function (list, keys, flat) { - var dict = {}, - item, - key, - val; + index(list, keys, flat) { + const dict = {}; + let item; + let key; + let val; if (TypeUtil.isString(keys)) { keys = [keys]; } - for (var i = 0, j = list.length; i < j; i++) { + for (let i = 0, j = list.length; i < j; i++) { item = list[i]; - for (var m = 0, n = keys.length; m < n; m++) { + for (let m = 0, n = keys.length; m < n; m++) { key = String(keys[m]); val = String(item[key]); @@ -153,15 +153,15 @@ ArrayUtil = { return dict; }, - insert: function (list, index, item) { + insert(list, index, item) { list.splice(index, 0, item); return list; }, - max: function (list, callback) { + max(list, callback) { return ArrayUtil.reduce( list, - function (a, b) { + (a, b) => { if (TypeUtil.isFunction(callback)) { return Math.max(a, callback(b)); } @@ -171,10 +171,10 @@ ArrayUtil = { ); }, - min: function (list, callback) { + min(list, callback) { return ArrayUtil.reduce( list, - function (a, b) { + (a, b) => { if (TypeUtil.isFunction(callback)) { return Math.min(a, callback(b)); } @@ -184,11 +184,11 @@ ArrayUtil = { ); }, - paginate: function (list, itemsPerPage) { - var itemsTotal = list.length; - var pagesTotal = itemsPerPage > 0 ? Math.ceil(itemsTotal / itemsPerPage) : 0; - var pages = []; - var i, j; + paginate(list, itemsPerPage) { + const itemsTotal = list.length; + const pagesTotal = itemsPerPage > 0 ? Math.ceil(itemsTotal / itemsPerPage) : 0; + const pages = []; + let i, j; for (i = 0, j = 0; i < pagesTotal; i++) { j = i * itemsPerPage; pages[i] = list.slice(j, j + Math.min(itemsPerPage, itemsTotal)); @@ -196,16 +196,16 @@ ArrayUtil = { return pages; }, - reduce: function (list, reducer, initialValue) { - var value = TypeUtil.isUndefined(initialValue) ? 0 : initialValue; - for (var i = 0, j = list.length; i < j; i++) { + reduce(list, reducer, initialValue) { + let value = TypeUtil.isUndefined(initialValue) ? 0 : initialValue; + for (let i = 0, j = list.length; i < j; i++) { value = reducer(value, list[i], i, list); } return value; }, - replace: function (list, searchValue, replacementValue) { - for (var i = 0, j = list.length; i < j; i++) { + replace(list, searchValue, replacementValue) { + for (let i = 0, j = list.length; i < j; i++) { if (ObjectUtil.equals(list[i], searchValue)) { list[i] = replacementValue; } @@ -213,10 +213,10 @@ ArrayUtil = { return list; }, - remove: function (list, value) { - var values = [value].concat(FunctionUtil.args(arguments, 2)); - for (var k = 0, m = values.length; k < m; k++) { - for (var i = 0, j = list.length; i < j; i++) { + remove(list, value) { + const values = [value].concat(FunctionUtil.args(arguments, 2)); + for (let k = 0, m = values.length; k < m; k++) { + for (let i = 0, j = list.length; i < j; i++) { if (ObjectUtil.equals(list[i], values[k])) { list.splice(i, 1); i--; @@ -227,33 +227,33 @@ ArrayUtil = { return list; }, - rotate: function (list, count) { - var cursor = MathUtil.cycle(count, list.length); + rotate(list, count) { + const cursor = MathUtil.cycle(count, list.length); return list.slice(cursor).concat(list.slice(0, cursor)); }, - shuffle: function (list) { - var items = list.slice(); - var randomIndex; - var randomItems; - var sortedItems = list.length; + shuffle(list) { + const items = list.slice(); + let randomIndex; + let randomItems; + let sortedItems = list.length; while (sortedItems) { randomIndex = RandomUtil.integer(0, --sortedItems); randomItems = items.splice(randomIndex, 1); - items.push.apply(items, randomItems); + items.push(...randomItems); } return items; }, - sort: function (list, key) { - var isArray = TypeUtil.isArray; - var isObject = TypeUtil.isObject; - var isNumber = TypeUtil.isNumber; - var isString = TypeUtil.isString; + sort(list, key) { + const isArray = TypeUtil.isArray; + const isObject = TypeUtil.isObject; + const isNumber = TypeUtil.isNumber; + const isString = TypeUtil.isString; - var compare = function (a, b) { - var aVal; - var bVal; + const compare = (a, b) => { + let aVal; + let bVal; if (isObject(a) && isObject(b) && isString(key)) { // comparing objects @@ -261,7 +261,7 @@ ArrayUtil = { bVal = key in b ? b[key] : b; } else if (isArray(a) && isArray(b) && isNumber(key)) { // comparing arrays - var index = key; + const index = key; aVal = index >= 0 && index < a.length ? a[index] : a; bVal = index >= 0 && index < b.length ? b[index] : b; } else { @@ -269,8 +269,8 @@ ArrayUtil = { bVal = b; } - var aValIsNum = isNumber(aVal); - var bValIsNum = isNumber(bVal); + const aValIsNum = isNumber(aVal); + const bValIsNum = isNumber(bVal); if (aValIsNum && bValIsNum) { return aVal <= bVal ? -1 : 1; @@ -279,7 +279,7 @@ ArrayUtil = { } else if (bValIsNum) { return 1; } else { - var ab = [aVal, bVal]; + const ab = [aVal, bVal]; ab.sort(); return ab.indexOf(aVal) <= ab.indexOf(bVal) ? -1 : 1; } @@ -288,10 +288,10 @@ ArrayUtil = { return list.sort(compare); }, - sum: function (list, callback) { + sum(list, callback) { return ArrayUtil.reduce( list, - function (a, b) { + (a, b) => { if (TypeUtil.isFunction(callback)) { return a + callback(b); } @@ -301,13 +301,13 @@ ArrayUtil = { ); }, - unique: function (list) { - var item; - var items = []; - var itemsNotEquals = function (itemUnique) { + unique(list) { + let item; + const items = []; + const itemsNotEquals = (itemUnique) => { return !ObjectUtil.equals(item, itemUnique); }; - for (var i = 0, j = list.length; i < j; i++) { + for (let i = 0, j = list.length; i < j; i++) { item = list[i]; if (items.every(itemsNotEquals)) { items.push(item); @@ -316,21 +316,21 @@ ArrayUtil = { return items; }, - unzip: function (list) { + unzip(list) { return ArrayUtil.zip.apply(null, list); }, - zip: function (list1, list2) { - var lists = [list1, list2].concat(FunctionUtil.args(arguments, 2)); - var listLength = 0; - lists.forEach(function (item) { + zip(list1, list2) { + const lists = [list1, list2].concat(FunctionUtil.args(arguments, 2)); + let listLength = 0; + lists.forEach((item) => { listLength = listLength === 0 ? item.length : Math.min(listLength, item.length); }); - var list = []; - for (var i = 0; i < listLength; i++) { + const list = []; + for (let i = 0; i < listLength; i++) { list[i] = []; - for (var j = 0, k = lists.length; j < k; j++) { + for (let j = 0, k = lists.length; j < k; j++) { list[i][j] = lists[j][i]; } } diff --git a/src/utils/Base64Util.js b/src/utils/Base64Util.js index 04741d4..2202cef 100644 --- a/src/utils/Base64Util.js +++ b/src/utils/Base64Util.js @@ -20,19 +20,19 @@ Base64Util = { '0': 52, '1': 53, '2': 54, '3': 55, '4': 56, '5': 57, '6': 58, '7': 59, '8': 60, '9': 61, '+': 62, '/': 63, '=': 64 }, - decode: function (str) { - var input = str.replace(/[^A-Za-z0-9\+\/\=]/g, ''); - var output = ''; + decode(str) { + const input = str.replace(/[^A-Za-z0-9\+\/\=]/g, ''); + let output = ''; try { output = window.atob(input); } catch (e) { - var chars = Base64Util.CHARS_TABLE; - var chr1, chr2, chr3; - var enc1, enc2, enc3, enc4; + const chars = Base64Util.CHARS_TABLE; + let chr1, chr2, chr3; + let enc1, enc2, enc3, enc4; - var i = 0; - var j = input.length; + let i = 0; + const j = input.length; while (i < j) { enc1 = chars[input.charAt(i++)]; @@ -59,19 +59,19 @@ Base64Util = { return output; }, - encode: function (str) { - var input = UTF8Util.encode(str); - var output = ''; + encode(str) { + const input = UTF8Util.encode(str); + let output = ''; try { output = window.btoa(input); } catch (e) { - var chars = Base64Util.CHARS_LIST; - var chr1, chr2, chr3; - var enc1, enc2, enc3, enc4; + const chars = Base64Util.CHARS_LIST; + let chr1, chr2, chr3; + let enc1, enc2, enc3, enc4; - var i = 0; - var j = input.length; + let i = 0; + const j = input.length; while (i < j) { chr1 = input.charCodeAt(i++); diff --git a/src/utils/ColorCmykUtil.js b/src/utils/ColorCmykUtil.js index b05cee3..d583770 100644 --- a/src/utils/ColorCmykUtil.js +++ b/src/utils/ColorCmykUtil.js @@ -84,7 +84,7 @@ ColorCmykUtil = { // ColorCmykUtil.toRgb(color)); // }, - toHex: function (color, prefix) { + toHex(color, prefix) { return ColorRgbUtil.toHex(ColorCmykUtil.toRgb(color), prefix); }, @@ -100,18 +100,18 @@ ColorCmykUtil = { // ColorCmykUtil.toRgb(color)); // }, - toRgb: function (color) { - var c = color.c / 100; - var m = color.m / 100; - var y = color.y / 100; - var k = color.k / 100; - var ik = 1.0 - k; + toRgb(color) { + const c = color.c / 100; + const m = color.m / 100; + const y = color.y / 100; + const k = color.k / 100; + const ik = 1.0 - k; - var r = 1.0 - Math.min(1.0, c * ik + k); - var g = 1.0 - Math.min(1.0, m * ik + k); - var b = 1.0 - Math.min(1.0, y * ik + k); + let r = 1.0 - Math.min(1.0, c * ik + k); + let g = 1.0 - Math.min(1.0, m * ik + k); + let b = 1.0 - Math.min(1.0, y * ik + k); - var round = Math.round; + const round = Math.round; r = round(r * 255); g = round(g * 255); b = round(b * 255); @@ -119,13 +119,13 @@ ColorCmykUtil = { return { r: r, g: g, b: b, a: 1.0 }; }, - toString: function (color) { + toString(color) { // prettier-ignore - return '{ c:' + String(color.c) + ', m:' + String(color.m) + ', y:' + String(color.y) + ', k:' + String(color.k) + ' }'; + return `{ c:${String(color.c)}, m:${String(color.m)}, y:${String(color.y)}, k:${String(color.k)} }`; }, - toStringCSS: function (color) { + toStringCSS(color) { // prettier-ignore - return 'cmyk(' + String(color.c) + '%, ' + String(color.m) + '%, ' + String(color.y) + '%, ' + String(color.k) + '%)'; + return `cmyk(${String(color.c)}%, ${String(color.m)}%, ${String(color.y)}%, ${String(color.k)}%)`; }, }; diff --git a/src/utils/ColorHexUtil.js b/src/utils/ColorHexUtil.js index 1d97258..6e72241 100644 --- a/src/utils/ColorHexUtil.js +++ b/src/utils/ColorHexUtil.js @@ -7,49 +7,49 @@ /** global: TypeUtil */ ColorHexUtil = { - average: function (colors) { + average(colors) { return ColorRgbUtil.toHex( ColorRgbUtil.average( - colors.map(function (color) { + colors.map((color) => { return ColorHexUtil.toRgb(color); }) ) ); }, - distance: function (colorA, colorB) { + distance(colorA, colorB) { return ColorRgbUtil.distance( ColorHexUtil.toRgb(colorA), ColorHexUtil.toRgb(colorB) ); }, - gradient: function (colors, steps) { + gradient(colors, steps) { return ColorRgbUtil.gradient( - colors.map(function (color) { + colors.map((color) => { return ColorHexUtil.toRgb(color); }), steps - ).map(function (color) { + ).map((color) => { return ColorRgbUtil.toHex(color); }); }, - gradientMatrix: function (colors, stepsX, stepsY) { + gradientMatrix(colors, stepsX, stepsY) { return ColorRgbUtil.gradientMatrix( - ObjectUtil.map(colors, function (color) { + ObjectUtil.map(colors, (color) => { return ColorHexUtil.toRgb(color); }), stepsX, stepsY - ).map(function (colors) { - return colors.map(function (color) { + ).map((colors) => { + return colors.map((color) => { return ColorRgbUtil.toHex(color); }); }); }, - interpolateBilinear: function (a, b, c, d, u, v) { + interpolateBilinear(a, b, c, d, u, v) { return ColorRgbUtil.toHex( ColorRgbUtil.interpolateBilinear( ColorHexUtil.toRgb(a), @@ -62,7 +62,7 @@ ColorHexUtil = { ); }, - interpolateLinear: function (colorFrom, colorTo, t) { + interpolateLinear(colorFrom, colorTo, t) { return ColorRgbUtil.toHex( ColorRgbUtil.interpolateLinear( ColorHexUtil.toRgb(colorFrom), @@ -72,10 +72,10 @@ ColorHexUtil = { ); }, - interpolateMultilinear: function (colors, t) { + interpolateMultilinear(colors, t) { return ColorRgbUtil.toHex( ColorRgbUtil.interpolateMultilinear( - colors.map(function (color) { + colors.map((color) => { return ColorHexUtil.toRgb(color); }), t @@ -83,18 +83,18 @@ ColorHexUtil = { ); }, - nearest: function (colorSearch, colors) { + nearest(colorSearch, colors) { return ColorRgbUtil.toHex( ColorRgbUtil.nearest( ColorHexUtil.toRgb(colorSearch), - colors.map(function (color) { + colors.map((color) => { return ColorHexUtil.toRgb(color); }) ) ); }, - toCmyk: function (color) { + toCmyk(color) { return ColorRgbUtil.toCmyk(ColorHexUtil.toRgb(color)); }, @@ -116,11 +116,11 @@ ColorHexUtil = { // ColorHexUtil.toRgb(color)); // }, - toRgb: function (color) { - var fromHex = HexUtil.decodeInt; - var toHex = HexUtil.encodeInt; + toRgb(color) { + const fromHex = HexUtil.decodeInt; + const toHex = HexUtil.encodeInt; - var hex; + let hex; if (TypeUtil.isNumber(color)) { hex = toHex(color); } else if (TypeUtil.isString(color)) { @@ -130,8 +130,8 @@ ColorHexUtil = { } hex = hex.toUpperCase(); - var rgb; - var comps; + let rgb; + let comps; switch (hex.length) { case 3: @@ -175,11 +175,11 @@ ColorHexUtil = { return rgb; }, - toString: function (color, prefix) { + toString(color, prefix) { return ColorRgbUtil.toHex(ColorHexUtil.toRgb(color), prefix); }, - toStringCSS: function (color) { + toStringCSS(color) { return ColorHexUtil.toString(color, '#'); }, }; diff --git a/src/utils/ColorRgbUtil.js b/src/utils/ColorRgbUtil.js index b95d860..8d253fa 100644 --- a/src/utils/ColorRgbUtil.js +++ b/src/utils/ColorRgbUtil.js @@ -4,14 +4,14 @@ /** global: MathUtil */ ColorRgbUtil = { - average: function (colors) { - var c; - var r = 0; - var g = 0; - var b = 0; - var a = 0; - var i = 0, - j = colors.length; + average(colors) { + let c; + let r = 0; + let g = 0; + let b = 0; + let a = 0; + let i = 0; + const j = colors.length; for (i, j; i < j; i++) { c = colors[i]; r += c.r; @@ -19,7 +19,7 @@ ColorRgbUtil = { b += c.b; a += isNaN(c.a) ? 1.0 : c.a; } - var round = Math.round; + const round = Math.round; r = round(r / j); g = round(g / j); b = round(b / j); @@ -27,25 +27,25 @@ ColorRgbUtil = { return { r: r, g: g, b: b, a: a }; }, - distance: function (colorA, colorB) { - var rDiff = colorA.r - colorB.r; - var gDiff = colorA.g - colorB.g; - var bDiff = colorA.b - colorB.b; - var aDiff = Math.round( + distance(colorA, colorB) { + const rDiff = colorA.r - colorB.r; + const gDiff = colorA.g - colorB.g; + const bDiff = colorA.b - colorB.b; + const aDiff = Math.round( ((isNaN(colorA.a) ? 1.0 : colorA.a) - (isNaN(colorB.a) ? 1.0 : colorB.a)) * 255 ); return Math.sqrt(rDiff * rDiff + gDiff * gDiff + bDiff * bDiff + aDiff * aDiff); }, - gradient: function (colors, steps) { - var colorsOutput = []; - var color; - var mlerp = ColorRgbUtil.interpolateMultilinear; - var t = 0.0; - var tInc = 1.0 / Math.max(1, steps - 1); - var tConstrain = MathUtil.constrain; - for (var i = 0; i < steps; i++) { + gradient(colors, steps) { + const colorsOutput = []; + let color; + const mlerp = ColorRgbUtil.interpolateMultilinear; + let t = 0.0; + const tInc = 1.0 / Math.max(1, steps - 1); + const tConstrain = MathUtil.constrain; + for (let i = 0; i < steps; i++) { t = i * tInc; t = tConstrain(t, 0.0, 1.0); color = mlerp(colors, t); @@ -54,21 +54,21 @@ ColorRgbUtil = { return colorsOutput; }, - gradientMatrix: function (colors, stepsX, stepsY) { + gradientMatrix(colors, stepsX, stepsY) { // colors: { top, topRight, right, bottomLeft, bottom, bottomRight, left, center }; // only 4 corners are required - var colorTopLeft = colors.topLeft; - var colorTop = colors.top; - var colorTopRight = colors.topRight; - var colorRight = colors.right; - var colorBottomLeft = colors.bottomLeft; - var colorBottom = colors.bottom; - var colorBottomRight = colors.bottomRight; - var colorLeft = colors.left; - var colorCenter = colors.center; + let colorTopLeft = colors.topLeft; + let colorTop = colors.top; + let colorTopRight = colors.topRight; + let colorRight = colors.right; + let colorBottomLeft = colors.bottomLeft; + let colorBottom = colors.bottom; + let colorBottomRight = colors.bottomRight; + let colorLeft = colors.left; + let colorCenter = colors.center; // var colorAvg = ColorRgbUtil.average; - var colorLerp = ColorRgbUtil.interpolateLinear; - var colorBerp = ColorRgbUtil.interpolateBilinear; + const colorLerp = ColorRgbUtil.interpolateLinear; + const colorBerp = ColorRgbUtil.interpolateBilinear; if (!colorTopLeft || !colorTopRight || !colorBottomLeft || !colorBottomRight) { return null; @@ -101,22 +101,22 @@ ColorRgbUtil = { ); } - var colorsTopLeft = [colorTopLeft, colorLeft, colorCenter, colorTop]; - var colorsBottomLeft = [colorLeft, colorBottomLeft, colorBottom, colorCenter]; - var colorsBottomRight = [ + const colorsTopLeft = [colorTopLeft, colorLeft, colorCenter, colorTop]; + const colorsBottomLeft = [colorLeft, colorBottomLeft, colorBottom, colorCenter]; + const colorsBottomRight = [ colorCenter, colorBottom, colorBottomRight, colorRight, ]; - var colorsTopRight = [colorTop, colorCenter, colorRight, colorTopRight]; - var colorsRegions = [ + const colorsTopRight = [colorTop, colorCenter, colorRight, colorTopRight]; + const colorsRegions = [ [colorsTopLeft, colorsTopRight], [colorsBottomLeft, colorsBottomRight], ]; - var colorsRegion; - var color; - var colorsMatrix = []; + let colorsRegion; + let color; + const colorsMatrix = []; // test // var gradientTop = ColorRgbUtil.gradient([colorTopLeft, colorTop, colorTopRight], stepsX); @@ -124,11 +124,11 @@ ColorRgbUtil = { // var gradientBottom = ColorRgbUtil.gradient([colorBottomLeft, colorBottom, colorBottomRight], stepsX); // var gradientRight = ColorRgbUtil.gradient([colorTopRight, colorRight, colorBottomRight], stepsY); - var tX, tXScaled; - var tY, tYScaled; - var tScalar = InterpolationUtil.scalar; + let tX, tXScaled; + let tY, tYScaled; + const tScalar = InterpolationUtil.scalar; - var x, y; + let x, y; for (y = 0; y < stepsY; y++) { colorsMatrix[y] = []; @@ -168,7 +168,7 @@ ColorRgbUtil = { return colorsMatrix; }, - interpolateBilinear: function ( + interpolateBilinear( colorTopLeft, colorBottomLeft, colorTopRight, @@ -176,7 +176,7 @@ ColorRgbUtil = { ty, tx ) { - var lerp = ColorRgbUtil.interpolateLinear; + const lerp = ColorRgbUtil.interpolateLinear; return lerp( lerp(colorTopLeft, colorBottomLeft, ty), lerp(colorTopRight, colorBottomRight, ty), @@ -184,9 +184,9 @@ ColorRgbUtil = { ); }, - interpolateLinear: function (colorFrom, colorTo, t) { - var lerp = InterpolationUtil.linear; - var round = Math.round; + interpolateLinear(colorFrom, colorTo, t) { + const lerp = InterpolationUtil.linear; + const round = Math.round; return { r: round(lerp(colorFrom.r, colorTo.r, t)), g: round(lerp(colorFrom.g, colorTo.g, t)), @@ -201,19 +201,19 @@ ColorRgbUtil = { }; }, - interpolateMultilinear: function (colors, t) { - var s = InterpolationUtil.scalar(colors.length - 1, t); - var i = s.index; + interpolateMultilinear(colors, t) { + const s = InterpolationUtil.scalar(colors.length - 1, t); + const i = s.index; return ColorRgbUtil.interpolateLinear(colors[i], colors[i + 1], s.t); }, - nearest: function (colorSearch, colors) { - var calcDistance = ColorRgbUtil.distance; - var tempDistance; - var nearestDistance = + nearest(colorSearch, colors) { + const calcDistance = ColorRgbUtil.distance; + let tempDistance; + let nearestDistance = calcDistance({ r: 0, g: 0, b: 0 }, { r: 255, g: 255, b: 255 }) + 1.0; - var nearestColor = null; - for (var i = 0, j = colors.length; i < j; i++) { + let nearestColor = null; + for (let i = 0, j = colors.length; i < j; i++) { tempDistance = calcDistance(colorSearch, colors[i]); if (tempDistance < nearestDistance) { nearestDistance = tempDistance; @@ -223,27 +223,27 @@ ColorRgbUtil = { return nearestColor; }, - toCmyk: function (color) { - var r = color.r / 255; - var g = color.g / 255; - var b = color.b / 255; + toCmyk(color) { + const r = color.r / 255; + const g = color.g / 255; + const b = color.b / 255; - var ir = 1.0 - r; - var ig = 1.0 - g; - var ib = 1.0 - b; - var k = Math.min(ir, ig, ib); - var ik = 1.0 - k; + const ir = 1.0 - r; + const ig = 1.0 - g; + const ib = 1.0 - b; + let k = Math.min(ir, ig, ib); + const ik = 1.0 - k; - var c = k < 1.0 ? (ir - k) / ik : 0; - var m = k < 1.0 ? (ig - k) / ik : 0; - var y = k < 1.0 ? (ib - k) / ik : 0; + let c = k < 1.0 ? (ir - k) / ik : 0; + let m = k < 1.0 ? (ig - k) / ik : 0; + let y = k < 1.0 ? (ib - k) / ik : 0; c *= 100; m *= 100; y *= 100; k *= 100; - var round = Math.round; + const round = Math.round; c = round(c); m = round(m); y = round(y); @@ -258,12 +258,12 @@ ColorRgbUtil = { // // http://cadik.posvete.cz/color_to_gray_evaluation/ // }, - toHex: function (color, prefix) { - var a = isNaN(color.a) ? null : color.a; - var r = isNaN(color.r) ? 0 : color.r; - var g = isNaN(color.g) ? 0 : color.g; - var b = isNaN(color.b) ? 0 : color.b; - var hex = HexUtil.encodeInt; + toHex(color, prefix) { + const a = isNaN(color.a) ? null : color.a; + const r = isNaN(color.r) ? 0 : color.r; + const g = isNaN(color.g) ? 0 : color.g; + const b = isNaN(color.b) ? 0 : color.b; + const hex = HexUtil.encodeInt; return String( (prefix || '#') + (a === null || a >= 1.0 ? '' : hex(a * 255)) + @@ -284,13 +284,13 @@ ColorRgbUtil = { // // https://gist.github.com/felipesabino/5066336/revisions // }, - toString: function (color) { + toString(color) { // prettier-ignore - return '{ r:' + String(color.r) + ', g:' + String(color.g) + ', b:' + String(color.b) + ', a:' + String(isNaN(color.a) ? 1.0 : color.a) + ' }'; + return `{ r:${String(color.r)}, g:${String(color.g)}, b:${String(color.b)}, a:${String(isNaN(color.a) ? 1.0 : color.a)} }`; }, - toStringCSS: function (color) { + toStringCSS(color) { // prettier-ignore - return 'rgba(' + String(color.r) + ', ' + String(color.g) + ', ' + String(color.b) + ', ' + String(isNaN(color.a) ? 1.0 : color.a) + ')'; + return `rgba(${String(color.r)}, ${String(color.g)}, ${String(color.b)}, ${String(isNaN(color.a) ? 1.0 : color.a)})`; }, }; diff --git a/src/utils/DateUtil.js b/src/utils/DateUtil.js index 1ec4a81..fc0af33 100644 --- a/src/utils/DateUtil.js +++ b/src/utils/DateUtil.js @@ -3,21 +3,21 @@ /** global: isDate */ DateUtil = { - clone: function (date) { + clone(date) { return new Date(date.getTime()); }, - constrain: function (date, a, b) { - var dateMin = DateUtil.min(a, b); - var dateMax = DateUtil.max(a, b); + constrain(date, a, b) { + const dateMin = DateUtil.min(a, b); + const dateMax = DateUtil.max(a, b); return DateUtil.min(DateUtil.max(date, dateMin), dateMax); }, - format: function (date, str) { + format(date, str) { // https://docs.djangoproject.com/en/4.0/ref/templates/builtins/#date - var replace = StringUtil.replace; - var padZeros = StringUtil.padZeros; - var months = [ + const replace = StringUtil.replace; + const padZeros = StringUtil.padZeros; + const months = [ 'January', 'February', 'March', @@ -31,7 +31,7 @@ DateUtil = { 'November', 'December', ]; - var days = [ + const days = [ 'Sunday', 'Monday', 'Tuesday', @@ -40,17 +40,17 @@ DateUtil = { 'Friday', 'Saturday', ]; - var dt = date.getDate(); - var year = date.getFullYear(); - var month = date.getMonth(); - var monthNum = month + 1; - var monthName = months[month]; - var day = date.getDay(); - var hours = date.getHours(); - var minutes = date.getMinutes(); - var seconds = date.getSeconds(); - var milliseconds = date.getMilliseconds(); - var placeholders = [ + const dt = date.getDate(); + const year = date.getFullYear(); + const month = date.getMonth(); + const monthNum = month + 1; + const monthName = months[month]; + const day = date.getDay(); + const hours = date.getHours(); + const minutes = date.getMinutes(); + const seconds = date.getSeconds(); + const milliseconds = date.getMilliseconds(); + const placeholders = [ ['YYYY', year], ['YY', padZeros(year, 4).substring(2, 4)], ['MM', padZeros(monthNum, 2)], @@ -69,11 +69,11 @@ DateUtil = { ['ZZ', days[day]], ['Z', days[day].substring(0, 3)], ]; - var placeholder, occurrence; - for (var i = 0, j = placeholders.length; i < j; i++) { + let placeholder, occurrence; + for (let i = 0, j = placeholders.length; i < j; i++) { placeholder = placeholders[i]; occurrence = placeholder[0]; - if (str.indexOf(occurrence) === -1) { + if (!str.includes(occurrence)) { continue; } str = replace(str, occurrence, placeholder[1]); @@ -91,15 +91,15 @@ DateUtil = { }, */ - identifier: function (date) { - var d = date || new Date(); - var year = d.getFullYear(); - var month = d.getMonth() + 1; // getMonth() is zero-based - var day = d.getDate(); - var hours = d.getHours(); - var minutes = d.getMinutes(); - var seconds = d.getSeconds(); - var milliseconds = d.getMilliseconds(); + identifier(date) { + const d = date || new Date(); + const year = d.getFullYear(); + const month = d.getMonth() + 1; // getMonth() is zero-based + const day = d.getDate(); + const hours = d.getHours(); + const minutes = d.getMinutes(); + const seconds = d.getSeconds(); + const milliseconds = d.getMilliseconds(); return ( String(year) + StringUtil.padZeros(month, 2) + @@ -111,42 +111,42 @@ DateUtil = { ); }, - isFuture: function (date, checkTime) { - var day = new Date(date.getTime()); - var now = new Date(); + isFuture(date, checkTime) { + const day = new Date(date.getTime()); + const now = new Date(); if (checkTime !== true) { day.setHours(0); day.setMinutes(0); day.setSeconds(0); day.setMilliseconds(0); } - var delta = now.getTime() - day.getTime(); + const delta = now.getTime() - day.getTime(); return delta < 0; }, - isPast: function (date, checkTime) { - var day = new Date(date.getTime()); - var now = new Date(); + isPast(date, checkTime) { + const day = new Date(date.getTime()); + const now = new Date(); if (checkTime !== true) { now.setHours(0); now.setMinutes(0); now.setSeconds(0); now.setMilliseconds(0); } - var delta = now.getTime() - day.getTime(); + const delta = now.getTime() - day.getTime(); return delta > 0; }, - max: function (date, other) { + max(date, other) { return date.getTime() > other.getTime() ? date : other; }, - min: function (date, other) { + min(date, other) { return date.getTime() <= other.getTime() ? date : other; }, - normalize: function (ms) { - var time = { + normalize(ms) { + const time = { milliseconds: ms % 1000, seconds: Math.floor(ms / 1000) % 60, minutes: Math.floor(ms / 1000 / 60) % 60, @@ -156,9 +156,9 @@ DateUtil = { return time; }, - parse: function (date) { - var timestamp; - var timestampIsValid = function (t) { + parse(date) { + let timestamp; + const timestampIsValid = (t) => { return ( TypeUtil.isNumber(t) && t >= 0 && @@ -185,13 +185,13 @@ DateUtil = { return null; }, - timestamp: function (date) { - var d = date || new Date(); + timestamp(date) { + const d = date || new Date(); return d.getTime(); }, - today: function () { - var d = new Date(); + today() { + const d = new Date(); d.setHours(0); d.setMinutes(0); d.setSeconds(0); @@ -199,24 +199,24 @@ DateUtil = { return d; }, - tomorrow: function () { - var d = DateUtil.today(); + tomorrow() { + const d = DateUtil.today(); d.setDate(d.getDate() + 1); return d; }, - yesterday: function () { - var d = DateUtil.today(); + yesterday() { + const d = DateUtil.today(); d.setDate(d.getDate() - 1); return d; }, - yyyymmdd: function (date, separator) { - var d = date || new Date(); - var year = d.getFullYear(); - var month = d.getMonth() + 1; // getMonth() is zero-based - var day = d.getDate(); - var sep = separator || ''; + yyyymmdd(date, separator) { + const d = date || new Date(); + const year = d.getFullYear(); + const month = d.getMonth() + 1; // getMonth() is zero-based + const day = d.getDate(); + const sep = separator || ''; // prettier-ignore return (String(year) + sep + StringUtil.padZeros(month, 2) + sep + diff --git a/src/utils/EaseUtil.js b/src/utils/EaseUtil.js index d445c03..6e7fce8 100644 --- a/src/utils/EaseUtil.js +++ b/src/utils/EaseUtil.js @@ -1,13 +1,13 @@ /** global: EaseUtil */ EaseUtil = { - backIn: function (t, s) { + backIn(t, s) { // s = overshoot = 1.70158 s = isNaN(s) ? 1.70158 : s; return t * t * ((s + 1.0) * t - s); }, - backInOut: function (t, s) { + backInOut(t, s) { // s = overshoot = 1.70158 s = isNaN(s) ? 1.70158 : s; t /= 0.5; @@ -20,14 +20,14 @@ EaseUtil = { return 0.5 * (t * t * ((s + 1.0) * t + s) + 2.0); }, - backOut: function (t, s) { + backOut(t, s) { // s = overshoot = 1.70158 s = isNaN(s) ? 1.70158 : s; t -= 1.0; return t * t * ((s + 1.0) * t + s) + 1.0; }, - bounceIn: function (t) { + bounceIn(t) { t = 1.0 - t; if (t < 1.0 / 2.75) { return 1.0 - 7.5625 * t * t; @@ -42,7 +42,7 @@ EaseUtil = { return 1.0 - (7.5625 * t * t + 0.984375); }, - bounceInOut: function (t) { + bounceInOut(t) { if (t < 0.5) { t = 1.0 - t; if (t < 1.0 / 2.75) { @@ -70,7 +70,7 @@ EaseUtil = { return 7.5625 * t * t + 0.984375; }, - bounceOut: function (t) { + bounceOut(t) { if (t < 1.0 / 2.75) { return 7.5625 * t * t; } else if (t < 2.0 / 2.75) { @@ -84,11 +84,11 @@ EaseUtil = { return 7.5625 * t * t + 0.984375; }, - circularIn: function (t) { + circularIn(t) { return -(Math.sqrt(1.0 - t * t) - 1.0); }, - circularInOut: function (t) { + circularInOut(t) { t /= 0.5; if (t < 1.0) { return -0.5 * (Math.sqrt(1.0 - t * t) - 1.0); @@ -97,16 +97,16 @@ EaseUtil = { return 0.5 * (Math.sqrt(1.0 - t * t) + 1.0); }, - circularOut: function (t) { + circularOut(t) { t -= 1.0; return Math.sqrt(1.0 - t * t); }, - cubicIn: function (t) { + cubicIn(t) { return t * t * t; }, - cubicInOut: function (t) { + cubicInOut(t) { t /= 0.5; if (t < 1.0) { return 0.5 * t * t * t; @@ -115,12 +115,12 @@ EaseUtil = { return 0.5 * (t * t * t + 2.0); }, - cubicOut: function (t) { + cubicOut(t) { t -= 1.0; return t * t * t + 1.0; }, - elasticIn: function (t, a, p) { + elasticIn(t, a, p) { // a = amplitude = 0.0, p = period = 0.3 if (t === 0.0) { return 0.0; @@ -130,7 +130,7 @@ EaseUtil = { } a = isNaN(a) ? 0.0 : a; p = isNaN(p) ? 0.3 : p; - var s; + let s; if (a < 1.0) { a = 1.0; s = p / 4.0; @@ -138,14 +138,10 @@ EaseUtil = { s = (p / (2.0 * Math.PI)) * Math.asin(1.0 / a); } t -= 1.0; - return -( - a * - Math.pow(2.0, 10.0 * t) * - Math.sin(((t - s) * (2.0 * Math.PI)) / p) - ); + return -(a * 2.0 ** (10.0 * t) * Math.sin(((t - s) * (2.0 * Math.PI)) / p)); }, - elasticInOut: function (t, a, p) { + elasticInOut(t, a, p) { // a = amplitude = 0.0, p = period = 0.3 if (t === 0.0) { return 0.0; @@ -156,7 +152,7 @@ EaseUtil = { } a = isNaN(a) ? 0.0 : a; p = isNaN(p) ? 0.3 : p; - var s; + let s; if (p === 0.3) { p *= 1.5; } @@ -170,22 +166,17 @@ EaseUtil = { t -= 1.0; return ( -0.5 * - (a * - Math.pow(2.0, 10.0 * t) * - Math.sin(((t - s) * (2.0 * Math.PI)) / p)) + (a * 2.0 ** (10.0 * t) * Math.sin(((t - s) * (2.0 * Math.PI)) / p)) ); } t -= 1.0; return ( - a * - Math.pow(2.0, -10.0 * t) * - Math.sin(((t - s) * (2.0 * Math.PI)) / p) * - 0.5 + + a * 2.0 ** (-10.0 * t) * Math.sin(((t - s) * (2.0 * Math.PI)) / p) * 0.5 + 1.0 ); }, - elasticOut: function (t, a, p) { + elasticOut(t, a, p) { // a = amplitude = 0.0, p = period = 0.3 if (t === 0.0) { return 0.0; @@ -195,27 +186,24 @@ EaseUtil = { } a = isNaN(a) ? 0.0 : a; p = isNaN(p) ? 0.3 : p; - var s; + let s; if (a < 1.0) { a = 1.0; s = p / 4.0; } else { s = (p / (2.0 * Math.PI)) * Math.asin(1.0 / a); } - return ( - a * Math.pow(2.0, -10.0 * t) * Math.sin(((t - s) * (2.0 * Math.PI)) / p) + - 1.0 - ); + return a * 2.0 ** (-10.0 * t) * Math.sin(((t - s) * (2.0 * Math.PI)) / p) + 1.0; }, - exponentialIn: function (t) { + exponentialIn(t) { if (t === 0.0) { return 0.0; } - return Math.pow(2.0, 10.0 * (t - 1.0)); + return 2.0 ** (10.0 * (t - 1.0)); }, - exponentialInOut: function (t) { + exponentialInOut(t) { if (t === 0.0) { return 0.0; } @@ -224,28 +212,28 @@ EaseUtil = { } t /= 0.5; if (t < 1.0) { - return 0.5 * Math.pow(2.0, 10.0 * (t - 1.0)); + return 0.5 * 2.0 ** (10.0 * (t - 1.0)); } t -= 1.0; - return 0.5 * (-Math.pow(2.0, -10.0 * t) + 2.0); + return 0.5 * (-(2.0 ** (-10.0 * t)) + 2.0); }, - exponentialOut: function (t) { + exponentialOut(t) { if (t === 1.0) { return t; } - return -Math.pow(2.0, -10.0 * t) + 1.0; + return -(2.0 ** (-10.0 * t)) + 1.0; }, - none: function (t) { + none(t) { return t; }, - quadraticIn: function (t) { + quadraticIn(t) { return t * t; }, - quadraticInOut: function (t) { + quadraticInOut(t) { t /= 0.5; if (t < 1.0) { return 0.5 * t * t; @@ -254,15 +242,15 @@ EaseUtil = { return -0.5 * (t * (t - 2.0) - 1.0); }, - quadraticOut: function (t) { + quadraticOut(t) { return -t * (t - 2.0); }, - quarticIn: function (t) { + quarticIn(t) { return t * t * t * t; }, - quarticInOut: function (t) { + quarticInOut(t) { t /= 0.5; if (t < 1.0) { return 0.5 * t * t * t * t; @@ -271,16 +259,16 @@ EaseUtil = { return -0.5 * (t * t * t * t - 2.0); }, - quarticOut: function (t) { + quarticOut(t) { t -= 1.0; return -(t * t * t * t - 1.0); }, - quinticIn: function (t) { + quinticIn(t) { return t * t * t * t * t; }, - quinticInOut: function (t) { + quinticInOut(t) { t /= 0.5; if (t < 1.0) { return 0.5 * t * t * t * t * t; @@ -289,16 +277,16 @@ EaseUtil = { return 0.5 * (t * t * t * t * t + 2.0); }, - quinticOut: function (t) { + quinticOut(t) { t -= 1.0; return t * t * t * t * t + 1.0; }, - sexticIn: function (t) { + sexticIn(t) { return t * t * t * t * t * t; }, - sexticInOut: function (t) { + sexticInOut(t) { t /= 0.5; if (t < 1.0) { return 0.5 * t * t * t * t * t * t; @@ -307,54 +295,54 @@ EaseUtil = { return -0.5 * (t * t * t * t * t * t - 2.0); }, - sexticOut: function (t) { + sexticOut(t) { t -= 1.0; return -(t * t * t * t * t * t - 1.0); }, - sineIn: function (t) { + sineIn(t) { return -Math.cos(t * (Math.PI / 2.0)) + 1.0; }, - sineInOut: function (t) { + sineInOut(t) { return -0.5 * (Math.cos(Math.PI * t) - 1.0); }, - sineOut: function (t) { + sineOut(t) { return Math.sin(t * (Math.PI / 2.0)); }, - waveCosine: function (t, f, a, i) { + waveCosine(t, f, a, i) { // t, f = frequency = 1.0, a = absolute = false, i = inverse = false f = isNaN(f) ? 1.0 : f; a = a === true ? true : false; i = i === true ? true : false; - var w = Math.cos(Math.PI * t * f); + let w = Math.cos(Math.PI * t * f); w = a ? Math.abs(w) : w; w = i ? 1.0 - w : w; return w; }, - waveSawtooth: function (t, f, a, i) { + waveSawtooth(t, f, a, i) { // t, f = frequency = 1.0, a = absolute = false, i = inverse = false f = isNaN(f) ? 1.0 : f; a = a === true ? true : false; i = i === true ? true : false; - var w = (t * f) % 1.0; + let w = (t * f) % 1.0; w = a ? Math.abs(w) : w; w = i ? 1.0 - w : w; return w; }, - waveSine: function (t, f, a, i) { + waveSine(t, f, a, i) { // t, f = frequency = 1.0, a = absolute = false, i = inverse = false f = isNaN(f) ? 1.0 : f; a = a === true ? true : false; i = i === true ? true : false; - var w = Math.sin(Math.PI * t * f); + let w = Math.sin(Math.PI * t * f); w = a ? Math.abs(w) : w; w = i ? 1.0 - w : w; return w; diff --git a/src/utils/FunctionUtil.js b/src/utils/FunctionUtil.js index ade43c0..6c8c548 100644 --- a/src/utils/FunctionUtil.js +++ b/src/utils/FunctionUtil.js @@ -2,47 +2,47 @@ /** global: TypeUtil */ FunctionUtil = { - args: function (argumentsObj, skipCount) { + args(argumentsObj, skipCount) { return [].slice.call(argumentsObj, skipCount || 0); }, - attempt: function (func, scope) { + attempt(func, scope) { try { - var args = FunctionUtil.args(arguments); - var result = FunctionUtil.call.apply(null, args); + const args = FunctionUtil.args(arguments); + const result = FunctionUtil.call.apply(null, args); return result; } catch (e) { return e; } }, - bind: function (func, scope) { - var argsBinded = FunctionUtil.args(arguments); + bind(func, scope) { + const argsBinded = FunctionUtil.args(arguments); return function () { - var args = FunctionUtil.args(arguments); - var result = FunctionUtil.call.apply(null, argsBinded.concat(args)); + const args = FunctionUtil.args(arguments); + const result = FunctionUtil.call.apply(null, argsBinded.concat(args)); return result; }; }, - call: function (func, scope) { + call(func, scope) { if (TypeUtil.isString(func)) { func = scope[func]; } - var args = FunctionUtil.args(arguments, 2); - var result = func.apply(scope, args); + const args = FunctionUtil.args(arguments, 2); + const result = func.apply(scope, args); return result; }, - debounce: function (milliseconds, func, scope) { - var timeoutId; + debounce(milliseconds, func, scope) { + let timeoutId; return function () { if (timeoutId) { clearTimeout(timeoutId); timeoutId = null; } - var args = arguments; - timeoutId = setTimeout(function () { + const args = arguments; + timeoutId = setTimeout(() => { func.apply(scope, args); }, milliseconds); }; @@ -58,12 +58,12 @@ FunctionUtil = { */ }, - delay: function (milliseconds, func, scope) { - var args = FunctionUtil.args(arguments, 1); - var wrapper = FunctionUtil.bind.apply(null, args); - var timeoutId = setTimeout(wrapper, milliseconds); + delay(milliseconds, func, scope) { + const args = FunctionUtil.args(arguments, 1); + const wrapper = FunctionUtil.bind.apply(null, args); + const timeoutId = setTimeout(wrapper, milliseconds); return { - cancel: function () { + cancel() { clearTimeout(timeoutId); }, func: wrapper, @@ -71,12 +71,12 @@ FunctionUtil = { }; }, - memoize: function (func, scope) { - var cache = {}; + memoize(func, scope) { + const cache = {}; return function () { - var args = FunctionUtil.args(arguments); - var key = String(args); + const args = FunctionUtil.args(arguments); + const key = String(args); if (!(key in cache)) { cache[key] = FunctionUtil.call.apply(null, [func, scope].concat(args)); } @@ -84,16 +84,16 @@ FunctionUtil = { }; }, - noop: function () { + noop() { return true; }, - repeat: function (milliseconds, func, scope) { - var args = FunctionUtil.args(arguments, 1); - var wrapper = FunctionUtil.bind.apply(null, args); - var intervalId = setInterval(wrapper, milliseconds); + repeat(milliseconds, func, scope) { + const args = FunctionUtil.args(arguments, 1); + const wrapper = FunctionUtil.bind.apply(null, args); + const intervalId = setInterval(wrapper, milliseconds); return { - cancel: function () { + cancel() { clearInterval(intervalId); }, func: wrapper, @@ -101,24 +101,24 @@ FunctionUtil = { }; }, - throttle: function (milliseconds, func, scope) { - var timeoutId; - return function () { + throttle(milliseconds, func, scope) { + let timeoutId; + return (...args) => { if (timeoutId) { return; } - func.apply(scope, arguments); - timeoutId = setTimeout(function () { + func.apply(scope, args); + timeoutId = setTimeout(() => { clearTimeout(timeoutId); timeoutId = null; }, milliseconds); }; }, - until: function (milliseconds, func, scope) { - var args = FunctionUtil.args(arguments, 1); - var wrapper = FunctionUtil.bind.apply(null, args); - var interval = FunctionUtil.repeat(milliseconds, function () { + until(milliseconds, func, scope) { + const args = FunctionUtil.args(arguments, 1); + const wrapper = FunctionUtil.bind.apply(null, args); + const interval = FunctionUtil.repeat(milliseconds, () => { if (wrapper() === false) { interval.cancel(); } @@ -126,13 +126,13 @@ FunctionUtil = { return interval; }, - validate: function (argumentsObj) { + validate(argumentsObj) { // FunctionUtil.validate(arguments, 'number', 'string', ['string', 'undefined']); - var args = FunctionUtil.args(argumentsObj); - var types = FunctionUtil.args(arguments, 1); + const args = FunctionUtil.args(argumentsObj); + const types = FunctionUtil.args(arguments, 1); - var i, j, k, n; + let i, j, k, n; for (i = 0, j = types.length; i < j; i++) { if (!TypeUtil.isArray(types[i])) { @@ -140,35 +140,35 @@ FunctionUtil = { } } - var argsExpectedCount = types.length; + let argsExpectedCount = types.length; while (argsExpectedCount > 0) { - if (types[argsExpectedCount - 1].indexOf('undefined') === -1) { + if (!types[argsExpectedCount - 1].includes('undefined')) { break; } argsExpectedCount--; } if (args.length < argsExpectedCount) { // prettier-ignore - throw new TypeError('invalid arguments count: received ' + args.length + ', expected ' + argsExpectedCount + ' arguments.'); + throw new TypeError(`invalid arguments count: received ${args.length}, expected ${argsExpectedCount} arguments.`); } for (i = 0, j = types.length; i < j; i++) { for (k = 0, n = types[i].length; k < n; k++) { if (!TypeUtil.isType(types[i][k])) { // prettier-ignore - throw new TypeError('invalid argument: expected type "' + String(types[i][k]) + '" is not a valid type.'); + throw new TypeError(`invalid argument: expected type "${String(types[i][k])}" is not a valid type.`); } } } - var arg, argType, argTypes; + let arg, argType, argTypes; for (i = 0, j = args.length; i < j; i++) { arg = args[i]; argType = TypeUtil.of(arg); argTypes = types[Math.min(i, types.length - 1)]; - if (argTypes.indexOf(argType) === -1) { + if (!argTypes.includes(argType)) { // prettier-ignore - throw new TypeError('invalid argument: type of argument[' + i + '] is "' + argType + '", expected "' + argTypes.join('" or "') + '".'); + throw new TypeError(`invalid argument: type of argument[${i}] is "${argType}", expected "${argTypes.join('" or "')}".`); } } }, diff --git a/src/utils/HexUtil.js b/src/utils/HexUtil.js index 6134026..71cedcc 100644 --- a/src/utils/HexUtil.js +++ b/src/utils/HexUtil.js @@ -1,12 +1,12 @@ /** global: HexUtil */ HexUtil = { - decodeInt: function (s) { + decodeInt(s) { return parseInt(s, 16); }, - encodeInt: function (n) { - var hex = Math.round(n).toString(16).toUpperCase(); - return hex.length === 1 ? '0' + hex : hex; + encodeInt(n) { + const hex = Math.round(n).toString(16).toUpperCase(); + return hex.length === 1 ? `0${hex}` : hex; }, }; diff --git a/src/utils/InterpolationUtil.js b/src/utils/InterpolationUtil.js index d0d1bbd..66b052e 100644 --- a/src/utils/InterpolationUtil.js +++ b/src/utils/InterpolationUtil.js @@ -2,31 +2,31 @@ /** global: InterpolationUtil */ InterpolationUtil = { - bilinear: function (a, b, c, d, u, v) { - var f = InterpolationUtil.linear; + bilinear(a, b, c, d, u, v) { + const f = InterpolationUtil.linear; return f(f(a, b, u), f(c, d, u), v); }, - linear: function (a, b, t) { + linear(a, b, t) { // return (a + ((b - a) * t)); return a * (1.0 - t) + b * t; }, - multilinear: function (list, t) { - var s = InterpolationUtil.scalar(list.length - 1, t); - var i = s.index; + multilinear(list, t) { + const s = InterpolationUtil.scalar(list.length - 1, t); + const i = s.index; return InterpolationUtil.linear(list[i], list[i + 1], s.t); }, - scalar: function (parts, t) { - var tScaled = t * parts; - var tScaledIndex = Math.floor(tScaled); + scalar(parts, t) { + const tScaled = t * parts; + const tScaledIndex = Math.floor(tScaled); - var tMinIndex = 0; - var tMaxIndex = parts - 1; + const tMinIndex = 0; + const tMaxIndex = parts - 1; - var tIndex = MathUtil.constrain(tScaledIndex, tMinIndex, tMaxIndex); - var tReduced = tScaled - tIndex; + const tIndex = MathUtil.constrain(tScaledIndex, tMinIndex, tMaxIndex); + const tReduced = tScaled - tIndex; return { index: tIndex, t: tReduced }; }, }; diff --git a/src/utils/JSONUtil.js b/src/utils/JSONUtil.js index 9b38e48..91b830f 100644 --- a/src/utils/JSONUtil.js +++ b/src/utils/JSONUtil.js @@ -1,8 +1,8 @@ /** global: JSONUtil */ JSONUtil = { - decode: function (str) { - var output = ''; + decode(str) { + let output = ''; try { output = JSON.parse(str); } catch (error) { @@ -13,7 +13,7 @@ JSONUtil = { return output; }, - encode: function (obj) { + encode(obj) { return JSON.stringify(obj); }, }; diff --git a/src/utils/MathUtil.js b/src/utils/MathUtil.js index 2c27eb5..17b60c0 100644 --- a/src/utils/MathUtil.js +++ b/src/utils/MathUtil.js @@ -5,22 +5,22 @@ /** global: TypeUtil */ MathUtil = { - average: function (values) { + average(values) { return MathUtil.summation(values) / values.length; }, - constrain: function (n, a, b) { + constrain(n, a, b) { return Math.min(Math.max(n, Math.min(a, b)), Math.max(a, b)); }, - cycle: function (n, len, shift) { + cycle(n, len, shift) { if (!TypeUtil.isNumber(shift)) { shift = 0; } return ((((n - shift) % len) + len) % len) + shift; }, - equals: function (a, b, tolerance) { + equals(a, b, tolerance) { if (!TypeUtil.isNumber(tolerance)) { tolerance = 0.0000000001; } else if (tolerance > 0.0) { @@ -29,26 +29,26 @@ MathUtil = { return Math.abs(a - b) <= tolerance; }, - euclideanDistance: function (a, b) { + euclideanDistance(a, b) { // https://en.wikipedia.org/wiki/Euclidean_distance#Higher_dimensions return Math.sqrt( MathUtil.summation( - a.map(function (value, index) { - return Math.pow(Math.abs(value - b[index]), 2); + a.map((value, index) => { + return Math.abs(value - b[index]) ** 2; }) ) ); }, - factorial: function (n) { - var f = 1; - for (var i = f; i <= n; i++) { + factorial(n) { + let f = 1; + for (let i = f; i <= n; i++) { f *= i; } return f; }, - gcd: function (a, b) { + gcd(a, b) { if (a === b) { return a; } @@ -62,29 +62,29 @@ MathUtil = { interpolation: InterpolationUtil, - lcm: function (a, b) { + lcm(a, b) { return (a * b) / MathUtil.gcd(a, b); }, - lerp: function (a, b, t) { + lerp(a, b, t) { return InterpolationUtil.linear(a, b, t); }, - map: function (n, a, b, c, d) { + map(n, a, b, c, d) { return InterpolationUtil.linear(c, d, MathUtil.normalize(n, a, b)); }, - nearest: function (n, a, b) { + nearest(n, a, b) { return Math.abs(n - a) <= Math.abs(n - b) ? a : b; }, - normalize: function (n, a, b) { + normalize(n, a, b) { return (n - a) / (b - a); }, - proportion: function (a, b, x, y) { - var args = FunctionUtil.args(arguments); - var argsOk = ArrayUtil.clean(args); + proportion(a, b, x, y) { + const args = FunctionUtil.args(arguments); + const argsOk = ArrayUtil.clean(args); if (argsOk.length !== 3) { return NaN; } @@ -102,17 +102,17 @@ MathUtil = { return NaN; }, - roundDecimals: function (n, decimalsPlaces) { + roundDecimals(n, decimalsPlaces) { return Number(n.toFixed(decimalsPlaces || 2)); }, - roundToMultiple: function (n, multiplier) { + roundToMultiple(n, multiplier) { return Math.round(n / multiplier) * multiplier; }, - roundToNearest: function (n, values) { - var a = ArrayUtil.sort(values.concat()); - var i = 0, + roundToNearest(n, values) { + const a = ArrayUtil.sort(values.concat()); + let i = 0, j = 0, k = a.length; if (k === 0) { @@ -133,17 +133,17 @@ MathUtil = { return MathUtil.nearest(n, a[i], a[j]); }, - roundToPower: function (n, base) { - return Math.pow(base, Math.round(Math.log(n) / Math.log(base))); + roundToPower(n, base) { + return base ** Math.round(Math.log(n) / Math.log(base)); }, - sign: function (n) { + sign(n) { return n >= 0.0 ? 1 : -1; }, - summation: function (values) { - var s = 0.0; - for (var i = 0, j = values.length; i < j; i++) { + summation(values) { + let s = 0.0; + for (let i = 0, j = values.length; i < j; i++) { s += values[i]; } return s; diff --git a/src/utils/NumberUtil.js b/src/utils/NumberUtil.js index 5a8284d..a515c95 100644 --- a/src/utils/NumberUtil.js +++ b/src/utils/NumberUtil.js @@ -1,31 +1,31 @@ /** global: NumberUtil */ NumberUtil = { - isBetween: function (n, min, max) { + isBetween(n, min, max) { return n >= min && n <= max; }, - isEven: function (n) { + isEven(n) { return n % 2.0 === 0.0 && !NumberUtil.isFloat(n); }, - isFloat: function (n) { + isFloat(n) { return n % 1 !== 0; }, - isNegative: function (n) { + isNegative(n) { return n < 0.0; }, - isOdd: function (n) { + isOdd(n) { return n % 2.0 !== 0.0 && !NumberUtil.isFloat(n); }, - isPositive: function (n) { + isPositive(n) { return n >= 0.0; }, - isPrime: function (n) { + isPrime(n) { if (typeof n !== 'number' || Number.isNaN(n) || NumberUtil.isFloat(n)) { return false; } @@ -38,7 +38,7 @@ NumberUtil = { if (n % 2 === 0 || n % 3 === 0) { return false; } - for (var i = 5; i * i <= n; i += 6) { + for (let i = 5; i * i <= n; i += 6) { if (n % i === 0 || n % (i + 2) === 0) { return false; } diff --git a/src/utils/ObjectUtil.js b/src/utils/ObjectUtil.js index 2ded3cd..154f636 100644 --- a/src/utils/ObjectUtil.js +++ b/src/utils/ObjectUtil.js @@ -10,9 +10,9 @@ /** global: URLUtil */ ObjectUtil = { - assign: function (obj, other) { - var objs = [other].concat(FunctionUtil.args(arguments, 2)); - var i, j, k; + assign(obj, other) { + const objs = [other].concat(FunctionUtil.args(arguments, 2)); + let i, j, k; for (i = 0, j = objs.length; i < j; i++) { for (k in objs[i]) { obj[k] = objs[i][k]; @@ -21,10 +21,10 @@ ObjectUtil = { return obj; }, - clean: function (obj, hard) { - var keys = ObjectUtil.keys(obj); - var key, val; - for (var i = 0, j = keys.length; i < j; i++) { + clean(obj, hard) { + const keys = ObjectUtil.keys(obj); + let key, val; + for (let i = 0, j = keys.length; i < j; i++) { key = keys[i]; val = obj[key]; if (hard === true) { @@ -56,11 +56,11 @@ ObjectUtil = { return obj; }, - clone: function (obj) { - var cln = {}; - var keys = ObjectUtil.keys(obj); - var key, val; - for (var i = 0, j = keys.length; i < j; i++) { + clone(obj) { + const cln = {}; + const keys = ObjectUtil.keys(obj); + let key, val; + for (let i = 0, j = keys.length; i < j; i++) { key = keys[i]; val = obj[key]; switch (TypeUtil.of(val)) { @@ -81,52 +81,52 @@ ObjectUtil = { return cln; }, - decodeBase64: function (str) { + decodeBase64(str) { return JSONUtil.decode(Base64Util.decode(str)); }, - decodeJSON: function (str) { + decodeJSON(str) { return JSONUtil.decode(str); }, - decodeParameters: function (str) { - return URLUtil.getParametersDict('?' + str); + decodeParameters(str) { + return URLUtil.getParametersDict(`?${str}`); }, - encodeBase64: function (obj) { + encodeBase64(obj) { return Base64Util.encode(JSONUtil.encode(obj)); }, - encodeJSON: function (obj) { + encodeJSON(obj) { return JSONUtil.encode(obj); }, - encodeParameters: function (obj, keysFilter) { - var objClean = ObjectUtil.clean(ObjectUtil.clone(obj), true); - var keys = TypeUtil.isArray(keysFilter) + encodeParameters(obj, keysFilter) { + const objClean = ObjectUtil.clean(ObjectUtil.clone(obj), true); + const keys = TypeUtil.isArray(keysFilter) ? keysFilter : ObjectUtil.keys(obj, true); - var key, - val, - keyval = []; + let key; + let val; + const keyval = []; - for (var i = 0, j = keys.length; i < j; i++) { + for (let i = 0, j = keys.length; i < j; i++) { key = keys[i]; if (key in objClean) { val = objClean[key]; - keyval.push(key + '=' + encodeURIComponent(val)); + keyval.push(`${key}=${encodeURIComponent(val)}`); } } return keyval.join('&'); }, - equals: function (obj1, obj2) { + equals(obj1, obj2) { if (obj1 === obj2 || ObjectUtil.is(obj1, obj2)) { return true; } - var key, val1, val2, type1, type2; + let key, val1, val2, type1, type2; type1 = TypeUtil.of(obj1); type2 = TypeUtil.of(obj2); @@ -172,10 +172,10 @@ ObjectUtil = { return true; }, - is: function (obj1, obj2) { + is(obj1, obj2) { // https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Object/is if (!Object.is) { - Object.is = function (x, y) { + Object.is = (x, y) => { // Algoritmo SameValue if (x === y) { // Steps 1-5, 7-10 @@ -191,11 +191,11 @@ ObjectUtil = { }, keypath: { - get: function (obj, path, defaultValue) { - var keys = path.split('.'); - var key; - var cursor = obj; - for (var i = 0, j = keys.length; i < j; i++) { + get(obj, path, defaultValue) { + const keys = path.split('.'); + let key; + let cursor = obj; + for (let i = 0, j = keys.length; i < j; i++) { key = keys[i]; try { cursor = cursor[key]; @@ -206,11 +206,11 @@ ObjectUtil = { return TypeUtil.isUndefined(cursor) ? defaultValue : cursor; }, - set: function (obj, path, value) { - var keys = path.split('.'); - var key; - var cursor = obj; - for (var i = 0, j = keys.length; i < j; i++) { + set(obj, path, value) { + const keys = path.split('.'); + let key; + let cursor = obj; + for (let i = 0, j = keys.length; i < j; i++) { key = keys[i]; if (key === '__proto__' || key === 'constructor') { break; @@ -227,35 +227,45 @@ ObjectUtil = { }, }, - keys: function (obj, sorted) { - var k = Object.keys(obj); + keys(obj, sorted) { + const k = Object.keys(obj); if (sorted === true) { k.sort(); } return k; }, - length: function (obj) { + length(obj) { return ObjectUtil.keys(obj).length; }, - map: function (obj, func) { - var m = {}; - ObjectUtil.keys(obj).forEach(function (k) { + map(obj, func) { + const m = {}; + ObjectUtil.keys(obj).forEach((k) => { m[k] = func.call(null, obj[k], k, obj); }); return m; }, - merge: function (obj1, obj2) { - var objs = [{}, obj1, obj2].concat(FunctionUtil.args(arguments, 2)); - var obj = ObjectUtil.assign.apply(null, objs); + merge(obj1, obj2) { + const objs = [{}, obj1, obj2].concat(FunctionUtil.args(arguments, 2)); + const obj = ObjectUtil.assign.apply(null, objs); return obj; }, - search: function (objs, filter) { + search(objs, filter) { // prettier-ignore - var results = [], i, j, k, m, obj, res, keys, key, val; + const results = []; + + let i; + let j; + let k; + let m; + let obj; + let res; + let keys; + let key; + let val; for (i = 0, j = objs.length; i < j; i++) { obj = objs[i]; res = obj; @@ -274,10 +284,10 @@ ObjectUtil = { return results; }, - values: function (obj, sorted) { - var keys = ObjectUtil.keys(obj, sorted); - var vals = []; - for (var i = 0, j = keys.length; i < j; i++) { + values(obj, sorted) { + const keys = ObjectUtil.keys(obj, sorted); + const vals = []; + for (let i = 0, j = keys.length; i < j; i++) { vals.push(obj[keys[i]]); } return vals; diff --git a/src/utils/PointUtil.js b/src/utils/PointUtil.js index f24f6bb..3e9bafd 100644 --- a/src/utils/PointUtil.js +++ b/src/utils/PointUtil.js @@ -4,78 +4,78 @@ /** global: TrigoUtil */ PointUtil = { - add: function (a, b) { + add(a, b) { return { x: a.x + b.x, y: a.y + b.y, }; }, - angle: function (a, b) { - var angle = TrigoUtil.angleDeg(b.y - a.y, b.x - a.x); + angle(a, b) { + const angle = TrigoUtil.angleDeg(b.y - a.y, b.x - a.x); return TrigoUtil.cycleDeg(angle); }, - cross: function (a, b) { + cross(a, b) { // z coordinate of the cross product; x and y coordinates are zero return a.x * b.y - a.y * b.x; }, - distance: function (a, b) { - var dX = b.x - a.x; - var dY = b.y - a.y; + distance(a, b) { + const dX = b.x - a.x; + const dY = b.y - a.y; return Math.sqrt(dX * dX + dY * dY); }, - dot: function (a, b) { + dot(a, b) { return a.x * b.x + a.y * b.y; }, - equals: function (a, b, tolerance) { - var f = MathUtil.equals; + equals(a, b, tolerance) { + const f = MathUtil.equals; return f(a.x, b.x, tolerance) && f(a.y, b.y, tolerance); }, - interpolate: function (a, b, t) { - var f = InterpolationUtil.linear; + interpolate(a, b, t) { + const f = InterpolationUtil.linear; return { x: f(a.x, b.x, t), y: f(a.y, b.y, t), }; }, - length: function (p) { + length(p) { return PointUtil.distance(p, { x: 0, y: 0 }); }, - magnitude: function (p) { + magnitude(p) { return PointUtil.length(p); }, - project: function (p, distance, angle) { + project(p, distance, angle) { return { x: p.x + distance * TrigoUtil.cosDeg(angle), y: p.y + distance * TrigoUtil.sinDeg(angle), }; }, - rect: function (points) { - var point, - pointsX = [], - pointsY = []; + rect(points) { + let point; + const pointsX = []; + const pointsY = []; - for (var i = 0, j = points.length; i < j; i++) { + for (let i = 0, j = points.length; i < j; i++) { point = points[i]; pointsX.push(point.x); pointsY.push(point.y); } - var minF = Math.min; - var minX = minF.apply(null, pointsX); - var minY = minF.apply(null, pointsY); - var maxF = Math.max; - var maxX = maxF.apply(null, pointsX); - var maxY = maxF.apply(null, pointsY); + const minF = Math.min; + const minX = minF(...pointsX); + const minY = minF(...pointsY); + const maxF = Math.max; + const maxX = maxF(...pointsX); + const maxY = maxF(...pointsY); return { topLeft: { x: minX, y: minY }, @@ -85,34 +85,34 @@ PointUtil = { }; }, - rotate: function (p, angle, pivot) { - var pointPivot = pivot || { x: 0.0, y: 0.0 }; - var pointRel = PointUtil.subtract(p, pointPivot); - var angleCos = TrigoUtil.cosDeg(angle); - var angleSin = TrigoUtil.sinDeg(angle); - var pointRot = { + rotate(p, angle, pivot) { + const pointPivot = pivot || { x: 0.0, y: 0.0 }; + const pointRel = PointUtil.subtract(p, pointPivot); + const angleCos = TrigoUtil.cosDeg(angle); + const angleSin = TrigoUtil.sinDeg(angle); + const pointRot = { x: pointRel.x * angleCos - pointRel.y * angleSin, y: pointRel.x * angleSin + pointRel.y * angleCos, }; - var pointAbs = PointUtil.add(pointRot, pointPivot); + const pointAbs = PointUtil.add(pointRot, pointPivot); return pointAbs; }, - scale: function (p, amount) { + scale(p, amount) { return { x: p.x * amount, y: p.y * amount, }; }, - subtract: function (a, b) { + subtract(a, b) { return { x: a.x - b.x, y: a.y - b.y, }; }, - translate: function (p, x, y) { + translate(p, x, y) { return { x: p.x + x, y: p.y + y, diff --git a/src/utils/RandomUtil.js b/src/utils/RandomUtil.js index dc5975f..402e532 100644 --- a/src/utils/RandomUtil.js +++ b/src/utils/RandomUtil.js @@ -2,58 +2,59 @@ /** global: RandomUtil */ RandomUtil = { - argument: function () { - var args = FunctionUtil.args(arguments); + argument() { + const args = FunctionUtil.args(arguments); return RandomUtil.element(args); }, - bit: function (chance) { + bit(chance) { return RandomUtil.boolean(chance) ? 1 : 0; }, - boolean: function (chance) { + boolean(chance) { return Boolean(Math.random() < (isNaN(chance) ? 0.5 : chance)); }, - color: function () { + color() { return RandomUtil.integer(0, 0xffffff); }, - element: function (array) { + element(array) { return array[RandomUtil.index(array)]; }, - float: function (min, max) { + float(min, max) { return min + Math.random() * (max - min); }, - index: function (array) { + index(array) { return RandomUtil.integer(0, array.length - 1); }, - integer: function (min, max) { + integer(min, max) { return Math.floor(Math.round(RandomUtil.float(min - 0.5, max + 0.5))); }, - map: function (func, count) { - var m = []; - for (var i = 0; i < count; i++) { + map(func, count) { + const m = []; + for (let i = 0; i < count; i++) { m.push(func(i)); } return m; }, - sign: function (chance) { + sign(chance) { return RandomUtil.boolean(chance) ? 1 : -1; }, - string: function (length, charset) { - // prettier-ignore - charset = (charset || 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!?@#$%^&*(-_=+).,;'); - var c = charset.split(''); - var r = RandomUtil.element; - var i = 0; - var s = ''; + string( + length, + charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!?@#$%^&*(-_=+).,;' + ) { + const c = charset.split(''); + const r = RandomUtil.element; + let i = 0; + let s = ''; while (i < length) { s += r(c); i++; diff --git a/src/utils/StringUtil.js b/src/utils/StringUtil.js index a440e6d..f8370cc 100644 --- a/src/utils/StringUtil.js +++ b/src/utils/StringUtil.js @@ -4,31 +4,31 @@ /** global: TypeUtil */ StringUtil = { - contains: function (str, occurrence) { - return Boolean(str.indexOf(occurrence) > -1); + contains(str, occurrence) { + return Boolean(str.includes(occurrence)); }, - endsWith: function (str, search) { + endsWith(str, search) { // if (String.prototype.endsWith) { // return str.endsWith(search); // } return str.substring(str.length - search.length, str.length) === search; }, - icontains: function (str, occurrence) { + icontains(str, occurrence) { return StringUtil.contains(str.toLowerCase(), occurrence.toLowerCase()); }, - levenshteinDistance: function (a, b) { + levenshteinDistance(a, b) { // taken from GitHub here: // https://gist.github.com/andrei-m/982927#gistcomment-586471 - var m = []; - for (var i = 0; i <= b.length; i++) { + const m = []; + for (let i = 0; i <= b.length; i++) { m[i] = [i]; if (i === 0) { continue; } - for (var j = 0; j <= a.length; j++) { + for (let j = 0; j <= a.length; j++) { m[0][j] = j; if (j === 0) { continue; @@ -46,15 +46,15 @@ StringUtil = { return m[b.length][a.length]; }, - levenshteinSimilarity: function (a, b) { - var d = StringUtil.levenshteinDistance(a, b); - var l = Math.max(a.length, b.length); + levenshteinSimilarity(a, b) { + const d = StringUtil.levenshteinDistance(a, b); + const l = Math.max(a.length, b.length); return l === 0 ? 1.0 : 1.0 - d / l; }, - padLeft: function (str, len, char) { - var i = str.length; + padLeft(str, len, char) { + let i = str.length; while (i < len) { str = char + str; i++; @@ -62,8 +62,8 @@ StringUtil = { return str; }, - padRight: function (str, len, char) { - var i = str.length; + padRight(str, len, char) { + let i = str.length; while (i < len) { str = str + char; i++; @@ -71,20 +71,17 @@ StringUtil = { return str; }, - padZeros: function (str, len) { + padZeros(str, len) { return StringUtil.padLeft(String(str), len, '0'); }, - render: function (str, data, placeholderStart, placeholderEnd) { - var pattern = - (placeholderStart || '{{') + - '[\\s]*([a-zA-Z0-9\\-\\_]+){1}[\\s]*' + - (placeholderEnd || '}}'); - var regex = new RegExp(pattern, 'g'); - var matches = Array.from(str.matchAll(regex)); - var occurrence, replacement; + render(str, data, placeholderStart, placeholderEnd) { + const pattern = `${placeholderStart || '{{'}[\\s]*([a-zA-Z0-9\\-\\_]+){1}[\\s]*${placeholderEnd || '}}'}`; + const regex = new RegExp(pattern, 'g'); + const matches = Array.from(str.matchAll(regex)); + let occurrence, replacement; data = data || {}; - matches.forEach(function (match) { + matches.forEach((match) => { occurrence = match[0]; replacement = data[match[1]]; if (TypeUtil.isNone(replacement)) { @@ -95,29 +92,29 @@ StringUtil = { return str; }, - replace: function (str, occurrence, replacement, caseSensitive) { - var pattern = occurrence.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); - var flags = caseSensitive === false ? 'gi' : 'g'; - var regex = new RegExp(pattern, flags); + replace(str, occurrence, replacement, caseSensitive) { + const pattern = occurrence.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + const flags = caseSensitive === false ? 'gi' : 'g'; + const regex = new RegExp(pattern, flags); return str.replace(regex, String(replacement)); }, - reverse: function (str) { - var chars = str.split(''); + reverse(str) { + const chars = str.split(''); chars.reverse(); return chars.join(''); }, - rotate: function (str, count) { - var chars = str.split(''); + rotate(str, count) { + let chars = str.split(''); chars = ArrayUtil.rotate(chars, count); return chars.join(''); }, - slugify: function (str) { - var sep = '-'; + slugify(str) { + const sep = '-'; // prettier-ignore - var chars = { + const chars = { // Latin 'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE', 'Ç': 'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', @@ -171,7 +168,7 @@ StringUtil = { }; // transliterate non-english characters for their english equivalent - for (var i = 0, len = str.length; i < len; i++) { + for (let i = 0, len = str.length; i < len; i++) { if (chars[str.charAt(i)]) { str = str.replace(str.charAt(i), chars[str.charAt(i)]); } @@ -186,49 +183,49 @@ StringUtil = { return str; }, - startsWith: function (str, search) { + startsWith(str, search) { // if (String.prototype.startsWith) { // return str.startsWith(search); // } return str.substr(0, search.length) === search; }, - toConstantCase: function (str) { + toConstantCase(str) { return str.replace(/[\s]/gm, '_').toUpperCase(); }, - toRandomCase: function (str) { - return str.replace(/./gm, function (match) { + toRandomCase(str) { + return str.replace(/./gm, (match) => { return RandomUtil.boolean() ? match.toUpperCase() : match.toLowerCase(); }); }, - toTitleCase: function (str, toLowerCaseRest) { - return str.replace(/[^\'\‘\’\`\-\s]+/gm, function (match) { + toTitleCase(str, toLowerCaseRest) { + return str.replace(/[^\'\‘\’\`\-\s]+/gm, (match) => { return StringUtil.toUpperCaseFirst(match, toLowerCaseRest); }); }, - toUpperCaseFirst: function (str, toLowerCaseRest) { + toUpperCaseFirst(str, toLowerCaseRest) { if (str.length === 0) { return str; } - var f = str.substr(0, 1).toUpperCase(); - var r = str.length > 1 ? str.substr(1) : ''; + const f = str.substr(0, 1).toUpperCase(); + const r = str.length > 1 ? str.substr(1) : ''; return f + (toLowerCaseRest === true ? r.toLowerCase() : r); }, - trim: function (str) { + trim(str) { // return str.replace(/^[\s]+|(? TrigoUtil.DEG_180) { return -TrigoUtil.DEG_360 + degDiff; } else if (degDiff < -TrigoUtil.DEG_180) { @@ -58,42 +58,42 @@ TrigoUtil = { } }, - haversine: function (lat1, lon1, lat2, lon2, km) { - var degToRad = TrigoUtil.degToRad; - var lat1Rad = degToRad(lat1); - var lon1Rad = degToRad(lon1); - var lat2Rad = degToRad(lat2); - var lon2Rad = degToRad(lon2); - var latDist = lat2Rad - lat1Rad; - var lonDist = lon2Rad - lon1Rad; + haversine(lat1, lon1, lat2, lon2, km) { + const degToRad = TrigoUtil.degToRad; + const lat1Rad = degToRad(lat1); + const lon1Rad = degToRad(lon1); + const lat2Rad = degToRad(lat2); + const lon2Rad = degToRad(lon2); + const latDist = lat2Rad - lat1Rad; + const lonDist = lon2Rad - lon1Rad; // prettier-ignore - var a = Math.sin(latDist / 2.0) * Math.sin(latDist / 2.0) + + const a = Math.sin(latDist / 2.0) * Math.sin(latDist / 2.0) + Math.cos(lat1Rad) * Math.cos(lat2Rad) * Math.sin(lonDist / 2.0) * Math.sin(lonDist / 2.0); - var c = Math.atan2(Math.sqrt(a), Math.sqrt(1.0 - a)) * 2.0; - var r; // earth radius + const c = Math.atan2(Math.sqrt(a), Math.sqrt(1.0 - a)) * 2.0; + let r; // earth radius if (km === false) { r = 3956; // miles } else { r = 6371; // km } - var distance = MathUtil.roundDecimals(r * c, 3); + const distance = MathUtil.roundDecimals(r * c, 3); return distance; }, - hypo: function (distanceX, distanceY) { + hypo(distanceX, distanceY) { return Math.sqrt(distanceX * distanceX + distanceY * distanceY); }, - radToDeg: function (rad) { + radToDeg(rad) { return rad * TrigoUtil.RAD_TO_DEG; }, - sinDeg: function (deg) { + sinDeg(deg) { return Math.sin(deg * TrigoUtil.DEG_TO_RAD); }, - tanDeg: function (deg) { + tanDeg(deg) { return Math.tan(deg * TrigoUtil.DEG_TO_RAD); }, }; diff --git a/src/utils/TypeUtil.js b/src/utils/TypeUtil.js index 9e0b133..788b2d5 100644 --- a/src/utils/TypeUtil.js +++ b/src/utils/TypeUtil.js @@ -20,7 +20,7 @@ TypeUtil = { UNKNOWN: 'unknown', // XML: 'xml', - isArray: function (val) { + isArray(val) { // https://stackoverflow.com/questions/4775722/check-if-object-is-array if (Array.isArray) { return Array.isArray(val); @@ -28,7 +28,7 @@ TypeUtil = { return Object.prototype.toString.call(val) === '[object Array]'; }, - isBase64: function (val) { + isBase64(val) { if (TypeUtil.isString(val)) { try { if (Base64Util.decode(val) !== '') { @@ -41,23 +41,23 @@ TypeUtil = { return false; }, - isBoolean: function (val) { + isBoolean(val) { return typeof val === 'boolean'; }, - isDate: function (val) { + isDate(val) { return Object.prototype.toString.call(val) === '[object Date]'; }, - isError: function (val) { + isError(val) { return val instanceof Error; }, - isFunction: function (val) { + isFunction(val) { return typeof val === 'function'; }, - isJSON: function (val) { + isJSON(val) { if (TypeUtil.isString(val)) { try { JSONUtil.decode(val); @@ -69,38 +69,38 @@ TypeUtil = { return false; }, - isNaN: function (val) { + isNaN(val) { return ObjectUtil.is(val, NaN); }, - isNone: function (val) { + isNone(val) { return TypeUtil.isUndefined(val) || TypeUtil.isNull(val) || TypeUtil.isNaN(val); }, - isNumber: function (val) { + isNumber(val) { return typeof val === 'number' && !isNaN(val) && isFinite(val); }, - isNull: function (val) { + isNull(val) { return val === null; }, - isObject: function (val) { + isObject(val) { return ( typeof val === 'object' && Object.prototype.toString.call(val) === '[object Object]' ); }, - isRegExp: function (val) { + isRegExp(val) { return val instanceof RegExp; }, - isString: function (val) { + isString(val) { return typeof val === 'string'; }, - isType: function (val) { + isType(val) { switch (val) { case TypeUtil.ARRAY: case TypeUtil.BOOLEAN: @@ -122,7 +122,7 @@ TypeUtil = { } }, - isUndefined: function (val) { + isUndefined(val) { return typeof val === 'undefined'; }, @@ -131,7 +131,7 @@ TypeUtil = { // return false; // }, - of: function (val) { + of(val) { if (TypeUtil.isArray(val)) { return TypeUtil.ARRAY; } else if (TypeUtil.isBoolean(val)) { diff --git a/src/utils/URLUtil.js b/src/utils/URLUtil.js index 370456a..b46ae2c 100644 --- a/src/utils/URLUtil.js +++ b/src/utils/URLUtil.js @@ -1,8 +1,7 @@ /** global: URLUtil */ URLUtil = { - getDomain: function (url, level) { - url = url || URLUtil.getURL(); + getDomain(url = URLUtil.getURL(), level) { // remove protocol, www and port let domain = url.replace(/(^\w+:|^)\/\/(www\.)?/, ''); domain = domain.split(':')[0]; @@ -17,33 +16,33 @@ URLUtil = { return domainName; }, - getParameterByName: function (url, name, defaultValue) { - var paramsDict = URLUtil.getParameters(url); + getParameterByName(url, name, defaultValue) { + const paramsDict = URLUtil.getParameters(url); return name in paramsDict ? paramsDict[name] || defaultValue || '' : defaultValue; }, - getParameters: function (url) { + getParameters(url) { return URLUtil.getParametersDict(url); }, - getParametersDict: function (url) { - var paramsList = URLUtil.getParametersList(url); - var param; - var paramsDict = {}; - for (var i = 0, j = paramsList.length; i < j; i++) { + getParametersDict(url) { + const paramsList = URLUtil.getParametersList(url); + let param; + const paramsDict = {}; + for (let i = 0, j = paramsList.length; i < j; i++) { param = paramsList[i]; paramsDict[param['key']] = param['value']; } return paramsDict; }, - getParametersList: function (url) { - var paramsString = URLUtil.getParametersString(url); - var paramsList = []; - var paramsRE = /(([\w\-]+){1}(\=([^\&\n\r\t]*){1})?)/g; - var paramMatch = paramsRE.exec(paramsString); + getParametersList(url) { + const paramsString = URLUtil.getParametersString(url); + const paramsList = []; + const paramsRE = /(([\w\-]+){1}(\=([^\&\n\r\t]*){1})?)/g; + let paramMatch = paramsRE.exec(paramsString); while (paramMatch) { paramsList.push({ key: paramMatch[2], @@ -54,20 +53,19 @@ URLUtil = { return paramsList; }, - getParametersString: function (url) { - url = url || URLUtil.getURL(); - var queryStringPosition = url.indexOf('?'); + getParametersString(url = URLUtil.getURL()) { + const queryStringPosition = url.indexOf('?'); // prettier-ignore - var queryString = (queryStringPosition > -1 ? url.substr(queryStringPosition + 1) : ''); - var hashDelimiterPosition = queryString.indexOf('#'); + let queryString = (queryStringPosition > -1 ? url.substr(queryStringPosition + 1) : ''); + const hashDelimiterPosition = queryString.indexOf('#'); if (hashDelimiterPosition > -1) { queryString = queryString.substring(0, hashDelimiterPosition); } return queryString; }, - getURL: function () { - var url = ''; + getURL() { + let url = ''; try { url = window.location.href; } catch (e) { @@ -76,24 +74,24 @@ URLUtil = { return url; }, - hasParameter: function (url, name) { + hasParameter(url, name) { return name in URLUtil.getParametersDict(url); }, - isFile: function (url) { + isFile(url) { return (url || URLUtil.getURL()).indexOf('file://') === 0; }, - isHttp: function (url) { + isHttp(url) { return (url || URLUtil.getURL()).indexOf('http://') === 0; }, - isHttps: function (url) { + isHttps(url) { return (url || URLUtil.getURL()).indexOf('https://') === 0; }, - isLocalhost: function (url) { - var re = + isLocalhost(url) { + const re = /^(https?\:\/\/)(localhost(.[a-z0-9\-])*|127\.0\.0\.1)(\:[\d]+)?(\/(.)*)?$/; return re.test(url || URLUtil.getURL()); }, diff --git a/src/utils/UTF8Util.js b/src/utils/UTF8Util.js index 95ed019..4512229 100644 --- a/src/utils/UTF8Util.js +++ b/src/utils/UTF8Util.js @@ -1,7 +1,7 @@ /** global: UTF8Util */ UTF8Util = { - decode: function (input) { + decode(input) { return decodeURIComponent(escape(input)); // var output = ''; @@ -33,7 +33,7 @@ UTF8Util = { // return output; }, - encode: function (input) { + encode(input) { return unescape(encodeURIComponent(input)); // input = input.replace(/\r\n/g, '\n'); diff --git a/src/utils/XMLUtil.js b/src/utils/XMLUtil.js index 0b391a3..47714a7 100644 --- a/src/utils/XMLUtil.js +++ b/src/utils/XMLUtil.js @@ -25,8 +25,8 @@ XMLUtil = { // return str; // }, - removeNamespaces: function (str) { - return str.replace(/(\<(.|\n)+?\>)/g, function (tag) { + removeNamespaces(str) { + return str.replace(/(\<(.|\n)+?\>)/g, (tag) => { return tag.replace(/(\s|\<\/?){1}([\w]+\:){1}/g, '$1'); }); }, From 0828257211abff23408cd1860e449791868a7fd5 Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Wed, 15 Jan 2025 16:12:59 +0100 Subject: [PATCH 02/22] Export functions from each module. --- src/utils/ArrayUtil.js | 608 +++++++++++++++--------------- src/utils/Base64Util.js | 181 +++++---- src/utils/ColorCmykUtil.js | 244 ++++++------ src/utils/ColorHexUtil.js | 326 ++++++++-------- src/utils/ColorRgbUtil.js | 547 +++++++++++++-------------- src/utils/ColorUtil.js | 3 +- src/utils/DateUtil.js | 430 +++++++++++---------- src/utils/EaseUtil.js | 660 ++++++++++++++++----------------- src/utils/FunctionUtil.js | 319 ++++++++-------- src/utils/GeomUtil.js | 3 +- src/utils/HexUtil.js | 18 +- src/utils/InterpolationUtil.js | 47 ++- src/utils/JSONUtil.js | 32 +- src/utils/MathUtil.js | 283 +++++++------- src/utils/NumberUtil.js | 76 ++-- src/utils/ObjectUtil.js | 453 +++++++++++----------- src/utils/PointUtil.js | 231 ++++++------ src/utils/RandomUtil.js | 121 +++--- src/utils/StringUtil.js | 437 +++++++++++----------- src/utils/TestUtil.js | 507 +++++++++++++------------ src/utils/TrigoUtil.js | 192 +++++----- src/utils/TypeUtil.js | 313 ++++++++-------- src/utils/URLUtil.js | 168 ++++----- src/utils/UTF8Util.js | 126 +++---- src/utils/XMLUtil.js | 58 ++- 25 files changed, 3116 insertions(+), 3267 deletions(-) diff --git a/src/utils/ArrayUtil.js b/src/utils/ArrayUtil.js index 4d20555..31037dd 100644 --- a/src/utils/ArrayUtil.js +++ b/src/utils/ArrayUtil.js @@ -1,4 +1,3 @@ -/** global: ArrayUtil */ /** global: DateUtil */ /** global: FunctionUtil */ /** global: MathUtil */ @@ -7,333 +6,330 @@ /** global: StringUtil */ /** global: TypeUtil */ -ArrayUtil = { - all(list) { - return list.every((item) => { - switch (TypeUtil.of(item)) { - case TypeUtil.ARRAY: - return item.length > 0; - case TypeUtil.OBJECT: - return ObjectUtil.length(item) > 0; - default: - return Boolean(item); - } - }); - }, - - any(list) { - return list.some((item) => { - switch (TypeUtil.of(item)) { - case TypeUtil.ARRAY: - return item.length > 0; - case TypeUtil.OBJECT: - return ObjectUtil.length(item) > 0; - default: - return Boolean(item); - } - }); - }, - - clean(list, hard) { - let items = list.slice(); - items = items.filter((item) => { - return !TypeUtil.isNone(item); - }); - if (hard === true) { - items = items - .map((item) => { - let itemClean; - switch (TypeUtil.of(item)) { - case TypeUtil.ARRAY: - itemClean = ArrayUtil.clean(item, hard); - return itemClean.length > 0 ? itemClean : null; - case TypeUtil.OBJECT: - itemClean = ObjectUtil.clean(item, hard); - return ObjectUtil.length(itemClean) > 0 ? itemClean : null; - case TypeUtil.STRING: - itemClean = StringUtil.trim(item); - return itemClean !== '' ? item : null; - default: - return item; - } - }) - .filter((item) => { - return !TypeUtil.isNone(item); - }); +export function all(list) { + return list.every((item) => { + switch (TypeUtil.of(item)) { + case TypeUtil.ARRAY: + return item.length > 0; + case TypeUtil.OBJECT: + return ObjectUtil.length(item) > 0; + default: + return Boolean(item); } - return items; - }, - - clone(list) { - const cln = list.slice(); - let val; - for (let i = 0, j = cln.length; i < j; i++) { - val = cln[i]; - switch (TypeUtil.of(val)) { - case TypeUtil.ARRAY: - cln[i] = ArrayUtil.clone(val); - break; - case TypeUtil.DATE: - cln[i] = DateUtil.clone(val); - break; - case TypeUtil.OBJECT: - cln[i] = ObjectUtil.clone(val); - break; - default: - break; - } + }); +} + +export function any(list) { + return list.some((item) => { + switch (TypeUtil.of(item)) { + case TypeUtil.ARRAY: + return item.length > 0; + case TypeUtil.OBJECT: + return ObjectUtil.length(item) > 0; + default: + return Boolean(item); } - return cln; - }, - - contains(list, value) { - const values = [value].concat(FunctionUtil.args(arguments, 2)); - let val, valFound; - - for (let i = 0, j = values.length; i < j; i++) { - val = values[i]; - valFound = false; - for (let k = 0, m = list.length; k < m; k++) { - if (ObjectUtil.equals(list[k], val)) { - valFound = true; + }); +} + +export function clean(list, hard) { + let items = list.slice(); + items = items.filter((item) => { + return !TypeUtil.isNone(item); + }); + if (hard === true) { + items = items + .map((item) => { + let itemClean; + switch (TypeUtil.of(item)) { + case TypeUtil.ARRAY: + itemClean = clean(item, hard); + return itemClean.length > 0 ? itemClean : null; + case TypeUtil.OBJECT: + itemClean = ObjectUtil.clean(item, hard); + return ObjectUtil.length(itemClean) > 0 ? itemClean : null; + case TypeUtil.STRING: + itemClean = StringUtil.trim(item); + return itemClean !== '' ? item : null; + default: + return item; } - } - if (!valFound) { - return false; - } + }) + .filter((item) => { + return !TypeUtil.isNone(item); + }); + } + return items; +} + +export function clone(list) { + const cln = list.slice(); + let val; + for (let i = 0, j = cln.length; i < j; i++) { + val = cln[i]; + switch (TypeUtil.of(val)) { + case TypeUtil.ARRAY: + cln[i] = clone(val); + break; + case TypeUtil.DATE: + cln[i] = DateUtil.clone(val); + break; + case TypeUtil.OBJECT: + cln[i] = ObjectUtil.clone(val); + break; + default: + break; } - - return true; - }, - - equals(listA, listB) { - return ObjectUtil.equals(listA, listB); - }, - - flatten(list) { - const items = []; - for (let i = 0, j = list.length; i < j; i++) { - if (TypeUtil.isArray(list[i])) { - items.push(...ArrayUtil.flatten(list[i])); - } else { - items.push(list[i]); + } + return cln; +} + +export function contains(list, value) { + const values = [value].concat(FunctionUtil.args(arguments, 2)); + let val, valFound; + + for (let i = 0, j = values.length; i < j; i++) { + val = values[i]; + valFound = false; + for (let k = 0, m = list.length; k < m; k++) { + if (ObjectUtil.equals(list[k], val)) { + valFound = true; } } - return items; - }, - - index(list, keys, flat) { - const dict = {}; - let item; - let key; - let val; - - if (TypeUtil.isString(keys)) { - keys = [keys]; + if (!valFound) { + return false; } - - for (let i = 0, j = list.length; i < j; i++) { - item = list[i]; - - for (let m = 0, n = keys.length; m < n; m++) { - key = String(keys[m]); - val = String(item[key]); - - if (flat === true) { - dict[val] = item; - } else { - if (TypeUtil.isUndefined(dict[val])) { - dict[val] = []; - } - dict[val].push(item); - } - } + } + + return true; +} + +export function equals(listA, listB) { + return ObjectUtil.equals(listA, listB); +} + +export function flatten(list) { + const items = []; + for (let i = 0, j = list.length; i < j; i++) { + if (TypeUtil.isArray(list[i])) { + items.push(...flatten(list[i])); + } else { + items.push(list[i]); } + } + return items; +} - return dict; - }, +export function index(list, keys, flat) { + const dict = {}; + let item; + let key; + let val; - insert(list, index, item) { - list.splice(index, 0, item); - return list; - }, + if (TypeUtil.isString(keys)) { + keys = [keys]; + } - max(list, callback) { - return ArrayUtil.reduce( - list, - (a, b) => { - if (TypeUtil.isFunction(callback)) { - return Math.max(a, callback(b)); - } - return Math.max(a, b); - }, - Number.MIN_VALUE - ); - }, - - min(list, callback) { - return ArrayUtil.reduce( - list, - (a, b) => { - if (TypeUtil.isFunction(callback)) { - return Math.min(a, callback(b)); + for (let i = 0, j = list.length; i < j; i++) { + item = list[i]; + + for (let m = 0, n = keys.length; m < n; m++) { + key = String(keys[m]); + val = String(item[key]); + + if (flat === true) { + dict[val] = item; + } else { + if (TypeUtil.isUndefined(dict[val])) { + dict[val] = []; } - return Math.min(a, b); - }, - Number.MAX_VALUE - ); - }, - - paginate(list, itemsPerPage) { - const itemsTotal = list.length; - const pagesTotal = itemsPerPage > 0 ? Math.ceil(itemsTotal / itemsPerPage) : 0; - const pages = []; - let i, j; - for (i = 0, j = 0; i < pagesTotal; i++) { - j = i * itemsPerPage; - pages[i] = list.slice(j, j + Math.min(itemsPerPage, itemsTotal)); + dict[val].push(item); + } } - return pages; - }, - - reduce(list, reducer, initialValue) { - let value = TypeUtil.isUndefined(initialValue) ? 0 : initialValue; - for (let i = 0, j = list.length; i < j; i++) { - value = reducer(value, list[i], i, list); + } + + return dict; +} + +export function insert(list, index, item) { + list.splice(index, 0, item); + return list; +} + +export function max(list, callback) { + return reduce( + list, + (a, b) => { + if (TypeUtil.isFunction(callback)) { + return Math.max(a, callback(b)); + } + return Math.max(a, b); + }, + Number.MIN_VALUE + ); +} + +export function min(list, callback) { + return reduce( + list, + (a, b) => { + if (TypeUtil.isFunction(callback)) { + return Math.min(a, callback(b)); + } + return Math.min(a, b); + }, + Number.MAX_VALUE + ); +} + +export function paginate(list, itemsPerPage) { + const itemsTotal = list.length; + const pagesTotal = itemsPerPage > 0 ? Math.ceil(itemsTotal / itemsPerPage) : 0; + const pages = []; + let i, j; + for (i = 0, j = 0; i < pagesTotal; i++) { + j = i * itemsPerPage; + pages[i] = list.slice(j, j + Math.min(itemsPerPage, itemsTotal)); + } + return pages; +} + +export function reduce(list, reducer, initialValue) { + let value = TypeUtil.isUndefined(initialValue) ? 0 : initialValue; + for (let i = 0, j = list.length; i < j; i++) { + value = reducer(value, list[i], i, list); + } + return value; +} + +export function replace(list, searchValue, replacementValue) { + for (let i = 0, j = list.length; i < j; i++) { + if (ObjectUtil.equals(list[i], searchValue)) { + list[i] = replacementValue; } - return value; - }, + } + return list; +} - replace(list, searchValue, replacementValue) { +export function remove(list, value) { + const values = [value].concat(FunctionUtil.args(arguments, 2)); + for (let k = 0, m = values.length; k < m; k++) { for (let i = 0, j = list.length; i < j; i++) { - if (ObjectUtil.equals(list[i], searchValue)) { - list[i] = replacementValue; - } - } - return list; - }, - - remove(list, value) { - const values = [value].concat(FunctionUtil.args(arguments, 2)); - for (let k = 0, m = values.length; k < m; k++) { - for (let i = 0, j = list.length; i < j; i++) { - if (ObjectUtil.equals(list[i], values[k])) { - list.splice(i, 1); - i--; - j--; - } + if (ObjectUtil.equals(list[i], values[k])) { + list.splice(i, 1); + i--; + j--; } } - return list; - }, - - rotate(list, count) { - const cursor = MathUtil.cycle(count, list.length); - return list.slice(cursor).concat(list.slice(0, cursor)); - }, - - shuffle(list) { - const items = list.slice(); - let randomIndex; - let randomItems; - let sortedItems = list.length; - while (sortedItems) { - randomIndex = RandomUtil.integer(0, --sortedItems); - randomItems = items.splice(randomIndex, 1); - items.push(...randomItems); + } + return list; +} + +export function rotate(list, count) { + const cursor = MathUtil.cycle(count, list.length); + return list.slice(cursor).concat(list.slice(0, cursor)); +} + +export function shuffle(list) { + const items = list.slice(); + let randomIndex; + let randomItems; + let sortedItems = list.length; + while (sortedItems) { + randomIndex = RandomUtil.integer(0, --sortedItems); + randomItems = items.splice(randomIndex, 1); + items.push(...randomItems); + } + return items; +} + +export function sort(list, key) { + const isArray = TypeUtil.isArray; + const isObject = TypeUtil.isObject; + const isNumber = TypeUtil.isNumber; + const isString = TypeUtil.isString; + + const compare = (a, b) => { + let aVal; + let bVal; + + if (isObject(a) && isObject(b) && isString(key)) { + // comparing objects + aVal = key in a ? a[key] : a; + bVal = key in b ? b[key] : b; + } else if (isArray(a) && isArray(b) && isNumber(key)) { + // comparing arrays + const index = key; + aVal = index >= 0 && index < a.length ? a[index] : a; + bVal = index >= 0 && index < b.length ? b[index] : b; + } else { + aVal = a; + bVal = b; } - return items; - }, - - sort(list, key) { - const isArray = TypeUtil.isArray; - const isObject = TypeUtil.isObject; - const isNumber = TypeUtil.isNumber; - const isString = TypeUtil.isString; - - const compare = (a, b) => { - let aVal; - let bVal; - - if (isObject(a) && isObject(b) && isString(key)) { - // comparing objects - aVal = key in a ? a[key] : a; - bVal = key in b ? b[key] : b; - } else if (isArray(a) && isArray(b) && isNumber(key)) { - // comparing arrays - const index = key; - aVal = index >= 0 && index < a.length ? a[index] : a; - bVal = index >= 0 && index < b.length ? b[index] : b; - } else { - aVal = a; - bVal = b; - } - - const aValIsNum = isNumber(aVal); - const bValIsNum = isNumber(bVal); - if (aValIsNum && bValIsNum) { - return aVal <= bVal ? -1 : 1; - } else if (aValIsNum) { - return -1; - } else if (bValIsNum) { - return 1; - } else { - const ab = [aVal, bVal]; - ab.sort(); - return ab.indexOf(aVal) <= ab.indexOf(bVal) ? -1 : 1; - } - }; + const aValIsNum = isNumber(aVal); + const bValIsNum = isNumber(bVal); + + if (aValIsNum && bValIsNum) { + return aVal <= bVal ? -1 : 1; + } else if (aValIsNum) { + return -1; + } else if (bValIsNum) { + return 1; + } else { + const ab = [aVal, bVal]; + ab.sort(); + return ab.indexOf(aVal) <= ab.indexOf(bVal) ? -1 : 1; + } + }; - return list.sort(compare); - }, + return list.sort(compare); +} - sum(list, callback) { - return ArrayUtil.reduce( - list, - (a, b) => { - if (TypeUtil.isFunction(callback)) { - return a + callback(b); - } - return a + b; - }, - 0 - ); - }, - - unique(list) { - let item; - const items = []; - const itemsNotEquals = (itemUnique) => { - return !ObjectUtil.equals(item, itemUnique); - }; - for (let i = 0, j = list.length; i < j; i++) { - item = list[i]; - if (items.every(itemsNotEquals)) { - items.push(item); +export function sum(list, callback) { + return reduce( + list, + (a, b) => { + if (TypeUtil.isFunction(callback)) { + return a + callback(b); } + return a + b; + }, + 0 + ); +} + +export function unique(list) { + let item; + const items = []; + const itemsNotEquals = (itemUnique) => { + return !ObjectUtil.equals(item, itemUnique); + }; + for (let i = 0, j = list.length; i < j; i++) { + item = list[i]; + if (items.every(itemsNotEquals)) { + items.push(item); } - return items; - }, - - unzip(list) { - return ArrayUtil.zip.apply(null, list); - }, - - zip(list1, list2) { - const lists = [list1, list2].concat(FunctionUtil.args(arguments, 2)); - let listLength = 0; - lists.forEach((item) => { - listLength = - listLength === 0 ? item.length : Math.min(listLength, item.length); - }); - const list = []; - for (let i = 0; i < listLength; i++) { - list[i] = []; - for (let j = 0, k = lists.length; j < k; j++) { - list[i][j] = lists[j][i]; - } + } + return items; +} + +export function unzip(list) { + return zip.apply(null, list); +} + +export function zip(list1, list2) { + const lists = [list1, list2].concat(FunctionUtil.args(arguments, 2)); + let listLength = 0; + lists.forEach((item) => { + listLength = listLength === 0 ? item.length : Math.min(listLength, item.length); + }); + const list = []; + for (let i = 0; i < listLength; i++) { + list[i] = []; + for (let j = 0, k = lists.length; j < k; j++) { + list[i][j] = lists[j][i]; } - return list; - }, -}; + } + return list; +} diff --git a/src/utils/Base64Util.js b/src/utils/Base64Util.js index 2202cef..14ee9a7 100644 --- a/src/utils/Base64Util.js +++ b/src/utils/Base64Util.js @@ -1,99 +1,96 @@ -/** global: Base64Util */ /** global: UTF8Util */ -Base64Util = { - CHARS: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=', - // prettier-ignore - CHARS_LIST: [ - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', - 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', - 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', - 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/', '=' - ], - // prettier-ignore - CHARS_TABLE: { - 'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8, 'J': 9, 'K': 10, 'L': 11, 'M': 12, - 'N': 13, 'O': 14, 'P': 15, 'Q': 16, 'R': 17, 'S': 18, 'T': 19, 'U': 20, 'V': 21, 'W': 22, 'X': 23, 'Y': 24, 'Z': 25, - 'a': 26, 'b': 27, 'c': 28, 'd': 29, 'e': 30, 'f': 31, 'g': 32, 'h': 33, 'i': 34, 'j': 35, 'k': 36, 'l': 37, 'm': 38, - 'n': 39, 'o': 40, 'p': 41, 'q': 42, 'r': 43, 's': 44, 't': 45, 'u': 46, 'v': 47, 'w': 48, 'x': 49, 'y': 50, 'z': 51, - '0': 52, '1': 53, '2': 54, '3': 55, '4': 56, '5': 57, '6': 58, '7': 59, '8': 60, '9': 61, '+': 62, '/': 63, '=': 64 - }, - - decode(str) { - const input = str.replace(/[^A-Za-z0-9\+\/\=]/g, ''); - let output = ''; - - try { - output = window.atob(input); - } catch (e) { - const chars = Base64Util.CHARS_TABLE; - let chr1, chr2, chr3; - let enc1, enc2, enc3, enc4; - - let i = 0; - const j = input.length; - - while (i < j) { - enc1 = chars[input.charAt(i++)]; - enc2 = chars[input.charAt(i++)]; - enc3 = chars[input.charAt(i++)]; - enc4 = chars[input.charAt(i++)]; - - chr1 = (enc1 << 2) | (enc2 >> 4); - chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); - chr3 = ((enc3 & 3) << 6) | enc4; - - output += String.fromCharCode(chr1); - - if (enc3 !== 64) { - output += String.fromCharCode(chr2); - } - if (enc4 !== 64) { - output += String.fromCharCode(chr3); - } +const CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; +// prettier-ignore +const CHARS_LIST = [ + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', + 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', + 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/', '=' +]; +// prettier-ignore +const CHARS_TABLE = { + 'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8, 'J': 9, 'K': 10, 'L': 11, 'M': 12, + 'N': 13, 'O': 14, 'P': 15, 'Q': 16, 'R': 17, 'S': 18, 'T': 19, 'U': 20, 'V': 21, 'W': 22, 'X': 23, 'Y': 24, 'Z': 25, + 'a': 26, 'b': 27, 'c': 28, 'd': 29, 'e': 30, 'f': 31, 'g': 32, 'h': 33, 'i': 34, 'j': 35, 'k': 36, 'l': 37, 'm': 38, + 'n': 39, 'o': 40, 'p': 41, 'q': 42, 'r': 43, 's': 44, 't': 45, 'u': 46, 'v': 47, 'w': 48, 'x': 49, 'y': 50, 'z': 51, + '0': 52, '1': 53, '2': 54, '3': 55, '4': 56, '5': 57, '6': 58, '7': 59, '8': 60, '9': 61, '+': 62, '/': 63, '=': 64 +}; + +export function decode(str) { + const input = str.replace(/[^A-Za-z0-9\+\/\=]/g, ''); + let output = ''; + + try { + output = window.atob(input); + } catch (e) { + const chars = CHARS_TABLE; + let chr1, chr2, chr3; + let enc1, enc2, enc3, enc4; + + let i = 0; + const j = input.length; + + while (i < j) { + enc1 = chars[input.charAt(i++)]; + enc2 = chars[input.charAt(i++)]; + enc3 = chars[input.charAt(i++)]; + enc4 = chars[input.charAt(i++)]; + + chr1 = (enc1 << 2) | (enc2 >> 4); + chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); + chr3 = ((enc3 & 3) << 6) | enc4; + + output += String.fromCharCode(chr1); + + if (enc3 !== 64) { + output += String.fromCharCode(chr2); + } + if (enc4 !== 64) { + output += String.fromCharCode(chr3); } } - - output = UTF8Util.decode(output); - return output; - }, - - encode(str) { - const input = UTF8Util.encode(str); - let output = ''; - - try { - output = window.btoa(input); - } catch (e) { - const chars = Base64Util.CHARS_LIST; - let chr1, chr2, chr3; - let enc1, enc2, enc3, enc4; - - let i = 0; - const j = input.length; - - while (i < j) { - chr1 = input.charCodeAt(i++); - chr2 = input.charCodeAt(i++); - chr3 = input.charCodeAt(i++); - - enc1 = chr1 >> 2; - enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); - enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); - enc4 = chr3 & 63; - - if (isNaN(chr2)) { - enc3 = enc4 = 64; - } else if (isNaN(chr3)) { - enc4 = 64; - } - - // output += (chars.charAt(enc1) + chars.charAt(enc2) + chars.charAt(enc3) + chars.charAt(enc4)); - output += chars[enc1] + chars[enc2] + chars[enc3] + chars[enc4]; + } + + output = UTF8Util.decode(output); + return output; +} + +export function encode(str) { + const input = UTF8Util.encode(str); + let output = ''; + + try { + output = window.btoa(input); + } catch (e) { + const chars = CHARS_LIST; + let chr1, chr2, chr3; + let enc1, enc2, enc3, enc4; + + let i = 0; + const j = input.length; + + while (i < j) { + chr1 = input.charCodeAt(i++); + chr2 = input.charCodeAt(i++); + chr3 = input.charCodeAt(i++); + + enc1 = chr1 >> 2; + enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); + enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); + enc4 = chr3 & 63; + + if (isNaN(chr2)) { + enc3 = enc4 = 64; + } else if (isNaN(chr3)) { + enc4 = 64; } + + // output += (chars.charAt(enc1) + chars.charAt(enc2) + chars.charAt(enc3) + chars.charAt(enc4)); + output += chars[enc1] + chars[enc2] + chars[enc3] + chars[enc4]; } + } - return output; - }, -}; + return output; +} diff --git a/src/utils/ColorCmykUtil.js b/src/utils/ColorCmykUtil.js index d583770..789f0b5 100644 --- a/src/utils/ColorCmykUtil.js +++ b/src/utils/ColorCmykUtil.js @@ -1,131 +1,117 @@ -/** global: ColorCmykUtil */ /** global: ColorRgbUtil */ -ColorCmykUtil = { - // average: function(colors) - // { - // return ColorRgbUtil.toCmyk( - // ColorRgbUtil.average( - // colors.map(function(color){ - // return ColorCmykUtil.toRgb(color); - // }) - // )); - // }, - - // distance: function(colorA, colorB) - // { - // return ColorRgbUtil.distance( - // ColorCmykUtil.toRgb(colorA), - // ColorCmykUtil.toRgb(colorB)); - // }, - - // gradient: function(colors, steps) - // { - // return ColorRgbUtil.gradient(colors.map(function(color){ - // return ColorCmykUtil.toRgb(color); - // }), steps).map(function(color){ - // return ColorRgbUtil.toCmyk(color); - // }); - // }, - - // gradientMatrix: function(colors, stepsX, stepsY) - // { - // return ColorRgbUtil.gradientMatrix( - // ObjectUtil.map(colors, function(color){ - // return ColorCmykUtil.toRgb(color); - // }), stepsX, stepsY).map(function(colors){ - // return colors.map(function(color){ - // return ColorRgbUtil.toCmyk(color); - // }); - // }); - // }, - - // interpolateBilinear: function(a, b, c, d, u, v) - // { - // return ColorRgbUtil.toCmyk( - // ColorRgbUtil.interpolateBilinear( - // ColorCmykUtil.toRgb(a), - // ColorCmykUtil.toRgb(b), - // ColorCmykUtil.toRgb(c), - // ColorCmykUtil.toRgb(d), u, v)); - // }, - - // interpolateLinear: function(colorFrom, colorTo, t) - // { - // return ColorRgbUtil.toCmyk( - // ColorRgbUtil.interpolateLinear( - // ColorCmykUtil.toRgb(colorFrom), - // ColorCmykUtil.toRgb(colorTo), t)); - // }, - - // interpolateMultilinear: function(colors, t) - // { - // return ColorRgbUtil.toCmyk( - // ColorRgbUtil.interpolateMultilinear( - // colors.map(function(color){ - // return ColorCmykUtil.toRgb(color); - // }), t)); - // }, - - // nearest: function(colorSearch, colors) - // { - // return ColorRgbUtil.toCmyk( - // ColorRgbUtil.nearest( - // ColorCmykUtil.toRgb(colorSearch), - // colors.map(function(color){ - // return ColorCmykUtil.toRgb(color); - // }) - // )); - // }, - - // toGrayscale: function(color) - // { - // return ColorRgbUtil.toGrayscale( - // ColorCmykUtil.toRgb(color)); - // }, - - toHex(color, prefix) { - return ColorRgbUtil.toHex(ColorCmykUtil.toRgb(color), prefix); - }, - - // toHsl: function(color) - // { - // return ColorRgbUtil.toHsl( - // ColorCmykUtil.toRgb(color)); - // }, - - // toHsv: function(color) - // { - // return ColorRgbUtil.toHsv( - // ColorCmykUtil.toRgb(color)); - // }, - - toRgb(color) { - const c = color.c / 100; - const m = color.m / 100; - const y = color.y / 100; - const k = color.k / 100; - const ik = 1.0 - k; - - let r = 1.0 - Math.min(1.0, c * ik + k); - let g = 1.0 - Math.min(1.0, m * ik + k); - let b = 1.0 - Math.min(1.0, y * ik + k); - - const round = Math.round; - r = round(r * 255); - g = round(g * 255); - b = round(b * 255); - - return { r: r, g: g, b: b, a: 1.0 }; - }, - - toString(color) { - // prettier-ignore - return `{ c:${String(color.c)}, m:${String(color.m)}, y:${String(color.y)}, k:${String(color.k)} }`; - }, - - toStringCSS(color) { - // prettier-ignore - return `cmyk(${String(color.c)}%, ${String(color.m)}%, ${String(color.y)}%, ${String(color.k)}%)`; - }, -}; +// export function average(colors) { +// return ColorRgbUtil.toCmyk( +// ColorRgbUtil.average( +// colors.map(function(color){ +// return toRgb(color); +// }) +// )); +// }; + +// export function distance(colorA, colorB) { +// return ColorRgbUtil.distance( +// toRgb(colorA), +// toRgb(colorB)); +// }; + +// export function gradient(colors, steps) { +// return ColorRgbUtil.gradient(colors.map(function(color){ +// return toRgb(color); +// }), steps).map(function(color){ +// return ColorRgbUtil.toCmyk(color); +// }); +// }; + +// export function gradientMatrix(colors, stepsX, stepsY) { +// return ColorRgbUtil.gradientMatrix( +// ObjectUtil.map(colors, function(color){ +// return toRgb(color); +// }), stepsX, stepsY).map(function(colors){ +// return colors.map(function(color){ +// return ColorRgbUtil.toCmyk(color); +// }); +// }); +// }; + +// export function interpolateBilinear(a, b, c, d, u, v) { +// return ColorRgbUtil.toCmyk( +// ColorRgbUtil.interpolateBilinear( +// toRgb(a), +// toRgb(b), +// toRgb(c), +// toRgb(d), u, v)); +// }; + +// export function interpolateLinear(colorFrom, colorTo, t) { +// return ColorRgbUtil.toCmyk( +// ColorRgbUtil.interpolateLinear( +// toRgb(colorFrom), +// toRgb(colorTo), t)); +// }; + +// export function interpolateMultilinear(colors, t) { +// return ColorRgbUtil.toCmyk( +// ColorRgbUtil.interpolateMultilinear( +// colors.map(function(color){ +// return toRgb(color); +// }), t)); +// }; + +// export function nearest(colorSearch, colors) { +// return ColorRgbUtil.toCmyk( +// ColorRgbUtil.nearest( +// toRgb(colorSearch), +// colors.map(function(color){ +// return toRgb(color); +// }) +// )); +// }; + +// export function toGrayscale(color) { +// return ColorRgbUtil.toGrayscale( +// toRgb(color)); +// }; + +export function toHex(color, prefix) { + return ColorRgbUtil.toHex(toRgb(color), prefix); +} + +// export function toHsl(color) { +// return ColorRgbUtil.toHsl( +// toRgb(color)); +// }; + +// export function toHsv(color) { +// return ColorRgbUtil.toHsv( +// toRgb(color)); +// }; + +export function toRgb(color) { + const c = color.c / 100; + const m = color.m / 100; + const y = color.y / 100; + const k = color.k / 100; + const ik = 1.0 - k; + + let r = 1.0 - Math.min(1.0, c * ik + k); + let g = 1.0 - Math.min(1.0, m * ik + k); + let b = 1.0 - Math.min(1.0, y * ik + k); + + const round = Math.round; + r = round(r * 255); + g = round(g * 255); + b = round(b * 255); + + return { r: r, g: g, b: b, a: 1.0 }; +} + +export function toString(color) { + // prettier-ignore + return `{ c:${String(color.c)}, m:${String(color.m)}, y:${String(color.y)}, k:${String(color.k)} }`; +} + +export function toStringCSS(color) { + // prettier-ignore + return `cmyk(${String(color.c)}%, ${String(color.m)}%, ${String(color.y)}%, ${String(color.k)}%)`; +} diff --git a/src/utils/ColorHexUtil.js b/src/utils/ColorHexUtil.js index 6e72241..b32fa8f 100644 --- a/src/utils/ColorHexUtil.js +++ b/src/utils/ColorHexUtil.js @@ -1,4 +1,3 @@ -/** global: ColorHexUtil */ /** global: ColorRgbUtil */ /** global: HexUtil */ /** global: InterpolationUtil */ @@ -6,180 +5,161 @@ /** global: ObjectUtil */ /** global: TypeUtil */ -ColorHexUtil = { - average(colors) { - return ColorRgbUtil.toHex( - ColorRgbUtil.average( - colors.map((color) => { - return ColorHexUtil.toRgb(color); - }) - ) - ); - }, - - distance(colorA, colorB) { - return ColorRgbUtil.distance( - ColorHexUtil.toRgb(colorA), - ColorHexUtil.toRgb(colorB) - ); - }, - - gradient(colors, steps) { - return ColorRgbUtil.gradient( +export function average(colors) { + return ColorRgbUtil.toHex( + ColorRgbUtil.average( colors.map((color) => { - return ColorHexUtil.toRgb(color); - }), - steps - ).map((color) => { + return toRgb(color); + }) + ) + ); +} + +export function distance(colorA, colorB) { + return ColorRgbUtil.distance(toRgb(colorA), toRgb(colorB)); +} + +export function gradient(colors, steps) { + return ColorRgbUtil.gradient( + colors.map((color) => { + return toRgb(color); + }), + steps + ).map((color) => { + return ColorRgbUtil.toHex(color); + }); +} + +export function gradientMatrix(colors, stepsX, stepsY) { + return ColorRgbUtil.gradientMatrix( + ObjectUtil.map(colors, (color) => { + return toRgb(color); + }), + stepsX, + stepsY + ).map((colors) => { + return colors.map((color) => { return ColorRgbUtil.toHex(color); }); - }, - - gradientMatrix(colors, stepsX, stepsY) { - return ColorRgbUtil.gradientMatrix( - ObjectUtil.map(colors, (color) => { - return ColorHexUtil.toRgb(color); + }); +} + +export function interpolateBilinear(a, b, c, d, u, v) { + return ColorRgbUtil.toHex( + ColorRgbUtil.interpolateBilinear(toRgb(a), toRgb(b), toRgb(c), toRgb(d), u, v) + ); +} + +export function interpolateLinear(colorFrom, colorTo, t) { + return ColorRgbUtil.toHex( + ColorRgbUtil.interpolateLinear(toRgb(colorFrom), toRgb(colorTo), t) + ); +} + +export function interpolateMultilinear(colors, t) { + return ColorRgbUtil.toHex( + ColorRgbUtil.interpolateMultilinear( + colors.map((color) => { + return toRgb(color); }), - stepsX, - stepsY - ).map((colors) => { - return colors.map((color) => { - return ColorRgbUtil.toHex(color); - }); - }); - }, - - interpolateBilinear(a, b, c, d, u, v) { - return ColorRgbUtil.toHex( - ColorRgbUtil.interpolateBilinear( - ColorHexUtil.toRgb(a), - ColorHexUtil.toRgb(b), - ColorHexUtil.toRgb(c), - ColorHexUtil.toRgb(d), - u, - v - ) - ); - }, - - interpolateLinear(colorFrom, colorTo, t) { - return ColorRgbUtil.toHex( - ColorRgbUtil.interpolateLinear( - ColorHexUtil.toRgb(colorFrom), - ColorHexUtil.toRgb(colorTo), - t - ) - ); - }, - - interpolateMultilinear(colors, t) { - return ColorRgbUtil.toHex( - ColorRgbUtil.interpolateMultilinear( - colors.map((color) => { - return ColorHexUtil.toRgb(color); - }), - t - ) - ); - }, - - nearest(colorSearch, colors) { - return ColorRgbUtil.toHex( - ColorRgbUtil.nearest( - ColorHexUtil.toRgb(colorSearch), - colors.map((color) => { - return ColorHexUtil.toRgb(color); - }) - ) - ); - }, - - toCmyk(color) { - return ColorRgbUtil.toCmyk(ColorHexUtil.toRgb(color)); - }, - - // toGrayscale: function(color) - // { - // return ColorRgbUtil.toGrayscale( - // ColorHexUtil.toRgb(color)); - // }, - - // toHsl: function(color) - // { - // return ColorRgbUtil.toHsl( - // ColorHexUtil.toRgb(color)); - // }, - - // toHsv: function(color) - // { - // return ColorRgbUtil.toHsv( - // ColorHexUtil.toRgb(color)); - // }, - - toRgb(color) { - const fromHex = HexUtil.decodeInt; - const toHex = HexUtil.encodeInt; - - let hex; - if (TypeUtil.isNumber(color)) { - hex = toHex(color); - } else if (TypeUtil.isString(color)) { - hex = color.replace(/\#|0x/, ''); - } else { + t + ) + ); +} + +export function nearest(colorSearch, colors) { + return ColorRgbUtil.toHex( + ColorRgbUtil.nearest( + toRgb(colorSearch), + colors.map((color) => { + return toRgb(color); + }) + ) + ); +} + +export function toCmyk(color) { + return ColorRgbUtil.toCmyk(toRgb(color)); +} + +// export function toGrayscale(color) { +// return ColorRgbUtil.toGrayscale( +// toRgb(color)); +// }; + +// export function toHsl(color) { +// return ColorRgbUtil.toHsl( +// toRgb(color)); +// }; + +// export function toHsv(color) { +// return ColorRgbUtil.toHsv( +// toRgb(color)); +// }; + +export function toRgb(color) { + const fromHex = HexUtil.decodeInt; + const toHex = HexUtil.encodeInt; + + let hex; + if (TypeUtil.isNumber(color)) { + hex = toHex(color); + } else if (TypeUtil.isString(color)) { + hex = color.replace(/\#|0x/, ''); + } else { + return null; + } + hex = hex.toUpperCase(); + + let rgb; + let comps; + + switch (hex.length) { + case 3: + // eg. #000 + comps = /^([a-f\d]{1})([a-f\d]{1})([a-f\d]{1})$/i.exec(hex); + rgb = { + a: 1.0, + r: fromHex(comps[1] + comps[1]), + g: fromHex(comps[2] + comps[2]), + b: fromHex(comps[3] + comps[3]), + }; + break; + + case 6: + // eg. #000000 + comps = /^([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + rgb = { + a: 1.0, + r: fromHex(comps[1]), + g: fromHex(comps[2]), + b: fromHex(comps[3]), + }; + break; + + case 8: + // eg. #FF000000 + comps = /^([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + rgb = { + a: MathUtil.roundDecimals(fromHex(comps[1]) / 255, 2), + r: fromHex(comps[2]), + g: fromHex(comps[3]), + b: fromHex(comps[4]), + }; + break; + + default: return null; - } - hex = hex.toUpperCase(); - - let rgb; - let comps; - - switch (hex.length) { - case 3: - // eg. #000 - comps = /^([a-f\d]{1})([a-f\d]{1})([a-f\d]{1})$/i.exec(hex); - rgb = { - a: 1.0, - r: fromHex(comps[1] + comps[1]), - g: fromHex(comps[2] + comps[2]), - b: fromHex(comps[3] + comps[3]), - }; - break; - - case 6: - // eg. #000000 - comps = /^([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); - rgb = { - a: 1.0, - r: fromHex(comps[1]), - g: fromHex(comps[2]), - b: fromHex(comps[3]), - }; - break; - - case 8: - // eg. #FF000000 - comps = /^([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); - rgb = { - a: MathUtil.roundDecimals(fromHex(comps[1]) / 255, 2), - r: fromHex(comps[2]), - g: fromHex(comps[3]), - b: fromHex(comps[4]), - }; - break; - - default: - return null; - } - - // console.log(col, hex, rgb, comps); - return rgb; - }, - - toString(color, prefix) { - return ColorRgbUtil.toHex(ColorHexUtil.toRgb(color), prefix); - }, - - toStringCSS(color) { - return ColorHexUtil.toString(color, '#'); - }, -}; + } + + // console.log(col, hex, rgb, comps); + return rgb; +} + +export function toString(color, prefix) { + return ColorRgbUtil.toHex(toRgb(color), prefix); +} + +export function toStringCSS(color) { + return toString(color, '#'); +} diff --git a/src/utils/ColorRgbUtil.js b/src/utils/ColorRgbUtil.js index 8d253fa..b0a88e7 100644 --- a/src/utils/ColorRgbUtil.js +++ b/src/utils/ColorRgbUtil.js @@ -1,296 +1,277 @@ -/** global: ColorRgbUtil */ /** global: HexUtil */ /** global: InterpolationUtil */ /** global: MathUtil */ -ColorRgbUtil = { - average(colors) { - let c; - let r = 0; - let g = 0; - let b = 0; - let a = 0; - let i = 0; - const j = colors.length; - for (i, j; i < j; i++) { - c = colors[i]; - r += c.r; - g += c.g; - b += c.b; - a += isNaN(c.a) ? 1.0 : c.a; - } - const round = Math.round; - r = round(r / j); - g = round(g / j); - b = round(b / j); - a = round(a / j); - return { r: r, g: g, b: b, a: a }; - }, - - distance(colorA, colorB) { - const rDiff = colorA.r - colorB.r; - const gDiff = colorA.g - colorB.g; - const bDiff = colorA.b - colorB.b; - const aDiff = Math.round( - ((isNaN(colorA.a) ? 1.0 : colorA.a) - (isNaN(colorB.a) ? 1.0 : colorB.a)) * - 255 - ); - return Math.sqrt(rDiff * rDiff + gDiff * gDiff + bDiff * bDiff + aDiff * aDiff); - }, - - gradient(colors, steps) { - const colorsOutput = []; - let color; - const mlerp = ColorRgbUtil.interpolateMultilinear; - let t = 0.0; - const tInc = 1.0 / Math.max(1, steps - 1); - const tConstrain = MathUtil.constrain; - for (let i = 0; i < steps; i++) { - t = i * tInc; - t = tConstrain(t, 0.0, 1.0); - color = mlerp(colors, t); - colorsOutput.push(color); - } - return colorsOutput; - }, - - gradientMatrix(colors, stepsX, stepsY) { - // colors: { top, topRight, right, bottomLeft, bottom, bottomRight, left, center }; - // only 4 corners are required - let colorTopLeft = colors.topLeft; - let colorTop = colors.top; - let colorTopRight = colors.topRight; - let colorRight = colors.right; - let colorBottomLeft = colors.bottomLeft; - let colorBottom = colors.bottom; - let colorBottomRight = colors.bottomRight; - let colorLeft = colors.left; - let colorCenter = colors.center; - // var colorAvg = ColorRgbUtil.average; - const colorLerp = ColorRgbUtil.interpolateLinear; - const colorBerp = ColorRgbUtil.interpolateBilinear; - - if (!colorTopLeft || !colorTopRight || !colorBottomLeft || !colorBottomRight) { - return null; - } - if (!colorTop) { - // colorTop = colorAvg([colorTopLeft, colorTopRight]); - colorTop = colorLerp(colorTopLeft, colorTopRight, 0.5); - } - if (!colorRight) { - // colorRight = colorAvg([colorBottomRight, colorTopRight]); - colorRight = colorLerp(colorBottomRight, colorTopRight, 0.5); - } - if (!colorBottom) { - // colorBottom = colorAvg([colorBottomLeft, colorBottomRight]); - colorBottom = colorLerp(colorBottomLeft, colorBottomRight, 0.5); - } - if (!colorLeft) { - // colorLeft = colorAvg([colorTopLeft, colorBottomLeft]); - colorLeft = colorLerp(colorTopLeft, colorBottomLeft, 0.5); - } - if (!colorCenter) { - // colorCenter = colorAvg([colorTop, colorLeft, colorBottom, colorRight]); - colorCenter = colorBerp( - colorTop, - colorBottom, - colorLeft, - colorRight, - 0.5, - 0.5 +export function average(colors) { + let c; + let r = 0; + let g = 0; + let b = 0; + let a = 0; + let i = 0; + const j = colors.length; + for (i, j; i < j; i++) { + c = colors[i]; + r += c.r; + g += c.g; + b += c.b; + a += isNaN(c.a) ? 1.0 : c.a; + } + const round = Math.round; + r = round(r / j); + g = round(g / j); + b = round(b / j); + a = round(a / j); + return { r: r, g: g, b: b, a: a }; +} + +export function distance(colorA, colorB) { + const rDiff = colorA.r - colorB.r; + const gDiff = colorA.g - colorB.g; + const bDiff = colorA.b - colorB.b; + const aDiff = Math.round( + ((isNaN(colorA.a) ? 1.0 : colorA.a) - (isNaN(colorB.a) ? 1.0 : colorB.a)) * 255 + ); + return Math.sqrt(rDiff * rDiff + gDiff * gDiff + bDiff * bDiff + aDiff * aDiff); +} + +export function gradient(colors, steps) { + const colorsOutput = []; + let color; + const mlerp = interpolateMultilinear; + let t = 0.0; + const tInc = 1.0 / Math.max(1, steps - 1); + const tConstrain = MathUtil.constrain; + for (let i = 0; i < steps; i++) { + t = i * tInc; + t = tConstrain(t, 0.0, 1.0); + color = mlerp(colors, t); + colorsOutput.push(color); + } + return colorsOutput; +} + +export function gradientMatrix(colors, stepsX, stepsY) { + // colors: { top, topRight, right, bottomLeft, bottom, bottomRight, left, center }; + // only 4 corners are required + let colorTopLeft = colors.topLeft; + let colorTop = colors.top; + let colorTopRight = colors.topRight; + let colorRight = colors.right; + let colorBottomLeft = colors.bottomLeft; + let colorBottom = colors.bottom; + let colorBottomRight = colors.bottomRight; + let colorLeft = colors.left; + let colorCenter = colors.center; + // var colorAvg = average; + const colorLerp = interpolateLinear; + const colorBerp = interpolateBilinear; + + if (!colorTopLeft || !colorTopRight || !colorBottomLeft || !colorBottomRight) { + return null; + } + if (!colorTop) { + // colorTop = colorAvg([colorTopLeft, colorTopRight]); + colorTop = colorLerp(colorTopLeft, colorTopRight, 0.5); + } + if (!colorRight) { + // colorRight = colorAvg([colorBottomRight, colorTopRight]); + colorRight = colorLerp(colorBottomRight, colorTopRight, 0.5); + } + if (!colorBottom) { + // colorBottom = colorAvg([colorBottomLeft, colorBottomRight]); + colorBottom = colorLerp(colorBottomLeft, colorBottomRight, 0.5); + } + if (!colorLeft) { + // colorLeft = colorAvg([colorTopLeft, colorBottomLeft]); + colorLeft = colorLerp(colorTopLeft, colorBottomLeft, 0.5); + } + if (!colorCenter) { + // colorCenter = colorAvg([colorTop, colorLeft, colorBottom, colorRight]); + colorCenter = colorBerp(colorTop, colorBottom, colorLeft, colorRight, 0.5, 0.5); + } + + const colorsTopLeft = [colorTopLeft, colorLeft, colorCenter, colorTop]; + const colorsBottomLeft = [colorLeft, colorBottomLeft, colorBottom, colorCenter]; + const colorsBottomRight = [colorCenter, colorBottom, colorBottomRight, colorRight]; + const colorsTopRight = [colorTop, colorCenter, colorRight, colorTopRight]; + const colorsRegions = [ + [colorsTopLeft, colorsTopRight], + [colorsBottomLeft, colorsBottomRight], + ]; + let colorsRegion; + let color; + const colorsMatrix = []; + + // test + // var gradientTop = gradient([colorTopLeft, colorTop, colorTopRight], stepsX); + // var gradientLeft = gradient([colorTopLeft, colorLeft, colorBottomLeft], stepsY); + // var gradientBottom = gradient([colorBottomLeft, colorBottom, colorBottomRight], stepsX); + // var gradientRight = gradient([colorTopRight, colorRight, colorBottomRight], stepsY); + + let tX, tXScaled; + let tY, tYScaled; + const tScalar = InterpolationUtil.scalar; + + let x, y; + + for (y = 0; y < stepsY; y++) { + colorsMatrix[y] = []; + + tY = y / (stepsY - 1) || 0.0; + tYScaled = tScalar(2, tY); // 2 = colorsQuadrants.length + + for (x = 0; x < stepsX; x++) { + tX = x / (stepsX - 1) || 0.0; + tXScaled = tScalar(2, tX); // 2 = colorsQuadrants[tYScaled.index].length + + colorsRegion = colorsRegions[tYScaled.index][tXScaled.index]; + colorTopLeft = colorsRegion[0]; + colorBottomLeft = colorsRegion[1]; + colorBottomRight = colorsRegion[2]; + colorTopRight = colorsRegion[3]; + color = colorBerp( + colorTopLeft, + colorBottomLeft, + colorTopRight, + colorBottomRight, + tYScaled.t, + tXScaled.t ); - } - - const colorsTopLeft = [colorTopLeft, colorLeft, colorCenter, colorTop]; - const colorsBottomLeft = [colorLeft, colorBottomLeft, colorBottom, colorCenter]; - const colorsBottomRight = [ - colorCenter, - colorBottom, - colorBottomRight, - colorRight, - ]; - const colorsTopRight = [colorTop, colorCenter, colorRight, colorTopRight]; - const colorsRegions = [ - [colorsTopLeft, colorsTopRight], - [colorsBottomLeft, colorsBottomRight], - ]; - let colorsRegion; - let color; - const colorsMatrix = []; - - // test - // var gradientTop = ColorRgbUtil.gradient([colorTopLeft, colorTop, colorTopRight], stepsX); - // var gradientLeft = ColorRgbUtil.gradient([colorTopLeft, colorLeft, colorBottomLeft], stepsY); - // var gradientBottom = ColorRgbUtil.gradient([colorBottomLeft, colorBottom, colorBottomRight], stepsX); - // var gradientRight = ColorRgbUtil.gradient([colorTopRight, colorRight, colorBottomRight], stepsY); - - let tX, tXScaled; - let tY, tYScaled; - const tScalar = InterpolationUtil.scalar; - - let x, y; - - for (y = 0; y < stepsY; y++) { - colorsMatrix[y] = []; - - tY = y / (stepsY - 1) || 0.0; - tYScaled = tScalar(2, tY); // 2 = colorsQuadrants.length - - for (x = 0; x < stepsX; x++) { - tX = x / (stepsX - 1) || 0.0; - tXScaled = tScalar(2, tX); // 2 = colorsQuadrants[tYScaled.index].length - - colorsRegion = colorsRegions[tYScaled.index][tXScaled.index]; - colorTopLeft = colorsRegion[0]; - colorBottomLeft = colorsRegion[1]; - colorBottomRight = colorsRegion[2]; - colorTopRight = colorsRegion[3]; - color = colorBerp( - colorTopLeft, - colorBottomLeft, - colorTopRight, - colorBottomRight, - tYScaled.t, - tXScaled.t - ); - colorsMatrix[y][x] = color; - - // test - // colorsMatrix[y][stepsX - 1] = gradientRight[y]; - // colorsMatrix[y][0] = gradientLeft[y]; - } + colorsMatrix[y][x] = color; // test // colorsMatrix[y][stepsX - 1] = gradientRight[y]; // colorsMatrix[y][0] = gradientLeft[y]; } - return colorsMatrix; - }, - - interpolateBilinear( - colorTopLeft, - colorBottomLeft, - colorTopRight, - colorBottomRight, - ty, + // test + // colorsMatrix[y][stepsX - 1] = gradientRight[y]; + // colorsMatrix[y][0] = gradientLeft[y]; + } + + return colorsMatrix; +} + +export function interpolateBilinear( + colorTopLeft, + colorBottomLeft, + colorTopRight, + colorBottomRight, + ty, + tx +) { + const lerp = interpolateLinear; + return lerp( + lerp(colorTopLeft, colorBottomLeft, ty), + lerp(colorTopRight, colorBottomRight, ty), tx - ) { - const lerp = ColorRgbUtil.interpolateLinear; - return lerp( - lerp(colorTopLeft, colorBottomLeft, ty), - lerp(colorTopRight, colorBottomRight, ty), - tx - ); - }, - - interpolateLinear(colorFrom, colorTo, t) { - const lerp = InterpolationUtil.linear; - const round = Math.round; - return { - r: round(lerp(colorFrom.r, colorTo.r, t)), - g: round(lerp(colorFrom.g, colorTo.g, t)), - b: round(lerp(colorFrom.b, colorTo.b, t)), - a: round( - lerp( - isNaN(colorFrom.a) ? 1.0 : colorFrom.a, - isNaN(colorTo.a) ? 1.0 : colorTo.a, - t - ) - ), - }; - }, - - interpolateMultilinear(colors, t) { - const s = InterpolationUtil.scalar(colors.length - 1, t); - const i = s.index; - return ColorRgbUtil.interpolateLinear(colors[i], colors[i + 1], s.t); - }, - - nearest(colorSearch, colors) { - const calcDistance = ColorRgbUtil.distance; - let tempDistance; - let nearestDistance = - calcDistance({ r: 0, g: 0, b: 0 }, { r: 255, g: 255, b: 255 }) + 1.0; - let nearestColor = null; - for (let i = 0, j = colors.length; i < j; i++) { - tempDistance = calcDistance(colorSearch, colors[i]); - if (tempDistance < nearestDistance) { - nearestDistance = tempDistance; - nearestColor = colors[i]; - } + ); +} + +export function interpolateLinear(colorFrom, colorTo, t) { + const lerp = InterpolationUtil.linear; + const round = Math.round; + return { + r: round(lerp(colorFrom.r, colorTo.r, t)), + g: round(lerp(colorFrom.g, colorTo.g, t)), + b: round(lerp(colorFrom.b, colorTo.b, t)), + a: round( + lerp( + isNaN(colorFrom.a) ? 1.0 : colorFrom.a, + isNaN(colorTo.a) ? 1.0 : colorTo.a, + t + ) + ), + }; +} + +export function interpolateMultilinear(colors, t) { + const s = InterpolationUtil.scalar(colors.length - 1, t); + const i = s.index; + return interpolateLinear(colors[i], colors[i + 1], s.t); +} + +export function nearest(colorSearch, colors) { + const calcDistance = distance; + let tempDistance; + let nearestDistance = + calcDistance({ r: 0, g: 0, b: 0 }, { r: 255, g: 255, b: 255 }) + 1.0; + let nearestColor = null; + for (let i = 0, j = colors.length; i < j; i++) { + tempDistance = calcDistance(colorSearch, colors[i]); + if (tempDistance < nearestDistance) { + nearestDistance = tempDistance; + nearestColor = colors[i]; } - return nearestColor; - }, - - toCmyk(color) { - const r = color.r / 255; - const g = color.g / 255; - const b = color.b / 255; - - const ir = 1.0 - r; - const ig = 1.0 - g; - const ib = 1.0 - b; - let k = Math.min(ir, ig, ib); - const ik = 1.0 - k; - - let c = k < 1.0 ? (ir - k) / ik : 0; - let m = k < 1.0 ? (ig - k) / ik : 0; - let y = k < 1.0 ? (ib - k) / ik : 0; - - c *= 100; - m *= 100; - y *= 100; - k *= 100; - - const round = Math.round; - c = round(c); - m = round(m); - y = round(y); - k = round(k); - - return { c: c, m: m, y: y, k: k }; - }, - - // toGrayscale: function(color, algorithm) - // { - // // TODO - // // http://cadik.posvete.cz/color_to_gray_evaluation/ - // }, - - toHex(color, prefix) { - const a = isNaN(color.a) ? null : color.a; - const r = isNaN(color.r) ? 0 : color.r; - const g = isNaN(color.g) ? 0 : color.g; - const b = isNaN(color.b) ? 0 : color.b; - const hex = HexUtil.encodeInt; - return String( - (prefix || '#') + - (a === null || a >= 1.0 ? '' : hex(a * 255)) + - hex(r) + - hex(g) + - hex(b) - ); - }, - - // toHsl: function(color) - // { - // // TODO - // }, - - // toHsv: function(color) - // { - // // TODO - // // https://gist.github.com/felipesabino/5066336/revisions - // }, - - toString(color) { - // prettier-ignore - return `{ r:${String(color.r)}, g:${String(color.g)}, b:${String(color.b)}, a:${String(isNaN(color.a) ? 1.0 : color.a)} }`; - }, - - toStringCSS(color) { - // prettier-ignore - return `rgba(${String(color.r)}, ${String(color.g)}, ${String(color.b)}, ${String(isNaN(color.a) ? 1.0 : color.a)})`; - }, -}; + } + return nearestColor; +} + +export function toCmyk(color) { + const r = color.r / 255; + const g = color.g / 255; + const b = color.b / 255; + + const ir = 1.0 - r; + const ig = 1.0 - g; + const ib = 1.0 - b; + let k = Math.min(ir, ig, ib); + const ik = 1.0 - k; + + let c = k < 1.0 ? (ir - k) / ik : 0; + let m = k < 1.0 ? (ig - k) / ik : 0; + let y = k < 1.0 ? (ib - k) / ik : 0; + + c *= 100; + m *= 100; + y *= 100; + k *= 100; + + const round = Math.round; + c = round(c); + m = round(m); + y = round(y); + k = round(k); + + return { c: c, m: m, y: y, k: k }; +} + +// export function toGrayscale(color, algorithm) { +// // TODO +// // http://cadik.posvete.cz/color_to_gray_evaluation/ +// }; + +export function toHex(color, prefix) { + const a = isNaN(color.a) ? null : color.a; + const r = isNaN(color.r) ? 0 : color.r; + const g = isNaN(color.g) ? 0 : color.g; + const b = isNaN(color.b) ? 0 : color.b; + const hex = HexUtil.encodeInt; + return String( + (prefix || '#') + + (a === null || a >= 1.0 ? '' : hex(a * 255)) + + hex(r) + + hex(g) + + hex(b) + ); +} + +// export function toHsl(color) { +// // TODO +// }; + +// export function toHsv(color) { +// // TODO +// // https://gist.github.com/felipesabino/5066336/revisions +// }; + +export function toString(color) { + // prettier-ignore + return `{ r:${String(color.r)}, g:${String(color.g)}, b:${String(color.b)}, a:${String(isNaN(color.a) ? 1.0 : color.a)} }`; +} + +export function toStringCSS(color) { + // prettier-ignore + return `rgba(${String(color.r)}, ${String(color.g)}, ${String(color.b)}, ${String(isNaN(color.a) ? 1.0 : color.a)})`; +} diff --git a/src/utils/ColorUtil.js b/src/utils/ColorUtil.js index 899da78..cf2302c 100644 --- a/src/utils/ColorUtil.js +++ b/src/utils/ColorUtil.js @@ -1,9 +1,8 @@ -/** global: ColorUtil */ /** global: ColorCmykUtil */ /** global: ColorHexUtil */ /** global: ColorRgbUtil */ -ColorUtil = { +const ColorUtil = { cmyk: ColorCmykUtil, // cmykToGrayscale: ColorCmykUtil.toGrayscale, cmykToHex: ColorCmykUtil.toHex, diff --git a/src/utils/DateUtil.js b/src/utils/DateUtil.js index fc0af33..ed1aa96 100644 --- a/src/utils/DateUtil.js +++ b/src/utils/DateUtil.js @@ -1,225 +1,219 @@ -/** global: DateUtil */ /** global: StringUtil */ -/** global: isDate */ - -DateUtil = { - clone(date) { - return new Date(date.getTime()); - }, - - constrain(date, a, b) { - const dateMin = DateUtil.min(a, b); - const dateMax = DateUtil.max(a, b); - return DateUtil.min(DateUtil.max(date, dateMin), dateMax); - }, - - format(date, str) { - // https://docs.djangoproject.com/en/4.0/ref/templates/builtins/#date - const replace = StringUtil.replace; - const padZeros = StringUtil.padZeros; - const months = [ - 'January', - 'February', - 'March', - 'April', - 'May', - 'June', - 'July', - 'August', - 'September', - 'October', - 'November', - 'December', - ]; - const days = [ - 'Sunday', - 'Monday', - 'Tuesday', - 'Wednesday', - 'Thursday', - 'Friday', - 'Saturday', - ]; - const dt = date.getDate(); - const year = date.getFullYear(); - const month = date.getMonth(); - const monthNum = month + 1; - const monthName = months[month]; - const day = date.getDay(); - const hours = date.getHours(); - const minutes = date.getMinutes(); - const seconds = date.getSeconds(); - const milliseconds = date.getMilliseconds(); - const placeholders = [ - ['YYYY', year], - ['YY', padZeros(year, 4).substring(2, 4)], - ['MM', padZeros(monthNum, 2)], - ['M', monthNum], - ['DD', padZeros(dt, 2)], - ['D', dt], - ['hh', padZeros(hours, 2)], - ['h', hours], - ['mm', padZeros(minutes, 2)], - ['m', minutes], - ['ss', padZeros(seconds, 2)], - ['s', seconds], - ['ll', padZeros(milliseconds, 2)], - ['XX', monthName], - ['X', monthName.substring(0, 3)], - ['ZZ', days[day]], - ['Z', days[day].substring(0, 3)], - ]; - let placeholder, occurrence; - for (let i = 0, j = placeholders.length; i < j; i++) { - placeholder = placeholders[i]; - occurrence = placeholder[0]; - if (!str.includes(occurrence)) { - continue; - } - str = replace(str, occurrence, placeholder[1]); + +export function clone(date) { + return new Date(date.getTime()); +} + +export function constrain(date, a, b) { + const dateMin = min(a, b); + const dateMax = max(a, b); + return min(max(date, dateMin), dateMax); +} + +export function format(date, str) { + // https://docs.djangoproject.com/en/4.0/ref/templates/builtins/#date + const replace = StringUtil.replace; + const padZeros = StringUtil.padZeros; + const months = [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', + ]; + const days = [ + 'Sunday', + 'Monday', + 'Tuesday', + 'Wednesday', + 'Thursday', + 'Friday', + 'Saturday', + ]; + const dt = date.getDate(); + const year = date.getFullYear(); + const month = date.getMonth(); + const monthNum = month + 1; + const monthName = months[month]; + const day = date.getDay(); + const hours = date.getHours(); + const minutes = date.getMinutes(); + const seconds = date.getSeconds(); + const milliseconds = date.getMilliseconds(); + const placeholders = [ + ['YYYY', year], + ['YY', padZeros(year, 4).substring(2, 4)], + ['MM', padZeros(monthNum, 2)], + ['M', monthNum], + ['DD', padZeros(dt, 2)], + ['D', dt], + ['hh', padZeros(hours, 2)], + ['h', hours], + ['mm', padZeros(minutes, 2)], + ['m', minutes], + ['ss', padZeros(seconds, 2)], + ['s', seconds], + ['ll', padZeros(milliseconds, 2)], + ['XX', monthName], + ['X', monthName.substring(0, 3)], + ['ZZ', days[day]], + ['Z', days[day].substring(0, 3)], + ]; + let placeholder, occurrence; + for (let i = 0, j = placeholders.length; i < j; i++) { + placeholder = placeholders[i]; + occurrence = placeholder[0]; + if (!str.includes(occurrence)) { + continue; } - return str; - }, - - /* - hhmm: function(hours, minutes, separator) - { - var hh = StringUtil.padZeros(hours, 2); - var mm = StringUtil.padZeros(minutes, 2); - var sep = (separator || ':'); - return (hh + sep + mm); - }, - */ - - identifier(date) { - const d = date || new Date(); - const year = d.getFullYear(); - const month = d.getMonth() + 1; // getMonth() is zero-based - const day = d.getDate(); - const hours = d.getHours(); - const minutes = d.getMinutes(); - const seconds = d.getSeconds(); - const milliseconds = d.getMilliseconds(); + str = replace(str, occurrence, placeholder[1]); + } + return str; +} + +/* +export function hhmm: function(hours, minutes, separator) +{ + var hh = StringUtil.padZeros(hours, 2); + var mm = StringUtil.padZeros(minutes, 2); + var sep = (separator || ':'); + return (hh + sep + mm); +}; +*/ + +export function identifier(date) { + const d = date || new Date(); + const year = d.getFullYear(); + const month = d.getMonth() + 1; // getMonth() is zero-based + const day = d.getDate(); + const hours = d.getHours(); + const minutes = d.getMinutes(); + const seconds = d.getSeconds(); + const milliseconds = d.getMilliseconds(); + return ( + String(year) + + StringUtil.padZeros(month, 2) + + StringUtil.padZeros(day, 2) + + StringUtil.padZeros(hours, 2) + + StringUtil.padZeros(minutes, 2) + + StringUtil.padZeros(seconds, 2) + + StringUtil.padZeros(milliseconds, 3) + ); +} + +export function isFuture(date, checkTime) { + const day = new Date(date.getTime()); + const now = new Date(); + if (checkTime !== true) { + day.setHours(0); + day.setMinutes(0); + day.setSeconds(0); + day.setMilliseconds(0); + } + const delta = now.getTime() - day.getTime(); + return delta < 0; +} + +export function isPast(date, checkTime) { + const day = new Date(date.getTime()); + const now = new Date(); + if (checkTime !== true) { + now.setHours(0); + now.setMinutes(0); + now.setSeconds(0); + now.setMilliseconds(0); + } + const delta = now.getTime() - day.getTime(); + return delta > 0; +} + +export function max(date, other) { + return date.getTime() > other.getTime() ? date : other; +} + +export function min(date, other) { + return date.getTime() <= other.getTime() ? date : other; +} + +export function normalize(ms) { + const time = { + milliseconds: ms % 1000, + seconds: Math.floor(ms / 1000) % 60, + minutes: Math.floor(ms / 1000 / 60) % 60, + hours: Math.floor(ms / 1000 / 60 / 60) % 24, + days: Math.floor(ms / 1000 / 60 / 60 / 24), + }; + return time; +} + +export function parse(date) { + let timestamp; + const timestampIsValid = (t) => { return ( - String(year) + - StringUtil.padZeros(month, 2) + - StringUtil.padZeros(day, 2) + - StringUtil.padZeros(hours, 2) + - StringUtil.padZeros(minutes, 2) + - StringUtil.padZeros(seconds, 2) + - StringUtil.padZeros(milliseconds, 3) + TypeUtil.isNumber(t) && t >= 0 && TypeUtil.isNumber(new Date(t).getTime()) ); - }, - - isFuture(date, checkTime) { - const day = new Date(date.getTime()); - const now = new Date(); - if (checkTime !== true) { - day.setHours(0); - day.setMinutes(0); - day.setSeconds(0); - day.setMilliseconds(0); + }; + if (TypeUtil.isDate(date)) { + return date; + } else if (TypeUtil.isNumber(date)) { + timestamp = date; + if (timestampIsValid(timestamp)) { + return new Date(timestamp); } - const delta = now.getTime() - day.getTime(); - return delta < 0; - }, - - isPast(date, checkTime) { - const day = new Date(date.getTime()); - const now = new Date(); - if (checkTime !== true) { - now.setHours(0); - now.setMinutes(0); - now.setSeconds(0); - now.setMilliseconds(0); + } else if (TypeUtil.isString(date)) { + timestamp = Number(date); + if (timestampIsValid(timestamp)) { + return new Date(timestamp); } - const delta = now.getTime() - day.getTime(); - return delta > 0; - }, - - max(date, other) { - return date.getTime() > other.getTime() ? date : other; - }, - - min(date, other) { - return date.getTime() <= other.getTime() ? date : other; - }, - - normalize(ms) { - const time = { - milliseconds: ms % 1000, - seconds: Math.floor(ms / 1000) % 60, - minutes: Math.floor(ms / 1000 / 60) % 60, - hours: Math.floor(ms / 1000 / 60 / 60) % 24, - days: Math.floor(ms / 1000 / 60 / 60 / 24), - }; - return time; - }, - - parse(date) { - let timestamp; - const timestampIsValid = (t) => { - return ( - TypeUtil.isNumber(t) && - t >= 0 && - TypeUtil.isNumber(new Date(t).getTime()) - ); - }; - if (TypeUtil.isDate(date)) { - return date; - } else if (TypeUtil.isNumber(date)) { - timestamp = date; - if (timestampIsValid(timestamp)) { - return new Date(timestamp); - } - } else if (TypeUtil.isString(date)) { - timestamp = Number(date); - if (timestampIsValid(timestamp)) { - return new Date(timestamp); - } - timestamp = Date.parse(date); - if (timestampIsValid(timestamp)) { - return new Date(timestamp); - } + timestamp = Date.parse(date); + if (timestampIsValid(timestamp)) { + return new Date(timestamp); } - return null; - }, - - timestamp(date) { - const d = date || new Date(); - return d.getTime(); - }, - - today() { - const d = new Date(); - d.setHours(0); - d.setMinutes(0); - d.setSeconds(0); - d.setMilliseconds(0); - return d; - }, - - tomorrow() { - const d = DateUtil.today(); - d.setDate(d.getDate() + 1); - return d; - }, - - yesterday() { - const d = DateUtil.today(); - d.setDate(d.getDate() - 1); - return d; - }, - - yyyymmdd(date, separator) { - const d = date || new Date(); - const year = d.getFullYear(); - const month = d.getMonth() + 1; // getMonth() is zero-based - const day = d.getDate(); - const sep = separator || ''; - // prettier-ignore - return (String(year) + sep + - StringUtil.padZeros(month, 2) + sep + - StringUtil.padZeros(day, 2)); - }, -}; + } + return null; +} + +export function timestamp(date) { + const d = date || new Date(); + return d.getTime(); +} + +export function today() { + const d = new Date(); + d.setHours(0); + d.setMinutes(0); + d.setSeconds(0); + d.setMilliseconds(0); + return d; +} + +export function tomorrow() { + const d = today(); + d.setDate(d.getDate() + 1); + return d; +} + +export function yesterday() { + const d = today(); + d.setDate(d.getDate() - 1); + return d; +} + +export function yyyymmdd(date, separator) { + const d = date || new Date(); + const year = d.getFullYear(); + const month = d.getMonth() + 1; // getMonth() is zero-based + const day = d.getDate(); + const sep = separator || ''; + // prettier-ignore + return (String(year) + sep + + StringUtil.padZeros(month, 2) + sep + + StringUtil.padZeros(day, 2)); +} diff --git a/src/utils/EaseUtil.js b/src/utils/EaseUtil.js index 6e7fce8..9dfb3da 100644 --- a/src/utils/EaseUtil.js +++ b/src/utils/EaseUtil.js @@ -1,33 +1,46 @@ -/** global: EaseUtil */ - -EaseUtil = { - backIn(t, s) { - // s = overshoot = 1.70158 - s = isNaN(s) ? 1.70158 : s; - return t * t * ((s + 1.0) * t - s); - }, - - backInOut(t, s) { - // s = overshoot = 1.70158 - s = isNaN(s) ? 1.70158 : s; - t /= 0.5; - if (t < 1.0) { - s *= 1.525; - return 0.5 * (t * t * ((s + 1.0) * t - s)); - } - t -= 2.0; +export function backIn(t, s) { + // s = overshoot = 1.70158 + s = isNaN(s) ? 1.70158 : s; + return t * t * ((s + 1.0) * t - s); +} + +export function backInOut(t, s) { + // s = overshoot = 1.70158 + s = isNaN(s) ? 1.70158 : s; + t /= 0.5; + if (t < 1.0) { s *= 1.525; - return 0.5 * (t * t * ((s + 1.0) * t + s) + 2.0); - }, - - backOut(t, s) { - // s = overshoot = 1.70158 - s = isNaN(s) ? 1.70158 : s; - t -= 1.0; - return t * t * ((s + 1.0) * t + s) + 1.0; - }, - - bounceIn(t) { + return 0.5 * (t * t * ((s + 1.0) * t - s)); + } + t -= 2.0; + s *= 1.525; + return 0.5 * (t * t * ((s + 1.0) * t + s) + 2.0); +} + +export function backOut(t, s) { + // s = overshoot = 1.70158 + s = isNaN(s) ? 1.70158 : s; + t -= 1.0; + return t * t * ((s + 1.0) * t + s) + 1.0; +} + +export function bounceIn(t) { + t = 1.0 - t; + if (t < 1.0 / 2.75) { + return 1.0 - 7.5625 * t * t; + } else if (t < 2.0 / 2.75) { + t -= 1.5 / 2.75; + return 1.0 - (7.5625 * t * t + 0.75); + } else if (t < 2.5 / 2.75) { + t -= 2.25 / 2.75; + return 1.0 - (7.5625 * t * t + 0.9375); + } + t -= 2.625 / 2.75; + return 1.0 - (7.5625 * t * t + 0.984375); +} + +export function bounceInOut(t) { + if (t < 0.5) { t = 1.0 - t; if (t < 1.0 / 2.75) { return 1.0 - 7.5625 * t * t; @@ -40,311 +53,292 @@ EaseUtil = { } t -= 2.625 / 2.75; return 1.0 - (7.5625 * t * t + 0.984375); - }, - - bounceInOut(t) { - if (t < 0.5) { - t = 1.0 - t; - if (t < 1.0 / 2.75) { - return 1.0 - 7.5625 * t * t; - } else if (t < 2.0 / 2.75) { - t -= 1.5 / 2.75; - return 1.0 - (7.5625 * t * t + 0.75); - } else if (t < 2.5 / 2.75) { - t -= 2.25 / 2.75; - return 1.0 - (7.5625 * t * t + 0.9375); - } - t -= 2.625 / 2.75; - return 1.0 - (7.5625 * t * t + 0.984375); - } - if (t < 1.0 / 2.75) { - return 7.5625 * t * t; - } else if (t < 2.0 / 2.75) { - t -= 1.5 / 2.75; - return 7.5625 * t * t + 0.75; - } else if (t < 2.5 / 2.75) { - t -= 2.25 / 2.75; - return 7.5625 * t * t + 0.9375; - } - t -= 2.625 / 2.75; - return 7.5625 * t * t + 0.984375; - }, - - bounceOut(t) { - if (t < 1.0 / 2.75) { - return 7.5625 * t * t; - } else if (t < 2.0 / 2.75) { - t -= 1.5 / 2.75; - return 7.5625 * t * t + 0.75; - } else if (t < 2.5 / 2.75) { - t -= 2.25 / 2.75; - return 7.5625 * t * t + 0.9375; - } - t -= 2.625 / 2.75; - return 7.5625 * t * t + 0.984375; - }, - - circularIn(t) { - return -(Math.sqrt(1.0 - t * t) - 1.0); - }, - - circularInOut(t) { - t /= 0.5; - if (t < 1.0) { - return -0.5 * (Math.sqrt(1.0 - t * t) - 1.0); - } - t -= 2.0; - return 0.5 * (Math.sqrt(1.0 - t * t) + 1.0); - }, - - circularOut(t) { - t -= 1.0; - return Math.sqrt(1.0 - t * t); - }, - - cubicIn(t) { - return t * t * t; - }, - - cubicInOut(t) { - t /= 0.5; - if (t < 1.0) { - return 0.5 * t * t * t; - } - t -= 2.0; - return 0.5 * (t * t * t + 2.0); - }, - - cubicOut(t) { - t -= 1.0; - return t * t * t + 1.0; - }, - - elasticIn(t, a, p) { - // a = amplitude = 0.0, p = period = 0.3 - if (t === 0.0) { - return 0.0; - } - if (t === 1.0) { - return 1.0; - } - a = isNaN(a) ? 0.0 : a; - p = isNaN(p) ? 0.3 : p; - let s; - if (a < 1.0) { - a = 1.0; - s = p / 4.0; - } else { - s = (p / (2.0 * Math.PI)) * Math.asin(1.0 / a); - } - t -= 1.0; - return -(a * 2.0 ** (10.0 * t) * Math.sin(((t - s) * (2.0 * Math.PI)) / p)); - }, - - elasticInOut(t, a, p) { - // a = amplitude = 0.0, p = period = 0.3 - if (t === 0.0) { - return 0.0; - } - t /= 0.5; - if (t === 2.0) { - return 1.0; - } - a = isNaN(a) ? 0.0 : a; - p = isNaN(p) ? 0.3 : p; - let s; - if (p === 0.3) { - p *= 1.5; - } - if (a < 1.0) { - a = 1.0; - s = p / 4.0; - } else { - s = (p / (2.0 * Math.PI)) * Math.asin(1.0 / a); - } - if (t < 1.0) { - t -= 1.0; - return ( - -0.5 * - (a * 2.0 ** (10.0 * t) * Math.sin(((t - s) * (2.0 * Math.PI)) / p)) - ); - } + } + if (t < 1.0 / 2.75) { + return 7.5625 * t * t; + } else if (t < 2.0 / 2.75) { + t -= 1.5 / 2.75; + return 7.5625 * t * t + 0.75; + } else if (t < 2.5 / 2.75) { + t -= 2.25 / 2.75; + return 7.5625 * t * t + 0.9375; + } + t -= 2.625 / 2.75; + return 7.5625 * t * t + 0.984375; +} + +export function bounceOut(t) { + if (t < 1.0 / 2.75) { + return 7.5625 * t * t; + } else if (t < 2.0 / 2.75) { + t -= 1.5 / 2.75; + return 7.5625 * t * t + 0.75; + } else if (t < 2.5 / 2.75) { + t -= 2.25 / 2.75; + return 7.5625 * t * t + 0.9375; + } + t -= 2.625 / 2.75; + return 7.5625 * t * t + 0.984375; +} + +export function circularIn(t) { + return -(Math.sqrt(1.0 - t * t) - 1.0); +} + +export function circularInOut(t) { + t /= 0.5; + if (t < 1.0) { + return -0.5 * (Math.sqrt(1.0 - t * t) - 1.0); + } + t -= 2.0; + return 0.5 * (Math.sqrt(1.0 - t * t) + 1.0); +} + +export function circularOut(t) { + t -= 1.0; + return Math.sqrt(1.0 - t * t); +} + +export function cubicIn(t) { + return t * t * t; +} + +export function cubicInOut(t) { + t /= 0.5; + if (t < 1.0) { + return 0.5 * t * t * t; + } + t -= 2.0; + return 0.5 * (t * t * t + 2.0); +} + +export function cubicOut(t) { + t -= 1.0; + return t * t * t + 1.0; +} + +export function elasticIn(t, a, p) { + // a = amplitude = 0.0, p = period = 0.3 + if (t === 0.0) { + return 0.0; + } + if (t === 1.0) { + return 1.0; + } + a = isNaN(a) ? 0.0 : a; + p = isNaN(p) ? 0.3 : p; + let s; + if (a < 1.0) { + a = 1.0; + s = p / 4.0; + } else { + s = (p / (2.0 * Math.PI)) * Math.asin(1.0 / a); + } + t -= 1.0; + return -(a * 2.0 ** (10.0 * t) * Math.sin(((t - s) * (2.0 * Math.PI)) / p)); +} + +export function elasticInOut(t, a, p) { + // a = amplitude = 0.0, p = period = 0.3 + if (t === 0.0) { + return 0.0; + } + t /= 0.5; + if (t === 2.0) { + return 1.0; + } + a = isNaN(a) ? 0.0 : a; + p = isNaN(p) ? 0.3 : p; + let s; + if (p === 0.3) { + p *= 1.5; + } + if (a < 1.0) { + a = 1.0; + s = p / 4.0; + } else { + s = (p / (2.0 * Math.PI)) * Math.asin(1.0 / a); + } + if (t < 1.0) { t -= 1.0; return ( - a * 2.0 ** (-10.0 * t) * Math.sin(((t - s) * (2.0 * Math.PI)) / p) * 0.5 + - 1.0 + -0.5 * (a * 2.0 ** (10.0 * t) * Math.sin(((t - s) * (2.0 * Math.PI)) / p)) ); - }, - - elasticOut(t, a, p) { - // a = amplitude = 0.0, p = period = 0.3 - if (t === 0.0) { - return 0.0; - } - if (t === 1.0) { - return 1.0; - } - a = isNaN(a) ? 0.0 : a; - p = isNaN(p) ? 0.3 : p; - let s; - if (a < 1.0) { - a = 1.0; - s = p / 4.0; - } else { - s = (p / (2.0 * Math.PI)) * Math.asin(1.0 / a); - } - return a * 2.0 ** (-10.0 * t) * Math.sin(((t - s) * (2.0 * Math.PI)) / p) + 1.0; - }, - - exponentialIn(t) { - if (t === 0.0) { - return 0.0; - } - return 2.0 ** (10.0 * (t - 1.0)); - }, - - exponentialInOut(t) { - if (t === 0.0) { - return 0.0; - } - if (t === 1.0) { - return 1.0; - } - t /= 0.5; - if (t < 1.0) { - return 0.5 * 2.0 ** (10.0 * (t - 1.0)); - } - t -= 1.0; - return 0.5 * (-(2.0 ** (-10.0 * t)) + 2.0); - }, - - exponentialOut(t) { - if (t === 1.0) { - return t; - } - return -(2.0 ** (-10.0 * t)) + 1.0; - }, - - none(t) { + } + t -= 1.0; + return ( + a * 2.0 ** (-10.0 * t) * Math.sin(((t - s) * (2.0 * Math.PI)) / p) * 0.5 + 1.0 + ); +} + +export function elasticOut(t, a, p) { + // a = amplitude = 0.0, p = period = 0.3 + if (t === 0.0) { + return 0.0; + } + if (t === 1.0) { + return 1.0; + } + a = isNaN(a) ? 0.0 : a; + p = isNaN(p) ? 0.3 : p; + let s; + if (a < 1.0) { + a = 1.0; + s = p / 4.0; + } else { + s = (p / (2.0 * Math.PI)) * Math.asin(1.0 / a); + } + return a * 2.0 ** (-10.0 * t) * Math.sin(((t - s) * (2.0 * Math.PI)) / p) + 1.0; +} + +export function exponentialIn(t) { + if (t === 0.0) { + return 0.0; + } + return 2.0 ** (10.0 * (t - 1.0)); +} + +export function exponentialInOut(t) { + if (t === 0.0) { + return 0.0; + } + if (t === 1.0) { + return 1.0; + } + t /= 0.5; + if (t < 1.0) { + return 0.5 * 2.0 ** (10.0 * (t - 1.0)); + } + t -= 1.0; + return 0.5 * (-(2.0 ** (-10.0 * t)) + 2.0); +} + +export function exponentialOut(t) { + if (t === 1.0) { return t; - }, - - quadraticIn(t) { - return t * t; - }, - - quadraticInOut(t) { - t /= 0.5; - if (t < 1.0) { - return 0.5 * t * t; - } - t -= 1.0; - return -0.5 * (t * (t - 2.0) - 1.0); - }, - - quadraticOut(t) { - return -t * (t - 2.0); - }, - - quarticIn(t) { - return t * t * t * t; - }, - - quarticInOut(t) { - t /= 0.5; - if (t < 1.0) { - return 0.5 * t * t * t * t; - } - t -= 2.0; - return -0.5 * (t * t * t * t - 2.0); - }, - - quarticOut(t) { - t -= 1.0; - return -(t * t * t * t - 1.0); - }, - - quinticIn(t) { - return t * t * t * t * t; - }, - - quinticInOut(t) { - t /= 0.5; - if (t < 1.0) { - return 0.5 * t * t * t * t * t; - } - t -= 2.0; - return 0.5 * (t * t * t * t * t + 2.0); - }, - - quinticOut(t) { - t -= 1.0; - return t * t * t * t * t + 1.0; - }, - - sexticIn(t) { - return t * t * t * t * t * t; - }, - - sexticInOut(t) { - t /= 0.5; - if (t < 1.0) { - return 0.5 * t * t * t * t * t * t; - } - t -= 2.0; - return -0.5 * (t * t * t * t * t * t - 2.0); - }, - - sexticOut(t) { - t -= 1.0; - return -(t * t * t * t * t * t - 1.0); - }, - - sineIn(t) { - return -Math.cos(t * (Math.PI / 2.0)) + 1.0; - }, - - sineInOut(t) { - return -0.5 * (Math.cos(Math.PI * t) - 1.0); - }, - - sineOut(t) { - return Math.sin(t * (Math.PI / 2.0)); - }, - - waveCosine(t, f, a, i) { - // t, f = frequency = 1.0, a = absolute = false, i = inverse = false - f = isNaN(f) ? 1.0 : f; - a = a === true ? true : false; - i = i === true ? true : false; - - let w = Math.cos(Math.PI * t * f); - w = a ? Math.abs(w) : w; - w = i ? 1.0 - w : w; - return w; - }, - - waveSawtooth(t, f, a, i) { - // t, f = frequency = 1.0, a = absolute = false, i = inverse = false - f = isNaN(f) ? 1.0 : f; - a = a === true ? true : false; - i = i === true ? true : false; - - let w = (t * f) % 1.0; - w = a ? Math.abs(w) : w; - w = i ? 1.0 - w : w; - return w; - }, - - waveSine(t, f, a, i) { - // t, f = frequency = 1.0, a = absolute = false, i = inverse = false - f = isNaN(f) ? 1.0 : f; - a = a === true ? true : false; - i = i === true ? true : false; - - let w = Math.sin(Math.PI * t * f); - w = a ? Math.abs(w) : w; - w = i ? 1.0 - w : w; - return w; - }, -}; + } + return -(2.0 ** (-10.0 * t)) + 1.0; +} + +export function none(t) { + return t; +} + +export function quadraticIn(t) { + return t * t; +} + +export function quadraticInOut(t) { + t /= 0.5; + if (t < 1.0) { + return 0.5 * t * t; + } + t -= 1.0; + return -0.5 * (t * (t - 2.0) - 1.0); +} + +export function quadraticOut(t) { + return -t * (t - 2.0); +} + +export function quarticIn(t) { + return t * t * t * t; +} + +export function quarticInOut(t) { + t /= 0.5; + if (t < 1.0) { + return 0.5 * t * t * t * t; + } + t -= 2.0; + return -0.5 * (t * t * t * t - 2.0); +} + +export function quarticOut(t) { + t -= 1.0; + return -(t * t * t * t - 1.0); +} + +export function quinticIn(t) { + return t * t * t * t * t; +} + +export function quinticInOut(t) { + t /= 0.5; + if (t < 1.0) { + return 0.5 * t * t * t * t * t; + } + t -= 2.0; + return 0.5 * (t * t * t * t * t + 2.0); +} + +export function quinticOut(t) { + t -= 1.0; + return t * t * t * t * t + 1.0; +} + +export function sexticIn(t) { + return t * t * t * t * t * t; +} + +export function sexticInOut(t) { + t /= 0.5; + if (t < 1.0) { + return 0.5 * t * t * t * t * t * t; + } + t -= 2.0; + return -0.5 * (t * t * t * t * t * t - 2.0); +} + +export function sexticOut(t) { + t -= 1.0; + return -(t * t * t * t * t * t - 1.0); +} + +export function sineIn(t) { + return -Math.cos(t * (Math.PI / 2.0)) + 1.0; +} + +export function sineInOut(t) { + return -0.5 * (Math.cos(Math.PI * t) - 1.0); +} + +export function sineOut(t) { + return Math.sin(t * (Math.PI / 2.0)); +} + +export function waveCosine(t, f, a, i) { + // t, f = frequency = 1.0, a = absolute = false, i = inverse = false + f = isNaN(f) ? 1.0 : f; + a = a === true ? true : false; + i = i === true ? true : false; + + let w = Math.cos(Math.PI * t * f); + w = a ? Math.abs(w) : w; + w = i ? 1.0 - w : w; + return w; +} + +export function waveSawtooth(t, f, a, i) { + // t, f = frequency = 1.0, a = absolute = false, i = inverse = false + f = isNaN(f) ? 1.0 : f; + a = a === true ? true : false; + i = i === true ? true : false; + + let w = (t * f) % 1.0; + w = a ? Math.abs(w) : w; + w = i ? 1.0 - w : w; + return w; +} + +export function waveSine(t, f, a, i) { + // t, f = frequency = 1.0, a = absolute = false, i = inverse = false + f = isNaN(f) ? 1.0 : f; + a = a === true ? true : false; + i = i === true ? true : false; + + let w = Math.sin(Math.PI * t * f); + w = a ? Math.abs(w) : w; + w = i ? 1.0 - w : w; + return w; +} diff --git a/src/utils/FunctionUtil.js b/src/utils/FunctionUtil.js index 6c8c548..a6a7756 100644 --- a/src/utils/FunctionUtil.js +++ b/src/utils/FunctionUtil.js @@ -1,175 +1,172 @@ -/** global: FunctionUtil */ /** global: TypeUtil */ -FunctionUtil = { - args(argumentsObj, skipCount) { - return [].slice.call(argumentsObj, skipCount || 0); - }, - - attempt(func, scope) { - try { - const args = FunctionUtil.args(arguments); - const result = FunctionUtil.call.apply(null, args); - return result; - } catch (e) { - return e; - } - }, - - bind(func, scope) { - const argsBinded = FunctionUtil.args(arguments); - return function () { - const args = FunctionUtil.args(arguments); - const result = FunctionUtil.call.apply(null, argsBinded.concat(args)); - return result; - }; - }, - - call(func, scope) { - if (TypeUtil.isString(func)) { - func = scope[func]; - } - const args = FunctionUtil.args(arguments, 2); - const result = func.apply(scope, args); +export function args(argumentsObj, skipCount) { + return [].slice.call(argumentsObj, skipCount || 0); +} + +export function attempt(func, scope) { + try { + const args = args(arguments); + const result = call.apply(null, args); return result; - }, - - debounce(milliseconds, func, scope) { - let timeoutId; - return function () { - if (timeoutId) { - clearTimeout(timeoutId); - timeoutId = null; - } - const args = arguments; - timeoutId = setTimeout(() => { - func.apply(scope, args); - }, milliseconds); - }; - /* - var timeoutId; - return function() { - if (timeoutId) { - timeoutId.cancel(); - timeoutId = null; - } - timeoutId = FunctionUtil.delay.apply(null, [milliseconds, func, scope].concat(arguments)); - }; - */ - }, - - delay(milliseconds, func, scope) { - const args = FunctionUtil.args(arguments, 1); - const wrapper = FunctionUtil.bind.apply(null, args); - const timeoutId = setTimeout(wrapper, milliseconds); - return { - cancel() { - clearTimeout(timeoutId); - }, - func: wrapper, - id: timeoutId, - }; - }, - - memoize(func, scope) { - const cache = {}; - - return function () { - const args = FunctionUtil.args(arguments); - const key = String(args); - if (!(key in cache)) { - cache[key] = FunctionUtil.call.apply(null, [func, scope].concat(args)); - } - return cache[key]; - }; - }, - - noop() { - return true; - }, - - repeat(milliseconds, func, scope) { - const args = FunctionUtil.args(arguments, 1); - const wrapper = FunctionUtil.bind.apply(null, args); - const intervalId = setInterval(wrapper, milliseconds); - return { - cancel() { - clearInterval(intervalId); - }, - func: wrapper, - id: intervalId, - }; - }, - - throttle(milliseconds, func, scope) { - let timeoutId; - return (...args) => { - if (timeoutId) { - return; - } + } catch (e) { + return e; + } +} + +export function bind(func, scope) { + const argsBinded = args(arguments); + return function () { + const args = args(arguments); + const result = call.apply(null, argsBinded.concat(args)); + return result; + }; +} + +export function call(func, scope) { + if (TypeUtil.isString(func)) { + func = scope[func]; + } + const args = args(arguments, 2); + const result = func.apply(scope, args); + return result; +} + +export function debounce(milliseconds, func, scope) { + let timeoutId; + return function () { + if (timeoutId) { + clearTimeout(timeoutId); + timeoutId = null; + } + const args = arguments; + timeoutId = setTimeout(() => { func.apply(scope, args); - timeoutId = setTimeout(() => { - clearTimeout(timeoutId); - timeoutId = null; - }, milliseconds); - }; - }, - - until(milliseconds, func, scope) { - const args = FunctionUtil.args(arguments, 1); - const wrapper = FunctionUtil.bind.apply(null, args); - const interval = FunctionUtil.repeat(milliseconds, () => { - if (wrapper() === false) { - interval.cancel(); - } - }); - return interval; - }, - - validate(argumentsObj) { - // FunctionUtil.validate(arguments, 'number', 'string', ['string', 'undefined']); + }, milliseconds); + }; + /* + var timeoutId; + return function() { + if (timeoutId) { + timeoutId.cancel(); + timeoutId = null; + } + timeoutId = delay.apply(null, [milliseconds, func, scope].concat(arguments)); + }; + */ +} + +export function delay(milliseconds, func, scope) { + const args = args(arguments, 1); + const wrapper = bind.apply(null, args); + const timeoutId = setTimeout(wrapper, milliseconds); + return { + cancel() { + clearTimeout(timeoutId); + }, + func: wrapper, + id: timeoutId, + }; +} + +export function memoize(func, scope) { + const cache = {}; + + return function () { + const args = args(arguments); + const key = String(args); + if (!(key in cache)) { + cache[key] = call.apply(null, [func, scope].concat(args)); + } + return cache[key]; + }; +} + +export function noop() { + return true; +} + +export function repeat(milliseconds, func, scope) { + const args = args(arguments, 1); + const wrapper = bind.apply(null, args); + const intervalId = setInterval(wrapper, milliseconds); + return { + cancel() { + clearInterval(intervalId); + }, + func: wrapper, + id: intervalId, + }; +} + +export function throttle(milliseconds, func, scope) { + let timeoutId; + return (...args) => { + if (timeoutId) { + return; + } + func.apply(scope, args); + timeoutId = setTimeout(() => { + clearTimeout(timeoutId); + timeoutId = null; + }, milliseconds); + }; +} + +export function until(milliseconds, func, scope) { + const args = args(arguments, 1); + const wrapper = bind.apply(null, args); + const interval = repeat(milliseconds, () => { + if (wrapper() === false) { + interval.cancel(); + } + }); + return interval; +} - const args = FunctionUtil.args(argumentsObj); - const types = FunctionUtil.args(arguments, 1); +export function validate(argumentsObj) { + // validate(arguments, 'number', 'string', ['string', 'undefined']); - let i, j, k, n; + const args = args(argumentsObj); + const types = args(arguments, 1); - for (i = 0, j = types.length; i < j; i++) { - if (!TypeUtil.isArray(types[i])) { - types[i] = [types[i]]; - } - } + let i, j, k, n; - let argsExpectedCount = types.length; - while (argsExpectedCount > 0) { - if (!types[argsExpectedCount - 1].includes('undefined')) { - break; - } - argsExpectedCount--; - } - if (args.length < argsExpectedCount) { - // prettier-ignore - throw new TypeError(`invalid arguments count: received ${args.length}, expected ${argsExpectedCount} arguments.`); + for (i = 0, j = types.length; i < j; i++) { + if (!TypeUtil.isArray(types[i])) { + types[i] = [types[i]]; } + } - for (i = 0, j = types.length; i < j; i++) { - for (k = 0, n = types[i].length; k < n; k++) { - if (!TypeUtil.isType(types[i][k])) { - // prettier-ignore - throw new TypeError(`invalid argument: expected type "${String(types[i][k])}" is not a valid type.`); - } - } + let argsExpectedCount = types.length; + while (argsExpectedCount > 0) { + if (!types[argsExpectedCount - 1].includes('undefined')) { + break; } - - let arg, argType, argTypes; - for (i = 0, j = args.length; i < j; i++) { - arg = args[i]; - argType = TypeUtil.of(arg); - argTypes = types[Math.min(i, types.length - 1)]; - if (!argTypes.includes(argType)) { + argsExpectedCount--; + } + if (args.length < argsExpectedCount) { + // prettier-ignore + throw new TypeError(`invalid arguments count: received ${args.length}, expected ${argsExpectedCount} arguments.`); + } + + for (i = 0, j = types.length; i < j; i++) { + for (k = 0, n = types[i].length; k < n; k++) { + if (!TypeUtil.isType(types[i][k])) { // prettier-ignore - throw new TypeError(`invalid argument: type of argument[${i}] is "${argType}", expected "${argTypes.join('" or "')}".`); + throw new TypeError(`invalid argument: expected type "${String(types[i][k])}" is not a valid type.`); } } - }, -}; + } + + let arg, argType, argTypes; + for (i = 0, j = args.length; i < j; i++) { + arg = args[i]; + argType = TypeUtil.of(arg); + argTypes = types[Math.min(i, types.length - 1)]; + if (!argTypes.includes(argType)) { + // prettier-ignore + throw new TypeError(`invalid argument: type of argument[${i}] is "${argType}", expected "${argTypes.join('" or "')}".`); + } + } +} diff --git a/src/utils/GeomUtil.js b/src/utils/GeomUtil.js index abc111d..d231036 100644 --- a/src/utils/GeomUtil.js +++ b/src/utils/GeomUtil.js @@ -1,6 +1,5 @@ -/** global: GeomUtil */ /** global: PointUtil */ -GeomUtil = { +const GeomUtil = { point: PointUtil, }; diff --git a/src/utils/HexUtil.js b/src/utils/HexUtil.js index 71cedcc..01fec5d 100644 --- a/src/utils/HexUtil.js +++ b/src/utils/HexUtil.js @@ -1,12 +1,8 @@ -/** global: HexUtil */ +export function decodeInt(s) { + return parseInt(s, 16); +} -HexUtil = { - decodeInt(s) { - return parseInt(s, 16); - }, - - encodeInt(n) { - const hex = Math.round(n).toString(16).toUpperCase(); - return hex.length === 1 ? `0${hex}` : hex; - }, -}; +export function encodeInt(n) { + const hex = Math.round(n).toString(16).toUpperCase(); + return hex.length === 1 ? `0${hex}` : hex; +} diff --git a/src/utils/InterpolationUtil.js b/src/utils/InterpolationUtil.js index 66b052e..37ebbdf 100644 --- a/src/utils/InterpolationUtil.js +++ b/src/utils/InterpolationUtil.js @@ -1,32 +1,29 @@ /** global: MathUtil */ -/** global: InterpolationUtil */ -InterpolationUtil = { - bilinear(a, b, c, d, u, v) { - const f = InterpolationUtil.linear; - return f(f(a, b, u), f(c, d, u), v); - }, +export function bilinear(a, b, c, d, u, v) { + const f = linear; + return f(f(a, b, u), f(c, d, u), v); +} - linear(a, b, t) { - // return (a + ((b - a) * t)); - return a * (1.0 - t) + b * t; - }, +export function linear(a, b, t) { + // return (a + ((b - a) * t)); + return a * (1.0 - t) + b * t; +} - multilinear(list, t) { - const s = InterpolationUtil.scalar(list.length - 1, t); - const i = s.index; - return InterpolationUtil.linear(list[i], list[i + 1], s.t); - }, +export function multilinear(list, t) { + const s = scalar(list.length - 1, t); + const i = s.index; + return linear(list[i], list[i + 1], s.t); +} - scalar(parts, t) { - const tScaled = t * parts; - const tScaledIndex = Math.floor(tScaled); +export function scalar(parts, t) { + const tScaled = t * parts; + const tScaledIndex = Math.floor(tScaled); - const tMinIndex = 0; - const tMaxIndex = parts - 1; + const tMinIndex = 0; + const tMaxIndex = parts - 1; - const tIndex = MathUtil.constrain(tScaledIndex, tMinIndex, tMaxIndex); - const tReduced = tScaled - tIndex; - return { index: tIndex, t: tReduced }; - }, -}; + const tIndex = MathUtil.constrain(tScaledIndex, tMinIndex, tMaxIndex); + const tReduced = tScaled - tIndex; + return { index: tIndex, t: tReduced }; +} diff --git a/src/utils/JSONUtil.js b/src/utils/JSONUtil.js index 91b830f..d9716ce 100644 --- a/src/utils/JSONUtil.js +++ b/src/utils/JSONUtil.js @@ -1,19 +1,15 @@ -/** global: JSONUtil */ +export function decode(str) { + let output = ''; + try { + output = JSON.parse(str); + } catch (error) { + // unquote str to avoid syntax error + str = str.replace(/"/g, '"'); + output = JSON.parse(str); + } + return output; +} -JSONUtil = { - decode(str) { - let output = ''; - try { - output = JSON.parse(str); - } catch (error) { - // unquote str to avoid syntax error - str = str.replace(/"/g, '"'); - output = JSON.parse(str); - } - return output; - }, - - encode(obj) { - return JSON.stringify(obj); - }, -}; +export function encode(obj) { + return JSON.stringify(obj); +} diff --git a/src/utils/MathUtil.js b/src/utils/MathUtil.js index 17b60c0..b95677e 100644 --- a/src/utils/MathUtil.js +++ b/src/utils/MathUtil.js @@ -1,151 +1,148 @@ /** global: ArrayUtil */ /** global: FunctionUtil */ /** global: InterpolationUtil */ -/** global: MathUtil */ /** global: TypeUtil */ -MathUtil = { - average(values) { - return MathUtil.summation(values) / values.length; - }, - - constrain(n, a, b) { - return Math.min(Math.max(n, Math.min(a, b)), Math.max(a, b)); - }, - - cycle(n, len, shift) { - if (!TypeUtil.isNumber(shift)) { - shift = 0; - } - return ((((n - shift) % len) + len) % len) + shift; - }, - - equals(a, b, tolerance) { - if (!TypeUtil.isNumber(tolerance)) { - tolerance = 0.0000000001; - } else if (tolerance > 0.0) { - tolerance += 0.0000000001; - } - return Math.abs(a - b) <= tolerance; - }, - - euclideanDistance(a, b) { - // https://en.wikipedia.org/wiki/Euclidean_distance#Higher_dimensions - return Math.sqrt( - MathUtil.summation( - a.map((value, index) => { - return Math.abs(value - b[index]) ** 2; - }) - ) - ); - }, - - factorial(n) { - let f = 1; - for (let i = f; i <= n; i++) { - f *= i; - } - return f; - }, - - gcd(a, b) { - if (a === b) { - return a; - } - if (a < b) { - a ^= b; - b ^= a; - a ^= b; - } - return MathUtil.gcd(a - b, b); - }, - - interpolation: InterpolationUtil, - - lcm(a, b) { - return (a * b) / MathUtil.gcd(a, b); - }, - - lerp(a, b, t) { - return InterpolationUtil.linear(a, b, t); - }, - - map(n, a, b, c, d) { - return InterpolationUtil.linear(c, d, MathUtil.normalize(n, a, b)); - }, - - nearest(n, a, b) { - return Math.abs(n - a) <= Math.abs(n - b) ? a : b; - }, - - normalize(n, a, b) { - return (n - a) / (b - a); - }, - - proportion(a, b, x, y) { - const args = FunctionUtil.args(arguments); - const argsOk = ArrayUtil.clean(args); - if (argsOk.length !== 3) { - return NaN; - } - - // a : b = x : y - if (!TypeUtil.isNumber(a)) { - return (b * x) / y; - } else if (!TypeUtil.isNumber(b)) { - return (a * y) / x; - } else if (!TypeUtil.isNumber(x)) { - return (y * a) / b; - } else if (!TypeUtil.isNumber(y)) { - return (x * b) / a; - } +export function average(values) { + return summation(values) / values.length; +} + +export function constrain(n, a, b) { + return Math.min(Math.max(n, Math.min(a, b)), Math.max(a, b)); +} + +export function cycle(n, len, shift) { + if (!TypeUtil.isNumber(shift)) { + shift = 0; + } + return ((((n - shift) % len) + len) % len) + shift; +} + +export function equals(a, b, tolerance) { + if (!TypeUtil.isNumber(tolerance)) { + tolerance = 0.0000000001; + } else if (tolerance > 0.0) { + tolerance += 0.0000000001; + } + return Math.abs(a - b) <= tolerance; +} + +export function euclideanDistance(a, b) { + // https://en.wikipedia.org/wiki/Euclidean_distance#Higher_dimensions + return Math.sqrt( + summation( + a.map((value, index) => { + return Math.abs(value - b[index]) ** 2; + }) + ) + ); +} + +export function factorial(n) { + let f = 1; + for (let i = f; i <= n; i++) { + f *= i; + } + return f; +} + +export function gcd(a, b) { + if (a === b) { + return a; + } + if (a < b) { + a ^= b; + b ^= a; + a ^= b; + } + return gcd(a - b, b); +} + +const interpolation = InterpolationUtil; + +export function lcm(a, b) { + return (a * b) / gcd(a, b); +} + +export function lerp(a, b, t) { + return InterpolationUtil.linear(a, b, t); +} + +export function map(n, a, b, c, d) { + return InterpolationUtil.linear(c, d, normalize(n, a, b)); +} + +export function nearest(n, a, b) { + return Math.abs(n - a) <= Math.abs(n - b) ? a : b; +} + +export function normalize(n, a, b) { + return (n - a) / (b - a); +} + +export function proportion(a, b, x, y) { + const args = FunctionUtil.args(arguments); + const argsOk = ArrayUtil.clean(args); + if (argsOk.length !== 3) { return NaN; - }, - - roundDecimals(n, decimalsPlaces) { - return Number(n.toFixed(decimalsPlaces || 2)); - }, - - roundToMultiple(n, multiplier) { - return Math.round(n / multiplier) * multiplier; - }, - - roundToNearest(n, values) { - const a = ArrayUtil.sort(values.concat()); - let i = 0, - j = 0, - k = a.length; - if (k === 0) { - return NaN; - } else if (k > 2) { - while (j < k) { - i = Math.floor((j + k) / 2.0); - if (n < a[i]) { - k = i; - } else if (n > a[i + 1]) { - j = i + 1; - } else { - break; - } + } + + // a : b = x : y + if (!TypeUtil.isNumber(a)) { + return (b * x) / y; + } else if (!TypeUtil.isNumber(b)) { + return (a * y) / x; + } else if (!TypeUtil.isNumber(x)) { + return (y * a) / b; + } else if (!TypeUtil.isNumber(y)) { + return (x * b) / a; + } + return NaN; +} + +export function roundDecimals(n, decimalsPlaces) { + return Number(n.toFixed(decimalsPlaces || 2)); +} + +export function roundToMultiple(n, multiplier) { + return Math.round(n / multiplier) * multiplier; +} + +export function roundToNearest(n, values) { + const a = ArrayUtil.sort(values.concat()); + let i = 0, + j = 0, + k = a.length; + if (k === 0) { + return NaN; + } else if (k > 2) { + while (j < k) { + i = Math.floor((j + k) / 2.0); + if (n < a[i]) { + k = i; + } else if (n > a[i + 1]) { + j = i + 1; + } else { + break; } } - j = i + 1 in a ? i + 1 : i; - return MathUtil.nearest(n, a[i], a[j]); - }, - - roundToPower(n, base) { - return base ** Math.round(Math.log(n) / Math.log(base)); - }, - - sign(n) { - return n >= 0.0 ? 1 : -1; - }, - - summation(values) { - let s = 0.0; - for (let i = 0, j = values.length; i < j; i++) { - s += values[i]; - } - return s; - }, -}; + } + j = i + 1 in a ? i + 1 : i; + return nearest(n, a[i], a[j]); +} + +export function roundToPower(n, base) { + return base ** Math.round(Math.log(n) / Math.log(base)); +} + +export function sign(n) { + return n >= 0.0 ? 1 : -1; +} + +export function summation(values) { + let s = 0.0; + for (let i = 0, j = values.length; i < j; i++) { + s += values[i]; + } + return s; +} diff --git a/src/utils/NumberUtil.js b/src/utils/NumberUtil.js index a515c95..ce1a1ff 100644 --- a/src/utils/NumberUtil.js +++ b/src/utils/NumberUtil.js @@ -1,48 +1,44 @@ -/** global: NumberUtil */ +export function isBetween(n, min, max) { + return n >= min && n <= max; +} -NumberUtil = { - isBetween(n, min, max) { - return n >= min && n <= max; - }, +export function isEven(n) { + return n % 2.0 === 0.0 && !isFloat(n); +} - isEven(n) { - return n % 2.0 === 0.0 && !NumberUtil.isFloat(n); - }, +export function isFloat(n) { + return n % 1 !== 0; +} - isFloat(n) { - return n % 1 !== 0; - }, +export function isNegative(n) { + return n < 0.0; +} - isNegative(n) { - return n < 0.0; - }, +export function isOdd(n) { + return n % 2.0 !== 0.0 && !isFloat(n); +} - isOdd(n) { - return n % 2.0 !== 0.0 && !NumberUtil.isFloat(n); - }, +export function isPositive(n) { + return n >= 0.0; +} - isPositive(n) { - return n >= 0.0; - }, - - isPrime(n) { - if (typeof n !== 'number' || Number.isNaN(n) || NumberUtil.isFloat(n)) { - return false; - } - if (n <= 1) { - return false; - } - if (n <= 3) { - return true; - } - if (n % 2 === 0 || n % 3 === 0) { +export function isPrime(n) { + if (typeof n !== 'number' || Number.isNaN(n) || isFloat(n)) { + return false; + } + if (n <= 1) { + return false; + } + if (n <= 3) { + return true; + } + if (n % 2 === 0 || n % 3 === 0) { + return false; + } + for (let i = 5; i * i <= n; i += 6) { + if (n % i === 0 || n % (i + 2) === 0) { return false; } - for (let i = 5; i * i <= n; i += 6) { - if (n % i === 0 || n % (i + 2) === 0) { - return false; - } - } - return true; - }, -}; + } + return true; +} diff --git a/src/utils/ObjectUtil.js b/src/utils/ObjectUtil.js index 154f636..d61aa73 100644 --- a/src/utils/ObjectUtil.js +++ b/src/utils/ObjectUtil.js @@ -4,292 +4,273 @@ /** global: FunctionUtil */ /** global: JSONUtil */ /** global: MathUtil */ -/** global: ObjectUtil */ /** global: StringUtil */ /** global: TypeUtil */ /** global: URLUtil */ -ObjectUtil = { - assign(obj, other) { - const objs = [other].concat(FunctionUtil.args(arguments, 2)); - let i, j, k; - for (i = 0, j = objs.length; i < j; i++) { - for (k in objs[i]) { - obj[k] = objs[i][k]; - } - } - return obj; - }, - - clean(obj, hard) { - const keys = ObjectUtil.keys(obj); - let key, val; - for (let i = 0, j = keys.length; i < j; i++) { - key = keys[i]; - val = obj[key]; - if (hard === true) { - switch (TypeUtil.of(val)) { - case TypeUtil.ARRAY: - val = obj[key] = ArrayUtil.clean(val, hard); - if (val.length === 0) { - val = null; - } - break; - case TypeUtil.OBJECT: - val = obj[key] = ObjectUtil.clean(val, hard); - if (ObjectUtil.length(val) === 0) { - val = null; - } - break; - case TypeUtil.STRING: - val = obj[key] = StringUtil.trim(val); - if (val === '') { - val = null; - } - break; - } - } - if (TypeUtil.isNone(val)) { - delete obj[key]; - } +export function assign(obj, other) { + const objs = [other].concat(FunctionUtil.args(arguments, 2)); + let i, j, k; + for (i = 0, j = objs.length; i < j; i++) { + for (k in objs[i]) { + obj[k] = objs[i][k]; } - return obj; - }, + } + return obj; +} - clone(obj) { - const cln = {}; - const keys = ObjectUtil.keys(obj); - let key, val; - for (let i = 0, j = keys.length; i < j; i++) { - key = keys[i]; - val = obj[key]; +export function clean(obj, hard) { + const keys = keys(obj); + let key, val; + for (let i = 0, j = keys.length; i < j; i++) { + key = keys[i]; + val = obj[key]; + if (hard === true) { switch (TypeUtil.of(val)) { case TypeUtil.ARRAY: - cln[key] = ArrayUtil.clone(val); - break; - case TypeUtil.DATE: - cln[key] = DateUtil.clone(val); + val = obj[key] = ArrayUtil.clean(val, hard); + if (val.length === 0) { + val = null; + } break; case TypeUtil.OBJECT: - cln[key] = ObjectUtil.clone(val); + val = obj[key] = clean(val, hard); + if (length(val) === 0) { + val = null; + } break; - default: - cln[key] = obj[key]; + case TypeUtil.STRING: + val = obj[key] = StringUtil.trim(val); + if (val === '') { + val = null; + } break; } } - return cln; - }, + if (TypeUtil.isNone(val)) { + delete obj[key]; + } + } + return obj; +} - decodeBase64(str) { - return JSONUtil.decode(Base64Util.decode(str)); - }, +export function clone(obj) { + const cln = {}; + const keys = keys(obj); + let key, val; + for (let i = 0, j = keys.length; i < j; i++) { + key = keys[i]; + val = obj[key]; + switch (TypeUtil.of(val)) { + case TypeUtil.ARRAY: + cln[key] = ArrayUtil.clone(val); + break; + case TypeUtil.DATE: + cln[key] = DateUtil.clone(val); + break; + case TypeUtil.OBJECT: + cln[key] = clone(val); + break; + default: + cln[key] = obj[key]; + break; + } + } + return cln; +} - decodeJSON(str) { - return JSONUtil.decode(str); - }, +export function decodeBase64(str) { + return JSONUtil.decode(Base64Util.decode(str)); +} - decodeParameters(str) { - return URLUtil.getParametersDict(`?${str}`); - }, +export function decodeJSON(str) { + return JSONUtil.decode(str); +} - encodeBase64(obj) { - return Base64Util.encode(JSONUtil.encode(obj)); - }, +export function decodeParameters(str) { + return URLUtil.getParametersDict(`?${str}`); +} - encodeJSON(obj) { - return JSONUtil.encode(obj); - }, +export function encodeBase64(obj) { + return Base64Util.encode(JSONUtil.encode(obj)); +} - encodeParameters(obj, keysFilter) { - const objClean = ObjectUtil.clean(ObjectUtil.clone(obj), true); - const keys = TypeUtil.isArray(keysFilter) - ? keysFilter - : ObjectUtil.keys(obj, true); - let key; - let val; - const keyval = []; +export function encodeJSON(obj) { + return JSONUtil.encode(obj); +} - for (let i = 0, j = keys.length; i < j; i++) { - key = keys[i]; - if (key in objClean) { - val = objClean[key]; - keyval.push(`${key}=${encodeURIComponent(val)}`); - } +export function encodeParameters(obj, keysFilter) { + const objClean = clean(clone(obj), true); + const keys = TypeUtil.isArray(keysFilter) ? keysFilter : keys(obj, true); + let key; + let val; + const keyval = []; + + for (let i = 0, j = keys.length; i < j; i++) { + key = keys[i]; + if (key in objClean) { + val = objClean[key]; + keyval.push(`${key}=${encodeURIComponent(val)}`); } + } - return keyval.join('&'); - }, + return keyval.join('&'); +} - equals(obj1, obj2) { - if (obj1 === obj2 || ObjectUtil.is(obj1, obj2)) { - return true; - } +export function equals(obj1, obj2) { + if (obj1 === obj2 || is(obj1, obj2)) { + return true; + } + + let key, val1, val2, type1, type2; + + type1 = TypeUtil.of(obj1); + type2 = TypeUtil.of(obj2); - let key, val1, val2, type1, type2; + if (type1 !== type2) { + return false; + } - type1 = TypeUtil.of(obj1); - type2 = TypeUtil.of(obj2); + switch (type1) { + case TypeUtil.ARRAY: + case TypeUtil.OBJECT: + break; + case TypeUtil.NUMBER: + return MathUtil.equals(obj1, obj2); + default: + return String(obj1) === String(obj2); + } - if (type1 !== type2) { + for (key in obj2) { + if (!(key in obj1)) { return false; } + } - switch (type1) { - case TypeUtil.ARRAY: - case TypeUtil.OBJECT: - break; - case TypeUtil.NUMBER: - return MathUtil.equals(obj1, obj2); - default: - return String(obj1) === String(obj2); + for (key in obj1) { + val1 = obj1[key]; + val2 = obj2[key]; + + if (is(obj1, val1) || is(obj2, val2) || is(val1, val2) || val1 === val2) { + continue; } - for (key in obj2) { - if (!(key in obj1)) { - return false; - } + if (!equals(val1, val2)) { + return false; } + } - for (key in obj1) { - val1 = obj1[key]; - val2 = obj2[key]; + return true; +} - if ( - ObjectUtil.is(obj1, val1) || - ObjectUtil.is(obj2, val2) || - ObjectUtil.is(val1, val2) || - val1 === val2 - ) { - continue; +export function is(obj1, obj2) { + // https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Object/is + if (!Object.is) { + Object.is = (x, y) => { + // Algoritmo SameValue + if (x === y) { + // Steps 1-5, 7-10 + // Steps 6.b-6.e: +0 != -0 + return x !== 0 || 1 / x === 1 / y; + } else { + // Step 6.a: NaN === NaN + return x !== x && y !== y; } + }; + } + return Object.is(obj1, obj2); +} - if (!ObjectUtil.equals(val1, val2)) { - return false; +const keypath = { + get(obj, path, defaultValue) { + const keys = path.split('.'); + let key; + let cursor = obj; + for (let i = 0, j = keys.length; i < j; i++) { + key = keys[i]; + try { + cursor = cursor[key]; + } catch (e) { + return defaultValue; } } - - return true; + return TypeUtil.isUndefined(cursor) ? defaultValue : cursor; }, - is(obj1, obj2) { - // https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Object/is - if (!Object.is) { - Object.is = (x, y) => { - // Algoritmo SameValue - if (x === y) { - // Steps 1-5, 7-10 - // Steps 6.b-6.e: +0 != -0 - return x !== 0 || 1 / x === 1 / y; - } else { - // Step 6.a: NaN === NaN - return x !== x && y !== y; - } - }; - } - return Object.is(obj1, obj2); - }, - - keypath: { - get(obj, path, defaultValue) { - const keys = path.split('.'); - let key; - let cursor = obj; - for (let i = 0, j = keys.length; i < j; i++) { - key = keys[i]; - try { - cursor = cursor[key]; - } catch (e) { - return defaultValue; - } + set(obj, path, value) { + const keys = path.split('.'); + let key; + let cursor = obj; + for (let i = 0, j = keys.length; i < j; i++) { + key = keys[i]; + if (key === '__proto__' || key === 'constructor') { + break; } - return TypeUtil.isUndefined(cursor) ? defaultValue : cursor; - }, - - set(obj, path, value) { - const keys = path.split('.'); - let key; - let cursor = obj; - for (let i = 0, j = keys.length; i < j; i++) { - key = keys[i]; - if (key === '__proto__' || key === 'constructor') { - break; - } - if (!TypeUtil.isObject(cursor[key])) { - cursor[key] = {}; - } - if (i < j - 1) { - cursor = cursor[key]; - } else { - cursor[key] = value; - } + if (!TypeUtil.isObject(cursor[key])) { + cursor[key] = {}; + } + if (i < j - 1) { + cursor = cursor[key]; + } else { + cursor[key] = value; } - }, - }, - - keys(obj, sorted) { - const k = Object.keys(obj); - if (sorted === true) { - k.sort(); } - return k; }, +}; - length(obj) { - return ObjectUtil.keys(obj).length; - }, +export function keys(obj, sorted) { + const k = Object.keys(obj); + if (sorted === true) { + k.sort(); + } + return k; +} - map(obj, func) { - const m = {}; - ObjectUtil.keys(obj).forEach((k) => { - m[k] = func.call(null, obj[k], k, obj); - }); - return m; - }, +export function length(obj) { + return keys(obj).length; +} - merge(obj1, obj2) { - const objs = [{}, obj1, obj2].concat(FunctionUtil.args(arguments, 2)); - const obj = ObjectUtil.assign.apply(null, objs); - return obj; - }, +export function map(obj, func) { + const m = {}; + keys(obj).forEach((k) => { + m[k] = func.call(null, obj[k], k, obj); + }); + return m; +} - search(objs, filter) { - // prettier-ignore - const results = []; +export function merge(obj1, obj2) { + const objs = [{}, obj1, obj2].concat(FunctionUtil.args(arguments, 2)); + const obj = assign.apply(null, objs); + return obj; +} - let i; - let j; - let k; - let m; - let obj; - let res; - let keys; - let key; - let val; - for (i = 0, j = objs.length; i < j; i++) { - obj = objs[i]; - res = obj; - keys = ObjectUtil.keys(filter); - for (k = 0, m = keys.length; k < m; k++) { - key = keys[k]; - val = filter[key]; - if (!ObjectUtil.equals(obj[key], val)) { - res = null; - } - } - if (res) { - results.push(res); +export function search(objs, filter) { + // prettier-ignore + const results = []; + let i, j, k, m, obj, res, keys, key, val; + for (i = 0, j = objs.length; i < j; i++) { + obj = objs[i]; + res = obj; + keys = keys(filter); + for (k = 0, m = keys.length; k < m; k++) { + key = keys[k]; + val = filter[key]; + if (!equals(obj[key], val)) { + res = null; } } - return results; - }, - - values(obj, sorted) { - const keys = ObjectUtil.keys(obj, sorted); - const vals = []; - for (let i = 0, j = keys.length; i < j; i++) { - vals.push(obj[keys[i]]); + if (res) { + results.push(res); } - return vals; - }, -}; + } + return results; +} + +export function values(obj, sorted) { + const keys = keys(obj, sorted); + const vals = []; + for (let i = 0, j = keys.length; i < j; i++) { + vals.push(obj[keys[i]]); + } + return vals; +} diff --git a/src/utils/PointUtil.js b/src/utils/PointUtil.js index 3e9bafd..d453110 100644 --- a/src/utils/PointUtil.js +++ b/src/utils/PointUtil.js @@ -1,121 +1,118 @@ /** global: MathUtil */ /** global: InterpolationUtil */ -/** global: PointUtil */ /** global: TrigoUtil */ -PointUtil = { - add(a, b) { - return { - x: a.x + b.x, - y: a.y + b.y, - }; - }, - - angle(a, b) { - const angle = TrigoUtil.angleDeg(b.y - a.y, b.x - a.x); - return TrigoUtil.cycleDeg(angle); - }, - - cross(a, b) { - // z coordinate of the cross product; x and y coordinates are zero - return a.x * b.y - a.y * b.x; - }, - - distance(a, b) { - const dX = b.x - a.x; - const dY = b.y - a.y; - return Math.sqrt(dX * dX + dY * dY); - }, - - dot(a, b) { - return a.x * b.x + a.y * b.y; - }, - - equals(a, b, tolerance) { - const f = MathUtil.equals; - return f(a.x, b.x, tolerance) && f(a.y, b.y, tolerance); - }, - - interpolate(a, b, t) { - const f = InterpolationUtil.linear; - return { - x: f(a.x, b.x, t), - y: f(a.y, b.y, t), - }; - }, - - length(p) { - return PointUtil.distance(p, { x: 0, y: 0 }); - }, - - magnitude(p) { - return PointUtil.length(p); - }, - - project(p, distance, angle) { - return { - x: p.x + distance * TrigoUtil.cosDeg(angle), - y: p.y + distance * TrigoUtil.sinDeg(angle), - }; - }, - - rect(points) { - let point; - const pointsX = []; - const pointsY = []; - - for (let i = 0, j = points.length; i < j; i++) { - point = points[i]; - pointsX.push(point.x); - pointsY.push(point.y); - } - - const minF = Math.min; - const minX = minF(...pointsX); - const minY = minF(...pointsY); - const maxF = Math.max; - const maxX = maxF(...pointsX); - const maxY = maxF(...pointsY); - - return { - topLeft: { x: minX, y: minY }, - topRight: { x: maxX, y: minY }, - bottomRight: { x: maxX, y: maxY }, - bottomLeft: { x: minX, y: maxY }, - }; - }, - - rotate(p, angle, pivot) { - const pointPivot = pivot || { x: 0.0, y: 0.0 }; - const pointRel = PointUtil.subtract(p, pointPivot); - const angleCos = TrigoUtil.cosDeg(angle); - const angleSin = TrigoUtil.sinDeg(angle); - const pointRot = { - x: pointRel.x * angleCos - pointRel.y * angleSin, - y: pointRel.x * angleSin + pointRel.y * angleCos, - }; - const pointAbs = PointUtil.add(pointRot, pointPivot); - return pointAbs; - }, - - scale(p, amount) { - return { - x: p.x * amount, - y: p.y * amount, - }; - }, - - subtract(a, b) { - return { - x: a.x - b.x, - y: a.y - b.y, - }; - }, - - translate(p, x, y) { - return { - x: p.x + x, - y: p.y + y, - }; - }, -}; +export function add(a, b) { + return { + x: a.x + b.x, + y: a.y + b.y, + }; +} + +export function angle(a, b) { + const angle = TrigoUtil.angleDeg(b.y - a.y, b.x - a.x); + return TrigoUtil.cycleDeg(angle); +} + +export function cross(a, b) { + // z coordinate of the cross product; x and y coordinates are zero + return a.x * b.y - a.y * b.x; +} + +export function distance(a, b) { + const dX = b.x - a.x; + const dY = b.y - a.y; + return Math.sqrt(dX * dX + dY * dY); +} + +export function dot(a, b) { + return a.x * b.x + a.y * b.y; +} + +export function equals(a, b, tolerance) { + const f = MathUtil.equals; + return f(a.x, b.x, tolerance) && f(a.y, b.y, tolerance); +} + +export function interpolate(a, b, t) { + const f = InterpolationUtil.linear; + return { + x: f(a.x, b.x, t), + y: f(a.y, b.y, t), + }; +} + +export function length(p) { + return PointUtil.distance(p, { x: 0, y: 0 }); +} + +export function magnitude(p) { + return PointUtil.length(p); +} + +export function project(p, distance, angle) { + return { + x: p.x + distance * TrigoUtil.cosDeg(angle), + y: p.y + distance * TrigoUtil.sinDeg(angle), + }; +} + +export function rect(points) { + let point; + const pointsX = []; + const pointsY = []; + + for (let i = 0, j = points.length; i < j; i++) { + point = points[i]; + pointsX.push(point.x); + pointsY.push(point.y); + } + + const minF = Math.min; + const minX = minF(...pointsX); + const minY = minF(...pointsY); + const maxF = Math.max; + const maxX = maxF(...pointsX); + const maxY = maxF(...pointsY); + + return { + topLeft: { x: minX, y: minY }, + topRight: { x: maxX, y: minY }, + bottomRight: { x: maxX, y: maxY }, + bottomLeft: { x: minX, y: maxY }, + }; +} + +export function rotate(p, angle, pivot) { + const pointPivot = pivot || { x: 0.0, y: 0.0 }; + const pointRel = PointUtil.subtract(p, pointPivot); + const angleCos = TrigoUtil.cosDeg(angle); + const angleSin = TrigoUtil.sinDeg(angle); + const pointRot = { + x: pointRel.x * angleCos - pointRel.y * angleSin, + y: pointRel.x * angleSin + pointRel.y * angleCos, + }; + const pointAbs = PointUtil.add(pointRot, pointPivot); + return pointAbs; +} + +export function scale(p, amount) { + return { + x: p.x * amount, + y: p.y * amount, + }; +} + +export function subtract(a, b) { + return { + x: a.x - b.x, + y: a.y - b.y, + }; +} + +export function translate(p, x, y) { + return { + x: p.x + x, + y: p.y + y, + }; +} diff --git a/src/utils/RandomUtil.js b/src/utils/RandomUtil.js index 402e532..8a4b22a 100644 --- a/src/utils/RandomUtil.js +++ b/src/utils/RandomUtil.js @@ -1,64 +1,61 @@ /** global: FunctionUtil */ -/** global: RandomUtil */ -RandomUtil = { - argument() { - const args = FunctionUtil.args(arguments); - return RandomUtil.element(args); - }, - - bit(chance) { - return RandomUtil.boolean(chance) ? 1 : 0; - }, - - boolean(chance) { - return Boolean(Math.random() < (isNaN(chance) ? 0.5 : chance)); - }, - - color() { - return RandomUtil.integer(0, 0xffffff); - }, - - element(array) { - return array[RandomUtil.index(array)]; - }, - - float(min, max) { - return min + Math.random() * (max - min); - }, - - index(array) { - return RandomUtil.integer(0, array.length - 1); - }, - - integer(min, max) { - return Math.floor(Math.round(RandomUtil.float(min - 0.5, max + 0.5))); - }, - - map(func, count) { - const m = []; - for (let i = 0; i < count; i++) { - m.push(func(i)); - } - return m; - }, - - sign(chance) { - return RandomUtil.boolean(chance) ? 1 : -1; - }, - - string( - length, - charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!?@#$%^&*(-_=+).,;' - ) { - const c = charset.split(''); - const r = RandomUtil.element; - let i = 0; - let s = ''; - while (i < length) { - s += r(c); - i++; - } - return s; - }, -}; +export function argument() { + const args = FunctionUtil.args(arguments); + return element(args); +} + +export function bit(chance) { + return boolean(chance) ? 1 : 0; +} + +export function boolean(chance) { + return Boolean(Math.random() < (isNaN(chance) ? 0.5 : chance)); +} + +export function color() { + return integer(0, 0xffffff); +} + +export function element(array) { + return array[index(array)]; +} + +export function float(min, max) { + return min + Math.random() * (max - min); +} + +export function index(array) { + return integer(0, array.length - 1); +} + +export function integer(min, max) { + return Math.floor(Math.round(float(min - 0.5, max + 0.5))); +} + +export function map(func, count) { + const m = []; + for (let i = 0; i < count; i++) { + m.push(func(i)); + } + return m; +} + +export function sign(chance) { + return boolean(chance) ? 1 : -1; +} + +export function string( + length, + charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!?@#$%^&*(-_=+).,;' +) { + const c = charset.split(''); + const r = element; + let i = 0; + let s = ''; + while (i < length) { + s += r(c); + i++; + } + return s; +} diff --git a/src/utils/StringUtil.js b/src/utils/StringUtil.js index f8370cc..b594094 100644 --- a/src/utils/StringUtil.js +++ b/src/utils/StringUtil.js @@ -1,232 +1,225 @@ /** global: ArrayUtil */ /** global: RandomUtil */ -/** global: StringUtil */ /** global: TypeUtil */ -StringUtil = { - contains(str, occurrence) { - return Boolean(str.includes(occurrence)); - }, - - endsWith(str, search) { - // if (String.prototype.endsWith) { - // return str.endsWith(search); - // } - return str.substring(str.length - search.length, str.length) === search; - }, - - icontains(str, occurrence) { - return StringUtil.contains(str.toLowerCase(), occurrence.toLowerCase()); - }, - - levenshteinDistance(a, b) { - // taken from GitHub here: - // https://gist.github.com/andrei-m/982927#gistcomment-586471 - const m = []; - for (let i = 0; i <= b.length; i++) { - m[i] = [i]; - if (i === 0) { +export function contains(str, occurrence) { + return Boolean(str.includes(occurrence)); +} + +export function endsWith(str, search) { + // if (String.prototype.endsWith) { + // return str.endsWith(search); + // } + return str.substring(str.length - search.length, str.length) === search; +} + +export function icontains(str, occurrence) { + return contains(str.toLowerCase(), occurrence.toLowerCase()); +} + +export function levenshteinDistance(a, b) { + // taken from GitHub here: + // https://gist.github.com/andrei-m/982927#gistcomment-586471 + const m = []; + for (let i = 0; i <= b.length; i++) { + m[i] = [i]; + if (i === 0) { + continue; + } + for (let j = 0; j <= a.length; j++) { + m[0][j] = j; + if (j === 0) { continue; } - for (let j = 0; j <= a.length; j++) { - m[0][j] = j; - if (j === 0) { - continue; - } - m[i][j] = - b.charAt(i - 1) === a.charAt(j - 1) - ? m[i - 1][j - 1] - : Math.min( - m[i - 1][j - 1] + 1, - m[i][j - 1] + 1, - m[i - 1][j] + 1 - ); - } + m[i][j] = + b.charAt(i - 1) === a.charAt(j - 1) + ? m[i - 1][j - 1] + : Math.min(m[i - 1][j - 1] + 1, m[i][j - 1] + 1, m[i - 1][j] + 1); } - return m[b.length][a.length]; - }, - - levenshteinSimilarity(a, b) { - const d = StringUtil.levenshteinDistance(a, b); - const l = Math.max(a.length, b.length); - - return l === 0 ? 1.0 : 1.0 - d / l; - }, - - padLeft(str, len, char) { - let i = str.length; - while (i < len) { - str = char + str; - i++; - } - return str; - }, - - padRight(str, len, char) { - let i = str.length; - while (i < len) { - str = str + char; - i++; + } + return m[b.length][a.length]; +} + +export function levenshteinSimilarity(a, b) { + const d = levenshteinDistance(a, b); + const l = Math.max(a.length, b.length); + + return l === 0 ? 1.0 : 1.0 - d / l; +} + +export function padLeft(str, len, char) { + let i = str.length; + while (i < len) { + str = char + str; + i++; + } + return str; +} + +export function padRight(str, len, char) { + let i = str.length; + while (i < len) { + str = str + char; + i++; + } + return str; +} + +export function padZeros(str, len) { + return padLeft(String(str), len, '0'); +} + +export function render(str, data, placeholderStart, placeholderEnd) { + const pattern = `${placeholderStart || '{{'}[\\s]*([a-zA-Z0-9\\-\\_]+){1}[\\s]*${placeholderEnd || '}}'}`; + const regex = new RegExp(pattern, 'g'); + const matches = Array.from(str.matchAll(regex)); + let occurrence, replacement; + data = data || {}; + matches.forEach((match) => { + occurrence = match[0]; + replacement = data[match[1]]; + if (TypeUtil.isNone(replacement)) { + replacement = ''; } - return str; - }, - - padZeros(str, len) { - return StringUtil.padLeft(String(str), len, '0'); - }, - - render(str, data, placeholderStart, placeholderEnd) { - const pattern = `${placeholderStart || '{{'}[\\s]*([a-zA-Z0-9\\-\\_]+){1}[\\s]*${placeholderEnd || '}}'}`; - const regex = new RegExp(pattern, 'g'); - const matches = Array.from(str.matchAll(regex)); - let occurrence, replacement; - data = data || {}; - matches.forEach((match) => { - occurrence = match[0]; - replacement = data[match[1]]; - if (TypeUtil.isNone(replacement)) { - replacement = ''; - } - str = StringUtil.replace(str, occurrence, replacement); - }); - return str; - }, - - replace(str, occurrence, replacement, caseSensitive) { - const pattern = occurrence.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); - const flags = caseSensitive === false ? 'gi' : 'g'; - const regex = new RegExp(pattern, flags); - return str.replace(regex, String(replacement)); - }, - - reverse(str) { - const chars = str.split(''); - chars.reverse(); - return chars.join(''); - }, - - rotate(str, count) { - let chars = str.split(''); - chars = ArrayUtil.rotate(chars, count); - return chars.join(''); - }, - - slugify(str) { - const sep = '-'; - // prettier-ignore - const chars = { - // Latin - 'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE', - 'Ç': 'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', - 'Î': 'I', 'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O', - 'Õ': 'O', 'Ö': 'O', 'Ő': 'O', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', - 'Ü': 'U', 'Ű': 'U', 'Ý': 'Y', 'Þ': 'TH', 'ß': 'ss', 'à': 'a', 'á': 'a', - 'â': 'a', 'ã': 'a', 'ä': 'a', 'å': 'a', 'æ': 'ae', 'ç': 'c', 'è': 'e', - 'é': 'e', 'ê': 'e', 'ë': 'e', 'ì': 'i', 'í': 'i', 'î': 'i', 'ï': 'i', - 'ð': 'd', 'ñ': 'n', 'ò': 'o', 'ó': 'o', 'ô': 'o', 'õ': 'o', 'ö': 'o', - 'ő': 'o', 'ø': 'o', 'ù': 'u', 'ú': 'u', 'û': 'u', 'ü': 'u', 'ű': 'u', - 'ý': 'y', 'þ': 'th', 'ÿ': 'y', 'ẞ': 'SS', 'œ': 'oe', 'Œ': 'OE', - // Greek - 'α': 'a', 'β': 'b', 'γ': 'g', 'δ': 'd', 'ε': 'e', 'ζ': 'z', 'η': 'h', - 'θ': '8', 'ι': 'i', 'κ': 'k', 'λ': 'l', 'μ': 'm', 'ν': 'n', 'ξ': '3', - 'ο': 'o', 'π': 'p', 'ρ': 'r', 'σ': 's', 'τ': 't', 'υ': 'y', 'φ': 'f', - 'χ': 'x', 'ψ': 'ps', 'ω': 'w', 'ά': 'a', 'έ': 'e', 'ί': 'i', 'ό': 'o', - 'ύ': 'y', 'ή': 'h', 'ώ': 'w', 'ς': 's', 'ϊ': 'i', 'ΰ': 'y', 'ϋ': 'y', - 'ΐ': 'i', 'Α': 'A', 'Β': 'B', 'Γ': 'G', 'Δ': 'D', 'Ε': 'E', 'Ζ': 'Z', - 'Η': 'H', 'Θ': '8', 'Ι': 'I', 'Κ': 'K', 'Λ': 'L', 'Μ': 'M', 'Ν': 'N', - 'Ξ': '3', 'Ο': 'O', 'Π': 'P', 'Ρ': 'R', 'Σ': 'S', 'Τ': 'T', 'Υ': 'Y', - 'Φ': 'F', 'Χ': 'X', 'Ψ': 'PS', 'Ω': 'W', 'Ά': 'A', 'Έ': 'E', 'Ί': 'I', - 'Ό': 'O', 'Ύ': 'Y', 'Ή': 'H', 'Ώ': 'W', 'Ϊ': 'I', 'Ϋ': 'Y', - // Turkish - 'ş': 's', 'Ş': 'S', 'ı': 'i', 'İ': 'I', 'ğ': 'g', 'Ğ': 'G', - // Russian - 'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd', 'е': 'e', 'ё': 'yo', - 'ж': 'zh', 'з': 'z', 'и': 'i', 'й': 'j', 'к': 'k', 'л': 'l', 'м': 'm', - 'н': 'n', 'о': 'o', 'п': 'p', 'р': 'r', 'с': 's', 'т': 't', 'у': 'u', - 'ф': 'f', 'х': 'h', 'ц': 'c', 'ч': 'ch', 'ш': 'sh', 'щ': 'sh', 'ъ': 'u', - 'ы': 'y', 'э': 'e', 'ю': 'yu', 'я': 'ya', 'А': 'A', 'Б': 'B', - 'В': 'V', 'Г': 'G', 'Д': 'D', 'Е': 'E', 'Ё': 'Yo', 'Ж': 'Zh', 'З': 'Z', - 'И': 'I', 'Й': 'J', 'К': 'K', 'Л': 'L', 'М': 'M', 'Н': 'N', 'О': 'O', - 'П': 'P', 'Р': 'R', 'С': 'S', 'Т': 'T', 'У': 'U', 'Ф': 'F', 'Х': 'H', - 'Ц': 'C', 'Ч': 'Ch', 'Ш': 'Sh', 'Щ': 'Sh', 'Ъ': 'U', 'Ы': 'Y', - 'Э': 'E', 'Ю': 'Yu', 'Я': 'Ya', - // Ukranian - 'Є': 'Ye', 'І': 'I', 'Ї': 'Yi', 'Ґ': 'G', - 'є': 'ye', 'і': 'i', 'ї': 'yi', 'ґ': 'g', - // Czech - 'č': 'c', 'ď': 'd', 'ě': 'e', 'ň': 'n', 'ř': 'r', 'š': 's', - 'ť': 't', 'ů': 'u', 'ž': 'z', 'Č': 'C', 'Ď': 'D', 'Ě': 'E', - 'Ň': 'N', 'Ř': 'R', 'Š': 'S', 'Ť': 'T', 'Ů': 'U', 'Ž': 'Z', - // Polish - 'ą': 'a', 'ć': 'c', 'ę': 'e', 'ł': 'l', 'ń': 'n', 'ś': 's', - 'ź': 'z', 'ż': 'z', 'Ą': 'A', 'Ć': 'C', 'Ę': 'e', 'Ł': 'L', - 'Ń': 'N', 'Ś': 'S', 'Ź': 'Z', 'Ż': 'Z', - // Latvian - 'ā': 'a', 'ē': 'e', 'ģ': 'g', 'ī': 'i', 'ķ': 'k', 'ļ': 'l', - 'ņ': 'n', 'ū': 'u', 'Ā': 'A', 'Ē': 'E', 'Ģ': 'G', 'Ī': 'i', - 'Ķ': 'k', 'Ļ': 'L', 'Ņ': 'N', 'Ū': 'u' - }; - - // transliterate non-english characters for their english equivalent - for (let i = 0, len = str.length; i < len; i++) { - if (chars[str.charAt(i)]) { - str = str.replace(str.charAt(i), chars[str.charAt(i)]); - } + str = replace(str, occurrence, replacement); + }); + return str; +} + +export function replace(str, occurrence, replacement, caseSensitive) { + const pattern = occurrence.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + const flags = caseSensitive === false ? 'gi' : 'g'; + const regex = new RegExp(pattern, flags); + return str.replace(regex, String(replacement)); +} + +export function reverse(str) { + const chars = str.split(''); + chars.reverse(); + return chars.join(''); +} + +export function rotate(str, count) { + let chars = str.split(''); + chars = ArrayUtil.rotate(chars, count); + return chars.join(''); +} + +export function slugify(str) { + const sep = '-'; + // prettier-ignore + const chars = { + // Latin + 'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE', + 'Ç': 'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', + 'Î': 'I', 'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O', + 'Õ': 'O', 'Ö': 'O', 'Ő': 'O', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', + 'Ü': 'U', 'Ű': 'U', 'Ý': 'Y', 'Þ': 'TH', 'ß': 'ss', 'à': 'a', 'á': 'a', + 'â': 'a', 'ã': 'a', 'ä': 'a', 'å': 'a', 'æ': 'ae', 'ç': 'c', 'è': 'e', + 'é': 'e', 'ê': 'e', 'ë': 'e', 'ì': 'i', 'í': 'i', 'î': 'i', 'ï': 'i', + 'ð': 'd', 'ñ': 'n', 'ò': 'o', 'ó': 'o', 'ô': 'o', 'õ': 'o', 'ö': 'o', + 'ő': 'o', 'ø': 'o', 'ù': 'u', 'ú': 'u', 'û': 'u', 'ü': 'u', 'ű': 'u', + 'ý': 'y', 'þ': 'th', 'ÿ': 'y', 'ẞ': 'SS', 'œ': 'oe', 'Œ': 'OE', + // Greek + 'α': 'a', 'β': 'b', 'γ': 'g', 'δ': 'd', 'ε': 'e', 'ζ': 'z', 'η': 'h', + 'θ': '8', 'ι': 'i', 'κ': 'k', 'λ': 'l', 'μ': 'm', 'ν': 'n', 'ξ': '3', + 'ο': 'o', 'π': 'p', 'ρ': 'r', 'σ': 's', 'τ': 't', 'υ': 'y', 'φ': 'f', + 'χ': 'x', 'ψ': 'ps', 'ω': 'w', 'ά': 'a', 'έ': 'e', 'ί': 'i', 'ό': 'o', + 'ύ': 'y', 'ή': 'h', 'ώ': 'w', 'ς': 's', 'ϊ': 'i', 'ΰ': 'y', 'ϋ': 'y', + 'ΐ': 'i', 'Α': 'A', 'Β': 'B', 'Γ': 'G', 'Δ': 'D', 'Ε': 'E', 'Ζ': 'Z', + 'Η': 'H', 'Θ': '8', 'Ι': 'I', 'Κ': 'K', 'Λ': 'L', 'Μ': 'M', 'Ν': 'N', + 'Ξ': '3', 'Ο': 'O', 'Π': 'P', 'Ρ': 'R', 'Σ': 'S', 'Τ': 'T', 'Υ': 'Y', + 'Φ': 'F', 'Χ': 'X', 'Ψ': 'PS', 'Ω': 'W', 'Ά': 'A', 'Έ': 'E', 'Ί': 'I', + 'Ό': 'O', 'Ύ': 'Y', 'Ή': 'H', 'Ώ': 'W', 'Ϊ': 'I', 'Ϋ': 'Y', + // Turkish + 'ş': 's', 'Ş': 'S', 'ı': 'i', 'İ': 'I', 'ğ': 'g', 'Ğ': 'G', + // Russian + 'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd', 'е': 'e', 'ё': 'yo', + 'ж': 'zh', 'з': 'z', 'и': 'i', 'й': 'j', 'к': 'k', 'л': 'l', 'м': 'm', + 'н': 'n', 'о': 'o', 'п': 'p', 'р': 'r', 'с': 's', 'т': 't', 'у': 'u', + 'ф': 'f', 'х': 'h', 'ц': 'c', 'ч': 'ch', 'ш': 'sh', 'щ': 'sh', 'ъ': 'u', + 'ы': 'y', 'э': 'e', 'ю': 'yu', 'я': 'ya', 'А': 'A', 'Б': 'B', + 'В': 'V', 'Г': 'G', 'Д': 'D', 'Е': 'E', 'Ё': 'Yo', 'Ж': 'Zh', 'З': 'Z', + 'И': 'I', 'Й': 'J', 'К': 'K', 'Л': 'L', 'М': 'M', 'Н': 'N', 'О': 'O', + 'П': 'P', 'Р': 'R', 'С': 'S', 'Т': 'T', 'У': 'U', 'Ф': 'F', 'Х': 'H', + 'Ц': 'C', 'Ч': 'Ch', 'Ш': 'Sh', 'Щ': 'Sh', 'Ъ': 'U', 'Ы': 'Y', + 'Э': 'E', 'Ю': 'Yu', 'Я': 'Ya', + // Ukranian + 'Є': 'Ye', 'І': 'I', 'Ї': 'Yi', 'Ґ': 'G', + 'є': 'ye', 'і': 'i', 'ї': 'yi', 'ґ': 'g', + // Czech + 'č': 'c', 'ď': 'd', 'ě': 'e', 'ň': 'n', 'ř': 'r', 'š': 's', + 'ť': 't', 'ů': 'u', 'ž': 'z', 'Č': 'C', 'Ď': 'D', 'Ě': 'E', + 'Ň': 'N', 'Ř': 'R', 'Š': 'S', 'Ť': 'T', 'Ů': 'U', 'Ž': 'Z', + // Polish + 'ą': 'a', 'ć': 'c', 'ę': 'e', 'ł': 'l', 'ń': 'n', 'ś': 's', + 'ź': 'z', 'ż': 'z', 'Ą': 'A', 'Ć': 'C', 'Ę': 'e', 'Ł': 'L', + 'Ń': 'N', 'Ś': 'S', 'Ź': 'Z', 'Ż': 'Z', + // Latvian + 'ā': 'a', 'ē': 'e', 'ģ': 'g', 'ī': 'i', 'ķ': 'k', 'ļ': 'l', + 'ņ': 'n', 'ū': 'u', 'Ā': 'A', 'Ē': 'E', 'Ģ': 'G', 'Ī': 'i', + 'Ķ': 'k', 'Ļ': 'L', 'Ņ': 'N', 'Ū': 'u' + }; + + // transliterate non-english characters for their english equivalent + for (let i = 0, len = str.length; i < len; i++) { + if (chars[str.charAt(i)]) { + str = str.replace(str.charAt(i), chars[str.charAt(i)]); } - - str = str.toLowerCase(); - str = str.replace(/[^a-z0-9]/gm, sep); - // replace multiple sep with single sep - str = str.replace(/[\-]+/gm, sep); - // strip sep from the beginning and from the end - str = str.replace(/^[\-]|[\-]$/gm, ''); + } + + str = str.toLowerCase(); + str = str.replace(/[^a-z0-9]/gm, sep); + // replace multiple sep with single sep + str = str.replace(/[\-]+/gm, sep); + // strip sep from the beginning and from the end + str = str.replace(/^[\-]|[\-]$/gm, ''); + return str; +} + +export function startsWith(str, search) { + // if (String.prototype.startsWith) { + // return str.startsWith(search); + // } + return str.substr(0, search.length) === search; +} + +export function toConstantCase(str) { + return str.replace(/[\s]/gm, '_').toUpperCase(); +} + +export function toRandomCase(str) { + return str.replace(/./gm, (match) => { + return RandomUtil.boolean() ? match.toUpperCase() : match.toLowerCase(); + }); +} + +export function toTitleCase(str, toLowerCaseRest) { + return str.replace(/[^\'\‘\’\`\-\s]+/gm, (match) => { + return toUpperCaseFirst(match, toLowerCaseRest); + }); +} + +export function toUpperCaseFirst(str, toLowerCaseRest) { + if (str.length === 0) { return str; - }, - - startsWith(str, search) { - // if (String.prototype.startsWith) { - // return str.startsWith(search); - // } - return str.substr(0, search.length) === search; - }, - - toConstantCase(str) { - return str.replace(/[\s]/gm, '_').toUpperCase(); - }, - - toRandomCase(str) { - return str.replace(/./gm, (match) => { - return RandomUtil.boolean() ? match.toUpperCase() : match.toLowerCase(); - }); - }, - - toTitleCase(str, toLowerCaseRest) { - return str.replace(/[^\'\‘\’\`\-\s]+/gm, (match) => { - return StringUtil.toUpperCaseFirst(match, toLowerCaseRest); - }); - }, - - toUpperCaseFirst(str, toLowerCaseRest) { - if (str.length === 0) { - return str; - } - const f = str.substr(0, 1).toUpperCase(); - const r = str.length > 1 ? str.substr(1) : ''; - return f + (toLowerCaseRest === true ? r.toLowerCase() : r); - }, - - trim(str) { - // return str.replace(/^[\s]+|(? 1 ? str.substr(1) : ''; + return f + (toLowerCaseRest === true ? r.toLowerCase() : r); +} + +export function trim(str) { + // return str.replace(/^[\s]+|(? TrigoUtil.DEG_180) { - return -TrigoUtil.DEG_360 + degDiff; - } else if (degDiff < -TrigoUtil.DEG_180) { - return TrigoUtil.DEG_360 + degTo; - } else { - return degTo; - } - }, - - haversine(lat1, lon1, lat2, lon2, km) { - const degToRad = TrigoUtil.degToRad; - const lat1Rad = degToRad(lat1); - const lon1Rad = degToRad(lon1); - const lat2Rad = degToRad(lat2); - const lon2Rad = degToRad(lon2); - const latDist = lat2Rad - lat1Rad; - const lonDist = lon2Rad - lon1Rad; - // prettier-ignore - const a = Math.sin(latDist / 2.0) * Math.sin(latDist / 2.0) + - Math.cos(lat1Rad) * Math.cos(lat2Rad) * - Math.sin(lonDist / 2.0) * Math.sin(lonDist / 2.0); - const c = Math.atan2(Math.sqrt(a), Math.sqrt(1.0 - a)) * 2.0; - let r; // earth radius - if (km === false) { - r = 3956; // miles - } else { - r = 6371; // km - } - const distance = MathUtil.roundDecimals(r * c, 3); - return distance; - }, - - hypo(distanceX, distanceY) { - return Math.sqrt(distanceX * distanceX + distanceY * distanceY); - }, - - radToDeg(rad) { - return rad * TrigoUtil.RAD_TO_DEG; - }, - - sinDeg(deg) { - return Math.sin(deg * TrigoUtil.DEG_TO_RAD); - }, - - tanDeg(deg) { - return Math.tan(deg * TrigoUtil.DEG_TO_RAD); - }, -}; + +const DEG_0 = 0.0; +const DEG_90 = 90.0; +const DEG_180 = 180.0; +const DEG_270 = 270.0; +const DEG_360 = 360.0; +const DEG_TO_RAD = Math.PI / 180.0; // 0.017453292519943295 +const RAD_TO_DEG = 180.0 / Math.PI; // 57.29577951308232 + +export function acosDeg(rad) { + return Math.acos(rad) * RAD_TO_DEG; +} + +export function angleDeg(y, x) { + return atan2Deg(y, x); +} + +export function angleRad(y, x) { + return Math.atan2(y, x); +} + +export function asinDeg(rad) { + return Math.asin(rad) * RAD_TO_DEG; +} + +export function atanDeg(rad) { + return Math.atan(rad) * RAD_TO_DEG; +} + +export function atan2Deg(y, x) { + return Math.atan2(y, x) * RAD_TO_DEG; +} + +export function cosDeg(deg) { + return Math.cos(deg * DEG_TO_RAD); +} + +export function cycleDeg(deg) { + return MathUtil.cycle(deg, DEG_360); +} + +export function degToRad(deg) { + return deg * DEG_TO_RAD; +} + +export function fastDeg(degFrom, degTo) { + const degDiff = degTo - degFrom; + if (degDiff > DEG_180) { + return -DEG_360 + degDiff; + } else if (degDiff < -DEG_180) { + return DEG_360 + degTo; + } else { + return degTo; + } +} + +export function haversine(lat1, lon1, lat2, lon2, km) { + const degToRad = degToRad; + const lat1Rad = degToRad(lat1); + const lon1Rad = degToRad(lon1); + const lat2Rad = degToRad(lat2); + const lon2Rad = degToRad(lon2); + const latDist = lat2Rad - lat1Rad; + const lonDist = lon2Rad - lon1Rad; + // prettier-ignore + const a = Math.sin(latDist / 2.0) * Math.sin(latDist / 2.0) + + Math.cos(lat1Rad) * Math.cos(lat2Rad) * + Math.sin(lonDist / 2.0) * Math.sin(lonDist / 2.0); + const c = Math.atan2(Math.sqrt(a), Math.sqrt(1.0 - a)) * 2.0; + let r; // earth radius + if (km === false) { + r = 3956; // miles + } else { + r = 6371; // km + } + const distance = MathUtil.roundDecimals(r * c, 3); + return distance; +} + +export function hypo(distanceX, distanceY) { + return Math.sqrt(distanceX * distanceX + distanceY * distanceY); +} + +export function radToDeg(rad) { + return rad * RAD_TO_DEG; +} + +export function sinDeg(deg) { + return Math.sin(deg * DEG_TO_RAD); +} + +export function tanDeg(deg) { + return Math.tan(deg * DEG_TO_RAD); +} diff --git a/src/utils/TypeUtil.js b/src/utils/TypeUtil.js index 788b2d5..055f667 100644 --- a/src/utils/TypeUtil.js +++ b/src/utils/TypeUtil.js @@ -1,167 +1,164 @@ /** global: Base64Util */ /** global: JSONUtil */ /** global: ObjectUtil */ -/** global: TypeUtil */ /** global: URLUtil */ -TypeUtil = { - ARRAY: 'array', - BOOLEAN: 'boolean', - DATE: 'date', - ERROR: 'error', - FUNCTION: 'function', - NAN: 'nan', - NUMBER: 'number', - NULL: 'null', - OBJECT: 'object', - REGEXP: 'regexp', - STRING: 'string', - UNDEFINED: 'undefined', - UNKNOWN: 'unknown', - // XML: 'xml', - - isArray(val) { - // https://stackoverflow.com/questions/4775722/check-if-object-is-array - if (Array.isArray) { - return Array.isArray(val); - } - return Object.prototype.toString.call(val) === '[object Array]'; - }, - - isBase64(val) { - if (TypeUtil.isString(val)) { - try { - if (Base64Util.decode(val) !== '') { - return true; - } - } catch (e) { - // value is not valid base64 data - } - } - return false; - }, - - isBoolean(val) { - return typeof val === 'boolean'; - }, - - isDate(val) { - return Object.prototype.toString.call(val) === '[object Date]'; - }, - - isError(val) { - return val instanceof Error; - }, - - isFunction(val) { - return typeof val === 'function'; - }, - - isJSON(val) { - if (TypeUtil.isString(val)) { - try { - JSONUtil.decode(val); +ARRAY = 'array'; +BOOLEAN = 'boolean'; +DATE = 'date'; +ERROR = 'error'; +FUNCTION = 'function'; +NAN = 'nan'; +NUMBER = 'number'; +NULL = 'null'; +OBJECT = 'object'; +REGEXP = 'regexp'; +STRING = 'string'; +UNDEFINED = 'undefined'; +UNKNOWN = 'unknown'; +// XML = 'xml'; + +export function isArray(val) { + // https://stackoverflow.com/questions/4775722/check-if-object-is-array + if (Array.isArray) { + return Array.isArray(val); + } + return Object.prototype.toString.call(val) === '[object Array]'; +} + +export function isBase64(val) { + if (isString(val)) { + try { + if (Base64Util.decode(val) !== '') { return true; - } catch (e) { - // value is not valid json data } + } catch (e) { + // value is not valid base64 data } - return false; - }, - - isNaN(val) { - return ObjectUtil.is(val, NaN); - }, - - isNone(val) { - return TypeUtil.isUndefined(val) || TypeUtil.isNull(val) || TypeUtil.isNaN(val); - }, - - isNumber(val) { - return typeof val === 'number' && !isNaN(val) && isFinite(val); - }, - - isNull(val) { - return val === null; - }, - - isObject(val) { - return ( - typeof val === 'object' && - Object.prototype.toString.call(val) === '[object Object]' - ); - }, - - isRegExp(val) { - return val instanceof RegExp; - }, - - isString(val) { - return typeof val === 'string'; - }, - - isType(val) { - switch (val) { - case TypeUtil.ARRAY: - case TypeUtil.BOOLEAN: - case TypeUtil.DATE: - case TypeUtil.ERROR: - case TypeUtil.FUNCTION: - case TypeUtil.NAN: - case TypeUtil.NUMBER: - case TypeUtil.NULL: - case TypeUtil.OBJECT: - case TypeUtil.REGEXP: - case TypeUtil.STRING: - case TypeUtil.UNDEFINED: - case TypeUtil.UNKNOWN: - // case TypeUtil.XML: - return true; - default: - return false; - } - }, - - isUndefined(val) { - return typeof val === 'undefined'; - }, - - // isXML: function(val) { - // // TODO - // return false; - // }, - - of(val) { - if (TypeUtil.isArray(val)) { - return TypeUtil.ARRAY; - } else if (TypeUtil.isBoolean(val)) { - return TypeUtil.BOOLEAN; - } else if (TypeUtil.isDate(val)) { - return TypeUtil.DATE; - } else if (TypeUtil.isError(val)) { - return TypeUtil.ERROR; - } else if (TypeUtil.isFunction(val)) { - return TypeUtil.FUNCTION; - } else if (TypeUtil.isNaN(val)) { - return TypeUtil.NAN; - } else if (TypeUtil.isNumber(val)) { - return TypeUtil.NUMBER; - } else if (TypeUtil.isNull(val)) { - return TypeUtil.NULL; - } else if (TypeUtil.isRegExp(val)) { - return TypeUtil.REGEXP; - } else if (TypeUtil.isString(val)) { - return TypeUtil.STRING; - } else if (TypeUtil.isUndefined(val)) { - return TypeUtil.UNDEFINED; - } - // else if (TypeUtil.isXML(val)) { - // return TypeUtil.XML; - // } - else if (TypeUtil.isObject(val)) { - return TypeUtil.OBJECT; - } else { - return TypeUtil.UNKNOWN; + } + return false; +} + +export function isBoolean(val) { + return typeof val === 'boolean'; +} + +export function isDate(val) { + return Object.prototype.toString.call(val) === '[object Date]'; +} + +export function isError(val) { + return val instanceof Error; +} + +export function isFunction(val) { + return typeof val === 'function'; +} + +export function isJSON(val) { + if (isString(val)) { + try { + JSONUtil.decode(val); + return true; + } catch (e) { + // value is not valid json data } - }, -}; + } + return false; +} + +export function isNaN(val) { + return ObjectUtil.is(val, NaN); +} + +export function isNone(val) { + return isUndefined(val) || isNull(val) || isNaN(val); +} + +export function isNumber(val) { + return typeof val === 'number' && !isNaN(val) && isFinite(val); +} + +export function isNull(val) { + return val === null; +} + +export function isObject(val) { + return ( + typeof val === 'object' && + Object.prototype.toString.call(val) === '[object Object]' + ); +} + +export function isRegExp(val) { + return val instanceof RegExp; +} + +export function isString(val) { + return typeof val === 'string'; +} + +export function isType(val) { + switch (val) { + case ARRAY: + case BOOLEAN: + case DATE: + case ERROR: + case FUNCTION: + case NAN: + case NUMBER: + case NULL: + case OBJECT: + case REGEXP: + case STRING: + case UNDEFINED: + case UNKNOWN: + // case XML: + return true; + default: + return false; + } +} + +export function isUndefined(val) { + return typeof val === 'undefined'; +} + +// export function isXML(val) { +// // TODO +// return false; +// }; + +export function of(val) { + if (isArray(val)) { + return ARRAY; + } else if (isBoolean(val)) { + return BOOLEAN; + } else if (isDate(val)) { + return DATE; + } else if (isError(val)) { + return ERROR; + } else if (isFunction(val)) { + return FUNCTION; + } else if (isNaN(val)) { + return NAN; + } else if (isNumber(val)) { + return NUMBER; + } else if (isNull(val)) { + return NULL; + } else if (isRegExp(val)) { + return REGEXP; + } else if (isString(val)) { + return STRING; + } else if (isUndefined(val)) { + return UNDEFINED; + } + // else if (isXML(val)) { + // return XML; + // } + else if (isObject(val)) { + return OBJECT; + } else { + return UNKNOWN; + } +} diff --git a/src/utils/URLUtil.js b/src/utils/URLUtil.js index b46ae2c..fd753b2 100644 --- a/src/utils/URLUtil.js +++ b/src/utils/URLUtil.js @@ -1,98 +1,92 @@ -/** global: URLUtil */ +export function getDomain(url = getURL(), level) { + // remove protocol, www and port + let domain = url.replace(/(^\w+:|^)\/\/(www\.)?/, ''); + domain = domain.split(':')[0]; + if (!level) { + return domain; + } + let parts = domain.split('.'); + if (level > parts.length || level <= 0) { + return ''; + } + let domainName = parts[parts.length - level]; + return domainName; +} -URLUtil = { - getDomain(url = URLUtil.getURL(), level) { - // remove protocol, www and port - let domain = url.replace(/(^\w+:|^)\/\/(www\.)?/, ''); - domain = domain.split(':')[0]; - if (!level) { - return domain; - } - let parts = domain.split('.'); - if (level > parts.length || level <= 0) { - return ''; - } - let domainName = parts[parts.length - level]; - return domainName; - }, +export function getParameterByName(url, name, defaultValue) { + const paramsDict = getParameters(url); + return name in paramsDict ? paramsDict[name] || defaultValue || '' : defaultValue; +} - getParameterByName(url, name, defaultValue) { - const paramsDict = URLUtil.getParameters(url); - return name in paramsDict - ? paramsDict[name] || defaultValue || '' - : defaultValue; - }, +export function getParameters(url) { + return getParametersDict(url); +} - getParameters(url) { - return URLUtil.getParametersDict(url); - }, +export function getParametersDict(url) { + const paramsList = getParametersList(url); + let param; + const paramsDict = {}; + for (let i = 0, j = paramsList.length; i < j; i++) { + param = paramsList[i]; + paramsDict[param['key']] = param['value']; + } + return paramsDict; +} - getParametersDict(url) { - const paramsList = URLUtil.getParametersList(url); - let param; - const paramsDict = {}; - for (let i = 0, j = paramsList.length; i < j; i++) { - param = paramsList[i]; - paramsDict[param['key']] = param['value']; - } - return paramsDict; - }, +export function getParametersList(url) { + const paramsString = getParametersString(url); + const paramsList = []; + const paramsRE = /(([\w\-]+){1}(\=([^\&\n\r\t]*){1})?)/g; + let paramMatch = paramsRE.exec(paramsString); + while (paramMatch) { + paramsList.push({ + key: paramMatch[2], + value: decodeURIComponent(paramMatch[4] || ''), + }); + paramMatch = paramsRE.exec(paramsString); + } + return paramsList; +} - getParametersList(url) { - const paramsString = URLUtil.getParametersString(url); - const paramsList = []; - const paramsRE = /(([\w\-]+){1}(\=([^\&\n\r\t]*){1})?)/g; - let paramMatch = paramsRE.exec(paramsString); - while (paramMatch) { - paramsList.push({ - key: paramMatch[2], - value: decodeURIComponent(paramMatch[4] || ''), - }); - paramMatch = paramsRE.exec(paramsString); - } - return paramsList; - }, +export function getParametersString(url = getURL()) { + const queryStringPosition = url.indexOf('?'); + // prettier-ignore + let queryString = (queryStringPosition > -1 ? url.substr(queryStringPosition + 1) : ''); + const hashDelimiterPosition = queryString.indexOf('#'); + if (hashDelimiterPosition > -1) { + queryString = queryString.substring(0, hashDelimiterPosition); + } + return queryString; +} - getParametersString(url = URLUtil.getURL()) { - const queryStringPosition = url.indexOf('?'); - // prettier-ignore - let queryString = (queryStringPosition > -1 ? url.substr(queryStringPosition + 1) : ''); - const hashDelimiterPosition = queryString.indexOf('#'); - if (hashDelimiterPosition > -1) { - queryString = queryString.substring(0, hashDelimiterPosition); - } - return queryString; - }, +export function getURL() { + let url = ''; + try { + url = window.location.href; + } catch (e) { + // catch exception if not running in browser + } + return url; +} - getURL() { - let url = ''; - try { - url = window.location.href; - } catch (e) { - // catch exception if not running in browser - } - return url; - }, +export function hasParameter(url, name) { + return name in getParametersDict(url); +} - hasParameter(url, name) { - return name in URLUtil.getParametersDict(url); - }, +export function isFile(url) { + return (url || getURL()).indexOf('file://') === 0; +} - isFile(url) { - return (url || URLUtil.getURL()).indexOf('file://') === 0; - }, +export function isHttp(url) { + return (url || getURL()).indexOf('http://') === 0; +} - isHttp(url) { - return (url || URLUtil.getURL()).indexOf('http://') === 0; - }, +export function isHttps(url) { + return (url || getURL()).indexOf('https://') === 0; +} - isHttps(url) { - return (url || URLUtil.getURL()).indexOf('https://') === 0; - }, - - isLocalhost(url) { - const re = - /^(https?\:\/\/)(localhost(.[a-z0-9\-])*|127\.0\.0\.1)(\:[\d]+)?(\/(.)*)?$/; - return re.test(url || URLUtil.getURL()); - }, -}; +export function isLocalhost(url) { + const re = + /^(https?\:\/\/)(localhost(.[a-z0-9\-])*|127\.0\.0\.1)(\:[\d]+)?(\/(.)*)?$/; + return re.test(url || getURL()); +} diff --git a/src/utils/UTF8Util.js b/src/utils/UTF8Util.js index 4512229..73ddfa2 100644 --- a/src/utils/UTF8Util.js +++ b/src/utils/UTF8Util.js @@ -1,65 +1,61 @@ -/** global: UTF8Util */ - -UTF8Util = { - decode(input) { - return decodeURIComponent(escape(input)); - - // var output = ''; - // var i = 0; - // var j = input.length; - // var c, c1, c2; - - // while (i < j) - // { - // c = input.charCodeAt(i); - - // if (c < 128) { - // output += String.fromCharCode(c); - // i++; - // } - // else if((c > 191) && (c < 224)) { - // c2 = input.charCodeAt(i + 1); - // output += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); - // i += 2; - // } - // else { - // c2 = input.charCodeAt(i + 1); - // c3 = input.charCodeAt(i + 2); - // output += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); - // i += 3; - // } - // } - - // return output; - }, - - encode(input) { - return unescape(encodeURIComponent(input)); - - // input = input.replace(/\r\n/g, '\n'); - - // var output = ''; - // var i = 0; - // var j = input.length; - // var c; - - // for (i; i < j; i++) - // { - // c = input.charCodeAt(i); - // if (c < 128) { - // output += String.fromCharCode(c); - // } - // else if ((c > 127) && (c < 2048)) { - // output += String.fromCharCode((c >> 6) | 192); - // output += String.fromCharCode((c & 63) | 128); - // } - // else { - // output += String.fromCharCode((c >> 12) | 224); - // output += String.fromCharCode(((c >> 6) & 63) | 128); - // output += String.fromCharCode((c & 63) | 128); - // } - // } - - // return output; - }, -}; +export function decode(input) { + return decodeURIComponent(escape(input)); + + // var output = ''; + // var i = 0; + // var j = input.length; + // var c, c1, c2; + + // while (i < j) + // { + // c = input.charCodeAt(i); + + // if (c < 128) { + // output += String.fromCharCode(c); + // i++; + // } + // else if((c > 191) && (c < 224)) { + // c2 = input.charCodeAt(i + 1); + // output += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); + // i += 2; + // } + // else { + // c2 = input.charCodeAt(i + 1); + // c3 = input.charCodeAt(i + 2); + // output += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); + // i += 3; + // } + // } + + // return output; +} + +export function encode(input) { + return unescape(encodeURIComponent(input)); + + // input = input.replace(/\r\n/g, '\n'); + + // var output = ''; + // var i = 0; + // var j = input.length; + // var c; + + // for (i; i < j; i++) + // { + // c = input.charCodeAt(i); + // if (c < 128) { + // output += String.fromCharCode(c); + // } + // else if ((c > 127) && (c < 2048)) { + // output += String.fromCharCode((c >> 6) | 192); + // output += String.fromCharCode((c & 63) | 128); + // } + // else { + // output += String.fromCharCode((c >> 12) | 224); + // output += String.fromCharCode(((c >> 6) & 63) | 128); + // output += String.fromCharCode((c & 63) | 128); + // } + // } + + // return output; +} diff --git a/src/utils/XMLUtil.js b/src/utils/XMLUtil.js index 47714a7..13a4154 100644 --- a/src/utils/XMLUtil.js +++ b/src/utils/XMLUtil.js @@ -1,33 +1,29 @@ -/** global: XMLUtil */ +// export function decode(str) { +// // https://stackoverflow.com/questions/17604071/parse-xml-using-javascript +// var doc = null; +// try { +// if (window.DOMParser) { +// parser = new DOMParser(); +// doc = parser.parseFromString(str, 'text/xml'); +// } else { +// // Internet Explorer +// doc = new ActiveXObject('Microsoft.XMLDOM'); +// doc.async = false; +// doc.loadXML(str); +// } +// } catch(e) { +// } +// return doc; +// }; -XMLUtil = { - // decode: function(str) { - // // https://stackoverflow.com/questions/17604071/parse-xml-using-javascript - // var doc = null; - // try { - // if (window.DOMParser) { - // parser = new DOMParser(); - // doc = parser.parseFromString(str, 'text/xml'); - // } else { - // // Internet Explorer - // doc = new ActiveXObject('Microsoft.XMLDOM'); - // doc.async = false; - // doc.loadXML(str); - // } - // } catch(e) { - // } - // return doc; - // }, +// export function encode(doc) { +// var ser = new XMLSerializer(); +// var str = ser.serializeToString(doc); +// return str; +// }; - // encode: function(doc) { - // var ser = new XMLSerializer(); - // var str = ser.serializeToString(doc); - // return str; - // }, - - removeNamespaces(str) { - return str.replace(/(\<(.|\n)+?\>)/g, (tag) => { - return tag.replace(/(\s|\<\/?){1}([\w]+\:){1}/g, '$1'); - }); - }, -}; +export function removeNamespaces(str) { + return str.replace(/(\<(.|\n)+?\>)/g, (tag) => { + return tag.replace(/(\s|\<\/?){1}([\w]+\:){1}/g, '$1'); + }); +} From c15ac0e5a75fc72e2e77f4c47b4c00884e99e0d3 Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Wed, 15 Jan 2025 16:42:50 +0100 Subject: [PATCH 03/22] Import necessary utility modules. --- src/utils.js | 146 ++++++++++--------------- src/utils/ArrayUtil.js | 14 +-- src/utils/Base64Util.js | 2 +- src/utils/ColorUtil.js | 42 +++---- src/utils/DateUtil.js | 2 +- src/utils/FunctionUtil.js | 2 +- src/utils/GeomUtil.js | 2 +- src/utils/InterpolationUtil.js | 2 +- src/utils/MathUtil.js | 8 +- src/utils/ObjectUtil.js | 18 +-- src/utils/RandomUtil.js | 2 +- src/utils/StringUtil.js | 6 +- src/utils/TestUtil.js | 10 +- src/utils/TrigoUtil.js | 2 +- src/utils/TypeUtil.js | 8 +- src/utils/{ => color}/ColorCmykUtil.js | 40 +++---- src/utils/{ => color}/ColorHexUtil.js | 52 ++++----- src/utils/{ => color}/ColorRgbUtil.js | 6 +- src/utils/{ => geom}/PointUtil.js | 6 +- 19 files changed, 167 insertions(+), 203 deletions(-) rename src/utils/{ => color}/ColorCmykUtil.js (74%) rename src/utils/{ => color}/ColorHexUtil.js (73%) rename src/utils/{ => color}/ColorRgbUtil.js (98%) rename src/utils/{ => geom}/PointUtil.js (94%) diff --git a/src/utils.js b/src/utils.js index 5d62246..d156d95 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,95 +1,59 @@ -(function (root, factory) { - if (typeof define === 'function' && define.amd) { - // AMD - define(factory); - } else if (typeof module === 'object') { - // CommonJS - module.exports = factory(); - } else { - // Script tag import i.e., IIFE - root.utils = factory(); - root.u = factory(); - } -})(this, function () { - 'use strict'; +import * as ArrayUtil from './utils/array.js'; +import * as Base64Util from './utils/base64.js'; +import * as ColorUtil from './utils/color.js'; +import * as DateUtil from './utils/date.js'; +import * as EaseUtil from './utils/ease.js'; +import * as FunctionUtil from './utils/function.js'; +import * as GeomUtil from './utils/geom.js'; +import * as HexUtil from './utils/hex.js'; +import * as InterpolationUtil from './utils/interpolation.js'; +import * as JSONUtil from './utils/json.js'; +import * as MathUtil from './utils/math.js'; +import * as NumberUtil from './utils/number.js'; +import * as ObjectUtil from './utils/object.js'; +import * as RandomUtil from './utils/random.js'; +import * as StringUtil from './utils/string.js'; +import * as TestUtil from './utils/test.js'; +import * as TrigoUtil from './utils/trigo.js'; +import * as TypeUtil from './utils/type.js'; +import * as URLUtil from './utils/url.js'; +import * as UTF8Util from './utils/utf8.js'; +import * as XMLUtil from './utils/xml.js'; - var ArrayUtil, - Base64Util, - ColorCmykUtil, - ColorHexUtil, - ColorRgbUtil, - ColorUtil, - DateUtil, - EaseUtil, - FunctionUtil, - PointUtil, - GeomUtil, - HexUtil, - InterpolationUtil, - JSONUtil, - MathUtil, - NumberUtil, - ObjectUtil, - RandomUtil, - StringUtil, - TestUtil, - TrigoUtil, - TypeUtil, - URLUtil, - UTF8Util, - XMLUtil; - @import './utils/ArrayUtil.js' - @import './utils/Base64Util.js' - @import './utils/ColorCmykUtil.js' - @import './utils/ColorHexUtil.js' - @import './utils/ColorRgbUtil.js' - @import './utils/ColorUtil.js' - @import './utils/DateUtil.js' - @import './utils/EaseUtil.js' - @import './utils/FunctionUtil.js' - @import './utils/PointUtil.js' - @import './utils/GeomUtil.js' - @import './utils/HexUtil.js' - @import './utils/InterpolationUtil.js' - @import './utils/JSONUtil.js' - @import './utils/MathUtil.js' - @import './utils/NumberUtil.js' - @import './utils/ObjectUtil.js' - @import './utils/RandomUtil.js' - @import './utils/StringUtil.js' - @import './utils/TestUtil.js' - @import './utils/TrigoUtil.js' - @import './utils/TypeUtil.js' - @import './utils/URLUtil.js' - @import './utils/UTF8Util.js' - @import './utils/XMLUtil.js' +export const utils = { + array: ArrayUtil, + base64: Base64Util, + color: ColorUtil, + date: DateUtil, + ease: EaseUtil, + func: FunctionUtil, + geom: GeomUtil, + hex: HexUtil, + json: JSONUtil, + math: MathUtil, + number: NumberUtil, + object: ObjectUtil, + random: RandomUtil, + string: StringUtil, + test: TestUtil, + trigo: TrigoUtil, + type: TypeUtil, + xml: XMLUtil, + url: URLUtil, + utf8: UTF8Util, + version: '0.24.1', +}; - var utils = { - array: ArrayUtil, - base64: Base64Util, - color: ColorUtil, - date: DateUtil, - ease: EaseUtil, - func: FunctionUtil, - geom: GeomUtil, - // point: PointUtil, - hex: HexUtil, - json: JSONUtil, - math: MathUtil, - // interpolation: InterpolationUtil, - number: NumberUtil, - object: ObjectUtil, - random: RandomUtil, - string: StringUtil, - test: TestUtil, - trigo: TrigoUtil, - type: TypeUtil, - xml: XMLUtil, - url: URLUtil, - utf8: UTF8Util, - version: '0.24.1', - }; +export default utils; - return utils; -}); +// backward compatibility - add to global scope for legacy usage +if (typeof window !== 'undefined') { + // for browsers + window.utils = utils; + window.u = utils; // alias for legacy code +} else if (typeof global !== 'undefined') { + // for Node.js + global.utils = utils; + global.u = utils; // alias for legacy code +} diff --git a/src/utils/ArrayUtil.js b/src/utils/ArrayUtil.js index 31037dd..64669c2 100644 --- a/src/utils/ArrayUtil.js +++ b/src/utils/ArrayUtil.js @@ -1,10 +1,10 @@ -/** global: DateUtil */ -/** global: FunctionUtil */ -/** global: MathUtil */ -/** global: ObjectUtil */ -/** global: RandomUtil */ -/** global: StringUtil */ -/** global: TypeUtil */ +import * as DateUtil from './date.js'; +import * as FunctionUtil from './function.js'; +import * as MathUtil from './math.js'; +import * as ObjectUtil from './object.js'; +import * as RandomUtil from './random.js'; +import * as StringUtil from './string.js'; +import * as TypeUtil from './type.js'; export function all(list) { return list.every((item) => { diff --git a/src/utils/Base64Util.js b/src/utils/Base64Util.js index 14ee9a7..7b90e58 100644 --- a/src/utils/Base64Util.js +++ b/src/utils/Base64Util.js @@ -1,4 +1,4 @@ -/** global: UTF8Util */ +import * as UTF8Util from './utf8.js'; const CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; // prettier-ignore diff --git a/src/utils/ColorUtil.js b/src/utils/ColorUtil.js index cf2302c..24fddf7 100644 --- a/src/utils/ColorUtil.js +++ b/src/utils/ColorUtil.js @@ -1,14 +1,14 @@ -/** global: ColorCmykUtil */ -/** global: ColorHexUtil */ -/** global: ColorRgbUtil */ +import * as CMYKColorUtil from './color/cmyk.js'; +import * as HexColorUtil from './color/hex.js'; +import * as RGBColorUtil from './color/rgb.js'; const ColorUtil = { - cmyk: ColorCmykUtil, - // cmykToGrayscale: ColorCmykUtil.toGrayscale, - cmykToHex: ColorCmykUtil.toHex, - // cmykToHsl: ColorCmykUtil.toHsl, - // cmykToHsv: ColorCmykUtil.toHsv, - cmykToRgb: ColorCmykUtil.toRgb, + cmyk: CMYKColorUtil, + // cmykToGrayscale: CMYKColorUtil.toGrayscale, + cmykToHex: CMYKColorUtil.toHex, + // cmykToHsl: CMYKColorUtil.toHsl, + // cmykToHsv: CMYKColorUtil.toHsv, + cmykToRgb: CMYKColorUtil.toRgb, // grayscale: ColorGrayscaleUtil, // grayscaleToGrayscale: ColorGrayscaleUtil.toGrayscale, @@ -17,12 +17,12 @@ const ColorUtil = { // grayscaleToHsv: ColorGrayscaleUtil.toHsv, // grayscaleToRgb: ColorGrayscaleUtil.toRgb, - hex: ColorHexUtil, - hexToCmyk: ColorHexUtil.toCmyk, - // hexToGrayscale: ColorHexUtil.toGrayscale, - // hexToHsl: ColorHexUtil.toHsl, - // hexToHsv: ColorHexUtil.toHsv, - hexToRgb: ColorHexUtil.toRgb, + hex: HexColorUtil, + hexToCmyk: HexColorUtil.toCmyk, + // hexToGrayscale: HexColorUtil.toGrayscale, + // hexToHsl: HexColorUtil.toHsl, + // hexToHsv: HexColorUtil.toHsv, + hexToRgb: HexColorUtil.toRgb, // hsl: ColorHslUtil, // hslToGrayscale: ColorHslUtil.toGrayscale, @@ -38,10 +38,10 @@ const ColorUtil = { // hsvToHsv: ColorHsvUtil.toHsv, // hsvToRgb: ColorHsvUtil.toRgb, - rgb: ColorRgbUtil, - rgbToCmyk: ColorRgbUtil.toCmyk, - // rgbToGrayscale: ColorRgbUtil.toGrayscale, - rgbToHex: ColorRgbUtil.toRgb, - // rgbToHsl: ColorRgbUtil.toHsl, - // rgbToHsv: ColorRgbUtil.toHsv + rgb: RGBColorUtil, + rgbToCmyk: RGBColorUtil.toCmyk, + // rgbToGrayscale: RGBColorUtil.toGrayscale, + rgbToHex: RGBColorUtil.toRgb, + // rgbToHsl: RGBColorUtil.toHsl, + // rgbToHsv: RGBColorUtil.toHsv }; diff --git a/src/utils/DateUtil.js b/src/utils/DateUtil.js index ed1aa96..b01daf3 100644 --- a/src/utils/DateUtil.js +++ b/src/utils/DateUtil.js @@ -1,4 +1,4 @@ -/** global: StringUtil */ +import * as StringUtil from './string.js'; export function clone(date) { return new Date(date.getTime()); diff --git a/src/utils/FunctionUtil.js b/src/utils/FunctionUtil.js index a6a7756..c7ca5ff 100644 --- a/src/utils/FunctionUtil.js +++ b/src/utils/FunctionUtil.js @@ -1,4 +1,4 @@ -/** global: TypeUtil */ +import * as TypeUtil from './type.js'; export function args(argumentsObj, skipCount) { return [].slice.call(argumentsObj, skipCount || 0); diff --git a/src/utils/GeomUtil.js b/src/utils/GeomUtil.js index d231036..96d3f5f 100644 --- a/src/utils/GeomUtil.js +++ b/src/utils/GeomUtil.js @@ -1,4 +1,4 @@ -/** global: PointUtil */ +import * as PointUtil from './geom/point.js'; const GeomUtil = { point: PointUtil, diff --git a/src/utils/InterpolationUtil.js b/src/utils/InterpolationUtil.js index 37ebbdf..780a5a6 100644 --- a/src/utils/InterpolationUtil.js +++ b/src/utils/InterpolationUtil.js @@ -1,4 +1,4 @@ -/** global: MathUtil */ +import * as MathUtil from './math.js'; export function bilinear(a, b, c, d, u, v) { const f = linear; diff --git a/src/utils/MathUtil.js b/src/utils/MathUtil.js index b95677e..82ed7f2 100644 --- a/src/utils/MathUtil.js +++ b/src/utils/MathUtil.js @@ -1,7 +1,7 @@ -/** global: ArrayUtil */ -/** global: FunctionUtil */ -/** global: InterpolationUtil */ -/** global: TypeUtil */ +import * as ArrayUtil from './array.js'; +import * as FunctionUtil from './function.js'; +import * as InterpolationUtil from './interpolation.js'; +import * as TypeUtil from './type.js'; export function average(values) { return summation(values) / values.length; diff --git a/src/utils/ObjectUtil.js b/src/utils/ObjectUtil.js index d61aa73..4a5f0fb 100644 --- a/src/utils/ObjectUtil.js +++ b/src/utils/ObjectUtil.js @@ -1,12 +1,12 @@ -/** global: ArrayUtil */ -/** global: Base64Util */ -/** global: DateUtil */ -/** global: FunctionUtil */ -/** global: JSONUtil */ -/** global: MathUtil */ -/** global: StringUtil */ -/** global: TypeUtil */ -/** global: URLUtil */ +import * as ArrayUtil from './array.js'; +import * as Base64Util from './base64.js'; +import * as DateUtil from './date.js'; +import * as FunctionUtil from './function.js'; +import * as JSONUtil from './json.js'; +import * as MathUtil from './math.js'; +import * as StringUtil from './string.js'; +import * as TypeUtil from './type.js'; +import * as URLUtil from './url.js'; export function assign(obj, other) { const objs = [other].concat(FunctionUtil.args(arguments, 2)); diff --git a/src/utils/RandomUtil.js b/src/utils/RandomUtil.js index 8a4b22a..684f9cd 100644 --- a/src/utils/RandomUtil.js +++ b/src/utils/RandomUtil.js @@ -1,4 +1,4 @@ -/** global: FunctionUtil */ +import * as FunctionUtil from './function.js'; export function argument() { const args = FunctionUtil.args(arguments); diff --git a/src/utils/StringUtil.js b/src/utils/StringUtil.js index b594094..bf247be 100644 --- a/src/utils/StringUtil.js +++ b/src/utils/StringUtil.js @@ -1,6 +1,6 @@ -/** global: ArrayUtil */ -/** global: RandomUtil */ -/** global: TypeUtil */ +import * as ArrayUtil from './array.js'; +import * as RandomUtil from './random.js'; +import * as TypeUtil from './type.js'; export function contains(str, occurrence) { return Boolean(str.includes(occurrence)); diff --git a/src/utils/TestUtil.js b/src/utils/TestUtil.js index 67754e7..2d1fb96 100644 --- a/src/utils/TestUtil.js +++ b/src/utils/TestUtil.js @@ -1,8 +1,8 @@ -/** global: FunctionUtil */ -/** global: JSONUtil */ -/** global: MathUtil */ -/** global: ObjectUtil */ -/** global: TypeUtil */ +import * as FunctionUtil from './function.js'; +import * as JSONUtil from './json.js'; +import * as MathUtil from './math.js'; +import * as ObjectUtil from './object.js'; +import * as TypeUtil from './type.js'; export function assertArray(val, len) { if (!TypeUtil.isArray(val)) { diff --git a/src/utils/TrigoUtil.js b/src/utils/TrigoUtil.js index 63ef925..9ebeb97 100644 --- a/src/utils/TrigoUtil.js +++ b/src/utils/TrigoUtil.js @@ -1,4 +1,4 @@ -/** global: MathUtil */ +import * as MathUtil from './math.js'; const DEG_0 = 0.0; const DEG_90 = 90.0; diff --git a/src/utils/TypeUtil.js b/src/utils/TypeUtil.js index 055f667..aeaffba 100644 --- a/src/utils/TypeUtil.js +++ b/src/utils/TypeUtil.js @@ -1,7 +1,7 @@ -/** global: Base64Util */ -/** global: JSONUtil */ -/** global: ObjectUtil */ -/** global: URLUtil */ +import * as Base64Util from './base64.js'; +import * as JSONUtil from './json.js'; +import * as ObjectUtil from './object.js'; +import * as URLUtil from './url.js'; ARRAY = 'array'; BOOLEAN = 'boolean'; diff --git a/src/utils/ColorCmykUtil.js b/src/utils/color/ColorCmykUtil.js similarity index 74% rename from src/utils/ColorCmykUtil.js rename to src/utils/color/ColorCmykUtil.js index 789f0b5..c603c42 100644 --- a/src/utils/ColorCmykUtil.js +++ b/src/utils/color/ColorCmykUtil.js @@ -1,8 +1,8 @@ -/** global: ColorRgbUtil */ +import * as RGBColorUtil from './rgb.js'; // export function average(colors) { -// return ColorRgbUtil.toCmyk( -// ColorRgbUtil.average( +// return RGBColorUtil.toCmyk( +// RGBColorUtil.average( // colors.map(function(color){ // return toRgb(color); // }) @@ -10,33 +10,33 @@ // }; // export function distance(colorA, colorB) { -// return ColorRgbUtil.distance( +// return RGBColorUtil.distance( // toRgb(colorA), // toRgb(colorB)); // }; // export function gradient(colors, steps) { -// return ColorRgbUtil.gradient(colors.map(function(color){ +// return RGBColorUtil.gradient(colors.map(function(color){ // return toRgb(color); // }), steps).map(function(color){ -// return ColorRgbUtil.toCmyk(color); +// return RGBColorUtil.toCmyk(color); // }); // }; // export function gradientMatrix(colors, stepsX, stepsY) { -// return ColorRgbUtil.gradientMatrix( +// return RGBColorUtil.gradientMatrix( // ObjectUtil.map(colors, function(color){ // return toRgb(color); // }), stepsX, stepsY).map(function(colors){ // return colors.map(function(color){ -// return ColorRgbUtil.toCmyk(color); +// return RGBColorUtil.toCmyk(color); // }); // }); // }; // export function interpolateBilinear(a, b, c, d, u, v) { -// return ColorRgbUtil.toCmyk( -// ColorRgbUtil.interpolateBilinear( +// return RGBColorUtil.toCmyk( +// RGBColorUtil.interpolateBilinear( // toRgb(a), // toRgb(b), // toRgb(c), @@ -44,23 +44,23 @@ // }; // export function interpolateLinear(colorFrom, colorTo, t) { -// return ColorRgbUtil.toCmyk( -// ColorRgbUtil.interpolateLinear( +// return RGBColorUtil.toCmyk( +// RGBColorUtil.interpolateLinear( // toRgb(colorFrom), // toRgb(colorTo), t)); // }; // export function interpolateMultilinear(colors, t) { -// return ColorRgbUtil.toCmyk( -// ColorRgbUtil.interpolateMultilinear( +// return RGBColorUtil.toCmyk( +// RGBColorUtil.interpolateMultilinear( // colors.map(function(color){ // return toRgb(color); // }), t)); // }; // export function nearest(colorSearch, colors) { -// return ColorRgbUtil.toCmyk( -// ColorRgbUtil.nearest( +// return RGBColorUtil.toCmyk( +// RGBColorUtil.nearest( // toRgb(colorSearch), // colors.map(function(color){ // return toRgb(color); @@ -69,21 +69,21 @@ // }; // export function toGrayscale(color) { -// return ColorRgbUtil.toGrayscale( +// return RGBColorUtil.toGrayscale( // toRgb(color)); // }; export function toHex(color, prefix) { - return ColorRgbUtil.toHex(toRgb(color), prefix); + return RGBColorUtil.toHex(toRgb(color), prefix); } // export function toHsl(color) { -// return ColorRgbUtil.toHsl( +// return RGBColorUtil.toHsl( // toRgb(color)); // }; // export function toHsv(color) { -// return ColorRgbUtil.toHsv( +// return RGBColorUtil.toHsv( // toRgb(color)); // }; diff --git a/src/utils/ColorHexUtil.js b/src/utils/color/ColorHexUtil.js similarity index 73% rename from src/utils/ColorHexUtil.js rename to src/utils/color/ColorHexUtil.js index b32fa8f..bb16005 100644 --- a/src/utils/ColorHexUtil.js +++ b/src/utils/color/ColorHexUtil.js @@ -1,13 +1,13 @@ -/** global: ColorRgbUtil */ -/** global: HexUtil */ -/** global: InterpolationUtil */ -/** global: MathUtil */ -/** global: ObjectUtil */ -/** global: TypeUtil */ +import * as RGBColorUtil from './rgb.js'; +import * as HexUtil from '../hex.js'; +import * as InterpolationUtil from '../interpolation.js'; +import * as MathUtil from '../math.js'; +import * as ObjectUtil from '../object.js'; +import * as TypeUtil from '../type.js'; export function average(colors) { - return ColorRgbUtil.toHex( - ColorRgbUtil.average( + return RGBColorUtil.toHex( + RGBColorUtil.average( colors.map((color) => { return toRgb(color); }) @@ -16,22 +16,22 @@ export function average(colors) { } export function distance(colorA, colorB) { - return ColorRgbUtil.distance(toRgb(colorA), toRgb(colorB)); + return RGBColorUtil.distance(toRgb(colorA), toRgb(colorB)); } export function gradient(colors, steps) { - return ColorRgbUtil.gradient( + return RGBColorUtil.gradient( colors.map((color) => { return toRgb(color); }), steps ).map((color) => { - return ColorRgbUtil.toHex(color); + return RGBColorUtil.toHex(color); }); } export function gradientMatrix(colors, stepsX, stepsY) { - return ColorRgbUtil.gradientMatrix( + return RGBColorUtil.gradientMatrix( ObjectUtil.map(colors, (color) => { return toRgb(color); }), @@ -39,26 +39,26 @@ export function gradientMatrix(colors, stepsX, stepsY) { stepsY ).map((colors) => { return colors.map((color) => { - return ColorRgbUtil.toHex(color); + return RGBColorUtil.toHex(color); }); }); } export function interpolateBilinear(a, b, c, d, u, v) { - return ColorRgbUtil.toHex( - ColorRgbUtil.interpolateBilinear(toRgb(a), toRgb(b), toRgb(c), toRgb(d), u, v) + return RGBColorUtil.toHex( + RGBColorUtil.interpolateBilinear(toRgb(a), toRgb(b), toRgb(c), toRgb(d), u, v) ); } export function interpolateLinear(colorFrom, colorTo, t) { - return ColorRgbUtil.toHex( - ColorRgbUtil.interpolateLinear(toRgb(colorFrom), toRgb(colorTo), t) + return RGBColorUtil.toHex( + RGBColorUtil.interpolateLinear(toRgb(colorFrom), toRgb(colorTo), t) ); } export function interpolateMultilinear(colors, t) { - return ColorRgbUtil.toHex( - ColorRgbUtil.interpolateMultilinear( + return RGBColorUtil.toHex( + RGBColorUtil.interpolateMultilinear( colors.map((color) => { return toRgb(color); }), @@ -68,8 +68,8 @@ export function interpolateMultilinear(colors, t) { } export function nearest(colorSearch, colors) { - return ColorRgbUtil.toHex( - ColorRgbUtil.nearest( + return RGBColorUtil.toHex( + RGBColorUtil.nearest( toRgb(colorSearch), colors.map((color) => { return toRgb(color); @@ -79,21 +79,21 @@ export function nearest(colorSearch, colors) { } export function toCmyk(color) { - return ColorRgbUtil.toCmyk(toRgb(color)); + return RGBColorUtil.toCmyk(toRgb(color)); } // export function toGrayscale(color) { -// return ColorRgbUtil.toGrayscale( +// return RGBColorUtil.toGrayscale( // toRgb(color)); // }; // export function toHsl(color) { -// return ColorRgbUtil.toHsl( +// return RGBColorUtil.toHsl( // toRgb(color)); // }; // export function toHsv(color) { -// return ColorRgbUtil.toHsv( +// return RGBColorUtil.toHsv( // toRgb(color)); // }; @@ -157,7 +157,7 @@ export function toRgb(color) { } export function toString(color, prefix) { - return ColorRgbUtil.toHex(toRgb(color), prefix); + return RGBColorUtil.toHex(toRgb(color), prefix); } export function toStringCSS(color) { diff --git a/src/utils/ColorRgbUtil.js b/src/utils/color/ColorRgbUtil.js similarity index 98% rename from src/utils/ColorRgbUtil.js rename to src/utils/color/ColorRgbUtil.js index b0a88e7..b4212ca 100644 --- a/src/utils/ColorRgbUtil.js +++ b/src/utils/color/ColorRgbUtil.js @@ -1,6 +1,6 @@ -/** global: HexUtil */ -/** global: InterpolationUtil */ -/** global: MathUtil */ +import * as HexUtil from '../hex.js'; +import * as InterpolationUtil from '../interpolation.js'; +import * as MathUtil from '../math.js'; export function average(colors) { let c; diff --git a/src/utils/PointUtil.js b/src/utils/geom/PointUtil.js similarity index 94% rename from src/utils/PointUtil.js rename to src/utils/geom/PointUtil.js index d453110..c6fe59f 100644 --- a/src/utils/PointUtil.js +++ b/src/utils/geom/PointUtil.js @@ -1,6 +1,6 @@ -/** global: MathUtil */ -/** global: InterpolationUtil */ -/** global: TrigoUtil */ +import * as MathUtil from '../math.js'; +import * as InterpolationUtil from '../interpolation.js'; +import * as TrigoUtil from '../trigo.js'; export function add(a, b) { return { From b79518304af1302d11dc7348512d04ff94f6c258 Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Wed, 15 Jan 2025 16:55:04 +0100 Subject: [PATCH 04/22] Rename modules. --- src/utils/{ArrayUtil.js => array.js} | 0 src/utils/{Base64Util.js => base64.js} | 0 src/utils/{ColorUtil.js => color.js} | 0 src/utils/color/{ColorCmykUtil.js => cmyk.js} | 0 src/utils/color/{ColorHexUtil.js => hex.js} | 0 src/utils/color/{ColorRgbUtil.js => rgb.js} | 0 src/utils/{DateUtil.js => date.js} | 0 src/utils/{EaseUtil.js => ease.js} | 0 src/utils/{FunctionUtil.js => function.js} | 0 src/utils/{GeomUtil.js => geom.js} | 0 src/utils/geom/{PointUtil.js => point.js} | 0 src/utils/{HexUtil.js => hex.js} | 0 src/utils/{InterpolationUtil.js => interpolation.js} | 0 src/utils/{JSONUtil.js => json.js} | 0 src/utils/{MathUtil.js => math.js} | 0 src/utils/{NumberUtil.js => number.js} | 0 src/utils/{ObjectUtil.js => object.js} | 0 src/utils/{RandomUtil.js => random.js} | 0 src/utils/{StringUtil.js => string.js} | 0 src/utils/{TestUtil.js => test.js} | 0 src/utils/{TrigoUtil.js => trigo.js} | 0 src/utils/{TypeUtil.js => type.js} | 0 src/utils/{URLUtil.js => url.js} | 0 src/utils/{UTF8Util.js => utf8.js} | 0 src/utils/{XMLUtil.js => xml.js} | 0 25 files changed, 0 insertions(+), 0 deletions(-) rename src/utils/{ArrayUtil.js => array.js} (100%) rename src/utils/{Base64Util.js => base64.js} (100%) rename src/utils/{ColorUtil.js => color.js} (100%) rename src/utils/color/{ColorCmykUtil.js => cmyk.js} (100%) rename src/utils/color/{ColorHexUtil.js => hex.js} (100%) rename src/utils/color/{ColorRgbUtil.js => rgb.js} (100%) rename src/utils/{DateUtil.js => date.js} (100%) rename src/utils/{EaseUtil.js => ease.js} (100%) rename src/utils/{FunctionUtil.js => function.js} (100%) rename src/utils/{GeomUtil.js => geom.js} (100%) rename src/utils/geom/{PointUtil.js => point.js} (100%) rename src/utils/{HexUtil.js => hex.js} (100%) rename src/utils/{InterpolationUtil.js => interpolation.js} (100%) rename src/utils/{JSONUtil.js => json.js} (100%) rename src/utils/{MathUtil.js => math.js} (100%) rename src/utils/{NumberUtil.js => number.js} (100%) rename src/utils/{ObjectUtil.js => object.js} (100%) rename src/utils/{RandomUtil.js => random.js} (100%) rename src/utils/{StringUtil.js => string.js} (100%) rename src/utils/{TestUtil.js => test.js} (100%) rename src/utils/{TrigoUtil.js => trigo.js} (100%) rename src/utils/{TypeUtil.js => type.js} (100%) rename src/utils/{URLUtil.js => url.js} (100%) rename src/utils/{UTF8Util.js => utf8.js} (100%) rename src/utils/{XMLUtil.js => xml.js} (100%) diff --git a/src/utils/ArrayUtil.js b/src/utils/array.js similarity index 100% rename from src/utils/ArrayUtil.js rename to src/utils/array.js diff --git a/src/utils/Base64Util.js b/src/utils/base64.js similarity index 100% rename from src/utils/Base64Util.js rename to src/utils/base64.js diff --git a/src/utils/ColorUtil.js b/src/utils/color.js similarity index 100% rename from src/utils/ColorUtil.js rename to src/utils/color.js diff --git a/src/utils/color/ColorCmykUtil.js b/src/utils/color/cmyk.js similarity index 100% rename from src/utils/color/ColorCmykUtil.js rename to src/utils/color/cmyk.js diff --git a/src/utils/color/ColorHexUtil.js b/src/utils/color/hex.js similarity index 100% rename from src/utils/color/ColorHexUtil.js rename to src/utils/color/hex.js diff --git a/src/utils/color/ColorRgbUtil.js b/src/utils/color/rgb.js similarity index 100% rename from src/utils/color/ColorRgbUtil.js rename to src/utils/color/rgb.js diff --git a/src/utils/DateUtil.js b/src/utils/date.js similarity index 100% rename from src/utils/DateUtil.js rename to src/utils/date.js diff --git a/src/utils/EaseUtil.js b/src/utils/ease.js similarity index 100% rename from src/utils/EaseUtil.js rename to src/utils/ease.js diff --git a/src/utils/FunctionUtil.js b/src/utils/function.js similarity index 100% rename from src/utils/FunctionUtil.js rename to src/utils/function.js diff --git a/src/utils/GeomUtil.js b/src/utils/geom.js similarity index 100% rename from src/utils/GeomUtil.js rename to src/utils/geom.js diff --git a/src/utils/geom/PointUtil.js b/src/utils/geom/point.js similarity index 100% rename from src/utils/geom/PointUtil.js rename to src/utils/geom/point.js diff --git a/src/utils/HexUtil.js b/src/utils/hex.js similarity index 100% rename from src/utils/HexUtil.js rename to src/utils/hex.js diff --git a/src/utils/InterpolationUtil.js b/src/utils/interpolation.js similarity index 100% rename from src/utils/InterpolationUtil.js rename to src/utils/interpolation.js diff --git a/src/utils/JSONUtil.js b/src/utils/json.js similarity index 100% rename from src/utils/JSONUtil.js rename to src/utils/json.js diff --git a/src/utils/MathUtil.js b/src/utils/math.js similarity index 100% rename from src/utils/MathUtil.js rename to src/utils/math.js diff --git a/src/utils/NumberUtil.js b/src/utils/number.js similarity index 100% rename from src/utils/NumberUtil.js rename to src/utils/number.js diff --git a/src/utils/ObjectUtil.js b/src/utils/object.js similarity index 100% rename from src/utils/ObjectUtil.js rename to src/utils/object.js diff --git a/src/utils/RandomUtil.js b/src/utils/random.js similarity index 100% rename from src/utils/RandomUtil.js rename to src/utils/random.js diff --git a/src/utils/StringUtil.js b/src/utils/string.js similarity index 100% rename from src/utils/StringUtil.js rename to src/utils/string.js diff --git a/src/utils/TestUtil.js b/src/utils/test.js similarity index 100% rename from src/utils/TestUtil.js rename to src/utils/test.js diff --git a/src/utils/TrigoUtil.js b/src/utils/trigo.js similarity index 100% rename from src/utils/TrigoUtil.js rename to src/utils/trigo.js diff --git a/src/utils/TypeUtil.js b/src/utils/type.js similarity index 100% rename from src/utils/TypeUtil.js rename to src/utils/type.js diff --git a/src/utils/URLUtil.js b/src/utils/url.js similarity index 100% rename from src/utils/URLUtil.js rename to src/utils/url.js diff --git a/src/utils/UTF8Util.js b/src/utils/utf8.js similarity index 100% rename from src/utils/UTF8Util.js rename to src/utils/utf8.js diff --git a/src/utils/XMLUtil.js b/src/utils/xml.js similarity index 100% rename from src/utils/XMLUtil.js rename to src/utils/xml.js From 581fb5c955b9383e65ec57569e2f46c528f8e5c5 Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Wed, 15 Jan 2025 17:17:23 +0100 Subject: [PATCH 05/22] Export default with all public methods in each module. --- src/utils/array.js | 25 ++++++++++++++++++++++++ src/utils/base64.js | 2 ++ src/utils/color.js | 38 ++++++++++++++++++------------------ src/utils/color/cmyk.js | 2 ++ src/utils/color/hex.js | 15 ++++++++++++++ src/utils/color/rgb.js | 15 ++++++++++++++ src/utils/date.js | 28 ++++++++++++++++---------- src/utils/ease.js | 40 ++++++++++++++++++++++++++++++++++++++ src/utils/function.js | 15 ++++++++++++++ src/utils/geom.js | 2 +- src/utils/geom/point.js | 18 +++++++++++++++++ src/utils/hex.js | 5 +++++ src/utils/interpolation.js | 7 +++++++ src/utils/json.js | 5 +++++ src/utils/math.js | 22 +++++++++++++++++++++ src/utils/number.js | 10 ++++++++++ src/utils/object.js | 21 ++++++++++++++++++++ src/utils/random.js | 14 +++++++++++++ src/utils/string.js | 24 +++++++++++++++++++++++ src/utils/test.js | 38 ++++++++++++++++++++++++++++++++++++ src/utils/trigo.js | 18 +++++++++++++++++ src/utils/type.js | 20 +++++++++++++++++++ src/utils/url.js | 15 ++++++++++++++ src/utils/utf8.js | 5 +++++ src/utils/xml.js | 2 ++ 25 files changed, 376 insertions(+), 30 deletions(-) diff --git a/src/utils/array.js b/src/utils/array.js index 64669c2..1a18a15 100644 --- a/src/utils/array.js +++ b/src/utils/array.js @@ -6,6 +6,31 @@ import * as RandomUtil from './random.js'; import * as StringUtil from './string.js'; import * as TypeUtil from './type.js'; +export default { + all, + any, + clean, + clone, + contains, + equals, + flatten, + index, + insert, + max, + min, + paginate, + reduce, + replace, + remove, + rotate, + shuffle, + sort, + sum, + unique, + unzip, + zip, +}; + export function all(list) { return list.every((item) => { switch (TypeUtil.of(item)) { diff --git a/src/utils/base64.js b/src/utils/base64.js index 7b90e58..8a94906 100644 --- a/src/utils/base64.js +++ b/src/utils/base64.js @@ -1,5 +1,7 @@ import * as UTF8Util from './utf8.js'; +export default { decode, encode }; + const CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; // prettier-ignore const CHARS_LIST = [ diff --git a/src/utils/color.js b/src/utils/color.js index 24fddf7..4a89dc6 100644 --- a/src/utils/color.js +++ b/src/utils/color.js @@ -2,7 +2,7 @@ import * as CMYKColorUtil from './color/cmyk.js'; import * as HexColorUtil from './color/hex.js'; import * as RGBColorUtil from './color/rgb.js'; -const ColorUtil = { +export default { cmyk: CMYKColorUtil, // cmykToGrayscale: CMYKColorUtil.toGrayscale, cmykToHex: CMYKColorUtil.toHex, @@ -10,12 +10,12 @@ const ColorUtil = { // cmykToHsv: CMYKColorUtil.toHsv, cmykToRgb: CMYKColorUtil.toRgb, - // grayscale: ColorGrayscaleUtil, - // grayscaleToGrayscale: ColorGrayscaleUtil.toGrayscale, - // grayscaleToHex: ColorGrayscaleUtil.toHex, - // grayscaleToHsl: ColorGrayscaleUtil.toHsl, - // grayscaleToHsv: ColorGrayscaleUtil.toHsv, - // grayscaleToRgb: ColorGrayscaleUtil.toRgb, + // grayscale: GrayscaleColorUtil, + // grayscaleToGrayscale: GrayscaleColorUtil.toGrayscale, + // grayscaleToHex: GrayscaleColorUtil.toHex, + // grayscaleToHsl: GrayscaleColorUtil.toHsl, + // grayscaleToHsv: GrayscaleColorUtil.toHsv, + // grayscaleToRgb: GrayscaleColorUtil.toRgb, hex: HexColorUtil, hexToCmyk: HexColorUtil.toCmyk, @@ -24,19 +24,19 @@ const ColorUtil = { // hexToHsv: HexColorUtil.toHsv, hexToRgb: HexColorUtil.toRgb, - // hsl: ColorHslUtil, - // hslToGrayscale: ColorHslUtil.toGrayscale, - // hslToHex: ColorHslUtil.toHex, - // hslToHsl: ColorHslUtil.toHsl, - // hslToHsv: ColorHslUtil.toHsv, - // hslToRgb: ColorHslUtil.toRgb, + // hsl: HSLColorUtil, + // hslToGrayscale: HSLColorUtil.toGrayscale, + // hslToHex: HSLColorUtil.toHex, + // hslToHsl: HSLColorUtil.toHsl, + // hslToHsv: HSLColorUtil.toHsv, + // hslToRgb: HSLColorUtil.toRgb, - // hsv: ColorHsvUtil, - // hsvToGrayscale: ColorHsvUtil.toGrayscale, - // hsvToHex: ColorHsvUtil.toHex, - // hsvToHsl: ColorHsvUtil.toHsl, - // hsvToHsv: ColorHsvUtil.toHsv, - // hsvToRgb: ColorHsvUtil.toRgb, + // hsv: HSVColorUtil, + // hsvToGrayscale: HSVColorUtil.toGrayscale, + // hsvToHex: HSVColorUtil.toHex, + // hsvToHsl: HSVColorUtil.toHsl, + // hsvToHsv: HSVColorUtil.toHsv, + // hsvToRgb: HSVColorUtil.toRgb, rgb: RGBColorUtil, rgbToCmyk: RGBColorUtil.toCmyk, diff --git a/src/utils/color/cmyk.js b/src/utils/color/cmyk.js index c603c42..20b0f37 100644 --- a/src/utils/color/cmyk.js +++ b/src/utils/color/cmyk.js @@ -1,5 +1,7 @@ import * as RGBColorUtil from './rgb.js'; +export default { toHex, toRgb, toString, toStringCSS }; + // export function average(colors) { // return RGBColorUtil.toCmyk( // RGBColorUtil.average( diff --git a/src/utils/color/hex.js b/src/utils/color/hex.js index bb16005..fc34d7c 100644 --- a/src/utils/color/hex.js +++ b/src/utils/color/hex.js @@ -5,6 +5,21 @@ import * as MathUtil from '../math.js'; import * as ObjectUtil from '../object.js'; import * as TypeUtil from '../type.js'; +export default { + average, + distance, + gradient, + gradientMatrix, + interpolateBilinear, + interpolateLinear, + interpolateMultilinear, + nearest, + toCmyk, + toRgb, + toString, + toStringCSS, +}; + export function average(colors) { return RGBColorUtil.toHex( RGBColorUtil.average( diff --git a/src/utils/color/rgb.js b/src/utils/color/rgb.js index b4212ca..ba3e0ef 100644 --- a/src/utils/color/rgb.js +++ b/src/utils/color/rgb.js @@ -2,6 +2,21 @@ import * as HexUtil from '../hex.js'; import * as InterpolationUtil from '../interpolation.js'; import * as MathUtil from '../math.js'; +export default { + average, + distance, + gradient, + gradientMatrix, + interpolateBilinear, + interpolateLinear, + interpolateMultilinear, + nearest, + toCmyk, + toHex, + toString, + toStringCSS, +}; + export function average(colors) { let c; let r = 0; diff --git a/src/utils/date.js b/src/utils/date.js index b01daf3..5a9fb3e 100644 --- a/src/utils/date.js +++ b/src/utils/date.js @@ -1,5 +1,23 @@ import * as StringUtil from './string.js'; +export default { + clone, + constrain, + format, + identifier, + isFuture, + isPast, + max, + min, + normalize, + parse, + timestamp, + today, + tomorrow, + yesterday, + yyyymmdd, +}; + export function clone(date) { return new Date(date.getTime()); } @@ -78,16 +96,6 @@ export function format(date, str) { return str; } -/* -export function hhmm: function(hours, minutes, separator) -{ - var hh = StringUtil.padZeros(hours, 2); - var mm = StringUtil.padZeros(minutes, 2); - var sep = (separator || ':'); - return (hh + sep + mm); -}; -*/ - export function identifier(date) { const d = date || new Date(); const year = d.getFullYear(); diff --git a/src/utils/ease.js b/src/utils/ease.js index 9dfb3da..251a01f 100644 --- a/src/utils/ease.js +++ b/src/utils/ease.js @@ -1,3 +1,43 @@ +export default { + backIn, + backInOut, + backOut, + bounceIn, + bounceInOut, + bounceOut, + circularIn, + circularInOut, + circularOut, + cubicIn, + cubicInOut, + cubicOut, + elasticIn, + elasticInOut, + elasticOut, + exponentialIn, + exponentialInOut, + exponentialOut, + none, + quadraticIn, + quadraticInOut, + quadraticOut, + quarticIn, + quarticInOut, + quarticOut, + quinticIn, + quinticInOut, + quinticOut, + sexticIn, + sexticInOut, + sexticOut, + sineIn, + sineInOut, + sineOut, + waveCosine, + waveSawtooth, + waveSine, +}; + export function backIn(t, s) { // s = overshoot = 1.70158 s = isNaN(s) ? 1.70158 : s; diff --git a/src/utils/function.js b/src/utils/function.js index c7ca5ff..10450f0 100644 --- a/src/utils/function.js +++ b/src/utils/function.js @@ -1,5 +1,20 @@ import * as TypeUtil from './type.js'; +export default { + args, + attempt, + bind, + call, + debounce, + delay, + memoize, + noop, + repeat, + throttle, + until, + validate, +}; + export function args(argumentsObj, skipCount) { return [].slice.call(argumentsObj, skipCount || 0); } diff --git a/src/utils/geom.js b/src/utils/geom.js index 96d3f5f..c3f57f8 100644 --- a/src/utils/geom.js +++ b/src/utils/geom.js @@ -1,5 +1,5 @@ import * as PointUtil from './geom/point.js'; -const GeomUtil = { +export default { point: PointUtil, }; diff --git a/src/utils/geom/point.js b/src/utils/geom/point.js index c6fe59f..42c1151 100644 --- a/src/utils/geom/point.js +++ b/src/utils/geom/point.js @@ -2,6 +2,24 @@ import * as MathUtil from '../math.js'; import * as InterpolationUtil from '../interpolation.js'; import * as TrigoUtil from '../trigo.js'; +export default { + add, + angle, + cross, + distance, + dot, + equals, + interpolate, + length, + magnitude, + project, + rect, + rotate, + scale, + subtract, + translate, +}; + export function add(a, b) { return { x: a.x + b.x, diff --git a/src/utils/hex.js b/src/utils/hex.js index 01fec5d..cfe909e 100644 --- a/src/utils/hex.js +++ b/src/utils/hex.js @@ -1,3 +1,8 @@ +export default { + decodeInt, + encodeInt, +}; + export function decodeInt(s) { return parseInt(s, 16); } diff --git a/src/utils/interpolation.js b/src/utils/interpolation.js index 780a5a6..41ed249 100644 --- a/src/utils/interpolation.js +++ b/src/utils/interpolation.js @@ -1,5 +1,12 @@ import * as MathUtil from './math.js'; +export default { + bilinear, + linear, + multilinear, + scalar, +}; + export function bilinear(a, b, c, d, u, v) { const f = linear; return f(f(a, b, u), f(c, d, u), v); diff --git a/src/utils/json.js b/src/utils/json.js index d9716ce..1d97429 100644 --- a/src/utils/json.js +++ b/src/utils/json.js @@ -1,3 +1,8 @@ +export default { + decode, + encode, +}; + export function decode(str) { let output = ''; try { diff --git a/src/utils/math.js b/src/utils/math.js index 82ed7f2..50c5b8b 100644 --- a/src/utils/math.js +++ b/src/utils/math.js @@ -3,6 +3,28 @@ import * as FunctionUtil from './function.js'; import * as InterpolationUtil from './interpolation.js'; import * as TypeUtil from './type.js'; +export default { + average, + constrain, + cycle, + equals, + euclideanDistance, + factorial, + gcd, + lcm, + lerp, + map, + nearest, + normalize, + proportion, + roundDecimals, + roundToMultiple, + roundToNearest, + roundToPower, + sign, + summation, +}; + export function average(values) { return summation(values) / values.length; } diff --git a/src/utils/number.js b/src/utils/number.js index ce1a1ff..3891f8c 100644 --- a/src/utils/number.js +++ b/src/utils/number.js @@ -1,3 +1,13 @@ +export default { + isBetween, + isEven, + isFloat, + isNegative, + isOdd, + isPositive, + isPrime, +}; + export function isBetween(n, min, max) { return n >= min && n <= max; } diff --git a/src/utils/object.js b/src/utils/object.js index 4a5f0fb..75491d2 100644 --- a/src/utils/object.js +++ b/src/utils/object.js @@ -8,6 +8,27 @@ import * as StringUtil from './string.js'; import * as TypeUtil from './type.js'; import * as URLUtil from './url.js'; +export default { + assign, + clean, + clone, + decodeBase64, + decodeJSON, + decodeParameters, + encodeBase64, + encodeJSON, + encodeParameters, + equals, + is, + keypath, + keys, + length, + map, + merge, + search, + values, +}; + export function assign(obj, other) { const objs = [other].concat(FunctionUtil.args(arguments, 2)); let i, j, k; diff --git a/src/utils/random.js b/src/utils/random.js index 684f9cd..aa95bde 100644 --- a/src/utils/random.js +++ b/src/utils/random.js @@ -1,5 +1,19 @@ import * as FunctionUtil from './function.js'; +export default { + argument, + bit, + boolean, + color, + element, + float, + index, + integer, + map, + sign, + string, +}; + export function argument() { const args = FunctionUtil.args(arguments); return element(args); diff --git a/src/utils/string.js b/src/utils/string.js index bf247be..29333e5 100644 --- a/src/utils/string.js +++ b/src/utils/string.js @@ -2,6 +2,30 @@ import * as ArrayUtil from './array.js'; import * as RandomUtil from './random.js'; import * as TypeUtil from './type.js'; +export default { + contains, + endsWith, + icontains, + levenshteinDistance, + levenshteinSimilarity, + padLeft, + padRight, + padZeros, + render, + replace, + reverse, + rotate, + slugify, + startsWith, + toConstantCase, + toRandomCase, + toTitleCase, + toUpperCaseFirst, + trim, + trimLeft, + trimRight, +}; + export function contains(str, occurrence) { return Boolean(str.includes(occurrence)); } diff --git a/src/utils/test.js b/src/utils/test.js index 2d1fb96..3de5c81 100644 --- a/src/utils/test.js +++ b/src/utils/test.js @@ -4,6 +4,44 @@ import * as MathUtil from './math.js'; import * as ObjectUtil from './object.js'; import * as TypeUtil from './type.js'; +export default { + assertArray, + assertBase64, + assertBoolean, + assertDate, + assertEqual, + assertError, + assertFalse, + assertFunction, + assertJSON, + assertNaN, + assertNone, + assertNotArray, + assertNotBase64, + assertNotBoolean, + assertNotDate, + assertNotEqual, + assertNotError, + assertNotFunction, + assertNotJSON, + assertNotNone, + assertNotNumber, + assertNotNull, + assertNotObject, + assertNotRegExp, + assertNotString, + assertNotUndefined, + assertNumber, + assertNumberAlmostEqual, + assertNull, + assertObject, + assertRegExp, + assertString, + assertThrows, + assertTrue, + assertUndefined, +}; + export function assertArray(val, len) { if (!TypeUtil.isArray(val)) { throw new Error(`value is not array: ${String(val)}.`); diff --git a/src/utils/trigo.js b/src/utils/trigo.js index 9ebeb97..30cf462 100644 --- a/src/utils/trigo.js +++ b/src/utils/trigo.js @@ -1,5 +1,23 @@ import * as MathUtil from './math.js'; +export default { + acosDeg, + angleDeg, + angleRad, + asinDeg, + atanDeg, + atan2Deg, + cosDeg, + cycleDeg, + degToRad, + fastDeg, + haversine, + hypo, + radToDeg, + sinDeg, + tanDeg, +}; + const DEG_0 = 0.0; const DEG_90 = 90.0; const DEG_180 = 180.0; diff --git a/src/utils/type.js b/src/utils/type.js index aeaffba..f6294c0 100644 --- a/src/utils/type.js +++ b/src/utils/type.js @@ -3,6 +3,26 @@ import * as JSONUtil from './json.js'; import * as ObjectUtil from './object.js'; import * as URLUtil from './url.js'; +export default { + isArray, + isBase64, + isBoolean, + isDate, + isError, + isFunction, + isJSON, + isNaN, + isNone, + isNumber, + isNull, + isObject, + isRegExp, + isString, + isType, + isUndefined, + of, +}; + ARRAY = 'array'; BOOLEAN = 'boolean'; DATE = 'date'; diff --git a/src/utils/url.js b/src/utils/url.js index fd753b2..e58d960 100644 --- a/src/utils/url.js +++ b/src/utils/url.js @@ -1,3 +1,18 @@ +export default { + getDomain, + getParameterByName, + getParameters, + getParametersDict, + getParametersList, + getParametersString, + getURL, + hasParameter, + isFile, + isHttp, + isHttps, + isLocalhost, +}; + export function getDomain(url = getURL(), level) { // remove protocol, www and port let domain = url.replace(/(^\w+:|^)\/\/(www\.)?/, ''); diff --git a/src/utils/utf8.js b/src/utils/utf8.js index 73ddfa2..298f58f 100644 --- a/src/utils/utf8.js +++ b/src/utils/utf8.js @@ -1,3 +1,8 @@ +export default { + decode, + encode, +}; + export function decode(input) { return decodeURIComponent(escape(input)); diff --git a/src/utils/xml.js b/src/utils/xml.js index 13a4154..98cbbff 100644 --- a/src/utils/xml.js +++ b/src/utils/xml.js @@ -1,3 +1,5 @@ +export default { removeNamespaces }; + // export function decode(str) { // // https://stackoverflow.com/questions/17604071/parse-xml-using-javascript // var doc = null; From c57914985f5afa610a714a22e435ae251ff09558 Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Wed, 15 Jan 2025 17:22:04 +0100 Subject: [PATCH 06/22] Remove `gulp-js-import` dev dependency. --- gulpfile.babel.js | 2 -- package.json | 1 - 2 files changed, 3 deletions(-) diff --git a/gulpfile.babel.js b/gulpfile.babel.js index c939c96..1591a4a 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -2,7 +2,6 @@ import browser from 'browser-sync'; import gulp from 'gulp'; -import jsImport from 'gulp-js-import'; import minify from 'gulp-minify'; import plugins from 'gulp-load-plugins'; import { rimraf } from 'rimraf'; @@ -33,7 +32,6 @@ function javascript() { .src(PATHS.javascript) .pipe($.if(!PRODUCTION, $.sourcemaps.init())) .pipe($.concat('utils.js')) - .pipe(jsImport({ hideConsole: true })) // .pipe($.if(PRODUCTION, $.uglify() // .on('error', e => { console.log(e.message, e.fileName, e.lineNumber); }) // )) diff --git a/package.json b/package.json index dc82ff0..62f5465 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,6 @@ "gulp-concat": "^2.5.2", "gulp-extname": "^0.2.0", "gulp-if": "^3.0.0", - "gulp-js-import": "^1.0.6", "gulp-load-plugins": "^2.0.3", "gulp-minify": "^3.1.0", "gulp-sourcemaps": "^3.0.0", From fa473c1a44f188e0eb681c32461caa960c395194 Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Wed, 15 Jan 2025 17:23:07 +0100 Subject: [PATCH 07/22] Set package type as "module". --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 62f5465..6b66924 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "url": "https://github.com/fabiocaccamo/utils.js" }, "main": "dist/utils.js", + "type": "module", "scripts": { "build": "npm run format && gulp build --production", "docs": "gulp build && ./node_modules/.bin/jsdoc2md ./dist/utils.js > ./docs/API.md && gulp build --production", From bdc673d67af21ed4af47efe9422c8f6fc3fb4633 Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Wed, 15 Jan 2025 17:23:11 +0100 Subject: [PATCH 08/22] Update package-lock.json --- package-lock.json | 7649 +++++++++++++++++---------------------------- 1 file changed, 2915 insertions(+), 4734 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1cf38d8..97de7f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,10 +9,10 @@ "version": "0.24.1", "license": "MIT", "devDependencies": { - "@babel/core": "^7.21.4", - "@babel/preset-env": "^7.21.4", - "@babel/register": "^7.21.0", - "browser-sync": "^3.0.2", + "@babel/core": "^7.26.0", + "@babel/preset-env": "^7.26.0", + "@babel/register": "^7.25.9", + "browser-sync": "^3.0.3", "codecov": "^3.7.2", "gulp": "^5.0.0", "gulp-babel": "^8.0.0", @@ -20,17 +20,16 @@ "gulp-concat": "^2.5.2", "gulp-extname": "^0.2.0", "gulp-if": "^3.0.0", - "gulp-js-import": "^1.0.6", "gulp-load-plugins": "^2.0.3", "gulp-minify": "^3.1.0", "gulp-sourcemaps": "^3.0.0", "gulp-uglify": "^3.0.2", - "jsdoc": "^4.0.2", - "jsdoc-to-markdown": "^8.0.0", - "mocha": "^10.2.0", - "nyc": "^17.0.0", - "prettier": "^3.0.0", - "rimraf": "^5.0.0", + "jsdoc": "^4.0.4", + "jsdoc-to-markdown": "^9.1.1", + "mocha": "^11.0.1", + "nyc": "^17.1.0", + "prettier": "^3.4.2", + "rimraf": "^6.0.1", "yargs": "^17.7.1" } }, @@ -48,12 +47,14 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.24.7", + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", "picocolors": "^1.0.0" }, "engines": { @@ -61,30 +62,32 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", - "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz", + "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", - "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helpers": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7", + "@babel/code-frame": "^7.26.0", + "@babel/generator": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.0", + "@babel/parser": "^7.26.0", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -106,25 +109,28 @@ "dev": true }, "node_modules/@babel/generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz", + "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.7", + "@babel/parser": "^7.26.5", + "@babel/types": "^7.26.5", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -135,39 +141,28 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", - "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", - "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -176,19 +171,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz", - "integrity": "sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.7", - "@babel/helper-optimise-call-expression": "^7.24.7", - "@babel/helper-replace-supers": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.25.9", "semver": "^6.3.1" }, "engines": { @@ -199,13 +193,14 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz", - "integrity": "sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", + "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "regexpu-core": "^5.3.1", + "@babel/helper-annotate-as-pure": "^7.25.9", + "regexpu-core": "^6.2.0", "semver": "^6.3.1" }, "engines": { @@ -216,10 +211,11 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz", - "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", + "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -231,80 +227,44 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", - "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", - "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", - "dev": true, - "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", - "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz", - "integrity": "sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", - "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -314,35 +274,38 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", - "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.7" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", - "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz", - "integrity": "sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", + "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-wrap-function": "^7.24.7" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-wrap-function": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -352,14 +315,15 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", - "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", + "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.7", - "@babel/helper-optimise-call-expression": "^7.24.7" + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -368,119 +332,88 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", - "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", - "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", - "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", - "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz", - "integrity": "sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", + "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-function-name": "^7.24.7", - "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", - "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "node_modules/@babel/parser": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.5.tgz", + "integrity": "sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@babel/types": "^7.26.5" }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", - "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", - "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -489,13 +422,30 @@ } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz", - "integrity": "sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", + "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", + "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -505,12 +455,13 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz", - "integrity": "sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", + "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -520,14 +471,15 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", - "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -537,13 +489,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz", - "integrity": "sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", + "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -564,76 +517,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", - "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", + "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -643,138 +534,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", - "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -800,12 +566,13 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", - "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", + "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -815,15 +582,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz", - "integrity": "sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", + "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-remap-async-to-generator": "^7.24.7", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -833,14 +600,15 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", - "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", + "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-remap-async-to-generator": "^7.24.7" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -850,12 +618,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", - "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", + "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -865,12 +634,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz", - "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", + "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -880,13 +650,14 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", - "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", + "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -896,14 +667,14 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", - "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", + "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -913,18 +684,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz", - "integrity": "sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-replace-supers": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", + "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/traverse": "^7.25.9", "globals": "^11.1.0" }, "engines": { @@ -935,13 +705,14 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", - "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", + "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/template": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/template": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -951,12 +722,13 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz", - "integrity": "sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", + "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -966,13 +738,14 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", - "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", + "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -982,12 +755,13 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", - "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", + "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -996,14 +770,31 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", - "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", + "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1013,13 +804,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", - "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", + "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1029,13 +820,13 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", - "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", + "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1045,13 +836,14 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", - "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", + "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1061,14 +853,15 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz", - "integrity": "sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", + "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1078,13 +871,13 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", - "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", + "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1094,12 +887,13 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz", - "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", + "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1109,13 +903,13 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", - "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", + "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1125,12 +919,13 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", - "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", + "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1140,13 +935,14 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", - "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", + "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1156,14 +952,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz", - "integrity": "sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7" + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1173,15 +969,16 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz", - "integrity": "sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", + "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1191,13 +988,14 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", - "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", + "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1207,13 +1005,14 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", - "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1223,12 +1022,13 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", - "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", + "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1238,13 +1038,13 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", - "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "version": "7.26.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz", + "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1254,13 +1054,13 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", - "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", + "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1270,15 +1070,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", - "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", + "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.24.7" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1288,13 +1088,14 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", - "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", + "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-replace-supers": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1304,13 +1105,13 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", - "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", + "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1320,14 +1121,14 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz", - "integrity": "sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1337,12 +1138,13 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", - "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", + "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1352,13 +1154,14 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", - "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", + "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1368,15 +1171,15 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", - "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", + "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1386,12 +1189,13 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", - "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", + "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1401,12 +1205,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", - "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", + "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-plugin-utils": "^7.25.9", "regenerator-transform": "^0.15.2" }, "engines": { @@ -1416,13 +1221,31 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", + "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", - "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", + "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1432,12 +1255,13 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", - "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", + "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1447,13 +1271,14 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", - "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", + "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1463,12 +1288,13 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", - "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", + "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1478,12 +1304,13 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", - "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", + "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1493,12 +1320,13 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.7.tgz", - "integrity": "sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", + "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1508,12 +1336,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", - "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", + "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1523,13 +1352,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", - "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", + "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1539,13 +1369,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", - "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", + "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1555,13 +1386,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", - "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", + "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1571,91 +1403,80 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.7.tgz", - "integrity": "sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.7", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz", + "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.24.7", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-import-assertions": "^7.26.0", + "@babel/plugin-syntax-import-attributes": "^7.26.0", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.24.7", - "@babel/plugin-transform-async-generator-functions": "^7.24.7", - "@babel/plugin-transform-async-to-generator": "^7.24.7", - "@babel/plugin-transform-block-scoped-functions": "^7.24.7", - "@babel/plugin-transform-block-scoping": "^7.24.7", - "@babel/plugin-transform-class-properties": "^7.24.7", - "@babel/plugin-transform-class-static-block": "^7.24.7", - "@babel/plugin-transform-classes": "^7.24.7", - "@babel/plugin-transform-computed-properties": "^7.24.7", - "@babel/plugin-transform-destructuring": "^7.24.7", - "@babel/plugin-transform-dotall-regex": "^7.24.7", - "@babel/plugin-transform-duplicate-keys": "^7.24.7", - "@babel/plugin-transform-dynamic-import": "^7.24.7", - "@babel/plugin-transform-exponentiation-operator": "^7.24.7", - "@babel/plugin-transform-export-namespace-from": "^7.24.7", - "@babel/plugin-transform-for-of": "^7.24.7", - "@babel/plugin-transform-function-name": "^7.24.7", - "@babel/plugin-transform-json-strings": "^7.24.7", - "@babel/plugin-transform-literals": "^7.24.7", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", - "@babel/plugin-transform-member-expression-literals": "^7.24.7", - "@babel/plugin-transform-modules-amd": "^7.24.7", - "@babel/plugin-transform-modules-commonjs": "^7.24.7", - "@babel/plugin-transform-modules-systemjs": "^7.24.7", - "@babel/plugin-transform-modules-umd": "^7.24.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", - "@babel/plugin-transform-new-target": "^7.24.7", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", - "@babel/plugin-transform-numeric-separator": "^7.24.7", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", - "@babel/plugin-transform-object-super": "^7.24.7", - "@babel/plugin-transform-optional-catch-binding": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.7", - "@babel/plugin-transform-parameters": "^7.24.7", - "@babel/plugin-transform-private-methods": "^7.24.7", - "@babel/plugin-transform-private-property-in-object": "^7.24.7", - "@babel/plugin-transform-property-literals": "^7.24.7", - "@babel/plugin-transform-regenerator": "^7.24.7", - "@babel/plugin-transform-reserved-words": "^7.24.7", - "@babel/plugin-transform-shorthand-properties": "^7.24.7", - "@babel/plugin-transform-spread": "^7.24.7", - "@babel/plugin-transform-sticky-regex": "^7.24.7", - "@babel/plugin-transform-template-literals": "^7.24.7", - "@babel/plugin-transform-typeof-symbol": "^7.24.7", - "@babel/plugin-transform-unicode-escapes": "^7.24.7", - "@babel/plugin-transform-unicode-property-regex": "^7.24.7", - "@babel/plugin-transform-unicode-regex": "^7.24.7", - "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", + "@babel/plugin-transform-arrow-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.25.9", + "@babel/plugin-transform-async-to-generator": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.25.9", + "@babel/plugin-transform-block-scoping": "^7.25.9", + "@babel/plugin-transform-class-properties": "^7.25.9", + "@babel/plugin-transform-class-static-block": "^7.26.0", + "@babel/plugin-transform-classes": "^7.25.9", + "@babel/plugin-transform-computed-properties": "^7.25.9", + "@babel/plugin-transform-destructuring": "^7.25.9", + "@babel/plugin-transform-dotall-regex": "^7.25.9", + "@babel/plugin-transform-duplicate-keys": "^7.25.9", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-dynamic-import": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.25.9", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.25.9", + "@babel/plugin-transform-function-name": "^7.25.9", + "@babel/plugin-transform-json-strings": "^7.25.9", + "@babel/plugin-transform-literals": "^7.25.9", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", + "@babel/plugin-transform-member-expression-literals": "^7.25.9", + "@babel/plugin-transform-modules-amd": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-modules-systemjs": "^7.25.9", + "@babel/plugin-transform-modules-umd": "^7.25.9", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-new-target": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", + "@babel/plugin-transform-numeric-separator": "^7.25.9", + "@babel/plugin-transform-object-rest-spread": "^7.25.9", + "@babel/plugin-transform-object-super": "^7.25.9", + "@babel/plugin-transform-optional-catch-binding": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9", + "@babel/plugin-transform-private-methods": "^7.25.9", + "@babel/plugin-transform-private-property-in-object": "^7.25.9", + "@babel/plugin-transform-property-literals": "^7.25.9", + "@babel/plugin-transform-regenerator": "^7.25.9", + "@babel/plugin-transform-regexp-modifiers": "^7.26.0", + "@babel/plugin-transform-reserved-words": "^7.25.9", + "@babel/plugin-transform-shorthand-properties": "^7.25.9", + "@babel/plugin-transform-spread": "^7.25.9", + "@babel/plugin-transform-sticky-regex": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.25.9", + "@babel/plugin-transform-typeof-symbol": "^7.25.9", + "@babel/plugin-transform-unicode-escapes": "^7.25.9", + "@babel/plugin-transform-unicode-property-regex": "^7.25.9", + "@babel/plugin-transform-unicode-regex": "^7.25.9", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-corejs3": "^0.10.6", "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.31.0", + "core-js-compat": "^3.38.1", "semver": "^6.3.1" }, "engines": { @@ -1680,10 +1501,11 @@ } }, "node_modules/@babel/register": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.24.6.tgz", - "integrity": "sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.25.9.tgz", + "integrity": "sha512-8D43jXtGsYmEeDvm4MWHYUpWf8iiXgWYx3fW7E7Wb7Oe6FWqJPl5K6TuFW0dOwNZzEE5rjlaSJYH9JjrUKJszA==", "dev": true, + "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "find-cache-dir": "^2.0.0", @@ -1698,17 +1520,12 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true - }, "node_modules/@babel/runtime": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", - "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", "dev": true, + "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1717,33 +1534,32 @@ } }, "node_modules/@babel/template": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", - "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.5.tgz", + "integrity": "sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.5", + "@babel/parser": "^7.26.5", + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.5", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1752,14 +1568,14 @@ } }, "node_modules/@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.5.tgz", + "integrity": "sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1851,6 +1667,7 @@ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -1864,10 +1681,11 @@ } }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -1880,6 +1698,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -1891,13 +1710,15 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -1915,6 +1736,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -1930,6 +1752,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -2078,11 +1901,50 @@ "node": ">=v12.0.0" } }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=14" @@ -2107,13 +1969,15 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/cors": { "version": "2.8.17", "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -2141,12 +2005,13 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.14.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", - "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", + "version": "22.10.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.6.tgz", + "integrity": "sha512-qNiuwC4ZDAUNcY47xgaSuS92cjf8JbSUoaKS77bmLG1rU7MlATVSiw/IlrjtIyyskXBZ8KkNfjK/P5na7rgXbQ==", "dev": true, + "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.20.0" } }, "node_modules/accepts": { @@ -2223,39 +2088,6 @@ "node": ">=0.10.0" } }, - "node_modules/ansi-escape-sequences": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-4.1.0.tgz", - "integrity": "sha512-dzW9kHxH011uBsidTXd14JXgzye/YLb2LzeKZ4bsgl/Knwx8AtbSFkkGxagdNOoh0DlqHCmfiEjWKBaqjOanVw==", - "dev": true, - "dependencies": { - "array-back": "^3.0.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/ansi-escape-sequences/node_modules/array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", - "dev": true, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ansi-red": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", @@ -2278,15 +2110,19 @@ } }, "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/ansi-wrap": { @@ -2379,19 +2215,11 @@ "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.17" } }, - "node_modules/array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/array-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", @@ -2410,15 +2238,6 @@ "node": ">=0.10.0" } }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", @@ -2465,6 +2284,7 @@ "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -2514,13 +2334,14 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", - "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.1", - "core-js-compat": "^3.36.1" + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -2590,6 +2411,7 @@ "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true, + "license": "MIT", "engines": { "node": "^4.5.0 || >= 5.9" } @@ -2600,15 +2422,6 @@ "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", "dev": true }, - "node_modules/beeper": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", - "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -2678,13 +2491,14 @@ "dev": true }, "node_modules/browser-sync": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-3.0.2.tgz", - "integrity": "sha512-PC9c7aWJFVR4IFySrJxOqLwB9ENn3/TaXCXtAa0SzLwocLN3qMjN+IatbjvtCX92BjNXsY6YWg9Eb7F3Wy255g==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-3.0.3.tgz", + "integrity": "sha512-91hoBHKk1C4pGeD+oE9Ld222k2GNQEAsI5AElqR8iLLWNrmZR2LPP8B0h8dpld9u7kro5IEUB3pUb0DJ3n1cRQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "browser-sync-client": "^3.0.2", - "browser-sync-ui": "^3.0.2", + "browser-sync-client": "^3.0.3", + "browser-sync-ui": "^3.0.3", "bs-recipes": "1.3.4", "chalk": "4.1.2", "chokidar": "^3.5.1", @@ -2698,15 +2512,15 @@ "fs-extra": "3.0.1", "http-proxy": "^1.18.1", "immutable": "^3", - "micromatch": "^4.0.2", + "micromatch": "^4.0.8", "opn": "5.3.0", "portscanner": "2.2.0", "raw-body": "^2.3.2", "resp-modifier": "6.0.2", "rx": "4.1.0", - "send": "0.16.2", - "serve-index": "1.9.1", - "serve-static": "1.13.2", + "send": "^0.19.0", + "serve-index": "^1.9.1", + "serve-static": "^1.16.2", "server-destroy": "1.0.1", "socket.io": "^4.4.1", "ua-parser-js": "^1.0.33", @@ -2720,10 +2534,11 @@ } }, "node_modules/browser-sync-client": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-3.0.2.tgz", - "integrity": "sha512-tBWdfn9L0wd2Pjuz/NWHtNEKthVb1Y67vg8/qyGNtCqetNz5lkDkFnrsx5UhPNPYUO8vci50IWC/BhYaQskDiQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-3.0.3.tgz", + "integrity": "sha512-TOEXaMgYNjBYIcmX5zDlOdjEqCeCN/d7opf/fuyUD/hhGVCfP54iQIDhENCi012AqzYZm3BvuFl57vbwSTwkSQ==", "dev": true, + "license": "ISC", "dependencies": { "etag": "1.8.1", "fresh": "0.5.2", @@ -2734,10 +2549,11 @@ } }, "node_modules/browser-sync-ui": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-3.0.2.tgz", - "integrity": "sha512-V3FwWAI+abVbFLTyJjXJlCMBwjc3GXf/BPGfwO2fMFACWbIGW9/4SrBOFYEOOtqzCjQE0Di+U3VIb7eES4omNA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-3.0.3.tgz", + "integrity": "sha512-FcGWo5lP5VodPY6O/f4pXQy5FFh4JK0f2/fTBsp0Lx1NtyBWs/IfPPJbW8m1ujTW/2r07oUXKTF2LYZlCZktjw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "async-each-series": "0.1.1", "chalk": "4.1.2", @@ -2748,244 +2564,103 @@ "stream-throttle": "^0.1.3" } }, - "node_modules/browser-sync-ui/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/browser-sync-ui/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "bin": { + "browserslist": "cli.js" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/browser-sync-ui/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/bs-recipes": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", + "integrity": "sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU=", + "dev": true + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/browser-sync-ui/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "node_modules/browser-sync-ui/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/bytes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", + "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/browser-sync-ui/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/cache-point": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cache-point/-/cache-point-3.0.1.tgz", + "integrity": "sha512-itTIMLEKbh6Dw5DruXbxAgcyLnh/oPGVLBfTPqBOftASxHe8bAeXy7JkO4F0LvHqht7XqP5O/09h5UcHS2w0FA==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "array-back": "^6.2.2" }, "engines": { - "node": ">=8" - } - }, - "node_modules/browser-sync/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" + "node": ">=12.17" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@75lb/nature": "latest" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/browser-sync/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/browser-sync/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/browser-sync/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/browser-sync/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-sync/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-recipes": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", - "integrity": "sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU=", - "dev": true - }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/bytes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cache-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cache-point/-/cache-point-2.0.0.tgz", - "integrity": "sha512-4gkeHlFpSKgm3vm2gJN5sPqfmijYRFYCQ6tv5cLw0xVmT6r1z1vd4FNnpuOREco3cBs1G709sZ72LdgddKvL5w==", - "dev": true, - "dependencies": { - "array-back": "^4.0.1", - "fs-then-native": "^2.0.0", - "mkdirp2": "^1.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cache-point/node_modules/array-back": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", - "dev": true, - "engines": { - "node": ">=8" + "peerDependenciesMeta": { + "@75lb/nature": { + "optional": true + } } }, "node_modules/caching-transform": { @@ -3028,9 +2703,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001591", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001591.tgz", - "integrity": "sha512-PCzRMei/vXjJyL5mJtzNiUCKP59dm8Apqc3PH8gJkMnMXZGox93RbE76jHsmLwmIo6/3nsYIpJtx0O7u5PqFuQ==", + "version": "1.0.30001692", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz", + "integrity": "sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==", "dev": true, "funding": [ { @@ -3045,7 +2720,8 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/catharsis": { "version": "0.9.0", @@ -3060,17 +2736,36 @@ } }, "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk-template": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", + "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "chalk": "^4.1.2" }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/chalk-template?sponsor=1" } }, "node_modules/chokidar": { @@ -3192,33 +2887,25 @@ "node": ">=4.0" } }, - "node_modules/collect-all": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/collect-all/-/collect-all-1.0.4.tgz", - "integrity": "sha512-RKZhRwJtJEP5FWul+gkSMEnaK6H3AGPTTWOiRimCcs+rc/OmQE3Yhy1Q7A7KsdkG3ZXVdZq68Y6ONSdvkeEcKA==", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { - "stream-connect": "^1.0.2", - "stream-via": "^1.0.4" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" + "node": ">=7.0.0" } }, "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" }, "node_modules/color-support": { "version": "1.1.3", @@ -3230,91 +2917,43 @@ } }, "node_modules/command-line-args": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.0.tgz", - "integrity": "sha512-4zqtU1hYsSJzcJBOcNZIbW5Fbk9BkjCp1pZVhQKoRaWL5J7N4XphDLwo8aWwdQpTugxwu+jf9u2ZhkXiqp5Z6A==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-6.0.1.tgz", + "integrity": "sha512-Jr3eByUjqyK0qd8W0SGFW1nZwqCaNCtbXjRo2cRJC1OYxWl3MZ5t1US3jq+cO4sPavqgw4l9BMGX0CBe+trepg==", "dev": true, + "license": "MIT", "dependencies": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", + "array-back": "^6.2.2", + "find-replace": "^5.0.2", "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" + "typical": "^7.2.0" }, "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/command-line-args/node_modules/array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/command-line-args/node_modules/typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/command-line-tool": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/command-line-tool/-/command-line-tool-0.8.0.tgz", - "integrity": "sha512-Xw18HVx/QzQV3Sc5k1vy3kgtOeGmsKIqwtFFoyjI4bbcpSgnw2CWVULvtakyw4s6fhyAdI6soQQhXc2OzJy62g==", - "dev": true, - "dependencies": { - "ansi-escape-sequences": "^4.0.0", - "array-back": "^2.0.0", - "command-line-args": "^5.0.0", - "command-line-usage": "^4.1.0", - "typical": "^2.6.1" + "node": ">=12.20" }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/command-line-tool/node_modules/array-back": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", - "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", - "dev": true, - "dependencies": { - "typical": "^2.6.1" + "peerDependencies": { + "@75lb/nature": "latest" }, - "engines": { - "node": ">=4" + "peerDependenciesMeta": { + "@75lb/nature": { + "optional": true + } } }, "node_modules/command-line-usage": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-4.1.0.tgz", - "integrity": "sha512-MxS8Ad995KpdAC0Jopo/ovGIroV/m0KHwzKfXxKag6FHOkGsH8/lv5yjgablcRxCJJC0oJeUMuO/gmaq+Wq46g==", - "dev": true, - "dependencies": { - "ansi-escape-sequences": "^4.0.0", - "array-back": "^2.0.0", - "table-layout": "^0.4.2", - "typical": "^2.6.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/command-line-usage/node_modules/array-back": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", - "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.3.tgz", + "integrity": "sha512-PqMLy5+YGwhMh1wS04mVG44oqDsgyLRSKJBdOo1bnYhMKBW65gZF1dRp2OZRhiTjgUHljy99qkO7bsctLaw35Q==", "dev": true, + "license": "MIT", "dependencies": { - "typical": "^2.6.1" + "array-back": "^6.2.2", + "chalk-template": "^0.4.0", + "table-layout": "^4.1.0", + "typical": "^7.1.1" }, "engines": { - "node": ">=4" + "node": ">=12.20.0" } }, "node_modules/commander": { @@ -3324,12 +2963,13 @@ "dev": true }, "node_modules/common-sequence": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/common-sequence/-/common-sequence-2.0.2.tgz", - "integrity": "sha512-jAg09gkdkrDO9EWTdXfv80WWH3yeZl5oT69fGfedBNS9pXUKYInVJ1bJ+/ht2+Moeei48TmSbQDYMc8EOx9G0g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-sequence/-/common-sequence-3.0.0.tgz", + "integrity": "sha512-g/CgSYk93y+a1IKm50tKl7kaT/OjjTYVQlEbUlt/49ZLV1mcKpUU7iyDiqTAeLdb4QDtQfq3ako8y8v//fzrWQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12.17" } }, "node_modules/commondir": { @@ -3400,6 +3040,7 @@ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } @@ -3429,10 +3070,11 @@ } }, "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -3460,12 +3102,13 @@ } }, "node_modules/core-js-compat": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz", - "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==", + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.40.0.tgz", + "integrity": "sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==", "dev": true, + "license": "MIT", "dependencies": { - "browserslist": "^4.23.0" + "browserslist": "^4.24.3" }, "funding": { "type": "opencollective", @@ -3483,6 +3126,7 @@ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, + "license": "MIT", "dependencies": { "object-assign": "^4", "vary": "^1" @@ -3492,10 +3136,11 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -3536,6 +3181,16 @@ "decode-uri-component": "^0.2.0" } }, + "node_modules/current-module-paths": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/current-module-paths/-/current-module-paths-1.1.2.tgz", + "integrity": "sha512-H4s4arcLx/ugbu1XkkgSvcUZax0L6tXUqnppGniQb8l5VjUKGHoayXE5RiriiPhYDd+kjZnaok1Uig13PKtKYQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.17" + } + }, "node_modules/d": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", @@ -3546,15 +3201,6 @@ "type": "^1.0.1" } }, - "node_modules/dateformat": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", - "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/debug": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", @@ -3610,15 +3256,6 @@ "node": ">=0.10" } }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/default-require-extensions": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", @@ -3641,11 +3278,16 @@ } }, "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, "node_modules/detect-file": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", @@ -3686,61 +3328,32 @@ } }, "node_modules/dmd": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/dmd/-/dmd-6.2.0.tgz", - "integrity": "sha512-uXWxLF1H7TkUAuoHK59/h/ts5cKavm2LnhrIgJWisip4BVzPoXavlwyoprFFn2CzcahKYgvkfaebS6oxzgflkg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/dmd/-/dmd-7.1.1.tgz", + "integrity": "sha512-Ap2HP6iuOek7eShReDLr9jluNJm9RMZESlt29H/Xs1qrVMkcS9X6m5h1mBC56WMxNiSo0wvjGICmZlYUSFjwZQ==", "dev": true, + "license": "MIT", "dependencies": { "array-back": "^6.2.2", - "cache-point": "^2.0.0", - "common-sequence": "^2.0.2", - "file-set": "^4.0.2", - "handlebars": "^4.7.7", - "marked": "^4.2.3", - "object-get": "^2.1.1", - "reduce-flatten": "^3.0.1", - "reduce-unique": "^2.0.1", - "reduce-without": "^1.0.1", - "test-value": "^3.0.0", - "walk-back": "^5.1.0" + "cache-point": "^3.0.0", + "common-sequence": "^3.0.0", + "file-set": "^5.2.2", + "handlebars": "^4.7.8", + "marked": "^4.3.0", + "walk-back": "^5.1.1" }, "engines": { - "node": ">=12" - } - }, - "node_modules/duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", - "dev": true, - "dependencies": { - "readable-stream": "~1.1.9" - } - }, - "node_modules/duplexer2/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "node_modules/duplexer2/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "node": ">=12.17" + }, + "peerDependencies": { + "@75lb/nature": "latest" + }, + "peerDependenciesMeta": { + "@75lb/nature": { + "optional": true + } } }, - "node_modules/duplexer2/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, "node_modules/duplexify": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", @@ -3793,7 +3406,8 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/easy-extender": { "version": "2.3.4", @@ -3819,76 +3433,6 @@ "node": ">= 0.8.0" } }, - "node_modules/eazy-logger/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eazy-logger/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eazy-logger/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eazy-logger/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eazy-logger/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eazy-logger/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -3896,10 +3440,11 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.689", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.689.tgz", - "integrity": "sha512-GatzRKnGPS1go29ep25reM94xxd1Wj8ritU0yRhCJ/tr1Bg8gKnm6R9O/yPOhGQBoLMZ9ezfrpghNaTw97C/PQ==", - "dev": true + "version": "1.5.82", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.82.tgz", + "integrity": "sha512-Zq16uk1hfQhyGx5GpwPAYDwddJuSGhtRhgOA2mCxANYaDT79nAeGnaXogMGng4KqLaJUVnOnuL0+TDop9nLOiA==", + "dev": true, + "license": "ISC" }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -3926,17 +3471,18 @@ } }, "node_modules/engine.io": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz", - "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.2.tgz", + "integrity": "sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==", "dev": true, + "license": "MIT", "dependencies": { "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "2.0.0", - "cookie": "~0.4.1", + "cookie": "~0.7.2", "cors": "~2.8.5", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", @@ -3947,37 +3493,17 @@ } }, "node_modules/engine.io-client": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz", - "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.2.tgz", + "integrity": "sha512-TAr+NKeoVTjEVW8P3iHguO1LO6RlUz9O5Y8o7EY0fU+gY1NYqas7NN3slpFtbXEsLMHk0h90fJMfKjRkQ0qUIw==", "dev": true, + "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", "ws": "~8.17.1", - "xmlhttprequest-ssl": "~2.0.0" - } - }, - "node_modules/engine.io-client/node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "xmlhttprequest-ssl": "~2.1.1" } }, "node_modules/engine.io-parser": { @@ -3989,27 +3515,6 @@ "node": ">=10.0.0" } }, - "node_modules/engine.io/node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -4023,22 +3528,22 @@ } }, "node_modules/es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", "dev": true, + "hasInstallScript": true, + "license": "ISC", "dependencies": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" } }, - "node_modules/es5-ext/node_modules/next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, "node_modules/es6-error": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", @@ -4079,10 +3584,11 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -4093,15 +3599,29 @@ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", "dev": true }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", "dev": true, + "license": "ISC", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, "engines": { - "node": ">=0.8.0" + "node": ">=0.10" } }, + "node_modules/esniff/node_modules/type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", + "dev": true, + "license": "ISC" + }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -4127,8 +3647,9 @@ "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -4204,27 +3725,29 @@ "node": ">=0.10.0" } }, - "node_modules/fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "dev": true, - "dependencies": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/fast-fifo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", "dev": true }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, "node_modules/fast-levenshtein": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz", @@ -4262,25 +3785,25 @@ } }, "node_modules/file-set": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/file-set/-/file-set-4.0.2.tgz", - "integrity": "sha512-fuxEgzk4L8waGXaAkd8cMr73Pm0FxOVkn8hztzUW7BAHhOGH90viQNXbiOsnecCWmfInqU6YmAMwxRMdKETceQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/file-set/-/file-set-5.2.2.tgz", + "integrity": "sha512-/KgJI1V/QaDK4enOk/E2xMFk1cTWJghEr7UmWiRZfZ6upt6gQCfMn4jJ7aOm64OKurj4TaVnSSgSDqv5ZKYA3A==", "dev": true, + "license": "MIT", "dependencies": { - "array-back": "^5.0.0", - "glob": "^7.1.6" + "array-back": "^6.2.2", + "fast-glob": "^3.3.2" }, "engines": { - "node": ">=10" - } - }, - "node_modules/file-set/node_modules/array-back": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz", - "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==", - "dev": true, - "engines": { - "node": ">=10" + "node": ">=12.17" + }, + "peerDependencies": { + "@75lb/nature": "latest" + }, + "peerDependenciesMeta": { + "@75lb/nature": { + "optional": true + } } }, "node_modules/fill-range": { @@ -4343,24 +3866,21 @@ } }, "node_modules/find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "dev": true, - "dependencies": { - "array-back": "^3.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/find-replace/node_modules/array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-5.0.2.tgz", + "integrity": "sha512-Y45BAiE3mz2QsrN2fb5QEtO4qb44NcS7en/0y9PEVsg351HsLeVclP8QPMH79Le9sH3rs5RSwJu99W0WPZO43Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=14" + }, + "peerDependencies": { + "@75lb/nature": "latest" + }, + "peerDependenciesMeta": { + "@75lb/nature": { + "optional": true + } } }, "node_modules/find-up": { @@ -4500,8 +4020,9 @@ "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -4550,15 +4071,6 @@ "node": ">=10.13.0" } }, - "node_modules/fs-then-native": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fs-then-native/-/fs-then-native-2.0.0.tgz", - "integrity": "sha512-X712jAOaWXkemQCAmWeg5rOT2i+KOpWz1Z/txk/cW0qlOu2oQ9H61vc5w3X/iyuUEfq/OyaFJ78/cZAQD1/bgA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -4738,6 +4250,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -4822,37 +4335,6 @@ "node": ">=10.13.0" } }, - "node_modules/gulp-cli/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/gulp-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/gulp-cli/node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -4864,24 +4346,6 @@ "wrap-ansi": "^7.0.0" } }, - "node_modules/gulp-cli/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/gulp-cli/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/gulp-cli/node_modules/glogg": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/glogg/-/glogg-2.2.0.tgz", @@ -4906,15 +4370,6 @@ "node": ">= 10.13.0" } }, - "node_modules/gulp-cli/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/gulp-cli/node_modules/sparkles": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-2.1.0.tgz", @@ -4924,18 +4379,6 @@ "node": ">= 10.13.0" } }, - "node_modules/gulp-cli/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/gulp-cli/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -5002,16 +4445,6 @@ "readable-stream": "2 || 3" } }, - "node_modules/gulp-js-import": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/gulp-js-import/-/gulp-js-import-1.0.6.tgz", - "integrity": "sha512-sA0mNBPM3CmPOH5QEoSIitoMyyI8kwqol4dU75fsZ10ay3PA8PEzqsLI+Msgrc6LHN+8khD7dt5N8OW/q/+dTw==", - "dev": true, - "dependencies": { - "gulp-util": "^3.0.7", - "through2": "^2.0.1" - } - }, "node_modules/gulp-load-plugins": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/gulp-load-plugins/-/gulp-load-plugins-2.0.8.tgz", @@ -5227,138 +4660,6 @@ "vinyl-sourcemaps-apply": "^0.2.0" } }, - "node_modules/gulp-util": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", - "integrity": "sha512-q5oWPc12lwSFS9h/4VIjG+1NuNDlJ48ywV2JKItY4Ycc/n1fXJeYPVQsfu5ZrhQi7FGSDBalwUCLar/GyHXKGw==", - "deprecated": "gulp-util is deprecated - replace it, following the guidelines at https://medium.com/gulpjs/gulp-util-ca3b1f9f9ac5", - "dev": true, - "dependencies": { - "array-differ": "^1.0.0", - "array-uniq": "^1.0.2", - "beeper": "^1.0.0", - "chalk": "^1.0.0", - "dateformat": "^2.0.0", - "fancy-log": "^1.1.0", - "gulplog": "^1.0.0", - "has-gulplog": "^0.1.0", - "lodash._reescape": "^3.0.0", - "lodash._reevaluate": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.template": "^3.0.0", - "minimist": "^1.1.0", - "multipipe": "^0.1.2", - "object-assign": "^3.0.0", - "replace-ext": "0.0.1", - "through2": "^2.0.0", - "vinyl": "^0.5.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/gulp-util/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-util/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-util/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-util/node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/gulp-util/node_modules/clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "dev": true - }, - "node_modules/gulp-util/node_modules/object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-util/node_modules/replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/gulp-util/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-util/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/gulp-util/node_modules/vinyl": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", - "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", - "dev": true, - "dependencies": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", - "replace-ext": "0.0.1" - }, - "engines": { - "node": ">= 0.9" - } - }, "node_modules/gulplog": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", @@ -5372,13 +4673,14 @@ } }, "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.5", - "neo-async": "^2.6.0", + "neo-async": "^2.6.2", "source-map": "^0.6.1", "wordwrap": "^1.0.0" }, @@ -5397,6 +4699,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -5413,34 +4716,14 @@ "node": ">= 0.4.0" } }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/has-gulplog": { @@ -5610,6 +4893,7 @@ "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6009,15 +5293,6 @@ "node": ">=8" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/istanbul-lib-report/node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -6033,18 +5308,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", @@ -6082,16 +5345,14 @@ } }, "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=14" - }, "funding": { "url": "https://github.com/sponsors/isaacs" }, @@ -6103,7 +5364,8 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { "version": "3.14.1", @@ -6128,10 +5390,11 @@ } }, "node_modules/jsdoc": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.3.tgz", - "integrity": "sha512-Nu7Sf35kXJ1MWDZIMAuATRQTg1iIPdzh7tqJ6jjvaU/GfDf+qi5UV8zJR3Mo+/pYFvm8mzay4+6O5EWigaQBQw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.4.tgz", + "integrity": "sha512-zeFezwyXeG4syyYHbvh1A967IAqq/67yXtXvuL5wnqCkFZe8I0vKfm+EO+YEvLguo6w9CDUbrAXVtJSHh2E8rw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@babel/parser": "^7.20.15", "@jsdoc/salty": "^0.2.1", @@ -6157,60 +5420,77 @@ } }, "node_modules/jsdoc-api": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/jsdoc-api/-/jsdoc-api-8.0.0.tgz", - "integrity": "sha512-Rnhor0suB1Ds1abjmFkFfKeD+kSMRN9oHMTMZoJVUrmtCGDwXty+sWMA9sa4xbe4UyxuPjhC7tavZ40mDKK6QQ==", + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/jsdoc-api/-/jsdoc-api-9.3.4.tgz", + "integrity": "sha512-di8lggLACEttpyAZ6WjKKafUP4wC4prAGjt40nMl7quDpp2nD7GmLt6/WxhRu9Q6IYoAAySsNeidBXYVAMwlqg==", "dev": true, + "license": "MIT", "dependencies": { "array-back": "^6.2.2", - "cache-point": "^2.0.0", - "collect-all": "^1.0.4", - "file-set": "^4.0.2", - "fs-then-native": "^2.0.0", - "jsdoc": "^4.0.0", + "cache-point": "^3.0.0", + "current-module-paths": "^1.1.2", + "file-set": "^5.2.2", + "jsdoc": "^4.0.4", "object-to-spawn-args": "^2.0.1", - "temp-path": "^1.0.0", - "walk-back": "^5.1.0" + "walk-back": "^5.1.1" }, "engines": { "node": ">=12.17" + }, + "peerDependencies": { + "@75lb/nature": "latest" + }, + "peerDependenciesMeta": { + "@75lb/nature": { + "optional": true + } } }, "node_modules/jsdoc-parse": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsdoc-parse/-/jsdoc-parse-6.2.1.tgz", - "integrity": "sha512-9viGRUUtWOk/G4V0+nQ6rfLucz5plxh5I74WbNSNm9h9NWugCDVX4jbG8hZP9QqKGpdTPDE+qJXzaYNos3wqTA==", + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/jsdoc-parse/-/jsdoc-parse-6.2.4.tgz", + "integrity": "sha512-MQA+lCe3ioZd0uGbyB3nDCDZcKgKC7m/Ivt0LgKZdUoOlMJxUWJQ3WI6GeyHp9ouznKaCjlp7CU9sw5k46yZTw==", "dev": true, + "license": "MIT", "dependencies": { "array-back": "^6.2.2", + "find-replace": "^5.0.1", "lodash.omit": "^4.5.0", - "reduce-extract": "^1.0.0", - "sort-array": "^4.1.5", - "test-value": "^3.0.0" + "sort-array": "^5.0.0" }, "engines": { "node": ">=12" } }, "node_modules/jsdoc-to-markdown": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/jsdoc-to-markdown/-/jsdoc-to-markdown-8.0.1.tgz", - "integrity": "sha512-qJfNJhkq2C26UYoOdj8L1yheTJlk1veCsxwRejRmj07XZKCn7oSkuPErx6+JoNi8afCaUKdIM5oUu0uF2/T8iw==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/jsdoc-to-markdown/-/jsdoc-to-markdown-9.1.1.tgz", + "integrity": "sha512-QqYVSo58iHXpD5Jwi1u4AFeuMcQp4jfk7SmWzvXKc3frM9Kop17/OHudmi0phzkT/K137Rlroc9Q0y+95XpUsw==", "dev": true, + "license": "MIT", "dependencies": { "array-back": "^6.2.2", - "command-line-tool": "^0.8.0", + "command-line-args": "^6.0.1", + "command-line-usage": "^7.0.3", "config-master": "^3.1.0", - "dmd": "^6.2.0", - "jsdoc-api": "^8.0.0", - "jsdoc-parse": "^6.2.1", - "walk-back": "^5.1.0" + "dmd": "^7.1.1", + "jsdoc-api": "^9.3.4", + "jsdoc-parse": "^6.2.4", + "walk-back": "^5.1.1" }, "bin": { "jsdoc2md": "bin/cli.js" }, "engines": { "node": ">=12.17" + }, + "peerDependencies": { + "@75lb/nature": "latest" + }, + "peerDependenciesMeta": { + "@75lb/nature": { + "optional": true + } } }, "node_modules/jsdoc/node_modules/escape-string-regexp": { @@ -6223,15 +5503,16 @@ } }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json5": { @@ -6354,65 +5635,12 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "node_modules/lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "node_modules/lodash._basetostring": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", - "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", - "dev": true - }, - "node_modules/lodash._basevalues": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", - "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", - "dev": true - }, - "node_modules/lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "node_modules/lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "node_modules/lodash._reescape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", - "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", - "dev": true - }, - "node_modules/lodash._reevaluate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", - "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", - "dev": true - }, - "node_modules/lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true - }, - "node_modules/lodash._root": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", - "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", - "dev": true - }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", - "dev": true + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true, + "license": "MIT" }, "node_modules/lodash.debounce": { "version": "4.0.8", @@ -6420,94 +5648,24 @@ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, - "node_modules/lodash.escape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", - "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", - "dev": true, - "dependencies": { - "lodash._root": "^3.0.0" - } - }, "node_modules/lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", "dev": true }, - "node_modules/lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "node_modules/lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, "node_modules/lodash.isfinite": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", "dev": true }, - "node_modules/lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true, - "dependencies": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, "node_modules/lodash.omit": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==", - "dev": true - }, - "node_modules/lodash.padend": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", - "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=", - "dev": true - }, - "node_modules/lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", - "dev": true - }, - "node_modules/lodash.template": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", - "integrity": "sha512-0B4Y53I0OgHUJkt+7RmlDFWKjVAI/YUpWNiL9GQz5ORDr4ttgfQGo+phBWKFLJbBdtOwgMuUkdOHOnPg45jKmQ==", - "dev": true, - "dependencies": { - "lodash._basecopy": "^3.0.0", - "lodash._basetostring": "^3.0.0", - "lodash._basevalues": "^3.0.0", - "lodash._isiterateecall": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0", - "lodash.keys": "^3.0.0", - "lodash.restparam": "^3.0.0", - "lodash.templatesettings": "^3.0.0" - } - }, - "node_modules/lodash.templatesettings": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", - "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", "dev": true, - "dependencies": { - "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0" - } + "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", @@ -6525,89 +5683,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "yallist": "^3.0.2" } }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", "dev": true, "dependencies": { "es5-ext": "~0.10.2" @@ -6627,10 +5715,11 @@ } }, "node_modules/make-dir/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } @@ -6732,26 +5821,41 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, "node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { "node": ">=8.6" } }, "node_modules/mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, + "license": "MIT", "bin": { "mime": "cli.js" + }, + "engines": { + "node": ">=4" } }, "node_modules/mime-db": { @@ -6797,10 +5901,11 @@ } }, "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -6809,7 +5914,8 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/mkdirp": { "version": "1.0.4", @@ -6823,17 +5929,12 @@ "node": ">=10" } }, - "node_modules/mkdirp2": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/mkdirp2/-/mkdirp2-1.0.5.tgz", - "integrity": "sha512-xOE9xbICroUDmG1ye2h4bZ8WBie9EGmACaco8K8cx6RlkJJrxGIqjGqztAI+NMhexXBcdGbSEzI6N3EJPevxZw==", - "dev": true - }, "node_modules/mocha": { - "version": "10.7.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.7.3.tgz", - "integrity": "sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.0.1.tgz", + "integrity": "sha512-+3GkODfsDG71KSCQhc4IekSW+ItCK/kiez1Z28ksWvYhKXV/syxMlerR/sC7whDp7IyreZ4YxceMLdTs5hQE8A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-colors": "^4.1.3", "browser-stdout": "^1.3.1", @@ -6842,7 +5943,7 @@ "diff": "^5.2.0", "escape-string-regexp": "^4.0.0", "find-up": "^5.0.0", - "glob": "^8.1.0", + "glob": "^10.4.5", "he": "^1.2.0", "js-yaml": "^4.1.0", "log-symbols": "^4.1.0", @@ -6861,7 +5962,7 @@ "mocha": "bin/mocha.js" }, "engines": { - "node": ">= 14.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/mocha/node_modules/ansi-colors": { @@ -6884,6 +5985,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -6911,32 +6013,58 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "node_modules/mocha/node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dev": true, + "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=12" + "node": ">=14" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mocha/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/mocha/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/mocha/node_modules/js-yaml": { @@ -6956,6 +6084,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6969,6 +6098,19 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "node_modules/mocha/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -7008,15 +6150,6 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/multipipe": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", - "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", - "dev": true, - "dependencies": { - "duplexer2": "0.0.2" - } - }, "node_modules/mute-stdout": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-2.0.0.tgz", @@ -7039,7 +6172,8 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/next-tick": { "version": "1.1.0", @@ -7080,10 +6214,11 @@ } }, "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" }, "node_modules/normalize-path": { "version": "3.0.0", @@ -7107,10 +6242,11 @@ } }, "node_modules/nyc": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-17.0.0.tgz", - "integrity": "sha512-ISp44nqNCaPugLLGGfknzQwSwt10SSS5IMoPR7GLoMAyS18Iw5js8U7ga2VF9lYuMZ42gOHr3UddZw4WZltxKg==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-17.1.0.tgz", + "integrity": "sha512-U42vQ4czpKa0QdI1hu950XuNhYqgoM+ZF1HT+VuUHL9hPfDPVvNQyltmMqdE9bUHMVa+8yNbc3QKTj8zQhlVxQ==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", @@ -7119,7 +6255,7 @@ "decamelize": "^1.2.0", "find-cache-dir": "^3.2.0", "find-up": "^4.1.0", - "foreground-child": "^2.0.0", + "foreground-child": "^3.3.0", "get-package-type": "^0.1.0", "glob": "^7.1.6", "istanbul-lib-coverage": "^3.0.0", @@ -7147,21 +6283,6 @@ "node": ">=18" } }, - "node_modules/nyc/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/nyc/node_modules/cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", @@ -7173,24 +6294,6 @@ "wrap-ansi": "^6.2.0" } }, - "node_modules/nyc/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/nyc/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/nyc/node_modules/find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", @@ -7221,6 +6324,36 @@ "node": ">=8" } }, + "node_modules/nyc/node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/nyc/node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/nyc/node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -7366,17 +6499,12 @@ "node": ">=0.10.0" } }, - "node_modules/object-get": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object-get/-/object-get-2.1.1.tgz", - "integrity": "sha512-7n4IpLMzGGcLEMiQKsNR7vCe+N5E9LORFrtNUVy4sO3dj9a3HedZCxEL2T7QuLhcHN1NBuBsMOKaOsAYI9IIvg==", - "dev": true - }, "node_modules/object-to-spawn-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object-to-spawn-args/-/object-to-spawn-args-2.0.1.tgz", "integrity": "sha512-6FuKFQ39cOID+BMZ3QaphcC8Y4cw6LXBLyIgPU+OhIYwviJamPAn+4mITapnSBQrejB+NNp+FMskhD8Cq+Ys3w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.0.0" } @@ -7507,6 +6635,13 @@ "node": ">=8" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/parse-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", @@ -7521,15 +6656,6 @@ "node": ">=0.8" } }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", @@ -7603,41 +6729,42 @@ } }, "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", + "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "engines": { - "node": "14 || >=16.14" - } + "license": "ISC" }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -7798,10 +6925,11 @@ } }, "node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -7845,6 +6973,27 @@ "node": ">=6" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/queue-tick": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", @@ -7865,6 +7014,7 @@ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -7923,109 +7073,19 @@ "node": ">= 10.13.0" } }, - "node_modules/reduce-extract": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/reduce-extract/-/reduce-extract-1.0.0.tgz", - "integrity": "sha512-QF8vjWx3wnRSL5uFMyCjDeDc5EBMiryoT9tz94VvgjKfzecHAVnqmXAwQDcr7X4JmLc2cjkjFGCVzhMqDjgR9g==", - "dev": true, - "dependencies": { - "test-value": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/reduce-extract/node_modules/array-back": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", - "integrity": "sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw==", - "dev": true, - "dependencies": { - "typical": "^2.6.0" - }, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/reduce-extract/node_modules/test-value": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/test-value/-/test-value-1.1.0.tgz", - "integrity": "sha512-wrsbRo7qP+2Je8x8DsK8ovCGyxe3sYfQwOraIY/09A2gFXU9DYKiTF14W4ki/01AEh56kMzAmlj9CaHGDDUBJA==", - "dev": true, - "dependencies": { - "array-back": "^1.0.2", - "typical": "^2.4.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/reduce-flatten": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-3.0.1.tgz", - "integrity": "sha512-bYo+97BmUUOzg09XwfkwALt4PQH1M5L0wzKerBt6WLm3Fhdd43mMS89HiT1B9pJIqko/6lWx3OnV4J9f2Kqp5Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/reduce-unique": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/reduce-unique/-/reduce-unique-2.0.1.tgz", - "integrity": "sha512-x4jH/8L1eyZGR785WY+ePtyMNhycl1N2XOLxhCbzZFaqF4AXjLzqSxa2UHgJ2ZVR/HHyPOvl1L7xRnW8ye5MdA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/reduce-without": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/reduce-without/-/reduce-without-1.0.1.tgz", - "integrity": "sha512-zQv5y/cf85sxvdrKPlfcRzlDn/OqKFThNimYmsS3flmkioKvkUGn2Qg9cJVoQiEvdxFGLE0MQER/9fZ9sUqdxg==", - "dev": true, - "dependencies": { - "test-value": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/reduce-without/node_modules/array-back": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", - "integrity": "sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw==", - "dev": true, - "dependencies": { - "typical": "^2.6.0" - }, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/reduce-without/node_modules/test-value": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz", - "integrity": "sha512-+1epbAxtKeXttkGFMTX9H42oqzOTufR1ceCF+GYA5aOmvaPq9wd4PUS8329fn2RRLGNeUkgRLnVpycjx8DsO2w==", - "dev": true, - "dependencies": { - "array-back": "^1.0.3", - "typical": "^2.6.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", "dev": true, + "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, @@ -8037,27 +7097,30 @@ "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regenerator-transform": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.4" } }, "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" }, @@ -8065,25 +7128,37 @@ "node": ">=4" } }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, + "license": "MIT" + }, "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "jsesc": "~0.5.0" + "jsesc": "~3.0.2" }, "bin": { "regjsparser": "bin/parser" } }, "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" } }, "node_modules/release-zalgo": { @@ -8250,18 +7325,20 @@ } }, "node_modules/rimraf": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.7.tgz", - "integrity": "sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", + "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", "dev": true, + "license": "ISC", "dependencies": { - "glob": "^10.3.7" + "glob": "^11.0.0", + "package-json-from-dist": "^1.0.0" }, "bin": { "rimraf": "dist/esm/bin.mjs" }, "engines": { - "node": ">=14.18" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -8272,15 +7349,17 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/rimraf/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dev": true, + "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -8293,37 +7372,83 @@ } }, "node_modules/rimraf/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", + "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/jackspeak": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.2.tgz", + "integrity": "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/node_modules/lru-cache": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", + "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, "node_modules/rimraf/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -8334,6 +7459,7 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -8341,6 +7467,30 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/rx": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", @@ -8381,24 +7531,25 @@ } }, "node_modules/send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.1.tgz", + "integrity": "sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" }, "engines": { "node": ">= 0.8.0" @@ -8409,50 +7560,83 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/send/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/send/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, + "license": "MIT", "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, - "node_modules/send/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, "node_modules/send/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, - "node_modules/send/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true + "node_modules/send/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } }, "node_modules/send/node_modules/statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/serialize-javascript": { @@ -8518,41 +7702,162 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-static/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-static/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/serve-static/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, - "node_modules/serve-index/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "node_modules/serve-static/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, - "node_modules/serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "node_modules/serve-static/node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, + "license": "MIT", "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/serve-static/node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/server-destroy": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/set-blocking": { "version": "2.0.0", @@ -8606,16 +7911,17 @@ "dev": true }, "node_modules/socket.io": { - "version": "4.7.5", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", - "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", + "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.5.2", + "engine.io": "~6.6.0", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" }, @@ -8624,23 +7930,26 @@ } }, "node_modules/socket.io-adapter": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", - "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", "dev": true, + "license": "MIT", "dependencies": { - "ws": "~8.11.0" + "debug": "~4.3.4", + "ws": "~8.17.1" } }, "node_modules/socket.io-client": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.3.tgz", - "integrity": "sha512-nU+ywttCyBitXIl9Xe0RSEfek4LneYkJxCeNnKCuhwoH4jGXO1ipIUw/VA/+Vvv2G1MTym11fzFC0SxkrcfXDw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz", + "integrity": "sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==", "dev": true, + "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", - "engine.io-client": "~6.5.2", + "engine.io-client": "~6.6.1", "socket.io-parser": "~4.2.4" }, "engines": { @@ -8661,34 +7970,25 @@ } }, "node_modules/sort-array": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/sort-array/-/sort-array-4.1.5.tgz", - "integrity": "sha512-Ya4peoS1fgFN42RN1REk2FgdNOeLIEMKFGJvs7VTP3OklF8+kl2SkpVliZ4tk/PurWsrWRsdNdU+tgyOBkB9sA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/sort-array/-/sort-array-5.0.0.tgz", + "integrity": "sha512-Sg9MzajSGprcSrMIxsXyNT0e0JB47RJRfJspC+7co4Z5BdNsNl8FmWI+lXEpyKq+vkMG6pHgAhqyCO+bkDTfFQ==", "dev": true, + "license": "MIT", "dependencies": { - "array-back": "^5.0.0", - "typical": "^6.0.1" + "array-back": "^6.2.2", + "typical": "^7.1.1" }, "engines": { - "node": ">=10" - } - }, - "node_modules/sort-array/node_modules/array-back": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz", - "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/sort-array/node_modules/typical": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/typical/-/typical-6.0.1.tgz", - "integrity": "sha512-+g3NEp7fJLe9DPa1TArHm9QAA7YciZmWnfAqEaFrBihQ7epOv9i99rjtgb6Iz0wh3WuQDjsCTDfgRoGnmHN81A==", - "dev": true, - "engines": { - "node": ">=10" + "node": ">=12.17" + }, + "peerDependencies": { + "@75lb/nature": "^0.1.1" + }, + "peerDependenciesMeta": { + "@75lb/nature": { + "optional": true + } } }, "node_modules/source-map": { @@ -8799,30 +8099,6 @@ "streamx": "^2.13.2" } }, - "node_modules/stream-connect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-connect/-/stream-connect-1.0.2.tgz", - "integrity": "sha512-68Kl+79cE0RGKemKkhxTSg8+6AGrqBt+cbZAXevg2iJ6Y3zX4JhA/sZeGzLpxW9cXhmqAcE7KnJCisUmIUfnFQ==", - "dev": true, - "dependencies": { - "array-back": "^1.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stream-connect/node_modules/array-back": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", - "integrity": "sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw==", - "dev": true, - "dependencies": { - "typical": "^2.6.0" - }, - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/stream-events": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", @@ -8849,6 +8125,7 @@ "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "commander": "^2.2.0", "limiter": "^1.0.5" @@ -8860,15 +8137,6 @@ "node": ">= 0.10.0" } }, - "node_modules/stream-via": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/stream-via/-/stream-via-1.0.4.tgz", - "integrity": "sha512-DBp0lSvX5G9KGRDTkR/R+a29H+Wk2xItOF+MpZLLNDWbEV9tGPnqLPxHEYjmiz8xGtJHRIqmI+hCjmNzqoA4nQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/streamx": { "version": "2.18.0", "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.18.0.tgz", @@ -8912,6 +8180,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -8939,6 +8208,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -8983,15 +8253,16 @@ "dev": true }, "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/sver": { @@ -9004,31 +8275,17 @@ } }, "node_modules/table-layout": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-0.4.5.tgz", - "integrity": "sha512-zTvf0mcggrGeTe/2jJ6ECkJHAQPIYEwDoqsiqBjI24mvRmQbInK5jq33fyypaCBxX08hMkfmdOqj6haT33EqWw==", - "dev": true, - "dependencies": { - "array-back": "^2.0.0", - "deep-extend": "~0.6.0", - "lodash.padend": "^4.6.1", - "typical": "^2.6.1", - "wordwrapjs": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/table-layout/node_modules/array-back": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", - "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-4.1.1.tgz", + "integrity": "sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA==", "dev": true, + "license": "MIT", "dependencies": { - "typical": "^2.6.1" + "array-back": "^6.2.2", + "wordwrapjs": "^5.1.0" }, "engines": { - "node": ">=4" + "node": ">=12.17" } }, "node_modules/teeny-request": { @@ -9065,12 +8322,6 @@ "streamx": "^2.12.5" } }, - "node_modules/temp-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-path/-/temp-path-1.0.0.tgz", - "integrity": "sha512-TvmyH7kC6ZVTYkqCODjJIbgvu0FKiwQpZ4D1aknE7xpcDf/qEOB8KZEK5ef2pfbVoiBhNWs3yx4y+ESMtNYmlg==", - "dev": true - }, "node_modules/ternary-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ternary-stream/-/ternary-stream-3.0.0.tgz", @@ -9133,31 +8384,6 @@ "node": ">=8" } }, - "node_modules/test-value": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/test-value/-/test-value-3.0.0.tgz", - "integrity": "sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ==", - "dev": true, - "dependencies": { - "array-back": "^2.0.0", - "typical": "^2.6.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/test-value/node_modules/array-back": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", - "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", - "dev": true, - "dependencies": { - "typical": "^2.6.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/text-decoder": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.1.0.tgz", @@ -9177,15 +8403,6 @@ "xtend": "~4.0.1" } }, - "node_modules/time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/timers-ext": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", @@ -9196,15 +8413,6 @@ "next-tick": "1" } }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -9269,10 +8477,14 @@ } }, "node_modules/typical": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz", - "integrity": "sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0=", - "dev": true + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-7.3.0.tgz", + "integrity": "sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.17" + } }, "node_modules/ua-parser-js": { "version": "1.0.33", @@ -9351,16 +8563,18 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true, + "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -9370,6 +8584,7 @@ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, + "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -9379,10 +8594,11 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -9392,6 +8608,7 @@ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -9415,9 +8632,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", "dev": true, "funding": [ { @@ -9433,9 +8650,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -9501,6 +8719,7 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -9680,10 +8899,11 @@ } }, "node_modules/walk-back": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.1.0.tgz", - "integrity": "sha512-Uhxps5yZcVNbLEAnb+xaEEMdgTXl9qAQDzKYejG2AZ7qPwRQ81lozY9ECDbjLPNWm7YsO1IK5rsP1KoQzXAcGA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.1.1.tgz", + "integrity": "sha512-e/FRLDVdZQWFrAzU6Hdvpm7D7m2ina833gIKLptQykRK49mmCYHLHq7UqjPDbxbKLZkTkW1rFqbengdE3sLfdw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.17" } @@ -9728,138 +8948,62 @@ "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "node_modules/wordwrapjs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-3.0.0.tgz", - "integrity": "sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw==", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true, - "dependencies": { - "reduce-flatten": "^1.0.1", - "typical": "^2.6.1" - }, - "engines": { - "node": ">=4.0.0" - } + "license": "MIT" }, - "node_modules/wordwrapjs/node_modules/reduce-flatten": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz", - "integrity": "sha1-JYx479FT3fk8tWEjf2EYTzaW4yc=", + "node_modules/wordwrapjs": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.0.tgz", + "integrity": "sha512-JNjcULU2e4KJwUNv6CHgI46UvDGitb6dGryHajXTDiLgg1/RiGoPSDw4kZfYnwGtEXf2ZMeIewDQgFGzkCB2Sg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12.17" } }, "node_modules/workerpool": { "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", - "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", "dev": true }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -9879,16 +9023,17 @@ } }, "node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -9906,9 +9051,9 @@ "dev": true }, "node_modules/xmlhttprequest-ssl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", - "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz", + "integrity": "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==", "dev": true, "engines": { "node": ">=0.4.0" @@ -10038,37 +9183,38 @@ } }, "@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dev": true, "requires": { - "@babel/highlight": "^7.24.7", + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", "picocolors": "^1.0.0" } }, "@babel/compat-data": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", - "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz", + "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==", "dev": true }, "@babel/core": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", - "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", "dev": true, "requires": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helpers": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7", + "@babel/code-frame": "^7.26.0", + "@babel/generator": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.0", + "@babel/parser": "^7.26.0", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -10085,21 +9231,22 @@ } }, "@babel/generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz", + "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==", "dev": true, "requires": { - "@babel/types": "^7.24.7", + "@babel/parser": "^7.26.5", + "@babel/types": "^7.26.5", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "jsesc": "^3.0.2" }, "dependencies": { "@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, "requires": { "@jridgewell/set-array": "^1.2.1", @@ -10110,69 +9257,57 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "dev": true, "requires": { - "@babel/types": "^7.24.7" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", - "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", - "dev": true, - "requires": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/types": "^7.25.9" } }, "@babel/helper-compilation-targets": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", - "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", "dev": true, "requires": { - "@babel/compat-data": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz", - "integrity": "sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.7", - "@babel/helper-optimise-call-expression": "^7.24.7", - "@babel/helper-replace-supers": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.25.9", "semver": "^6.3.1" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz", - "integrity": "sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", + "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "regexpu-core": "^5.3.1", + "@babel/helper-annotate-as-pure": "^7.25.9", + "regexpu-core": "^6.2.0", "semver": "^6.3.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz", - "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", + "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.22.6", @@ -10182,229 +9317,179 @@ "resolve": "^1.14.2" } }, - "@babel/helper-environment-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", - "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", - "dev": true, - "requires": { - "@babel/types": "^7.24.7" - } - }, - "@babel/helper-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", - "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", - "dev": true, - "requires": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", - "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", - "dev": true, - "requires": { - "@babel/types": "^7.24.7" - } - }, "@babel/helper-member-expression-to-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz", - "integrity": "sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", "dev": true, "requires": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" } }, "@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "dev": true, "requires": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" } }, "@babel/helper-module-transforms": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", - "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" } }, "@babel/helper-optimise-call-expression": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", - "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", "dev": true, "requires": { - "@babel/types": "^7.24.7" + "@babel/types": "^7.25.9" } }, "@babel/helper-plugin-utils": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", - "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz", - "integrity": "sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", + "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-wrap-function": "^7.24.7" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-wrap-function": "^7.25.9", + "@babel/traverse": "^7.25.9" } }, "@babel/helper-replace-supers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", - "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.7", - "@babel/helper-optimise-call-expression": "^7.24.7" - } - }, - "@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", + "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", "dev": true, "requires": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.26.5" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", - "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", "dev": true, "requires": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", - "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", - "dev": true, - "requires": { - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" } }, "@babel/helper-string-parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", - "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", - "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz", - "integrity": "sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", + "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.24.7", - "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" } }, "@babel/helpers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", - "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", "dev": true, "requires": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" } }, - "@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "@babel/parser": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.5.tgz", + "integrity": "sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.24.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@babel/types": "^7.26.5" } }, - "@babel/parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", - "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", - "dev": true - }, "@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz", - "integrity": "sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", + "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + } + }, + "@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", + "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz", - "integrity": "sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", + "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", - "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9" } }, "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz", - "integrity": "sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", + "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" } }, "@babel/plugin-proposal-private-property-in-object": { @@ -10414,157 +9499,22 @@ "dev": true, "requires": {} }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, "@babel/plugin-syntax-import-assertions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", - "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", + "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-syntax-import-attributes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", - "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.24.7" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-syntax-unicode-sets-regex": { @@ -10578,574 +9528,566 @@ } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", - "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", + "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-async-generator-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz", - "integrity": "sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", + "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-remap-async-to-generator": "^7.24.7", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.25.9" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", - "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", + "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-remap-async-to-generator": "^7.24.7" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", - "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", + "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.26.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz", - "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", + "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-class-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", - "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", + "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-class-static-block": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", - "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", + "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-classes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz", - "integrity": "sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-replace-supers": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", + "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/traverse": "^7.25.9", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", - "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", + "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/template": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/template": "^7.25.9" } }, "@babel/plugin-transform-destructuring": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz", - "integrity": "sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", + "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", - "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", + "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", - "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", + "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-dynamic-import": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", - "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", + "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", - "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", + "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-export-namespace-from": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", - "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", + "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-for-of": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", - "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", + "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" } }, "@babel/plugin-transform-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz", - "integrity": "sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", + "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" } }, "@babel/plugin-transform-json-strings": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", - "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", + "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz", - "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", + "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-logical-assignment-operators": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", - "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", + "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", - "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", + "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", - "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", + "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz", - "integrity": "sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7" + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz", - "integrity": "sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", + "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", - "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", + "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", - "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-new-target": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", - "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", + "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", - "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "version": "7.26.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz", + "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.26.5" } }, "@babel/plugin-transform-numeric-separator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", - "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", + "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-object-rest-spread": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", - "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", + "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.24.7" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9" } }, "@babel/plugin-transform-object-super": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", - "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", + "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-replace-supers": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9" } }, "@babel/plugin-transform-optional-catch-binding": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", - "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", + "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-optional-chaining": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz", - "integrity": "sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" } }, "@babel/plugin-transform-parameters": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", - "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", + "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-private-methods": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", - "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", + "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-private-property-in-object": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", - "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", + "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-property-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", - "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", + "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-regenerator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", - "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", + "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-plugin-utils": "^7.25.9", "regenerator-transform": "^0.15.2" } }, + "@babel/plugin-transform-regexp-modifiers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", + "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + } + }, "@babel/plugin-transform-reserved-words": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", - "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", + "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", - "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", + "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-spread": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", - "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", + "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", - "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", + "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-template-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", - "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", + "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.7.tgz", - "integrity": "sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", + "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", - "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", + "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-unicode-property-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", - "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", + "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", - "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", + "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-unicode-sets-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", - "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", + "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/preset-env": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.7.tgz", - "integrity": "sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.7", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz", + "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.24.7", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-import-assertions": "^7.26.0", + "@babel/plugin-syntax-import-attributes": "^7.26.0", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.24.7", - "@babel/plugin-transform-async-generator-functions": "^7.24.7", - "@babel/plugin-transform-async-to-generator": "^7.24.7", - "@babel/plugin-transform-block-scoped-functions": "^7.24.7", - "@babel/plugin-transform-block-scoping": "^7.24.7", - "@babel/plugin-transform-class-properties": "^7.24.7", - "@babel/plugin-transform-class-static-block": "^7.24.7", - "@babel/plugin-transform-classes": "^7.24.7", - "@babel/plugin-transform-computed-properties": "^7.24.7", - "@babel/plugin-transform-destructuring": "^7.24.7", - "@babel/plugin-transform-dotall-regex": "^7.24.7", - "@babel/plugin-transform-duplicate-keys": "^7.24.7", - "@babel/plugin-transform-dynamic-import": "^7.24.7", - "@babel/plugin-transform-exponentiation-operator": "^7.24.7", - "@babel/plugin-transform-export-namespace-from": "^7.24.7", - "@babel/plugin-transform-for-of": "^7.24.7", - "@babel/plugin-transform-function-name": "^7.24.7", - "@babel/plugin-transform-json-strings": "^7.24.7", - "@babel/plugin-transform-literals": "^7.24.7", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", - "@babel/plugin-transform-member-expression-literals": "^7.24.7", - "@babel/plugin-transform-modules-amd": "^7.24.7", - "@babel/plugin-transform-modules-commonjs": "^7.24.7", - "@babel/plugin-transform-modules-systemjs": "^7.24.7", - "@babel/plugin-transform-modules-umd": "^7.24.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", - "@babel/plugin-transform-new-target": "^7.24.7", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", - "@babel/plugin-transform-numeric-separator": "^7.24.7", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", - "@babel/plugin-transform-object-super": "^7.24.7", - "@babel/plugin-transform-optional-catch-binding": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.7", - "@babel/plugin-transform-parameters": "^7.24.7", - "@babel/plugin-transform-private-methods": "^7.24.7", - "@babel/plugin-transform-private-property-in-object": "^7.24.7", - "@babel/plugin-transform-property-literals": "^7.24.7", - "@babel/plugin-transform-regenerator": "^7.24.7", - "@babel/plugin-transform-reserved-words": "^7.24.7", - "@babel/plugin-transform-shorthand-properties": "^7.24.7", - "@babel/plugin-transform-spread": "^7.24.7", - "@babel/plugin-transform-sticky-regex": "^7.24.7", - "@babel/plugin-transform-template-literals": "^7.24.7", - "@babel/plugin-transform-typeof-symbol": "^7.24.7", - "@babel/plugin-transform-unicode-escapes": "^7.24.7", - "@babel/plugin-transform-unicode-property-regex": "^7.24.7", - "@babel/plugin-transform-unicode-regex": "^7.24.7", - "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", + "@babel/plugin-transform-arrow-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.25.9", + "@babel/plugin-transform-async-to-generator": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.25.9", + "@babel/plugin-transform-block-scoping": "^7.25.9", + "@babel/plugin-transform-class-properties": "^7.25.9", + "@babel/plugin-transform-class-static-block": "^7.26.0", + "@babel/plugin-transform-classes": "^7.25.9", + "@babel/plugin-transform-computed-properties": "^7.25.9", + "@babel/plugin-transform-destructuring": "^7.25.9", + "@babel/plugin-transform-dotall-regex": "^7.25.9", + "@babel/plugin-transform-duplicate-keys": "^7.25.9", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-dynamic-import": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.25.9", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.25.9", + "@babel/plugin-transform-function-name": "^7.25.9", + "@babel/plugin-transform-json-strings": "^7.25.9", + "@babel/plugin-transform-literals": "^7.25.9", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", + "@babel/plugin-transform-member-expression-literals": "^7.25.9", + "@babel/plugin-transform-modules-amd": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-modules-systemjs": "^7.25.9", + "@babel/plugin-transform-modules-umd": "^7.25.9", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-new-target": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", + "@babel/plugin-transform-numeric-separator": "^7.25.9", + "@babel/plugin-transform-object-rest-spread": "^7.25.9", + "@babel/plugin-transform-object-super": "^7.25.9", + "@babel/plugin-transform-optional-catch-binding": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9", + "@babel/plugin-transform-private-methods": "^7.25.9", + "@babel/plugin-transform-private-property-in-object": "^7.25.9", + "@babel/plugin-transform-property-literals": "^7.25.9", + "@babel/plugin-transform-regenerator": "^7.25.9", + "@babel/plugin-transform-regexp-modifiers": "^7.26.0", + "@babel/plugin-transform-reserved-words": "^7.25.9", + "@babel/plugin-transform-shorthand-properties": "^7.25.9", + "@babel/plugin-transform-spread": "^7.25.9", + "@babel/plugin-transform-sticky-regex": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.25.9", + "@babel/plugin-transform-typeof-symbol": "^7.25.9", + "@babel/plugin-transform-unicode-escapes": "^7.25.9", + "@babel/plugin-transform-unicode-property-regex": "^7.25.9", + "@babel/plugin-transform-unicode-regex": "^7.25.9", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-corejs3": "^0.10.6", "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.31.0", + "core-js-compat": "^3.38.1", "semver": "^6.3.1" } }, @@ -11161,9 +10103,9 @@ } }, "@babel/register": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.24.6.tgz", - "integrity": "sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.25.9.tgz", + "integrity": "sha512-8D43jXtGsYmEeDvm4MWHYUpWf8iiXgWYx3fW7E7Wb7Oe6FWqJPl5K6TuFW0dOwNZzEE5rjlaSJYH9JjrUKJszA==", "dev": true, "requires": { "clone-deep": "^4.0.1", @@ -11173,59 +10115,49 @@ "source-map-support": "^0.5.16" } }, - "@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true - }, "@babel/runtime": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", - "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", "dev": true, "requires": { "regenerator-runtime": "^0.14.0" } }, "@babel/template": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", - "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", "dev": true, "requires": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" } }, "@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.5.tgz", + "integrity": "sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.5", + "@babel/parser": "^7.26.5", + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.5", "debug": "^4.3.1", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.5.tgz", + "integrity": "sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" } }, "@gulp-sourcemaps/identity-map": { @@ -11310,9 +10242,9 @@ }, "dependencies": { "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true }, "ansi-styles": { @@ -11465,6 +10397,32 @@ "lodash": "^4.17.21" } }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, "@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -11522,12 +10480,12 @@ "dev": true }, "@types/node": { - "version": "20.14.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", - "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", + "version": "22.10.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.6.tgz", + "integrity": "sha512-qNiuwC4ZDAUNcY47xgaSuS92cjf8JbSUoaKS77bmLG1rU7MlATVSiw/IlrjtIyyskXBZ8KkNfjK/P5na7rgXbQ==", "dev": true, "requires": { - "undici-types": "~5.26.4" + "undici-types": "~6.20.0" } }, "accepts": { @@ -11583,32 +10541,6 @@ "ansi-wrap": "0.1.0" } }, - "ansi-escape-sequences": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-4.1.0.tgz", - "integrity": "sha512-dzW9kHxH011uBsidTXd14JXgzye/YLb2LzeKZ4bsgl/Knwx8AtbSFkkGxagdNOoh0DlqHCmfiEjWKBaqjOanVw==", - "dev": true, - "requires": { - "array-back": "^3.0.1" - }, - "dependencies": { - "array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true - } - } - }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, "ansi-red": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", @@ -11625,12 +10557,12 @@ "dev": true }, "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" } }, "ansi-wrap": { @@ -11703,12 +10635,6 @@ "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", "dev": true }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true - }, "array-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", @@ -11721,12 +10647,6 @@ "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", "dev": true }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", @@ -11798,13 +10718,13 @@ } }, "babel-plugin-polyfill-corejs3": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", - "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.6.1", - "core-js-compat": "^3.36.1" + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" } }, "babel-plugin-polyfill-regenerator": { @@ -11858,12 +10778,6 @@ "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", "dev": true }, - "beeper": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", - "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", - "dev": true - }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -11926,96 +10840,45 @@ "dev": true }, "browser-sync": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-3.0.2.tgz", - "integrity": "sha512-PC9c7aWJFVR4IFySrJxOqLwB9ENn3/TaXCXtAa0SzLwocLN3qMjN+IatbjvtCX92BjNXsY6YWg9Eb7F3Wy255g==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-3.0.3.tgz", + "integrity": "sha512-91hoBHKk1C4pGeD+oE9Ld222k2GNQEAsI5AElqR8iLLWNrmZR2LPP8B0h8dpld9u7kro5IEUB3pUb0DJ3n1cRQ==", "dev": true, "requires": { - "browser-sync-client": "^3.0.2", - "browser-sync-ui": "^3.0.2", - "bs-recipes": "1.3.4", - "chalk": "4.1.2", - "chokidar": "^3.5.1", - "connect": "3.6.6", - "connect-history-api-fallback": "^1", - "dev-ip": "^1.0.1", - "easy-extender": "^2.3.4", - "eazy-logger": "^4.0.1", - "etag": "^1.8.1", - "fresh": "^0.5.2", - "fs-extra": "3.0.1", - "http-proxy": "^1.18.1", - "immutable": "^3", - "micromatch": "^4.0.2", - "opn": "5.3.0", - "portscanner": "2.2.0", - "raw-body": "^2.3.2", - "resp-modifier": "6.0.2", - "rx": "4.1.0", - "send": "0.16.2", - "serve-index": "1.9.1", - "serve-static": "1.13.2", - "server-destroy": "1.0.1", - "socket.io": "^4.4.1", - "ua-parser-js": "^1.0.33", - "yargs": "^17.3.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "browser-sync-client": "^3.0.3", + "browser-sync-ui": "^3.0.3", + "bs-recipes": "1.3.4", + "chalk": "4.1.2", + "chokidar": "^3.5.1", + "connect": "3.6.6", + "connect-history-api-fallback": "^1", + "dev-ip": "^1.0.1", + "easy-extender": "^2.3.4", + "eazy-logger": "^4.0.1", + "etag": "^1.8.1", + "fresh": "^0.5.2", + "fs-extra": "3.0.1", + "http-proxy": "^1.18.1", + "immutable": "^3", + "micromatch": "^4.0.8", + "opn": "5.3.0", + "portscanner": "2.2.0", + "raw-body": "^2.3.2", + "resp-modifier": "6.0.2", + "rx": "4.1.0", + "send": "^0.19.0", + "serve-index": "^1.9.1", + "serve-static": "^1.16.2", + "server-destroy": "1.0.1", + "socket.io": "^4.4.1", + "ua-parser-js": "^1.0.33", + "yargs": "^17.3.1" } }, "browser-sync-client": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-3.0.2.tgz", - "integrity": "sha512-tBWdfn9L0wd2Pjuz/NWHtNEKthVb1Y67vg8/qyGNtCqetNz5lkDkFnrsx5UhPNPYUO8vci50IWC/BhYaQskDiQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-3.0.3.tgz", + "integrity": "sha512-TOEXaMgYNjBYIcmX5zDlOdjEqCeCN/d7opf/fuyUD/hhGVCfP54iQIDhENCi012AqzYZm3BvuFl57vbwSTwkSQ==", "dev": true, "requires": { "etag": "1.8.1", @@ -12024,9 +10887,9 @@ } }, "browser-sync-ui": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-3.0.2.tgz", - "integrity": "sha512-V3FwWAI+abVbFLTyJjXJlCMBwjc3GXf/BPGfwO2fMFACWbIGW9/4SrBOFYEOOtqzCjQE0Di+U3VIb7eES4omNA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-3.0.3.tgz", + "integrity": "sha512-FcGWo5lP5VodPY6O/f4pXQy5FFh4JK0f2/fTBsp0Lx1NtyBWs/IfPPJbW8m1ujTW/2r07oUXKTF2LYZlCZktjw==", "dev": true, "requires": { "async-each-series": "0.1.1", @@ -12036,69 +10899,18 @@ "server-destroy": "1.0.1", "socket.io-client": "^4.4.1", "stream-throttle": "^0.1.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } } }, "browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" } }, "bs-recipes": { @@ -12130,22 +10942,12 @@ "dev": true }, "cache-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cache-point/-/cache-point-2.0.0.tgz", - "integrity": "sha512-4gkeHlFpSKgm3vm2gJN5sPqfmijYRFYCQ6tv5cLw0xVmT6r1z1vd4FNnpuOREco3cBs1G709sZ72LdgddKvL5w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cache-point/-/cache-point-3.0.1.tgz", + "integrity": "sha512-itTIMLEKbh6Dw5DruXbxAgcyLnh/oPGVLBfTPqBOftASxHe8bAeXy7JkO4F0LvHqht7XqP5O/09h5UcHS2w0FA==", "dev": true, "requires": { - "array-back": "^4.0.1", - "fs-then-native": "^2.0.0", - "mkdirp2": "^1.0.4" - }, - "dependencies": { - "array-back": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", - "dev": true - } + "array-back": "^6.2.2" } }, "caching-transform": { @@ -12178,9 +10980,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001591", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001591.tgz", - "integrity": "sha512-PCzRMei/vXjJyL5mJtzNiUCKP59dm8Apqc3PH8gJkMnMXZGox93RbE76jHsmLwmIo6/3nsYIpJtx0O7u5PqFuQ==", + "version": "1.0.30001692", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz", + "integrity": "sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==", "dev": true }, "catharsis": { @@ -12193,14 +10995,22 @@ } }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chalk-template": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", + "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "chalk": "^4.1.2" } }, "chokidar": { @@ -12289,29 +11099,19 @@ "urlgrey": "1.0.0" } }, - "collect-all": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/collect-all/-/collect-all-1.0.4.tgz", - "integrity": "sha512-RKZhRwJtJEP5FWul+gkSMEnaK6H3AGPTTWOiRimCcs+rc/OmQE3Yhy1Q7A7KsdkG3ZXVdZq68Y6ONSdvkeEcKA==", - "dev": true, - "requires": { - "stream-connect": "^1.0.2", - "stream-via": "^1.0.4" - } - }, "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "color-support": { @@ -12321,76 +11121,27 @@ "dev": true }, "command-line-args": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.0.tgz", - "integrity": "sha512-4zqtU1hYsSJzcJBOcNZIbW5Fbk9BkjCp1pZVhQKoRaWL5J7N4XphDLwo8aWwdQpTugxwu+jf9u2ZhkXiqp5Z6A==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-6.0.1.tgz", + "integrity": "sha512-Jr3eByUjqyK0qd8W0SGFW1nZwqCaNCtbXjRo2cRJC1OYxWl3MZ5t1US3jq+cO4sPavqgw4l9BMGX0CBe+trepg==", "dev": true, "requires": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", + "array-back": "^6.2.2", + "find-replace": "^5.0.2", "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - }, - "dependencies": { - "array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true - }, - "typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "dev": true - } - } - }, - "command-line-tool": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/command-line-tool/-/command-line-tool-0.8.0.tgz", - "integrity": "sha512-Xw18HVx/QzQV3Sc5k1vy3kgtOeGmsKIqwtFFoyjI4bbcpSgnw2CWVULvtakyw4s6fhyAdI6soQQhXc2OzJy62g==", - "dev": true, - "requires": { - "ansi-escape-sequences": "^4.0.0", - "array-back": "^2.0.0", - "command-line-args": "^5.0.0", - "command-line-usage": "^4.1.0", - "typical": "^2.6.1" - }, - "dependencies": { - "array-back": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", - "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", - "dev": true, - "requires": { - "typical": "^2.6.1" - } - } + "typical": "^7.2.0" } }, "command-line-usage": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-4.1.0.tgz", - "integrity": "sha512-MxS8Ad995KpdAC0Jopo/ovGIroV/m0KHwzKfXxKag6FHOkGsH8/lv5yjgablcRxCJJC0oJeUMuO/gmaq+Wq46g==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.3.tgz", + "integrity": "sha512-PqMLy5+YGwhMh1wS04mVG44oqDsgyLRSKJBdOo1bnYhMKBW65gZF1dRp2OZRhiTjgUHljy99qkO7bsctLaw35Q==", "dev": true, "requires": { - "ansi-escape-sequences": "^4.0.0", - "array-back": "^2.0.0", - "table-layout": "^0.4.2", - "typical": "^2.6.1" - }, - "dependencies": { - "array-back": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", - "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", - "dev": true, - "requires": { - "typical": "^2.6.1" - } - } + "array-back": "^6.2.2", + "chalk-template": "^0.4.0", + "table-layout": "^4.1.0", + "typical": "^7.1.1" } }, "commander": { @@ -12400,9 +11151,9 @@ "dev": true }, "common-sequence": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/common-sequence/-/common-sequence-2.0.2.tgz", - "integrity": "sha512-jAg09gkdkrDO9EWTdXfv80WWH3yeZl5oT69fGfedBNS9pXUKYInVJ1bJ+/ht2+Moeei48TmSbQDYMc8EOx9G0g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-sequence/-/common-sequence-3.0.0.tgz", + "integrity": "sha512-g/CgSYk93y+a1IKm50tKl7kaT/OjjTYVQlEbUlt/49ZLV1mcKpUU7iyDiqTAeLdb4QDtQfq3ako8y8v//fzrWQ==", "dev": true }, "commondir": { @@ -12496,9 +11247,9 @@ } }, "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true }, "copy-props": { @@ -12520,12 +11271,12 @@ } }, "core-js-compat": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz", - "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==", + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.40.0.tgz", + "integrity": "sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==", "dev": true, "requires": { - "browserslist": "^4.23.0" + "browserslist": "^4.24.3" } }, "core-util-is": { @@ -12545,9 +11296,9 @@ } }, "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "requires": { "path-key": "^3.1.0", @@ -12584,6 +11335,12 @@ } } }, + "current-module-paths": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/current-module-paths/-/current-module-paths-1.1.2.tgz", + "integrity": "sha512-H4s4arcLx/ugbu1XkkgSvcUZax0L6tXUqnppGniQb8l5VjUKGHoayXE5RiriiPhYDd+kjZnaok1Uig13PKtKYQ==", + "dev": true + }, "d": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", @@ -12594,12 +11351,6 @@ "type": "^1.0.1" } }, - "dateformat": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", - "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", - "dev": true - }, "debug": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", @@ -12643,12 +11394,6 @@ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", "dev": true }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, "default-require-extensions": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", @@ -12665,9 +11410,9 @@ "dev": true }, "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true }, "detect-file": { @@ -12695,58 +11440,18 @@ "dev": true }, "dmd": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/dmd/-/dmd-6.2.0.tgz", - "integrity": "sha512-uXWxLF1H7TkUAuoHK59/h/ts5cKavm2LnhrIgJWisip4BVzPoXavlwyoprFFn2CzcahKYgvkfaebS6oxzgflkg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/dmd/-/dmd-7.1.1.tgz", + "integrity": "sha512-Ap2HP6iuOek7eShReDLr9jluNJm9RMZESlt29H/Xs1qrVMkcS9X6m5h1mBC56WMxNiSo0wvjGICmZlYUSFjwZQ==", "dev": true, "requires": { "array-back": "^6.2.2", - "cache-point": "^2.0.0", - "common-sequence": "^2.0.2", - "file-set": "^4.0.2", - "handlebars": "^4.7.7", - "marked": "^4.2.3", - "object-get": "^2.1.1", - "reduce-flatten": "^3.0.1", - "reduce-unique": "^2.0.1", - "reduce-without": "^1.0.1", - "test-value": "^3.0.0", - "walk-back": "^5.1.0" - } - }, - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", - "dev": true, - "requires": { - "readable-stream": "~1.1.9" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } + "cache-point": "^3.0.0", + "common-sequence": "^3.0.0", + "file-set": "^5.2.2", + "handlebars": "^4.7.8", + "marked": "^4.3.0", + "walk-back": "^5.1.1" } }, "duplexify": { @@ -12814,57 +11519,6 @@ "dev": true, "requires": { "chalk": "4.1.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } } }, "ee-first": { @@ -12874,9 +11528,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.689", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.689.tgz", - "integrity": "sha512-GatzRKnGPS1go29ep25reM94xxd1Wj8ritU0yRhCJ/tr1Bg8gKnm6R9O/yPOhGQBoLMZ9ezfrpghNaTw97C/PQ==", + "version": "1.5.82", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.82.tgz", + "integrity": "sha512-Zq16uk1hfQhyGx5GpwPAYDwddJuSGhtRhgOA2mCxANYaDT79nAeGnaXogMGng4KqLaJUVnOnuL0+TDop9nLOiA==", "dev": true }, "emoji-regex": { @@ -12901,9 +11555,9 @@ } }, "engine.io": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz", - "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.2.tgz", + "integrity": "sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==", "dev": true, "requires": { "@types/cookie": "^0.4.1", @@ -12911,42 +11565,24 @@ "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "2.0.0", - "cookie": "~0.4.1", + "cookie": "~0.7.2", "cors": "~2.8.5", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", "ws": "~8.17.1" - }, - "dependencies": { - "ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "dev": true, - "requires": {} - } } }, "engine.io-client": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz", - "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.2.tgz", + "integrity": "sha512-TAr+NKeoVTjEVW8P3iHguO1LO6RlUz9O5Y8o7EY0fU+gY1NYqas7NN3slpFtbXEsLMHk0h90fJMfKjRkQ0qUIw==", "dev": true, "requires": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", "ws": "~8.17.1", - "xmlhttprequest-ssl": "~2.0.0" - }, - "dependencies": { - "ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "dev": true, - "requires": {} - } + "xmlhttprequest-ssl": "~2.1.1" } }, "engine.io-parser": { @@ -12962,22 +11598,15 @@ "dev": true }, "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", "dev": true, "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - }, - "dependencies": { - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - } + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" } }, "es6-error": { @@ -13020,9 +11649,9 @@ } }, "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true }, "escape-html": { @@ -13031,11 +11660,25 @@ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", "dev": true }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dev": true, + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "dependencies": { + "type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", + "dev": true + } + } }, "esprima": { "version": "4.0.1", @@ -13052,7 +11695,7 @@ "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true }, "event-emitter": { @@ -13119,24 +11762,25 @@ "is-extendable": "^1.0.1" } }, - "fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "dev": true, - "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - } - }, "fast-fifo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", "dev": true }, + "fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + } + }, "fast-levenshtein": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz", @@ -13171,21 +11815,13 @@ } }, "file-set": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/file-set/-/file-set-4.0.2.tgz", - "integrity": "sha512-fuxEgzk4L8waGXaAkd8cMr73Pm0FxOVkn8hztzUW7BAHhOGH90viQNXbiOsnecCWmfInqU6YmAMwxRMdKETceQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/file-set/-/file-set-5.2.2.tgz", + "integrity": "sha512-/KgJI1V/QaDK4enOk/E2xMFk1cTWJghEr7UmWiRZfZ6upt6gQCfMn4jJ7aOm64OKurj4TaVnSSgSDqv5ZKYA3A==", "dev": true, "requires": { - "array-back": "^5.0.0", - "glob": "^7.1.6" - }, - "dependencies": { - "array-back": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz", - "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==", - "dev": true - } + "array-back": "^6.2.2", + "fast-glob": "^3.3.2" } }, "fill-range": { @@ -13241,21 +11877,11 @@ } }, "find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-5.0.2.tgz", + "integrity": "sha512-Y45BAiE3mz2QsrN2fb5QEtO4qb44NcS7en/0y9PEVsg351HsLeVclP8QPMH79Le9sH3rs5RSwJu99W0WPZO43Q==", "dev": true, - "requires": { - "array-back": "^3.0.1" - }, - "dependencies": { - "array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true - } - } + "requires": {} }, "find-up": { "version": "5.0.0", @@ -13352,7 +11978,7 @@ "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true }, "fromentries": { @@ -13382,12 +12008,6 @@ "streamx": "^2.12.0" } }, - "fs-then-native": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fs-then-native/-/fs-then-native-2.0.0.tgz", - "integrity": "sha512-X712jAOaWXkemQCAmWeg5rOT2i+KOpWz1Z/txk/cW0qlOu2oQ9H61vc5w3X/iyuUEfq/OyaFJ78/cZAQD1/bgA==", - "dev": true - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -13585,25 +12205,6 @@ "yargs": "^16.2.0" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -13615,21 +12216,6 @@ "wrap-ansi": "^7.0.0" } }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "glogg": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/glogg/-/glogg-2.2.0.tgz", @@ -13646,13 +12232,7 @@ "dev": true, "requires": { "glogg": "^2.2.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + } }, "sparkles": { "version": "2.1.0", @@ -13660,15 +12240,6 @@ "integrity": "sha512-r7iW1bDw8R/cFifrD3JnQJX0K1jqT0kprL48BiBpLZLJPmAm34zsVBsK5lc7HirZYZqMW65dOXZgbAGt/I6frg==", "dev": true }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, "yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -13730,16 +12301,6 @@ } } }, - "gulp-js-import": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/gulp-js-import/-/gulp-js-import-1.0.6.tgz", - "integrity": "sha512-sA0mNBPM3CmPOH5QEoSIitoMyyI8kwqol4dU75fsZ10ay3PA8PEzqsLI+Msgrc6LHN+8khD7dt5N8OW/q/+dTw==", - "dev": true, - "requires": { - "gulp-util": "^3.0.7", - "through2": "^2.0.1" - } - }, "gulp-load-plugins": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/gulp-load-plugins/-/gulp-load-plugins-2.0.8.tgz", @@ -13919,109 +12480,6 @@ "vinyl-sourcemaps-apply": "^0.2.0" } }, - "gulp-util": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", - "integrity": "sha512-q5oWPc12lwSFS9h/4VIjG+1NuNDlJ48ywV2JKItY4Ycc/n1fXJeYPVQsfu5ZrhQi7FGSDBalwUCLar/GyHXKGw==", - "dev": true, - "requires": { - "array-differ": "^1.0.0", - "array-uniq": "^1.0.2", - "beeper": "^1.0.0", - "chalk": "^1.0.0", - "dateformat": "^2.0.0", - "fancy-log": "^1.1.0", - "gulplog": "^1.0.0", - "has-gulplog": "^0.1.0", - "lodash._reescape": "^3.0.0", - "lodash._reevaluate": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.template": "^3.0.0", - "minimist": "^1.1.0", - "multipipe": "^0.1.2", - "object-assign": "^3.0.0", - "replace-ext": "0.0.1", - "through2": "^2.0.0", - "vinyl": "^0.5.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "dev": true - }, - "object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", - "dev": true - }, - "replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "vinyl": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", - "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", - "dev": true, - "requires": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", - "replace-ext": "0.0.1" - } - } - } - }, "gulplog": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", @@ -14032,13 +12490,13 @@ } }, "handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dev": true, "requires": { "minimist": "^1.2.5", - "neo-async": "^2.6.0", + "neo-async": "^2.6.2", "source-map": "^0.6.1", "uglify-js": "^3.1.4", "wordwrap": "^1.0.0" @@ -14061,27 +12519,10 @@ "function-bind": "^1.1.1" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } - } - }, "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "has-gulplog": { @@ -14501,12 +12942,6 @@ "supports-color": "^7.1.0" }, "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -14515,15 +12950,6 @@ "requires": { "semver": "^6.0.0" } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } } } }, @@ -14557,9 +12983,9 @@ } }, "jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, "requires": { "@isaacs/cliui": "^8.0.2", @@ -14592,9 +13018,9 @@ } }, "jsdoc": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.3.tgz", - "integrity": "sha512-Nu7Sf35kXJ1MWDZIMAuATRQTg1iIPdzh7tqJ6jjvaU/GfDf+qi5UV8zJR3Mo+/pYFvm8mzay4+6O5EWigaQBQw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.4.tgz", + "integrity": "sha512-zeFezwyXeG4syyYHbvh1A967IAqq/67yXtXvuL5wnqCkFZe8I0vKfm+EO+YEvLguo6w9CDUbrAXVtJSHh2E8rw==", "dev": true, "requires": { "@babel/parser": "^7.20.15", @@ -14623,54 +13049,52 @@ } }, "jsdoc-api": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/jsdoc-api/-/jsdoc-api-8.0.0.tgz", - "integrity": "sha512-Rnhor0suB1Ds1abjmFkFfKeD+kSMRN9oHMTMZoJVUrmtCGDwXty+sWMA9sa4xbe4UyxuPjhC7tavZ40mDKK6QQ==", + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/jsdoc-api/-/jsdoc-api-9.3.4.tgz", + "integrity": "sha512-di8lggLACEttpyAZ6WjKKafUP4wC4prAGjt40nMl7quDpp2nD7GmLt6/WxhRu9Q6IYoAAySsNeidBXYVAMwlqg==", "dev": true, "requires": { "array-back": "^6.2.2", - "cache-point": "^2.0.0", - "collect-all": "^1.0.4", - "file-set": "^4.0.2", - "fs-then-native": "^2.0.0", - "jsdoc": "^4.0.0", + "cache-point": "^3.0.0", + "current-module-paths": "^1.1.2", + "file-set": "^5.2.2", + "jsdoc": "^4.0.4", "object-to-spawn-args": "^2.0.1", - "temp-path": "^1.0.0", - "walk-back": "^5.1.0" + "walk-back": "^5.1.1" } }, "jsdoc-parse": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsdoc-parse/-/jsdoc-parse-6.2.1.tgz", - "integrity": "sha512-9viGRUUtWOk/G4V0+nQ6rfLucz5plxh5I74WbNSNm9h9NWugCDVX4jbG8hZP9QqKGpdTPDE+qJXzaYNos3wqTA==", + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/jsdoc-parse/-/jsdoc-parse-6.2.4.tgz", + "integrity": "sha512-MQA+lCe3ioZd0uGbyB3nDCDZcKgKC7m/Ivt0LgKZdUoOlMJxUWJQ3WI6GeyHp9ouznKaCjlp7CU9sw5k46yZTw==", "dev": true, "requires": { "array-back": "^6.2.2", + "find-replace": "^5.0.1", "lodash.omit": "^4.5.0", - "reduce-extract": "^1.0.0", - "sort-array": "^4.1.5", - "test-value": "^3.0.0" + "sort-array": "^5.0.0" } }, "jsdoc-to-markdown": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/jsdoc-to-markdown/-/jsdoc-to-markdown-8.0.1.tgz", - "integrity": "sha512-qJfNJhkq2C26UYoOdj8L1yheTJlk1veCsxwRejRmj07XZKCn7oSkuPErx6+JoNi8afCaUKdIM5oUu0uF2/T8iw==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/jsdoc-to-markdown/-/jsdoc-to-markdown-9.1.1.tgz", + "integrity": "sha512-QqYVSo58iHXpD5Jwi1u4AFeuMcQp4jfk7SmWzvXKc3frM9Kop17/OHudmi0phzkT/K137Rlroc9Q0y+95XpUsw==", "dev": true, "requires": { "array-back": "^6.2.2", - "command-line-tool": "^0.8.0", + "command-line-args": "^6.0.1", + "command-line-usage": "^7.0.3", "config-master": "^3.1.0", - "dmd": "^6.2.0", - "jsdoc-api": "^8.0.0", - "jsdoc-parse": "^6.2.1", - "walk-back": "^5.1.0" + "dmd": "^7.1.1", + "jsdoc-api": "^9.3.4", + "jsdoc-parse": "^6.2.4", + "walk-back": "^5.1.1" } }, "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true }, "json5": { @@ -14768,64 +13192,10 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._basetostring": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", - "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", - "dev": true - }, - "lodash._basevalues": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", - "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "lodash._reescape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", - "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", - "dev": true - }, - "lodash._reevaluate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", - "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", - "dev": true - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true - }, - "lodash._root": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", - "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", - "dev": true - }, "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", "dev": true }, "lodash.debounce": { @@ -14834,95 +13204,24 @@ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, - "lodash.escape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", - "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", - "dev": true, - "requires": { - "lodash._root": "^3.0.0" - } - }, "lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", "dev": true }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, "lodash.isfinite": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", "dev": true }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true, - "requires": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, "lodash.omit": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==", "dev": true }, - "lodash.padend": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", - "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=", - "dev": true - }, - "lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", - "dev": true - }, - "lodash.template": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", - "integrity": "sha512-0B4Y53I0OgHUJkt+7RmlDFWKjVAI/YUpWNiL9GQz5ORDr4ttgfQGo+phBWKFLJbBdtOwgMuUkdOHOnPg45jKmQ==", - "dev": true, - "requires": { - "lodash._basecopy": "^3.0.0", - "lodash._basetostring": "^3.0.0", - "lodash._basevalues": "^3.0.0", - "lodash._isiterateecall": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0", - "lodash.keys": "^3.0.0", - "lodash.restparam": "^3.0.0", - "lodash.templatesettings": "^3.0.0" - } - }, - "lodash.templatesettings": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", - "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0" - } - }, "log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -14931,57 +13230,6 @@ "requires": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } } }, "lru-cache": { @@ -15013,9 +13261,9 @@ }, "dependencies": { "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true } } @@ -15104,20 +13352,26 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.3", + "picomatch": "^2.3.1" } }, "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true }, "mime-db": { @@ -15151,9 +13405,9 @@ "dev": true }, "minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true }, "mitt": { @@ -15168,16 +13422,10 @@ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, - "mkdirp2": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/mkdirp2/-/mkdirp2-1.0.5.tgz", - "integrity": "sha512-xOE9xbICroUDmG1ye2h4bZ8WBie9EGmACaco8K8cx6RlkJJrxGIqjGqztAI+NMhexXBcdGbSEzI6N3EJPevxZw==", - "dev": true - }, "mocha": { - "version": "10.7.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.7.3.tgz", - "integrity": "sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.0.1.tgz", + "integrity": "sha512-+3GkODfsDG71KSCQhc4IekSW+ItCK/kiez1Z28ksWvYhKXV/syxMlerR/sC7whDp7IyreZ4YxceMLdTs5hQE8A==", "dev": true, "requires": { "ansi-colors": "^4.1.3", @@ -15187,7 +13435,7 @@ "diff": "^5.2.0", "escape-string-regexp": "^4.0.0", "find-up": "^5.0.0", - "glob": "^8.1.0", + "glob": "^10.4.5", "he": "^1.2.0", "js-yaml": "^4.1.0", "log-symbols": "^4.1.0", @@ -15240,24 +13488,40 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" } }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "dependencies": { + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } }, "js-yaml": { "version": "4.1.0", @@ -15283,6 +13547,12 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -15315,15 +13585,6 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "multipipe": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", - "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", - "dev": true, - "requires": { - "duplexer2": "0.0.2" - } - }, "mute-stdout": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-2.0.0.tgz", @@ -15367,9 +13628,9 @@ } }, "node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "dev": true }, "normalize-path": { @@ -15388,9 +13649,9 @@ } }, "nyc": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-17.0.0.tgz", - "integrity": "sha512-ISp44nqNCaPugLLGGfknzQwSwt10SSS5IMoPR7GLoMAyS18Iw5js8U7ga2VF9lYuMZ42gOHr3UddZw4WZltxKg==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-17.1.0.tgz", + "integrity": "sha512-U42vQ4czpKa0QdI1hu950XuNhYqgoM+ZF1HT+VuUHL9hPfDPVvNQyltmMqdE9bUHMVa+8yNbc3QKTj8zQhlVxQ==", "dev": true, "requires": { "@istanbuljs/load-nyc-config": "^1.0.0", @@ -15400,7 +13661,7 @@ "decamelize": "^1.2.0", "find-cache-dir": "^3.2.0", "find-up": "^4.1.0", - "foreground-child": "^2.0.0", + "foreground-child": "^3.3.0", "get-package-type": "^0.1.0", "glob": "^7.1.6", "istanbul-lib-coverage": "^3.0.0", @@ -15422,15 +13683,6 @@ "yargs": "^15.0.2" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, "cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", @@ -15442,21 +13694,6 @@ "wrap-ansi": "^6.2.0" } }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", @@ -15478,6 +13715,24 @@ "path-exists": "^4.0.0" } }, + "foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "dependencies": { + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + } + } + }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -15586,12 +13841,6 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, - "object-get": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object-get/-/object-get-2.1.1.tgz", - "integrity": "sha512-7n4IpLMzGGcLEMiQKsNR7vCe+N5E9LORFrtNUVy4sO3dj9a3HedZCxEL2T7QuLhcHN1NBuBsMOKaOsAYI9IIvg==", - "dev": true - }, "object-to-spawn-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object-to-spawn-args/-/object-to-spawn-args-2.0.1.tgz", @@ -15691,6 +13940,12 @@ "release-zalgo": "^1.0.0" } }, + "package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true + }, "parse-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", @@ -15702,12 +13957,6 @@ "path-root": "^0.1.1" } }, - "parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true - }, "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", @@ -15760,33 +14009,33 @@ "dev": true }, "path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, "requires": { - "lru-cache": "^9.1.1 || ^10.0.0", + "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "dependencies": { "lru-cache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true } } }, "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true }, "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, "pify": { @@ -15902,9 +14151,9 @@ } }, "prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", "dev": true }, "process-nextick-args": { @@ -15934,6 +14183,12 @@ "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", "dev": true }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, "queue-tick": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", @@ -15988,88 +14243,16 @@ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "requires": { - "picomatch": "^2.2.1" - } - }, - "rechoir": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", - "dev": true, - "requires": { - "resolve": "^1.20.0" - } - }, - "reduce-extract": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/reduce-extract/-/reduce-extract-1.0.0.tgz", - "integrity": "sha512-QF8vjWx3wnRSL5uFMyCjDeDc5EBMiryoT9tz94VvgjKfzecHAVnqmXAwQDcr7X4JmLc2cjkjFGCVzhMqDjgR9g==", - "dev": true, - "requires": { - "test-value": "^1.0.1" - }, - "dependencies": { - "array-back": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", - "integrity": "sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw==", - "dev": true, - "requires": { - "typical": "^2.6.0" - } - }, - "test-value": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/test-value/-/test-value-1.1.0.tgz", - "integrity": "sha512-wrsbRo7qP+2Je8x8DsK8ovCGyxe3sYfQwOraIY/09A2gFXU9DYKiTF14W4ki/01AEh56kMzAmlj9CaHGDDUBJA==", - "dev": true, - "requires": { - "array-back": "^1.0.2", - "typical": "^2.4.2" - } - } + "picomatch": "^2.2.1" } }, - "reduce-flatten": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-3.0.1.tgz", - "integrity": "sha512-bYo+97BmUUOzg09XwfkwALt4PQH1M5L0wzKerBt6WLm3Fhdd43mMS89HiT1B9pJIqko/6lWx3OnV4J9f2Kqp5Q==", - "dev": true - }, - "reduce-unique": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/reduce-unique/-/reduce-unique-2.0.1.tgz", - "integrity": "sha512-x4jH/8L1eyZGR785WY+ePtyMNhycl1N2XOLxhCbzZFaqF4AXjLzqSxa2UHgJ2ZVR/HHyPOvl1L7xRnW8ye5MdA==", - "dev": true - }, - "reduce-without": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/reduce-without/-/reduce-without-1.0.1.tgz", - "integrity": "sha512-zQv5y/cf85sxvdrKPlfcRzlDn/OqKFThNimYmsS3flmkioKvkUGn2Qg9cJVoQiEvdxFGLE0MQER/9fZ9sUqdxg==", + "rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, "requires": { - "test-value": "^2.0.0" - }, - "dependencies": { - "array-back": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", - "integrity": "sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw==", - "dev": true, - "requires": { - "typical": "^2.6.0" - } - }, - "test-value": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz", - "integrity": "sha512-+1epbAxtKeXttkGFMTX9H42oqzOTufR1ceCF+GYA5aOmvaPq9wd4PUS8329fn2RRLGNeUkgRLnVpycjx8DsO2w==", - "dev": true, - "requires": { - "array-back": "^1.0.3", - "typical": "^2.6.0" - } - } + "resolve": "^1.20.0" } }, "regenerate": { @@ -16079,9 +14262,9 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", "dev": true, "requires": { "regenerate": "^1.4.2" @@ -16103,32 +14286,38 @@ } }, "regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", "dev": true, "requires": { - "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" } }, + "regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true + }, "regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", "dev": true, "requires": { - "jsesc": "~0.5.0" + "jsesc": "~3.0.2" }, "dependencies": { "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "dev": true } } @@ -16265,12 +14454,13 @@ } }, "rimraf": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.7.tgz", - "integrity": "sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", + "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", "dev": true, "requires": { - "glob": "^10.3.7" + "glob": "^11.0.0", + "package-json-from-dist": "^1.0.0" }, "dependencies": { "brace-expansion": { @@ -16283,9 +14473,9 @@ } }, "foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dev": true, "requires": { "cross-spawn": "^7.0.0", @@ -16293,27 +14483,53 @@ } }, "glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", + "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", "dev": true, "requires": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + } + }, + "jackspeak": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.2.tgz", + "integrity": "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2" } }, + "lru-cache": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", + "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", + "dev": true + }, "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", "dev": true, "requires": { "brace-expansion": "^2.0.1" } }, + "path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "dev": true, + "requires": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + } + }, "signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", @@ -16322,6 +14538,15 @@ } } }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, "rx": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", @@ -16356,24 +14581,24 @@ } }, "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.1.tgz", + "integrity": "sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==", "dev": true, "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" }, "dependencies": { "debug": { @@ -16383,42 +14608,60 @@ "dev": true, "requires": { "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } } }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true + }, "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" } }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } }, "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true } } @@ -16495,15 +14738,109 @@ } }, "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, "requires": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + } + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } } }, "server-destroy": { @@ -16555,38 +14892,39 @@ "dev": true }, "socket.io": { - "version": "4.7.5", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", - "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", + "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==", "dev": true, "requires": { "accepts": "~1.3.4", "base64id": "~2.0.0", "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.5.2", + "engine.io": "~6.6.0", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" } }, "socket.io-adapter": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", - "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", "dev": true, "requires": { - "ws": "~8.11.0" + "debug": "~4.3.4", + "ws": "~8.17.1" } }, "socket.io-client": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.3.tgz", - "integrity": "sha512-nU+ywttCyBitXIl9Xe0RSEfek4LneYkJxCeNnKCuhwoH4jGXO1ipIUw/VA/+Vvv2G1MTym11fzFC0SxkrcfXDw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz", + "integrity": "sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==", "dev": true, "requires": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", - "engine.io-client": "~6.5.2", + "engine.io-client": "~6.6.1", "socket.io-parser": "~4.2.4" } }, @@ -16601,27 +14939,13 @@ } }, "sort-array": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/sort-array/-/sort-array-4.1.5.tgz", - "integrity": "sha512-Ya4peoS1fgFN42RN1REk2FgdNOeLIEMKFGJvs7VTP3OklF8+kl2SkpVliZ4tk/PurWsrWRsdNdU+tgyOBkB9sA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/sort-array/-/sort-array-5.0.0.tgz", + "integrity": "sha512-Sg9MzajSGprcSrMIxsXyNT0e0JB47RJRfJspC+7co4Z5BdNsNl8FmWI+lXEpyKq+vkMG6pHgAhqyCO+bkDTfFQ==", "dev": true, "requires": { - "array-back": "^5.0.0", - "typical": "^6.0.1" - }, - "dependencies": { - "array-back": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz", - "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==", - "dev": true - }, - "typical": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/typical/-/typical-6.0.1.tgz", - "integrity": "sha512-+g3NEp7fJLe9DPa1TArHm9QAA7YciZmWnfAqEaFrBihQ7epOv9i99rjtgb6Iz0wh3WuQDjsCTDfgRoGnmHN81A==", - "dev": true - } + "array-back": "^6.2.2", + "typical": "^7.1.1" } }, "source-map": { @@ -16709,26 +15033,6 @@ "streamx": "^2.13.2" } }, - "stream-connect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-connect/-/stream-connect-1.0.2.tgz", - "integrity": "sha512-68Kl+79cE0RGKemKkhxTSg8+6AGrqBt+cbZAXevg2iJ6Y3zX4JhA/sZeGzLpxW9cXhmqAcE7KnJCisUmIUfnFQ==", - "dev": true, - "requires": { - "array-back": "^1.0.2" - }, - "dependencies": { - "array-back": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", - "integrity": "sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw==", - "dev": true, - "requires": { - "typical": "^2.6.0" - } - } - } - }, "stream-events": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", @@ -16760,12 +15064,6 @@ "limiter": "^1.0.5" } }, - "stream-via": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/stream-via/-/stream-via-1.0.4.tgz", - "integrity": "sha512-DBp0lSvX5G9KGRDTkR/R+a29H+Wk2xItOF+MpZLLNDWbEV9tGPnqLPxHEYjmiz8xGtJHRIqmI+hCjmNzqoA4nQ==", - "dev": true - }, "streamx": { "version": "2.18.0", "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.18.0.tgz", @@ -16852,12 +15150,12 @@ "dev": true }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } }, "sver": { @@ -16870,27 +15168,13 @@ } }, "table-layout": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-0.4.5.tgz", - "integrity": "sha512-zTvf0mcggrGeTe/2jJ6ECkJHAQPIYEwDoqsiqBjI24mvRmQbInK5jq33fyypaCBxX08hMkfmdOqj6haT33EqWw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-4.1.1.tgz", + "integrity": "sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA==", "dev": true, "requires": { - "array-back": "^2.0.0", - "deep-extend": "~0.6.0", - "lodash.padend": "^4.6.1", - "typical": "^2.6.1", - "wordwrapjs": "^3.0.0" - }, - "dependencies": { - "array-back": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", - "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", - "dev": true, - "requires": { - "typical": "^2.6.1" - } - } + "array-back": "^6.2.2", + "wordwrapjs": "^5.1.0" } }, "teeny-request": { @@ -16923,12 +15207,6 @@ "streamx": "^2.12.5" } }, - "temp-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-path/-/temp-path-1.0.0.tgz", - "integrity": "sha512-TvmyH7kC6ZVTYkqCODjJIbgvu0FKiwQpZ4D1aknE7xpcDf/qEOB8KZEK5ef2pfbVoiBhNWs3yx4y+ESMtNYmlg==", - "dev": true - }, "ternary-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ternary-stream/-/ternary-stream-3.0.0.tgz", @@ -16983,27 +15261,6 @@ "minimatch": "^3.0.4" } }, - "test-value": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/test-value/-/test-value-3.0.0.tgz", - "integrity": "sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ==", - "dev": true, - "requires": { - "array-back": "^2.0.0", - "typical": "^2.6.1" - }, - "dependencies": { - "array-back": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", - "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", - "dev": true, - "requires": { - "typical": "^2.6.1" - } - } - } - }, "text-decoder": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.1.0.tgz", @@ -17023,12 +15280,6 @@ "xtend": "~4.0.1" } }, - "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "dev": true - }, "timers-ext": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", @@ -17039,12 +15290,6 @@ "next-tick": "1" } }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -17097,9 +15342,9 @@ } }, "typical": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz", - "integrity": "sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0=", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-7.3.0.tgz", + "integrity": "sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==", "dev": true }, "ua-parser-js": { @@ -17151,15 +15396,15 @@ "dev": true }, "undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", "dev": true }, "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true }, "unicode-match-property-ecmascript": { @@ -17173,9 +15418,9 @@ } }, "unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", "dev": true }, "unicode-property-aliases-ecmascript": { @@ -17197,13 +15442,13 @@ "dev": true }, "update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", "dev": true, "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" } }, "urlgrey": { @@ -17399,9 +15644,9 @@ } }, "walk-back": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.1.0.tgz", - "integrity": "sha512-Uhxps5yZcVNbLEAnb+xaEEMdgTXl9qAQDzKYejG2AZ7qPwRQ81lozY9ECDbjLPNWm7YsO1IK5rsP1KoQzXAcGA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.1.1.tgz", + "integrity": "sha512-e/FRLDVdZQWFrAzU6Hdvpm7D7m2ina833gIKLptQykRK49mmCYHLHq7UqjPDbxbKLZkTkW1rFqbengdE3sLfdw==", "dev": true }, "webidl-conversions": { @@ -17438,26 +15683,14 @@ "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true }, "wordwrapjs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-3.0.0.tgz", - "integrity": "sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw==", - "dev": true, - "requires": { - "reduce-flatten": "^1.0.1", - "typical": "^2.6.1" - }, - "dependencies": { - "reduce-flatten": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz", - "integrity": "sha1-JYx479FT3fk8tWEjf2EYTzaW4yc=", - "dev": true - } - } + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.0.tgz", + "integrity": "sha512-JNjcULU2e4KJwUNv6CHgI46UvDGitb6dGryHajXTDiLgg1/RiGoPSDw4kZfYnwGtEXf2ZMeIewDQgFGzkCB2Sg==", + "dev": true }, "workerpool": { "version": "6.5.1", @@ -17474,32 +15707,6 @@ "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } } }, "wrap-ansi-cjs": { @@ -17511,32 +15718,6 @@ "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } } }, "wrappy": { @@ -17558,9 +15739,9 @@ } }, "ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, "requires": {} }, @@ -17571,9 +15752,9 @@ "dev": true }, "xmlhttprequest-ssl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", - "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz", + "integrity": "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==", "dev": true }, "xtend": { From 925d4c6b031386bd0b4930b7f19ea30f304dfcbe Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Wed, 15 Jan 2025 18:24:56 +0100 Subject: [PATCH 09/22] Add missing `const` declaration. --- src/utils/type.js | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/utils/type.js b/src/utils/type.js index f6294c0..b442111 100644 --- a/src/utils/type.js +++ b/src/utils/type.js @@ -23,20 +23,20 @@ export default { of, }; -ARRAY = 'array'; -BOOLEAN = 'boolean'; -DATE = 'date'; -ERROR = 'error'; -FUNCTION = 'function'; -NAN = 'nan'; -NUMBER = 'number'; -NULL = 'null'; -OBJECT = 'object'; -REGEXP = 'regexp'; -STRING = 'string'; -UNDEFINED = 'undefined'; -UNKNOWN = 'unknown'; -// XML = 'xml'; +const ARRAY = 'array'; +const BOOLEAN = 'boolean'; +const DATE = 'date'; +const ERROR = 'error'; +const FUNCTION = 'function'; +const NAN = 'nan'; +const NUMBER = 'number'; +const NULL = 'null'; +const OBJECT = 'object'; +const REGEXP = 'regexp'; +const STRING = 'string'; +const UNDEFINED = 'undefined'; +const UNKNOWN = 'unknown'; +// const XML = 'xml'; export function isArray(val) { // https://stackoverflow.com/questions/4775722/check-if-object-is-array From 052da108f975b5d03226def0e12d9e232140a7a6 Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Wed, 15 Jan 2025 18:25:22 +0100 Subject: [PATCH 10/22] Bump dev deps. --- package-lock.json | 416 +++++++--------------------------------------- package.json | 12 +- 2 files changed, 67 insertions(+), 361 deletions(-) diff --git a/package-lock.json b/package-lock.json index 97de7f2..7e64b1c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,24 +13,22 @@ "@babel/preset-env": "^7.26.0", "@babel/register": "^7.25.9", "browser-sync": "^3.0.3", - "codecov": "^3.7.2", + "codecov": "^3.8.3", "gulp": "^5.0.0", - "gulp-babel": "^8.0.0", "gulp-cli": "^3.0.0", - "gulp-concat": "^2.5.2", - "gulp-extname": "^0.2.0", + "gulp-concat": "^2.6.1", + "gulp-extname": "^0.2.2", "gulp-if": "^3.0.0", - "gulp-load-plugins": "^2.0.3", + "gulp-load-plugins": "^2.0.8", "gulp-minify": "^3.1.0", "gulp-sourcemaps": "^3.0.0", - "gulp-uglify": "^3.0.2", "jsdoc": "^4.0.4", "jsdoc-to-markdown": "^9.1.1", "mocha": "^11.0.1", "nyc": "^17.1.0", "prettier": "^3.4.2", "rimraf": "^6.0.1", - "yargs": "^17.7.1" + "yargs": "^17.7.2" } }, "node_modules/@ampproject/remapping": { @@ -510,6 +508,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" }, @@ -554,6 +553,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1491,6 +1491,7 @@ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -2183,15 +2184,6 @@ "node": ">=0.6.10" } }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", @@ -2201,15 +2193,6 @@ "node": ">=0.10.0" } }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/array-back": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", @@ -2247,15 +2230,6 @@ "node": ">=0.10.0" } }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/async": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", @@ -2320,13 +2294,14 @@ "dev": true }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz", - "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==", + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", + "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.1", + "@babel/helper-define-polyfill-provider": "^0.6.3", "semver": "^6.3.1" }, "peerDependencies": { @@ -2348,12 +2323,13 @@ } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz", - "integrity": "sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz", + "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.1" + "@babel/helper-define-polyfill-provider": "^0.6.3" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -2841,6 +2817,7 @@ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, + "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -2873,6 +2850,7 @@ "integrity": "sha512-Y8Hw+V3HgR7V71xWH2vQ9lyS358CbGCldWlJFR0JirqoGtOoas3R3/OclRTvgUYFK29mmJICDPauVKmpqbwhOA==", "deprecated": "https://about.codecov.io/blog/codecov-uploader-deprecation-plan/", "dev": true, + "license": "MIT", "dependencies": { "argv": "0.0.2", "ignore-walk": "3.0.4", @@ -3640,6 +3618,7 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -3712,19 +3691,6 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/fast-fifo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", @@ -3856,6 +3822,7 @@ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "dev": true, + "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^2.0.0", @@ -4255,18 +4222,6 @@ "node": ">=4" } }, - "node_modules/glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", - "dev": true, - "dependencies": { - "sparkles": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -4278,6 +4233,7 @@ "resolved": "https://registry.npmjs.org/gulp/-/gulp-5.0.0.tgz", "integrity": "sha512-S8Z8066SSileaYw1S2N1I64IUc/myI2bqe2ihOBzO6+nKpvNSg7ZcWJt/AwF8LC/NVN+/QZ560Cb/5OPsyhkhg==", "dev": true, + "license": "MIT", "dependencies": { "glob-watcher": "^6.0.0", "gulp-cli": "^3.0.0", @@ -4291,29 +4247,12 @@ "node": ">=10.13.0" } }, - "node_modules/gulp-babel": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/gulp-babel/-/gulp-babel-8.0.0.tgz", - "integrity": "sha512-oomaIqDXxFkg7lbpBou/gnUkX51/Y/M2ZfSjL2hdqXTAlSWZcgZtd2o0cOH0r/eE8LWD0+Q/PsLsr2DKOoqToQ==", - "dev": true, - "dependencies": { - "plugin-error": "^1.0.1", - "replace-ext": "^1.0.0", - "through2": "^2.0.0", - "vinyl-sourcemaps-apply": "^0.2.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, "node_modules/gulp-cli": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-3.0.0.tgz", "integrity": "sha512-RtMIitkT8DEMZZygHK2vEuLPqLPAFB4sntSxg4NoDta7ciwGZ18l7JuhCTiS5deOJi2IoK0btE+hs6R4sfj7AA==", "dev": true, + "license": "MIT", "dependencies": { "@gulpjs/messages": "^1.1.0", "chalk": "^4.1.2", @@ -4400,8 +4339,9 @@ "node_modules/gulp-concat": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", - "integrity": "sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M=", + "integrity": "sha512-a2scActrQrDBpBbR3WUZGyGS1JEPLg5PZJdIa7/Bi3GuKAmPYDK6SFhy/NZq5R8KsKKFvtfR0fakbUCcKGCCjg==", "dev": true, + "license": "MIT", "dependencies": { "concat-with-sourcemaps": "^1.0.0", "through2": "^2.0.0", @@ -4414,8 +4354,9 @@ "node_modules/gulp-extname": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/gulp-extname/-/gulp-extname-0.2.2.tgz", - "integrity": "sha1-NEmBFyxXUj2HgaPFvCyMussHrqs=", + "integrity": "sha512-zyyOnfFymMZO96ic1qJTGOVeAAgCoJ9hDFizv2err8r1KsBpgq9T16fuvv4H+DrXz/rBKdADzP6s8j1Jyg2tmw==", "dev": true, + "license": "MIT", "dependencies": { "rewrite-ext": "^0.2.0", "through2": "^2.0.0" @@ -4429,6 +4370,7 @@ "resolved": "https://registry.npmjs.org/gulp-if/-/gulp-if-3.0.0.tgz", "integrity": "sha512-fCUEngzNiEZEK2YuPm+sdMpO6ukb8+/qzbGfJBXyNOXz85bCG7yBI+pPSl+N90d7gnLvMsarthsAImx0qy7BAw==", "dev": true, + "license": "MIT", "dependencies": { "gulp-match": "^1.1.0", "ternary-stream": "^3.0.0", @@ -4450,6 +4392,7 @@ "resolved": "https://registry.npmjs.org/gulp-load-plugins/-/gulp-load-plugins-2.0.8.tgz", "integrity": "sha512-BS0aRx67WnWPt8stEDvwt+biD2gQ1NwDMgxuUhX5+AQSujqlcSecbdL+U6g0zu2S3YjOuY+eGmnXjT2J3hRMIg==", "dev": true, + "license": "MIT", "dependencies": { "array-unique": "^0.3.2", "fancy-log": "^2.0.0", @@ -4534,6 +4477,7 @@ "resolved": "https://registry.npmjs.org/gulp-minify/-/gulp-minify-3.1.0.tgz", "integrity": "sha512-ixF41aYg+NQikI8hpoHdEclYcQkbGdXQu1CBdHaU7Epg8H6e8d2jWXw1+rBPgYwl/XpKgjHj7NI6gkhoSNSSAg==", "dev": true, + "license": "ISC", "dependencies": { "ansi-colors": "^1.0.1", "minimatch": "^3.0.2", @@ -4616,6 +4560,7 @@ "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-3.0.0.tgz", "integrity": "sha512-RqvUckJkuYqy4VaIH60RMal4ZtG0IbQ6PXMNkNsshEGJ9cldUPRb/YCgboYae+CLAs1HQNb4ADTKCx65HInquQ==", "dev": true, + "license": "ISC", "dependencies": { "@gulp-sourcemaps/identity-map": "^2.0.1", "@gulp-sourcemaps/map-sources": "^1.0.0", @@ -4642,36 +4587,6 @@ "node": ">=0.10.0" } }, - "node_modules/gulp-uglify": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.2.tgz", - "integrity": "sha512-gk1dhB74AkV2kzqPMQBLA3jPoIAPd/nlNzP2XMDSG8XZrqnlCiDGAqC+rZOumzFvB5zOphlFh6yr3lgcAb/OOg==", - "dev": true, - "dependencies": { - "array-each": "^1.0.1", - "extend-shallow": "^3.0.2", - "gulplog": "^1.0.0", - "has-gulplog": "^0.1.0", - "isobject": "^3.0.1", - "make-error-cause": "^1.1.1", - "safe-buffer": "^5.1.2", - "through2": "^2.0.0", - "uglify-js": "^3.0.5", - "vinyl-sourcemaps-apply": "^0.2.0" - } - }, - "node_modules/gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "dev": true, - "dependencies": { - "glogg": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/handlebars": { "version": "4.7.8", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", @@ -4726,18 +4641,6 @@ "node": ">=8" } }, - "node_modules/has-gulplog": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", - "dev": true, - "dependencies": { - "sparkles": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/hasha": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", @@ -4984,18 +4887,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -5067,6 +4958,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, + "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -5541,6 +5433,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5646,7 +5539,8 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.flattendeep": { "version": "4.4.0", @@ -5706,6 +5600,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, + "license": "MIT", "dependencies": { "pify": "^4.0.1", "semver": "^5.6.0" @@ -5724,21 +5619,6 @@ "semver": "bin/semver" } }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/make-error-cause": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", - "integrity": "sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=", - "dev": true, - "dependencies": { - "make-error": "^1.2.0" - } - }, "node_modules/map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -6777,6 +6657,7 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6786,6 +6667,7 @@ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } @@ -6795,6 +6677,7 @@ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^3.0.0" }, @@ -6807,6 +6690,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^3.0.0" }, @@ -6819,6 +6703,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -6832,6 +6717,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -6847,6 +6733,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.0.0" }, @@ -6857,27 +6744,13 @@ "node_modules/pkg-dir/node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", - "dev": true, - "dependencies": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/portscanner": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", @@ -7876,6 +7749,7 @@ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, + "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -7991,15 +7865,6 @@ } } }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -8019,15 +7884,6 @@ "node": ">=0.10.0" } }, - "node_modules/sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/spawn-wrap": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", @@ -8516,6 +8372,7 @@ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.5.tgz", "integrity": "sha512-qZukoSxOG0urUTvjc2ERMTcAy+BiFh3weWAkeurLwjrCba73poHmG3E36XEjd/JGukMzwTL7uCxZiAexj8ppvQ==", "dev": true, + "optional": true, "bin": { "uglifyjs": "bin/uglifyjs" }, @@ -8889,15 +8746,6 @@ "node": ">=10.13.0" } }, - "node_modules/vinyl-sourcemaps-apply": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", - "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", - "dev": true, - "dependencies": { - "source-map": "^0.5.1" - } - }, "node_modules/walk-back": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.1.1.tgz", @@ -9088,6 +8936,7 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -10611,24 +10460,12 @@ "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", "dev": true }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, "array-back": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", @@ -10653,12 +10490,6 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, "async": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", @@ -10707,13 +10538,13 @@ "dev": true }, "babel-plugin-polyfill-corejs2": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz", - "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==", + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", + "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==", "dev": true, "requires": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.1", + "@babel/helper-define-polyfill-provider": "^0.6.3", "semver": "^6.3.1" } }, @@ -10728,12 +10559,12 @@ } }, "babel-plugin-polyfill-regenerator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz", - "integrity": "sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz", + "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.6.1" + "@babel/helper-define-polyfill-provider": "^0.6.3" } }, "bach": { @@ -11752,16 +11583,6 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, "fast-fifo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", @@ -12146,15 +11967,6 @@ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, - "glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", - "dev": true, - "requires": { - "sparkles": "^1.0.0" - } - }, "graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -12173,18 +11985,6 @@ "vinyl-fs": "^4.0.0" } }, - "gulp-babel": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/gulp-babel/-/gulp-babel-8.0.0.tgz", - "integrity": "sha512-oomaIqDXxFkg7lbpBou/gnUkX51/Y/M2ZfSjL2hdqXTAlSWZcgZtd2o0cOH0r/eE8LWD0+Q/PsLsr2DKOoqToQ==", - "dev": true, - "requires": { - "plugin-error": "^1.0.1", - "replace-ext": "^1.0.0", - "through2": "^2.0.0", - "vinyl-sourcemaps-apply": "^0.2.0" - } - }, "gulp-cli": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-3.0.0.tgz", @@ -12260,7 +12060,7 @@ "gulp-concat": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", - "integrity": "sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M=", + "integrity": "sha512-a2scActrQrDBpBbR3WUZGyGS1JEPLg5PZJdIa7/Bi3GuKAmPYDK6SFhy/NZq5R8KsKKFvtfR0fakbUCcKGCCjg==", "dev": true, "requires": { "concat-with-sourcemaps": "^1.0.0", @@ -12271,7 +12071,7 @@ "gulp-extname": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/gulp-extname/-/gulp-extname-0.2.2.tgz", - "integrity": "sha1-NEmBFyxXUj2HgaPFvCyMussHrqs=", + "integrity": "sha512-zyyOnfFymMZO96ic1qJTGOVeAAgCoJ9hDFizv2err8r1KsBpgq9T16fuvv4H+DrXz/rBKdADzP6s8j1Jyg2tmw==", "dev": true, "requires": { "rewrite-ext": "^0.2.0", @@ -12462,33 +12262,6 @@ } } }, - "gulp-uglify": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.2.tgz", - "integrity": "sha512-gk1dhB74AkV2kzqPMQBLA3jPoIAPd/nlNzP2XMDSG8XZrqnlCiDGAqC+rZOumzFvB5zOphlFh6yr3lgcAb/OOg==", - "dev": true, - "requires": { - "array-each": "^1.0.1", - "extend-shallow": "^3.0.2", - "gulplog": "^1.0.0", - "has-gulplog": "^0.1.0", - "isobject": "^3.0.1", - "make-error-cause": "^1.1.1", - "safe-buffer": "^5.1.2", - "through2": "^2.0.0", - "uglify-js": "^3.0.5", - "vinyl-sourcemaps-apply": "^0.2.0" - } - }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "dev": true, - "requires": { - "glogg": "^1.0.0" - } - }, "handlebars": { "version": "4.7.8", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", @@ -12525,15 +12298,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "has-gulplog": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", - "dev": true, - "requires": { - "sparkles": "^1.0.0" - } - }, "hasha": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", @@ -12716,15 +12480,6 @@ "has": "^1.0.3" } }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -13268,21 +13023,6 @@ } } }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "make-error-cause": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", - "integrity": "sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=", - "dev": true, - "requires": { - "make-error": "^1.2.0" - } - }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -14099,23 +13839,11 @@ "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true } } }, - "plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", - "dev": true, - "requires": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" - } - }, "portscanner": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", @@ -14948,12 +14676,6 @@ "typical": "^7.1.1" } }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -14972,12 +14694,6 @@ } } }, - "sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", - "dev": true - }, "spawn-wrap": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", @@ -15363,7 +15079,8 @@ "version": "3.14.5", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.5.tgz", "integrity": "sha512-qZukoSxOG0urUTvjc2ERMTcAy+BiFh3weWAkeurLwjrCba73poHmG3E36XEjd/JGukMzwTL7uCxZiAexj8ppvQ==", - "dev": true + "dev": true, + "optional": true }, "unc-path-regex": { "version": "0.1.2", @@ -15634,15 +15351,6 @@ } } }, - "vinyl-sourcemaps-apply": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", - "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", - "dev": true, - "requires": { - "source-map": "^0.5.1" - } - }, "walk-back": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.1.1.tgz", diff --git a/package.json b/package.json index 6b66924..6ccfd98 100644 --- a/package.json +++ b/package.json @@ -47,24 +47,22 @@ "@babel/preset-env": "^7.26.0", "@babel/register": "^7.25.9", "browser-sync": "^3.0.3", - "codecov": "^3.7.2", + "codecov": "^3.8.3", "gulp": "^5.0.0", - "gulp-babel": "^8.0.0", "gulp-cli": "^3.0.0", - "gulp-concat": "^2.5.2", - "gulp-extname": "^0.2.0", + "gulp-concat": "^2.6.1", + "gulp-extname": "^0.2.2", "gulp-if": "^3.0.0", - "gulp-load-plugins": "^2.0.3", + "gulp-load-plugins": "^2.0.8", "gulp-minify": "^3.1.0", "gulp-sourcemaps": "^3.0.0", - "gulp-uglify": "^3.0.2", "jsdoc": "^4.0.4", "jsdoc-to-markdown": "^9.1.1", "mocha": "^11.0.1", "nyc": "^17.1.0", "prettier": "^3.4.2", "rimraf": "^6.0.1", - "yargs": "^17.7.1" + "yargs": "^17.7.2" }, "babel": { "presets": [ From f69541bcff3c918dc17af7f06e3279f18c8454ca Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Wed, 15 Jan 2025 18:25:35 +0100 Subject: [PATCH 11/22] Cleanup gulpfile. --- gulpfile.babel.js | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/gulpfile.babel.js b/gulpfile.babel.js index 1591a4a..1e284a4 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -1,5 +1,3 @@ -'use strict'; - import browser from 'browser-sync'; import gulp from 'gulp'; import minify from 'gulp-minify'; @@ -17,9 +15,7 @@ const PORT = 8000; const PRODUCTION = !!yargs.argv.production; function clean(done) { - rimraf(PATHS.dist, {}).then(function () { - done(); - }); + rimraf(PATHS.dist, {}).then(() => done()); } function copy() { @@ -27,18 +23,13 @@ function copy() { } function javascript() { - return ( - gulp - .src(PATHS.javascript) - .pipe($.if(!PRODUCTION, $.sourcemaps.init())) - .pipe($.concat('utils.js')) - // .pipe($.if(PRODUCTION, $.uglify() - // .on('error', e => { console.log(e.message, e.fileName, e.lineNumber); }) - // )) - .pipe($.if(!PRODUCTION, $.sourcemaps.write())) - .pipe(minify({ ext: { min: '.min.js' } })) - .pipe(gulp.dest(PATHS.dist)) - ); + return gulp + .src(PATHS.javascript) + .pipe($.if(!PRODUCTION, $.sourcemaps.init())) + .pipe($.concat('utils.js')) + .pipe($.if(!PRODUCTION, $.sourcemaps.write())) + .pipe(minify({ ext: { min: '.min.js' } })) + .pipe(gulp.dest(PATHS.dist)); } function server(done) { From 46f832d038db95bd52dd48bdbb31b5d08ba42acc Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Wed, 15 Jan 2025 18:40:55 +0100 Subject: [PATCH 12/22] Add module type checks and assertions. --- src/utils/test.js | 14 ++++++++++++++ src/utils/type.js | 9 +++++++++ 2 files changed, 23 insertions(+) diff --git a/src/utils/test.js b/src/utils/test.js index 3de5c81..729c105 100644 --- a/src/utils/test.js +++ b/src/utils/test.js @@ -14,6 +14,7 @@ export default { assertFalse, assertFunction, assertJSON, + assertModule, assertNaN, assertNone, assertNotArray, @@ -24,6 +25,7 @@ export default { assertNotError, assertNotFunction, assertNotJSON, + assertNotModule, assertNotNone, assertNotNumber, assertNotNull, @@ -105,6 +107,12 @@ export function assertJSON(val) { } } +export function assertModule(val) { + if (!TypeUtil.isModule(val)) { + throw new Error(`value is not module: ${String(val)}.`); + } +} + export function assertNaN(val) { if (!TypeUtil.isNaN(val)) { throw new Error(`value is not NaN: ${String(val)}.`); @@ -173,6 +181,12 @@ export function assertNotJSON(val) { } } +export function assertNotModule(val) { + if (TypeUtil.isModule(val)) { + throw new Error(`value is module: ${String(val)}.`); + } +} + export function assertNotNone(val) { if (TypeUtil.isNone(val)) { throw new Error(`value is none: ${String(val)}.`); diff --git a/src/utils/type.js b/src/utils/type.js index b442111..fbd66e6 100644 --- a/src/utils/type.js +++ b/src/utils/type.js @@ -11,6 +11,7 @@ export default { isError, isFunction, isJSON, + isModule, isNaN, isNone, isNumber, @@ -28,6 +29,7 @@ const BOOLEAN = 'boolean'; const DATE = 'date'; const ERROR = 'error'; const FUNCTION = 'function'; +const MODULE = 'module'; const NAN = 'nan'; const NUMBER = 'number'; const NULL = 'null'; @@ -87,6 +89,10 @@ export function isJSON(val) { return false; } +export function isModule(val) { + return Object.prototype.toString.call(val) === '[object Module]'; +} + export function isNaN(val) { return ObjectUtil.is(val, NaN); } @@ -125,6 +131,7 @@ export function isType(val) { case DATE: case ERROR: case FUNCTION: + case MODULE: case NAN: case NUMBER: case NULL: @@ -160,6 +167,8 @@ export function of(val) { return ERROR; } else if (isFunction(val)) { return FUNCTION; + } else if (isModule(val)) { + return MODULE; } else if (isNaN(val)) { return NAN; } else if (isNumber(val)) { From 342a81aae1cb383eb1c3f33c493f49f89ab56607 Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Fri, 17 Jan 2025 21:30:04 +0100 Subject: [PATCH 13/22] Don't export functions individually. --- src/utils/array.js | 44 ++++++++++---------- src/utils/base64.js | 4 +- src/utils/color/cmyk.js | 30 +++++++------- src/utils/color/hex.js | 30 +++++++------- src/utils/color/rgb.js | 30 +++++++------- src/utils/date.js | 30 +++++++------- src/utils/ease.js | 74 ++++++++++++++++----------------- src/utils/function.js | 24 +++++------ src/utils/geom/point.js | 30 +++++++------- src/utils/hex.js | 4 +- src/utils/interpolation.js | 8 ++-- src/utils/json.js | 4 +- src/utils/math.js | 83 +++++++++++++++++++------------------- src/utils/number.js | 14 +++---- src/utils/object.js | 78 +++++++++++++++++------------------ src/utils/random.js | 22 +++++----- src/utils/string.js | 42 +++++++++---------- src/utils/test.js | 78 +++++++++++++++++------------------ src/utils/trigo.js | 30 +++++++------- src/utils/type.js | 38 ++++++++--------- src/utils/url.js | 24 +++++------ src/utils/utf8.js | 4 +- src/utils/xml.js | 6 +-- 23 files changed, 366 insertions(+), 365 deletions(-) diff --git a/src/utils/array.js b/src/utils/array.js index 1a18a15..a51aaab 100644 --- a/src/utils/array.js +++ b/src/utils/array.js @@ -31,7 +31,7 @@ export default { zip, }; -export function all(list) { +function all(list) { return list.every((item) => { switch (TypeUtil.of(item)) { case TypeUtil.ARRAY: @@ -44,7 +44,7 @@ export function all(list) { }); } -export function any(list) { +function any(list) { return list.some((item) => { switch (TypeUtil.of(item)) { case TypeUtil.ARRAY: @@ -57,7 +57,7 @@ export function any(list) { }); } -export function clean(list, hard) { +function clean(list, hard) { let items = list.slice(); items = items.filter((item) => { return !TypeUtil.isNone(item); @@ -87,7 +87,7 @@ export function clean(list, hard) { return items; } -export function clone(list) { +function clone(list) { const cln = list.slice(); let val; for (let i = 0, j = cln.length; i < j; i++) { @@ -109,7 +109,7 @@ export function clone(list) { return cln; } -export function contains(list, value) { +function contains(list, value) { const values = [value].concat(FunctionUtil.args(arguments, 2)); let val, valFound; @@ -129,11 +129,11 @@ export function contains(list, value) { return true; } -export function equals(listA, listB) { +function equals(listA, listB) { return ObjectUtil.equals(listA, listB); } -export function flatten(list) { +function flatten(list) { const items = []; for (let i = 0, j = list.length; i < j; i++) { if (TypeUtil.isArray(list[i])) { @@ -145,7 +145,7 @@ export function flatten(list) { return items; } -export function index(list, keys, flat) { +function index(list, keys, flat) { const dict = {}; let item; let key; @@ -176,12 +176,12 @@ export function index(list, keys, flat) { return dict; } -export function insert(list, index, item) { +function insert(list, index, item) { list.splice(index, 0, item); return list; } -export function max(list, callback) { +function max(list, callback) { return reduce( list, (a, b) => { @@ -194,7 +194,7 @@ export function max(list, callback) { ); } -export function min(list, callback) { +function min(list, callback) { return reduce( list, (a, b) => { @@ -207,7 +207,7 @@ export function min(list, callback) { ); } -export function paginate(list, itemsPerPage) { +function paginate(list, itemsPerPage) { const itemsTotal = list.length; const pagesTotal = itemsPerPage > 0 ? Math.ceil(itemsTotal / itemsPerPage) : 0; const pages = []; @@ -219,7 +219,7 @@ export function paginate(list, itemsPerPage) { return pages; } -export function reduce(list, reducer, initialValue) { +function reduce(list, reducer, initialValue) { let value = TypeUtil.isUndefined(initialValue) ? 0 : initialValue; for (let i = 0, j = list.length; i < j; i++) { value = reducer(value, list[i], i, list); @@ -227,7 +227,7 @@ export function reduce(list, reducer, initialValue) { return value; } -export function replace(list, searchValue, replacementValue) { +function replace(list, searchValue, replacementValue) { for (let i = 0, j = list.length; i < j; i++) { if (ObjectUtil.equals(list[i], searchValue)) { list[i] = replacementValue; @@ -236,7 +236,7 @@ export function replace(list, searchValue, replacementValue) { return list; } -export function remove(list, value) { +function remove(list, value) { const values = [value].concat(FunctionUtil.args(arguments, 2)); for (let k = 0, m = values.length; k < m; k++) { for (let i = 0, j = list.length; i < j; i++) { @@ -250,12 +250,12 @@ export function remove(list, value) { return list; } -export function rotate(list, count) { +function rotate(list, count) { const cursor = MathUtil.cycle(count, list.length); return list.slice(cursor).concat(list.slice(0, cursor)); } -export function shuffle(list) { +function shuffle(list) { const items = list.slice(); let randomIndex; let randomItems; @@ -268,7 +268,7 @@ export function shuffle(list) { return items; } -export function sort(list, key) { +function sort(list, key) { const isArray = TypeUtil.isArray; const isObject = TypeUtil.isObject; const isNumber = TypeUtil.isNumber; @@ -311,7 +311,7 @@ export function sort(list, key) { return list.sort(compare); } -export function sum(list, callback) { +function sum(list, callback) { return reduce( list, (a, b) => { @@ -324,7 +324,7 @@ export function sum(list, callback) { ); } -export function unique(list) { +function unique(list) { let item; const items = []; const itemsNotEquals = (itemUnique) => { @@ -339,11 +339,11 @@ export function unique(list) { return items; } -export function unzip(list) { +function unzip(list) { return zip.apply(null, list); } -export function zip(list1, list2) { +function zip(list1, list2) { const lists = [list1, list2].concat(FunctionUtil.args(arguments, 2)); let listLength = 0; lists.forEach((item) => { diff --git a/src/utils/base64.js b/src/utils/base64.js index 8a94906..b0db815 100644 --- a/src/utils/base64.js +++ b/src/utils/base64.js @@ -20,7 +20,7 @@ const CHARS_TABLE = { '0': 52, '1': 53, '2': 54, '3': 55, '4': 56, '5': 57, '6': 58, '7': 59, '8': 60, '9': 61, '+': 62, '/': 63, '=': 64 }; -export function decode(str) { +function decode(str) { const input = str.replace(/[^A-Za-z0-9\+\/\=]/g, ''); let output = ''; @@ -59,7 +59,7 @@ export function decode(str) { return output; } -export function encode(str) { +function encode(str) { const input = UTF8Util.encode(str); let output = ''; diff --git a/src/utils/color/cmyk.js b/src/utils/color/cmyk.js index 20b0f37..07f0e3b 100644 --- a/src/utils/color/cmyk.js +++ b/src/utils/color/cmyk.js @@ -2,7 +2,7 @@ import * as RGBColorUtil from './rgb.js'; export default { toHex, toRgb, toString, toStringCSS }; -// export function average(colors) { +// function average(colors) { // return RGBColorUtil.toCmyk( // RGBColorUtil.average( // colors.map(function(color){ @@ -11,13 +11,13 @@ export default { toHex, toRgb, toString, toStringCSS }; // )); // }; -// export function distance(colorA, colorB) { +// function distance(colorA, colorB) { // return RGBColorUtil.distance( // toRgb(colorA), // toRgb(colorB)); // }; -// export function gradient(colors, steps) { +// function gradient(colors, steps) { // return RGBColorUtil.gradient(colors.map(function(color){ // return toRgb(color); // }), steps).map(function(color){ @@ -25,7 +25,7 @@ export default { toHex, toRgb, toString, toStringCSS }; // }); // }; -// export function gradientMatrix(colors, stepsX, stepsY) { +// function gradientMatrix(colors, stepsX, stepsY) { // return RGBColorUtil.gradientMatrix( // ObjectUtil.map(colors, function(color){ // return toRgb(color); @@ -36,7 +36,7 @@ export default { toHex, toRgb, toString, toStringCSS }; // }); // }; -// export function interpolateBilinear(a, b, c, d, u, v) { +// function interpolateBilinear(a, b, c, d, u, v) { // return RGBColorUtil.toCmyk( // RGBColorUtil.interpolateBilinear( // toRgb(a), @@ -45,14 +45,14 @@ export default { toHex, toRgb, toString, toStringCSS }; // toRgb(d), u, v)); // }; -// export function interpolateLinear(colorFrom, colorTo, t) { +// function interpolateLinear(colorFrom, colorTo, t) { // return RGBColorUtil.toCmyk( // RGBColorUtil.interpolateLinear( // toRgb(colorFrom), // toRgb(colorTo), t)); // }; -// export function interpolateMultilinear(colors, t) { +// function interpolateMultilinear(colors, t) { // return RGBColorUtil.toCmyk( // RGBColorUtil.interpolateMultilinear( // colors.map(function(color){ @@ -60,7 +60,7 @@ export default { toHex, toRgb, toString, toStringCSS }; // }), t)); // }; -// export function nearest(colorSearch, colors) { +// function nearest(colorSearch, colors) { // return RGBColorUtil.toCmyk( // RGBColorUtil.nearest( // toRgb(colorSearch), @@ -70,26 +70,26 @@ export default { toHex, toRgb, toString, toStringCSS }; // )); // }; -// export function toGrayscale(color) { +// function toGrayscale(color) { // return RGBColorUtil.toGrayscale( // toRgb(color)); // }; -export function toHex(color, prefix) { +function toHex(color, prefix) { return RGBColorUtil.toHex(toRgb(color), prefix); } -// export function toHsl(color) { +// function toHsl(color) { // return RGBColorUtil.toHsl( // toRgb(color)); // }; -// export function toHsv(color) { +// function toHsv(color) { // return RGBColorUtil.toHsv( // toRgb(color)); // }; -export function toRgb(color) { +function toRgb(color) { const c = color.c / 100; const m = color.m / 100; const y = color.y / 100; @@ -108,12 +108,12 @@ export function toRgb(color) { return { r: r, g: g, b: b, a: 1.0 }; } -export function toString(color) { +function toString(color) { // prettier-ignore return `{ c:${String(color.c)}, m:${String(color.m)}, y:${String(color.y)}, k:${String(color.k)} }`; } -export function toStringCSS(color) { +function toStringCSS(color) { // prettier-ignore return `cmyk(${String(color.c)}%, ${String(color.m)}%, ${String(color.y)}%, ${String(color.k)}%)`; } diff --git a/src/utils/color/hex.js b/src/utils/color/hex.js index fc34d7c..527df02 100644 --- a/src/utils/color/hex.js +++ b/src/utils/color/hex.js @@ -20,7 +20,7 @@ export default { toStringCSS, }; -export function average(colors) { +function average(colors) { return RGBColorUtil.toHex( RGBColorUtil.average( colors.map((color) => { @@ -30,11 +30,11 @@ export function average(colors) { ); } -export function distance(colorA, colorB) { +function distance(colorA, colorB) { return RGBColorUtil.distance(toRgb(colorA), toRgb(colorB)); } -export function gradient(colors, steps) { +function gradient(colors, steps) { return RGBColorUtil.gradient( colors.map((color) => { return toRgb(color); @@ -45,7 +45,7 @@ export function gradient(colors, steps) { }); } -export function gradientMatrix(colors, stepsX, stepsY) { +function gradientMatrix(colors, stepsX, stepsY) { return RGBColorUtil.gradientMatrix( ObjectUtil.map(colors, (color) => { return toRgb(color); @@ -59,19 +59,19 @@ export function gradientMatrix(colors, stepsX, stepsY) { }); } -export function interpolateBilinear(a, b, c, d, u, v) { +function interpolateBilinear(a, b, c, d, u, v) { return RGBColorUtil.toHex( RGBColorUtil.interpolateBilinear(toRgb(a), toRgb(b), toRgb(c), toRgb(d), u, v) ); } -export function interpolateLinear(colorFrom, colorTo, t) { +function interpolateLinear(colorFrom, colorTo, t) { return RGBColorUtil.toHex( RGBColorUtil.interpolateLinear(toRgb(colorFrom), toRgb(colorTo), t) ); } -export function interpolateMultilinear(colors, t) { +function interpolateMultilinear(colors, t) { return RGBColorUtil.toHex( RGBColorUtil.interpolateMultilinear( colors.map((color) => { @@ -82,7 +82,7 @@ export function interpolateMultilinear(colors, t) { ); } -export function nearest(colorSearch, colors) { +function nearest(colorSearch, colors) { return RGBColorUtil.toHex( RGBColorUtil.nearest( toRgb(colorSearch), @@ -93,26 +93,26 @@ export function nearest(colorSearch, colors) { ); } -export function toCmyk(color) { +function toCmyk(color) { return RGBColorUtil.toCmyk(toRgb(color)); } -// export function toGrayscale(color) { +// function toGrayscale(color) { // return RGBColorUtil.toGrayscale( // toRgb(color)); // }; -// export function toHsl(color) { +// function toHsl(color) { // return RGBColorUtil.toHsl( // toRgb(color)); // }; -// export function toHsv(color) { +// function toHsv(color) { // return RGBColorUtil.toHsv( // toRgb(color)); // }; -export function toRgb(color) { +function toRgb(color) { const fromHex = HexUtil.decodeInt; const toHex = HexUtil.encodeInt; @@ -171,10 +171,10 @@ export function toRgb(color) { return rgb; } -export function toString(color, prefix) { +function toString(color, prefix) { return RGBColorUtil.toHex(toRgb(color), prefix); } -export function toStringCSS(color) { +function toStringCSS(color) { return toString(color, '#'); } diff --git a/src/utils/color/rgb.js b/src/utils/color/rgb.js index ba3e0ef..e716095 100644 --- a/src/utils/color/rgb.js +++ b/src/utils/color/rgb.js @@ -17,7 +17,7 @@ export default { toStringCSS, }; -export function average(colors) { +function average(colors) { let c; let r = 0; let g = 0; @@ -40,7 +40,7 @@ export function average(colors) { return { r: r, g: g, b: b, a: a }; } -export function distance(colorA, colorB) { +function distance(colorA, colorB) { const rDiff = colorA.r - colorB.r; const gDiff = colorA.g - colorB.g; const bDiff = colorA.b - colorB.b; @@ -50,7 +50,7 @@ export function distance(colorA, colorB) { return Math.sqrt(rDiff * rDiff + gDiff * gDiff + bDiff * bDiff + aDiff * aDiff); } -export function gradient(colors, steps) { +function gradient(colors, steps) { const colorsOutput = []; let color; const mlerp = interpolateMultilinear; @@ -66,7 +66,7 @@ export function gradient(colors, steps) { return colorsOutput; } -export function gradientMatrix(colors, stepsX, stepsY) { +function gradientMatrix(colors, stepsX, stepsY) { // colors: { top, topRight, right, bottomLeft, bottom, bottomRight, left, center }; // only 4 corners are required let colorTopLeft = colors.topLeft; @@ -168,7 +168,7 @@ export function gradientMatrix(colors, stepsX, stepsY) { return colorsMatrix; } -export function interpolateBilinear( +function interpolateBilinear( colorTopLeft, colorBottomLeft, colorTopRight, @@ -184,7 +184,7 @@ export function interpolateBilinear( ); } -export function interpolateLinear(colorFrom, colorTo, t) { +function interpolateLinear(colorFrom, colorTo, t) { const lerp = InterpolationUtil.linear; const round = Math.round; return { @@ -201,13 +201,13 @@ export function interpolateLinear(colorFrom, colorTo, t) { }; } -export function interpolateMultilinear(colors, t) { +function interpolateMultilinear(colors, t) { const s = InterpolationUtil.scalar(colors.length - 1, t); const i = s.index; return interpolateLinear(colors[i], colors[i + 1], s.t); } -export function nearest(colorSearch, colors) { +function nearest(colorSearch, colors) { const calcDistance = distance; let tempDistance; let nearestDistance = @@ -223,7 +223,7 @@ export function nearest(colorSearch, colors) { return nearestColor; } -export function toCmyk(color) { +function toCmyk(color) { const r = color.r / 255; const g = color.g / 255; const b = color.b / 255; @@ -252,12 +252,12 @@ export function toCmyk(color) { return { c: c, m: m, y: y, k: k }; } -// export function toGrayscale(color, algorithm) { +// function toGrayscale(color, algorithm) { // // TODO // // http://cadik.posvete.cz/color_to_gray_evaluation/ // }; -export function toHex(color, prefix) { +function toHex(color, prefix) { const a = isNaN(color.a) ? null : color.a; const r = isNaN(color.r) ? 0 : color.r; const g = isNaN(color.g) ? 0 : color.g; @@ -272,21 +272,21 @@ export function toHex(color, prefix) { ); } -// export function toHsl(color) { +// function toHsl(color) { // // TODO // }; -// export function toHsv(color) { +// function toHsv(color) { // // TODO // // https://gist.github.com/felipesabino/5066336/revisions // }; -export function toString(color) { +function toString(color) { // prettier-ignore return `{ r:${String(color.r)}, g:${String(color.g)}, b:${String(color.b)}, a:${String(isNaN(color.a) ? 1.0 : color.a)} }`; } -export function toStringCSS(color) { +function toStringCSS(color) { // prettier-ignore return `rgba(${String(color.r)}, ${String(color.g)}, ${String(color.b)}, ${String(isNaN(color.a) ? 1.0 : color.a)})`; } diff --git a/src/utils/date.js b/src/utils/date.js index 5a9fb3e..1814879 100644 --- a/src/utils/date.js +++ b/src/utils/date.js @@ -18,17 +18,17 @@ export default { yyyymmdd, }; -export function clone(date) { +function clone(date) { return new Date(date.getTime()); } -export function constrain(date, a, b) { +function constrain(date, a, b) { const dateMin = min(a, b); const dateMax = max(a, b); return min(max(date, dateMin), dateMax); } -export function format(date, str) { +function format(date, str) { // https://docs.djangoproject.com/en/4.0/ref/templates/builtins/#date const replace = StringUtil.replace; const padZeros = StringUtil.padZeros; @@ -96,7 +96,7 @@ export function format(date, str) { return str; } -export function identifier(date) { +function identifier(date) { const d = date || new Date(); const year = d.getFullYear(); const month = d.getMonth() + 1; // getMonth() is zero-based @@ -116,7 +116,7 @@ export function identifier(date) { ); } -export function isFuture(date, checkTime) { +function isFuture(date, checkTime) { const day = new Date(date.getTime()); const now = new Date(); if (checkTime !== true) { @@ -129,7 +129,7 @@ export function isFuture(date, checkTime) { return delta < 0; } -export function isPast(date, checkTime) { +function isPast(date, checkTime) { const day = new Date(date.getTime()); const now = new Date(); if (checkTime !== true) { @@ -142,15 +142,15 @@ export function isPast(date, checkTime) { return delta > 0; } -export function max(date, other) { +function max(date, other) { return date.getTime() > other.getTime() ? date : other; } -export function min(date, other) { +function min(date, other) { return date.getTime() <= other.getTime() ? date : other; } -export function normalize(ms) { +function normalize(ms) { const time = { milliseconds: ms % 1000, seconds: Math.floor(ms / 1000) % 60, @@ -161,7 +161,7 @@ export function normalize(ms) { return time; } -export function parse(date) { +function parse(date) { let timestamp; const timestampIsValid = (t) => { return ( @@ -188,12 +188,12 @@ export function parse(date) { return null; } -export function timestamp(date) { +function timestamp(date) { const d = date || new Date(); return d.getTime(); } -export function today() { +function today() { const d = new Date(); d.setHours(0); d.setMinutes(0); @@ -202,19 +202,19 @@ export function today() { return d; } -export function tomorrow() { +function tomorrow() { const d = today(); d.setDate(d.getDate() + 1); return d; } -export function yesterday() { +function yesterday() { const d = today(); d.setDate(d.getDate() - 1); return d; } -export function yyyymmdd(date, separator) { +function yyyymmdd(date, separator) { const d = date || new Date(); const year = d.getFullYear(); const month = d.getMonth() + 1; // getMonth() is zero-based diff --git a/src/utils/ease.js b/src/utils/ease.js index 251a01f..167c09e 100644 --- a/src/utils/ease.js +++ b/src/utils/ease.js @@ -38,13 +38,13 @@ export default { waveSine, }; -export function backIn(t, s) { +function backIn(t, s) { // s = overshoot = 1.70158 s = isNaN(s) ? 1.70158 : s; return t * t * ((s + 1.0) * t - s); } -export function backInOut(t, s) { +function backInOut(t, s) { // s = overshoot = 1.70158 s = isNaN(s) ? 1.70158 : s; t /= 0.5; @@ -57,14 +57,14 @@ export function backInOut(t, s) { return 0.5 * (t * t * ((s + 1.0) * t + s) + 2.0); } -export function backOut(t, s) { +function backOut(t, s) { // s = overshoot = 1.70158 s = isNaN(s) ? 1.70158 : s; t -= 1.0; return t * t * ((s + 1.0) * t + s) + 1.0; } -export function bounceIn(t) { +function bounceIn(t) { t = 1.0 - t; if (t < 1.0 / 2.75) { return 1.0 - 7.5625 * t * t; @@ -79,7 +79,7 @@ export function bounceIn(t) { return 1.0 - (7.5625 * t * t + 0.984375); } -export function bounceInOut(t) { +function bounceInOut(t) { if (t < 0.5) { t = 1.0 - t; if (t < 1.0 / 2.75) { @@ -107,7 +107,7 @@ export function bounceInOut(t) { return 7.5625 * t * t + 0.984375; } -export function bounceOut(t) { +function bounceOut(t) { if (t < 1.0 / 2.75) { return 7.5625 * t * t; } else if (t < 2.0 / 2.75) { @@ -121,11 +121,11 @@ export function bounceOut(t) { return 7.5625 * t * t + 0.984375; } -export function circularIn(t) { +function circularIn(t) { return -(Math.sqrt(1.0 - t * t) - 1.0); } -export function circularInOut(t) { +function circularInOut(t) { t /= 0.5; if (t < 1.0) { return -0.5 * (Math.sqrt(1.0 - t * t) - 1.0); @@ -134,16 +134,16 @@ export function circularInOut(t) { return 0.5 * (Math.sqrt(1.0 - t * t) + 1.0); } -export function circularOut(t) { +function circularOut(t) { t -= 1.0; return Math.sqrt(1.0 - t * t); } -export function cubicIn(t) { +function cubicIn(t) { return t * t * t; } -export function cubicInOut(t) { +function cubicInOut(t) { t /= 0.5; if (t < 1.0) { return 0.5 * t * t * t; @@ -152,12 +152,12 @@ export function cubicInOut(t) { return 0.5 * (t * t * t + 2.0); } -export function cubicOut(t) { +function cubicOut(t) { t -= 1.0; return t * t * t + 1.0; } -export function elasticIn(t, a, p) { +function elasticIn(t, a, p) { // a = amplitude = 0.0, p = period = 0.3 if (t === 0.0) { return 0.0; @@ -178,7 +178,7 @@ export function elasticIn(t, a, p) { return -(a * 2.0 ** (10.0 * t) * Math.sin(((t - s) * (2.0 * Math.PI)) / p)); } -export function elasticInOut(t, a, p) { +function elasticInOut(t, a, p) { // a = amplitude = 0.0, p = period = 0.3 if (t === 0.0) { return 0.0; @@ -211,7 +211,7 @@ export function elasticInOut(t, a, p) { ); } -export function elasticOut(t, a, p) { +function elasticOut(t, a, p) { // a = amplitude = 0.0, p = period = 0.3 if (t === 0.0) { return 0.0; @@ -231,14 +231,14 @@ export function elasticOut(t, a, p) { return a * 2.0 ** (-10.0 * t) * Math.sin(((t - s) * (2.0 * Math.PI)) / p) + 1.0; } -export function exponentialIn(t) { +function exponentialIn(t) { if (t === 0.0) { return 0.0; } return 2.0 ** (10.0 * (t - 1.0)); } -export function exponentialInOut(t) { +function exponentialInOut(t) { if (t === 0.0) { return 0.0; } @@ -253,22 +253,22 @@ export function exponentialInOut(t) { return 0.5 * (-(2.0 ** (-10.0 * t)) + 2.0); } -export function exponentialOut(t) { +function exponentialOut(t) { if (t === 1.0) { return t; } return -(2.0 ** (-10.0 * t)) + 1.0; } -export function none(t) { +function none(t) { return t; } -export function quadraticIn(t) { +function quadraticIn(t) { return t * t; } -export function quadraticInOut(t) { +function quadraticInOut(t) { t /= 0.5; if (t < 1.0) { return 0.5 * t * t; @@ -277,15 +277,15 @@ export function quadraticInOut(t) { return -0.5 * (t * (t - 2.0) - 1.0); } -export function quadraticOut(t) { +function quadraticOut(t) { return -t * (t - 2.0); } -export function quarticIn(t) { +function quarticIn(t) { return t * t * t * t; } -export function quarticInOut(t) { +function quarticInOut(t) { t /= 0.5; if (t < 1.0) { return 0.5 * t * t * t * t; @@ -294,16 +294,16 @@ export function quarticInOut(t) { return -0.5 * (t * t * t * t - 2.0); } -export function quarticOut(t) { +function quarticOut(t) { t -= 1.0; return -(t * t * t * t - 1.0); } -export function quinticIn(t) { +function quinticIn(t) { return t * t * t * t * t; } -export function quinticInOut(t) { +function quinticInOut(t) { t /= 0.5; if (t < 1.0) { return 0.5 * t * t * t * t * t; @@ -312,16 +312,16 @@ export function quinticInOut(t) { return 0.5 * (t * t * t * t * t + 2.0); } -export function quinticOut(t) { +function quinticOut(t) { t -= 1.0; return t * t * t * t * t + 1.0; } -export function sexticIn(t) { +function sexticIn(t) { return t * t * t * t * t * t; } -export function sexticInOut(t) { +function sexticInOut(t) { t /= 0.5; if (t < 1.0) { return 0.5 * t * t * t * t * t * t; @@ -330,24 +330,24 @@ export function sexticInOut(t) { return -0.5 * (t * t * t * t * t * t - 2.0); } -export function sexticOut(t) { +function sexticOut(t) { t -= 1.0; return -(t * t * t * t * t * t - 1.0); } -export function sineIn(t) { +function sineIn(t) { return -Math.cos(t * (Math.PI / 2.0)) + 1.0; } -export function sineInOut(t) { +function sineInOut(t) { return -0.5 * (Math.cos(Math.PI * t) - 1.0); } -export function sineOut(t) { +function sineOut(t) { return Math.sin(t * (Math.PI / 2.0)); } -export function waveCosine(t, f, a, i) { +function waveCosine(t, f, a, i) { // t, f = frequency = 1.0, a = absolute = false, i = inverse = false f = isNaN(f) ? 1.0 : f; a = a === true ? true : false; @@ -359,7 +359,7 @@ export function waveCosine(t, f, a, i) { return w; } -export function waveSawtooth(t, f, a, i) { +function waveSawtooth(t, f, a, i) { // t, f = frequency = 1.0, a = absolute = false, i = inverse = false f = isNaN(f) ? 1.0 : f; a = a === true ? true : false; @@ -371,7 +371,7 @@ export function waveSawtooth(t, f, a, i) { return w; } -export function waveSine(t, f, a, i) { +function waveSine(t, f, a, i) { // t, f = frequency = 1.0, a = absolute = false, i = inverse = false f = isNaN(f) ? 1.0 : f; a = a === true ? true : false; diff --git a/src/utils/function.js b/src/utils/function.js index 10450f0..31cb72e 100644 --- a/src/utils/function.js +++ b/src/utils/function.js @@ -15,11 +15,11 @@ export default { validate, }; -export function args(argumentsObj, skipCount) { +function args(argumentsObj, skipCount) { return [].slice.call(argumentsObj, skipCount || 0); } -export function attempt(func, scope) { +function attempt(func, scope) { try { const args = args(arguments); const result = call.apply(null, args); @@ -29,7 +29,7 @@ export function attempt(func, scope) { } } -export function bind(func, scope) { +function bind(func, scope) { const argsBinded = args(arguments); return function () { const args = args(arguments); @@ -38,7 +38,7 @@ export function bind(func, scope) { }; } -export function call(func, scope) { +function call(func, scope) { if (TypeUtil.isString(func)) { func = scope[func]; } @@ -47,7 +47,7 @@ export function call(func, scope) { return result; } -export function debounce(milliseconds, func, scope) { +function debounce(milliseconds, func, scope) { let timeoutId; return function () { if (timeoutId) { @@ -71,7 +71,7 @@ export function debounce(milliseconds, func, scope) { */ } -export function delay(milliseconds, func, scope) { +function delay(milliseconds, func, scope) { const args = args(arguments, 1); const wrapper = bind.apply(null, args); const timeoutId = setTimeout(wrapper, milliseconds); @@ -84,7 +84,7 @@ export function delay(milliseconds, func, scope) { }; } -export function memoize(func, scope) { +function memoize(func, scope) { const cache = {}; return function () { @@ -97,11 +97,11 @@ export function memoize(func, scope) { }; } -export function noop() { +function noop() { return true; } -export function repeat(milliseconds, func, scope) { +function repeat(milliseconds, func, scope) { const args = args(arguments, 1); const wrapper = bind.apply(null, args); const intervalId = setInterval(wrapper, milliseconds); @@ -114,7 +114,7 @@ export function repeat(milliseconds, func, scope) { }; } -export function throttle(milliseconds, func, scope) { +function throttle(milliseconds, func, scope) { let timeoutId; return (...args) => { if (timeoutId) { @@ -128,7 +128,7 @@ export function throttle(milliseconds, func, scope) { }; } -export function until(milliseconds, func, scope) { +function until(milliseconds, func, scope) { const args = args(arguments, 1); const wrapper = bind.apply(null, args); const interval = repeat(milliseconds, () => { @@ -139,7 +139,7 @@ export function until(milliseconds, func, scope) { return interval; } -export function validate(argumentsObj) { +function validate(argumentsObj) { // validate(arguments, 'number', 'string', ['string', 'undefined']); const args = args(argumentsObj); diff --git a/src/utils/geom/point.js b/src/utils/geom/point.js index 42c1151..7a3af84 100644 --- a/src/utils/geom/point.js +++ b/src/utils/geom/point.js @@ -20,39 +20,39 @@ export default { translate, }; -export function add(a, b) { +function add(a, b) { return { x: a.x + b.x, y: a.y + b.y, }; } -export function angle(a, b) { +function angle(a, b) { const angle = TrigoUtil.angleDeg(b.y - a.y, b.x - a.x); return TrigoUtil.cycleDeg(angle); } -export function cross(a, b) { +function cross(a, b) { // z coordinate of the cross product; x and y coordinates are zero return a.x * b.y - a.y * b.x; } -export function distance(a, b) { +function distance(a, b) { const dX = b.x - a.x; const dY = b.y - a.y; return Math.sqrt(dX * dX + dY * dY); } -export function dot(a, b) { +function dot(a, b) { return a.x * b.x + a.y * b.y; } -export function equals(a, b, tolerance) { +function equals(a, b, tolerance) { const f = MathUtil.equals; return f(a.x, b.x, tolerance) && f(a.y, b.y, tolerance); } -export function interpolate(a, b, t) { +function interpolate(a, b, t) { const f = InterpolationUtil.linear; return { x: f(a.x, b.x, t), @@ -60,22 +60,22 @@ export function interpolate(a, b, t) { }; } -export function length(p) { +function length(p) { return PointUtil.distance(p, { x: 0, y: 0 }); } -export function magnitude(p) { +function magnitude(p) { return PointUtil.length(p); } -export function project(p, distance, angle) { +function project(p, distance, angle) { return { x: p.x + distance * TrigoUtil.cosDeg(angle), y: p.y + distance * TrigoUtil.sinDeg(angle), }; } -export function rect(points) { +function rect(points) { let point; const pointsX = []; const pointsY = []; @@ -101,7 +101,7 @@ export function rect(points) { }; } -export function rotate(p, angle, pivot) { +function rotate(p, angle, pivot) { const pointPivot = pivot || { x: 0.0, y: 0.0 }; const pointRel = PointUtil.subtract(p, pointPivot); const angleCos = TrigoUtil.cosDeg(angle); @@ -114,21 +114,21 @@ export function rotate(p, angle, pivot) { return pointAbs; } -export function scale(p, amount) { +function scale(p, amount) { return { x: p.x * amount, y: p.y * amount, }; } -export function subtract(a, b) { +function subtract(a, b) { return { x: a.x - b.x, y: a.y - b.y, }; } -export function translate(p, x, y) { +function translate(p, x, y) { return { x: p.x + x, y: p.y + y, diff --git a/src/utils/hex.js b/src/utils/hex.js index cfe909e..e631543 100644 --- a/src/utils/hex.js +++ b/src/utils/hex.js @@ -3,11 +3,11 @@ export default { encodeInt, }; -export function decodeInt(s) { +function decodeInt(s) { return parseInt(s, 16); } -export function encodeInt(n) { +function encodeInt(n) { const hex = Math.round(n).toString(16).toUpperCase(); return hex.length === 1 ? `0${hex}` : hex; } diff --git a/src/utils/interpolation.js b/src/utils/interpolation.js index 41ed249..e0b5e0d 100644 --- a/src/utils/interpolation.js +++ b/src/utils/interpolation.js @@ -7,23 +7,23 @@ export default { scalar, }; -export function bilinear(a, b, c, d, u, v) { +function bilinear(a, b, c, d, u, v) { const f = linear; return f(f(a, b, u), f(c, d, u), v); } -export function linear(a, b, t) { +function linear(a, b, t) { // return (a + ((b - a) * t)); return a * (1.0 - t) + b * t; } -export function multilinear(list, t) { +function multilinear(list, t) { const s = scalar(list.length - 1, t); const i = s.index; return linear(list[i], list[i + 1], s.t); } -export function scalar(parts, t) { +function scalar(parts, t) { const tScaled = t * parts; const tScaledIndex = Math.floor(tScaled); diff --git a/src/utils/json.js b/src/utils/json.js index 1d97429..6dcf328 100644 --- a/src/utils/json.js +++ b/src/utils/json.js @@ -3,7 +3,7 @@ export default { encode, }; -export function decode(str) { +function decode(str) { let output = ''; try { output = JSON.parse(str); @@ -15,6 +15,6 @@ export function decode(str) { return output; } -export function encode(obj) { +function encode(obj) { return JSON.stringify(obj); } diff --git a/src/utils/math.js b/src/utils/math.js index 50c5b8b..d8c6688 100644 --- a/src/utils/math.js +++ b/src/utils/math.js @@ -3,44 +3,22 @@ import * as FunctionUtil from './function.js'; import * as InterpolationUtil from './interpolation.js'; import * as TypeUtil from './type.js'; -export default { - average, - constrain, - cycle, - equals, - euclideanDistance, - factorial, - gcd, - lcm, - lerp, - map, - nearest, - normalize, - proportion, - roundDecimals, - roundToMultiple, - roundToNearest, - roundToPower, - sign, - summation, -}; - -export function average(values) { +function average(values) { return summation(values) / values.length; } -export function constrain(n, a, b) { +function constrain(n, a, b) { return Math.min(Math.max(n, Math.min(a, b)), Math.max(a, b)); } -export function cycle(n, len, shift) { +function cycle(n, len, shift) { if (!TypeUtil.isNumber(shift)) { shift = 0; } return ((((n - shift) % len) + len) % len) + shift; } -export function equals(a, b, tolerance) { +function equals(a, b, tolerance) { if (!TypeUtil.isNumber(tolerance)) { tolerance = 0.0000000001; } else if (tolerance > 0.0) { @@ -49,7 +27,7 @@ export function equals(a, b, tolerance) { return Math.abs(a - b) <= tolerance; } -export function euclideanDistance(a, b) { +function euclideanDistance(a, b) { // https://en.wikipedia.org/wiki/Euclidean_distance#Higher_dimensions return Math.sqrt( summation( @@ -60,7 +38,7 @@ export function euclideanDistance(a, b) { ); } -export function factorial(n) { +function factorial(n) { let f = 1; for (let i = f; i <= n; i++) { f *= i; @@ -68,7 +46,7 @@ export function factorial(n) { return f; } -export function gcd(a, b) { +function gcd(a, b) { if (a === b) { return a; } @@ -82,27 +60,27 @@ export function gcd(a, b) { const interpolation = InterpolationUtil; -export function lcm(a, b) { +function lcm(a, b) { return (a * b) / gcd(a, b); } -export function lerp(a, b, t) { +function lerp(a, b, t) { return InterpolationUtil.linear(a, b, t); } -export function map(n, a, b, c, d) { +function map(n, a, b, c, d) { return InterpolationUtil.linear(c, d, normalize(n, a, b)); } -export function nearest(n, a, b) { +function nearest(n, a, b) { return Math.abs(n - a) <= Math.abs(n - b) ? a : b; } -export function normalize(n, a, b) { +function normalize(n, a, b) { return (n - a) / (b - a); } -export function proportion(a, b, x, y) { +function proportion(a, b, x, y) { const args = FunctionUtil.args(arguments); const argsOk = ArrayUtil.clean(args); if (argsOk.length !== 3) { @@ -122,15 +100,15 @@ export function proportion(a, b, x, y) { return NaN; } -export function roundDecimals(n, decimalsPlaces) { +function roundDecimals(n, decimalsPlaces) { return Number(n.toFixed(decimalsPlaces || 2)); } -export function roundToMultiple(n, multiplier) { +function roundToMultiple(n, multiplier) { return Math.round(n / multiplier) * multiplier; } -export function roundToNearest(n, values) { +function roundToNearest(n, values) { const a = ArrayUtil.sort(values.concat()); let i = 0, j = 0, @@ -153,18 +131,41 @@ export function roundToNearest(n, values) { return nearest(n, a[i], a[j]); } -export function roundToPower(n, base) { +function roundToPower(n, base) { return base ** Math.round(Math.log(n) / Math.log(base)); } -export function sign(n) { +function sign(n) { return n >= 0.0 ? 1 : -1; } -export function summation(values) { +function summation(values) { let s = 0.0; for (let i = 0, j = values.length; i < j; i++) { s += values[i]; } return s; } + +export default { + average, + constrain, + cycle, + equals, + euclideanDistance, + factorial, + gcd, + interpolation, + lcm, + lerp, + map, + nearest, + normalize, + proportion, + roundDecimals, + roundToMultiple, + roundToNearest, + roundToPower, + sign, + summation, +}; diff --git a/src/utils/number.js b/src/utils/number.js index 3891f8c..0cad9b7 100644 --- a/src/utils/number.js +++ b/src/utils/number.js @@ -8,31 +8,31 @@ export default { isPrime, }; -export function isBetween(n, min, max) { +function isBetween(n, min, max) { return n >= min && n <= max; } -export function isEven(n) { +function isEven(n) { return n % 2.0 === 0.0 && !isFloat(n); } -export function isFloat(n) { +function isFloat(n) { return n % 1 !== 0; } -export function isNegative(n) { +function isNegative(n) { return n < 0.0; } -export function isOdd(n) { +function isOdd(n) { return n % 2.0 !== 0.0 && !isFloat(n); } -export function isPositive(n) { +function isPositive(n) { return n >= 0.0; } -export function isPrime(n) { +function isPrime(n) { if (typeof n !== 'number' || Number.isNaN(n) || isFloat(n)) { return false; } diff --git a/src/utils/object.js b/src/utils/object.js index 75491d2..e80ff82 100644 --- a/src/utils/object.js +++ b/src/utils/object.js @@ -8,28 +8,7 @@ import * as StringUtil from './string.js'; import * as TypeUtil from './type.js'; import * as URLUtil from './url.js'; -export default { - assign, - clean, - clone, - decodeBase64, - decodeJSON, - decodeParameters, - encodeBase64, - encodeJSON, - encodeParameters, - equals, - is, - keypath, - keys, - length, - map, - merge, - search, - values, -}; - -export function assign(obj, other) { +function assign(obj, other) { const objs = [other].concat(FunctionUtil.args(arguments, 2)); let i, j, k; for (i = 0, j = objs.length; i < j; i++) { @@ -40,7 +19,7 @@ export function assign(obj, other) { return obj; } -export function clean(obj, hard) { +function clean(obj, hard) { const keys = keys(obj); let key, val; for (let i = 0, j = keys.length; i < j; i++) { @@ -75,7 +54,7 @@ export function clean(obj, hard) { return obj; } -export function clone(obj) { +function clone(obj) { const cln = {}; const keys = keys(obj); let key, val; @@ -100,27 +79,27 @@ export function clone(obj) { return cln; } -export function decodeBase64(str) { +function decodeBase64(str) { return JSONUtil.decode(Base64Util.decode(str)); } -export function decodeJSON(str) { +function decodeJSON(str) { return JSONUtil.decode(str); } -export function decodeParameters(str) { +function decodeParameters(str) { return URLUtil.getParametersDict(`?${str}`); } -export function encodeBase64(obj) { +function encodeBase64(obj) { return Base64Util.encode(JSONUtil.encode(obj)); } -export function encodeJSON(obj) { +function encodeJSON(obj) { return JSONUtil.encode(obj); } -export function encodeParameters(obj, keysFilter) { +function encodeParameters(obj, keysFilter) { const objClean = clean(clone(obj), true); const keys = TypeUtil.isArray(keysFilter) ? keysFilter : keys(obj, true); let key; @@ -138,7 +117,7 @@ export function encodeParameters(obj, keysFilter) { return keyval.join('&'); } -export function equals(obj1, obj2) { +function equals(obj1, obj2) { if (obj1 === obj2 || is(obj1, obj2)) { return true; } @@ -184,7 +163,7 @@ export function equals(obj1, obj2) { return true; } -export function is(obj1, obj2) { +function is(obj1, obj2) { // https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Object/is if (!Object.is) { Object.is = (x, y) => { @@ -202,7 +181,7 @@ export function is(obj1, obj2) { return Object.is(obj1, obj2); } -const keypath = { +export const keypath = { get(obj, path, defaultValue) { const keys = path.split('.'); let key; @@ -239,7 +218,7 @@ const keypath = { }, }; -export function keys(obj, sorted) { +function keys(obj, sorted) { const k = Object.keys(obj); if (sorted === true) { k.sort(); @@ -247,11 +226,11 @@ export function keys(obj, sorted) { return k; } -export function length(obj) { +function length(obj) { return keys(obj).length; } -export function map(obj, func) { +function map(obj, func) { const m = {}; keys(obj).forEach((k) => { m[k] = func.call(null, obj[k], k, obj); @@ -259,13 +238,13 @@ export function map(obj, func) { return m; } -export function merge(obj1, obj2) { +function merge(obj1, obj2) { const objs = [{}, obj1, obj2].concat(FunctionUtil.args(arguments, 2)); const obj = assign.apply(null, objs); return obj; } -export function search(objs, filter) { +function search(objs, filter) { // prettier-ignore const results = []; let i, j, k, m, obj, res, keys, key, val; @@ -287,7 +266,7 @@ export function search(objs, filter) { return results; } -export function values(obj, sorted) { +function values(obj, sorted) { const keys = keys(obj, sorted); const vals = []; for (let i = 0, j = keys.length; i < j; i++) { @@ -295,3 +274,24 @@ export function values(obj, sorted) { } return vals; } + +export default { + assign, + clean, + clone, + decodeBase64, + decodeJSON, + decodeParameters, + encodeBase64, + encodeJSON, + encodeParameters, + equals, + is, + keypath, + keys, + length, + map, + merge, + search, + values, +}; diff --git a/src/utils/random.js b/src/utils/random.js index aa95bde..10f1c5a 100644 --- a/src/utils/random.js +++ b/src/utils/random.js @@ -14,40 +14,40 @@ export default { string, }; -export function argument() { +function argument() { const args = FunctionUtil.args(arguments); return element(args); } -export function bit(chance) { +function bit(chance) { return boolean(chance) ? 1 : 0; } -export function boolean(chance) { +function boolean(chance) { return Boolean(Math.random() < (isNaN(chance) ? 0.5 : chance)); } -export function color() { +function color() { return integer(0, 0xffffff); } -export function element(array) { +function element(array) { return array[index(array)]; } -export function float(min, max) { +function float(min, max) { return min + Math.random() * (max - min); } -export function index(array) { +function index(array) { return integer(0, array.length - 1); } -export function integer(min, max) { +function integer(min, max) { return Math.floor(Math.round(float(min - 0.5, max + 0.5))); } -export function map(func, count) { +function map(func, count) { const m = []; for (let i = 0; i < count; i++) { m.push(func(i)); @@ -55,11 +55,11 @@ export function map(func, count) { return m; } -export function sign(chance) { +function sign(chance) { return boolean(chance) ? 1 : -1; } -export function string( +function string( length, charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!?@#$%^&*(-_=+).,;' ) { diff --git a/src/utils/string.js b/src/utils/string.js index 29333e5..d8dc0d5 100644 --- a/src/utils/string.js +++ b/src/utils/string.js @@ -26,22 +26,22 @@ export default { trimRight, }; -export function contains(str, occurrence) { +function contains(str, occurrence) { return Boolean(str.includes(occurrence)); } -export function endsWith(str, search) { +function endsWith(str, search) { // if (String.prototype.endsWith) { // return str.endsWith(search); // } return str.substring(str.length - search.length, str.length) === search; } -export function icontains(str, occurrence) { +function icontains(str, occurrence) { return contains(str.toLowerCase(), occurrence.toLowerCase()); } -export function levenshteinDistance(a, b) { +function levenshteinDistance(a, b) { // taken from GitHub here: // https://gist.github.com/andrei-m/982927#gistcomment-586471 const m = []; @@ -64,14 +64,14 @@ export function levenshteinDistance(a, b) { return m[b.length][a.length]; } -export function levenshteinSimilarity(a, b) { +function levenshteinSimilarity(a, b) { const d = levenshteinDistance(a, b); const l = Math.max(a.length, b.length); return l === 0 ? 1.0 : 1.0 - d / l; } -export function padLeft(str, len, char) { +function padLeft(str, len, char) { let i = str.length; while (i < len) { str = char + str; @@ -80,7 +80,7 @@ export function padLeft(str, len, char) { return str; } -export function padRight(str, len, char) { +function padRight(str, len, char) { let i = str.length; while (i < len) { str = str + char; @@ -89,11 +89,11 @@ export function padRight(str, len, char) { return str; } -export function padZeros(str, len) { +function padZeros(str, len) { return padLeft(String(str), len, '0'); } -export function render(str, data, placeholderStart, placeholderEnd) { +function render(str, data, placeholderStart, placeholderEnd) { const pattern = `${placeholderStart || '{{'}[\\s]*([a-zA-Z0-9\\-\\_]+){1}[\\s]*${placeholderEnd || '}}'}`; const regex = new RegExp(pattern, 'g'); const matches = Array.from(str.matchAll(regex)); @@ -110,26 +110,26 @@ export function render(str, data, placeholderStart, placeholderEnd) { return str; } -export function replace(str, occurrence, replacement, caseSensitive) { +function replace(str, occurrence, replacement, caseSensitive) { const pattern = occurrence.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); const flags = caseSensitive === false ? 'gi' : 'g'; const regex = new RegExp(pattern, flags); return str.replace(regex, String(replacement)); } -export function reverse(str) { +function reverse(str) { const chars = str.split(''); chars.reverse(); return chars.join(''); } -export function rotate(str, count) { +function rotate(str, count) { let chars = str.split(''); chars = ArrayUtil.rotate(chars, count); return chars.join(''); } -export function slugify(str) { +function slugify(str) { const sep = '-'; // prettier-ignore const chars = { @@ -201,30 +201,30 @@ export function slugify(str) { return str; } -export function startsWith(str, search) { +function startsWith(str, search) { // if (String.prototype.startsWith) { // return str.startsWith(search); // } return str.substr(0, search.length) === search; } -export function toConstantCase(str) { +function toConstantCase(str) { return str.replace(/[\s]/gm, '_').toUpperCase(); } -export function toRandomCase(str) { +function toRandomCase(str) { return str.replace(/./gm, (match) => { return RandomUtil.boolean() ? match.toUpperCase() : match.toLowerCase(); }); } -export function toTitleCase(str, toLowerCaseRest) { +function toTitleCase(str, toLowerCaseRest) { return str.replace(/[^\'\‘\’\`\-\s]+/gm, (match) => { return toUpperCaseFirst(match, toLowerCaseRest); }); } -export function toUpperCaseFirst(str, toLowerCaseRest) { +function toUpperCaseFirst(str, toLowerCaseRest) { if (str.length === 0) { return str; } @@ -233,17 +233,17 @@ export function toUpperCaseFirst(str, toLowerCaseRest) { return f + (toLowerCaseRest === true ? r.toLowerCase() : r); } -export function trim(str) { +function trim(str) { // return str.replace(/^[\s]+|(? DEG_180) { return -DEG_360 + degDiff; @@ -73,7 +73,7 @@ export function fastDeg(degFrom, degTo) { } } -export function haversine(lat1, lon1, lat2, lon2, km) { +function haversine(lat1, lon1, lat2, lon2, km) { const degToRad = degToRad; const lat1Rad = degToRad(lat1); const lon1Rad = degToRad(lon1); @@ -96,18 +96,18 @@ export function haversine(lat1, lon1, lat2, lon2, km) { return distance; } -export function hypo(distanceX, distanceY) { +function hypo(distanceX, distanceY) { return Math.sqrt(distanceX * distanceX + distanceY * distanceY); } -export function radToDeg(rad) { +function radToDeg(rad) { return rad * RAD_TO_DEG; } -export function sinDeg(deg) { +function sinDeg(deg) { return Math.sin(deg * DEG_TO_RAD); } -export function tanDeg(deg) { +function tanDeg(deg) { return Math.tan(deg * DEG_TO_RAD); } diff --git a/src/utils/type.js b/src/utils/type.js index fbd66e6..57b629c 100644 --- a/src/utils/type.js +++ b/src/utils/type.js @@ -40,7 +40,7 @@ const UNDEFINED = 'undefined'; const UNKNOWN = 'unknown'; // const XML = 'xml'; -export function isArray(val) { +function isArray(val) { // https://stackoverflow.com/questions/4775722/check-if-object-is-array if (Array.isArray) { return Array.isArray(val); @@ -48,7 +48,7 @@ export function isArray(val) { return Object.prototype.toString.call(val) === '[object Array]'; } -export function isBase64(val) { +function isBase64(val) { if (isString(val)) { try { if (Base64Util.decode(val) !== '') { @@ -61,23 +61,23 @@ export function isBase64(val) { return false; } -export function isBoolean(val) { +function isBoolean(val) { return typeof val === 'boolean'; } -export function isDate(val) { +function isDate(val) { return Object.prototype.toString.call(val) === '[object Date]'; } -export function isError(val) { +function isError(val) { return val instanceof Error; } -export function isFunction(val) { +function isFunction(val) { return typeof val === 'function'; } -export function isJSON(val) { +function isJSON(val) { if (isString(val)) { try { JSONUtil.decode(val); @@ -89,42 +89,42 @@ export function isJSON(val) { return false; } -export function isModule(val) { +function isModule(val) { return Object.prototype.toString.call(val) === '[object Module]'; } -export function isNaN(val) { +function isNaN(val) { return ObjectUtil.is(val, NaN); } -export function isNone(val) { +function isNone(val) { return isUndefined(val) || isNull(val) || isNaN(val); } -export function isNumber(val) { +function isNumber(val) { return typeof val === 'number' && !isNaN(val) && isFinite(val); } -export function isNull(val) { +function isNull(val) { return val === null; } -export function isObject(val) { +function isObject(val) { return ( typeof val === 'object' && Object.prototype.toString.call(val) === '[object Object]' ); } -export function isRegExp(val) { +function isRegExp(val) { return val instanceof RegExp; } -export function isString(val) { +function isString(val) { return typeof val === 'string'; } -export function isType(val) { +function isType(val) { switch (val) { case ARRAY: case BOOLEAN: @@ -147,16 +147,16 @@ export function isType(val) { } } -export function isUndefined(val) { +function isUndefined(val) { return typeof val === 'undefined'; } -// export function isXML(val) { +// function isXML(val) { // // TODO // return false; // }; -export function of(val) { +function of(val) { if (isArray(val)) { return ARRAY; } else if (isBoolean(val)) { diff --git a/src/utils/url.js b/src/utils/url.js index e58d960..291f5be 100644 --- a/src/utils/url.js +++ b/src/utils/url.js @@ -13,7 +13,7 @@ export default { isLocalhost, }; -export function getDomain(url = getURL(), level) { +function getDomain(url = getURL(), level) { // remove protocol, www and port let domain = url.replace(/(^\w+:|^)\/\/(www\.)?/, ''); domain = domain.split(':')[0]; @@ -28,16 +28,16 @@ export function getDomain(url = getURL(), level) { return domainName; } -export function getParameterByName(url, name, defaultValue) { +function getParameterByName(url, name, defaultValue) { const paramsDict = getParameters(url); return name in paramsDict ? paramsDict[name] || defaultValue || '' : defaultValue; } -export function getParameters(url) { +function getParameters(url) { return getParametersDict(url); } -export function getParametersDict(url) { +function getParametersDict(url) { const paramsList = getParametersList(url); let param; const paramsDict = {}; @@ -48,7 +48,7 @@ export function getParametersDict(url) { return paramsDict; } -export function getParametersList(url) { +function getParametersList(url) { const paramsString = getParametersString(url); const paramsList = []; const paramsRE = /(([\w\-]+){1}(\=([^\&\n\r\t]*){1})?)/g; @@ -63,7 +63,7 @@ export function getParametersList(url) { return paramsList; } -export function getParametersString(url = getURL()) { +function getParametersString(url = getURL()) { const queryStringPosition = url.indexOf('?'); // prettier-ignore let queryString = (queryStringPosition > -1 ? url.substr(queryStringPosition + 1) : ''); @@ -74,7 +74,7 @@ export function getParametersString(url = getURL()) { return queryString; } -export function getURL() { +function getURL() { let url = ''; try { url = window.location.href; @@ -84,23 +84,23 @@ export function getURL() { return url; } -export function hasParameter(url, name) { +function hasParameter(url, name) { return name in getParametersDict(url); } -export function isFile(url) { +function isFile(url) { return (url || getURL()).indexOf('file://') === 0; } -export function isHttp(url) { +function isHttp(url) { return (url || getURL()).indexOf('http://') === 0; } -export function isHttps(url) { +function isHttps(url) { return (url || getURL()).indexOf('https://') === 0; } -export function isLocalhost(url) { +function isLocalhost(url) { const re = /^(https?\:\/\/)(localhost(.[a-z0-9\-])*|127\.0\.0\.1)(\:[\d]+)?(\/(.)*)?$/; return re.test(url || getURL()); diff --git a/src/utils/utf8.js b/src/utils/utf8.js index 298f58f..ba245de 100644 --- a/src/utils/utf8.js +++ b/src/utils/utf8.js @@ -3,7 +3,7 @@ export default { encode, }; -export function decode(input) { +function decode(input) { return decodeURIComponent(escape(input)); // var output = ''; @@ -35,7 +35,7 @@ export function decode(input) { // return output; } -export function encode(input) { +function encode(input) { return unescape(encodeURIComponent(input)); // input = input.replace(/\r\n/g, '\n'); diff --git a/src/utils/xml.js b/src/utils/xml.js index 98cbbff..32e69da 100644 --- a/src/utils/xml.js +++ b/src/utils/xml.js @@ -1,6 +1,6 @@ export default { removeNamespaces }; -// export function decode(str) { +// function decode(str) { // // https://stackoverflow.com/questions/17604071/parse-xml-using-javascript // var doc = null; // try { @@ -18,13 +18,13 @@ export default { removeNamespaces }; // return doc; // }; -// export function encode(doc) { +// function encode(doc) { // var ser = new XMLSerializer(); // var str = ser.serializeToString(doc); // return str; // }; -export function removeNamespaces(str) { +function removeNamespaces(str) { return str.replace(/(\<(.|\n)+?\>)/g, (tag) => { return tag.replace(/(\s|\<\/?){1}([\w]+\:){1}/g, '$1'); }); From 0a6da6f69c99aa4a0cbda0e8b499a111f5599e75 Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Fri, 17 Jan 2025 21:57:51 +0100 Subject: [PATCH 14/22] Move export to the bottom. --- src/utils.js | 42 +++++++++--------- src/utils/array.js | 64 +++++++++++++-------------- src/utils/base64.js | 6 +-- src/utils/color.js | 6 +-- src/utils/color/cmyk.js | 6 +-- src/utils/color/hex.js | 42 +++++++++--------- src/utils/color/rgb.js | 36 +++++++-------- src/utils/date.js | 38 ++++++++-------- src/utils/ease.js | 80 ++++++++++++++++----------------- src/utils/function.js | 32 +++++++------- src/utils/geom.js | 2 +- src/utils/geom/point.js | 42 +++++++++--------- src/utils/hex.js | 10 ++--- src/utils/interpolation.js | 16 +++---- src/utils/json.js | 10 ++--- src/utils/math.js | 8 ++-- src/utils/number.js | 20 ++++----- src/utils/object.js | 20 ++++----- src/utils/random.js | 30 ++++++------- src/utils/string.js | 54 +++++++++++------------ src/utils/test.js | 90 +++++++++++++++++++------------------- src/utils/trigo.js | 45 +++++++++++-------- src/utils/type.js | 65 ++++++++++++++++----------- src/utils/url.js | 30 ++++++------- src/utils/utf8.js | 10 ++--- src/utils/xml.js | 4 +- 26 files changed, 415 insertions(+), 393 deletions(-) diff --git a/src/utils.js b/src/utils.js index d156d95..a2e462b 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,24 +1,24 @@ -import * as ArrayUtil from './utils/array.js'; -import * as Base64Util from './utils/base64.js'; -import * as ColorUtil from './utils/color.js'; -import * as DateUtil from './utils/date.js'; -import * as EaseUtil from './utils/ease.js'; -import * as FunctionUtil from './utils/function.js'; -import * as GeomUtil from './utils/geom.js'; -import * as HexUtil from './utils/hex.js'; -import * as InterpolationUtil from './utils/interpolation.js'; -import * as JSONUtil from './utils/json.js'; -import * as MathUtil from './utils/math.js'; -import * as NumberUtil from './utils/number.js'; -import * as ObjectUtil from './utils/object.js'; -import * as RandomUtil from './utils/random.js'; -import * as StringUtil from './utils/string.js'; -import * as TestUtil from './utils/test.js'; -import * as TrigoUtil from './utils/trigo.js'; -import * as TypeUtil from './utils/type.js'; -import * as URLUtil from './utils/url.js'; -import * as UTF8Util from './utils/utf8.js'; -import * as XMLUtil from './utils/xml.js'; +import ArrayUtil from './utils/array.js'; +import Base64Util from './utils/base64.js'; +import ColorUtil from './utils/color.js'; +import DateUtil from './utils/date.js'; +import EaseUtil from './utils/ease.js'; +import FunctionUtil from './utils/function.js'; +import GeomUtil from './utils/geom.js'; +import HexUtil from './utils/hex.js'; +import InterpolationUtil from './utils/interpolation.js'; +import JSONUtil from './utils/json.js'; +import MathUtil from './utils/math.js'; +import NumberUtil from './utils/number.js'; +import ObjectUtil from './utils/object.js'; +import RandomUtil from './utils/random.js'; +import StringUtil from './utils/string.js'; +import TestUtil from './utils/test.js'; +import TrigoUtil from './utils/trigo.js'; +import TypeUtil from './utils/type.js'; +import URLUtil from './utils/url.js'; +import UTF8Util from './utils/utf8.js'; +import XMLUtil from './utils/xml.js'; export const utils = { diff --git a/src/utils/array.js b/src/utils/array.js index a51aaab..46ad953 100644 --- a/src/utils/array.js +++ b/src/utils/array.js @@ -1,35 +1,10 @@ -import * as DateUtil from './date.js'; -import * as FunctionUtil from './function.js'; -import * as MathUtil from './math.js'; -import * as ObjectUtil from './object.js'; -import * as RandomUtil from './random.js'; -import * as StringUtil from './string.js'; -import * as TypeUtil from './type.js'; - -export default { - all, - any, - clean, - clone, - contains, - equals, - flatten, - index, - insert, - max, - min, - paginate, - reduce, - replace, - remove, - rotate, - shuffle, - sort, - sum, - unique, - unzip, - zip, -}; +import DateUtil from './date.js'; +import FunctionUtil from './function.js'; +import MathUtil from './math.js'; +import ObjectUtil from './object.js'; +import RandomUtil from './random.js'; +import StringUtil from './string.js'; +import TypeUtil from './type.js'; function all(list) { return list.every((item) => { @@ -358,3 +333,28 @@ function zip(list1, list2) { } return list; } + +export default { + all, + any, + clean, + clone, + contains, + equals, + flatten, + index, + insert, + max, + min, + paginate, + reduce, + replace, + remove, + rotate, + shuffle, + sort, + sum, + unique, + unzip, + zip, +}; diff --git a/src/utils/base64.js b/src/utils/base64.js index b0db815..807d27a 100644 --- a/src/utils/base64.js +++ b/src/utils/base64.js @@ -1,6 +1,4 @@ -import * as UTF8Util from './utf8.js'; - -export default { decode, encode }; +import UTF8Util from './utf8.js'; const CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; // prettier-ignore @@ -96,3 +94,5 @@ function encode(str) { return output; } + +export default { decode, encode }; diff --git a/src/utils/color.js b/src/utils/color.js index 4a89dc6..819c05f 100644 --- a/src/utils/color.js +++ b/src/utils/color.js @@ -1,6 +1,6 @@ -import * as CMYKColorUtil from './color/cmyk.js'; -import * as HexColorUtil from './color/hex.js'; -import * as RGBColorUtil from './color/rgb.js'; +import CMYKColorUtil from './color/cmyk.js'; +import HexColorUtil from './color/hex.js'; +import RGBColorUtil from './color/rgb.js'; export default { cmyk: CMYKColorUtil, diff --git a/src/utils/color/cmyk.js b/src/utils/color/cmyk.js index 07f0e3b..5184c6c 100644 --- a/src/utils/color/cmyk.js +++ b/src/utils/color/cmyk.js @@ -1,6 +1,4 @@ -import * as RGBColorUtil from './rgb.js'; - -export default { toHex, toRgb, toString, toStringCSS }; +import RGBColorUtil from './rgb.js'; // function average(colors) { // return RGBColorUtil.toCmyk( @@ -117,3 +115,5 @@ function toStringCSS(color) { // prettier-ignore return `cmyk(${String(color.c)}%, ${String(color.m)}%, ${String(color.y)}%, ${String(color.k)}%)`; } + +export default { toHex, toRgb, toString, toStringCSS }; diff --git a/src/utils/color/hex.js b/src/utils/color/hex.js index 527df02..0389095 100644 --- a/src/utils/color/hex.js +++ b/src/utils/color/hex.js @@ -1,24 +1,9 @@ -import * as RGBColorUtil from './rgb.js'; -import * as HexUtil from '../hex.js'; -import * as InterpolationUtil from '../interpolation.js'; -import * as MathUtil from '../math.js'; -import * as ObjectUtil from '../object.js'; -import * as TypeUtil from '../type.js'; - -export default { - average, - distance, - gradient, - gradientMatrix, - interpolateBilinear, - interpolateLinear, - interpolateMultilinear, - nearest, - toCmyk, - toRgb, - toString, - toStringCSS, -}; +import RGBColorUtil from './rgb.js'; +import HexUtil from '../hex.js'; +import InterpolationUtil from '../interpolation.js'; +import MathUtil from '../math.js'; +import ObjectUtil from '../object.js'; +import TypeUtil from '../type.js'; function average(colors) { return RGBColorUtil.toHex( @@ -178,3 +163,18 @@ function toString(color, prefix) { function toStringCSS(color) { return toString(color, '#'); } + +export default { + average, + distance, + gradient, + gradientMatrix, + interpolateBilinear, + interpolateLinear, + interpolateMultilinear, + nearest, + toCmyk, + toRgb, + toString, + toStringCSS, +}; diff --git a/src/utils/color/rgb.js b/src/utils/color/rgb.js index e716095..320624e 100644 --- a/src/utils/color/rgb.js +++ b/src/utils/color/rgb.js @@ -1,21 +1,6 @@ -import * as HexUtil from '../hex.js'; -import * as InterpolationUtil from '../interpolation.js'; -import * as MathUtil from '../math.js'; - -export default { - average, - distance, - gradient, - gradientMatrix, - interpolateBilinear, - interpolateLinear, - interpolateMultilinear, - nearest, - toCmyk, - toHex, - toString, - toStringCSS, -}; +import HexUtil from '../hex.js'; +import InterpolationUtil from '../interpolation.js'; +import MathUtil from '../math.js'; function average(colors) { let c; @@ -290,3 +275,18 @@ function toStringCSS(color) { // prettier-ignore return `rgba(${String(color.r)}, ${String(color.g)}, ${String(color.b)}, ${String(isNaN(color.a) ? 1.0 : color.a)})`; } + +export default { + average, + distance, + gradient, + gradientMatrix, + interpolateBilinear, + interpolateLinear, + interpolateMultilinear, + nearest, + toCmyk, + toHex, + toString, + toStringCSS, +}; diff --git a/src/utils/date.js b/src/utils/date.js index 1814879..dabe137 100644 --- a/src/utils/date.js +++ b/src/utils/date.js @@ -1,22 +1,4 @@ -import * as StringUtil from './string.js'; - -export default { - clone, - constrain, - format, - identifier, - isFuture, - isPast, - max, - min, - normalize, - parse, - timestamp, - today, - tomorrow, - yesterday, - yyyymmdd, -}; +import StringUtil from './string.js'; function clone(date) { return new Date(date.getTime()); @@ -225,3 +207,21 @@ function yyyymmdd(date, separator) { StringUtil.padZeros(month, 2) + sep + StringUtil.padZeros(day, 2)); } + +export default { + clone, + constrain, + format, + identifier, + isFuture, + isPast, + max, + min, + normalize, + parse, + timestamp, + today, + tomorrow, + yesterday, + yyyymmdd, +}; diff --git a/src/utils/ease.js b/src/utils/ease.js index 167c09e..7954a3d 100644 --- a/src/utils/ease.js +++ b/src/utils/ease.js @@ -1,43 +1,3 @@ -export default { - backIn, - backInOut, - backOut, - bounceIn, - bounceInOut, - bounceOut, - circularIn, - circularInOut, - circularOut, - cubicIn, - cubicInOut, - cubicOut, - elasticIn, - elasticInOut, - elasticOut, - exponentialIn, - exponentialInOut, - exponentialOut, - none, - quadraticIn, - quadraticInOut, - quadraticOut, - quarticIn, - quarticInOut, - quarticOut, - quinticIn, - quinticInOut, - quinticOut, - sexticIn, - sexticInOut, - sexticOut, - sineIn, - sineInOut, - sineOut, - waveCosine, - waveSawtooth, - waveSine, -}; - function backIn(t, s) { // s = overshoot = 1.70158 s = isNaN(s) ? 1.70158 : s; @@ -382,3 +342,43 @@ function waveSine(t, f, a, i) { w = i ? 1.0 - w : w; return w; } + +export default { + backIn, + backInOut, + backOut, + bounceIn, + bounceInOut, + bounceOut, + circularIn, + circularInOut, + circularOut, + cubicIn, + cubicInOut, + cubicOut, + elasticIn, + elasticInOut, + elasticOut, + exponentialIn, + exponentialInOut, + exponentialOut, + none, + quadraticIn, + quadraticInOut, + quadraticOut, + quarticIn, + quarticInOut, + quarticOut, + quinticIn, + quinticInOut, + quinticOut, + sexticIn, + sexticInOut, + sexticOut, + sineIn, + sineInOut, + sineOut, + waveCosine, + waveSawtooth, + waveSine, +}; diff --git a/src/utils/function.js b/src/utils/function.js index 31cb72e..ff2092c 100644 --- a/src/utils/function.js +++ b/src/utils/function.js @@ -1,19 +1,4 @@ -import * as TypeUtil from './type.js'; - -export default { - args, - attempt, - bind, - call, - debounce, - delay, - memoize, - noop, - repeat, - throttle, - until, - validate, -}; +import TypeUtil from './type.js'; function args(argumentsObj, skipCount) { return [].slice.call(argumentsObj, skipCount || 0); @@ -185,3 +170,18 @@ function validate(argumentsObj) { } } } + +export default { + args, + attempt, + bind, + call, + debounce, + delay, + memoize, + noop, + repeat, + throttle, + until, + validate, +}; diff --git a/src/utils/geom.js b/src/utils/geom.js index c3f57f8..632672d 100644 --- a/src/utils/geom.js +++ b/src/utils/geom.js @@ -1,4 +1,4 @@ -import * as PointUtil from './geom/point.js'; +import PointUtil from './geom/point.js'; export default { point: PointUtil, diff --git a/src/utils/geom/point.js b/src/utils/geom/point.js index 7a3af84..070ca36 100644 --- a/src/utils/geom/point.js +++ b/src/utils/geom/point.js @@ -1,24 +1,6 @@ -import * as MathUtil from '../math.js'; -import * as InterpolationUtil from '../interpolation.js'; -import * as TrigoUtil from '../trigo.js'; - -export default { - add, - angle, - cross, - distance, - dot, - equals, - interpolate, - length, - magnitude, - project, - rect, - rotate, - scale, - subtract, - translate, -}; +import MathUtil from '../math.js'; +import InterpolationUtil from '../interpolation.js'; +import TrigoUtil from '../trigo.js'; function add(a, b) { return { @@ -134,3 +116,21 @@ function translate(p, x, y) { y: p.y + y, }; } + +export default { + add, + angle, + cross, + distance, + dot, + equals, + interpolate, + length, + magnitude, + project, + rect, + rotate, + scale, + subtract, + translate, +}; diff --git a/src/utils/hex.js b/src/utils/hex.js index e631543..58d7d37 100644 --- a/src/utils/hex.js +++ b/src/utils/hex.js @@ -1,8 +1,3 @@ -export default { - decodeInt, - encodeInt, -}; - function decodeInt(s) { return parseInt(s, 16); } @@ -11,3 +6,8 @@ function encodeInt(n) { const hex = Math.round(n).toString(16).toUpperCase(); return hex.length === 1 ? `0${hex}` : hex; } + +export default { + decodeInt, + encodeInt, +}; diff --git a/src/utils/interpolation.js b/src/utils/interpolation.js index e0b5e0d..b4701db 100644 --- a/src/utils/interpolation.js +++ b/src/utils/interpolation.js @@ -1,11 +1,4 @@ -import * as MathUtil from './math.js'; - -export default { - bilinear, - linear, - multilinear, - scalar, -}; +import MathUtil from './math.js'; function bilinear(a, b, c, d, u, v) { const f = linear; @@ -34,3 +27,10 @@ function scalar(parts, t) { const tReduced = tScaled - tIndex; return { index: tIndex, t: tReduced }; } + +export default { + bilinear, + linear, + multilinear, + scalar, +}; diff --git a/src/utils/json.js b/src/utils/json.js index 6dcf328..0ce2472 100644 --- a/src/utils/json.js +++ b/src/utils/json.js @@ -1,8 +1,3 @@ -export default { - decode, - encode, -}; - function decode(str) { let output = ''; try { @@ -18,3 +13,8 @@ function decode(str) { function encode(obj) { return JSON.stringify(obj); } + +export default { + decode, + encode, +}; diff --git a/src/utils/math.js b/src/utils/math.js index d8c6688..26547ea 100644 --- a/src/utils/math.js +++ b/src/utils/math.js @@ -1,7 +1,7 @@ -import * as ArrayUtil from './array.js'; -import * as FunctionUtil from './function.js'; -import * as InterpolationUtil from './interpolation.js'; -import * as TypeUtil from './type.js'; +import ArrayUtil from './array.js'; +import FunctionUtil from './function.js'; +import InterpolationUtil from './interpolation.js'; +import TypeUtil from './type.js'; function average(values) { return summation(values) / values.length; diff --git a/src/utils/number.js b/src/utils/number.js index 0cad9b7..2cdbdd0 100644 --- a/src/utils/number.js +++ b/src/utils/number.js @@ -1,13 +1,3 @@ -export default { - isBetween, - isEven, - isFloat, - isNegative, - isOdd, - isPositive, - isPrime, -}; - function isBetween(n, min, max) { return n >= min && n <= max; } @@ -52,3 +42,13 @@ function isPrime(n) { } return true; } + +export default { + isBetween, + isEven, + isFloat, + isNegative, + isOdd, + isPositive, + isPrime, +}; diff --git a/src/utils/object.js b/src/utils/object.js index e80ff82..c7b5c30 100644 --- a/src/utils/object.js +++ b/src/utils/object.js @@ -1,12 +1,12 @@ -import * as ArrayUtil from './array.js'; -import * as Base64Util from './base64.js'; -import * as DateUtil from './date.js'; -import * as FunctionUtil from './function.js'; -import * as JSONUtil from './json.js'; -import * as MathUtil from './math.js'; -import * as StringUtil from './string.js'; -import * as TypeUtil from './type.js'; -import * as URLUtil from './url.js'; +import ArrayUtil from './array.js'; +import Base64Util from './base64.js'; +import DateUtil from './date.js'; +import FunctionUtil from './function.js'; +import JSONUtil from './json.js'; +import MathUtil from './math.js'; +import StringUtil from './string.js'; +import TypeUtil from './type.js'; +import URLUtil from './url.js'; function assign(obj, other) { const objs = [other].concat(FunctionUtil.args(arguments, 2)); @@ -181,7 +181,7 @@ function is(obj1, obj2) { return Object.is(obj1, obj2); } -export const keypath = { +const keypath = { get(obj, path, defaultValue) { const keys = path.split('.'); let key; diff --git a/src/utils/random.js b/src/utils/random.js index 10f1c5a..c8accbb 100644 --- a/src/utils/random.js +++ b/src/utils/random.js @@ -1,18 +1,4 @@ -import * as FunctionUtil from './function.js'; - -export default { - argument, - bit, - boolean, - color, - element, - float, - index, - integer, - map, - sign, - string, -}; +import FunctionUtil from './function.js'; function argument() { const args = FunctionUtil.args(arguments); @@ -73,3 +59,17 @@ function string( } return s; } + +export default { + argument, + bit, + boolean, + color, + element, + float, + index, + integer, + map, + sign, + string, +}; diff --git a/src/utils/string.js b/src/utils/string.js index d8dc0d5..0295d99 100644 --- a/src/utils/string.js +++ b/src/utils/string.js @@ -1,30 +1,6 @@ -import * as ArrayUtil from './array.js'; -import * as RandomUtil from './random.js'; -import * as TypeUtil from './type.js'; - -export default { - contains, - endsWith, - icontains, - levenshteinDistance, - levenshteinSimilarity, - padLeft, - padRight, - padZeros, - render, - replace, - reverse, - rotate, - slugify, - startsWith, - toConstantCase, - toRandomCase, - toTitleCase, - toUpperCaseFirst, - trim, - trimLeft, - trimRight, -}; +import ArrayUtil from './array.js'; +import RandomUtil from './random.js'; +import TypeUtil from './type.js'; function contains(str, occurrence) { return Boolean(str.includes(occurrence)); @@ -247,3 +223,27 @@ function trimRight(str) { // return str.replace(/\s+$/gm, ''); return str.trimEnd(); } + +export default { + contains, + endsWith, + icontains, + levenshteinDistance, + levenshteinSimilarity, + padLeft, + padRight, + padZeros, + render, + replace, + reverse, + rotate, + slugify, + startsWith, + toConstantCase, + toRandomCase, + toTitleCase, + toUpperCaseFirst, + trim, + trimLeft, + trimRight, +}; diff --git a/src/utils/test.js b/src/utils/test.js index 7ebb473..d9e4661 100644 --- a/src/utils/test.js +++ b/src/utils/test.js @@ -1,48 +1,8 @@ -import * as FunctionUtil from './function.js'; -import * as JSONUtil from './json.js'; -import * as MathUtil from './math.js'; -import * as ObjectUtil from './object.js'; -import * as TypeUtil from './type.js'; - -export default { - assertArray, - assertBase64, - assertBoolean, - assertDate, - assertEqual, - assertError, - assertFalse, - assertFunction, - assertJSON, - assertModule, - assertNaN, - assertNone, - assertNotArray, - assertNotBase64, - assertNotBoolean, - assertNotDate, - assertNotEqual, - assertNotError, - assertNotFunction, - assertNotJSON, - assertNotModule, - assertNotNone, - assertNotNumber, - assertNotNull, - assertNotObject, - assertNotRegExp, - assertNotString, - assertNotUndefined, - assertNumber, - assertNumberAlmostEqual, - assertNull, - assertObject, - assertRegExp, - assertString, - assertThrows, - assertTrue, - assertUndefined, -}; +import FunctionUtil from './function.js'; +import JSONUtil from './json.js'; +import MathUtil from './math.js'; +import ObjectUtil from './object.js'; +import TypeUtil from './type.js'; function assertArray(val, len) { if (!TypeUtil.isArray(val)) { @@ -308,3 +268,43 @@ function assertUndefined(val) { // throw new Error('value is not xml: ' + String(val) + '.'); // } // }; + +export default { + assertArray, + assertBase64, + assertBoolean, + assertDate, + assertEqual, + assertError, + assertFalse, + assertFunction, + assertJSON, + assertModule, + assertNaN, + assertNone, + assertNotArray, + assertNotBase64, + assertNotBoolean, + assertNotDate, + assertNotEqual, + assertNotError, + assertNotFunction, + assertNotJSON, + assertNotModule, + assertNotNone, + assertNotNumber, + assertNotNull, + assertNotObject, + assertNotRegExp, + assertNotString, + assertNotUndefined, + assertNumber, + assertNumberAlmostEqual, + assertNull, + assertObject, + assertRegExp, + assertString, + assertThrows, + assertTrue, + assertUndefined, +}; diff --git a/src/utils/trigo.js b/src/utils/trigo.js index 70dcb2b..5dbd96f 100644 --- a/src/utils/trigo.js +++ b/src/utils/trigo.js @@ -1,22 +1,4 @@ -import * as MathUtil from './math.js'; - -export default { - acosDeg, - angleDeg, - angleRad, - asinDeg, - atanDeg, - atan2Deg, - cosDeg, - cycleDeg, - degToRad, - fastDeg, - haversine, - hypo, - radToDeg, - sinDeg, - tanDeg, -}; +import MathUtil from './math.js'; const DEG_0 = 0.0; const DEG_90 = 90.0; @@ -111,3 +93,28 @@ function sinDeg(deg) { function tanDeg(deg) { return Math.tan(deg * DEG_TO_RAD); } + +export default { + DEG_0, + DEG_90, + DEG_180, + DEG_270, + DEG_360, + DEG_TO_RAD, + RAD_TO_DEG, + acosDeg, + angleDeg, + angleRad, + asinDeg, + atanDeg, + atan2Deg, + cosDeg, + cycleDeg, + degToRad, + fastDeg, + haversine, + hypo, + radToDeg, + sinDeg, + tanDeg, +}; diff --git a/src/utils/type.js b/src/utils/type.js index 57b629c..e4b6eb6 100644 --- a/src/utils/type.js +++ b/src/utils/type.js @@ -1,28 +1,7 @@ -import * as Base64Util from './base64.js'; -import * as JSONUtil from './json.js'; -import * as ObjectUtil from './object.js'; -import * as URLUtil from './url.js'; - -export default { - isArray, - isBase64, - isBoolean, - isDate, - isError, - isFunction, - isJSON, - isModule, - isNaN, - isNone, - isNumber, - isNull, - isObject, - isRegExp, - isString, - isType, - isUndefined, - of, -}; +import Base64Util from './base64.js'; +import JSONUtil from './json.js'; +import ObjectUtil from './object.js'; +import URLUtil from './url.js'; const ARRAY = 'array'; const BOOLEAN = 'boolean'; @@ -191,3 +170,39 @@ function of(val) { return UNKNOWN; } } + +export default { + ARRAY, + BOOLEAN, + DATE, + ERROR, + FUNCTION, + MODULE, + NAN, + NUMBER, + NULL, + OBJECT, + REGEXP, + STRING, + UNDEFINED, + UNKNOWN, + // XML, + isArray, + isBase64, + isBoolean, + isDate, + isError, + isFunction, + isJSON, + isModule, + isNaN, + isNone, + isNumber, + isNull, + isObject, + isRegExp, + isString, + isType, + isUndefined, + of, +}; diff --git a/src/utils/url.js b/src/utils/url.js index 291f5be..41fdd11 100644 --- a/src/utils/url.js +++ b/src/utils/url.js @@ -1,18 +1,3 @@ -export default { - getDomain, - getParameterByName, - getParameters, - getParametersDict, - getParametersList, - getParametersString, - getURL, - hasParameter, - isFile, - isHttp, - isHttps, - isLocalhost, -}; - function getDomain(url = getURL(), level) { // remove protocol, www and port let domain = url.replace(/(^\w+:|^)\/\/(www\.)?/, ''); @@ -105,3 +90,18 @@ function isLocalhost(url) { /^(https?\:\/\/)(localhost(.[a-z0-9\-])*|127\.0\.0\.1)(\:[\d]+)?(\/(.)*)?$/; return re.test(url || getURL()); } + +export default { + getDomain, + getParameterByName, + getParameters, + getParametersDict, + getParametersList, + getParametersString, + getURL, + hasParameter, + isFile, + isHttp, + isHttps, + isLocalhost, +}; diff --git a/src/utils/utf8.js b/src/utils/utf8.js index ba245de..11ed6cd 100644 --- a/src/utils/utf8.js +++ b/src/utils/utf8.js @@ -1,8 +1,3 @@ -export default { - decode, - encode, -}; - function decode(input) { return decodeURIComponent(escape(input)); @@ -64,3 +59,8 @@ function encode(input) { // return output; } + +export default { + decode, + encode, +}; diff --git a/src/utils/xml.js b/src/utils/xml.js index 32e69da..ad9cfcd 100644 --- a/src/utils/xml.js +++ b/src/utils/xml.js @@ -1,5 +1,3 @@ -export default { removeNamespaces }; - // function decode(str) { // // https://stackoverflow.com/questions/17604071/parse-xml-using-javascript // var doc = null; @@ -29,3 +27,5 @@ function removeNamespaces(str) { return tag.replace(/(\s|\<\/?){1}([\w]+\:){1}/g, '$1'); }); } + +export default { removeNamespaces }; From 857e82f4fb96a4a9785205a2d97333dfc18fac42 Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Fri, 17 Jan 2025 22:21:48 +0100 Subject: [PATCH 15/22] Fix main test class. --- test/test.js | 59 ++++++++++++++++++++++++++-------------------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/test/test.js b/test/test.js index 2b8574d..4a93452 100644 --- a/test/test.js +++ b/test/test.js @@ -1,83 +1,84 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; +import utils from '../src/utils.js'; -describe('utils', function () { - it('utils', function () { +const test = utils.test; + +describe('utils', () => { + it('utils', () => { test.assertObject(utils); }); - it('utils.array', function () { + it('utils.array', () => { test.assertObject(utils.array); }); - it('utils.base64', function () { + it('utils.base64', () => { test.assertObject(utils.base64); }); - it('utils.color', function () { + it('utils.color', () => { test.assertObject(utils.color); }); - it('utils.color.cmyk', function () { + it('utils.color.cmyk', () => { test.assertObject(utils.color.cmyk); }); - it('utils.color.hex', function () { + it('utils.color.hex', () => { test.assertObject(utils.color.hex); }); - it('utils.color.rgb', function () { + it('utils.color.rgb', () => { test.assertObject(utils.color.rgb); }); - it('utils.date', function () { + it('utils.date', () => { test.assertObject(utils.date); }); - it('utils.ease', function () { + it('utils.ease', () => { test.assertObject(utils.ease); }); - it('utils.func', function () { + it('utils.func', () => { test.assertObject(utils.func); }); - it('utils.geom', function () { + it('utils.geom', () => { test.assertObject(utils.geom); }); - it('utils.geom.point', function () { + it('utils.geom.point', () => { test.assertObject(utils.geom.point); }); - it('utils.hex', function () { + it('utils.hex', () => { test.assertObject(utils.hex); }); - it('utils.json', function () { + it('utils.json', () => { test.assertObject(utils.json); }); - it('utils.math', function () { + it('utils.math', () => { test.assertObject(utils.math); }); - it('utils.math.interpolation', function () { + it('utils.math.interpolation', () => { test.assertObject(utils.math.interpolation); }); - it('utils.number', function () { + it('utils.number', () => { test.assertObject(utils.number); }); - it('utils.object', function () { + it('utils.object', () => { test.assertObject(utils.object); }); - it('utils.random', function () { + it('utils.random', () => { test.assertObject(utils.random); }); - it('utils.string', function () { + it('utils.string', () => { test.assertObject(utils.string); }); - it('utils.test', function () { + it('utils.test', () => { test.assertObject(utils.test); }); - it('utils.trigo', function () { + it('utils.trigo', () => { test.assertObject(utils.trigo); }); - it('utils.type', function () { + it('utils.type', () => { test.assertObject(utils.type); }); - it('utils.url', function () { + it('utils.url', () => { test.assertObject(utils.url); }); - it('utils.utf8', function () { + it('utils.utf8', () => { test.assertObject(utils.utf8); }); - it('utils.xml', function () { + it('utils.xml', () => { test.assertObject(utils.xml); }); }); From dff115b77fea4e175f91a0df995c81520a86b5a7 Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Sat, 18 Jan 2025 10:26:06 +0100 Subject: [PATCH 16/22] Remove unnecessary variable. --- src/utils/trigo.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/utils/trigo.js b/src/utils/trigo.js index 5dbd96f..4fa0881 100644 --- a/src/utils/trigo.js +++ b/src/utils/trigo.js @@ -56,7 +56,6 @@ function fastDeg(degFrom, degTo) { } function haversine(lat1, lon1, lat2, lon2, km) { - const degToRad = degToRad; const lat1Rad = degToRad(lat1); const lon1Rad = degToRad(lon1); const lat2Rad = degToRad(lat2); From b22d6644fc41b1dbb7538a9e1b54eca94f13392b Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Sat, 18 Jan 2025 10:26:46 +0100 Subject: [PATCH 17/22] Fix variable name conflict with method name. --- src/utils/object.js | 46 ++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/utils/object.js b/src/utils/object.js index c7b5c30..4f3038e 100644 --- a/src/utils/object.js +++ b/src/utils/object.js @@ -20,10 +20,10 @@ function assign(obj, other) { } function clean(obj, hard) { - const keys = keys(obj); + const objKeys = keys(obj); let key, val; - for (let i = 0, j = keys.length; i < j; i++) { - key = keys[i]; + for (let i = 0, j = objKeys.length; i < j; i++) { + key = objKeys[i]; val = obj[key]; if (hard === true) { switch (TypeUtil.of(val)) { @@ -56,10 +56,10 @@ function clean(obj, hard) { function clone(obj) { const cln = {}; - const keys = keys(obj); + const objKeys = keys(obj); let key, val; - for (let i = 0, j = keys.length; i < j; i++) { - key = keys[i]; + for (let i = 0, j = objKeys.length; i < j; i++) { + key = objKeys[i]; val = obj[key]; switch (TypeUtil.of(val)) { case TypeUtil.ARRAY: @@ -99,15 +99,15 @@ function encodeJSON(obj) { return JSONUtil.encode(obj); } -function encodeParameters(obj, keysFilter) { +function encodeParameters(obj, objKeysFilter) { const objClean = clean(clone(obj), true); - const keys = TypeUtil.isArray(keysFilter) ? keysFilter : keys(obj, true); + const objKeys = TypeUtil.isArray(objKeysFilter) ? objKeysFilter : keys(obj, true); let key; let val; const keyval = []; - for (let i = 0, j = keys.length; i < j; i++) { - key = keys[i]; + for (let i = 0, j = objKeys.length; i < j; i++) { + key = objKeys[i]; if (key in objClean) { val = objClean[key]; keyval.push(`${key}=${encodeURIComponent(val)}`); @@ -183,11 +183,11 @@ function is(obj1, obj2) { const keypath = { get(obj, path, defaultValue) { - const keys = path.split('.'); + const objKeys = path.split('.'); let key; let cursor = obj; - for (let i = 0, j = keys.length; i < j; i++) { - key = keys[i]; + for (let i = 0, j = objKeys.length; i < j; i++) { + key = objKeys[i]; try { cursor = cursor[key]; } catch (e) { @@ -198,11 +198,11 @@ const keypath = { }, set(obj, path, value) { - const keys = path.split('.'); + const objKeys = path.split('.'); let key; let cursor = obj; - for (let i = 0, j = keys.length; i < j; i++) { - key = keys[i]; + for (let i = 0, j = objKeys.length; i < j; i++) { + key = objKeys[i]; if (key === '__proto__' || key === 'constructor') { break; } @@ -247,13 +247,13 @@ function merge(obj1, obj2) { function search(objs, filter) { // prettier-ignore const results = []; - let i, j, k, m, obj, res, keys, key, val; + let i, j, k, m, obj, res, objKeys, key, val; for (i = 0, j = objs.length; i < j; i++) { obj = objs[i]; res = obj; - keys = keys(filter); - for (k = 0, m = keys.length; k < m; k++) { - key = keys[k]; + objKeys = keys(filter); + for (k = 0, m = objKeys.length; k < m; k++) { + key = objKeys[k]; val = filter[key]; if (!equals(obj[key], val)) { res = null; @@ -267,10 +267,10 @@ function search(objs, filter) { } function values(obj, sorted) { - const keys = keys(obj, sorted); + const objKeys = keys(obj, sorted); const vals = []; - for (let i = 0, j = keys.length; i < j; i++) { - vals.push(obj[keys[i]]); + for (let i = 0, j = objKeys.length; i < j; i++) { + vals.push(obj[objKeys[i]]); } return vals; } From f200d877fec31875a4e7fbec6eb58df5b3828cff Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Sat, 18 Jan 2025 10:27:08 +0100 Subject: [PATCH 18/22] Remove util class prefix. --- src/utils/geom/point.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/utils/geom/point.js b/src/utils/geom/point.js index 070ca36..9b2d8d1 100644 --- a/src/utils/geom/point.js +++ b/src/utils/geom/point.js @@ -43,11 +43,11 @@ function interpolate(a, b, t) { } function length(p) { - return PointUtil.distance(p, { x: 0, y: 0 }); + return distance(p, { x: 0, y: 0 }); } function magnitude(p) { - return PointUtil.length(p); + return length(p); } function project(p, distance, angle) { @@ -85,14 +85,14 @@ function rect(points) { function rotate(p, angle, pivot) { const pointPivot = pivot || { x: 0.0, y: 0.0 }; - const pointRel = PointUtil.subtract(p, pointPivot); + const pointRel = subtract(p, pointPivot); const angleCos = TrigoUtil.cosDeg(angle); const angleSin = TrigoUtil.sinDeg(angle); const pointRot = { x: pointRel.x * angleCos - pointRel.y * angleSin, y: pointRel.x * angleSin + pointRel.y * angleCos, }; - const pointAbs = PointUtil.add(pointRot, pointPivot); + const pointAbs = add(pointRot, pointPivot); return pointAbs; } From 365e344b07baad4af33c1701b8eaec821f9aeb24 Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Sat, 18 Jan 2025 10:27:17 +0100 Subject: [PATCH 19/22] Add missing import. --- src/utils/date.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/utils/date.js b/src/utils/date.js index dabe137..c01a6a7 100644 --- a/src/utils/date.js +++ b/src/utils/date.js @@ -1,4 +1,5 @@ import StringUtil from './string.js'; +import TypeUtil from './type.js'; function clone(date) { return new Date(date.getTime()); From 1743fd9e3325446bdcf751ea2ccdf1ec7ffc9d0b Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Sat, 18 Jan 2025 11:22:19 +0100 Subject: [PATCH 20/22] Rename `function` module to `func`. --- src/utils.js | 4 +- src/utils/array.js | 2 +- src/utils/func.js | 161 ++++++++++++++++++++++++++++++++++++ src/utils/function.js | 187 ------------------------------------------ src/utils/random.js | 2 +- src/utils/test.js | 2 +- 6 files changed, 166 insertions(+), 192 deletions(-) create mode 100644 src/utils/func.js delete mode 100644 src/utils/function.js diff --git a/src/utils.js b/src/utils.js index a2e462b..a8a0023 100644 --- a/src/utils.js +++ b/src/utils.js @@ -3,7 +3,7 @@ import Base64Util from './utils/base64.js'; import ColorUtil from './utils/color.js'; import DateUtil from './utils/date.js'; import EaseUtil from './utils/ease.js'; -import FunctionUtil from './utils/function.js'; +import FuncUtil from './utils/func.js'; import GeomUtil from './utils/geom.js'; import HexUtil from './utils/hex.js'; import InterpolationUtil from './utils/interpolation.js'; @@ -27,7 +27,7 @@ export const utils = { color: ColorUtil, date: DateUtil, ease: EaseUtil, - func: FunctionUtil, + func: FuncUtil, geom: GeomUtil, hex: HexUtil, json: JSONUtil, diff --git a/src/utils/array.js b/src/utils/array.js index 46ad953..d0e643c 100644 --- a/src/utils/array.js +++ b/src/utils/array.js @@ -1,5 +1,5 @@ import DateUtil from './date.js'; -import FunctionUtil from './function.js'; +import FuncUtil from './func.js'; import MathUtil from './math.js'; import ObjectUtil from './object.js'; import RandomUtil from './random.js'; diff --git a/src/utils/func.js b/src/utils/func.js new file mode 100644 index 0000000..8d5af5f --- /dev/null +++ b/src/utils/func.js @@ -0,0 +1,161 @@ +import TypeUtil from './type.js'; + +function args(argumentsObj, skipCount = 0) { + return Array.prototype.slice.call(argumentsObj, skipCount); +} + +function attempt(func, scope, ...args) { + try { + const result = call(func, scope, ...args); + return result; + } catch (e) { + return e; + } +} + +function bind(func, scope, ...argsBinded) { + return (...args) => { + const result = call(func, scope, ...argsBinded.concat(args)); + return result; + }; +} + +function call(func, scope, ...args) { + if (TypeUtil.isString(func)) { + func = scope[func]; + } + return func.apply(scope, args); +} + +function debounce(milliseconds, func, scope) { + let timeoutId; + return function (...args) { + if (timeoutId) { + clearTimeout(timeoutId); + timeoutId = null; + } + timeoutId = setTimeout(() => { + func.apply(scope, args); + }, milliseconds); + }; +} + +function delay(milliseconds, func, scope, ...args) { + const wrapper = bind(func, scope, ...args); + const timeoutId = setTimeout(wrapper, milliseconds); + return { + cancel() { + clearTimeout(timeoutId); + }, + func: wrapper, + id: timeoutId, + }; +} + +function memoize(func, scope) { + const cache = {}; + + return function (...args) { + const key = String(args); + if (!(key in cache)) { + cache[key] = call(func, scope, ...args); + } + return cache[key]; + }; +} + +function noop() { + return true; +} + +function repeat(milliseconds, func, scope, ...args) { + const wrapper = bind(func, scope, ...args); + const intervalId = setInterval(wrapper, milliseconds); + return { + cancel() { + clearInterval(intervalId); + }, + func: wrapper, + id: intervalId, + }; +} + +function throttle(milliseconds, func, scope) { + let timeoutId; + return (...args) => { + if (timeoutId) { + return; + } + func.apply(scope, args); + timeoutId = setTimeout(() => { + clearTimeout(timeoutId); + timeoutId = null; + }, milliseconds); + }; +} + +function until(milliseconds, func, scope, ...args) { + const wrapper = bind(func, scope, ...args); + const interval = repeat(milliseconds, () => { + if (wrapper() === false) { + interval.cancel(); + } + }); + return interval; +} + +function validate(argumentsObj, ...types) { + // validate(arguments, 'number', 'string', ['string', 'undefined']); + + const argsList = args(argumentsObj); + types = types.map((type) => (Array.isArray(type) ? type : [type])); + + let argsExpectedCount = types.length; + while (argsExpectedCount > 0) { + if (!types[argsExpectedCount - 1].includes('undefined')) { + break; + } + argsExpectedCount--; + } + + if (argsList.length < argsExpectedCount) { + throw new TypeError( + `invalid arguments count: received ${argsList.length}, expected ${argsExpectedCount} arguments.` + ); + } + + for (let i = 0; i < types.length; i++) { + for (const type of types[i]) { + if (!TypeUtil.isType(type)) { + throw new TypeError( + `invalid argument: expected type "${type}" is not a valid type.` + ); + } + } + } + + argsList.forEach((arg, i) => { + const argType = TypeUtil.of(arg); + const argTypes = types[Math.min(i, types.length - 1)]; + if (!argTypes.includes(argType)) { + throw new TypeError( + `invalid argument: type of argument[${i}] is "${argType}", expected "${argTypes.join('" or "')}".` + ); + } + }); +} + +export default { + args, + attempt, + bind, + call, + debounce, + delay, + memoize, + noop, + repeat, + throttle, + until, + validate, +}; diff --git a/src/utils/function.js b/src/utils/function.js deleted file mode 100644 index ff2092c..0000000 --- a/src/utils/function.js +++ /dev/null @@ -1,187 +0,0 @@ -import TypeUtil from './type.js'; - -function args(argumentsObj, skipCount) { - return [].slice.call(argumentsObj, skipCount || 0); -} - -function attempt(func, scope) { - try { - const args = args(arguments); - const result = call.apply(null, args); - return result; - } catch (e) { - return e; - } -} - -function bind(func, scope) { - const argsBinded = args(arguments); - return function () { - const args = args(arguments); - const result = call.apply(null, argsBinded.concat(args)); - return result; - }; -} - -function call(func, scope) { - if (TypeUtil.isString(func)) { - func = scope[func]; - } - const args = args(arguments, 2); - const result = func.apply(scope, args); - return result; -} - -function debounce(milliseconds, func, scope) { - let timeoutId; - return function () { - if (timeoutId) { - clearTimeout(timeoutId); - timeoutId = null; - } - const args = arguments; - timeoutId = setTimeout(() => { - func.apply(scope, args); - }, milliseconds); - }; - /* - var timeoutId; - return function() { - if (timeoutId) { - timeoutId.cancel(); - timeoutId = null; - } - timeoutId = delay.apply(null, [milliseconds, func, scope].concat(arguments)); - }; - */ -} - -function delay(milliseconds, func, scope) { - const args = args(arguments, 1); - const wrapper = bind.apply(null, args); - const timeoutId = setTimeout(wrapper, milliseconds); - return { - cancel() { - clearTimeout(timeoutId); - }, - func: wrapper, - id: timeoutId, - }; -} - -function memoize(func, scope) { - const cache = {}; - - return function () { - const args = args(arguments); - const key = String(args); - if (!(key in cache)) { - cache[key] = call.apply(null, [func, scope].concat(args)); - } - return cache[key]; - }; -} - -function noop() { - return true; -} - -function repeat(milliseconds, func, scope) { - const args = args(arguments, 1); - const wrapper = bind.apply(null, args); - const intervalId = setInterval(wrapper, milliseconds); - return { - cancel() { - clearInterval(intervalId); - }, - func: wrapper, - id: intervalId, - }; -} - -function throttle(milliseconds, func, scope) { - let timeoutId; - return (...args) => { - if (timeoutId) { - return; - } - func.apply(scope, args); - timeoutId = setTimeout(() => { - clearTimeout(timeoutId); - timeoutId = null; - }, milliseconds); - }; -} - -function until(milliseconds, func, scope) { - const args = args(arguments, 1); - const wrapper = bind.apply(null, args); - const interval = repeat(milliseconds, () => { - if (wrapper() === false) { - interval.cancel(); - } - }); - return interval; -} - -function validate(argumentsObj) { - // validate(arguments, 'number', 'string', ['string', 'undefined']); - - const args = args(argumentsObj); - const types = args(arguments, 1); - - let i, j, k, n; - - for (i = 0, j = types.length; i < j; i++) { - if (!TypeUtil.isArray(types[i])) { - types[i] = [types[i]]; - } - } - - let argsExpectedCount = types.length; - while (argsExpectedCount > 0) { - if (!types[argsExpectedCount - 1].includes('undefined')) { - break; - } - argsExpectedCount--; - } - if (args.length < argsExpectedCount) { - // prettier-ignore - throw new TypeError(`invalid arguments count: received ${args.length}, expected ${argsExpectedCount} arguments.`); - } - - for (i = 0, j = types.length; i < j; i++) { - for (k = 0, n = types[i].length; k < n; k++) { - if (!TypeUtil.isType(types[i][k])) { - // prettier-ignore - throw new TypeError(`invalid argument: expected type "${String(types[i][k])}" is not a valid type.`); - } - } - } - - let arg, argType, argTypes; - for (i = 0, j = args.length; i < j; i++) { - arg = args[i]; - argType = TypeUtil.of(arg); - argTypes = types[Math.min(i, types.length - 1)]; - if (!argTypes.includes(argType)) { - // prettier-ignore - throw new TypeError(`invalid argument: type of argument[${i}] is "${argType}", expected "${argTypes.join('" or "')}".`); - } - } -} - -export default { - args, - attempt, - bind, - call, - debounce, - delay, - memoize, - noop, - repeat, - throttle, - until, - validate, -}; diff --git a/src/utils/random.js b/src/utils/random.js index c8accbb..1764a3a 100644 --- a/src/utils/random.js +++ b/src/utils/random.js @@ -1,4 +1,4 @@ -import FunctionUtil from './function.js'; +import FuncUtil from './func.js'; function argument() { const args = FunctionUtil.args(arguments); diff --git a/src/utils/test.js b/src/utils/test.js index d9e4661..4706232 100644 --- a/src/utils/test.js +++ b/src/utils/test.js @@ -1,4 +1,4 @@ -import FunctionUtil from './function.js'; +import FuncUtil from './func.js'; import JSONUtil from './json.js'; import MathUtil from './math.js'; import ObjectUtil from './object.js'; From 084ac827fb523650f7799ebd7918f76e99f0ecb4 Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Sat, 18 Jan 2025 11:43:55 +0100 Subject: [PATCH 21/22] Use rest args. --- src/utils/array.js | 12 ++++++------ src/utils/math.js | 12 ++++++------ src/utils/object.js | 11 +++++------ src/utils/random.js | 3 +-- src/utils/test.js | 6 ++---- 5 files changed, 20 insertions(+), 24 deletions(-) diff --git a/src/utils/array.js b/src/utils/array.js index d0e643c..4df8d37 100644 --- a/src/utils/array.js +++ b/src/utils/array.js @@ -84,8 +84,8 @@ function clone(list) { return cln; } -function contains(list, value) { - const values = [value].concat(FunctionUtil.args(arguments, 2)); +function contains(list, value, ...otherValues) { + const values = [value].concat(otherValues); let val, valFound; for (let i = 0, j = values.length; i < j; i++) { @@ -211,8 +211,8 @@ function replace(list, searchValue, replacementValue) { return list; } -function remove(list, value) { - const values = [value].concat(FunctionUtil.args(arguments, 2)); +function remove(list, value, ...otherValues) { + const values = [value].concat(otherValues); for (let k = 0, m = values.length; k < m; k++) { for (let i = 0, j = list.length; i < j; i++) { if (ObjectUtil.equals(list[i], values[k])) { @@ -318,8 +318,8 @@ function unzip(list) { return zip.apply(null, list); } -function zip(list1, list2) { - const lists = [list1, list2].concat(FunctionUtil.args(arguments, 2)); +function zip(list1, list2, ...otherLists) { + const lists = [list1, list2].concat(otherLists); let listLength = 0; lists.forEach((item) => { listLength = listLength === 0 ? item.length : Math.min(listLength, item.length); diff --git a/src/utils/math.js b/src/utils/math.js index 26547ea..5a4d0b9 100644 --- a/src/utils/math.js +++ b/src/utils/math.js @@ -1,5 +1,4 @@ import ArrayUtil from './array.js'; -import FunctionUtil from './function.js'; import InterpolationUtil from './interpolation.js'; import TypeUtil from './type.js'; @@ -81,20 +80,21 @@ function normalize(n, a, b) { } function proportion(a, b, x, y) { - const args = FunctionUtil.args(arguments); + const args = [a, b, x, y]; const argsOk = ArrayUtil.clean(args); if (argsOk.length !== 3) { return NaN; } // a : b = x : y - if (!TypeUtil.isNumber(a)) { + const isNumber = TypeUtil.isNumber; + if (!isNumber(a)) { return (b * x) / y; - } else if (!TypeUtil.isNumber(b)) { + } else if (!isNumber(b)) { return (a * y) / x; - } else if (!TypeUtil.isNumber(x)) { + } else if (!isNumber(x)) { return (y * a) / b; - } else if (!TypeUtil.isNumber(y)) { + } else if (!isNumber(y)) { return (x * b) / a; } return NaN; diff --git a/src/utils/object.js b/src/utils/object.js index 4f3038e..0a2a85e 100644 --- a/src/utils/object.js +++ b/src/utils/object.js @@ -1,15 +1,14 @@ import ArrayUtil from './array.js'; import Base64Util from './base64.js'; import DateUtil from './date.js'; -import FunctionUtil from './function.js'; import JSONUtil from './json.js'; import MathUtil from './math.js'; import StringUtil from './string.js'; import TypeUtil from './type.js'; import URLUtil from './url.js'; -function assign(obj, other) { - const objs = [other].concat(FunctionUtil.args(arguments, 2)); +function assign(obj, other, ...others) { + const objs = [other].concat(others); let i, j, k; for (i = 0, j = objs.length; i < j; i++) { for (k in objs[i]) { @@ -238,9 +237,9 @@ function map(obj, func) { return m; } -function merge(obj1, obj2) { - const objs = [{}, obj1, obj2].concat(FunctionUtil.args(arguments, 2)); - const obj = assign.apply(null, objs); +function merge(obj1, obj2, ...objs) { + const objsList = [{}, obj1, obj2].concat(objs); + const obj = assign.apply(null, objsList); return obj; } diff --git a/src/utils/random.js b/src/utils/random.js index 1764a3a..e526fc3 100644 --- a/src/utils/random.js +++ b/src/utils/random.js @@ -1,7 +1,6 @@ import FuncUtil from './func.js'; -function argument() { - const args = FunctionUtil.args(arguments); +function argument(...args) { return element(args); } diff --git a/src/utils/test.js b/src/utils/test.js index 4706232..598154d 100644 --- a/src/utils/test.js +++ b/src/utils/test.js @@ -236,13 +236,11 @@ function assertString(val) { } } -function assertThrows(val) { +function assertThrows(val, ...args) { assertFunction(val); try { const scope = null; - let args = FunctionUtil.args(arguments, 1); - args = [val, scope].concat(args); - FunctionUtil.call.apply(null, args); + FunctionUtil.call.apply(null, [val, scope].concat(args)); } catch (e) { return; } From 213dd090f1485ce788804e6a8564e78e7f53ab9f Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Sat, 18 Jan 2025 11:44:44 +0100 Subject: [PATCH 22/22] Update tests. --- test/test_array.js | 653 +++++++++++++++++++------------------ test/test_base64.js | 72 ++-- test/test_color.js | 44 +-- test/test_color_cmyk.js | 98 +++--- test/test_color_hex.js | 192 +++++------ test/test_color_rgb.js | 208 ++++++------ test/test_date.js | 276 ++++++++-------- test/test_ease.js | 508 ++++++++++++++--------------- test/test_func.js | 360 ++++++++++---------- test/test_hex.js | 84 ++--- test/test_interpolation.js | 192 +++++------ test/test_json.js | 52 +-- test/test_math.js | 150 ++++----- test/test_number.js | 56 ++-- test/test_object.js | 360 ++++++++++---------- test/test_point.js | 146 ++++----- test/test_random.js | 68 ++-- test/test_string.js | 246 +++++++------- test/test_test.js | 316 +++++++++--------- test/test_trigo.js | 126 +++---- test/test_type.js | 136 ++++---- test/test_url.js | 144 ++++---- test/test_utf8.js | 16 +- test/test_xml.js | 16 +- 24 files changed, 2267 insertions(+), 2252 deletions(-) diff --git a/test/test_array.js b/test/test_array.js index 72fe1fa..e18a083 100644 --- a/test/test_array.js +++ b/test/test_array.js @@ -1,14 +1,14 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; -var arr = utils.array; +import utils from '../src/utils.js'; +const test = utils.test; +const arr = utils.array; -describe('array', function () { - describe('all', function () { - var f = arr.all; - it('test true', function () { +describe('array', () => { + describe('all', () => { + const f = arr.all; + it('test true', () => { test.assertEqual(f([true, 1, 'ok', [0], { a: 0 }]), true); }); - it('test false', function () { + it('test false', () => { test.assertEqual(f([false, 1, 'ok', [0], { a: 0 }]), false); test.assertEqual(f([true, 0, 'ok', [0], { a: 0 }]), false); test.assertEqual(f([true, 1, '', [0], { a: 0 }]), false); @@ -16,9 +16,9 @@ describe('array', function () { test.assertEqual(f([true, 1, 'ok', [0], {}]), false); }); }); - describe('any', function () { - var f = arr.any; - it('test true', function () { + describe('any', () => { + const f = arr.any; + it('test true', () => { test.assertEqual(f([true, 1, 'ok', [0], { a: 0 }]), true); test.assertEqual(f([false, 1, 'ok', [0], { a: 0 }]), true); test.assertEqual(f([true, 0, 'ok', [0], { a: 0 }]), true); @@ -27,75 +27,75 @@ describe('array', function () { test.assertEqual(f([true, 1, 'ok', [0], {}]), true); test.assertEqual(f([true, 0, '', [], {}]), true); }); - it('test false', function () { + it('test false', () => { test.assertEqual(f([false, 0, '', [], {}]), false); }); }); - describe('clean', function () { - var f = arr.clean; + describe('clean', () => { + const f = arr.clean; - it('test none', function () { + it('test none', () => { test.assertEqual(f([null, undefined, NaN], false), []); }); - it('test none hard', function () { + it('test none hard', () => { test.assertEqual(f([null, undefined, NaN], true), []); }); - it('test booleans', function () { + it('test booleans', () => { test.assertEqual(f([true, false], false), [true, false]); }); - it('test booleans hard', function () { + it('test booleans hard', () => { test.assertEqual(f([true, false], true), [true, false]); }); - it('test date', function () { - var d = new Date(); + it('test date', () => { + const d = new Date(); test.assertEqual(f([d], false), [d]); }); - it('test date hard', function () { - var d = new Date(); + it('test date hard', () => { + const d = new Date(); test.assertEqual(f([d], true), [d]); }); - it('test error', function () { - var e = new Error(); + it('test error', () => { + const e = new Error(); test.assertEqual(f([e], false), [e]); }); - it('test error hard', function () { - var e = new Error(); + it('test error hard', () => { + const e = new Error(); test.assertEqual(f([e], true), [e]); }); - it('test function', function () { + it('test function', () => { test.assertEqual(f([f], false), [f]); }); - it('test function hard', function () { + it('test function hard', () => { test.assertEqual(f([f], true), [f]); }); - it('test numbers', function () { + it('test numbers', () => { test.assertEqual( f([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, NaN, Number.Infinity], false), [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] ); }); - it('test numbers hard', function () { + it('test numbers hard', () => { test.assertEqual( f([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, NaN, Number.Infinity], true), [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] ); }); - it('test regexp', function () { - var re = /^$/; + it('test regexp', () => { + const re = /^$/; test.assertEqual(f([re], false), [re]); }); - it('test regexp hard', function () { - var re = /^$/; + it('test regexp hard', () => { + const re = /^$/; test.assertEqual(f([re], true), [re]); }); - it('test strings', function () { + it('test strings', () => { test.assertEqual(f(['', ' ', ' ', 'a', 'b', 'c'], false), [ '', ' ', @@ -105,11 +105,11 @@ describe('array', function () { 'c', ]); }); - it('test strings hard', function () { + it('test strings hard', () => { test.assertEqual(f(['', ' ', ' ', 'a', 'b', 'c'], true), ['a', 'b', 'c']); }); - it('test arrays', function () { + it('test arrays', () => { test.assertEqual(f([[[], [], []], [], [], []], false), [ [[], [], []], [], @@ -117,12 +117,12 @@ describe('array', function () { [], ]); }); - it('test arrays hard', function () { + it('test arrays hard', () => { test.assertEqual(f([[], [], []], true), []); test.assertEqual(f([[[], [], []], [], [], []], true), []); }); - it('test objects', function () { + it('test objects', () => { test.assertEqual(f([{}, {}, {}], false), [{}, {}, {}]); test.assertEqual(f([{ a: {} }, { b: {} }, { c: {} }], false), [ { a: {} }, @@ -140,7 +140,7 @@ describe('array', function () { { c: {} }, ]); }); - it('test objects hard', function () { + it('test objects hard', () => { test.assertEqual(f([{}, {}, {}], true), []); test.assertEqual(f([{ a: {} }, { b: {} }, { c: {} }], true), []); test.assertEqual(f([{ a: null }, { b: {} }, { c: {} }], true), []); @@ -149,7 +149,7 @@ describe('array', function () { { a: { b: 0 } }, ]); - var input, output; + let input, output; input = [ 0, 1, @@ -191,14 +191,14 @@ describe('array', function () { test.assertEqual(f(input, true), output); }); }); - describe('clone', function () { - var f = arr.clone; - it('test array of array(s)', function () { - var a = [1, 2, 3]; - var b = [4, 5, 6]; - var c = [7, 8, 9]; - var o = [a, b, c]; - var r = f(o); + describe('clone', () => { + const f = arr.clone; + it('test array of array(s)', () => { + const a = [1, 2, 3]; + const b = [4, 5, 6]; + const c = [7, 8, 9]; + const o = [a, b, c]; + const r = f(o); test.assertFalse(r === o); test.assertEqual(r, o); @@ -212,24 +212,24 @@ describe('array', function () { test.assertFalse(r[2] === c); test.assertEqual(r[2], c); }); - it('test array of boolean(s)', function () { - var o = [true, false, true, false]; - var r = f(o); + it('test array of boolean(s)', () => { + const o = [true, false, true, false]; + const r = f(o); test.assertFalse(r === o); test.assertEqual(r, o); }); - it('test array of date(s)', function () { - var o = [new Date(1800), new Date(1900), new Date(2000)]; - var r = f(o); + it('test array of date(s)', () => { + const o = [new Date(1800), new Date(1900), new Date(2000)]; + const r = f(o); test.assertFalse(r === o); test.assertEqual(r, o); }); - it('test array of object(s)', function () { - var a = { a: 1, b: 2, c: 3 }; - var b = { d: 4, e: 5, f: 6 }; - var c = { g: 7, h: 8, i: 9 }; - var o = [a, b, c]; - var r = f(o); + it('test array of object(s)', () => { + const a = { a: 1, b: 2, c: 3 }; + const b = { d: 4, e: 5, f: 6 }; + const c = { g: 7, h: 8, i: 9 }; + const o = [a, b, c]; + const r = f(o); test.assertFalse(r[0] === a); test.assertEqual(r[0], a); test.assertFalse(r[1] === b); @@ -237,63 +237,62 @@ describe('array', function () { test.assertFalse(r[2] === c); test.assertEqual(r[2], c); }); - it('test array of number(s)', function () { - var o = [0, 1, 2, 3]; - var r = f(o); + it('test array of number(s)', () => { + const o = [0, 1, 2, 3]; + const r = f(o); test.assertFalse(r === o); test.assertEqual(r, o); }); - it('test array of string(s)', function () { - var o = ['a', 'b', 'c', 'd']; - var r = f(o); + it('test array of string(s)', () => { + const o = ['a', 'b', 'c', 'd']; + const r = f(o); test.assertFalse(r === o); test.assertEqual(r, o); }); }); - describe('contains', function () { - var f = arr.contains; - var a, b; - it('test none', function () { + describe('contains', () => { + const f = arr.contains; + it('test none', () => { test.assertTrue(f([null, undefined, NaN], null)); test.assertTrue(f([null, undefined, NaN], undefined)); test.assertTrue(f([null, undefined, NaN], NaN)); test.assertFalse(f([null, undefined, NaN], 0)); }); - it('test booleans', function () { + it('test booleans', () => { test.assertTrue(f([true, true, true], true)); test.assertFalse(f([true, true, true], false)); test.assertTrue(f([false, false, false], false)); test.assertFalse(f([false, false, false], true)); }); - it('test date', function () { + it('test date', () => { test.assertTrue(f([new Date('1999/12/31')], new Date('1999/12/31'))); test.assertFalse(f([new Date('1999/12/31')], new Date('1999/12/30'))); }); - it('test error', function () { - a = new Error('message 1'); - b = new Error('message 1'); - c = new Error('message 2'); + it('test error', () => { + const a = new Error('message 1'); + const b = new Error('message 1'); + const c = new Error('message 2'); test.assertTrue(f([a], b)); test.assertFalse(f([a], c)); }); - it('test function', function () { + it('test function', () => { test.assertTrue(f([f, f, f], f)); - test.assertFalse(f([f, f, f], function () {})); + test.assertFalse(f([f, f, f], () => {})); }); - it('test numbers', function () { + it('test numbers', () => { test.assertTrue(f([0, 1, 2, 3, 4, 5, NaN], 0)); test.assertFalse(f([0, 1, 2, 3, 4, 5, NaN], 6)); }); - it('test regexp', function () { + it('test regexp', () => { test.assertTrue(f([/^[a-z]$/], /^[a-z]$/)); test.assertFalse(f([/^[a-z]$/], /^[a-zA-Z]$/)); }); - it('test strings', function () { + it('test strings', () => { test.assertTrue(f(['a', 'b', 'c'], 'a')); test.assertFalse(f(['a', 'b', 'c'], 'd')); test.assertFalse(f(['a', 'b', 'c'], 'A')); }); - it('test arrays', function () { + it('test arrays', () => { test.assertTrue( f( [ @@ -315,7 +314,7 @@ describe('array', function () { ) ); }); - it('test objects', function () { + it('test objects', () => { test.assertTrue( f( [ @@ -347,19 +346,19 @@ describe('array', function () { ) ); }); - it('test none multivalue', function () { + it('test none multivalue', () => { test.assertTrue(f([null, undefined, NaN], null, undefined)); test.assertTrue(f([null, undefined, NaN], undefined, NaN)); test.assertTrue(f([null, undefined, NaN], NaN, null)); test.assertFalse(f([null, undefined, NaN], NaN, 0)); }); - it('test booleans multivalue', function () { + it('test booleans multivalue', () => { test.assertTrue(f([true, true, true], true, true)); test.assertFalse(f([true, true, true], false, true)); test.assertTrue(f([false, false, false], false, false)); test.assertFalse(f([false, false, false], true, true)); }); - it('test date multivalue', function () { + it('test date multivalue', () => { test.assertTrue( f( [ @@ -383,31 +382,31 @@ describe('array', function () { ) ); }); - it('test error multivalue', function () { - a = new Error('message 1'); - b = new Error('message 1'); - c = new Error('message 2'); + it('test error multivalue', () => { + const a = new Error('message 1'); + const b = new Error('message 1'); + const c = new Error('message 2'); test.assertTrue(f([a, b], a, b)); test.assertFalse(f([a, b], a, c)); }); - it('test function multivalue', function () { + it('test function multivalue', () => { test.assertTrue(f([f, f, f], f, f)); - test.assertFalse(f([f, f, f], f, function () {})); + test.assertFalse(f([f, f, f], f, () => {})); }); - it('test numbers multivalue', function () { + it('test numbers multivalue', () => { test.assertTrue(f([0, 1, 2, 3, 4, 5, NaN], 0, 3, NaN)); test.assertFalse(f([0, 1, 2, 3, 4, 5, NaN], 0, 3, 6)); }); - it('test regexp multivalue', function () { + it('test regexp multivalue', () => { test.assertTrue(f([/^[a-z]$/], /^[a-z]$/, /^[a-z]$/)); test.assertFalse(f([/^[a-z]$/], /^[a-z]$/, /^[a-zA-Z]$/)); }); - it('test strings multivalue', function () { + it('test strings multivalue', () => { test.assertTrue(f(['a', 'b', 'c'], 'a', 'c')); test.assertFalse(f(['a', 'b', 'c'], 'a', 'd')); test.assertFalse(f(['a', 'b', 'c'], 'A', 'b')); }); - it('test arrays multivalue', function () { + it('test arrays multivalue', () => { test.assertTrue( f( [ @@ -431,7 +430,7 @@ describe('array', function () { ) ); }); - it('test objects multivalue', function () { + it('test objects multivalue', () => { test.assertTrue( f( [ @@ -467,53 +466,53 @@ describe('array', function () { ); }); }); - describe('equals', function () { - var f = arr.equals; - var a, b; - it('test none', function () { + describe('equals', () => { + const f = arr.equals; + it('test none', () => { test.assertTrue(f([null, undefined, NaN], [null, undefined, NaN])); test.assertFalse(f([null, undefined, NaN], [null, undefined, NaN, NaN])); test.assertFalse(f([null, undefined, NaN], [null, undefined, null])); }); - it('test booleans', function () { + it('test booleans', () => { test.assertTrue(f([true, false, true, false], [true, false, true, false])); test.assertFalse(f([true, false, true, false], [true, false, true, true])); test.assertFalse(f([true, false, true, false], [true, false, true])); }); - it('test date', function () { - a = new Date(); - b = new Date(); - c = new Date('1999/12/31'); + it('test date', () => { + const a = new Date(); + const b = new Date(); + const c = new Date('1999/12/31'); test.assertTrue(f([a], [a])); test.assertTrue(f([a], [b])); test.assertFalse(f([a], [c])); }); - it('test error', function () { - a = new Error('message 1'); - b = new Error('message 1'); - c = new Error('message 2'); + it('test error', () => { + const a = new Error('message 1'); + const b = new Error('message 1'); + const c = new Error('message 2'); test.assertTrue(f([a], [a])); test.assertTrue(f([a], [b])); test.assertFalse(f([a], [c])); }); - it('test function', function () { + it('test function', () => { test.assertTrue(f([f, f, f], [f, f, f])); test.assertFalse(f([f, f, f], [f, f])); - test.assertFalse(f([f, f, f], [f, f, function () {}])); + test.assertFalse(f([f, f, f], [f, f, () => {}])); }); - it('test numbers', function () { + it('test numbers', () => { test.assertTrue(f([0, 1, 2, 3, 4, 5, NaN], [0, 1, 2, 3, 4, 5, NaN])); test.assertFalse(f([0, 1, 2, 3, 4, 5, NaN], [1, 2, 3, 4, 5, NaN])); }); - it('test regexp', function () { + it('test regexp', () => { test.assertTrue(f([/^[a-z]$/], [/^[a-z]$/])); test.assertFalse(f([/^[a-z]$/], [/^[a-zA-Z]$/])); }); - it('test strings', function () { + it('test strings', () => { test.assertTrue(f(['a'], ['a'])); test.assertFalse(f(['a'], ['A'])); }); - it('test arrays', function () { + it('test arrays', () => { + let a, b; a = [ [1, 2], [null, true], @@ -533,7 +532,8 @@ describe('array', function () { ]; test.assertFalse(f(a, b)); }); - it('test objects', function () { + it('test objects', () => { + let a, b; a = [{ a: 1, b: 2 }]; b = [{ a: 1, b: 2 }]; test.assertTrue(f(a, b)); @@ -544,7 +544,8 @@ describe('array', function () { b = [{ a: 1, b: 2, c: 3 }]; test.assertFalse(f(a, b)); }); - it('test complex', function () { + it('test complex', () => { + let a, b; a = [ 0, 1, @@ -608,41 +609,39 @@ describe('array', function () { test.assertTrue(f(a, b)); }); }); - describe('flatten', function () { - var f = arr.flatten; - var a, b; - it('test array 2D', function () { - a = [ + describe('flatten', () => { + const f = arr.flatten; + it('test array 2D', () => { + const a = [ [0, 1, 2, 3, 4], [5, 6, 7, 8, 9], ]; - b = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + const b = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; test.assertEqual(f(a), b); }); - it('test array 2D and values', function () { - a = [0, [1, 2], 3, [4, 5], 6, [7, 8], 9]; - b = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + it('test array 2D and values', () => { + const a = [0, [1, 2], 3, [4, 5], 6, [7, 8], 9]; + const b = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; test.assertEqual(f(a), b); }); - it('test array 3D', function () { - a = [ + it('test array 3D', () => { + const a = [ [[0, 1, 2], 3, 4], [[5, 6, 7], 8, 9], ]; - b = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + const b = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; test.assertEqual(f(a), b); }); - it('test array [n]D', function () { - a = [[[[[[[[[[0], 1], 2], 3], 4], 5], 6], 7], 8], 9]; - b = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + it('test array [n]D', () => { + const a = [[[[[[[[[[0], 1], 2], 3], 4], 5], 6], 7], 8], 9]; + const b = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; test.assertEqual(f(a), b); }); }); - describe('index', function () { - var f = arr.index; - var a, b; - it('test single key / single value', function () { - a = [ + describe('index', () => { + const f = arr.index; + it('test single key / single value', () => { + const a = [ { id: 1, name: 'a' }, { id: 2, name: 'b' }, { id: 3, name: 'c' }, @@ -650,7 +649,7 @@ describe('array', function () { { id: 5, name: 'e' }, { id: 6, name: 'f' }, ]; - b = { + const b = { 1: [{ id: 1, name: 'a' }], 2: [{ id: 2, name: 'b' }], 3: [{ id: 3, name: 'c' }], @@ -660,8 +659,8 @@ describe('array', function () { }; test.assertEqual(f(a, 'id'), b); }); - it('test single key / single value flat', function () { - a = [ + it('test single key / single value flat', () => { + const a = [ { id: 1, name: 'a' }, { id: 2, name: 'b' }, { id: 3, name: 'c' }, @@ -669,7 +668,7 @@ describe('array', function () { { id: 5, name: 'e' }, { id: 6, name: 'f' }, ]; - b = { + const b = { 1: { id: 1, name: 'a' }, 2: { id: 2, name: 'b' }, 3: { id: 3, name: 'c' }, @@ -679,8 +678,8 @@ describe('array', function () { }; test.assertEqual(f(a, 'id', true), b); }); - it('test single key / multiple values', function () { - a = [ + it('test single key / multiple values', () => { + const a = [ { id: 1, name: 'a' }, { id: 2, name: 'b' }, { id: 3, name: 'c' }, @@ -694,7 +693,7 @@ describe('array', function () { { id: 5, name: 'ee' }, { id: 6, name: 'ff' }, ]; - b = { + const b = { 1: [ { id: 1, name: 'a' }, { id: 1, name: 'aa' }, @@ -722,8 +721,8 @@ describe('array', function () { }; test.assertEqual(f(a, 'id'), b); }); - it('test single key / multiple values flat', function () { - a = [ + it('test single key / multiple values flat', () => { + const a = [ { id: 1, name: 'a' }, { id: 2, name: 'b' }, { id: 3, name: 'c' }, @@ -737,7 +736,7 @@ describe('array', function () { { id: 5, name: 'ee' }, { id: 6, name: 'ff' }, ]; - b = { + const b = { 1: { id: 1, name: 'aa' }, 2: { id: 2, name: 'bb' }, 3: { id: 3, name: 'cc' }, @@ -747,8 +746,8 @@ describe('array', function () { }; test.assertEqual(f(a, 'id', true), b); }); - it('test multiple keys / values', function () { - a = [ + it('test multiple keys / values', () => { + const a = [ { id: 1, name: 'a', even: false }, { id: 2, name: 'b', even: true }, { id: 3, name: 'c', even: false }, @@ -756,7 +755,7 @@ describe('array', function () { { id: 5, name: 'e', even: false }, { id: 6, name: 'f', even: true }, ]; - b = { + const b = { 1: [{ id: 1, name: 'a', even: false }], 2: [{ id: 2, name: 'b', even: true }], 3: [{ id: 3, name: 'c', even: false }], @@ -776,8 +775,8 @@ describe('array', function () { }; test.assertEqual(f(a, ['id', 'even']), b); }); - it('test multiple keys / values flat', function () { - a = [ + it('test multiple keys / values flat', () => { + const a = [ { id: 1, name: 'a', even: false }, { id: 2, name: 'b', even: true }, { id: 3, name: 'c', even: false }, @@ -785,7 +784,7 @@ describe('array', function () { { id: 5, name: 'e', even: false }, { id: 6, name: 'f', even: true }, ]; - b = { + const b = { 1: { id: 1, name: 'a', even: false }, 2: { id: 2, name: 'b', even: true }, 3: { id: 3, name: 'c', even: false }, @@ -798,27 +797,29 @@ describe('array', function () { test.assertEqual(f(a, ['id', 'even'], true), b); }); }); - describe('insert', function () { - var f = arr.insert; - var a = ['a', 'b', 'c', 'd', 'e']; - it('test first', function () { + describe('insert', () => { + const f = arr.insert; + it('test first', () => { + const a = ['a', 'b', 'c', 'd', 'e']; test.assertEqual(f(a.slice(), 0, 'x'), ['x', 'a', 'b', 'c', 'd', 'e']); }); - it('test last', function () { + it('test last', () => { + const a = ['a', 'b', 'c', 'd', 'e']; test.assertEqual(f(a.slice(), 5, 'x'), ['a', 'b', 'c', 'd', 'e', 'x']); }); - it('test middle', function () { + it('test middle', () => { + const a = ['a', 'b', 'c', 'd', 'e']; test.assertEqual(f(a.slice(), 3, 'x'), ['a', 'b', 'c', 'x', 'd', 'e']); }); }); - describe('min', function () { - var f = arr.min; - it('test array of numbers', function () { - a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + describe('min', () => { + const f = arr.min; + it('test array of numbers', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; test.assertEqual(f(a), 0); }); - it('test array of objects', function () { - a = [ + it('test array of objects', () => { + const a = [ { n: 0 }, { n: 1 }, { n: 2 }, @@ -831,21 +832,21 @@ describe('array', function () { { n: 9 }, ]; test.assertEqual( - f(a, function (item) { + f(a, (item) => { return item['n']; }), 0 ); }); }); - describe('max', function () { - var f = arr.max; - it('test array of numbers', function () { - a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + describe('max', () => { + const f = arr.max; + it('test array of numbers', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; test.assertEqual(f(a), 9); }); - it('test array of objects', function () { - a = [ + it('test array of objects', () => { + const a = [ { n: 0 }, { n: 1 }, { n: 2 }, @@ -858,23 +859,25 @@ describe('array', function () { { n: 9 }, ]; test.assertEqual( - f(a, function (item) { + f(a, (item) => { return item['n']; }), 9 ); }); }); - describe('paginate', function () { - var f = arr.paginate; - var a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; - it('test array length 10 items per page -1', function () { + describe('paginate', () => { + const f = arr.paginate; + it('test array length 10 items per page -1', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; test.assertEqual(f(a, 0), []); }); - it('test array length 10 items per page 0', function () { + it('test array length 10 items per page 0', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; test.assertEqual(f(a, 0), []); }); - it('test array length 10 items per page 1', function () { + it('test array length 10 items per page 1', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; test.assertEqual(f(a, 1), [ [0], [1], @@ -888,7 +891,8 @@ describe('array', function () { [9], ]); }); - it('test array length 10 items per page 2', function () { + it('test array length 10 items per page 2', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; test.assertEqual(f(a, 2), [ [0, 1], [2, 3], @@ -897,105 +901,115 @@ describe('array', function () { [8, 9], ]); }); - it('test array length 10 items per page 3', function () { + it('test array length 10 items per page 3', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; test.assertEqual(f(a, 3), [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]]); }); - it('test array length 10 items per page 4', function () { + it('test array length 10 items per page 4', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; test.assertEqual(f(a, 4), [ [0, 1, 2, 3], [4, 5, 6, 7], [8, 9], ]); }); - it('test array length 10 items per page 5', function () { + it('test array length 10 items per page 5', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; test.assertEqual(f(a, 5), [ [0, 1, 2, 3, 4], [5, 6, 7, 8, 9], ]); }); - it('test array length 10 items per page 6', function () { + it('test array length 10 items per page 6', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; test.assertEqual(f(a, 6), [ [0, 1, 2, 3, 4, 5], [6, 7, 8, 9], ]); }); - it('test array length 10 items per page 7', function () { + it('test array length 10 items per page 7', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; test.assertEqual(f(a, 7), [ [0, 1, 2, 3, 4, 5, 6], [7, 8, 9], ]); }); - it('test array length 10 items per page 8', function () { + it('test array length 10 items per page 8', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; test.assertEqual(f(a, 8), [ [0, 1, 2, 3, 4, 5, 6, 7], [8, 9], ]); }); - it('test array length 10 items per page 9', function () { + it('test array length 10 items per page 9', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; test.assertEqual(f(a, 9), [[0, 1, 2, 3, 4, 5, 6, 7, 8], [9]]); }); - it('test array length 10 items per page 10', function () { + it('test array length 10 items per page 10', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; test.assertEqual(f(a, 10), [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]); }); - it('test array length 10 items per page 11', function () { + it('test array length 10 items per page 11', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; test.assertEqual(f(a, 11), [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]); }); }); - describe('reduce', function () { - var f = arr.reduce; - var a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; - it('test value', function () { - var r = function (accumulator, value, index, list) { + describe('reduce', () => { + const f = arr.reduce; + it('test value', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + const r = (accumulator, value, index, list) => { return accumulator + value; }; test.assertEqual(f(a, r), 45); }); - it('test initial value', function () { - var r = function (accumulator, value, index, list) { + it('test initial value', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + const r = (accumulator, value, index, list) => { return accumulator + value; }; test.assertEqual(f(a, r, 1), 46); }); - it('test index', function () { - var r = function (accumulator, value, index, list) { + it('test index', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + const r = (accumulator, value, index, list) => { return accumulator + index; }; test.assertEqual(f(a, r), 45); }); }); - describe('remove', function () { - var f = arr.remove; - var a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + describe('remove', () => { + const f = arr.remove; - it('test single value first', function () { - var b = a.slice(); - test.assertEqual(f(b, 0), [1, 2, 3, 4, 5, 6, 7, 8, 9]); + it('test single value first', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + test.assertEqual(f(a, 0), [1, 2, 3, 4, 5, 6, 7, 8, 9]); }); - it('test single value last', function () { - var b = a.slice(); - test.assertEqual(f(b, 9), [0, 1, 2, 3, 4, 5, 6, 7, 8]); + it('test single value last', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + test.assertEqual(f(a, 9), [0, 1, 2, 3, 4, 5, 6, 7, 8]); }); - it('test single value middle', function () { - var b = a.slice(); - test.assertEqual(f(b, 5), [0, 1, 2, 3, 4, 6, 7, 8, 9]); + it('test single value middle', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + test.assertEqual(f(a, 5), [0, 1, 2, 3, 4, 6, 7, 8, 9]); }); - it('test single value multiple items', function () { - var b = [0, 1, 0, 1, 0, 1, 0, 1, 0]; - test.assertEqual(f(b, 0), [1, 1, 1, 1]); + it('test single value multiple items', () => { + const a = [0, 1, 0, 1, 0, 1, 0, 1, 0]; + test.assertEqual(f(a, 0), [1, 1, 1, 1]); }); - it('test single value all items', function () { - var b = [0, 0, 0, 0, 0]; - test.assertEqual(f(b, 0), []); + it('test single value all items', () => { + const a = [0, 0, 0, 0, 0]; + test.assertEqual(f(a, 0), []); }); - it('test multiple values', function () { - var b = a.slice(); - test.assertEqual(f(b, 1, 3, 5, 7, 9), [0, 2, 4, 6, 8]); + it('test multiple values', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + test.assertEqual(f(a, 1, 3, 5, 7, 9), [0, 2, 4, 6, 8]); }); - it('test none values', function () { - var b = [null, undefined, NaN, NaN, null, undefined, undefined]; - test.assertEqual(f(b, undefined), [null, NaN, NaN, null]); + it('test none values', () => { + const a = [null, undefined, NaN, NaN, null, undefined, undefined]; + test.assertEqual(f(a, undefined), [null, NaN, NaN, null]); }); - it('test arrays', function () { + it('test arrays', () => { test.assertEqual( f( [ @@ -1026,7 +1040,7 @@ describe('array', function () { ] ); }); - it('test objects', function () { + it('test objects', () => { test.assertEqual( f( [ @@ -1058,35 +1072,34 @@ describe('array', function () { ); }); }); - describe('replace', function () { - var f = arr.replace; - var a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + describe('replace', () => { + const f = arr.replace; - it('test single value first', function () { - var b = a.slice(); - test.assertEqual(f(b, 0, 9), [9, 1, 2, 3, 4, 5, 6, 7, 8, 9]); + it('test single value first', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + test.assertEqual(f(a, 0, 9), [9, 1, 2, 3, 4, 5, 6, 7, 8, 9]); }); - it('test single value last', function () { - var b = a.slice(); - test.assertEqual(f(b, 9, 0), [0, 1, 2, 3, 4, 5, 6, 7, 8, 0]); + it('test single value last', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + test.assertEqual(f(a, 9, 0), [0, 1, 2, 3, 4, 5, 6, 7, 8, 0]); }); - it('test single value middle', function () { - var b = a.slice(); - test.assertEqual(f(b, 5, 0), [0, 1, 2, 3, 4, 0, 6, 7, 8, 9]); + it('test single value middle', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + test.assertEqual(f(a, 5, 0), [0, 1, 2, 3, 4, 0, 6, 7, 8, 9]); }); - it('test multiple values', function () { - var b = [0, 1, 0, 1, 0, 1, 0, 1, 0]; - test.assertEqual(f(b, 1, -1), [0, -1, 0, -1, 0, -1, 0, -1, 0]); + it('test multiple values', () => { + const a = [0, 1, 0, 1, 0, 1, 0, 1, 0]; + test.assertEqual(f(a, 1, -1), [0, -1, 0, -1, 0, -1, 0, -1, 0]); }); - it('test all values', function () { - var b = [0, 0, 0, 0, 0]; - test.assertEqual(f(b, 0, 1), [1, 1, 1, 1, 1]); + it('test all values', () => { + const a = [0, 0, 0, 0, 0]; + test.assertEqual(f(a, 0, 1), [1, 1, 1, 1, 1]); }); }); - describe('rotate', function () { - var f = arr.rotate; - var a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; - it('test rotate negative', function () { + describe('rotate', () => { + const f = arr.rotate; + it('test rotate negative', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; test.assertEqual(f(a, -0), [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); test.assertEqual(f(a, -1), [9, 0, 1, 2, 3, 4, 5, 6, 7, 8]); test.assertEqual(f(a, -2), [8, 9, 0, 1, 2, 3, 4, 5, 6, 7]); @@ -1104,7 +1117,8 @@ describe('array', function () { test.assertEqual(f(a, -14), [6, 7, 8, 9, 0, 1, 2, 3, 4, 5]); test.assertEqual(f(a, -15), [5, 6, 7, 8, 9, 0, 1, 2, 3, 4]); }); - it('test rotate positive', function () { + it('test rotate positive', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; test.assertEqual(f(a, 1), [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]); test.assertEqual(f(a, 2), [2, 3, 4, 5, 6, 7, 8, 9, 0, 1]); test.assertEqual(f(a, 3), [3, 4, 5, 6, 7, 8, 9, 0, 1, 2]); @@ -1121,57 +1135,58 @@ describe('array', function () { test.assertEqual(f(a, 14), [4, 5, 6, 7, 8, 9, 0, 1, 2, 3]); test.assertEqual(f(a, 15), [5, 6, 7, 8, 9, 0, 1, 2, 3, 4]); }); - it('test rotate 0-1 length', function () { - for (var i = -5; i <= 5; i++) { + it('test rotate 0-1 length', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + for (let i = -5; i <= 5; i++) { test.assertEqual(f([], i), []); test.assertEqual(f([1], i), [1]); } }); }); - describe('shuffle', function () { - var f = arr.shuffle; - var a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; - var b; - var c = []; - it('test array has same length', function () { + describe('shuffle', () => { + const f = arr.shuffle; + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + let b; + let c = []; + it('test array has same length', () => { b = f(a); test.assertEqual(b.length, a.length); }); - it('test array contains all items', function () { + it('test array contains all items', () => { b = f(a); - for (var i = 0; i < a.length; i++) { - test.assertTrue(b.indexOf(a[i]) > -1); + for (let i = 0; i < a.length; i++) { + test.assertTrue(b.includes(a[i])); } }); - it('test array contains all items once', function () { + it('test array contains all items once', () => { b = f(a); - for (var i = 0; i < a.length; i++) { + for (let i = 0; i < a.length; i++) { test.assertEqual(b.indexOf(a[i]), b.lastIndexOf(a[i])); } }); - it('test array items order changed', function () { + it('test array items order changed', () => { b = f(a); - c = b.some(function (item) { + c = b.some((item) => { return a.indexOf(item) != b.indexOf(item); }); test.assertTrue(c); }); }); - describe('sort', function () { - var f = arr.sort; - var s = arr.shuffle; - var a, b; - it('test array of numbers', function () { + describe('sort', () => { + const f = arr.sort; + const s = arr.shuffle; + let a, b; + it('test array of numbers', () => { a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; b = s([9, 8, 7, 6, 5, 4, 3, 2, 1, 0]); test.assertEqual(f(b), a); }); - it('test array of numbers and strings', function () { + it('test array of numbers and strings', () => { a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c', 'd']; b = s([9, 8, 'd', 7, 6, 'c', 5, 4, 'b', 3, 2, 'a', 1, 0]); test.assertEqual(f(b), a); }); - it('test array of objects on key', function () { + it('test array of objects on key', () => { a = [ { n: 0 }, { n: 1 }, @@ -1204,7 +1219,7 @@ describe('array', function () { ]); test.assertEqual(f(b, 'n'), a); }); - it('test array of arrays on index', function () { + it('test array of arrays on index', () => { a = [ [4, 0, 7], [0, 1, 2], @@ -1217,14 +1232,14 @@ describe('array', function () { test.assertEqual(f(b, 1), a); }); }); - describe('sum', function () { - var f = arr.sum; - it('test array of numbers', function () { - a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + describe('sum', () => { + const f = arr.sum; + it('test array of numbers', () => { + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; test.assertEqual(f(a), 45); }); - it('test array of objects', function () { - a = [ + it('test array of objects', () => { + const a = [ { n: 0 }, { n: 1 }, { n: 2 }, @@ -1237,19 +1252,19 @@ describe('array', function () { { n: 9 }, ]; test.assertEqual( - f(a, function (item) { + f(a, (item) => { return item['n']; }), 45 ); }); }); - describe('unique', function () { - var f = arr.unique; - it('test array empty', function () { + describe('unique', () => { + const f = arr.unique; + it('test array empty', () => { test.assertEqual(f([[], [], [], []]), [[]]); }); - it('test array', function () { + it('test array', () => { test.assertEqual( f([ [0, 1, 2, 3, 4], @@ -1263,47 +1278,47 @@ describe('array', function () { ] ); }); - it('test boolean', function () { + it('test boolean', () => { test.assertEqual(f([true, false, true, false]), [true, false]); }); - it('test date', function () { - var d1 = new Date(); - var d2 = new Date('2018/12/31'); + it('test date', () => { + const d1 = new Date(); + const d2 = new Date('2018/12/31'); test.assertEqual(f([d1, d2, d1]), [d1, d2]); }); - it('test error', function () { - var e1 = new Error('error 1'); - var e2 = new Error('error 2'); + it('test error', () => { + const e1 = new Error('error 1'); + const e2 = new Error('error 2'); test.assertEqual(f([e1, e1, e1, e2, e2, e2]), [e1, e2]); }); - it('test function', function () { - var f1 = f; - var f2 = function () {}; + it('test function', () => { + const f1 = f; + const f2 = () => {}; test.assertEqual(f([f1, f2, f1, f2, f1, f2], false), [f1, f2]); }); - it('test nan', function () { + it('test nan', () => { test.assertEqual(f([NaN, NaN, NaN]), [NaN]); }); - it('test none', function () { + it('test none', () => { test.assertEqual(f([null, undefined, NaN, null, undefined, NaN]), [ null, undefined, NaN, ]); }); - it('test null', function () { + it('test null', () => { test.assertEqual(f([null, null, null]), [null]); }); - it('test number', function () { + it('test number', () => { test.assertEqual( f([0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9]), [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] ); }); - it('test object empty', function () { + it('test object empty', () => { test.assertEqual(f([{}, {}, {}]), [{}]); }); - it('test object', function () { + it('test object', () => { test.assertEqual(f([{ a: 1 }, { a: 1 }, { a: 1 }]), [{ a: 1 }]); test.assertEqual( f([ @@ -1317,31 +1332,31 @@ describe('array', function () { ] ); }); - it('test regexp', function () { - var re1 = /^$/; - var re2 = /^[a-z]$/; + it('test regexp', () => { + const re1 = /^$/; + const re2 = /^[a-z]$/; test.assertEqual(f([re1, re2, re1, re2]), [re1, re2]); }); - it('test string empty', function () { + it('test string empty', () => { test.assertEqual(f(['', '', '']), ['']); test.assertEqual(f(['', ' ', ' ']), ['', ' ', ' ']); }); - it('test string', function () { + it('test string', () => { test.assertEqual(f(['a', 'a', 'b', 'b', 'c', 'c']), ['a', 'b', 'c']); }); - it('test undefined', function () { + it('test undefined', () => { test.assertEqual(f([undefined, undefined, undefined]), [undefined]); }); }); - describe('zip / unzip', function () { - var z = arr.zip; - var u = arr.unzip; - var a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; - var b = ['a', 'b', 'c', 'd', 'e', 'f']; - var c = [true, false, true, false, true, undefined]; - var l = Math.min(a.length, b.length, c.length); - var unzipped = [a.slice(0, l), b.slice(0, l), c.slice(0, l)]; - var zipped = [ + describe('zip / unzip', () => { + const z = arr.zip; + const u = arr.unzip; + const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + const b = ['a', 'b', 'c', 'd', 'e', 'f']; + const c = [true, false, true, false, true, undefined]; + const l = Math.min(a.length, b.length, c.length); + const unzipped = [a.slice(0, l), b.slice(0, l), c.slice(0, l)]; + const zipped = [ [0, 'a', true], [1, 'b', false], [2, 'c', true], @@ -1349,17 +1364,17 @@ describe('array', function () { [4, 'e', true], [5, 'f', undefined], ]; - it('test zip', function () { + it('test zip', () => { test.assertEqual(z(a, b, c), zipped); }); - it('test unzip', function () { + it('test unzip', () => { test.assertEqual(u(zipped), unzipped); }); - it('test zip/unzip', function () { + it('test zip/unzip', () => { test.assertEqual(u(z(a, b, c)), unzipped); }); - it('test unzip/zip', function () { - test.assertEqual(z.apply(null, u(zipped)), zipped); + it('test unzip/zip', () => { + test.assertEqual(z(...u(zipped)), zipped); }); }); }); diff --git a/test/test_base64.js b/test/test_base64.js index 44b14ad..7c20942 100644 --- a/test/test_base64.js +++ b/test/test_base64.js @@ -1,95 +1,95 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; +import utils from '../src/utils.js'; +const test = utils.test; -describe('base64', function () { - var b = utils.base64; - var d = b.decode; - var e = b.encode; - describe('decode', function () { - it('test decode empty', function () { +describe('base64', () => { + const b = utils.base64; + const d = b.decode; + const e = b.encode; + describe('decode', () => { + it('test decode empty', () => { test.assertEqual(d(''), ''); }); - it('test decode simple', function () { + it('test decode simple', () => { test.assertEqual( d('QGZhYmlvY2FjY2Ftby91dGlscy5qcw=='), '@fabiocaccamo/utils.js' ); }); - it('test decode simple with extra white space', function () { + it('test decode simple with extra white space', () => { test.assertEqual( d(' QGZhYmlvY2FjY2Ftby91dGlscy5qcw== '), '@fabiocaccamo/utils.js' ); }); - it('test decode simple with invalid chars', function () { + it('test decode simple with invalid chars', () => { test.assertEqual( d('#QGZhYmlvY2FjY2Ftby91dGlscy5qcw==!'), '@fabiocaccamo/utils.js' ); }); - it('test decode/encode simple', function () { + it('test decode/encode simple', () => { test.assertEqual(d(e('@fabiocaccamo/utils.js')), '@fabiocaccamo/utils.js'); }); - it('test decode utf8 simple', function () { - var input = '✓ ok'; - var output = '4pyTIG9r'; + it('test decode utf8 simple', () => { + const input = '✓ ok'; + const output = '4pyTIG9r'; test.assertEqual(d(output), input); }); - it('test decode/encode utf8 simple', function () { - var input = '✓ ok'; + it('test decode/encode utf8 simple', () => { + const input = '✓ ok'; // var output = '4pyTIG9r'; test.assertEqual(d(e(input)), input); }); - it('test decode utf8', function () { - var input = + it('test decode utf8', () => { + const input = '観カサチス話著ワヨ起旅リレム西災朝ウフソマ例権エムテス料購73楽チホ養座らち関産そ拡提権ばぜ視実トこ聞図ラホヨ検競ッそぐ携様ツサヤ険能みっッ北挙煙るつ。誘ナモシメ周初おトぱ年求ラぼ手験名ふ希栄ワセムヒ恵真おやふ表要91保ぞあぶ教建リ記就イらろめ見徳弁ん財84海ルヘ正権カシ法彼けるよ。'; - var output = + const output = '6Kaz44Kr44K144OB44K56Kmx6JGX44Ov44Oo6LW35peF44Oq44Os44Og6KW/54G95pyd44Km44OV44K944Oe5L6L5qip44Ko44Og44OG44K55paZ6LO8NzPmpb3jg4Hjg5vppIrluqfjgonjgaHplqLnlKPjgZ3mi6Hmj5DmqKnjgbDjgZzoppblrp/jg4jjgZPogZ7lm7Pjg6njg5vjg6jmpJznq7bjg4PjgZ3jgZDmkLrmp5jjg4TjgrXjg6Tpmbrog73jgb/jgaPjg4PljJfmjJnnhZnjgovjgaTjgILoqpjjg4rjg6Ljgrfjg6HlkajliJ3jgYrjg4jjgbHlubTmsYLjg6njgbzmiYvpqJPlkI3jgbXluIzmoITjg6/jgrvjg6Djg5LmgbXnnJ/jgYrjgoTjgbXooajopoE5MeS/neOBnuOBguOBtuaVmeW7uuODquiomOWwseOCpOOCieOCjeOCgeimi+W+s+W8geOCk+iyoTg05rW344Or44OY5q2j5qip44Kr44K35rOV5b2844GR44KL44KI44CC'; test.assertEqual(d(output), input); }); - it('test decode/encode utf8', function () { - var input = + it('test decode/encode utf8', () => { + const input = '観カサチス話著ワヨ起旅リレム西災朝ウフソマ例権エムテス料購73楽チホ養座らち関産そ拡提権ばぜ視実トこ聞図ラホヨ検競ッそぐ携様ツサヤ険能みっッ北挙煙るつ。誘ナモシメ周初おトぱ年求ラぼ手験名ふ希栄ワセムヒ恵真おやふ表要91保ぞあぶ教建リ記就イらろめ見徳弁ん財84海ルヘ正権カシ法彼けるよ。'; // var output = '6Kaz44Kr44K144OB44K56Kmx6JGX44Ov44Oo6LW35peF44Oq44Os44Og6KW/54G95pyd44Km44OV44K944Oe5L6L5qip44Ko44Og44OG44K55paZ6LO8NzPmpb3jg4Hjg5vppIrluqfjgonjgaHplqLnlKPjgZ3mi6Hmj5DmqKnjgbDjgZzoppblrp/jg4jjgZPogZ7lm7Pjg6njg5vjg6jmpJznq7bjg4PjgZ3jgZDmkLrmp5jjg4TjgrXjg6Tpmbrog73jgb/jgaPjg4PljJfmjJnnhZnjgovjgaTjgILoqpjjg4rjg6Ljgrfjg6HlkajliJ3jgYrjg4jjgbHlubTmsYLjg6njgbzmiYvpqJPlkI3jgbXluIzmoITjg6/jgrvjg6Djg5LmgbXnnJ/jgYrjgoTjgbXooajopoE5MeS/neOBnuOBguOBtuaVmeW7uuODquiomOWwseOCpOOCieOCjeOCgeimi+W+s+W8geOCk+iyoTg05rW344Or44OY5q2j5qip44Kr44K35rOV5b2844GR44KL44KI44CC'; test.assertEqual(d(e(input)), input); }); }); - describe('encode', function () { - it('test encode empty', function () { + describe('encode', () => { + it('test encode empty', () => { test.assertEqual(e(''), ''); }); - it('test encode simple', function () { + it('test encode simple', () => { test.assertEqual( e('@fabiocaccamo/utils.js'), 'QGZhYmlvY2FjY2Ftby91dGlscy5qcw==' ); }); - it('test encode/decode simple', function () { + it('test encode/decode simple', () => { test.assertEqual( e(d('QGZhYmlvY2FjY2Ftby91dGlscy5qcw==')), 'QGZhYmlvY2FjY2Ftby91dGlscy5qcw==' ); }); - it('test encode utf8 simple', function () { - var input = '✓ ok'; - var output = '4pyTIG9r'; + it('test encode utf8 simple', () => { + const input = '✓ ok'; + const output = '4pyTIG9r'; test.assertEqual(e(input), output); }); - it('test encode/decode utf8 simple', function () { + it('test encode/decode utf8 simple', () => { // var input = '✓ ok'; - var output = '4pyTIG9r'; + const output = '4pyTIG9r'; test.assertEqual(e(d(output)), output); }); - it('test encode utf8', function () { - var input = + it('test encode utf8', () => { + const input = '観カサチス話著ワヨ起旅リレム西災朝ウフソマ例権エムテス料購73楽チホ養座らち関産そ拡提権ばぜ視実トこ聞図ラホヨ検競ッそぐ携様ツサヤ険能みっッ北挙煙るつ。誘ナモシメ周初おトぱ年求ラぼ手験名ふ希栄ワセムヒ恵真おやふ表要91保ぞあぶ教建リ記就イらろめ見徳弁ん財84海ルヘ正権カシ法彼けるよ。'; - var output = + const output = '6Kaz44Kr44K144OB44K56Kmx6JGX44Ov44Oo6LW35peF44Oq44Os44Og6KW/54G95pyd44Km44OV44K944Oe5L6L5qip44Ko44Og44OG44K55paZ6LO8NzPmpb3jg4Hjg5vppIrluqfjgonjgaHplqLnlKPjgZ3mi6Hmj5DmqKnjgbDjgZzoppblrp/jg4jjgZPogZ7lm7Pjg6njg5vjg6jmpJznq7bjg4PjgZ3jgZDmkLrmp5jjg4TjgrXjg6Tpmbrog73jgb/jgaPjg4PljJfmjJnnhZnjgovjgaTjgILoqpjjg4rjg6Ljgrfjg6HlkajliJ3jgYrjg4jjgbHlubTmsYLjg6njgbzmiYvpqJPlkI3jgbXluIzmoITjg6/jgrvjg6Djg5LmgbXnnJ/jgYrjgoTjgbXooajopoE5MeS/neOBnuOBguOBtuaVmeW7uuODquiomOWwseOCpOOCieOCjeOCgeimi+W+s+W8geOCk+iyoTg05rW344Or44OY5q2j5qip44Kr44K35rOV5b2844GR44KL44KI44CC'; test.assertEqual(e(input), output); }); - it('test encode/decode utf8', function () { + it('test encode/decode utf8', () => { // var input = '観カサチス話著ワヨ起旅リレム西災朝ウフソマ例権エムテス料購73楽チホ養座らち関産そ拡提権ばぜ視実トこ聞図ラホヨ検競ッそぐ携様ツサヤ険能みっッ北挙煙るつ。誘ナモシメ周初おトぱ年求ラぼ手験名ふ希栄ワセムヒ恵真おやふ表要91保ぞあぶ教建リ記就イらろめ見徳弁ん財84海ルヘ正権カシ法彼けるよ。'; - var output = + const output = '6Kaz44Kr44K144OB44K56Kmx6JGX44Ov44Oo6LW35peF44Oq44Os44Og6KW/54G95pyd44Km44OV44K944Oe5L6L5qip44Ko44Og44OG44K55paZ6LO8NzPmpb3jg4Hjg5vppIrluqfjgonjgaHplqLnlKPjgZ3mi6Hmj5DmqKnjgbDjgZzoppblrp/jg4jjgZPogZ7lm7Pjg6njg5vjg6jmpJznq7bjg4PjgZ3jgZDmkLrmp5jjg4TjgrXjg6Tpmbrog73jgb/jgaPjg4PljJfmjJnnhZnjgovjgaTjgILoqpjjg4rjg6Ljgrfjg6HlkajliJ3jgYrjg4jjgbHlubTmsYLjg6njgbzmiYvpqJPlkI3jgbXluIzmoITjg6/jgrvjg6Djg5LmgbXnnJ/jgYrjgoTjgbXooajopoE5MeS/neOBnuOBguOBtuaVmeW7uuODquiomOWwseOCpOOCieOCjeOCgeimi+W+s+W8geOCk+iyoTg05rW344Or44OY5q2j5qip44Kr44K35rOV5b2844GR44KL44KI44CC'; test.assertEqual(e(d(output)), output); }); diff --git a/test/test_color.js b/test/test_color.js index c96279d..e9ed016 100644 --- a/test/test_color.js +++ b/test/test_color.js @@ -1,10 +1,10 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; -var color = utils.color; +import utils from '../src/utils.js'; +const test = utils.test; +const color = utils.color; -describe('color', function () { - describe('cmyk', function () { - it('test utility object', function () { +describe('color', () => { + describe('cmyk', () => { + it('test utility object', () => { test.assertObject(color.cmyk); }); }); @@ -13,8 +13,8 @@ describe('color', function () { // test.assertTrue(true); // }); // }); - describe('cmykToHex', function () { - it('TODO', function () { + describe('cmykToHex', () => { + it('TODO', () => { test.assertTrue(true); }); }); @@ -28,8 +28,8 @@ describe('color', function () { // test.assertTrue(true); // }); // }); - describe('cmykToRgb', function () { - it('TODO', function () { + describe('cmykToRgb', () => { + it('TODO', () => { test.assertTrue(true); }); }); @@ -63,13 +63,13 @@ describe('color', function () { // test.assertTrue(true); // }); // }); - describe('hex', function () { - it('test utility object', function () { + describe('hex', () => { + it('test utility object', () => { test.assertObject(color.hex); }); }); - describe('hexToCmyk', function () { - it('TODO', function () { + describe('hexToCmyk', () => { + it('TODO', () => { test.assertTrue(true); }); }); @@ -93,8 +93,8 @@ describe('color', function () { // test.assertTrue(true); // }); // }); - describe('hexToRgb', function () { - it('TODO', function () { + describe('hexToRgb', () => { + it('TODO', () => { test.assertTrue(true); }); }); @@ -158,13 +158,13 @@ describe('color', function () { // test.assertTrue(true); // }); // }); - describe('rgb', function () { - it('test utility object', function () { + describe('rgb', () => { + it('test utility object', () => { test.assertObject(color.rgb); }); }); - describe('rgbToCmyk', function () { - it('TODO', function () { + describe('rgbToCmyk', () => { + it('TODO', () => { test.assertTrue(true); }); }); @@ -173,8 +173,8 @@ describe('color', function () { // test.assertTrue(true); // }); // }); - describe('rgbToHex', function () { - it('TODO', function () { + describe('rgbToHex', () => { + it('TODO', () => { test.assertTrue(true); }); }); diff --git a/test/test_color_cmyk.js b/test/test_color_cmyk.js index fee39f7..593a8ba 100644 --- a/test/test_color_cmyk.js +++ b/test/test_color_cmyk.js @@ -1,19 +1,19 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; -var cmyk = utils.color.cmyk; -var hex = utils.color.hex; -var rgb = utils.color.rgb; +import utils from '../src/utils.js'; +const test = utils.test; +const cmyk = utils.color.cmyk; +const hex = utils.color.hex; +const rgb = utils.color.rgb; -describe('color.cmyk', function () { +describe('color.cmyk', () => { // describe('average', function() { - // var f = cmyk.average; + // const f = cmyk.average; // it('test simple', function() { // r = f([{ c:0, m:0, y:0, k:100 }, { c:0, m:50, y:75, k:22 }, { c:0, m:50, y:75, k:22 }]); // test.assertEqual(r, { c:0, m:50.4, y:75.2, k:47.8 }); // }); // }); // describe('distance', function() { - // var f = cmyk.distance; + // const f = cmyk.distance; // var r; // it('test simple', function() { // r = f({ c:0, m:0, y:0, k:100 }, { c:0, m:0, y:0, k:0 }); @@ -21,7 +21,7 @@ describe('color.cmyk', function () { // }); // }); // describe('gradient', function() { - // var f = cmyk.gradient; + // const f = cmyk.gradient; // var r; // it('test 2 colors and 1 step', function() { // r = f([{ c:0, m:100, y:100, k:0 }, { c:100, m:0, y:100, k:0 }], 1); @@ -41,7 +41,7 @@ describe('color.cmyk', function () { // }); // }); // describe('gradientMatrix', function() { - // var f = cmyk.gradientMatrix; + // const f = cmyk.gradientMatrix; // var r; // it('test 5x4 matrix with 4 required points', function() { // r = f({ @@ -59,7 +59,7 @@ describe('color.cmyk', function () { // }); // }); // describe('interpolateBilinear', function() { - // var f = cmyk.interpolateBilinear; + // const f = cmyk.interpolateBilinear; // var r; // var a = { c:0, m:0, y:0, k:0 }; // var b = { c:0, m:100, y:100, k:0 }; @@ -87,7 +87,7 @@ describe('color.cmyk', function () { // }); // }); // describe('interpolateLinear', function() { - // var f = cmyk.interpolateLinear; + // const f = cmyk.interpolateLinear; // var r; // it('test interpolate 0.0', function() { // r = f({ c:100, m:50, y:0, k:61 }, { c:75, m:25, y:0, k:22 }, 0.0); @@ -103,7 +103,7 @@ describe('color.cmyk', function () { // }); // }); // describe('interpolateMultilinear', function() { - // var f = cmyk.interpolateMultilinear; + // const f = cmyk.interpolateMultilinear; // var r; // var c = [{ c:0, m:0, y:0, k:0 }, { c:0, m:100, y:100, k:0 }, { c:0, m:0, y:0, k:100 }]; // it('test interpolate 0.0', function() { @@ -137,30 +137,30 @@ describe('color.cmyk', function () { // test.assertTrue(true); // }); // }); - describe('toHex', function () { - var f = cmyk.toHex; - var r; - it('test black', function () { + describe('toHex', () => { + const f = cmyk.toHex; + let r; + it('test black', () => { r = f({ c: 0, m: 0, y: 0, k: 100 }); test.assertEqual(r, '#000000'); }); - it('test white', function () { + it('test white', () => { r = f({ c: 0, m: 0, y: 0, k: 0 }); test.assertEqual(r, '#FFFFFF'); }); - it('test red', function () { + it('test red', () => { r = f({ c: 0, m: 100, y: 100, k: 0 }); test.assertEqual(r, '#FF0000'); }); - it('test green', function () { + it('test green', () => { r = f({ c: 100, m: 0, y: 100, k: 0 }); test.assertEqual(r, '#00FF00'); }); - it('test blue', function () { + it('test blue', () => { r = f({ c: 100, m: 100, y: 0, k: 0 }); test.assertEqual(r, '#0000FF'); }); - it('test gray', function () { + it('test gray', () => { r = f({ c: 0, m: 0, y: 0, k: 50 }); test.assertEqual(r, '#808080'); }); @@ -175,86 +175,86 @@ describe('color.cmyk', function () { // test.assertTrue(true); // }); // }); - describe('toRgb', function () { - var f = cmyk.toRgb; - var r; - it('test black', function () { + describe('toRgb', () => { + const f = cmyk.toRgb; + let r; + it('test black', () => { r = f({ c: 0, m: 0, y: 0, k: 100 }); test.assertEqual(r, { r: 0, g: 0, b: 0, a: 1.0 }); }); - it('test white', function () { + it('test white', () => { r = f({ c: 0, m: 0, y: 0, k: 0 }); test.assertEqual(r, { r: 255, g: 255, b: 255, a: 1.0 }); }); - it('test red', function () { + it('test red', () => { r = f({ c: 0, m: 100, y: 100, k: 0 }); test.assertEqual(r, { r: 255, g: 0, b: 0, a: 1.0 }); }); - it('test green', function () { + it('test green', () => { r = f({ c: 100, m: 0, y: 100, k: 0 }); test.assertEqual(r, { r: 0, g: 255, b: 0, a: 1.0 }); }); - it('test blue', function () { + it('test blue', () => { r = f({ c: 100, m: 100, y: 0, k: 0 }); test.assertEqual(r, { r: 0, g: 0, b: 255, a: 1.0 }); }); - it('test gray', function () { + it('test gray', () => { r = f({ c: 0, m: 0, y: 0, k: 50 }); test.assertEqual(r, { r: 128, g: 128, b: 128, a: 1.0 }); }); }); - describe('toString', function () { - var f = cmyk.toString; - var r; - it('test black', function () { + describe('toString', () => { + const f = cmyk.toString; + let r; + it('test black', () => { r = f({ c: 0, m: 0, y: 0, k: 100 }); test.assertEqual(r, '{ c:0, m:0, y:0, k:100 }'); }); - it('test white', function () { + it('test white', () => { r = f({ c: 0, m: 0, y: 0, k: 0 }); test.assertEqual(r, '{ c:0, m:0, y:0, k:0 }'); }); - it('test red', function () { + it('test red', () => { r = f({ c: 0, m: 100, y: 100, k: 0 }); test.assertEqual(r, '{ c:0, m:100, y:100, k:0 }'); }); - it('test green', function () { + it('test green', () => { r = f({ c: 100, m: 0, y: 100, k: 0 }); test.assertEqual(r, '{ c:100, m:0, y:100, k:0 }'); }); - it('test blue', function () { + it('test blue', () => { r = f({ c: 100, m: 100, y: 0, k: 0 }); test.assertEqual(r, '{ c:100, m:100, y:0, k:0 }'); }); - it('test gray', function () { + it('test gray', () => { r = f({ c: 0, m: 0, y: 0, k: 50 }); test.assertEqual(r, '{ c:0, m:0, y:0, k:50 }'); }); }); - describe('toStringCSS', function () { - var f = cmyk.toStringCSS; - var r; - it('test black', function () { + describe('toStringCSS', () => { + const f = cmyk.toStringCSS; + let r; + it('test black', () => { r = f({ c: 0, m: 0, y: 0, k: 100 }); test.assertEqual(r, 'cmyk(0%, 0%, 0%, 100%)'); }); - it('test white', function () { + it('test white', () => { r = f({ c: 0, m: 0, y: 0, k: 0 }); test.assertEqual(r, 'cmyk(0%, 0%, 0%, 0%)'); }); - it('test red', function () { + it('test red', () => { r = f({ c: 0, m: 100, y: 100, k: 0 }); test.assertEqual(r, 'cmyk(0%, 100%, 100%, 0%)'); }); - it('test green', function () { + it('test green', () => { r = f({ c: 100, m: 0, y: 100, k: 0 }); test.assertEqual(r, 'cmyk(100%, 0%, 100%, 0%)'); }); - it('test blue', function () { + it('test blue', () => { r = f({ c: 100, m: 100, y: 0, k: 0 }); test.assertEqual(r, 'cmyk(100%, 100%, 0%, 0%)'); }); - it('test gray', function () { + it('test gray', () => { r = f({ c: 0, m: 0, y: 0, k: 50 }); test.assertEqual(r, 'cmyk(0%, 0%, 0%, 50%)'); }); diff --git a/test/test_color_hex.js b/test/test_color_hex.js index a9adf6a..027fffc 100644 --- a/test/test_color_hex.js +++ b/test/test_color_hex.js @@ -1,50 +1,50 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; -var hex = utils.color.hex; -var cmyk = utils.color.cmyk; -var rgb = utils.color.rgb; +import utils from '../src/utils.js'; +const test = utils.test; +const hex = utils.color.hex; +const cmyk = utils.color.cmyk; +const rgb = utils.color.rgb; -describe('color.hex', function () { - describe('average', function () { - var f = hex.average; - var r; - it('test simple', function () { +describe('color.hex', () => { + describe('average', () => { + const f = hex.average; + let r; + it('test simple', () => { r = f(['#000000', '#C86432', '#C86432']); test.assertEqual(r, '#854321'); }); }); - describe('distance', function () { - var f = hex.distance; - var r; - it('test simple', function () { + describe('distance', () => { + const f = hex.distance; + let r; + it('test simple', () => { r = f('#000000', '#FFFFFF'); test.assertNumberAlmostEqual(r, 441.6729559300637); }); }); - describe('gradient', function () { - var f = hex.gradient; - var r; - it('test 2 colors and 1 step', function () { + describe('gradient', () => { + const f = hex.gradient; + let r; + it('test 2 colors and 1 step', () => { r = f(['#FF0000', '#00FF00'], 1); test.assertEqual(r, ['#FF0000']); }); - it('test 2 colors and 2 steps', function () { + it('test 2 colors and 2 steps', () => { r = f(['#FF0000', '#00FF00'], 2); test.assertEqual(r, ['#FF0000', '#00FF00']); }); - it('test 2 colors and 3 steps', function () { + it('test 2 colors and 3 steps', () => { r = f(['#FF0000', '#00FF00'], 3); test.assertEqual(r, ['#FF0000', '#808000', '#00FF00']); }); - it('test 2 colors and 4 steps', function () { + it('test 2 colors and 4 steps', () => { r = f(['#FF0000', '#00FF00'], 4); test.assertEqual(r, ['#FF0000', '#AA5500', '#55AA00', '#00FF00']); }); }); - describe('gradientMatrix', function () { - var f = hex.gradientMatrix; - var r; - it('test 5x4 matrix with 4 required points', function () { + describe('gradientMatrix', () => { + const f = hex.gradientMatrix; + let r; + it('test 5x4 matrix with 4 required points', () => { r = f( { topLeft: '#FF0000', @@ -62,7 +62,7 @@ describe('color.hex', function () { ['#000000', '#000040', '#000080', '#0000C0', '#0000FF'], ]); }); - it('test 5x4 matrix with 4 required points and 4 optional points', function () { + it('test 5x4 matrix with 4 required points and 4 optional points', () => { r = f( { topLeft: '#FF0000', @@ -85,115 +85,115 @@ describe('color.hex', function () { ]); }); }); - describe('interpolateBilinear', function () { - var f = hex.interpolateBilinear; - var r; - var a = '#FFFFFF'; - var b = '#FF0000'; - var c = '#00FF00'; - var d = '#0000FF'; - it('test interpolate 0.0 - 0.0', function () { + describe('interpolateBilinear', () => { + const f = hex.interpolateBilinear; + let r; + const a = '#FFFFFF'; + const b = '#FF0000'; + const c = '#00FF00'; + const d = '#0000FF'; + it('test interpolate 0.0 - 0.0', () => { r = f(a, b, c, d, 0.0, 0.0); test.assertEqual(r, '#FFFFFF'); }); - it('test interpolate 0.5 - 0.0', function () { + it('test interpolate 0.5 - 0.0', () => { r = f(a, b, c, d, 0.5, 0.0); test.assertEqual(r, '#FF8080'); }); - it('test interpolate 0.0 - 0.5', function () { + it('test interpolate 0.0 - 0.5', () => { r = f(a, b, c, d, 0.0, 0.5); test.assertEqual(r, '#80FF80'); }); - it('test interpolate 0.5 - 0.5', function () { + it('test interpolate 0.5 - 0.5', () => { r = f(a, b, c, d, 0.5, 0.5); test.assertEqual(r, '#808080'); }); - it('test interpolate 1.0 - 1.0', function () { + it('test interpolate 1.0 - 1.0', () => { r = f(a, b, c, d, 1.0, 1.0); test.assertEqual(r, '#0000FF'); }); }); - describe('interpolateLinear', function () { - var f = hex.interpolateLinear; - var r; - it('test interpolate 0.0', function () { + describe('interpolateLinear', () => { + const f = hex.interpolateLinear; + let r; + it('test interpolate 0.0', () => { r = f('#003264', '#3296C8', 0.0); test.assertEqual(r, '#003264'); }); - it('test interpolate 0.5', function () { + it('test interpolate 0.5', () => { r = f('#003264', '#3296C8', 0.5); test.assertEqual(r, '#196496'); }); - it('test interpolate 1.0', function () { + it('test interpolate 1.0', () => { r = f('#003264', '#3296C8', 1.0); test.assertEqual(r, '#3296C8'); }); }); - describe('interpolateMultilinear', function () { - var f = hex.interpolateMultilinear; - var r; - var c = ['#FFFFFF', '#FF0000', '#000000']; - it('test interpolate 0.0', function () { + describe('interpolateMultilinear', () => { + const f = hex.interpolateMultilinear; + let r; + const c = ['#FFFFFF', '#FF0000', '#000000']; + it('test interpolate 0.0', () => { r = f(c, 0.0); test.assertEqual(r, '#FFFFFF'); }); - it('test interpolate 0.25', function () { + it('test interpolate 0.25', () => { r = f(c, 0.25); test.assertEqual(r, '#FF8080'); }); - it('test interpolate 0.5', function () { + it('test interpolate 0.5', () => { r = f(c, 0.5); test.assertEqual(r, '#FF0000'); }); - it('test interpolate 0.75', function () { + it('test interpolate 0.75', () => { r = f(c, 0.75); test.assertEqual(r, '#800000'); }); - it('test interpolate 1.0', function () { + it('test interpolate 1.0', () => { r = f(c, 1.0); test.assertEqual(r, '#000000'); }); }); - describe('nearest', function () { - var f = hex.nearest; - var r; - it('test simple', function () { + describe('nearest', () => { + const f = hex.nearest; + let r; + it('test simple', () => { r = f('#320000', ['#000000', '#190000', '#370A0A', '#FFFFFF']); test.assertEqual(r, '#370A0A'); }); }); - describe('toCmyk', function () { - var f = hex.toCmyk; - var r; - it('test black', function () { + describe('toCmyk', () => { + const f = hex.toCmyk; + let r; + it('test black', () => { r = f('#000000'); test.assertEqual(r, { c: 0, m: 0, y: 0, k: 100 }); }); - it('test white', function () { + it('test white', () => { r = f('#FFFFFF'); test.assertEqual(r, { c: 0, m: 0, y: 0, k: 0 }); }); - it('test red', function () { + it('test red', () => { r = f('#FF0000'); test.assertEqual(r, { c: 0, m: 100, y: 100, k: 0 }); }); - it('test green', function () { + it('test green', () => { r = f('#00FF00'); test.assertEqual(r, { c: 100, m: 0, y: 100, k: 0 }); }); - it('test blue', function () { + it('test blue', () => { r = f('#0000FF'); test.assertEqual(r, { c: 100, m: 100, y: 0, k: 0 }); }); - it('test gray', function () { + it('test gray', () => { r = f('#404040'); test.assertEqual(r, { c: 0, m: 0, y: 0, k: 75 }); }); - it('test light gray', function () { + it('test light gray', () => { r = f('#BFBFBF'); test.assertEqual(r, { c: 0, m: 0, y: 0, k: 25 }); }); - it('test dark gray', function () { + it('test dark gray', () => { r = f('#7F7F7F'); test.assertEqual(r, { c: 0, m: 0, y: 0, k: 50 }); }); @@ -213,80 +213,80 @@ describe('color.hex', function () { // test.assertTrue(true); // }); // }); - describe('toRgb', function () { - var f = hex.toRgb; - var r; - it('test alpha 0%', function () { + describe('toRgb', () => { + const f = hex.toRgb; + let r; + it('test alpha 0%', () => { r = f('#00000000'); test.assertEqual(r, { r: 0, g: 0, b: 0, a: 0 }); }); - it('test alpha 50%', function () { + it('test alpha 50%', () => { r = f('#80000000'); test.assertEqual(r, { r: 0, g: 0, b: 0, a: 0.5 }); }); - it('test alpha 100%', function () { + it('test alpha 100%', () => { r = f('#000000'); test.assertEqual(r, { r: 0, g: 0, b: 0, a: 1 }); }); - it('test black', function () { + it('test black', () => { r = f('#000000'); test.assertEqual(r, { r: 0, g: 0, b: 0, a: 1.0 }); }); - it('test black (html short format)', function () { + it('test black (html short format)', () => { r = f('#000'); test.assertEqual(r, { r: 0, g: 0, b: 0, a: 1.0 }); }); - it('test white', function () { + it('test white', () => { r = f('#FFFFFF'); test.assertEqual(r, { r: 255, g: 255, b: 255, a: 1.0 }); }); - it('test white (html short format)', function () { + it('test white (html short format)', () => { r = f('#FFF'); test.assertEqual(r, { r: 255, g: 255, b: 255, a: 1.0 }); }); - it('test red', function () { + it('test red', () => { r = f('#FF0000'); test.assertEqual(r, { r: 255, g: 0, b: 0, a: 1.0 }); }); - it('test red (html short format)', function () { + it('test red (html short format)', () => { r = f('#F00'); test.assertEqual(r, { r: 255, g: 0, b: 0, a: 1.0 }); }); - it('test green', function () { + it('test green', () => { r = f('#00FF00'); test.assertEqual(r, { r: 0, g: 255, b: 0, a: 1.0 }); }); - it('test green (html short format)', function () { + it('test green (html short format)', () => { r = f('#0F0'); test.assertEqual(r, { r: 0, g: 255, b: 0, a: 1.0 }); }); - it('test blue', function () { + it('test blue', () => { r = f('#0000FF'); test.assertEqual(r, { r: 0, g: 0, b: 255, a: 1.0 }); }); - it('test blue (html short format)', function () { + it('test blue (html short format)', () => { r = f('#00F'); test.assertEqual(r, { r: 0, g: 0, b: 255, a: 1.0 }); }); - it('test prefix', function () { + it('test prefix', () => { r = f('0x000000'); test.assertEqual(r, { r: 0, g: 0, b: 0, a: 1.0 }); }); - it('test invalid value', function () { + it('test invalid value', () => { test.assertNull(f('0x000000000000')); }); }); - describe('toString', function () { - var f = hex.toString; - var s; - it('test alpha and prefix with numeric color value', function () { + describe('toString', () => { + const f = hex.toString; + let s; + it('test alpha and prefix with numeric color value', () => { s = f(0x80ff0000, '#'); test.assertEqual(s, '#80FF0000'); s = f(0x80ff0000, '0x'); test.assertEqual(s, '0x80FF0000'); }); - it('test alpha and prefix with string color value', function () { + it('test alpha and prefix with string color value', () => { s = f('0x80FF0000', '#'); test.assertEqual(s, '#80FF0000'); @@ -300,14 +300,14 @@ describe('color.hex', function () { test.assertEqual(s, '0x80FF0000'); }); }); - describe('toStringCSS', function () { - var f = hex.toStringCSS; - var s; - it('test alpha and prefix with numeric color value', function () { + describe('toStringCSS', () => { + const f = hex.toStringCSS; + let s; + it('test alpha and prefix with numeric color value', () => { s = f(0x80ff0000); test.assertEqual(s, '#80FF0000'); }); - it('test alpha and prefix with string color value', function () { + it('test alpha and prefix with string color value', () => { s = f('0x80FF0000'); test.assertEqual(s, '#80FF0000'); diff --git a/test/test_color_rgb.js b/test/test_color_rgb.js index bb1502f..891e861 100644 --- a/test/test_color_rgb.js +++ b/test/test_color_rgb.js @@ -1,14 +1,14 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; -var rgb = utils.color.rgb; -var cmyk = utils.color.cmyk; -var hex = utils.color.hex; +import utils from '../src/utils.js'; +const test = utils.test; +const rgb = utils.color.rgb; +const cmyk = utils.color.cmyk; +const hex = utils.color.hex; -describe('color.rgb', function () { - describe('average', function () { - var f = rgb.average; - it('test simple', function () { - r = f([ +describe('color.rgb', () => { + describe('average', () => { + const f = rgb.average; + it('test simple', () => { + const r = f([ { r: 0, g: 0, b: 0 }, { r: 200, g: 100, b: 50 }, { r: 200, g: 100, b: 50 }, @@ -16,18 +16,18 @@ describe('color.rgb', function () { test.assertEqual(r, { r: 133, g: 67, b: 33, a: 1.0 }); }); }); - describe('distance', function () { - var f = rgb.distance; - var r; - it('test simple', function () { + describe('distance', () => { + const f = rgb.distance; + let r; + it('test simple', () => { r = f({ r: 0, g: 0, b: 0 }, { r: 255, g: 255, b: 255 }); test.assertNumberAlmostEqual(r, 441.6729559300637); }); }); - describe('gradient', function () { - var f = rgb.gradient; - var r; - it('test 2 colors and 1 step', function () { + describe('gradient', () => { + const f = rgb.gradient; + let r; + it('test 2 colors and 1 step', () => { r = f( [ { r: 255, g: 0, b: 0 }, @@ -37,7 +37,7 @@ describe('color.rgb', function () { ); test.assertEqual(r, [{ r: 255, g: 0, b: 0, a: 1 }]); }); - it('test 2 colors and 2 steps', function () { + it('test 2 colors and 2 steps', () => { r = f( [ { r: 255, g: 0, b: 0 }, @@ -50,7 +50,7 @@ describe('color.rgb', function () { { r: 0, g: 255, b: 0, a: 1 }, ]); }); - it('test 2 colors and 3 steps', function () { + it('test 2 colors and 3 steps', () => { r = f( [ { r: 255, g: 0, b: 0 }, @@ -64,7 +64,7 @@ describe('color.rgb', function () { { r: 0, g: 255, b: 0, a: 1 }, ]); }); - it('test 2 colors and 4 steps', function () { + it('test 2 colors and 4 steps', () => { r = f( [ { r: 255, g: 0, b: 0 }, @@ -80,10 +80,10 @@ describe('color.rgb', function () { ]); }); }); - describe('gradientMatrix', function () { - var f = rgb.gradientMatrix; - var r; - it('test 5x4 matrix with 4 required points', function () { + describe('gradientMatrix', () => { + const f = rgb.gradientMatrix; + let r; + it('test 5x4 matrix with 4 required points', () => { r = f( { topLeft: { r: 255, g: 0, b: 0 }, @@ -125,7 +125,7 @@ describe('color.rgb', function () { ], ]); }); - it('test 5x4 matrix with 4 required points but invalid topLeft', function () { + it('test 5x4 matrix with 4 required points but invalid topLeft', () => { r = f( { topRight: { r: 0, g: 255, b: 0 }, @@ -137,7 +137,7 @@ describe('color.rgb', function () { ); test.assertEqual(r, null); }); - it('test 5x4 matrix with 4 required points but invalid topRight', function () { + it('test 5x4 matrix with 4 required points but invalid topRight', () => { r = f( { topLeft: { r: 255, g: 0, b: 0 }, @@ -149,7 +149,7 @@ describe('color.rgb', function () { ); test.assertEqual(r, null); }); - it('test 5x4 matrix with 4 required points but invalid bottomRight', function () { + it('test 5x4 matrix with 4 required points but invalid bottomRight', () => { r = f( { topLeft: { r: 255, g: 0, b: 0 }, @@ -161,7 +161,7 @@ describe('color.rgb', function () { ); test.assertEqual(r, null); }); - it('test 5x4 matrix with 4 required points but invalid bottomLeft', function () { + it('test 5x4 matrix with 4 required points but invalid bottomLeft', () => { r = f( { topLeft: { r: 255, g: 0, b: 0 }, @@ -174,83 +174,83 @@ describe('color.rgb', function () { test.assertEqual(r, null); }); }); - describe('interpolateBilinear', function () { - var f = rgb.interpolateBilinear; - var r; - var a = { r: 255, g: 255, b: 255 }; - var b = { r: 255, g: 0, b: 0 }; - var c = { r: 0, g: 255, b: 0 }; - var d = { r: 0, g: 0, b: 255 }; - it('test interpolate 0.0 - 0.0', function () { + describe('interpolateBilinear', () => { + const f = rgb.interpolateBilinear; + let r; + const a = { r: 255, g: 255, b: 255 }; + const b = { r: 255, g: 0, b: 0 }; + const c = { r: 0, g: 255, b: 0 }; + const d = { r: 0, g: 0, b: 255 }; + it('test interpolate 0.0 - 0.0', () => { r = f(a, b, c, d, 0.0, 0.0); test.assertEqual(r, { r: 255, g: 255, b: 255, a: 1.0 }); }); - it('test interpolate 0.5 - 0.0', function () { + it('test interpolate 0.5 - 0.0', () => { r = f(a, b, c, d, 0.5, 0.0); test.assertEqual(r, { r: 255, g: 128, b: 128, a: 1.0 }); }); - it('test interpolate 0.0 - 0.5', function () { + it('test interpolate 0.0 - 0.5', () => { r = f(a, b, c, d, 0.0, 0.5); test.assertEqual(r, { r: 128, g: 255, b: 128, a: 1.0 }); }); - it('test interpolate 0.5 - 0.5', function () { + it('test interpolate 0.5 - 0.5', () => { r = f(a, b, c, d, 0.5, 0.5); test.assertEqual(r, { r: 128, g: 128, b: 128, a: 1.0 }); }); - it('test interpolate 1.0 - 1.0', function () { + it('test interpolate 1.0 - 1.0', () => { r = f(a, b, c, d, 1.0, 1.0); test.assertEqual(r, { r: 0, g: 0, b: 255, a: 1.0 }); }); }); - describe('interpolateLinear', function () { - var f = rgb.interpolateLinear; - var r; - it('test interpolate 0.0', function () { + describe('interpolateLinear', () => { + const f = rgb.interpolateLinear; + let r; + it('test interpolate 0.0', () => { r = f({ r: 0, g: 50, b: 100 }, { r: 50, g: 150, b: 200 }, 0.0); test.assertEqual(r, { r: 0, g: 50, b: 100, a: 1.0 }); }); - it('test interpolate 0.5', function () { + it('test interpolate 0.5', () => { r = f({ r: 0, g: 50, b: 100 }, { r: 50, g: 150, b: 200 }, 0.5); test.assertEqual(r, { r: 25, g: 100, b: 150, a: 1.0 }); }); - it('test interpolate 1.0', function () { + it('test interpolate 1.0', () => { r = f({ r: 0, g: 50, b: 100 }, { r: 50, g: 150, b: 200 }, 1.0); test.assertEqual(r, { r: 50, g: 150, b: 200, a: 1.0 }); }); }); - describe('interpolateMultilinear', function () { - var f = rgb.interpolateMultilinear; - var r; - var c = [ + describe('interpolateMultilinear', () => { + const f = rgb.interpolateMultilinear; + let r; + const c = [ { r: 255, g: 255, b: 255 }, { r: 255, g: 0, b: 0 }, { r: 0, g: 0, b: 0 }, ]; - it('test interpolate 0.0', function () { + it('test interpolate 0.0', () => { r = f(c, 0.0); test.assertEqual(r, { r: 255, g: 255, b: 255, a: 1.0 }); }); - it('test interpolate 0.25', function () { + it('test interpolate 0.25', () => { r = f(c, 0.25); test.assertEqual(r, { r: 255, g: 128, b: 128, a: 1.0 }); }); - it('test interpolate 0.5', function () { + it('test interpolate 0.5', () => { r = f(c, 0.5); test.assertEqual(r, { r: 255, g: 0, b: 0, a: 1.0 }); }); - it('test interpolate 0.75', function () { + it('test interpolate 0.75', () => { r = f(c, 0.75); test.assertEqual(r, { r: 128, g: 0, b: 0, a: 1.0 }); }); - it('test interpolate 1.0', function () { + it('test interpolate 1.0', () => { r = f(c, 1.0); test.assertEqual(r, { r: 0, g: 0, b: 0, a: 1.0 }); }); }); - describe('nearest', function () { - var f = rgb.nearest; - var r; - it('test simple', function () { + describe('nearest', () => { + const f = rgb.nearest; + let r; + it('test simple', () => { r = f({ r: 50, g: 0, b: 0 }, [ { r: 0, g: 0, b: 0 }, { r: 25, g: 0, b: 0 }, @@ -260,38 +260,38 @@ describe('color.rgb', function () { test.assertEqual(r, { r: 55, g: 10, b: 10 }); }); }); - describe('toCmyk', function () { - var f = rgb.toCmyk; - var r; - it('test black', function () { + describe('toCmyk', () => { + const f = rgb.toCmyk; + let r; + it('test black', () => { r = f({ r: 0, g: 0, b: 0 }); test.assertEqual(r, { c: 0, m: 0, y: 0, k: 100 }); }); - it('test white', function () { + it('test white', () => { r = f({ r: 255, g: 255, b: 255 }); test.assertEqual(r, { c: 0, m: 0, y: 0, k: 0 }); }); - it('test red', function () { + it('test red', () => { r = f({ r: 255, g: 0, b: 0 }); test.assertEqual(r, { c: 0, m: 100, y: 100, k: 0 }); }); - it('test green', function () { + it('test green', () => { r = f({ r: 0, g: 255, b: 0 }); test.assertEqual(r, { c: 100, m: 0, y: 100, k: 0 }); }); - it('test blue', function () { + it('test blue', () => { r = f({ r: 0, g: 0, b: 255 }); test.assertEqual(r, { c: 100, m: 100, y: 0, k: 0 }); }); - it('test gray', function () { + it('test gray', () => { r = f({ r: 63, g: 63, b: 63 }); test.assertEqual(r, { c: 0, m: 0, y: 0, k: 75 }); }); - it('test light gray', function () { + it('test light gray', () => { r = f({ r: 190, g: 190, b: 190 }); test.assertEqual(r, { c: 0, m: 0, y: 0, k: 25 }); }); - it('test dark gray', function () { + it('test dark gray', () => { r = f({ r: 127, g: 127, b: 127 }); test.assertEqual(r, { c: 0, m: 0, y: 0, k: 50 }); }); @@ -301,54 +301,54 @@ describe('color.rgb', function () { // test.assertTrue(true); // }); // }); - describe('toHex', function () { - var f = rgb.toHex; - var r; - it('test alpha 0%', function () { + describe('toHex', () => { + const f = rgb.toHex; + let r; + it('test alpha 0%', () => { r = f({ r: 0, g: 0, b: 0, a: 0 }); test.assertEqual(r, '#00000000'); }); - it('test alpha 50%', function () { + it('test alpha 50%', () => { r = f({ r: 0, g: 0, b: 0, a: 0.5 }); test.assertEqual(r, '#80000000'); }); - it('test alpha 100%', function () { + it('test alpha 100%', () => { r = f({ r: 0, g: 0, b: 0, a: 1 }); test.assertEqual(r, '#000000'); }); - it('test black', function () { + it('test black', () => { r = f({ r: 0, g: 0, b: 0 }); test.assertEqual(r, '#000000'); }); - it('test white', function () { + it('test white', () => { r = f({ r: 255, g: 255, b: 255 }); test.assertEqual(r, '#FFFFFF'); }); - it('test red', function () { + it('test red', () => { r = f({ r: 255, g: 0, b: 0 }); test.assertEqual(r, '#FF0000'); }); - it('test green', function () { + it('test green', () => { r = f({ r: 0, g: 255, b: 0 }); test.assertEqual(r, '#00FF00'); }); - it('test blue', function () { + it('test blue', () => { r = f({ r: 0, g: 0, b: 255 }); test.assertEqual(r, '#0000FF'); }); - it('test prefix', function () { + it('test prefix', () => { r = f({ r: 0, g: 0, b: 0 }, '0x'); test.assertEqual(r, '0x000000'); }); - it('test back toRgb white', function () { + it('test back toRgb white', () => { r = hex.toRgb(f({ r: 255, g: 255, b: 255 })); test.assertEqual(r, { r: 255, g: 255, b: 255, a: 1.0 }); }); - it('test back toRgb black', function () { + it('test back toRgb black', () => { r = hex.toRgb(f({ r: 0, g: 0, b: 0 })); test.assertEqual(r, { r: 0, g: 0, b: 0, a: 1.0 }); }); - it('test back toRgb random color', function () { + it('test back toRgb random color', () => { r = hex.toRgb(f({ r: 34, g: 127, b: 76 })); test.assertEqual(r, { r: 34, g: 127, b: 76, a: 1.0 }); }); @@ -363,58 +363,58 @@ describe('color.rgb', function () { // test.assertTrue(true); // }); // }); - describe('toString', function () { - var f = rgb.toString; - var r; - it('test alpha', function () { + describe('toString', () => { + const f = rgb.toString; + let r; + it('test alpha', () => { r = f({ r: 0, g: 0, b: 0, a: 0.5 }); test.assertEqual(r, '{ r:0, g:0, b:0, a:0.5 }'); }); - it('test black', function () { + it('test black', () => { r = f({ r: 0, g: 0, b: 0 }); test.assertEqual(r, '{ r:0, g:0, b:0, a:1 }'); }); - it('test white', function () { + it('test white', () => { r = f({ r: 255, g: 255, b: 255 }); test.assertEqual(r, '{ r:255, g:255, b:255, a:1 }'); }); - it('test red', function () { + it('test red', () => { r = f({ r: 255, g: 0, b: 0 }); test.assertEqual(r, '{ r:255, g:0, b:0, a:1 }'); }); - it('test green', function () { + it('test green', () => { r = f({ r: 0, g: 255, b: 0 }); test.assertEqual(r, '{ r:0, g:255, b:0, a:1 }'); }); - it('test blue', function () { + it('test blue', () => { r = f({ r: 0, g: 0, b: 255 }); test.assertEqual(r, '{ r:0, g:0, b:255, a:1 }'); }); }); - describe('toStringCSS', function () { - var f = rgb.toStringCSS; - var r; - it('test alpha', function () { + describe('toStringCSS', () => { + const f = rgb.toStringCSS; + let r; + it('test alpha', () => { r = f({ r: 0, g: 0, b: 0, a: 0.5 }); test.assertEqual(r, 'rgba(0, 0, 0, 0.5)'); }); - it('test black', function () { + it('test black', () => { r = f({ r: 0, g: 0, b: 0 }); test.assertEqual(r, 'rgba(0, 0, 0, 1)'); }); - it('test white', function () { + it('test white', () => { r = f({ r: 255, g: 255, b: 255 }); test.assertEqual(r, 'rgba(255, 255, 255, 1)'); }); - it('test red', function () { + it('test red', () => { r = f({ r: 255, g: 0, b: 0 }); test.assertEqual(r, 'rgba(255, 0, 0, 1)'); }); - it('test green', function () { + it('test green', () => { r = f({ r: 0, g: 255, b: 0 }); test.assertEqual(r, 'rgba(0, 255, 0, 1)'); }); - it('test blue', function () { + it('test blue', () => { r = f({ r: 0, g: 0, b: 255 }); test.assertEqual(r, 'rgba(0, 0, 255, 1)'); }); diff --git a/test/test_date.js b/test/test_date.js index 9537020..98264c7 100644 --- a/test/test_date.js +++ b/test/test_date.js @@ -1,13 +1,13 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; +import utils from '../src/utils.js'; +const test = utils.test; -describe('date', function () { - var d = utils.date; +describe('date', () => { + const d = utils.date; - describe('clone', function () { - it('test type', function () { - var a = new Date(1985, 3, 3, 23, 57, 5); - var r = d.clone(a); + describe('clone', () => { + it('test type', () => { + const a = new Date(1985, 3, 3, 23, 57, 5); + const r = d.clone(a); test.assertFalse(a === r); test.assertTrue( a.getYear() === r.getYear() && @@ -18,161 +18,161 @@ describe('date', function () { ); }); }); - describe('constrain', function () { - it('test constrain with date < min', function () { - var a = new Date(); + describe('constrain', () => { + it('test constrain with date < min', () => { + const a = new Date(); a.setFullYear(2022); - var b = new Date(); + const b = new Date(); b.setFullYear(2023); - var c = new Date(); + const c = new Date(); c.setFullYear(2019); - var r = d.constrain(c, a, b); + const r = d.constrain(c, a, b); test.assertEqual(r, a); }); - it('test constrain with date < min and inverted min/max', function () { - var a = new Date(); + it('test constrain with date < min and inverted min/max', () => { + const a = new Date(); a.setFullYear(2022); - var b = new Date(); + const b = new Date(); b.setFullYear(2023); - var c = new Date(); + const c = new Date(); c.setFullYear(2019); - var r = d.constrain(c, b, a); + const r = d.constrain(c, b, a); test.assertEqual(r, a); }); - it('test constrain with date > max', function () { - var a = new Date(); + it('test constrain with date > max', () => { + const a = new Date(); a.setFullYear(2022); - var b = new Date(); + const b = new Date(); b.setFullYear(2023); - var c = new Date(); + const c = new Date(); c.setFullYear(2024); - var r = d.constrain(c, a, b); + const r = d.constrain(c, a, b); test.assertEqual(r, b); }); - it('test constrain with date > max and inverted min/max', function () { - var a = new Date(); + it('test constrain with date > max and inverted min/max', () => { + const a = new Date(); a.setFullYear(2022); - var b = new Date(); + const b = new Date(); b.setFullYear(2023); - var c = new Date(); + const c = new Date(); c.setFullYear(2024); - var r = d.constrain(c, b, a); + const r = d.constrain(c, b, a); test.assertEqual(r, b); }); }); - describe('format', function () { - it('test format 1', function () { - var a = new Date(1985, 3, 3, 23, 57, 5); - var s = d.format(a, 'YYYY/MM/DD'); + describe('format', () => { + it('test format 1', () => { + const a = new Date(1985, 3, 3, 23, 57, 5); + const s = d.format(a, 'YYYY/MM/DD'); test.assertTrue(s === '1985/04/03'); }); - it('test format 2', function () { - var a = new Date(1985, 3, 3, 23, 57, 5); - var s = d.format(a, 'YYYYMMDD'); + it('test format 2', () => { + const a = new Date(1985, 3, 3, 23, 57, 5); + const s = d.format(a, 'YYYYMMDD'); test.assertTrue(s === '19850403'); }); - it('test format 3', function () { - var a = new Date(1985, 3, 3, 23, 57, 5); - var s = d.format(a, "XX D, 'YY"); + it('test format 3', () => { + const a = new Date(1985, 3, 3, 23, 57, 5); + const s = d.format(a, "XX D, 'YY"); test.assertTrue(s === "April 3, '85"); }); }); - describe('identifier', function () { - it('test type', function () { - var s = d.identifier(); + describe('identifier', () => { + it('test type', () => { + const s = d.identifier(); test.assertString(s); }); - it('test format (now)', function () { - var s = d.identifier(); + it('test format (now)', () => { + const s = d.identifier(); test.assertTrue(/^[0-9]{17}$/.test(s)); }); - it('test format (custom date)', function () { - var s = d.identifier(new Date('85/4/3')); + it('test format (custom date)', () => { + const s = d.identifier(new Date('85/4/3')); test.assertTrue(/^[0-9]{17}$/.test(s)); }); }); - describe('isFuture', function () { - it('test with past date', function () { - var date = new Date('1985/4/3'); + describe('isFuture', () => { + it('test with past date', () => { + const date = new Date('1985/4/3'); test.assertFalse(d.isFuture(date)); }); - it('test with future date', function () { - var date = new Date(); + it('test with future date', () => { + const date = new Date(); date.setFullYear(date.getFullYear() + 1); test.assertTrue(d.isFuture(date)); }); - it('test with same day date', function () { - var date = new Date(); + it('test with same day date', () => { + const date = new Date(); test.assertFalse(d.isFuture(date)); }); - it('test with same day date ignoring time', function () { - var date = new Date(); + it('test with same day date ignoring time', () => { + const date = new Date(); date.setMinutes(date.getMinutes() + 1); test.assertFalse(d.isFuture(date)); test.assertTrue(d.isFuture(date, true)); }); }); - describe('isPast', function () { - it('test with past date', function () { - var date = new Date('1985/4/3'); + describe('isPast', () => { + it('test with past date', () => { + const date = new Date('1985/4/3'); test.assertTrue(d.isPast(date)); }); - it('test with future date', function () { - var date = new Date(); + it('test with future date', () => { + const date = new Date(); date.setFullYear(date.getFullYear() + 1); test.assertFalse(d.isPast(date)); }); - it('test with same day date', function () { - var date = new Date(); + it('test with same day date', () => { + const date = new Date(); test.assertFalse(d.isPast(date)); }); - it('test with same day date ignoring time', function () { - var date = new Date(); + it('test with same day date ignoring time', () => { + const date = new Date(); date.setMinutes(date.getMinutes() - 1); test.assertFalse(d.isPast(date)); test.assertTrue(d.isPast(date, true)); }); }); - describe('max', function () { - it('test max with past comparison', function () { - var a = new Date(); - var b = new Date(); + describe('max', () => { + it('test max with past comparison', () => { + const a = new Date(); + const b = new Date(); b.setFullYear(a.getFullYear() - 1); - var r = d.max(a, b); + const r = d.max(a, b); test.assertEqual(r, a); }); - it('test max with future comparison', function () { - var a = new Date(); - var b = new Date(); + it('test max with future comparison', () => { + const a = new Date(); + const b = new Date(); b.setFullYear(a.getFullYear() + 1); - var r = d.max(a, b); + const r = d.max(a, b); test.assertEqual(r, b); }); }); - describe('min', function () { - it('test min with past comparison', function () { - var a = new Date(); - var b = new Date(); + describe('min', () => { + it('test min with past comparison', () => { + const a = new Date(); + const b = new Date(); b.setFullYear(a.getFullYear() - 1); - var r = d.min(a, b); + const r = d.min(a, b); test.assertEqual(r, b); }); - it('test min with future comparison', function () { - var a = new Date(); - var b = new Date(); + it('test min with future comparison', () => { + const a = new Date(); + const b = new Date(); b.setFullYear(a.getFullYear() + 1); - var r = d.min(a, b); + const r = d.min(a, b); test.assertEqual(r, a); }); }); - describe('normalize', function () { - it('test type', function () { - var r = d.normalize(0); + describe('normalize', () => { + it('test type', () => { + const r = d.normalize(0); test.assertObject(r); }); - it('test milliseconds', function () { - var ms = 500; - var r = d.normalize(ms); + it('test milliseconds', () => { + const ms = 500; + const r = d.normalize(ms); test.assertEqual(r, { milliseconds: 500, seconds: 0, @@ -181,9 +181,9 @@ describe('date', function () { days: 0, }); }); - it('test seconds', function () { - var ms = 1100 * 7; - var r = d.normalize(ms); + it('test seconds', () => { + const ms = 1100 * 7; + const r = d.normalize(ms); test.assertEqual(r, { milliseconds: 700, seconds: 7, @@ -192,9 +192,9 @@ describe('date', function () { days: 0, }); }); - it('test minutes', function () { - var ms = 1000 * 125; - var r = d.normalize(ms); + it('test minutes', () => { + const ms = 1000 * 125; + const r = d.normalize(ms); test.assertEqual(r, { milliseconds: 0, seconds: 5, @@ -203,9 +203,9 @@ describe('date', function () { days: 0, }); }); - it('test hours', function () { - var ms = 1000 * 980; - var r = d.normalize(ms); + it('test hours', () => { + const ms = 1000 * 980; + const r = d.normalize(ms); test.assertEqual(r, { milliseconds: 0, seconds: 20, @@ -214,9 +214,9 @@ describe('date', function () { days: 0, }); }); - it('test days', function () { - var ms = 1000 * 15270; - var r = d.normalize(ms); + it('test days', () => { + const ms = 1000 * 15270; + const r = d.normalize(ms); test.assertEqual(r, { milliseconds: 0, seconds: 30, @@ -226,90 +226,90 @@ describe('date', function () { }); }); }); - describe('parse', function () { - it('test parse with invalid value', function () { - var dt = d.parse(null); + describe('parse', () => { + it('test parse with invalid value', () => { + const dt = d.parse(null); test.assertNull(dt); }); - it('test parse with date value', function () { - var now = new Date(); - var dt = d.parse(now); + it('test parse with date value', () => { + const now = new Date(); + const dt = d.parse(now); test.assertDate(dt); test.assertEqual(dt, now); }); - it('test parse with timestamp value (as number)', function () { - var dt = d.parse(818035920000); + it('test parse with timestamp value (as number)', () => { + const dt = d.parse(818035920000); test.assertDate(dt); test.assertEqual(dt.getFullYear(), 1995); test.assertEqual(dt.getMonth(), 11); test.assertEqual(dt.getDate(), 4); }); - it('test parse with timestamp value (as string)', function () { - var dt = d.parse('818035920000'); + it('test parse with timestamp value (as string)', () => { + const dt = d.parse('818035920000'); test.assertDate(dt); test.assertEqual(dt.getFullYear(), 1995); test.assertEqual(dt.getMonth(), 11); test.assertEqual(dt.getDate(), 4); }); - it('test parse with date string', function () { - var dt = d.parse('04 Dec 1995 00:12:00 GMT'); + it('test parse with date string', () => { + const dt = d.parse('04 Dec 1995 00:12:00 GMT'); test.assertDate(dt); test.assertEqual(dt.getFullYear(), 1995); test.assertEqual(dt.getMonth(), 11); test.assertEqual(dt.getDate(), 4); }); - it('test parse with date string (other format)', function () { - var dt = d.parse('2024-04-30T00:00:00Z'); + it('test parse with date string (other format)', () => { + const dt = d.parse('2024-04-30T00:00:00Z'); test.assertDate(dt); test.assertEqual(dt.getFullYear(), 2024); test.assertEqual(dt.getMonth(), 3); test.assertEqual(dt.getDate(), 30); }); }); - describe('timestamp', function () { - it('test type', function () { - var t = d.timestamp(); + describe('timestamp', () => { + it('test type', () => { + const t = d.timestamp(); test.assertNumber(t); }); }); - describe('today', function () { - it('test today', function () { - var t = d.today(); - var now = new Date(); + describe('today', () => { + it('test today', () => { + const t = d.today(); + const now = new Date(); test.assertEqual(t.getDate(), now.getDate()); }); }); - describe('tomorrow', function () { - it('test tomorrow', function () { - var t = d.tomorrow(); - var now = new Date(); + describe('tomorrow', () => { + it('test tomorrow', () => { + const t = d.tomorrow(); + const now = new Date(); now.setDate(now.getDate() + 1); test.assertEqual(t.getDate(), now.getDate()); }); }); - describe('yesterday', function () { - it('test yesterday', function () { - var y = d.yesterday(); - var now = new Date(); + describe('yesterday', () => { + it('test yesterday', () => { + const y = d.yesterday(); + const now = new Date(); now.setDate(now.getDate() - 1); test.assertEqual(y.getDate(), now.getDate()); }); }); - describe('yyyymmdd', function () { - it('test type', function () { - var s = d.yyyymmdd(); + describe('yyyymmdd', () => { + it('test type', () => { + const s = d.yyyymmdd(); test.assertString(s); }); - it('test format (now)', function () { - var s = d.yyyymmdd(); + it('test format (now)', () => { + const s = d.yyyymmdd(); test.assertTrue(/^[0-9]{8}$/.test(s)); }); - it('test format (custom date)', function () { - var s = d.yyyymmdd(new Date('85/4/3')); + it('test format (custom date)', () => { + const s = d.yyyymmdd(new Date('85/4/3')); test.assertTrue(/^[0-9]{8}$/.test(s)); }); - it('test format (custom separator)', function () { - var s = d.yyyymmdd(new Date('85/4/3'), '-'); + it('test format (custom separator)', () => { + const s = d.yyyymmdd(new Date('85/4/3'), '-'); test.assertEqual(s, '1985-04-03'); }); }); diff --git a/test/test_ease.js b/test/test_ease.js index 60dcae6..300ebd3 100644 --- a/test/test_ease.js +++ b/test/test_ease.js @@ -1,560 +1,560 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; -var ease = utils.ease; -describe('ease', function () { - var assertReturnAlwaysNumber = function (f) { - var t = 0.0; +import utils from '../src/utils.js'; +const test = utils.test; +const ease = utils.ease; +describe('ease', () => { + const assertReturnAlwaysNumber = (f) => { + let t = 0.0; while (t <= 1.0) { test.assertNumber(f(t)); t += 0.05; } }; - describe('backIn', function () { - var f = ease.backIn; - it('t = 0.0', function () { + describe('backIn', () => { + const f = ease.backIn; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 0.0, overshoot = 0.0', function () { + it('t = 0.0, overshoot = 0.0', () => { test.assertNumberAlmostEqual(f(0.0, 0.0), 0.0); }); - it('t = 0.0, overshoot = 1.0', function () { + it('t = 0.0, overshoot = 1.0', () => { test.assertNumberAlmostEqual(f(0.0, 1.0), 0.0); }); - it('t = 0.0, overshoot = 2.0', function () { + it('t = 0.0, overshoot = 2.0', () => { test.assertNumberAlmostEqual(f(0.0, 2.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = 1.0, overshoot = 0.0', function () { + it('t = 1.0, overshoot = 0.0', () => { test.assertNumberAlmostEqual(f(1.0, 0.0), 1.0); }); - it('t = 1.0, overshoot = 1.0', function () { + it('t = 1.0, overshoot = 1.0', () => { test.assertNumberAlmostEqual(f(1.0, 1.0), 1.0); }); - it('t = 1.0, overshoot = 2.0', function () { + it('t = 1.0, overshoot = 2.0', () => { test.assertNumberAlmostEqual(f(1.0, 2.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('backInOut', function () { - var f = ease.backInOut; - it('t = 0.0', function () { + describe('backInOut', () => { + const f = ease.backInOut; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 0.0, overshoot = 0.0', function () { + it('t = 0.0, overshoot = 0.0', () => { test.assertNumberAlmostEqual(f(0.0, 0.0), 0.0); }); - it('t = 0.0, overshoot = 1.0', function () { + it('t = 0.0, overshoot = 1.0', () => { test.assertNumberAlmostEqual(f(0.0, 1.0), 0.0); }); - it('t = 0.0, overshoot = 2.0', function () { + it('t = 0.0, overshoot = 2.0', () => { test.assertNumberAlmostEqual(f(0.0, 2.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = 1.0, overshoot = 0.0', function () { + it('t = 1.0, overshoot = 0.0', () => { test.assertNumberAlmostEqual(f(1.0, 0.0), 1.0); }); - it('t = 1.0, overshoot = 1.0', function () { + it('t = 1.0, overshoot = 1.0', () => { test.assertNumberAlmostEqual(f(1.0, 1.0), 1.0); }); - it('t = 1.0, overshoot = 2.0', function () { + it('t = 1.0, overshoot = 2.0', () => { test.assertNumberAlmostEqual(f(1.0, 2.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('backOut', function () { - var f = ease.backOut; - it('t = 0.0', function () { + describe('backOut', () => { + const f = ease.backOut; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 0.0, overshoot = 0.0', function () { + it('t = 0.0, overshoot = 0.0', () => { test.assertNumberAlmostEqual(f(0.0, 0.0), 0.0); }); - it('t = 0.0, overshoot = 1.0', function () { + it('t = 0.0, overshoot = 1.0', () => { test.assertNumberAlmostEqual(f(0.0, 1.0), 0.0); }); - it('t = 0.0, overshoot = 2.0', function () { + it('t = 0.0, overshoot = 2.0', () => { test.assertNumberAlmostEqual(f(0.0, 2.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = 1.0, overshoot = 0.0', function () { + it('t = 1.0, overshoot = 0.0', () => { test.assertNumberAlmostEqual(f(1.0, 0.0), 1.0); }); - it('t = 1.0, overshoot = 1.0', function () { + it('t = 1.0, overshoot = 1.0', () => { test.assertNumberAlmostEqual(f(1.0, 1.0), 1.0); }); - it('t = 1.0, overshoot = 2.0', function () { + it('t = 1.0, overshoot = 2.0', () => { test.assertNumberAlmostEqual(f(1.0, 2.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('bounceIn', function () { - var f = ease.bounceIn; - it('t = 0.0', function () { + describe('bounceIn', () => { + const f = ease.bounceIn; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('bounceInOut', function () { - var f = ease.bounceInOut; - it('t = 0.0', function () { + describe('bounceInOut', () => { + const f = ease.bounceInOut; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('bounceOut', function () { - var f = ease.bounceOut; - it('t = 0.0', function () { + describe('bounceOut', () => { + const f = ease.bounceOut; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('circularIn', function () { - var f = ease.circularIn; - it('t = 0.0', function () { + describe('circularIn', () => { + const f = ease.circularIn; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('circularInOut', function () { - var f = ease.circularInOut; - it('t = 0.0', function () { + describe('circularInOut', () => { + const f = ease.circularInOut; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('circularOut', function () { - var f = ease.circularOut; - it('t = 0.0', function () { + describe('circularOut', () => { + const f = ease.circularOut; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('cubicIn', function () { - var f = ease.cubicIn; - it('t = 0.0', function () { + describe('cubicIn', () => { + const f = ease.cubicIn; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('cubicInOut', function () { - var f = ease.cubicInOut; - it('t = 0.0', function () { + describe('cubicInOut', () => { + const f = ease.cubicInOut; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('cubicOut', function () { - var f = ease.cubicOut; - it('t = 0.0', function () { + describe('cubicOut', () => { + const f = ease.cubicOut; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('elasticIn', function () { - var f = ease.elasticIn; - it('t = 0.0', function () { + describe('elasticIn', () => { + const f = ease.elasticIn; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 0.0, amplitude = 0.5, period = 0.5', function () { + it('t = 0.0, amplitude = 0.5, period = 0.5', () => { test.assertNumberAlmostEqual(f(0.0, 0.5, 0.5), 0.0); }); - it('t = 0.0, amplitude = 1.0, period = 1.0', function () { + it('t = 0.0, amplitude = 1.0, period = 1.0', () => { test.assertNumberAlmostEqual(f(0.0, 1.0, 1.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = 1.0, amplitude = 0.5, period = 0.5', function () { + it('t = 1.0, amplitude = 0.5, period = 0.5', () => { test.assertNumberAlmostEqual(f(1.0, 0.5, 0.5), 1.0); }); - it('t = 1.0, amplitude = 1.0, period = 1.0', function () { + it('t = 1.0, amplitude = 1.0, period = 1.0', () => { test.assertNumberAlmostEqual(f(1.0, 1.0, 1.0), 1.0); }); - it('t = 1.0, amplitude = 2.0, period = 1.0', function () { + it('t = 1.0, amplitude = 2.0, period = 1.0', () => { test.assertNumberAlmostEqual(f(1.0, 2.0, 1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('elasticInOut', function () { - var f = ease.elasticInOut; - it('t = 0.0', function () { + describe('elasticInOut', () => { + const f = ease.elasticInOut; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 0.0, amplitude = 0.5, period = 0.5', function () { + it('t = 0.0, amplitude = 0.5, period = 0.5', () => { test.assertNumberAlmostEqual(f(0.0, 0.5, 0.5), 0.0); }); - it('t = 0.0, amplitude = 1.0, period = 1.0', function () { + it('t = 0.0, amplitude = 1.0, period = 1.0', () => { test.assertNumberAlmostEqual(f(0.0, 1.0, 1.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = 1.0, amplitude = 0.5, period = 0.5', function () { + it('t = 1.0, amplitude = 0.5, period = 0.5', () => { test.assertNumberAlmostEqual(f(1.0, 0.5, 0.5), 1.0); }); - it('t = 1.0, amplitude = 1.0, period = 1.0', function () { + it('t = 1.0, amplitude = 1.0, period = 1.0', () => { test.assertNumberAlmostEqual(f(1.0, 1.0, 1.0), 1.0); }); - it('t = 1.0, amplitude = 2.0, period = 1.0', function () { + it('t = 1.0, amplitude = 2.0, period = 1.0', () => { test.assertNumberAlmostEqual(f(1.0, 2.0, 1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('elasticOut', function () { - var f = ease.elasticOut; - it('t = 0.0', function () { + describe('elasticOut', () => { + const f = ease.elasticOut; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 0.0, amplitude = 0.5, period = 0.5', function () { + it('t = 0.0, amplitude = 0.5, period = 0.5', () => { test.assertNumberAlmostEqual(f(0.0, 0.5, 0.5), 0.0); }); - it('t = 0.0, amplitude = 1.0, period = 1.0', function () { + it('t = 0.0, amplitude = 1.0, period = 1.0', () => { test.assertNumberAlmostEqual(f(0.0, 1.0, 1.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = 1.0, amplitude = 0.5, period = 0.5', function () { + it('t = 1.0, amplitude = 0.5, period = 0.5', () => { test.assertNumberAlmostEqual(f(1.0, 0.5, 0.5), 1.0); }); - it('t = 1.0, amplitude = 1.0, period = 1.0', function () { + it('t = 1.0, amplitude = 1.0, period = 1.0', () => { test.assertNumberAlmostEqual(f(1.0, 1.0, 1.0), 1.0); }); - it('t = 1.0, amplitude = 2.0, period = 1.0', function () { + it('t = 1.0, amplitude = 2.0, period = 1.0', () => { test.assertNumberAlmostEqual(f(1.0, 2.0, 1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('exponentialIn', function () { - var f = ease.exponentialIn; - it('t = 0.0', function () { + describe('exponentialIn', () => { + const f = ease.exponentialIn; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('exponentialInOut', function () { - var f = ease.exponentialInOut; - it('t = 0.0', function () { + describe('exponentialInOut', () => { + const f = ease.exponentialInOut; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('exponentialOut', function () { - var f = ease.exponentialOut; - it('t = 0.0', function () { + describe('exponentialOut', () => { + const f = ease.exponentialOut; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('none', function () { - var f = ease.none; - it('t = 0.0', function () { + describe('none', () => { + const f = ease.none; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('quadraticIn', function () { - var f = ease.quadraticIn; - it('t = 0.0', function () { + describe('quadraticIn', () => { + const f = ease.quadraticIn; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('quadraticInOut', function () { - var f = ease.quadraticInOut; - it('t = 0.0', function () { + describe('quadraticInOut', () => { + const f = ease.quadraticInOut; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('quadraticOut', function () { - var f = ease.quadraticOut; - it('t = 0.0', function () { + describe('quadraticOut', () => { + const f = ease.quadraticOut; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('quarticIn', function () { - var f = ease.quarticIn; - it('t = 0.0', function () { + describe('quarticIn', () => { + const f = ease.quarticIn; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('quarticInOut', function () { - var f = ease.quarticInOut; - it('t = 0.0', function () { + describe('quarticInOut', () => { + const f = ease.quarticInOut; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('quarticOut', function () { - var f = ease.quarticOut; - it('t = 0.0', function () { + describe('quarticOut', () => { + const f = ease.quarticOut; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('quinticIn', function () { - var f = ease.quinticIn; - it('t = 0.0', function () { + describe('quinticIn', () => { + const f = ease.quinticIn; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('quinticInOut', function () { - var f = ease.quinticInOut; - it('t = 0.0', function () { + describe('quinticInOut', () => { + const f = ease.quinticInOut; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('quinticOut', function () { - var f = ease.quinticOut; - it('t = 0.0', function () { + describe('quinticOut', () => { + const f = ease.quinticOut; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('sexticIn', function () { - var f = ease.sexticIn; - it('t = 0.0', function () { + describe('sexticIn', () => { + const f = ease.sexticIn; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('sexticInOut', function () { - var f = ease.sexticInOut; - it('t = 0.0', function () { + describe('sexticInOut', () => { + const f = ease.sexticInOut; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('sexticOut', function () { - var f = ease.sexticOut; - it('t = 0.0', function () { + describe('sexticOut', () => { + const f = ease.sexticOut; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('sineIn', function () { - var f = ease.sineIn; - it('t = 0.0', function () { + describe('sineIn', () => { + const f = ease.sineIn; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('sineInOut', function () { - var f = ease.sineInOut; - it('t = 0.0', function () { + describe('sineInOut', () => { + const f = ease.sineInOut; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('sineOut', function () { - var f = ease.sineOut; - it('t = 0.0', function () { + describe('sineOut', () => { + const f = ease.sineOut; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); }); - describe('waveCosine', function () { - var f = ease.waveCosine; - it('t = 0.0', function () { + describe('waveCosine', () => { + const f = ease.waveCosine; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 1.0); }); - it('t = 0.0, frequency = 1.0, absolute = false, inverse = false', function () { + it('t = 0.0, frequency = 1.0, absolute = false, inverse = false', () => { test.assertNumberAlmostEqual(f(0.0, 1.0, false, false), 1.0); }); - it('t = 0.0, frequency = 2.0, absolute = false, inverse = false', function () { + it('t = 0.0, frequency = 2.0, absolute = false, inverse = false', () => { test.assertNumberAlmostEqual(f(0.0, 2.0, false, false), 1.0); }); - it('t = 0.0, frequency = 1.0, absolute = true, inverse = false', function () { + it('t = 0.0, frequency = 1.0, absolute = true, inverse = false', () => { test.assertNumberAlmostEqual(f(0.0, 1.0, true, false), 1.0); }); - it('t = 0.0, frequency = 1.0, absolute = true, inverse = true', function () { + it('t = 0.0, frequency = 1.0, absolute = true, inverse = true', () => { test.assertNumberAlmostEqual(f(0.0, 1.0, true, true), 0.0); }); - it('t = 0.0, frequency = 1.0, absolute = false, inverse = true', function () { + it('t = 0.0, frequency = 1.0, absolute = false, inverse = true', () => { test.assertNumberAlmostEqual(f(0.0, 1.0, false, true), 0.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), -1.0); }); - it('t = 1.0, frequency = 1.0, absolute = false, inverse = false', function () { + it('t = 1.0, frequency = 1.0, absolute = false, inverse = false', () => { test.assertNumberAlmostEqual(f(1.0, 1.0, false, false), -1.0); }); - it('t = 1.0, frequency = 2.0, absolute = false, inverse = false', function () { + it('t = 1.0, frequency = 2.0, absolute = false, inverse = false', () => { test.assertNumberAlmostEqual(f(1.0, 2.0, false, false), 1.0); }); - it('t = 1.0, frequency = 1.0, absolute = true, inverse = false', function () { + it('t = 1.0, frequency = 1.0, absolute = true, inverse = false', () => { test.assertNumberAlmostEqual(f(1.0, 1.0, true, false), 1.0); }); - it('t = 1.0, frequency = 1.0, absolute = true, inverse = true', function () { + it('t = 1.0, frequency = 1.0, absolute = true, inverse = true', () => { test.assertNumberAlmostEqual(f(1.0, 1.0, true, true), 0.0); }); - it('t = 1.0, frequency = 1.0, absolute = false, inverse = true', function () { + it('t = 1.0, frequency = 1.0, absolute = false, inverse = true', () => { test.assertNumberAlmostEqual(f(1.0, 1.0, false, true), 2.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); // console.log(0.0, f(0.0)); @@ -570,45 +570,45 @@ describe('ease', function () { // console.log(1.0, f(1.0, 1.0, true, true)); // console.log(1.0, f(1.0, 1.0, false, true)); }); - describe('waveSawtooth', function () { - var f = ease.waveSawtooth; - it('t = 0.0', function () { + describe('waveSawtooth', () => { + const f = ease.waveSawtooth; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 0.0, frequency = 1.0, absolute = false, inverse = false', function () { + it('t = 0.0, frequency = 1.0, absolute = false, inverse = false', () => { test.assertNumberAlmostEqual(f(0.0, 1.0, false, false), 0.0); }); - it('t = 0.0, frequency = 2.0, absolute = false, inverse = false', function () { + it('t = 0.0, frequency = 2.0, absolute = false, inverse = false', () => { test.assertNumberAlmostEqual(f(0.0, 2.0, false, false), 0.0); }); - it('t = 0.0, frequency = 1.0, absolute = true, inverse = false', function () { + it('t = 0.0, frequency = 1.0, absolute = true, inverse = false', () => { test.assertNumberAlmostEqual(f(0.0, 1.0, true, false), 0.0); }); - it('t = 0.0, frequency = 1.0, absolute = true, inverse = true', function () { + it('t = 0.0, frequency = 1.0, absolute = true, inverse = true', () => { test.assertNumberAlmostEqual(f(0.0, 1.0, true, true), 1.0); }); - it('t = 0.0, frequency = 1.0, absolute = false, inverse = true', function () { + it('t = 0.0, frequency = 1.0, absolute = false, inverse = true', () => { test.assertNumberAlmostEqual(f(0.0, 1.0, false, true), 1.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 0.0); }); - it('t = 1.0, frequency = 1.0, absolute = false, inverse = false', function () { + it('t = 1.0, frequency = 1.0, absolute = false, inverse = false', () => { test.assertNumberAlmostEqual(f(1.0, 1.0, false, false), 0.0); }); - it('t = 1.0, frequency = 2.0, absolute = false, inverse = false', function () { + it('t = 1.0, frequency = 2.0, absolute = false, inverse = false', () => { test.assertNumberAlmostEqual(f(1.0, 2.0, false, false), 0.0); }); - it('t = 1.0, frequency = 1.0, absolute = true, inverse = false', function () { + it('t = 1.0, frequency = 1.0, absolute = true, inverse = false', () => { test.assertNumberAlmostEqual(f(1.0, 1.0, true, false), 0.0); }); - it('t = 1.0, frequency = 1.0, absolute = true, inverse = true', function () { + it('t = 1.0, frequency = 1.0, absolute = true, inverse = true', () => { test.assertNumberAlmostEqual(f(1.0, 1.0, true, true), 1.0); }); - it('t = 1.0, frequency = 1.0, absolute = false, inverse = true', function () { + it('t = 1.0, frequency = 1.0, absolute = false, inverse = true', () => { test.assertNumberAlmostEqual(f(1.0, 1.0, false, true), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); // console.log(0.0, f(0.0)); @@ -624,45 +624,45 @@ describe('ease', function () { // console.log(1.0, f(1.0, 1.0, true, true)); // console.log(1.0, f(1.0, 1.0, false, true)); }); - describe('waveSine', function () { - var f = ease.waveSine; - it('t = 0.0', function () { + describe('waveSine', () => { + const f = ease.waveSine; + it('t = 0.0', () => { test.assertNumberAlmostEqual(f(0.0), 0.0); }); - it('t = 0.0, frequency = 1.0, absolute = false, inverse = false', function () { + it('t = 0.0, frequency = 1.0, absolute = false, inverse = false', () => { test.assertNumberAlmostEqual(f(0.0, 1.0, false, false), 0.0); }); - it('t = 0.0, frequency = 2.0, absolute = false, inverse = false', function () { + it('t = 0.0, frequency = 2.0, absolute = false, inverse = false', () => { test.assertNumberAlmostEqual(f(0.0, 2.0, false, false), 0.0); }); - it('t = 0.0, frequency = 1.0, absolute = true, inverse = false', function () { + it('t = 0.0, frequency = 1.0, absolute = true, inverse = false', () => { test.assertNumberAlmostEqual(f(0.0, 1.0, true, false), 0.0); }); - it('t = 0.0, frequency = 1.0, absolute = true, inverse = true', function () { + it('t = 0.0, frequency = 1.0, absolute = true, inverse = true', () => { test.assertNumberAlmostEqual(f(0.0, 1.0, true, true), 1.0); }); - it('t = 0.0, frequency = 1.0, absolute = false, inverse = true', function () { + it('t = 0.0, frequency = 1.0, absolute = false, inverse = true', () => { test.assertNumberAlmostEqual(f(0.0, 1.0, false, true), 1.0); }); - it('t = 1.0', function () { + it('t = 1.0', () => { test.assertNumberAlmostEqual(f(1.0), 0.0); }); - it('t = 1.0, frequency = 1.0, absolute = false, inverse = false', function () { + it('t = 1.0, frequency = 1.0, absolute = false, inverse = false', () => { test.assertNumberAlmostEqual(f(1.0, 1.0, false, false), 0.0); }); - it('t = 1.0, frequency = 2.0, absolute = false, inverse = false', function () { + it('t = 1.0, frequency = 2.0, absolute = false, inverse = false', () => { test.assertNumberAlmostEqual(f(1.0, 2.0, false, false), 0.0); }); - it('t = 1.0, frequency = 1.0, absolute = true, inverse = false', function () { + it('t = 1.0, frequency = 1.0, absolute = true, inverse = false', () => { test.assertNumberAlmostEqual(f(1.0, 1.0, true, false), 0.0); }); - it('t = 1.0, frequency = 1.0, absolute = true, inverse = true', function () { + it('t = 1.0, frequency = 1.0, absolute = true, inverse = true', () => { test.assertNumberAlmostEqual(f(1.0, 1.0, true, true), 1.0); }); - it('t = 1.0, frequency = 1.0, absolute = false, inverse = true', function () { + it('t = 1.0, frequency = 1.0, absolute = false, inverse = true', () => { test.assertNumberAlmostEqual(f(1.0, 1.0, false, true), 1.0); }); - it('t = { loop from 0.0 to 1.0 }', function () { + it('t = { loop from 0.0 to 1.0 }', () => { assertReturnAlwaysNumber(f); }); // console.log(0.0, f(0.0)); diff --git a/test/test_func.js b/test/test_func.js index 7115142..af1c3f8 100644 --- a/test/test_func.js +++ b/test/test_func.js @@ -1,119 +1,120 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; -var type = utils.type; -var func = utils.func; +import utils from '../src/utils.js'; +const test = utils.test; +const type = utils.type; +const func = utils.func; -describe('func', function () { - describe('args', function () { - var f = func.args; - var a = function (a, b, c) { - return f(arguments); +describe('func', () => { + describe('args', () => { + const f = func.args; + const a = (...args) => { + return f(args); }; - var b = function (a, b, c) { - return f(arguments, 2); + const b = (...args) => { + return f(args, 2); }; - it('test args', function () { + it('test args', () => { test.assertEqual(a(), []); }); - it('test args.length = 1, skipCount = 0', function () { + it('test args.length = 1, skipCount = 0', () => { test.assertEqual(a(1), [1]); }); - it('test args.length = 2, skipCount = 0', function () { + it('test args.length = 2, skipCount = 0', () => { test.assertEqual(a(1, 2), [1, 2]); }); - it('test args.length = 3, skipCount = 0', function () { + it('test args.length = 3, skipCount = 0', () => { test.assertEqual(a(1, 2, 3), [1, 2, 3]); }); - it('test args.length = 4, skipCount = 0', function () { + it('test args.length = 4, skipCount = 0', () => { test.assertEqual(a(1, 2, 3, 4), [1, 2, 3, 4]); }); - it('test args.length = 5, skipCount = 0', function () { + it('test args.length = 5, skipCount = 0', () => { test.assertEqual(a(1, 2, 3, 4, 5), [1, 2, 3, 4, 5]); }); - it('test args.length = 0, skipCount = 2', function () { + it('test args.length = 0, skipCount = 2', () => { test.assertEqual(b(), []); }); - it('test args.length = 1, skipCount = 2', function () { + it('test args.length = 1, skipCount = 2', () => { test.assertEqual(b(1), []); }); - it('test args.length = 2, skipCount = 2', function () { + it('test args.length = 2, skipCount = 2', () => { test.assertEqual(b(1, 2), []); }); - it('test args.length = 3, skipCount = 2', function () { + it('test args.length = 3, skipCount = 2', () => { test.assertEqual(b(1, 2, 3), [3]); }); - it('test args.length = 4, skipCount = 2', function () { + it('test args.length = 4, skipCount = 2', () => { test.assertEqual(b(1, 2, 3, 4), [3, 4]); }); - it('test args.length = 5, skipCount = 2', function () { + it('test args.length = 5, skipCount = 2', () => { test.assertEqual(b(1, 2, 3, 4, 5), [3, 4, 5]); }); }); - describe('attempt', function () { - var f = func.attempt; - var obj = { - dosomething: function () { + describe('attempt', () => { + const f = func.attempt; + const obj = { + dosomething() { return true; }, - dosomethingWithArguments: function () { - return func.args(arguments); + dosomethingWithArguments(...args) { + return func.args(args); }, }; - it('test attempt func name with scope', function () { + it('test attempt func name with scope', () => { test.assertTrue(f('dosomething', obj)); }); - it('test attempt invalid func name with scope', function () { + it('test attempt invalid func name with scope', () => { test.assertError(f('dosomethingInvalid', obj)); }); - it('test attempt no func with scope', function () { + it('test attempt no func with scope', () => { test.assertError(f(null, obj)); }); - it('test attempt func name without scope', function () { + it('test attempt func name without scope', () => { test.assertError(f('dosomething', null)); }); - it('test attempt func without scope', function () { + it('test attempt func without scope', () => { test.assertTrue(f(obj['dosomething'])); }); - it('test attempt func without scope but arguments', function () { + it('test attempt func without scope but arguments', () => { test.assertEqual( f(obj['dosomethingWithArguments'], null, 1, 2, 3), [1, 2, 3] ); }); }); - describe('bind', function () { - var f = func.bind; - var obj = { + describe('bind', () => { + const f = func.bind; + const obj = { value: 'ok', - getValue: function () { + getValue() { return this.value; }, - getArgs: function (a, b, c, d) { + getArgs(a, b, c, d) { return [a || null, b || null, c || null, d || null]; }, }; - it('test bind is function', function () { - var ref = f('getValue', obj); + it('test bind is function', () => { + const ref = f('getValue', obj); test.assertFunction(ref); }); - it('test bind call with func', function () { - var ref = f(obj.getValue, obj); + it('test bind call with func', () => { + const ref = f(obj.getValue, obj); test.assertEqual(ref(), 'ok'); }); - it('test bind call with func but scope', function () { - var ref = f(obj.getValue); - test.assertEqual(ref(), undefined); + it('test bind call with func but scope', () => { + const ref = f(obj.getValue); + // test.assertEqual(ref(), undefined); + test.assertThrows(ref); }); - it('test bind call with func name', function () { - var ref = f('getValue', obj); + it('test bind call with func name', () => { + const ref = f('getValue', obj); test.assertEqual(ref(), 'ok'); }); - it('test bind call with func name but scope', function () { - var ref = f('getValue', null); + it('test bind call with func name but scope', () => { + const ref = f('getValue', null); test.assertThrows(ref); }); - it('test bind with args', function () { - var ref; + it('test bind with args', () => { + let ref; ref = f(obj.getArgs, obj); test.assertEqual(ref(), [null, null, null, null]); @@ -129,8 +130,8 @@ describe('func', function () { ref = f(obj.getArgs, obj, 1, 2, 3, 4); test.assertEqual(ref(), [1, 2, 3, 4]); }); - it('test bind with args and call with args', function () { - var ref; + it('test bind with args and call with args', () => { + let ref; ref = f(obj.getArgs, obj); test.assertEqual(ref('a'), ['a', null, null, null]); @@ -141,95 +142,95 @@ describe('func', function () { test.assertEqual(ref('a', 'b'), [1, 2, 'a', 'b']); }); }); - describe('call', function () { - var f = func.call; - var obj = { - dosomething: function () { + describe('call', () => { + const f = func.call; + const obj = { + dosomething() { return true; }, - dosomethingWithArguments: function () { - return func.args(arguments); + dosomethingWithArguments(...args) { + return func.args(args); }, }; - it('test call func', function () { + it('test call func', () => { test.assertTrue(f(obj['dosomething'])); }); - it('test call func with arguments', function () { + it('test call func with arguments', () => { test.assertEqual( f(obj['dosomethingWithArguments'], null, 1, 2, 3), [1, 2, 3] ); }); - it('test call invalid func', function () { - test.assertThrows(function () { + it('test call invalid func', () => { + test.assertThrows(() => { f(null, obj); }); }); - it('test call func by name with scope', function () { + it('test call func by name with scope', () => { test.assertTrue(f('dosomething', obj)); }); - it('test call func by name with scope and arguments', function () { + it('test call func by name with scope and arguments', () => { test.assertEqual(f('dosomethingWithArguments', obj, 1, 2, 3), [1, 2, 3]); }); - it('test call func by name without scope', function () { - test.assertThrows(function () { + it('test call func by name without scope', () => { + test.assertThrows(() => { f('dosomething', null); }); }); - it('test call func by invalid name', function () { - test.assertThrows(function () { + it('test call func by invalid name', () => { + test.assertThrows(() => { f('dosomethingInvalid', obj); }); }); }); - describe('debounce', function () { - var f = func.debounce; - it('test debounce', function (done) { - var counter = 0; - var counterInc = f(100, function () { + describe('debounce', () => { + const f = func.debounce; + it('test debounce', (done) => { + let counter = 0; + const counterInc = f(100, () => { counter++; }); - var interval = setInterval(counterInc, 50); - setTimeout(function () { + const interval = setInterval(counterInc, 50); + setTimeout(() => { clearInterval(interval); test.assertEqual(counter, 0); counterInc(); }, 300); - setTimeout(function () { + setTimeout(() => { test.assertEqual(counter, 1); done(); }, 500); }); }); - describe('delay', function () { - var f = func.delay; - it('test delay func called once', function (done) { - var counter = 0; + describe('delay', () => { + const f = func.delay; + it('test delay func called once', (done) => { + let counter = 0; f( 100, - function () { + () => { counter++; }, null ); test.assertEqual(counter, 0); - setTimeout(function () { + setTimeout(() => { test.assertEqual(counter, 0); }, 50); - setTimeout(function () { + setTimeout(() => { test.assertEqual(counter, 1); done(); }, 300); }); - it('test delay func delay accuracy', function (done) { - var timestamp = utils.date.timestamp(); - var delayElapsed; - var delayExpected = 100; - var delayDiff; - var delayTolerance = 20; + it('test delay func delay accuracy', (done) => { + const timestamp = utils.date.timestamp(); + let delayElapsed; + const delayExpected = 100; + let delayDiff; + const delayTolerance = 20; f( delayExpected, - function () { + () => { delayElapsed = utils.date.timestamp() - timestamp; delayDiff = Math.abs(delayElapsed - delayExpected); test.assertTrue(delayDiff <= delayTolerance); @@ -238,11 +239,11 @@ describe('func', function () { null ); }); - it('test delay func arguments', function (done) { + it('test delay func arguments', (done) => { f( 100, - function () { - var args = func.args(arguments); + (...args) => { + // const args = func.args(arguments); test.assertEqual(args, [0, 1, true, false, 'a', 'b', 'c']); done(); }, @@ -256,71 +257,71 @@ describe('func', function () { 'c' ); }); - it('test delay func by name with scope', function (done) { - var obj = { - dosomething: function (done) { + it('test delay func by name with scope', (done) => { + const obj = { + dosomething(done) { done(); }, }; f(100, 'dosomething', obj, done); }); - it('test delay func cancelled', function (done) { - var dosomething = function () { + it('test delay func cancelled', (done) => { + const dosomething = () => { throw new Error('delay func not cancelled'); }; - var delayObj = f(100, dosomething); + const delayObj = f(100, dosomething); test.assertFunction(delayObj.func); test.assertFunction(delayObj.cancel); delayObj.cancel(); f(200, done); }); - it('test delay func by name cancelled', function (done) { - var obj = { - dosomething: function (done) { + it('test delay func by name cancelled', (done) => { + const obj = { + dosomething(done) { throw new Error('delay func by name not cancelled'); }, }; - var delayObj = f(100, 'dosomething', obj); + const delayObj = f(100, 'dosomething', obj); test.assertFunction(delayObj.func); test.assertFunction(delayObj.cancel); delayObj.cancel(); f(200, done); }); }); - describe('memoize', function () { - var f = func.memoize; - var sum = function (a, b) { + describe('memoize', () => { + const f = func.memoize; + const sum = (a, b) => { return a + b; }; - var obj = { - sum: function (a, b) { + const obj = { + sum(a, b) { return a + b; }, }; - it('test memoize func without scope', function () { - var sumMemoized = f(sum, null); + it('test memoize func without scope', () => { + const sumMemoized = f(sum, null); test.assertEqual(sumMemoized(1, 2), 3); }); - it('test memoize func with scope', function () { - var sumMemoized = f(obj.sum, obj); + it('test memoize func with scope', () => { + const sumMemoized = f(obj.sum, obj); test.assertEqual(sumMemoized(1, 2), 3); }); - it('test memoize func by name and scope', function () { - var sumMemoized = f('sum', obj); + it('test memoize func by name and scope', () => { + const sumMemoized = f('sum', obj); test.assertEqual(sumMemoized(1, 2), 3); }); - it('test memoize func by name and scope', function () { - var sumMemoized = f('sum', obj); + it('test memoize func by name and scope', () => { + const sumMemoized = f('sum', obj); test.assertEqual(sumMemoized(1, 2), 3); }); - it('test memoize func calls count', function () { - var subCount = 0; - var sub = function (a, b) { + it('test memoize func calls count', () => { + let subCount = 0; + const sub = (a, b) => { subCount++; return a - b; }; - var subMemoized = f(sub); - for (var i = 0; i < 5; i++) { + const subMemoized = f(sub); + for (let i = 0; i < 5; i++) { subMemoized(10, 5); } test.assertEqual(subCount, 1); @@ -328,35 +329,34 @@ describe('func', function () { test.assertEqual(subCount, 2); }); }); - describe('noop', function () { - var f = func.noop; - it('test noop', function () { + describe('noop', () => { + const f = func.noop; + it('test noop', () => { test.assertTrue(f()); }); }); - describe('repeat', function () { - var f = func.repeat; - it('test repeat func called multiple times', function (done) { - var counter = 0; - var repeatObj = f( + describe('repeat', () => { + const f = func.repeat; + it('test repeat func called multiple times', (done) => { + let counter = 0; + const repeatObj = f( 100, - function () { + () => { counter++; }, null ); test.assertEqual(counter, 0); - setTimeout(function () { + setTimeout(() => { test.assertTrue(counter >= 9 && counter <= 10); repeatObj.cancel(); done(); }, 1050); }); - it('test repeat func arguments', function (done) { - var repeatObj = f( + it('test repeat func arguments', (done) => { + const repeatObj = f( 100, - function () { - var args = func.args(arguments); + (...args) => { test.assertEqual(args, [0, 1, true, false, 'a', 'b', 'c']); repeatObj.cancel(); done(); @@ -371,77 +371,77 @@ describe('func', function () { 'c' ); }); - it('test repeat func by name with scope', function (done) { - var repeatObj; - var obj = { - dosomething: function (done) { + it('test repeat func by name with scope', (done) => { + let repeatObj; + const obj = { + dosomething(done) { repeatObj.cancel(); done(); }, }; repeatObj = f(100, 'dosomething', obj, done); }); - it('test repeat func cancelled', function (done) { - var dosomething = function () { + it('test repeat func cancelled', (done) => { + const dosomething = () => { throw new Error('repeat func not cancelled'); }; - var repeatObj = f(100, dosomething); + const repeatObj = f(100, dosomething); test.assertFunction(repeatObj.func); test.assertFunction(repeatObj.cancel); repeatObj.cancel(); func.delay(200, done); }); - it('test repeat func by name cancelled', function (done) { - var obj = { - dosomething: function (done) { + it('test repeat func by name cancelled', (done) => { + const obj = { + dosomething(done) { throw new Error('repeat func by name not cancelled'); }, }; - var repeatObj = f(100, 'dosomething', obj); + const repeatObj = f(100, 'dosomething', obj); test.assertFunction(repeatObj.func); test.assertFunction(repeatObj.cancel); repeatObj.cancel(); func.delay(200, done); }); }); - describe('throttle', function () { - var f = func.throttle; - it('test throttle', function (done) { - var counter = 0; - var counterInc = f(200, function () { + describe('throttle', () => { + const f = func.throttle; + it('test throttle', (done) => { + let counter = 0; + const counterInc = f(200, () => { counter++; }); - var interval = setInterval(counterInc, 50); - setTimeout(function () { + const interval = setInterval(counterInc, 50); + setTimeout(() => { clearInterval(interval); test.assertEqual(counter, 5); done(); }, 1000); }); }); - describe('until', function () { - var f = func.until; - it('test until', function (done) { - var counter = 0; - var checker = f(50, function () { + describe('until', () => { + const f = func.until; + it('test until', (done) => { + let counter = 0; + const checker = f(50, () => { counter++; if (counter === 10) { return false; } }); - setTimeout(function () { + setTimeout(() => { // clearInterval(interval); test.assertEqual(counter, 10); done(); }, 1000); }); }); - describe('validate', function () { - var f = func.validate; - it('test validate arguments all types', function () { - var v = function () { + describe('validate', () => { + const f = func.validate; + it('test validate arguments all types', () => { + const v = (...args) => { func.validate( - arguments, + args, type.ARRAY, type.BOOLEAN, type.DATE, @@ -461,7 +461,7 @@ describe('func', function () { true, new Date(), new Error(), - function () {}, + () => {}, NaN, 0, null, @@ -471,10 +471,10 @@ describe('func', function () { undefined ); }); - it('test validate arguments multiple possible type for same argument', function () { - var v = function () { + it('test validate arguments multiple possible type for same argument', () => { + const v = (...args) => { func.validate( - arguments, + args, [type.STRING, type.BOOLEAN], [type.NUMBER, type.UNDEFINED] ); @@ -487,22 +487,22 @@ describe('func', function () { v(true, 0); test.assertThrows(v, true, ''); }); - it('test validate arguments invalid count', function () { - var v = function () { - func.validate(arguments, type.STRING, type.STRING); + it('test validate arguments invalid count', () => { + const v = (...args) => { + func.validate(args, type.STRING, type.STRING); }; test.assertThrows(v, ''); v('', '', '', '', '', ''); }); - it('test validate arguments invalid expected type', function () { - var v = function () { - func.validate(arguments, 't y p e'); + it('test validate arguments invalid expected type', () => { + const v = (...args) => { + func.validate(args, 't y p e'); }; test.assertThrows(v, ''); }); - it('test validate arguments invalid argument', function () { - var v = function () { - func.validate(arguments, type.STRING); + it('test validate arguments invalid argument', () => { + const v = (...args) => { + func.validate(args, type.STRING); }; test.assertThrows(v, true); }); diff --git a/test/test_hex.js b/test/test_hex.js index 23defad..7b456f9 100644 --- a/test/test_hex.js +++ b/test/test_hex.js @@ -1,113 +1,113 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; -var hex = utils.hex; +import utils from '../src/utils.js'; +const test = utils.test; +const hex = utils.hex; -describe('hex', function () { - describe('decodeInt', function () { - var d = hex.decodeInt; - it('decode 0', function () { +describe('hex', () => { + describe('decodeInt', () => { + const d = hex.decodeInt; + it('decode 0', () => { test.assertEqual(d('00'), 0); }); - it('decode 1', function () { + it('decode 1', () => { test.assertEqual(d('01'), 1); }); - it('decode 2', function () { + it('decode 2', () => { test.assertEqual(d('02'), 2); }); - it('decode 3', function () { + it('decode 3', () => { test.assertEqual(d('03'), 3); }); - it('decode 4', function () { + it('decode 4', () => { test.assertEqual(d('04'), 4); }); - it('decode 5', function () { + it('decode 5', () => { test.assertEqual(d('05'), 5); }); - it('decode 6', function () { + it('decode 6', () => { test.assertEqual(d('06'), 6); }); - it('decode 7', function () { + it('decode 7', () => { test.assertEqual(d('07'), 7); }); - it('decode 8', function () { + it('decode 8', () => { test.assertEqual(d('08'), 8); }); - it('decode 9', function () { + it('decode 9', () => { test.assertEqual(d('09'), 9); }); - it('decode 10', function () { + it('decode 10', () => { test.assertEqual(d('0A'), 10); }); - it('decode 11', function () { + it('decode 11', () => { test.assertEqual(d('0B'), 11); }); - it('decode 12', function () { + it('decode 12', () => { test.assertEqual(d('0C'), 12); }); - it('decode 13', function () { + it('decode 13', () => { test.assertEqual(d('0D'), 13); }); - it('decode 14', function () { + it('decode 14', () => { test.assertEqual(d('0E'), 14); }); - it('decode 15', function () { + it('decode 15', () => { test.assertEqual(d('0F'), 15); }); - it('decode 16', function () { + it('decode 16', () => { test.assertEqual(d('10'), 16); }); }); - describe('encodeInt', function () { - var e = hex.encodeInt; - it('encode 0', function () { + describe('encodeInt', () => { + const e = hex.encodeInt; + it('encode 0', () => { test.assertEqual(e(0), '00'); }); - it('encode 1', function () { + it('encode 1', () => { test.assertEqual(e(1), '01'); }); - it('encode 2', function () { + it('encode 2', () => { test.assertEqual(e(2), '02'); }); - it('encode 3', function () { + it('encode 3', () => { test.assertEqual(e(3), '03'); }); - it('encode 4', function () { + it('encode 4', () => { test.assertEqual(e(4), '04'); }); - it('encode 5', function () { + it('encode 5', () => { test.assertEqual(e(5), '05'); }); - it('encode 6', function () { + it('encode 6', () => { test.assertEqual(e(6), '06'); }); - it('encode 7', function () { + it('encode 7', () => { test.assertEqual(e(7), '07'); }); - it('encode 8', function () { + it('encode 8', () => { test.assertEqual(e(8), '08'); }); - it('encode 9', function () { + it('encode 9', () => { test.assertEqual(e(9), '09'); }); - it('encode 10', function () { + it('encode 10', () => { test.assertEqual(e(10), '0A'); }); - it('encode 11', function () { + it('encode 11', () => { test.assertEqual(e(11), '0B'); }); - it('encode 12', function () { + it('encode 12', () => { test.assertEqual(e(12), '0C'); }); - it('encode 13', function () { + it('encode 13', () => { test.assertEqual(e(13), '0D'); }); - it('encode 14', function () { + it('encode 14', () => { test.assertEqual(e(14), '0E'); }); - it('encode 15', function () { + it('encode 15', () => { test.assertEqual(e(15), '0F'); }); - it('encode 16', function () { + it('encode 16', () => { test.assertEqual(e(16), '10'); }); }); diff --git a/test/test_interpolation.js b/test/test_interpolation.js index 7dee918..855b39d 100644 --- a/test/test_interpolation.js +++ b/test/test_interpolation.js @@ -1,292 +1,292 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; -var scope = utils.math.interpolation; +import utils from '../src/utils.js'; +const test = utils.test; +const scope = utils.math.interpolation; -describe('interpolation', function () { - describe('bilinear', function () { - var f = scope.bilinear; - var a = 0.0; - var b = 100.0; - var c = 500.0; - var d = 1000.0; +describe('interpolation', () => { + describe('bilinear', () => { + const f = scope.bilinear; + const a = 0.0; + const b = 100.0; + const c = 500.0; + const d = 1000.0; - it('x 0.0 - y 0.0', function () { + it('x 0.0 - y 0.0', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 0.0, 0.0), 0.0); }); - it('x 0.2 - y 0.0', function () { + it('x 0.2 - y 0.0', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 0.2, 0.0), 20.0); }); - it('x 0.4 - y 0.0', function () { + it('x 0.4 - y 0.0', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 0.4, 0.0), 40.0); }); - it('x 0.6 - y 0.0', function () { + it('x 0.6 - y 0.0', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 0.6, 0.0), 60.0); }); - it('x 0.8 - y 0.0', function () { + it('x 0.8 - y 0.0', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 0.8, 0.0), 80.0); }); - it('x 1.0 - y 0.0', function () { + it('x 1.0 - y 0.0', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 1.0, 0.0), 100.0); }); - it('x 0.0 - y 1.0', function () { + it('x 0.0 - y 1.0', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 0.0, 1.0), 500.0); }); - it('x 0.2 - y 1.0', function () { + it('x 0.2 - y 1.0', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 0.2, 1.0), 600.0); }); - it('x 0.4 - y 1.0', function () { + it('x 0.4 - y 1.0', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 0.4, 1.0), 700.0); }); - it('x 0.6 - y 1.0', function () { + it('x 0.6 - y 1.0', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 0.6, 1.0), 800.0); }); - it('x 0.8 - y 1.0', function () { + it('x 0.8 - y 1.0', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 0.8, 1.0), 900.0); }); - it('x 1.0 - y 1.0', function () { + it('x 1.0 - y 1.0', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 1.0, 1.0), 1000.0); }); - it('x 0.0 - y 0.2', function () { + it('x 0.0 - y 0.2', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 0.0, 0.2), 100.0); }); - it('x 0.0 - y 0.4', function () { + it('x 0.0 - y 0.4', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 0.0, 0.4), 200.0); }); - it('x 0.0 - y 0.6', function () { + it('x 0.0 - y 0.6', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 0.0, 0.6), 300.0); }); - it('x 0.0 - y 0.8', function () { + it('x 0.0 - y 0.8', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 0.0, 0.8), 400.0); }); - it('x 0.0 - y 1.0', function () { + it('x 0.0 - y 1.0', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 0.0, 1.0), 500.0); }); - it('x 1.0 - y 1.0', function () { + it('x 1.0 - y 1.0', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 1.0, 1.0), 1000.0); }); - it('x 1.0 - y 0.0', function () { + it('x 1.0 - y 0.0', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 1.0, 0.0), 100.0); }); - it('x 1.0 - y 0.2', function () { + it('x 1.0 - y 0.2', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 1.0, 0.2), 280.0); }); - it('x 1.0 - y 0.4', function () { + it('x 1.0 - y 0.4', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 1.0, 0.4), 460.0); }); - it('x 1.0 - y 0.6', function () { + it('x 1.0 - y 0.6', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 1.0, 0.6), 640.0); }); - it('x 1.0 - y 0.8', function () { + it('x 1.0 - y 0.8', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 1.0, 0.8), 820.0); }); - it('x 1.0 - y 1.0', function () { + it('x 1.0 - y 1.0', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 1.0, 1.0), 1000.0); }); - it('x 0.0 - y 0.0', function () { + it('x 0.0 - y 0.0', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 0.0, 0.0), 0.0); }); - it('x 0.2 - y 0.2', function () { + it('x 0.2 - y 0.2', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 0.2, 0.2), 136.0); }); - it('x 0.4 - y 0.4', function () { + it('x 0.4 - y 0.4', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 0.4, 0.4), 304.0); }); - it('x 0.6 - y 0.6', function () { + it('x 0.6 - y 0.6', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 0.6, 0.6), 504.0); }); - it('x 0.8 - y 0.8', function () { + it('x 0.8 - y 0.8', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 0.8, 0.8), 736.0); }); - it('x 1.0 - y 1.0', function () { + it('x 1.0 - y 1.0', () => { test.assertNumberAlmostEqual(f(a, b, c, d, 1.0, 1.0), 1000.0); }); }); - describe('linear', function () { - var f = scope.linear; - var a = 0.0; - var b = 100.0; - it('0.0', function () { + describe('linear', () => { + const f = scope.linear; + const a = 0.0; + const b = 100.0; + it('0.0', () => { test.assertNumberAlmostEqual(f(a, b, 0.0), 0.0); }); - it('0.1', function () { + it('0.1', () => { test.assertNumberAlmostEqual(f(a, b, 0.1), 10.0); }); - it('0.2', function () { + it('0.2', () => { test.assertNumberAlmostEqual(f(a, b, 0.2), 20.0); }); - it('0.3', function () { + it('0.3', () => { test.assertNumberAlmostEqual(f(a, b, 0.3), 30.0); }); - it('0.4', function () { + it('0.4', () => { test.assertNumberAlmostEqual(f(a, b, 0.4), 40.0); }); - it('0.5', function () { + it('0.5', () => { test.assertNumberAlmostEqual(f(a, b, 0.5), 50.0); }); - it('0.6', function () { + it('0.6', () => { test.assertNumberAlmostEqual(f(a, b, 0.6), 60.0); }); - it('0.7', function () { + it('0.7', () => { test.assertNumberAlmostEqual(f(a, b, 0.7), 70.0); }); - it('0.8', function () { + it('0.8', () => { test.assertNumberAlmostEqual(f(a, b, 0.8), 80.0); }); - it('0.9', function () { + it('0.9', () => { test.assertNumberAlmostEqual(f(a, b, 0.9), 90.0); }); - it('1.0', function () { + it('1.0', () => { test.assertNumberAlmostEqual(f(a, b, 1.0), 100.0); }); }); - describe('multilinear', function () { - var f = scope.multilinear; - var a = 0.0; - var b = 10.0; - var c = 60.0; - it('0.0', function () { + describe('multilinear', () => { + const f = scope.multilinear; + const a = 0.0; + const b = 10.0; + const c = 60.0; + it('0.0', () => { test.assertNumberAlmostEqual(f([a, b, c], 0.0), 0.0); }); - it('0.1', function () { + it('0.1', () => { test.assertNumberAlmostEqual(f([a, b, c], 0.1), 2.0); }); - it('0.2', function () { + it('0.2', () => { test.assertNumberAlmostEqual(f([a, b, c], 0.2), 4.0); }); - it('0.3', function () { + it('0.3', () => { test.assertNumberAlmostEqual(f([a, b, c], 0.3), 6.0); }); - it('0.4', function () { + it('0.4', () => { test.assertNumberAlmostEqual(f([a, b, c], 0.4), 8.0); }); - it('0.5', function () { + it('0.5', () => { test.assertNumberAlmostEqual(f([a, b, c], 0.5), 10.0); }); - it('0.6', function () { + it('0.6', () => { test.assertNumberAlmostEqual(f([a, b, c], 0.6), 20.0); }); - it('0.7', function () { + it('0.7', () => { test.assertNumberAlmostEqual(f([a, b, c], 0.7), 30.0); }); - it('0.8', function () { + it('0.8', () => { test.assertNumberAlmostEqual(f([a, b, c], 0.8), 40.0); }); - it('0.9', function () { + it('0.9', () => { test.assertNumberAlmostEqual(f([a, b, c], 0.9), 50.0); }); - it('1.0', function () { + it('1.0', () => { test.assertNumberAlmostEqual(f([a, b, c], 1.0), 60.0); }); }); - describe('scalar', function () { - var f = scope.scalar; - var p = 10; - var s; - it('0.0', function () { + describe('scalar', () => { + const f = scope.scalar; + const p = 10; + let s; + it('0.0', () => { s = f(p, 0.0); test.assertEqual(s.index, 0); test.assertNumberAlmostEqual(s.t, 0.0); }); - it('0.05', function () { + it('0.05', () => { s = f(p, 0.05); test.assertEqual(s.index, 0); test.assertNumberAlmostEqual(s.t, 0.5); }); - it('0.1', function () { + it('0.1', () => { s = f(p, 0.1); test.assertEqual(s.index, 1); test.assertNumberAlmostEqual(s.t, 0.0); }); - it('0.15', function () { + it('0.15', () => { s = f(p, 0.15); test.assertEqual(s.index, 1); test.assertNumberAlmostEqual(s.t, 0.5); }); - it('0.2', function () { + it('0.2', () => { s = f(p, 0.2); test.assertEqual(s.index, 2); test.assertNumberAlmostEqual(s.t, 0.0); }); - it('0.25', function () { + it('0.25', () => { s = f(p, 0.25); test.assertEqual(s.index, 2); test.assertNumberAlmostEqual(s.t, 0.5); }); - it('0.3', function () { + it('0.3', () => { s = f(p, 0.3); test.assertEqual(s.index, 3); test.assertNumberAlmostEqual(s.t, 0.0); }); - it('0.35', function () { + it('0.35', () => { s = f(p, 0.35); test.assertEqual(s.index, 3); test.assertNumberAlmostEqual(s.t, 0.5); }); - it('0.4', function () { + it('0.4', () => { s = f(p, 0.4); test.assertEqual(s.index, 4); test.assertNumberAlmostEqual(s.t, 0.0); }); - it('0.45', function () { + it('0.45', () => { s = f(p, 0.45); test.assertEqual(s.index, 4); test.assertNumberAlmostEqual(s.t, 0.5); }); - it('0.5', function () { + it('0.5', () => { s = f(p, 0.5); test.assertEqual(s.index, 5); test.assertNumberAlmostEqual(s.t, 0.0); }); - it('0.55', function () { + it('0.55', () => { s = f(p, 0.55); test.assertEqual(s.index, 5); test.assertNumberAlmostEqual(s.t, 0.5); }); - it('0.6', function () { + it('0.6', () => { s = f(p, 0.6); test.assertEqual(s.index, 6); test.assertNumberAlmostEqual(s.t, 0.0); }); - it('0.65', function () { + it('0.65', () => { s = f(p, 0.65); test.assertEqual(s.index, 6); test.assertNumberAlmostEqual(s.t, 0.5); }); - it('0.7', function () { + it('0.7', () => { s = f(p, 0.7); test.assertEqual(s.index, 7); test.assertNumberAlmostEqual(s.t, 0.0); }); - it('0.75', function () { + it('0.75', () => { s = f(p, 0.75); test.assertEqual(s.index, 7); test.assertNumberAlmostEqual(s.t, 0.5); }); - it('0.8', function () { + it('0.8', () => { s = f(p, 0.8); test.assertEqual(s.index, 8); test.assertNumberAlmostEqual(s.t, 0.0); }); - it('0.85', function () { + it('0.85', () => { s = f(p, 0.85); test.assertEqual(s.index, 8); test.assertNumberAlmostEqual(s.t, 0.5); }); - it('0.9', function () { + it('0.9', () => { s = f(p, 0.9); test.assertEqual(s.index, 9); test.assertNumberAlmostEqual(s.t, 0.0); }); - it('0.95', function () { + it('0.95', () => { s = f(p, 0.95); test.assertEqual(s.index, 9); test.assertNumberAlmostEqual(s.t, 0.5); }); - it('1.0', function () { + it('1.0', () => { s = f(p, 1.0); test.assertEqual(s.index, 9); test.assertNumberAlmostEqual(s.t, 1.0); diff --git a/test/test_json.js b/test/test_json.js index 8b24764..932543b 100644 --- a/test/test_json.js +++ b/test/test_json.js @@ -1,15 +1,15 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; +import utils from '../src/utils.js'; +const test = utils.test; -describe('json', function () { - var j = utils.json; - var d = j.decode; - var e = j.encode; - describe('decode', function () { - it('test decode empty', function () { +describe('json', () => { + const j = utils.json; + const d = j.decode; + const e = j.encode; + describe('decode', () => { + it('test decode empty', () => { test.assertEqual(d('""'), ''); }); - it('test decode array', function () { + it('test decode array', () => { test.assertEqual(d('[0,1,2,3,"","a","b","c",null,null,null]'), [ 0, 1, @@ -24,15 +24,15 @@ describe('json', function () { null, ]); }); - it('test decode object', function () { + it('test decode object', () => { test.assertEqual(d('{"k":[0,1,2,3,"","a","b","c",null,null,null]}'), { k: [0, 1, 2, 3, '', 'a', 'b', 'c', null, null, null], }); }); - it('test decode utf8 simple', function () { + it('test decode utf8 simple', () => { test.assertEqual(d('["✓ ok"]'), ['✓ ok']); }); - it('test decode utf8', function () { + it('test decode utf8', () => { test.assertEqual( d( '["観カサチス話著ワヨ起旅リレム西災朝ウフソマ例権エムテス料購73楽チホ養座らち関産そ拡提権ばぜ視実トこ聞図ラホヨ検競ッそぐ携様ツサヤ険能みっッ北挙煙るつ。誘ナモシメ周初おトぱ年求ラぼ手験名ふ希栄ワセムヒ恵真おやふ表要91保ぞあぶ教建リ記就イらろめ見徳弁ん財84海ルヘ正権カシ法彼けるよ。"]' @@ -42,23 +42,23 @@ describe('json', function () { ] ); }); - it('test decode/encode utf8 simple', function () { - var s = '✓ ok'; + it('test decode/encode utf8 simple', () => { + const s = '✓ ok'; test.assertEqual(d(e([s])), [s]); }); - it('test decode/encode utf8 complex', function () { - var s = + it('test decode/encode utf8 complex', () => { + const s = '観カサチス話著ワヨ起旅リレム西災朝ウフソマ例権エムテス料購73楽チホ養座らち関産そ拡提権ばぜ視実トこ聞図ラホヨ検競ッそぐ携様ツサヤ険能みっッ北挙煙るつ。誘ナモシメ周初おトぱ年求ラぼ手験名ふ希栄ワセムヒ恵真おやふ表要91保ぞあぶ教建リ記就イらろめ見徳弁ん財84海ルヘ正権カシ法彼けるよ。'; test.assertEqual(d(e([s])), [s]); }); - it('test decode unquoted object', function () { + it('test decode unquoted object', () => { test.assertEqual(d('{"a":1,"b":2,"c":3}'), { a: 1, b: 2, c: 3, }); }); - it('test decode html entities to avoid "SyntaxError: Unexpected token B in JSON"', function () { + it('test decode html entities to avoid "SyntaxError: Unexpected token B in JSON"', () => { test.assertEqual( d('{"text":""Fabio" & "Caccamo""}'), { text: '"Fabio" & "Caccamo"' } @@ -69,32 +69,32 @@ describe('json', function () { ); }); }); - describe('encode', function () { - it('test encode empty', function () { + describe('encode', () => { + it('test encode empty', () => { test.assertEqual(e(''), '""'); }); - it('test encode array', function () { + it('test encode array', () => { test.assertEqual( e([0, 1, 2, 3, '', 'a', 'b', 'c', null, undefined, NaN]), '[0,1,2,3,"","a","b","c",null,null,null]' ); }); - it('test encode object', function () { + it('test encode object', () => { test.assertEqual( e({ k: [0, 1, 2, 3, '', 'a', 'b', 'c', null, undefined, NaN] }), '{"k":[0,1,2,3,"","a","b","c",null,null,null]}' ); }); - it('test encode/decode object', function () { + it('test encode/decode object', () => { test.assertEqual( e(d('{"k":[0,1,2,3,"","a","b","c",null,null,null]}')), '{"k":[0,1,2,3,"","a","b","c",null,null,null]}' ); }); - it('test encode utf8 simple', function () { + it('test encode utf8 simple', () => { test.assertEqual(e(['✓ ok']), '["✓ ok"]'); }); - it('test encode utf8', function () { + it('test encode utf8', () => { test.assertEqual( e([ '観カサチス話著ワヨ起旅リレム西災朝ウフソマ例権エムテス料購73楽チホ養座らち関産そ拡提権ばぜ視実トこ聞図ラホヨ検競ッそぐ携様ツサヤ険能みっッ北挙煙るつ。誘ナモシメ周初おトぱ年求ラぼ手験名ふ希栄ワセムヒ恵真おやふ表要91保ぞあぶ教建リ記就イらろめ見徳弁ん財84海ルヘ正権カシ法彼けるよ。', @@ -102,7 +102,7 @@ describe('json', function () { '["観カサチス話著ワヨ起旅リレム西災朝ウフソマ例権エムテス料購73楽チホ養座らち関産そ拡提権ばぜ視実トこ聞図ラホヨ検競ッそぐ携様ツサヤ険能みっッ北挙煙るつ。誘ナモシメ周初おトぱ年求ラぼ手験名ふ希栄ワセムヒ恵真おやふ表要91保ぞあぶ教建リ記就イらろめ見徳弁ん財84海ルヘ正権カシ法彼けるよ。"]' ); }); - it('test encode base64', function () { + it('test encode base64', () => { test.assertEqual( e([ '観カサチス話著ワヨ起旅リレム西災朝ウフソマ例権エムテス料購73楽チホ養座らち関産そ拡提権ばぜ視実トこ聞図ラホヨ検競ッそぐ携様ツサヤ険能みっッ北挙煙るつ。誘ナモシメ周初おトぱ年求ラぼ手験名ふ希栄ワセムヒ恵真おやふ表要91保ぞあぶ教建リ記就イらろめ見徳弁ん財84海ルヘ正権カシ法彼けるよ。', diff --git a/test/test_math.js b/test/test_math.js index f0d87ce..d5343b8 100644 --- a/test/test_math.js +++ b/test/test_math.js @@ -1,42 +1,42 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; -var math = utils.math; +import utils from '../src/utils.js'; +const test = utils.test; +const math = utils.math; -describe('math', function () { - describe('average', function () { - var f = math.average; - it('test simple', function () { +describe('math', () => { + describe('average', () => { + const f = math.average; + it('test simple', () => { test.assertNumberAlmostEqual(f([5, 10, 45]), 20); }); }); - describe('constrain', function () { - var f = math.constrain; - it('test value', function () { + describe('constrain', () => { + const f = math.constrain; + it('test value', () => { test.assertNumberAlmostEqual(f(0.5, 0.0, 1.0), 0.5); test.assertNumberAlmostEqual(f(0.5, 1.0, 0.0), 0.5); }); - it('test lower value', function () { + it('test lower value', () => { test.assertNumberAlmostEqual(f(-0.5, 0.0, 1.0), 0.0); test.assertNumberAlmostEqual(f(-0.5, 1.0, 0.0), 0.0); }); - it('test greater value', function () { + it('test greater value', () => { test.assertNumberAlmostEqual(f(1.5, 0.0, 1.0), 1.0); test.assertNumberAlmostEqual(f(1.5, 1.0, 0.0), 1.0); }); }); - describe('cycle', function () { - var f = math.cycle; - it('test n > cycle length && shift = 0', function () { + describe('cycle', () => { + const f = math.cycle; + it('test n > cycle length && shift = 0', () => { test.assertNumberAlmostEqual(f(13, 10), 3); test.assertNumberAlmostEqual(f(27, 10), 7); }); - it('test n < cycle length && shift = 0', function () { + it('test n < cycle length && shift = 0', () => { test.assertNumberAlmostEqual(f(2, 10), 2); }); - it('test n == cycle length && shift = 0', function () { + it('test n == cycle length && shift = 0', () => { test.assertNumberAlmostEqual(f(10, 10), 0); }); - it('test n > 0 && n < cycle length && shift = 0', function () { + it('test n > 0 && n < cycle length && shift = 0', () => { test.assertNumberAlmostEqual(f(0, 10), 0); test.assertNumberAlmostEqual(f(1, 10), 1); test.assertNumberAlmostEqual(f(2, 10), 2); @@ -48,13 +48,13 @@ describe('math', function () { test.assertNumberAlmostEqual(f(8, 10), 8); test.assertNumberAlmostEqual(f(9, 10), 9); }); - it('test n < 0 && n < cycle length && shift = 0', function () { + it('test n < 0 && n < cycle length && shift = 0', () => { test.assertNumberAlmostEqual(f(-2, 10), 8); }); - it('test n < 0 && n > cycle length && shift = 0', function () { + it('test n < 0 && n > cycle length && shift = 0', () => { test.assertNumberAlmostEqual(f(-13, 10), 7); }); - it('test n {-5,9} && shift = 1', function () { + it('test n {-5,9} && shift = 1', () => { test.assertNumberAlmostEqual(f(-5, 3, 1), 1); test.assertNumberAlmostEqual(f(-4, 3, 1), 2); test.assertNumberAlmostEqual(f(-3, 3, 1), 3); @@ -72,9 +72,9 @@ describe('math', function () { test.assertNumberAlmostEqual(f(9, 3, 1), 3); }); }); - describe('equals', function () { - var f = math.equals; - it('test simple', function () { + describe('equals', () => { + const f = math.equals; + it('test simple', () => { test.assertTrue(f(0, 0)); test.assertTrue(f(0.5, 0.5)); test.assertTrue(f(0.5000000000000001, 0.5)); @@ -82,9 +82,9 @@ describe('math', function () { test.assertTrue(f(0.505, 0.5, 0.01)); }); }); - describe('euclideanDistance', function () { - var f = math.euclideanDistance; - it('test simple', function () { + describe('euclideanDistance', () => { + const f = math.euclideanDistance; + it('test simple', () => { test.assertNumberAlmostEqual(f([1, 1, 1, 1, 1], [1, 1, 1, 1, 1]), 0.0); test.assertNumberAlmostEqual( f([0, 0, 0, 0, 0], [1, 1, 1, 1, 1]), @@ -93,62 +93,62 @@ describe('math', function () { test.assertNumberAlmostEqual(f([8, 5, -3], [6, 0, 9]), 13.152946437965905); }); }); - describe('factorial', function () { - var f = math.factorial; - it('test 0', function () { + describe('factorial', () => { + const f = math.factorial; + it('test 0', () => { test.assertNumberAlmostEqual(f(0), 1); }); - it('test 1', function () { + it('test 1', () => { test.assertNumberAlmostEqual(f(1), 1); }); - it('test 2', function () { + it('test 2', () => { test.assertNumberAlmostEqual(f(2), 2); }); - it('test 3', function () { + it('test 3', () => { test.assertNumberAlmostEqual(f(3), 6); }); - it('test 4', function () { + it('test 4', () => { test.assertNumberAlmostEqual(f(4), 24); }); - it('test 5', function () { + it('test 5', () => { test.assertNumberAlmostEqual(f(5), 120); }); }); - describe('gcd', function () { - var f = math.gcd; - it('test simple', function () { + describe('gcd', () => { + const f = math.gcd; + it('test simple', () => { test.assertNumberAlmostEqual(f(12, 16), 4); test.assertNumberAlmostEqual(f(80, 100), 20); test.assertNumberAlmostEqual(f(100, 1000), 100); }); }); - describe('lcm', function () { - var f = math.lcm; - it('test simple', function () { + describe('lcm', () => { + const f = math.lcm; + it('test simple', () => { test.assertNumberAlmostEqual(f(2, 9), 18); test.assertNumberAlmostEqual(f(5, 10), 10); test.assertNumberAlmostEqual(f(10, 15), 30); }); }); - describe('lerp', function () { - var f = math.lerp; - it('test simple', function () { + describe('lerp', () => { + const f = math.lerp; + it('test simple', () => { test.assertNumberAlmostEqual(f(0, 10, 0.1), 1); test.assertNumberAlmostEqual(f(0, 100, 0.75), 75); test.assertNumberAlmostEqual(f(50, 60, 0.5), 55); }); }); - describe('map', function () { - var f = math.map; - it('test simple', function () { + describe('map', () => { + const f = math.map; + it('test simple', () => { test.assertNumberAlmostEqual(f(0.5, 0.0, 1.0, 0.0, 100.0), 50.0); test.assertNumberAlmostEqual(f(0.5, 0.0, 1.0, 50.0, 60.0), 55.0); test.assertNumberAlmostEqual(f(2.0, 0.0, 1.0, 0.0, 100.0), 200.0); }); }); - describe('nearest', function () { - var f = math.nearest; - it('test simple', function () { + describe('nearest', () => { + const f = math.nearest; + it('test simple', () => { test.assertNumberAlmostEqual(f(5.0, 10.0, 100.0), 10.0); test.assertNumberAlmostEqual(f(5.0, 10.0, 100.0), 10.0); test.assertNumberAlmostEqual(f(10.0, 10.0, 100.0), 10.0); @@ -158,9 +158,9 @@ describe('math', function () { test.assertNumberAlmostEqual(f(200.0, 10.0, 100.0), 100.0); }); }); - describe('normalize', function () { - var f = math.normalize; - it('test simple', function () { + describe('normalize', () => { + const f = math.normalize; + it('test simple', () => { test.assertNumberAlmostEqual(f(10.0, 0.0, 30.0), 0.3333333333); test.assertNumberAlmostEqual(f(10.0, 0.0, 100.0), 0.1); test.assertNumberAlmostEqual(f(60.0, 50.0, 100.0), 0.2); @@ -168,9 +168,9 @@ describe('math', function () { test.assertNumberAlmostEqual(f(0.0, 50.0, 100.0), -1.0); }); }); - describe('proportion', function () { - var f = math.proportion; - it('test simple', function () { + describe('proportion', () => { + const f = math.proportion; + it('test simple', () => { test.assertNumberAlmostEqual(f(null, 100, 100, 1000), 10); test.assertNumberAlmostEqual(f(10, null, 100, 1000), 100); test.assertNumberAlmostEqual(f(10, 100, null, 1000), 100); @@ -182,9 +182,9 @@ describe('math', function () { test.assertNaN(f(1, 10, 10, 100)); }); }); - describe('roundDecimals', function () { - var f = math.roundDecimals; - it('test simple', function () { + describe('roundDecimals', () => { + const f = math.roundDecimals; + it('test simple', () => { test.assertNumberAlmostEqual(f(0.123456789, 1), 0.1); test.assertNumberAlmostEqual(f(0.123456789, 2), 0.12); test.assertNumberAlmostEqual(f(0.123456789, 3), 0.123); @@ -196,9 +196,9 @@ describe('math', function () { test.assertNumberAlmostEqual(f(0.123456789, 9), 0.123456789); }); }); - describe('roundToMultiple', function () { - var f = math.roundToMultiple; - it('test simple', function () { + describe('roundToMultiple', () => { + const f = math.roundToMultiple; + it('test simple', () => { test.assertNumberAlmostEqual(f(20, 1), 20); test.assertNumberAlmostEqual(f(20, 2), 20); test.assertNumberAlmostEqual(f(20, 3), 21); @@ -211,10 +211,10 @@ describe('math', function () { test.assertNumberAlmostEqual(f(20, 10), 20); }); }); - describe('roundToNearest', function () { - var f = math.roundToNearest; - var values = [-1000, 20, 100, 5, -75, 0, 9, 2000, -300]; - it('test simple', function () { + describe('roundToNearest', () => { + const f = math.roundToNearest; + const values = [-1000, 20, 100, 5, -75, 0, 9, 2000, -300]; + it('test simple', () => { test.assertNumberAlmostEqual(f(0, values), 0); test.assertNumberAlmostEqual(f(-1, values), 0); test.assertNumberAlmostEqual(f(1, values), 0); @@ -228,9 +228,9 @@ describe('math', function () { test.assertNumberAlmostEqual(f(10, [8, 11]), 11); }); }); - describe('roundToPower', function () { - var f = math.roundToPower; - it('test simple', function () { + describe('roundToPower', () => { + const f = math.roundToPower; + it('test simple', () => { test.assertNumberAlmostEqual(f(0, 2), 0); test.assertNumberAlmostEqual(f(10, 2), 8); test.assertNumberAlmostEqual(f(20, 2), 16); @@ -244,9 +244,9 @@ describe('math', function () { test.assertNumberAlmostEqual(f(100, 2), 128); }); }); - describe('sign', function () { - var f = math.sign; - it('test simple', function () { + describe('sign', () => { + const f = math.sign; + it('test simple', () => { test.assertNumberAlmostEqual(f(-1.0), -1.0); test.assertNumberAlmostEqual(f(-0.5), -1.0); test.assertNumberAlmostEqual(f(-0.25), -1.0); @@ -257,9 +257,9 @@ describe('math', function () { test.assertNumberAlmostEqual(f(1.0), 1.0); }); }); - describe('summation', function () { - var f = math.summation; - it('test simple', function () { + describe('summation', () => { + const f = math.summation; + it('test simple', () => { test.assertNumberAlmostEqual(f([1, 2, 3, 4, 5]), 15); test.assertNumberAlmostEqual(f([-1, -2, -3, -4, -5]), -15); test.assertNumberAlmostEqual(f([1, 2, 3, 4, -5]), 5); diff --git a/test/test_number.js b/test/test_number.js index d2ed8f9..42505c1 100644 --- a/test/test_number.js +++ b/test/test_number.js @@ -1,11 +1,11 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; -var num = utils.number; +import utils from '../src/utils.js'; +const test = utils.test; +const num = utils.number; -describe('number', function () { - describe('isBetween', function () { - var f = num.isBetween; - it('test', function () { +describe('number', () => { + describe('isBetween', () => { + const f = num.isBetween; + it('test', () => { test.assertTrue(f(0, 0, 0)); test.assertTrue(f(0, 0, 100)); test.assertTrue(f(50, 0, 100)); @@ -14,9 +14,9 @@ describe('number', function () { test.assertFalse(f(101, 0, 100)); }); }); - describe('isEven', function () { - var f = num.isEven; - it('test', function () { + describe('isEven', () => { + const f = num.isEven; + it('test', () => { test.assertTrue(f(0)); test.assertTrue(f(2)); test.assertTrue(f(4)); @@ -31,9 +31,9 @@ describe('number', function () { test.assertFalse(f(2.2)); }); }); - describe('isFloat', function () { - var f = num.isFloat; - it('test', function () { + describe('isFloat', () => { + const f = num.isFloat; + it('test', () => { test.assertTrue(f(-0.2)); test.assertTrue(f(-0.1)); test.assertFalse(f(0.0)); @@ -45,9 +45,9 @@ describe('number', function () { test.assertFalse(f(3.0)); }); }); - describe('isNegative', function () { - var f = num.isNegative; - it('test', function () { + describe('isNegative', () => { + const f = num.isNegative; + it('test', () => { test.assertTrue(f(-0.1)); test.assertTrue(f(-1)); test.assertFalse(f(0.0)); @@ -55,9 +55,9 @@ describe('number', function () { test.assertFalse(f(1)); }); }); - describe('isOdd', function () { - var f = num.isOdd; - it('test', function () { + describe('isOdd', () => { + const f = num.isOdd; + it('test', () => { test.assertFalse(f(0)); test.assertFalse(f(2)); test.assertFalse(f(4)); @@ -72,9 +72,9 @@ describe('number', function () { test.assertFalse(f(2.2)); }); }); - describe('isPositive', function () { - var f = num.isPositive; - it('test', function () { + describe('isPositive', () => { + const f = num.isPositive; + it('test', () => { test.assertTrue(f(0.0)); test.assertTrue(f(0.1)); test.assertTrue(f(1)); @@ -82,9 +82,9 @@ describe('number', function () { test.assertFalse(f(-1)); }); }); - describe('isPrime', function () { - var f = num.isPrime; - it('test numbers from 0 to 15', function () { + describe('isPrime', () => { + const f = num.isPrime; + it('test numbers from 0 to 15', () => { test.assertFalse(f(0)); test.assertFalse(f(1)); test.assertTrue(f(2)); @@ -102,7 +102,7 @@ describe('number', function () { test.assertFalse(f(14)); test.assertFalse(f(15)); }); - it('test numbers from 0 to 100', function () { + it('test numbers from 0 to 100', () => { const expectedPrimes = [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, @@ -115,14 +115,14 @@ describe('number', function () { } test.assertEqual(resultPrimes, expectedPrimes); }); - it('test negative numbers', function () { + it('test negative numbers', () => { test.assertFalse(f(-5)); test.assertFalse(f(-4)); test.assertFalse(f(-3)); test.assertFalse(f(-2)); test.assertFalse(f(-1)); }); - it('test decimal numbers', function () { + it('test decimal numbers', () => { test.assertFalse(f(-0.5)); test.assertFalse(f(0.5)); }); diff --git a/test/test_object.js b/test/test_object.js index 299be9a..b1219a8 100644 --- a/test/test_object.js +++ b/test/test_object.js @@ -1,30 +1,30 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; -var obj = utils.object; +import utils from '../src/utils.js'; +const test = utils.test; +const obj = utils.object; -describe('object', function () { - describe('assign', function () { - var f = obj.assign; - it('test same instance', function () { - var o1 = { a: 1, b: 2, c: 3 }; - var r = f(o1, o1); +describe('object', () => { + describe('assign', () => { + const f = obj.assign; + it('test same instance', () => { + const o1 = { a: 1, b: 2, c: 3 }; + const r = f(o1, o1); test.assertEqual(r, { a: 1, b: 2, c: 3 }); }); - it('test diff instance', function () { - var o1 = { a: 1, b: 2, c: 3 }; - var o2 = { d: 4, e: 5, f: 6 }; - var r = f(o1, o2); + it('test diff instance', () => { + const o1 = { a: 1, b: 2, c: 3 }; + const o2 = { d: 4, e: 5, f: 6 }; + const r = f(o1, o2); test.assertTrue(o1 !== o2); test.assertTrue(o1 === r); test.assertTrue(o2 !== r); test.assertEqual(r, { a: 1, b: 2, c: 3, d: 4, e: 5, f: 6 }); }); - it('test multiple instances', function () { - var o1 = { a: 1, b: 2, c: 3 }; - var o2 = { d: 4, e: 5, f: 6 }; - var o3 = { g: 7, h: 8, i: 9 }; - var o4 = { a: 0, e: 0, i: 0 }; - var r = f(o1, o2, o3, o4); + it('test multiple instances', () => { + const o1 = { a: 1, b: 2, c: 3 }; + const o2 = { d: 4, e: 5, f: 6 }; + const o3 = { g: 7, h: 8, i: 9 }; + const o4 = { a: 0, e: 0, i: 0 }; + const r = f(o1, o2, o3, o4); test.assertEqual(r, { a: 0, b: 2, @@ -37,20 +37,20 @@ describe('object', function () { i: 0, }); }); - it('test props overwrite', function () { - var o1 = { a: 1, b: 2, c: 3 }; - var o2 = { a: 4, b: 5, c: 6 }; - var r = f(o1, o2); + it('test props overwrite', () => { + const o1 = { a: 1, b: 2, c: 3 }; + const o2 = { a: 4, b: 5, c: 6 }; + const r = f(o1, o2); test.assertEqual(r['a'], 4); test.assertEqual(r['b'], 5); test.assertEqual(r['c'], 6); test.assertEqual(r, { a: 4, b: 5, c: 6 }); }); }); - describe('clean', function () { - var f = obj.clean; - it('test soft', function () { - var o1 = { + describe('clean', () => { + const f = obj.clean; + it('test soft', () => { + const o1 = { a: 1, b: undefined, c: 3, @@ -62,7 +62,7 @@ describe('object', function () { i: [null], j: { k: null }, }; - var r = f(o1); + const r = f(o1); test.assertEqual(obj.length(r), 7); test.assertEqual(r, { a: 1, @@ -74,8 +74,8 @@ describe('object', function () { j: { k: null }, }); }); - it('test hard', function () { - var o1 = { + it('test hard', () => { + const o1 = { a: 1, b: undefined, c: 3, @@ -87,58 +87,58 @@ describe('object', function () { i: [null], j: { k: null }, }; - var r = f(o1, true); + const r = f(o1, true); test.assertEqual(obj.length(r), 4); test.assertEqual(r, { a: 1, c: 3, f: 0, h: false }); }); }); - describe('clone', function () { - var f = obj.clone; - it('test new instance and key/values cloned', function () { - var o = { a: 1, b: 2, c: 3 }; - var r = f(o); + describe('clone', () => { + const f = obj.clone; + it('test new instance and key/values cloned', () => { + const o = { a: 1, b: 2, c: 3 }; + const r = f(o); test.assertFalse(r === o); test.assertEqual(r, o); }); - it('test array property cloned', function () { - var a = { a: [1, 2, 3] }; - var o = { a: a }; - var r = f(o); + it('test array property cloned', () => { + const a = { a: [1, 2, 3] }; + const o = { a: a }; + const r = f(o); test.assertFalse(r['a'] === a); test.assertEqual(r['a'], a); }); - it('test boolean property cloned', function () { - var b = true; - var o = { b: b }; - var r = f(o); + it('test boolean property cloned', () => { + const b = true; + const o = { b: b }; + const r = f(o); test.assertTrue(r['b'] === b); test.assertEqual(r['b'], b); }); - it('test date property cloned', function () { - var d = new Date(1900); - var o = { d: d }; - var r = f(o); + it('test date property cloned', () => { + const d = new Date(1900); + const o = { d: d }; + const r = f(o); test.assertFalse(r['d'] === d); test.assertEqual(r['d'], d); }); - it('test object property cloned', function () { - var a = { a: 1, b: 2, c: 3 }; - var o = { o: a }; - var r = f(o); + it('test object property cloned', () => { + const a = { a: 1, b: 2, c: 3 }; + const o = { o: a }; + const r = f(o); test.assertFalse(r['o'] === a); test.assertEqual(r['o'], a); }); - it('test number property cloned', function () { - var n = 123; - var o = { n: n }; - var r = f(o); + it('test number property cloned', () => { + const n = 123; + const o = { n: n }; + const r = f(o); test.assertTrue(r['n'] === n); test.assertEqual(r['n'], n); }); - it('test string property cloned', function () { - var s = 'ok'; - var o = { s: s }; - var r = f(o); + it('test string property cloned', () => { + const s = 'ok'; + const o = { s: s }; + const r = f(o); test.assertTrue(r['s'] === s); test.assertEqual(r['s'], s); }); @@ -163,9 +163,9 @@ describe('object', function () { // test.assertTrue(true); // }); // }); - describe('equals', function () { - var f = obj.equals; - var a = { + describe('equals', () => { + const f = obj.equals; + const a = { foods: { fruits: ['orange', 'lemon'], }, @@ -181,7 +181,7 @@ describe('object', function () { }, bikes: ['recumbent', 'upright'], }; - var b = { + const b = { foods: { fruits: ['orange', 'lemon'], }, @@ -197,7 +197,7 @@ describe('object', function () { }, bikes: ['recumbent', 'upright'], }; - var c = { + const c = { foods: { fruits: ['orange', 'lemon'], }, @@ -213,56 +213,56 @@ describe('object', function () { }, bikes: ['recumbent', 'upright'], }; - it('test simple', function () { + it('test simple', () => { test.assertTrue(f(a, a)); test.assertTrue(f(a, b)); test.assertFalse(f(a, c)); test.assertFalse(f(b, c)); }); - it('test objects containing numbers', function () { - var a = { x: 0.0, y: 0.0 }; - var b = { x: 0.0, y: 0.0000000001 }; - var c = { x: 0.0, y: 0.0001 }; + it('test objects containing numbers', () => { + const a = { x: 0.0, y: 0.0 }; + const b = { x: 0.0, y: 0.0000000001 }; + const c = { x: 0.0, y: 0.0001 }; test.assertTrue(f(a, b)); test.assertFalse(f(a, c)); }); - it('test objects containing different keys', function () { - var a = { x: 0.0, y: 0.0 }; - var b = { x: 0.0, y: 0.0, z: 0.0 }; - var c = { x: 0.0 }; + it('test objects containing different keys', () => { + const a = { x: 0.0, y: 0.0 }; + const b = { x: 0.0, y: 0.0, z: 0.0 }; + const c = { x: 0.0 }; test.assertFalse(f(a, b)); test.assertFalse(f(a, c)); test.assertFalse(f(b, c)); }); }); - describe('keys', function () { - var f = obj.keys; - it('test no keys', function () { - var o1 = {}; - var r = f(o1); + describe('keys', () => { + const f = obj.keys; + it('test no keys', () => { + const o1 = {}; + const r = f(o1); test.assertEqual(r, []); }); - it('test keys unsorted', function () { - var o1 = { a: 1, b: 2, c: 3 }; - var r = f(o1); - test.assertTrue(r.indexOf('a') !== -1); - test.assertTrue(r.indexOf('b') !== -1); - test.assertTrue(r.indexOf('c') !== -1); + it('test keys unsorted', () => { + const o1 = { a: 1, b: 2, c: 3 }; + const r = f(o1); + test.assertTrue(r.includes('a')); + test.assertTrue(r.includes('b')); + test.assertTrue(r.includes('c')); }); - it('test keys sorted', function () { - var o1 = { a: 1, b: 2, c: 3 }; - var r = f(o1, true); + it('test keys sorted', () => { + const o1 = { a: 1, b: 2, c: 3 }; + const r = f(o1, true); test.assertEqual(r, ['a', 'b', 'c']); }); }); - describe('keypath', function () { - it('test object', function () { + describe('keypath', () => { + it('test object', () => { test.assertObject(obj.keypath); }); }); - describe('keypath.get', function () { - var f = obj.keypath.get; - var o = { + describe('keypath.get', () => { + const f = obj.keypath.get; + const o = { a: 1, b: { y: 'ok', @@ -275,137 +275,137 @@ describe('object', function () { }, }, }; - var r; - it('test on 1 non-existing key', function () { + let r; + it('test on 1 non-existing key', () => { r = f(o, 'z'); test.assertEqual(r, undefined); }); - it('test on 1 non-existing key default value', function () { + it('test on 1 non-existing key default value', () => { r = f(o, 'z', 0); test.assertEqual(r, 0); }); - it('test on 1 existing key', function () { + it('test on 1 existing key', () => { r = f(o, 'a'); test.assertEqual(r, 1); }); - it('test on 2 non-existing keys', function () { + it('test on 2 non-existing keys', () => { r = f(o, 'a.x'); test.assertEqual(r, undefined); }); - it('test on 2 non-existing keys default value', function () { + it('test on 2 non-existing keys default value', () => { r = f(o, 'a.x', 2); test.assertEqual(r, 2); }); - it('test on 2 existing keys', function () { + it('test on 2 existing keys', () => { r = f(o, 'b.y'); test.assertEqual(r, 'ok'); }); - it('test on 3 non-existing keys', function () { + it('test on 3 non-existing keys', () => { r = f(o, 'x.y.z'); test.assertEqual(r, undefined); }); - it('test on 3 non-existing keys default value', function () { + it('test on 3 non-existing keys default value', () => { r = f(o, 'x.y.z', 1000); test.assertEqual(r, 1000); }); - it('test on 3 existing keys', function () { + it('test on 3 existing keys', () => { r = f(o, 'e.f.g'); test.assertEqual(r, 'ok'); }); }); - describe('keypath.set', function () { - var f = obj.keypath.set; - var o = { + describe('keypath.set', () => { + const f = obj.keypath.set; + const o = { a: {}, b: {}, c: {}, }; - it('test on 1 non-existing key', function () { + it('test on 1 non-existing key', () => { f(o, 'd', 'ok 1'); test.assertEqual(o['d'], 'ok 1'); }); - it('test on 1 existing key', function () { + it('test on 1 existing key', () => { f(o, 'd', 'ok 2'); test.assertEqual(o['d'], 'ok 2'); }); - it('test on 2 non-existing keys', function () { + it('test on 2 non-existing keys', () => { f(o, 'e.f', 'ok 1'); test.assertEqual(o['e']['f'], 'ok 1'); }); - it('test on 2 existing keys', function () { + it('test on 2 existing keys', () => { f(o, 'e.f', 'ok 2'); test.assertEqual(o['e']['f'], 'ok 2'); }); - it('test on 3 non-existing keys', function () { + it('test on 3 non-existing keys', () => { f(o, 'e.f.g', 'ok 1'); test.assertEqual(o['e']['f']['g'], 'ok 1'); }); - it('test on 3 existing keys', function () { + it('test on 3 existing keys', () => { f(o, 'e.f.g', 'ok 2'); test.assertEqual(o['e']['f']['g'], 'ok 2'); }); - it('test prototype pollution', function () { + it('test prototype pollution', () => { f(o, '__proto__.polluted', true); test.assertUndefined(o['polluted']); test.assertUndefined({}.polluted); }); }); - describe('length', function () { - var f = obj.length; - it('test empty object', function () { - var o1 = {}; - var r = f(o1); + describe('length', () => { + const f = obj.length; + it('test empty object', () => { + const o1 = {}; + const r = f(o1); test.assertEqual(r, 0); }); - it('test simple object', function () { - var o1 = { a: 1, b: 2, c: 3 }; - var r = f(o1); + it('test simple object', () => { + const o1 = { a: 1, b: 2, c: 3 }; + const r = f(o1); test.assertEqual(r, 3); }); }); - describe('map', function () { - var f = obj.map; - it('test all items', function () { - var o1 = { a: 1, b: 2, c: 3 }; - var keys = obj.keys(o1); - var values = obj.values(o1); - var r = f(o1, function (val, key, item) { + describe('map', () => { + const f = obj.map; + it('test all items', () => { + const o1 = { a: 1, b: 2, c: 3 }; + const keys = obj.keys(o1); + const values = obj.values(o1); + const r = f(o1, (val, key, item) => { test.assertTrue(item === o1); - test.assertTrue(keys.indexOf(key) !== -1); - test.assertTrue(values.indexOf(val) !== -1); + test.assertTrue(keys.includes(key)); + test.assertTrue(values.includes(val)); }); }); - it('test result', function () { - var o1 = { a: 1, b: 2, c: 3 }; - var r = f(o1, function (val, key, item) { + it('test result', () => { + const o1 = { a: 1, b: 2, c: 3 }; + const r = f(o1, (val, key, item) => { return val * 2; }); test.assertEqual(r, { a: 2, b: 4, c: 6 }); }); }); - describe('merge', function () { - var f = obj.merge; - it('test same instance', function () { - var o1 = { a: 1, b: 2, c: 3 }; - var r = f(o1, o1); + describe('merge', () => { + const f = obj.merge; + it('test same instance', () => { + const o1 = { a: 1, b: 2, c: 3 }; + const r = f(o1, o1); test.assertFalse(o1 === r); test.assertEqual(r, { a: 1, b: 2, c: 3 }); }); - it('test diff instance', function () { - var o1 = { a: 1, b: 2, c: 3 }; - var o2 = { d: 4, e: 5, f: 6 }; - var r = f(o1, o2); + it('test diff instance', () => { + const o1 = { a: 1, b: 2, c: 3 }; + const o2 = { d: 4, e: 5, f: 6 }; + const r = f(o1, o2); test.assertTrue(o1 !== o2); test.assertTrue(o1 !== r); test.assertTrue(o2 !== r); test.assertEqual(r, { a: 1, b: 2, c: 3, d: 4, e: 5, f: 6 }); }); - it('test multiple instances', function () { - var o1 = { a: 1, b: 2, c: 3 }; - var o2 = { d: 4, e: 5, f: 6 }; - var o3 = { g: 7, h: 8, i: 9 }; - var o4 = { a: 0, e: 0, i: 0 }; - var r = f(o1, o2, o3, o4); + it('test multiple instances', () => { + const o1 = { a: 1, b: 2, c: 3 }; + const o2 = { d: 4, e: 5, f: 6 }; + const o3 = { g: 7, h: 8, i: 9 }; + const o4 = { a: 0, e: 0, i: 0 }; + const r = f(o1, o2, o3, o4); test.assertEqual(r, { a: 0, b: 2, @@ -418,47 +418,47 @@ describe('object', function () { i: 0, }); }); - it('test props overwrite', function () { - var o1 = { a: 1, b: 2, c: 3 }; - var o2 = { a: 4, b: 5, c: 6 }; - var r = f(o1, o2); + it('test props overwrite', () => { + const o1 = { a: 1, b: 2, c: 3 }; + const o2 = { a: 4, b: 5, c: 6 }; + const r = f(o1, o2); test.assertEqual(r, { a: 4, b: 5, c: 6 }); }); }); - describe('search', function () { - var f = obj.search; - it('test empty filter', function () { - var objs = [ + describe('search', () => { + const f = obj.search; + it('test empty filter', () => { + const objs = [ { a: 1, b: 2, c: null, d: 'ok', e: false, f: true }, { a: 1, b: 2, c: null, d: 'ok', e: false, f: true }, { a: 1, b: 2, c: null, d: 'ok', e: false, f: true }, { a: 1, b: 2, c: null, d: 'ok', e: false, f: true }, ]; - var r = f(objs, {}); + const r = f(objs, {}); test.assertEqual(r, objs); }); - it('test simple filter result found', function () { - var objs = [ + it('test simple filter result found', () => { + const objs = [ { a: 1, b: 2, c: null, d: 'ok', e: false, f: true }, { a: 2, b: 2, c: null, d: 'ok', e: false, f: true }, { a: 3, b: 2, c: null, d: 'ok', e: false, f: true }, { a: 4, b: 2, c: null, d: 'ok', e: false, f: true }, ]; - var r = f(objs, { a: 3 }); + const r = f(objs, { a: 3 }); test.assertEqual(r, [objs[2]]); }); - it('test simple filter result not found', function () { - var objs = [ + it('test simple filter result not found', () => { + const objs = [ { a: 1, b: 2, c: null, d: 'ok', e: false, f: true }, { a: 2, b: 2, c: null, d: 'ok', e: false, f: true }, { a: 3, b: 2, c: null, d: 'ok', e: false, f: true }, { a: 4, b: 2, c: null, d: 'ok', e: false, f: true }, ]; - var r = f(objs, { a: 5 }); + const r = f(objs, { a: 5 }); test.assertEqual(r, []); }); - it('test simple filter multiple result found', function () { - var objs = [ + it('test simple filter multiple result found', () => { + const objs = [ { a: 1, b: 2, c: null, d: 'ok', e: false, f: true }, { a: 2, b: 2, c: null, d: 'ok', e: false, f: true }, { a: 1, b: 2, c: null, d: 'ok', e: false, f: false }, @@ -466,27 +466,27 @@ describe('object', function () { { a: 1, b: 2, c: null, d: 'ok', e: false, f: true }, { a: 2, b: 2, c: null, d: 'ok', e: false, f: true }, ]; - var r = f(objs, { a: 1, f: true }); + const r = f(objs, { a: 1, f: true }); test.assertEqual(r, [objs[0], objs[4]]); }); }); - describe('values', function () { - var f = obj.values; - it('test no values', function () { - var o1 = {}; - var r = f(o1); + describe('values', () => { + const f = obj.values; + it('test no values', () => { + const o1 = {}; + const r = f(o1); test.assertEqual(r, []); }); - it('test values unsorted', function () { - var o1 = { a: 1, b: 2, c: 3 }; - var r = f(o1); - test.assertTrue(r.indexOf(1) !== -1); - test.assertTrue(r.indexOf(2) !== -1); - test.assertTrue(r.indexOf(3) !== -1); + it('test values unsorted', () => { + const o1 = { a: 1, b: 2, c: 3 }; + const r = f(o1); + test.assertTrue(r.includes(1)); + test.assertTrue(r.includes(2)); + test.assertTrue(r.includes(3)); }); - it('test values sorted', function () { - var o1 = { a: 1, b: 2, c: 3 }; - var r = f(o1, true); + it('test values sorted', () => { + const o1 = { a: 1, b: 2, c: 3 }; + const r = f(o1, true); test.assertEqual(r, [1, 2, 3]); }); }); diff --git a/test/test_point.js b/test/test_point.js index 35c0e50..6b6b387 100644 --- a/test/test_point.js +++ b/test/test_point.js @@ -1,99 +1,99 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; -var point = utils.geom.point; +import utils from '../src/utils.js'; +const test = utils.test; +const point = utils.geom.point; -describe('point', function () { - var a, b, r; - describe('add', function () { - var f = point.add; - it('test positive coords', function () { +describe('point', () => { + let a, b, r; + describe('add', () => { + const f = point.add; + it('test positive coords', () => { a = { x: 0, y: 10 }; b = { x: 50, y: 100 }; r = f(a, b); test.assertEqual(r, { x: 50, y: 110 }); }); - it('test negative coords', function () { + it('test negative coords', () => { a = { x: -10, y: -20 }; b = { x: -30, y: -40 }; r = f(a, b); test.assertEqual(r, { x: -40, y: -60 }); }); }); - describe('angle', function () { - var f = point.angle; - it('test angle 0°', function () { + describe('angle', () => { + const f = point.angle; + it('test angle 0°', () => { a = { x: 10, y: 30 }; b = { x: 100, y: 30 }; r = f(a, b); test.assertNumberAlmostEqual(r, 0); }); - it('test angle 45°', function () { + it('test angle 45°', () => { a = { x: 10, y: 10 }; b = { x: 100, y: 100 }; r = f(a, b); test.assertNumberAlmostEqual(r, 45); }); - it('test angle 90°', function () { + it('test angle 90°', () => { a = { x: 0, y: 10 }; b = { x: 0, y: 20 }; r = f(a, b); test.assertNumberAlmostEqual(r, 90); }); - it('test angle 180°', function () { + it('test angle 180°', () => { a = { x: 0, y: 100 }; b = { x: -10, y: 100 }; r = f(a, b); test.assertNumberAlmostEqual(r, 180); }); - it('test angle 225°', function () { + it('test angle 225°', () => { a = { x: 0, y: 0 }; b = { x: -10, y: -10 }; r = f(a, b); test.assertNumberAlmostEqual(r, 225); }); }); - describe('cross', function () { - var f = point.cross; - it('test simple', function () { + describe('cross', () => { + const f = point.cross; + it('test simple', () => { test.assertEqual(f({ x: 1, y: 2 }, { x: 3, y: 4 }), -2); }); }); - describe('distance', function () { - var f = point.distance; - it('test no distance', function () { + describe('distance', () => { + const f = point.distance; + it('test no distance', () => { a = { x: 10, y: 100 }; b = { x: 10, y: 100 }; r = f(a, b); test.assertNumberAlmostEqual(r, 0); }); - it('test x axis', function () { + it('test x axis', () => { a = { x: 10, y: 30 }; b = { x: 100, y: 30 }; r = f(a, b); test.assertNumberAlmostEqual(r, 90); }); - it('test y axis', function () { + it('test y axis', () => { a = { x: 10, y: 30 }; b = { x: 10, y: -30 }; r = f(a, b); test.assertNumberAlmostEqual(r, 60); }); - it('test x/y axis', function () { + it('test x/y axis', () => { a = { x: 0, y: 0 }; b = { x: 100, y: 100 }; r = f(a, b); test.assertNumberAlmostEqual(r, 141.4213562373095); }); }); - describe('dot', function () { - var f = point.dot; - it('test simple', function () { + describe('dot', () => { + const f = point.dot; + it('test simple', () => { test.assertEqual(f({ x: 1, y: 2 }, { x: 3, y: 4 }), 11); }); }); - describe('equals', function () { - var f = point.equals; - it('test simple', function () { + describe('equals', () => { + const f = point.equals; + it('test simple', () => { test.assertTrue(f({ x: 0, y: 0 }, { x: 0, y: 0 })); test.assertTrue(f({ x: 0.5, y: 0.5 }, { x: 0.5, y: 0.5 })); test.assertTrue( @@ -112,68 +112,68 @@ describe('point', function () { test.assertTrue(f({ x: 0.505, y: 0.505 }, { x: 0.5, y: 0.5 }, 0.01)); }); }); - describe('interpolate', function () { - var f = point.interpolate; - it('test simple', function () { + describe('interpolate', () => { + const f = point.interpolate; + it('test simple', () => { r = f({ x: 0, y: 100 }, { x: 50, y: 1000 }, 0.5); test.assertEqual(r, { x: 25, y: 550 }); }); }); - describe('length', function () { - var f = point.length; - it('test simple', function () { + describe('length', () => { + const f = point.length; + it('test simple', () => { r = f({ x: 200, y: 100 }); test.assertEqual(r, 223.60679774997897); }); }); - describe('magnitude', function () { - var f = point.magnitude; - it('test simple', function () { + describe('magnitude', () => { + const f = point.magnitude; + it('test simple', () => { r = f({ x: 200, y: 100 }); test.assertEqual(r, 223.60679774997897); }); }); - describe('project', function () { - var f = point.project; - it('test project 0°', function () { + describe('project', () => { + const f = point.project; + it('test project 0°', () => { a = { x: 0, y: 0 }; r = f(a, 100, 0); test.assertEqual(r, { x: 100, y: 0 }); }); - it('test project 45°', function () { + it('test project 45°', () => { a = { x: 0, y: 0 }; r = f(a, 100, 45); test.assertEqual(r, { x: 70.71067811865476, y: 70.71067811865476 }); }); - it('test project 90°', function () { + it('test project 90°', () => { a = { x: 0, y: 0 }; r = f(a, 100, 90); test.assertEqual(r, { x: 0, y: 100 }); }); - it('test project 180°', function () { + it('test project 180°', () => { a = { x: 0, y: 0 }; r = f(a, 100, 180); test.assertEqual(r, { x: -100, y: 0 }); }); - it('test project 225°', function () { + it('test project 225°', () => { a = { x: 0, y: 0 }; r = f(a, 100, 225); test.assertEqual(r, { x: -70.71067811865476, y: -70.71067811865476 }); }); - it('test project 360°', function () { + it('test project 360°', () => { a = { x: 0, y: 0 }; r = f(a, 100, 360); test.assertEqual(r, { x: 100, y: 0 }); }); - it('test project 0°', function () { + it('test project 0°', () => { a = { x: 0, y: 0 }; r = f(a, 100, 720); test.assertEqual(r, { x: 100, y: 0 }); }); }); - describe('rect', function () { - var f = point.rect; - it('test simple', function () { + describe('rect', () => { + const f = point.rect; + it('test simple', () => { r = f([ { x: 40, y: -40 }, { x: 100, y: 0 }, @@ -194,80 +194,80 @@ describe('point', function () { }); }); }); - describe('rotate', function () { - var f = point.rotate; - it('test rotate 0°', function () { + describe('rotate', () => { + const f = point.rotate; + it('test rotate 0°', () => { a = { x: 100, y: 100 }; r = f(a, 0); test.assertEqual(r, { x: 100, y: 100 }); }); - it('test rotate 45°', function () { + it('test rotate 45°', () => { a = { x: 100, y: 100 }; r = f(a, 45); test.assertEqual(r, { x: 0, y: 141.4213562373095 }); }); - it('test rotate 90°', function () { + it('test rotate 90°', () => { a = { x: 100, y: 0 }; r = f(a, 90); test.assertEqual(r, { x: 0, y: 100 }); }); - it('test rotate 180°', function () { + it('test rotate 180°', () => { a = { x: 100, y: 100 }; r = f(a, 180); test.assertEqual(r, { x: -100, y: -100 }); }); - it('test rotate 225°', function () { + it('test rotate 225°', () => { a = { x: 100, y: 0 }; r = f(a, 225); test.assertEqual(r, { x: -70.71067811865477, y: -70.71067811865477 }); }); - it('test rotate 360°', function () { + it('test rotate 360°', () => { a = { x: 50, y: 50 }; r = f(a, 360); test.assertEqual(r, { x: 50, y: 50 }); }); - it('test rotate 720°', function () { + it('test rotate 720°', () => { a = { x: 50, y: 50 }; r = f(a, 720); test.assertEqual(r, { x: 50, y: 50 }); }); }); - describe('scale', function () { - var f = point.scale; - it('test double size', function () { + describe('scale', () => { + const f = point.scale; + it('test double size', () => { a = { x: 10, y: 20 }; r = f(a, 2.0); test.assertEqual(r, { x: 20, y: 40 }); }); - it('test half size', function () { + it('test half size', () => { a = { x: 10, y: 20 }; r = f(a, 0.5); test.assertEqual(r, { x: 5, y: 10 }); }); }); - describe('subtract', function () { - var f = point.subtract; - it('test positive coords', function () { + describe('subtract', () => { + const f = point.subtract; + it('test positive coords', () => { a = { x: 0, y: 10 }; b = { x: 50, y: 100 }; r = f(a, b); test.assertEqual(r, { x: -50, y: -90 }); }); - it('test negative coords', function () { + it('test negative coords', () => { a = { x: -10, y: -20 }; b = { x: -30, y: -40 }; r = f(a, b); test.assertEqual(r, { x: 20, y: 20 }); }); }); - describe('translate', function () { - var f = point.translate; - it('test positive coords', function () { + describe('translate', () => { + const f = point.translate; + it('test positive coords', () => { a = { x: 0, y: 10 }; r = f(a, 100, 200); test.assertEqual(r, { x: 100, y: 210 }); }); - it('test negative coords', function () { + it('test negative coords', () => { a = { x: -10, y: -20 }; r = f(a, -30, 40); test.assertEqual(r, { x: -40, y: 20 }); diff --git a/test/test_random.js b/test/test_random.js index bd36660..643707a 100644 --- a/test/test_random.js +++ b/test/test_random.js @@ -1,98 +1,98 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; -var random = utils.random; +import utils from '../src/utils.js'; +const test = utils.test; +const random = utils.random; -describe('random', function () { - var i, - j = 10, - r; - describe('argument', function () { - it('test multiple expected results', function () { +describe('random', () => { + let i; + const j = 10; + let r; + describe('argument', () => { + it('test multiple expected results', () => { for (i = 0; i < j; i++) { r = random.argument(1, 2, 3, 4); - test.assertTrue([1, 2, 3, 4].indexOf(r) !== -1); + test.assertTrue([1, 2, 3, 4].includes(r)); } }); }); - describe('bit', function () { - it('test multiple expected results', function () { + describe('bit', () => { + it('test multiple expected results', () => { for (i = 0; i < j; i++) { r = random.bit(); test.assertTrue(r === 0 || r === 1); } }); }); - describe('boolean', function () { - it('test multiple expected results', function () { + describe('boolean', () => { + it('test multiple expected results', () => { for (i = 0; i < j; i++) { r = random.boolean(); test.assertTrue(r === true || r === false); } }); }); - describe('color', function () { - it('test multiple expected results', function () { + describe('color', () => { + it('test multiple expected results', () => { for (i = 0; i < j; i++) { r = random.color(); test.assertTrue(r >= 0x000000 && r <= 0xffffff); } }); }); - describe('element', function () { - it('test multiple expected results', function () { + describe('element', () => { + it('test multiple expected results', () => { for (i = 0; i < j; i++) { r = random.element([1, 2, 3, 4]); - test.assertTrue([1, 2, 3, 4].indexOf(r) !== -1); + test.assertTrue([1, 2, 3, 4].includes(r)); } }); }); - describe('float', function () { - it('test multiple expected results', function () { + describe('float', () => { + it('test multiple expected results', () => { for (i = 0; i < j; i++) { r = random.float(10, 20); test.assertTrue(r >= 10 && r <= 20); } }); }); - describe('index', function () { - it('test multiple expected results', function () { + describe('index', () => { + it('test multiple expected results', () => { for (i = 0; i < j; i++) { r = random.index([1, 2, 3, 4]); test.assertTrue(r >= 0 && r <= 3); } }); }); - describe('integer', function () { - it('test multiple expected results', function () { + describe('integer', () => { + it('test multiple expected results', () => { for (i = 0; i < j; i++) { r = random.integer(10, 20); test.assertTrue(r >= 10 && r <= 20 && !utils.number.isFloat(r)); } }); }); - describe('map', function () { - it('test multiple expected results', function () { - r = random.map(function (n) { + describe('map', () => { + it('test multiple expected results', () => { + r = random.map((n) => { return random.boolean(); }, j); test.assertTrue(utils.type.isArray(r)); test.assertTrue(r.length === j); - r.forEach(function (el) { + r.forEach((el) => { test.assertTrue(el === true || el === false); }); }); }); - describe('sign', function () { - it('test multiple expected results', function () { + describe('sign', () => { + it('test multiple expected results', () => { for (i = 0; i < j; i++) { r = random.sign(); test.assertTrue(r === 1 || r === -1); } }); }); - describe('string', function () { - it('test multiple expected results', function () { - var s = ''; + describe('string', () => { + it('test multiple expected results', () => { + let s = ''; for (i = 0; i < j; i++) { r = random.string(32); test.assertTrue(r.length === 32 && r !== s); diff --git a/test/test_string.js b/test/test_string.js index 1e0707a..1bcab04 100644 --- a/test/test_string.js +++ b/test/test_string.js @@ -1,110 +1,110 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; -var string = utils.string; +import utils from '../src/utils.js'; +const test = utils.test; +const string = utils.string; -describe('string', function () { - describe('contains', function () { - var f = string.contains; - var s = +describe('string', () => { + describe('contains', () => { + const f = string.contains; + const s = 'Incididunt fugiat in excepteur do anim in nostrud irure sint laboris dolore mollit in sint culpa.'; - it('test contains same case', function () { + it('test contains same case', () => { test.assertTrue(f(s, 'fugiat')); }); - it('test contains different case', function () { + it('test contains different case', () => { test.assertFalse(f(s, 'Fugiat')); }); - it('test not contains', function () { + it('test not contains', () => { test.assertFalse(f(s, 'lorem')); }); }); - describe('endsWith', function () { - var f = string.endsWith; - var s = + describe('endsWith', () => { + const f = string.endsWith; + const s = 'Incididunt fugiat in excepteur do anim in nostrud irure sint laboris dolore mollit in sint culpa.'; - it('test endsWith true', function () { + it('test endsWith true', () => { test.assertTrue(f(s, 'culpa.')); }); - it('test endsWith false', function () { + it('test endsWith false', () => { test.assertFalse(f(s, 'culpa')); }); }); - describe('icontains', function () { - var f = string.icontains; - var s = + describe('icontains', () => { + const f = string.icontains; + const s = 'Incididunt fugiat in excepteur do anim in nostrud irure sint laboris dolore mollit in sint culpa.'; - it('test contains same case', function () { + it('test contains same case', () => { test.assertTrue(f(s, 'fugiat')); }); - it('test contains different case', function () { + it('test contains different case', () => { test.assertTrue(f(s, 'Fugiat')); }); - it('test not contains', function () { + it('test not contains', () => { test.assertFalse(f(s, 'lorem')); }); }); - describe('levenshteinDistance', function () { - var f = string.levenshteinDistance; - it('test same strings', function () { + describe('levenshteinDistance', () => { + const f = string.levenshteinDistance; + it('test same strings', () => { test.assertEqual(f('torino', 'torino'), 0); }); - it('test different strings', function () { + it('test different strings', () => { test.assertEqual(f('torino', 'turin'), 2); test.assertEqual(f('turin', 'torino'), 2); test.assertEqual(f('torino', 'milano'), 4); test.assertEqual(f('torino', 'trino'), 1); }); }); - describe('levenshteinSimilarity', function () { - var f = string.levenshteinSimilarity; - it('test empty strings', function () { + describe('levenshteinSimilarity', () => { + const f = string.levenshteinSimilarity; + it('test empty strings', () => { test.assertEqual(f('', ''), 1.0); }); - it('test same strings', function () { + it('test same strings', () => { test.assertEqual(f('torino', 'torino'), 1.0); }); - it('test different strings', function () { + it('test different strings', () => { test.assertNumberAlmostEqual(f('torino', 'turin'), 0.66, 0.01); test.assertNumberAlmostEqual(f('turin', 'torino'), 0.66, 0.01); test.assertNumberAlmostEqual(f('torino', 'milano'), 0.33, 0.01); test.assertNumberAlmostEqual(f('torino', 'trino'), 0.83, 0.01); }); }); - describe('padLeft', function () { - var f = string.padLeft; - it('test padLeft str length < length', function () { + describe('padLeft', () => { + const f = string.padLeft; + it('test padLeft str length < length', () => { test.assertEqual(f('000000', 10, 'x'), 'xxxx000000'); }); - it('test padLeft str length > length', function () { + it('test padLeft str length > length', () => { test.assertEqual(f('000000', 5, 'x'), '000000'); }); }); - describe('padRight', function () { - var f = string.padRight; - it('test padRight str length < length', function () { + describe('padRight', () => { + const f = string.padRight; + it('test padRight str length < length', () => { test.assertEqual(f('000000', 10, 'x'), '000000xxxx'); }); - it('test padRight str length > length', function () { + it('test padRight str length > length', () => { test.assertEqual(f('000000', 5, 'x'), '000000'); }); }); - describe('padZeros', function () { - var f = string.padZeros; - it('test padZeros str length < length', function () { + describe('padZeros', () => { + const f = string.padZeros; + it('test padZeros str length < length', () => { test.assertEqual(f('8', 2), '08'); }); - it('test padZeros str length == length', function () { + it('test padZeros str length == length', () => { test.assertEqual(f('12', 2), '12'); }); - it('test padZeros str length > length', function () { + it('test padZeros str length > length', () => { test.assertEqual(f('120', 2), '120'); }); - it('test padZeros num length < length', function () { + it('test padZeros num length < length', () => { test.assertEqual(f(8, 2), '08'); }); - it('test padZeros num length == length', function () { + it('test padZeros num length == length', () => { test.assertEqual(f(12, 2), '12'); }); - it('test padZeros num length > length', function () { + it('test padZeros num length > length', () => { test.assertEqual(f(120, 2), '120'); }); // it('test padZeros num negative length < length', function() { @@ -117,36 +117,36 @@ describe('string', function () { // test.assertEqual(f(-12345, 5), '-12345'); // }); }); - describe('render', function () { - var f = string.render; - it('test single placeholder', function () { + describe('render', () => { + const f = string.render; + it('test single placeholder', () => { test.assertEqual(f('{{ name }}', { name: 'utils.js' }), 'utils.js'); }); - it('test single placeholder without data', function () { + it('test single placeholder without data', () => { test.assertEqual(f('{{ name }}', null), ''); }); - it('test single placeholder with missing variable', function () { + it('test single placeholder with missing variable', () => { test.assertEqual(f('{{ name }}', {}), ''); }); - it('test single placeholder without white space around delimiters', function () { + it('test single placeholder without white space around delimiters', () => { test.assertEqual(f('{{name}}', { name: 'utils.js' }), 'utils.js'); }); - it('test single placeholder with extra white space around delimiters', function () { + it('test single placeholder with extra white space around delimiters', () => { test.assertEqual(f('{{ name }}', { name: 'utils.js' }), 'utils.js'); }); - it('test single placeholder with custom delimiters', function () { + it('test single placeholder with custom delimiters', () => { test.assertEqual( f('__name__', { name: 'utils.js' }, '__', '__'), 'utils.js' ); }); - it('test multiple occurrencies of the same placeholder', function () { + it('test multiple occurrencies of the same placeholder', () => { test.assertEqual( f('{{ name }} {{ name }}', { name: 'utils.js' }), 'utils.js utils.js' ); }); - it('test multiple mixed placeholders', function () { + it('test multiple mixed placeholders', () => { test.assertEqual( f('npm install {{ user }}/{{ packageName }}@{{ version }} --save-dev', { user: '@fabiocaccamo', @@ -156,7 +156,7 @@ describe('string', function () { 'npm install @fabiocaccamo/utils.js@latest --save-dev' ); }); - it('test multiple mixed placeholders with custom delimiters', function () { + it('test multiple mixed placeholders with custom delimiters', () => { test.assertEqual( f( 'npm install {user}/{packageName}@{version} --save-dev', @@ -172,23 +172,23 @@ describe('string', function () { ); }); }); - describe('replace', function () { - var f = string.replace; - var s = + describe('replace', () => { + const f = string.replace; + const s = 'Hello world, hello world, hElLo wOrLd, hello|world?, hello mountains, hello world'; - it('test single occurrence case-sensitive', function () { + it('test single occurrence case-sensitive', () => { test.assertEqual( f(s, 'Hello world', 'X'), 'X, hello world, hElLo wOrLd, hello|world?, hello mountains, hello world' ); }); - it('test multiple occurrences case-sensitive', function () { + it('test multiple occurrences case-sensitive', () => { test.assertEqual( f(s, 'hello world', 'X'), 'Hello world, X, hElLo wOrLd, hello|world?, hello mountains, X' ); }); - it('test multiple occurrences not case-sensitive', function () { + it('test multiple occurrences not case-sensitive', () => { test.assertEqual( f(s, 'hello world', 'X', false), 'X, X, X, hello|world?, hello mountains, X' @@ -199,16 +199,16 @@ describe('string', function () { ); }); }); - describe('reverse', function () { - var f = string.reverse; - it('test simple', function () { + describe('reverse', () => { + const f = string.reverse; + it('test simple', () => { test.assertEqual(f('Lorem ipsum'), 'muspi meroL'); }); }); - describe('rotate', function () { - var f = string.rotate; - var s = 'loading...'; - it('test rotate negative', function () { + describe('rotate', () => { + const f = string.rotate; + const s = 'loading...'; + it('test rotate negative', () => { test.assertEqual(f(s, -0), 'loading...'); test.assertEqual(f(s, -1), '.loading..'); test.assertEqual(f(s, -2), '..loading.'); @@ -226,7 +226,7 @@ describe('string', function () { test.assertEqual(f(s, -14), 'g...loadin'); test.assertEqual(f(s, -15), 'ng...loadi'); }); - it('test rotate positive', function () { + it('test rotate positive', () => { test.assertEqual(f(s, 0), 'loading...'); test.assertEqual(f(s, 1), 'oading...l'); test.assertEqual(f(s, 2), 'ading...lo'); @@ -245,124 +245,124 @@ describe('string', function () { test.assertEqual(f(s, 15), 'ng...loadi'); }); }); - describe('slugify', function () { - var f = string.slugify; - it('test simple', function () { + describe('slugify', () => { + const f = string.slugify; + it('test simple', () => { test.assertEqual(f('lorem ipsum'), 'lorem-ipsum'); }); - it('test uppercase', function () { + it('test uppercase', () => { test.assertEqual(f('LOREM IPSUM'), 'lorem-ipsum'); }); - it('test extra white', function () { + it('test extra white', () => { test.assertEqual(f(' lorem ipsum '), 'lorem-ipsum'); }); - it('test extra dashes', function () { + it('test extra dashes', () => { test.assertEqual(f('-lorem--ipsum-'), 'lorem-ipsum'); }); - it('test special chars', function () { + it('test special chars', () => { test.assertEqual(f('àèéìòùç'), 'aeeiouc'); }); }); - describe('startsWith', function () { - var f = string.startsWith; - var s = + describe('startsWith', () => { + const f = string.startsWith; + const s = 'Incididunt fugiat in excepteur do anim in nostrud irure sint laboris dolore mollit in sint culpa.'; - it('test startsWith true', function () { + it('test startsWith true', () => { test.assertTrue(f(s, 'Incididunt ')); }); - it('test startsWith false', function () { + it('test startsWith false', () => { test.assertFalse(f(s, 'Lorem ')); }); }); - describe('toConstantCase', function () { - var f = string.toConstantCase; - it('test simple', function () { + describe('toConstantCase', () => { + const f = string.toConstantCase; + it('test simple', () => { test.assertEqual(f('Lorem ipsum'), 'LOREM_IPSUM'); test.assertEqual(f(' Lorem ipsum '), '__LOREM_IPSUM__'); }); }); - describe('toRandomCase', function () { - var f = string.toRandomCase; - it('test simple', function () { - var s = 'lorem ipsum dolor sit amet'; - for (var i = 0; i < 10; i++) { - r = f(s); + describe('toRandomCase', () => { + const f = string.toRandomCase; + it('test simple', () => { + let s = 'lorem ipsum dolor sit amet'; + for (let i = 0; i < 10; i++) { + let r = f(s); test.assertTrue(r.length === s.length && r !== s); s = r; // console.log(s); } }); }); - describe('toTitleCase', function () { - var f = string.toTitleCase; - var s = + describe('toTitleCase', () => { + const f = string.toTitleCase; + const s = 'lorem ipsum tempor. Ex adipisicing aliqua consectetur a Duis voluptate quis sunt.'; - it('test simple', function () { + it('test simple', () => { test.assertEqual( f(s), 'Lorem Ipsum Tempor. Ex Adipisicing Aliqua Consectetur A Duis Voluptate Quis Sunt.' ); }); - it('test with accented letters', function () { + it('test with accented letters', () => { test.assertEqual(f('bàcédòçu édìfògù'), 'Bàcédòçu Édìfògù'); }); - it('test with hyphen', function () { + it('test with hyphen', () => { test.assertEqual(f('bàcédòçu-édìfògù'), 'Bàcédòçu-Édìfògù'); }); - it('test with apostroph', function () { + it('test with apostroph', () => { test.assertEqual(f("bàcédòç'uédìfògù"), "Bàcédòç'Uédìfògù"); }); }); - describe('toUpperCaseFirst', function () { - var f = string.toUpperCaseFirst; - var s = + describe('toUpperCaseFirst', () => { + const f = string.toUpperCaseFirst; + const s = 'lorem ipsum tempor. Ex adipisicing aliqua consectetur. Duis voluptate quis sunt. Aute sint laborum tempor.'; - it('test uppercase first', function () { + it('test uppercase first', () => { test.assertEqual( f(s), 'Lorem ipsum tempor. Ex adipisicing aliqua consectetur. Duis voluptate quis sunt. Aute sint laborum tempor.' ); }); - it('test uppercase first empty string', function () { + it('test uppercase first empty string', () => { test.assertEqual(f(''), ''); }); - it('test uppercase first and lowercase rest', function () { + it('test uppercase first and lowercase rest', () => { test.assertEqual( f(s, true), 'Lorem ipsum tempor. ex adipisicing aliqua consectetur. duis voluptate quis sunt. aute sint laborum tempor.' ); }); }); - describe('trim', function () { - var f = string.trim; - it('test simple white space', function () { - var s = ' lorem ipsum '; + describe('trim', () => { + const f = string.trim; + it('test simple white space', () => { + const s = ' lorem ipsum '; test.assertEqual(f(s), 'lorem ipsum'); }); - it('test special white space chars', function () { - var s = '\n \r \t lorem ipsum \n \r \t'; + it('test special white space chars', () => { + const s = '\n \r \t lorem ipsum \n \r \t'; test.assertEqual(f(s), 'lorem ipsum'); }); }); - describe('trimLeft', function () { - var f = string.trimLeft; - it('test simple white space', function () { - var s = ' lorem ipsum '; + describe('trimLeft', () => { + const f = string.trimLeft; + it('test simple white space', () => { + const s = ' lorem ipsum '; test.assertEqual(f(s), 'lorem ipsum '); }); - it('test special white space chars', function () { - var s = '\n \r \t lorem ipsum'; + it('test special white space chars', () => { + const s = '\n \r \t lorem ipsum'; test.assertEqual(f(s), 'lorem ipsum'); }); }); - describe('trimRight', function () { - var f = string.trimRight; - it('test simple white space', function () { - var s = ' lorem ipsum '; + describe('trimRight', () => { + const f = string.trimRight; + it('test simple white space', () => { + const s = ' lorem ipsum '; test.assertEqual(f(s), ' lorem ipsum'); }); - it('test special white space chars', function () { - var s = 'lorem ipsum \n \r \t'; + it('test special white space chars', () => { + const s = 'lorem ipsum \n \r \t'; test.assertEqual(f(s), 'lorem ipsum'); }); }); diff --git a/test/test_test.js b/test/test_test.js index 2f6ab49..b65d70c 100644 --- a/test/test_test.js +++ b/test/test_test.js @@ -1,67 +1,67 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; +import utils from '../src/utils.js'; +const test = utils.test; -describe('test', function () { - describe('assertArray', function () { - it('test assertArray', function () { +describe('test', () => { + describe('assertArray', () => { + it('test assertArray', () => { test.assertArray([1, 2, 3, 4, 5]); }); - it('test assertArray and length', function () { + it('test assertArray and length', () => { test.assertArray([1, 2, 3, 4, 5], 5); }); - it('test assertArray throws', function () { - test.assertThrows(function () { + it('test assertArray throws', () => { + test.assertThrows(() => { test.assertArray(false); }); }); - it('test assertArray and length throws', function () { - test.assertThrows(function () { + it('test assertArray and length throws', () => { + test.assertThrows(() => { test.assertArray([1, 2, 3, 4, 5], 4); }); }); }); - describe('assertBase64', function () { - it('test assertBase64', function () { + describe('assertBase64', () => { + it('test assertBase64', () => { test.assertBase64('QGZhYmlvY2FjY2Ftby91dGlscy5qcw=='); }); - it('test assertBase64 throws', function () { - test.assertThrows(function () { + it('test assertBase64 throws', () => { + test.assertThrows(() => { test.assertBase64(''); }); }); }); - describe('assertBoolean', function () { - it('test assertBoolean true', function () { + describe('assertBoolean', () => { + it('test assertBoolean true', () => { test.assertBoolean(true); }); - it('test assertBoolean false', function () { + it('test assertBoolean false', () => { test.assertBoolean(false); }); - it('test assertBoolean throws', function () { - test.assertThrows(function () { + it('test assertBoolean throws', () => { + test.assertThrows(() => { test.assertBoolean(null); }); }); }); - describe('assertDate', function () { - it('test assertDate', function () { + describe('assertDate', () => { + it('test assertDate', () => { test.assertDate(new Date()); }); - it('test assertDate throws', function () { - test.assertThrows(function () { + it('test assertDate throws', () => { + test.assertThrows(() => { test.assertDate(true); }); }); }); - describe('assertEqual', function () { - it('test assertEqual', function () { + describe('assertEqual', () => { + it('test assertEqual', () => { test.assertEqual( { a: 1, b: 'ok', c: true, d: [] }, { a: 1, b: 'ok', c: true, d: [] } ); }); - it('test assertEqual throws', function () { - test.assertThrows(function () { + it('test assertEqual throws', () => { + test.assertThrows(() => { test.assertEqual( { a: 1, b: 'ok', c: true, d: [] }, { a: 1, b: 'ok', c: true, d: [null] } @@ -69,124 +69,124 @@ describe('test', function () { }); }); }); - describe('assertError', function () { - it('test assertError', function () { + describe('assertError', () => { + it('test assertError', () => { test.assertError(new Error()); }); - it('test assertError throws', function () { - test.assertThrows(function () { + it('test assertError throws', () => { + test.assertThrows(() => { test.assertError(true); }); }); }); - describe('assertFalse', function () { - it('test assertFalse', function () { + describe('assertFalse', () => { + it('test assertFalse', () => { test.assertFalse(false); }); - it('test assertFalse throws', function () { - test.assertThrows(function () { + it('test assertFalse throws', () => { + test.assertThrows(() => { test.assertFalse(null); }); - test.assertThrows(function () { + test.assertThrows(() => { test.assertFalse(true); }); }); }); - describe('assertFunction', function () { - it('test assertFunction', function () { - test.assertFunction(function () {}); + describe('assertFunction', () => { + it('test assertFunction', () => { + test.assertFunction(() => {}); }); - it('test assertFunction throws', function () { - test.assertThrows(function () { + it('test assertFunction throws', () => { + test.assertThrows(() => { test.assertFunction({}); }); }); }); - describe('assertJSON', function () { - it('test assertJSON', function () { + describe('assertJSON', () => { + it('test assertJSON', () => { test.assertJSON('{"k":[0,1,2,3,"","a","b","c",null,null,null]}'); }); - it('test assertJSON throws', function () { - test.assertThrows(function () { + it('test assertJSON throws', () => { + test.assertThrows(() => { test.assertJSON(''); }); }); }); - describe('assertNaN', function () { - it('test assertNaN', function () { + describe('assertNaN', () => { + it('test assertNaN', () => { test.assertNaN(NaN); }); - it('test assertNaN throws', function () { - test.assertThrows(function () { + it('test assertNaN throws', () => { + test.assertThrows(() => { test.assertNaN(null); }); }); }); - describe('assertNone', function () { - it('test assertNone NaN', function () { + describe('assertNone', () => { + it('test assertNone NaN', () => { test.assertNone(NaN); }); - it('test assertNone null', function () { + it('test assertNone null', () => { test.assertNone(null); }); - it('test assertNone undefined', function () { + it('test assertNone undefined', () => { test.assertNone(undefined); }); - it('test assertNone throws', function () { - test.assertThrows(function () { + it('test assertNone throws', () => { + test.assertThrows(() => { test.assertNone('ok'); }); }); }); - describe('assertNotArray', function () { - it('test assertNotArray', function () { + describe('assertNotArray', () => { + it('test assertNotArray', () => { test.assertNotArray(true); }); - it('test assertNotArray throws', function () { - test.assertThrows(function () { + it('test assertNotArray throws', () => { + test.assertThrows(() => { test.assertNotArray([]); }); }); }); - describe('assertNotBase64', function () { - it('test assertNotBase64', function () { + describe('assertNotBase64', () => { + it('test assertNotBase64', () => { test.assertNotBase64(true); }); - it('test assertNotBase64 throws', function () { - test.assertThrows(function () { + it('test assertNotBase64 throws', () => { + test.assertThrows(() => { test.assertNotBase64('QGZhYmlvY2FjY2Ftby91dGlscy5qcw=='); }); }); }); - describe('assertNotBoolean', function () { - it('test assertNotBoolean', function () { + describe('assertNotBoolean', () => { + it('test assertNotBoolean', () => { test.assertNotBoolean(1); }); - it('test assertNotBoolean throws', function () { - test.assertThrows(function () { + it('test assertNotBoolean throws', () => { + test.assertThrows(() => { test.assertNotBoolean(true); }); }); }); - describe('assertNotDate', function () { - it('test assertNotDate', function () { + describe('assertNotDate', () => { + it('test assertNotDate', () => { test.assertNotDate(1); }); - it('test assertNotDate throws', function () { - test.assertThrows(function () { + it('test assertNotDate throws', () => { + test.assertThrows(() => { test.assertNotDate(new Date()); }); }); }); - describe('assertNotEqual', function () { - it('test assertNotEqual', function () { + describe('assertNotEqual', () => { + it('test assertNotEqual', () => { test.assertNotEqual( { a: 1, b: 'ok', c: true, d: [] }, { a: 1, b: 'ok', c: true } ); }); - it('test assertNotEqual throws', function () { - test.assertThrows(function () { + it('test assertNotEqual throws', () => { + test.assertThrows(() => { test.assertNotEqual( { a: 1, b: 'ok', c: true, d: [] }, { a: 1, b: 'ok', c: true, d: [] } @@ -194,102 +194,102 @@ describe('test', function () { }); }); }); - describe('assertNotError', function () { - it('test assertNotError', function () { + describe('assertNotError', () => { + it('test assertNotError', () => { test.assertNotError('[Error]'); }); - it('test assertNotError throws', function () { - test.assertThrows(function () { + it('test assertNotError throws', () => { + test.assertThrows(() => { test.assertNotError(new Error()); }); }); }); - describe('assertNotFunction', function () { - it('test assertNotFunction', function () { + describe('assertNotFunction', () => { + it('test assertNotFunction', () => { test.assertNotFunction({}); }); - it('test assertNotFunction throws', function () { - test.assertThrows(function () { - test.assertNotFunction(function () {}); + it('test assertNotFunction throws', () => { + test.assertThrows(() => { + test.assertNotFunction(() => {}); }); }); }); - describe('assertNotJSON', function () { - it('test assertNotJSON', function () { + describe('assertNotJSON', () => { + it('test assertNotJSON', () => { test.assertNotJSON(''); }); - it('test assertNotJSON throws', function () { - test.assertThrows(function () { + it('test assertNotJSON throws', () => { + test.assertThrows(() => { test.assertNotJSON('{"k":[0,1,2,3,"","a","b","c",null,null,null]}'); }); }); }); - describe('assertNotNone', function () { - it('test assertNotNone', function () { + describe('assertNotNone', () => { + it('test assertNotNone', () => { test.assertNotNone(0); }); - it('test assertNotNone throws', function () { - test.assertThrows(function () { + it('test assertNotNone throws', () => { + test.assertThrows(() => { test.assertNotNone(undefined); }); }); }); - describe('assertNotNumber', function () { - it('test assertNotNumber', function () { + describe('assertNotNumber', () => { + it('test assertNotNumber', () => { test.assertNotNumber('100'); }); - it('test assertNotNumber throws', function () { - test.assertThrows(function () { + it('test assertNotNumber throws', () => { + test.assertThrows(() => { test.assertNotNumber(100); }); }); }); - describe('assertNotNull', function () { - it('test assertNotNull', function () { + describe('assertNotNull', () => { + it('test assertNotNull', () => { test.assertNotNull(undefined); }); - it('test assertNotNull throws', function () { - test.assertThrows(function () { + it('test assertNotNull throws', () => { + test.assertThrows(() => { test.assertNotNull(null); }); }); }); - describe('assertNotObject', function () { - it('test assertNotObject', function () { + describe('assertNotObject', () => { + it('test assertNotObject', () => { test.assertNotObject('{}'); }); - it('test assertNotObject throws', function () { - test.assertThrows(function () { + it('test assertNotObject throws', () => { + test.assertThrows(() => { test.assertNotObject({}); }); }); }); - describe('assertNotRegExp', function () { - it('test assertNotRegExp', function () { + describe('assertNotRegExp', () => { + it('test assertNotRegExp', () => { test.assertNotRegExp('//'); }); - it('test assertNotRegExp throws', function () { - test.assertThrows(function () { + it('test assertNotRegExp throws', () => { + test.assertThrows(() => { test.assertNotRegExp(/^$/); }); }); }); - describe('assertNotString', function () { - it('test assertNotString', function () { + describe('assertNotString', () => { + it('test assertNotString', () => { test.assertNotString(undefined); }); - it('test assertNotString throws', function () { - test.assertThrows(function () { + it('test assertNotString throws', () => { + test.assertThrows(() => { test.assertNotString(''); }); }); }); - describe('assertNotUndefined', function () { - it('test assertNotUndefined', function () { + describe('assertNotUndefined', () => { + it('test assertNotUndefined', () => { test.assertNotUndefined(null); }); - it('test assertNotUndefined throws', function () { - test.assertThrows(function () { + it('test assertNotUndefined throws', () => { + test.assertThrows(() => { test.assertNotUndefined(undefined); }); }); @@ -299,105 +299,105 @@ describe('test', function () { // test.assertTrue(true); // }); // }); - describe('assertNumber', function () { - it('test assertNumber', function () { + describe('assertNumber', () => { + it('test assertNumber', () => { test.assertNumber(1); }); - it('test assertNumber throws', function () { - test.assertThrows(function () { + it('test assertNumber throws', () => { + test.assertThrows(() => { test.assertNumber('1'); }); }); }); - describe('assertNumberAlmostEqual', function () { - it('test assertNumberAlmostEqual (default tolerance)', function () { + describe('assertNumberAlmostEqual', () => { + it('test assertNumberAlmostEqual (default tolerance)', () => { test.assertNumberAlmostEqual(1.00000000001, 1.0); }); - it('test assertNumberAlmostEqual (custom tolerance)', function () { + it('test assertNumberAlmostEqual (custom tolerance)', () => { test.assertNumberAlmostEqual(1.0, 1.02, 0.02); }); - it('test assertNumberAlmostEqual (default tolerance) throws', function () { - test.assertThrows(function () { + it('test assertNumberAlmostEqual (default tolerance) throws', () => { + test.assertThrows(() => { test.assertNumberAlmostEqual(1.00001, 1.0); }); }); - it('test assertNumberAlmostEqual (custom tolerance) throws', function () { - test.assertThrows(function () { + it('test assertNumberAlmostEqual (custom tolerance) throws', () => { + test.assertThrows(() => { test.assertNumberAlmostEqual(1.0, 1.021, 0.02); }); }); }); - describe('assertNull', function () { - it('test assertNull', function () { + describe('assertNull', () => { + it('test assertNull', () => { test.assertNull(null); }); - it('test assertNull throws', function () { - test.assertThrows(function () { + it('test assertNull throws', () => { + test.assertThrows(() => { test.assertNull(undefined); }); }); }); - describe('assertObject', function () { - it('test assertObject', function () { + describe('assertObject', () => { + it('test assertObject', () => { test.assertObject({}); }); - it('test assertObject throws', function () { - test.assertThrows(function () { + it('test assertObject throws', () => { + test.assertThrows(() => { test.assertObject([]); }); }); }); - describe('assertRegExp', function () { - it('test assertRegExp', function () { + describe('assertRegExp', () => { + it('test assertRegExp', () => { test.assertRegExp(/^$/); }); - it('test assertRegExp object', function () { + it('test assertRegExp object', () => { test.assertRegExp(new RegExp()); }); - it('test assertRegExp throws', function () { - test.assertThrows(function () { + it('test assertRegExp throws', () => { + test.assertThrows(() => { test.assertRegExp('//'); }); }); }); - describe('assertString', function () { - it('test assertString', function () { + describe('assertString', () => { + it('test assertString', () => { test.assertString(''); }); - it('test assertString throws', function () { - test.assertThrows(function () { + it('test assertString throws', () => { + test.assertThrows(() => { test.assertString(true); }); }); }); - describe('assertThrows', function () { - it('test assertThrows', function () { - test.assertThrows(function () { + describe('assertThrows', () => { + it('test assertThrows', () => { + test.assertThrows(() => { throw new Error(); }); }); - it('test assertThrows throws', function () { - test.assertThrows(function () { - test.assertThrows(function () {}); + it('test assertThrows throws', () => { + test.assertThrows(() => { + test.assertThrows(() => {}); }); }); }); - describe('assertTrue', function () { - it('test assertTrue', function () { + describe('assertTrue', () => { + it('test assertTrue', () => { test.assertTrue(true); }); - it('test assertTrue throws', function () { - test.assertThrows(function () { + it('test assertTrue throws', () => { + test.assertThrows(() => { test.assertTrue(false); }); }); }); - describe('assertUndefined', function () { - it('test assertUndefined', function () { + describe('assertUndefined', () => { + it('test assertUndefined', () => { test.assertUndefined(undefined); }); - it('test assertUndefined throws', function () { - test.assertThrows(function () { + it('test assertUndefined throws', () => { + test.assertThrows(() => { test.assertUndefined('undefined'); }); }); diff --git a/test/test_trigo.js b/test/test_trigo.js index fef1bc0..cbc0318 100644 --- a/test/test_trigo.js +++ b/test/test_trigo.js @@ -1,34 +1,34 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; -var trigo = utils.trigo; +import utils from '../src/utils.js'; +const test = utils.test; +const trigo = utils.trigo; -describe('trigo', function () { - describe('constants', function () { - it('DEG_0', function () { +describe('trigo', () => { + describe('constants', () => { + it('DEG_0', () => { test.assertNumberAlmostEqual(trigo.DEG_0, 0.0, 0.001); }); - it('DEG_90', function () { + it('DEG_90', () => { test.assertNumberAlmostEqual(trigo.DEG_90, 90.0, 0.001); }); - it('DEG_180', function () { + it('DEG_180', () => { test.assertNumberAlmostEqual(trigo.DEG_180, 180.0, 0.001); }); - it('DEG_270', function () { + it('DEG_270', () => { test.assertNumberAlmostEqual(trigo.DEG_270, 270.0, 0.001); }); - it('DEG_360', function () { + it('DEG_360', () => { test.assertNumberAlmostEqual(trigo.DEG_360, 360.0, 0.001); }); - it('DEG_TO_RAD', function () { + it('DEG_TO_RAD', () => { test.assertNumberAlmostEqual(trigo.DEG_TO_RAD, 0.017453292519943295); }); - it('RAD_TO_DEG', function () { + it('RAD_TO_DEG', () => { test.assertNumberAlmostEqual(trigo.RAD_TO_DEG, 57.29577951308232); }); }); - describe('acosDeg', function () { - var f = trigo.acosDeg; - it('test simple', function () { + describe('acosDeg', () => { + const f = trigo.acosDeg; + it('test simple', () => { test.assertNumberAlmostEqual(f(1.0), 0.0); test.assertNumberAlmostEqual(f(0.5), 60.0); test.assertNumberAlmostEqual(f(0.0), 90.0); @@ -36,9 +36,9 @@ describe('trigo', function () { test.assertNumberAlmostEqual(f(-1.0), 180.0); }); }); - describe('angleDeg', function () { - var f = trigo.angleDeg; - it('test simple', function () { + describe('angleDeg', () => { + const f = trigo.angleDeg; + it('test simple', () => { test.assertNumberAlmostEqual(f(0.0, 0.0), 0.0); test.assertNumberAlmostEqual(f(1.0, 1.0), 45.0); test.assertNumberAlmostEqual(f(1.0, 0.0), 90.0); @@ -49,9 +49,9 @@ describe('trigo', function () { test.assertNumberAlmostEqual(f(-1.0, 1.0), -45.0); }); }); - describe('angleRad', function () { - var f = trigo.angleRad; - it('test simple', function () { + describe('angleRad', () => { + const f = trigo.angleRad; + it('test simple', () => { test.assertNumberAlmostEqual(f(0.0, 0.0), 0.0); test.assertNumberAlmostEqual(f(1.0, 1.0), 0.7853981633974483); test.assertNumberAlmostEqual(f(1.0, 0.0), 1.5707963267948966); @@ -62,9 +62,9 @@ describe('trigo', function () { test.assertNumberAlmostEqual(f(-1.0, 1.0), -0.7853981633974483); }); }); - describe('asinDeg', function () { - var f = trigo.asinDeg; - it('test simple', function () { + describe('asinDeg', () => { + const f = trigo.asinDeg; + it('test simple', () => { test.assertNumberAlmostEqual(f(1.0), 90.0); test.assertNumberAlmostEqual(f(0.5), 30.0); test.assertNumberAlmostEqual(f(0.0), 0.0); @@ -72,9 +72,9 @@ describe('trigo', function () { test.assertNumberAlmostEqual(f(-1.0), -90.0); }); }); - describe('atanDeg', function () { - var f = trigo.atanDeg; - it('test simple', function () { + describe('atanDeg', () => { + const f = trigo.atanDeg; + it('test simple', () => { test.assertNumberAlmostEqual(f(1.0), 45.0); test.assertNumberAlmostEqual(f(0.5), 26.56505117707799); test.assertNumberAlmostEqual(f(0.0), 0.0); @@ -82,9 +82,9 @@ describe('trigo', function () { test.assertNumberAlmostEqual(f(-1.0), -45.0); }); }); - describe('atan2Deg', function () { - var f = trigo.atan2Deg; - it('test simple', function () { + describe('atan2Deg', () => { + const f = trigo.atan2Deg; + it('test simple', () => { test.assertNumberAlmostEqual(f(0.0, 0.0), 0.0); test.assertNumberAlmostEqual(f(1.0, 1.0), 45.0); test.assertNumberAlmostEqual(f(1.0, 0.0), 90.0); @@ -95,9 +95,9 @@ describe('trigo', function () { test.assertNumberAlmostEqual(f(-1.0, 1.0), -45.0); }); }); - describe('cosDeg', function () { - var f = trigo.cosDeg; - it('test simple', function () { + describe('cosDeg', () => { + const f = trigo.cosDeg; + it('test simple', () => { test.assertNumberAlmostEqual(f(1.0), 0.9998476951563913); test.assertNumberAlmostEqual(f(0.5), 0.9999619230641713); test.assertNumberAlmostEqual(f(0.0), 1.0); @@ -105,9 +105,9 @@ describe('trigo', function () { test.assertNumberAlmostEqual(f(-1.0), 0.9998476951563913); }); }); - describe('degToRad', function () { - var f = trigo.degToRad; - it('test simple', function () { + describe('degToRad', () => { + const f = trigo.degToRad; + it('test simple', () => { test.assertNumberAlmostEqual(f(trigo.DEG_0), 0.0); test.assertNumberAlmostEqual(f(trigo.DEG_90), 1.5707963267948966); test.assertNumberAlmostEqual(f(trigo.DEG_180), 3.141592653589793); @@ -115,46 +115,46 @@ describe('trigo', function () { test.assertNumberAlmostEqual(f(trigo.DEG_360), 6.283185307179586); }); }); - describe('fastDeg', function () { - var f = trigo.fastDeg; - it('test simple', function () { + describe('fastDeg', () => { + const f = trigo.fastDeg; + it('test simple', () => { test.assertNumberAlmostEqual(f(0, 359), -1.0); }); }); - describe('haversine', function () { - var f = trigo.haversine; - var latA = 45.0735886; - var lngA = 7.6055665; - var latB = 45.4628329; - var lngB = 9.1076923; - it('test distance default', function () { + describe('haversine', () => { + const f = trigo.haversine; + const latA = 45.0735886; + const lngA = 7.6055665; + const latB = 45.4628329; + const lngB = 9.1076923; + it('test distance default', () => { test.assertNumberAlmostEqual(f(latA, lngA, latB, lngB), 125.265); }); - it('test distance km', function () { + it('test distance km', () => { test.assertNumberAlmostEqual(f(latA, lngA, latB, lngB, true), 125.265); }); - it('test distance miles', function () { + it('test distance miles', () => { test.assertNumberAlmostEqual(f(latA, lngA, latB, lngB, false), 77.782); }); }); - describe('hypo', function () { - var f = trigo.hypo; - it('test no distance', function () { + describe('hypo', () => { + const f = trigo.hypo; + it('test no distance', () => { test.assertNumberAlmostEqual(f(0.0, 0.0), 0); }); - it('test x axis', function () { + it('test x axis', () => { test.assertNumberAlmostEqual(f(100.0, 0.0), 100); }); - it('test y axis', function () { + it('test y axis', () => { test.assertNumberAlmostEqual(f(0.0, 100.0), 100); }); - it('test x/y axis', function () { + it('test x/y axis', () => { test.assertNumberAlmostEqual(f(100.0, 100.0), 141.4213562373095); }); }); - describe('radToDeg', function () { - var f = trigo.radToDeg; - it('test simple', function () { + describe('radToDeg', () => { + const f = trigo.radToDeg; + it('test simple', () => { test.assertNumberAlmostEqual(f(0.0), trigo.DEG_0); test.assertNumberAlmostEqual(f(1.5707963267948966), trigo.DEG_90); test.assertNumberAlmostEqual(f(3.141592653589793), trigo.DEG_180); @@ -162,9 +162,9 @@ describe('trigo', function () { test.assertNumberAlmostEqual(f(6.283185307179586), trigo.DEG_360); }); }); - describe('sinDeg', function () { - var f = trigo.sinDeg; - it('test simple', function () { + describe('sinDeg', () => { + const f = trigo.sinDeg; + it('test simple', () => { test.assertNumberAlmostEqual(f(1.0), 0.01745240643728351); test.assertNumberAlmostEqual(f(0.5), 0.008726535498373935); test.assertNumberAlmostEqual(f(0.0), 0.0); @@ -172,9 +172,9 @@ describe('trigo', function () { test.assertNumberAlmostEqual(f(-1.0), -0.01745240643728351); }); }); - describe('tanDeg', function () { - var f = trigo.tanDeg; - it('test simple', function () { + describe('tanDeg', () => { + const f = trigo.tanDeg; + it('test simple', () => { test.assertNumberAlmostEqual(f(1.0), 0.017455064928217585); test.assertNumberAlmostEqual(f(0.5), 0.00872686779075879); test.assertNumberAlmostEqual(f(0.0), 0.0); diff --git a/test/test_type.js b/test/test_type.js index a18f36a..0f542f1 100644 --- a/test/test_type.js +++ b/test/test_type.js @@ -1,17 +1,17 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; -var type = utils.type; +import utils from '../src/utils.js'; +const test = utils.test; +const type = utils.type; -describe('type', function () { - describe('isArray', function () { - it('test isArray against all types', function () { - var f = type.isArray; +describe('type', () => { + describe('isArray', () => { + it('test isArray against all types', () => { + const f = type.isArray; test.assertTrue(f([])); test.assertFalse(f(true)); test.assertFalse(f(false)); test.assertFalse(f(new Date())); test.assertFalse(f(new Error())); - test.assertFalse(f(function () {})); + test.assertFalse(f(() => {})); test.assertFalse(f(NaN)); test.assertFalse(f(0)); test.assertFalse(f(1)); @@ -29,31 +29,31 @@ describe('type', function () { test.assertFalse(f(undefined)); }); }); - describe('isBase64', function () { - var f = type.isBase64; - it('test isBase64 against empty string', function () { + describe('isBase64', () => { + const f = type.isBase64; + it('test isBase64 against empty string', () => { test.assertFalse(f('')); }); - it('test isBase64 against invalid string', function () { + it('test isBase64 against invalid string', () => { test.assertFalse(f('kjhsdafjksadhf')); test.assertTrue(f('QGZhYmlvY2FjY2Ftby91dGlscy5qcw')); }); - it('test isBase64 against valid string', function () { + it('test isBase64 against valid string', () => { test.assertTrue(f('QGZhYmlvY2FjY2Ftby91dGlscy5qcw==')); }); - it('test isBase64 against valid string with extra white-space', function () { + it('test isBase64 against valid string with extra white-space', () => { test.assertTrue(f(' QGZhYmlvY2FjY2Ftby91dGlscy5qcw== ')); }); }); - describe('isBoolean', function () { - it('test isBoolean against all types', function () { - var f = type.isBoolean; + describe('isBoolean', () => { + it('test isBoolean against all types', () => { + const f = type.isBoolean; test.assertFalse(f([])); test.assertTrue(f(true)); test.assertTrue(f(false)); test.assertFalse(f(new Date())); test.assertFalse(f(new Error())); - test.assertFalse(f(function () {})); + test.assertFalse(f(() => {})); test.assertFalse(f(NaN)); test.assertFalse(f(0)); test.assertFalse(f(1)); @@ -71,15 +71,15 @@ describe('type', function () { test.assertFalse(f(undefined)); }); }); - describe('isDate', function () { - it('test isDate against all types', function () { - var f = type.isDate; + describe('isDate', () => { + it('test isDate against all types', () => { + const f = type.isDate; test.assertFalse(f([])); test.assertFalse(f(true)); test.assertFalse(f(false)); test.assertTrue(f(new Date())); test.assertFalse(f(new Error())); - test.assertFalse(f(function () {})); + test.assertFalse(f(() => {})); test.assertFalse(f(NaN)); test.assertFalse(f(0)); test.assertFalse(f(1)); @@ -97,15 +97,15 @@ describe('type', function () { test.assertFalse(f(undefined)); }); }); - describe('isError', function () { - it('test isError against all types', function () { - var f = type.isError; + describe('isError', () => { + it('test isError against all types', () => { + const f = type.isError; test.assertFalse(f([])); test.assertFalse(f(true)); test.assertFalse(f(false)); test.assertFalse(f(new Date())); test.assertTrue(f(new Error())); - test.assertFalse(f(function () {})); + test.assertFalse(f(() => {})); test.assertFalse(f(NaN)); test.assertFalse(f(0)); test.assertFalse(f(1)); @@ -123,15 +123,15 @@ describe('type', function () { test.assertFalse(f(undefined)); }); }); - describe('isFunction', function () { - it('test isFunction against all types', function () { - var f = type.isFunction; + describe('isFunction', () => { + it('test isFunction against all types', () => { + const f = type.isFunction; test.assertFalse(f([])); test.assertFalse(f(true)); test.assertFalse(f(false)); test.assertFalse(f(new Date())); test.assertFalse(f(new Error())); - test.assertTrue(f(function () {})); + test.assertTrue(f(() => {})); test.assertFalse(f(NaN)); test.assertFalse(f(0)); test.assertFalse(f(1)); @@ -149,20 +149,20 @@ describe('type', function () { test.assertFalse(f(undefined)); }); }); - describe('isJSON', function () { - it('TODO', function () { + describe('isJSON', () => { + it('TODO', () => { test.assertTrue(true); }); }); - describe('isNaN', function () { - it('test isNaN against all types', function () { - var f = type.isNaN; + describe('isNaN', () => { + it('test isNaN against all types', () => { + const f = type.isNaN; test.assertFalse(f([])); test.assertFalse(f(true)); test.assertFalse(f(false)); test.assertFalse(f(new Date())); test.assertFalse(f(new Error())); - test.assertFalse(f(function () {})); + test.assertFalse(f(() => {})); test.assertTrue(f(NaN)); test.assertFalse(f(0)); test.assertFalse(f(1)); @@ -180,15 +180,15 @@ describe('type', function () { test.assertFalse(f(undefined)); }); }); - describe('isNone', function () { - it('test isNone against all types', function () { - var f = type.isNone; + describe('isNone', () => { + it('test isNone against all types', () => { + const f = type.isNone; test.assertFalse(f([])); test.assertFalse(f(true)); test.assertFalse(f(false)); test.assertFalse(f(new Date())); test.assertFalse(f(new Error())); - test.assertFalse(f(function () {})); + test.assertFalse(f(() => {})); test.assertTrue(f(NaN)); test.assertFalse(f(0)); test.assertFalse(f(1)); @@ -206,15 +206,15 @@ describe('type', function () { test.assertTrue(f(undefined)); }); }); - describe('isNumber', function () { - it('test isNumber against all types', function () { - var f = type.isNumber; + describe('isNumber', () => { + it('test isNumber against all types', () => { + const f = type.isNumber; test.assertFalse(f([])); test.assertFalse(f(true)); test.assertFalse(f(false)); test.assertFalse(f(new Date())); test.assertFalse(f(new Error())); - test.assertFalse(f(function () {})); + test.assertFalse(f(() => {})); test.assertFalse(f(NaN)); test.assertTrue(f(0)); test.assertTrue(f(1)); @@ -230,20 +230,20 @@ describe('type', function () { test.assertFalse(f('null')); test.assertFalse(f('undefined')); test.assertFalse(f(undefined)); - for (var i = -10; i <= 10; i++) { + for (let i = -10; i <= 10; i++) { test.assertTrue(type.isNumber(i)); } }); }); - describe('isNull', function () { - it('test isNull against all types', function () { - var f = type.isNull; + describe('isNull', () => { + it('test isNull against all types', () => { + const f = type.isNull; test.assertFalse(f([])); test.assertFalse(f(true)); test.assertFalse(f(false)); test.assertFalse(f(new Date())); test.assertFalse(f(new Error())); - test.assertFalse(f(function () {})); + test.assertFalse(f(() => {})); test.assertFalse(f(NaN)); test.assertFalse(f(0)); test.assertFalse(f(1)); @@ -261,15 +261,15 @@ describe('type', function () { test.assertFalse(f(undefined)); }); }); - describe('isObject', function () { - it('test isObject against all types', function () { - var f = type.isObject; + describe('isObject', () => { + it('test isObject against all types', () => { + const f = type.isObject; test.assertFalse(f([])); test.assertFalse(f(true)); test.assertFalse(f(false)); test.assertFalse(f(new Date())); test.assertFalse(f(new Error())); - test.assertFalse(f(function () {})); + test.assertFalse(f(() => {})); test.assertFalse(f(NaN)); test.assertFalse(f(0)); test.assertFalse(f(1)); @@ -287,15 +287,15 @@ describe('type', function () { test.assertFalse(f(undefined)); }); }); - describe('isRegExp', function () { - it('test isRegExp against all types', function () { - var f = type.isRegExp; + describe('isRegExp', () => { + it('test isRegExp against all types', () => { + const f = type.isRegExp; test.assertFalse(f([])); test.assertFalse(f(true)); test.assertFalse(f(false)); test.assertFalse(f(new Date())); test.assertFalse(f(new Error())); - test.assertFalse(f(function () {})); + test.assertFalse(f(() => {})); test.assertFalse(f(NaN)); test.assertFalse(f(0)); test.assertFalse(f(1)); @@ -313,9 +313,9 @@ describe('type', function () { test.assertFalse(f(undefined)); }); }); - describe('isType', function () { - it('test isType against all types', function () { - var f = type.isType; + describe('isType', () => { + it('test isType against all types', () => { + const f = type.isType; test.assertTrue(f(type.ARRAY)); test.assertTrue(f(type.BOOLEAN)); test.assertTrue(f(type.DATE)); @@ -333,15 +333,15 @@ describe('type', function () { test.assertFalse(f('')); }); }); - describe('isUndefined', function () { - it('test isUndefined against all types', function () { - var f = type.isUndefined; + describe('isUndefined', () => { + it('test isUndefined against all types', () => { + const f = type.isUndefined; test.assertFalse(f([])); test.assertFalse(f(true)); test.assertFalse(f(false)); test.assertFalse(f(new Date())); test.assertFalse(f(new Error())); - test.assertFalse(f(function () {})); + test.assertFalse(f(() => {})); test.assertFalse(f(NaN)); test.assertFalse(f(0)); test.assertFalse(f(1)); @@ -364,16 +364,16 @@ describe('type', function () { // test.assertTrue(true); // }); // }); - describe('of', function () { - it('test of against all types', function () { - var f = type.of; + describe('of', () => { + it('test of against all types', () => { + const f = type.of; test.assertEqual(f([]), type.ARRAY); test.assertEqual(f(true), type.BOOLEAN); test.assertEqual(f(false), type.BOOLEAN); test.assertEqual(f(new Date()), type.DATE); test.assertEqual(f(new Error()), type.ERROR); test.assertEqual( - f(function () {}), + f(() => {}), type.FUNCTION ); test.assertEqual(f(NaN), type.NAN); diff --git a/test/test_url.js b/test/test_url.js index 2c6021d..6cdd44a 100644 --- a/test/test_url.js +++ b/test/test_url.js @@ -1,15 +1,15 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; -var url = utils.url; +import utils from '../src/utils.js'; +const test = utils.test; +const url = utils.url; -describe('url', function () { - describe('getDomain', function () { - var f = url.getDomain; - it('test localhost', function () { +describe('url', () => { + describe('getDomain', () => { + const f = url.getDomain; + it('test localhost', () => { test.assertEqual(f('http://localhost:8000'), 'localhost'); test.assertEqual(f('https://localhost:8000'), 'localhost'); }); - it('test url with querystring', function () { + it('test url with querystring', () => { test.assertEqual( f('http://localhost:8000/?page=16&code=0123456789'), 'localhost' @@ -19,70 +19,70 @@ describe('url', function () { 'localhost' ); }); - it('test www', function () { + it('test www', () => { test.assertEqual(f('http://www.google.com'), 'google.com'); test.assertEqual(f('https://www.google.com'), 'google.com'); }); - it('test subdomain', function () { + it('test subdomain', () => { test.assertEqual(f('http://mail.google.com'), 'mail.google.com'); test.assertEqual(f('https://mail.google.com'), 'mail.google.com'); }); - it('test specific domain level', function () { + it('test specific domain level', () => { test.assertEqual(f('http://mail.google.com', 3), 'mail'); test.assertEqual(f('https://mail.google.com', 3), 'mail'); }); }); - describe('getParameterByName', function () { - var f = url.getParameterByName; - var s; - it('test valid param against params', function () { + describe('getParameterByName', () => { + const f = url.getParameterByName; + let s; + it('test valid param against params', () => { s = 'http://localhost:8000/?page=16&code=0123456789&'; test.assertEqual(f(s, 'page'), '16'); test.assertEqual(f(s, 'code'), '0123456789'); }); - it('test invalid param against params', function () { + it('test invalid param against params', () => { s = 'http://localhost:8000/?page=16&code=0123456789&'; test.assertEqual(f(s, 'status'), undefined); }); - it('test invalid param against params with default value', function () { + it('test invalid param against params with default value', () => { s = 'http://localhost:8000/?page=16&code=0123456789&'; test.assertEqual(f(s, 'status', 'none'), 'none'); }); - it('test invalid param against no params ', function () { + it('test invalid param against no params ', () => { s = 'http://localhost:8000/'; test.assertEqual(f(s, 'page'), undefined); }); - it('test invalid param against no params with default value', function () { + it('test invalid param against no params with default value', () => { s = 'http://localhost:8000/'; test.assertEqual(f(s, 'page', '1'), '1'); }); - it('test invalid param against no params with default value', function () { - var data = 'QGZhYmlvY2FjY2Ftby91dGlscy5qcw=='; - s = 'http://localhost:8000/index.html?data=' + data; + it('test invalid param against no params with default value', () => { + const data = 'QGZhYmlvY2FjY2Ftby91dGlscy5qcw=='; + s = `http://localhost:8000/index.html?data=${data}`; test.assertEqual(f(s, 'data', null), data); }); - it('test empty param', function () { + it('test empty param', () => { s = 'http://localhost:8000/?page=&code=&status=&ok='; test.assertEqual(f(s, 'page'), ''); test.assertEqual(f(s, 'code'), ''); test.assertEqual(f(s, 'status'), ''); test.assertEqual(f(s, 'ok'), ''); }); - it('test empty param with default value', function () { + it('test empty param with default value', () => { s = 'http://localhost:8000/?page=&code=&status=&ok='; test.assertEqual(f(s, 'page', 'ok'), 'ok'); test.assertEqual(f(s, 'code', 'ok'), 'ok'); test.assertEqual(f(s, 'status', 'ok'), 'ok'); test.assertEqual(f(s, 'ok', 'ok'), 'ok'); }); - it('test empty param (only name)', function () { + it('test empty param (only name)', () => { s = 'http://localhost:8000/?page&code&status&ok'; test.assertEqual(f(s, 'page'), ''); test.assertEqual(f(s, 'code'), ''); test.assertEqual(f(s, 'status'), ''); test.assertEqual(f(s, 'ok'), ''); }); - it('test empty param (only name) with default value', function () { + it('test empty param (only name) with default value', () => { s = 'http://localhost:8000/?page&code&status&ok'; test.assertEqual(f(s, 'page', 'ok'), 'ok'); test.assertEqual(f(s, 'code', 'ok'), 'ok'); @@ -90,36 +90,36 @@ describe('url', function () { test.assertEqual(f(s, 'ok', 'ok'), 'ok'); }); }); - describe('getParameters', function () { - var f = url.getParameters; - var s; - it('test simple', function () { + describe('getParameters', () => { + const f = url.getParameters; + let s; + it('test simple', () => { s = 'http://localhost:8000/?page=16&code=0123456789&'; test.assertEqual(f(s), { page: '16', code: '0123456789' }); }); - it('test variable with base64 value ending with "="', function () { - var b64 = 'QGZhYmlvY2FjY2Ftby91dGlscy5qcw=='; - s = 'http://localhost:8000/?data=' + b64 + '&code=0123456789&'; + it('test variable with base64 value ending with "="', () => { + const b64 = 'QGZhYmlvY2FjY2Ftby91dGlscy5qcw=='; + s = `http://localhost:8000/?data=${b64}&code=0123456789&`; test.assertEqual(f(s), { data: b64, code: '0123456789' }); }); - it('test url without query string', function () { + it('test url without query string', () => { s = 'http://localhost:8000/'; test.assertEqual(f(s), {}); }); - it('test url with empty query string', function () { + it('test url with empty query string', () => { s = 'http://localhost:8000/?'; test.assertEqual(f(s), {}); }); - it('test url with "=" before query string', function () { - var b64 = 'QGZhYmlvY2FjY2Ftby91dGlscy5qcw=='; - s = 'http://localhost:8000/page=123?data=' + b64 + '&code=0123456789&'; + it('test url with "=" before query string', () => { + const b64 = 'QGZhYmlvY2FjY2Ftby91dGlscy5qcw=='; + s = `http://localhost:8000/page=123?data=${b64}&code=0123456789&`; test.assertEqual(f(s), { data: b64, code: '0123456789' }); }); - it('test url with "?" in param value', function () { + it('test url with "?" in param value', () => { s = 'http://localhost:8000/?code=0123456789?'; test.assertEqual(f(s), { code: '0123456789?' }); }); - it('test url with keys containing - and _', function () { + it('test url with keys containing - and _', () => { s = 'http://localhost:8000/?status-code=1&status_code=2&statuscode=3'; test.assertEqual(f(s), { 'status-code': '1', @@ -128,84 +128,84 @@ describe('url', function () { }); }); }); - describe('getParametersString', function () { - var f = url.getParametersString; - var s; - it('test simple', function () { + describe('getParametersString', () => { + const f = url.getParametersString; + let s; + it('test simple', () => { s = 'http://localhost:8000/?page=16&code=0123456789&'; test.assertEqual(f(s), 'page=16&code=0123456789&'); }); - it('test with hash', function () { + it('test with hash', () => { s = 'http://localhost:8000/?page=16&code=0123456789#section=footer'; test.assertEqual(f(s), 'page=16&code=0123456789'); }); }); - describe('getURL', function () { - var f = url.getURL; - it('test simple', function () { + describe('getURL', () => { + const f = url.getURL; + it('test simple', () => { test.assertEqual(f(), ''); }); }); - describe('hasParameter', function () { - var f = url.hasParameter; - var s; - it('test invalid parameter', function () { + describe('hasParameter', () => { + const f = url.hasParameter; + let s; + it('test invalid parameter', () => { s = 'http://localhost:8000/?page=16&code=0123456789'; test.assertEqual(f(s, 'status'), false); }); - it('test invalid parameter (empty query string)', function () { + it('test invalid parameter (empty query string)', () => { s = 'http://localhost:8000/'; test.assertEqual(f(s, 'status'), false); }); - it('test valid parameter', function () { + it('test valid parameter', () => { s = 'http://localhost:8000/?page=1&code=10&status=ok'; test.assertEqual(f(s, 'page'), true); test.assertEqual(f(s, 'code'), true); test.assertEqual(f(s, 'status'), true); }); - it('test valid empty param (only =)', function () { + it('test valid empty param (only =)', () => { s = 'http://localhost:8000/?page=&code=&status=&ok='; test.assertEqual(f(s, 'page'), true); test.assertEqual(f(s, 'code'), true); test.assertEqual(f(s, 'status'), true); }); - it('test valid empty param (only name)', function () { + it('test valid empty param (only name)', () => { s = 'http://localhost:8000/?page&code&status&ok'; test.assertEqual(f(s, 'page'), true); test.assertEqual(f(s, 'code'), true); test.assertEqual(f(s, 'status'), true); }); }); - describe('isFile', function () { - var f = url.isFile; - it('test valid urls', function () { + describe('isFile', () => { + const f = url.isFile; + it('test valid urls', () => { test.assertTrue(f('file://index.html')); }); - it('test invalid urls', function () { + it('test invalid urls', () => { test.assertFalse(f('http://localhost/')); }); }); - describe('isHttp', function () { - var f = url.isHttp; - it('test valid urls', function () { + describe('isHttp', () => { + const f = url.isHttp; + it('test valid urls', () => { test.assertTrue(f('http://localhost/')); }); - it('test invalid urls', function () { + it('test invalid urls', () => { test.assertFalse(f('https://localhost/')); }); }); - describe('isHttps', function () { - var f = url.isHttps; - it('test valid urls', function () { + describe('isHttps', () => { + const f = url.isHttps; + it('test valid urls', () => { test.assertTrue(f('https://localhost/')); }); - it('test invalid urls', function () { + it('test invalid urls', () => { test.assertFalse(f('http://localhost/')); }); }); - describe('isLocalhost', function () { - var f = url.isLocalhost; - it('test valid urls', function () { + describe('isLocalhost', () => { + const f = url.isLocalhost; + it('test valid urls', () => { test.assertTrue(f('http://localhost')); test.assertTrue(f('http://localhost/')); test.assertTrue(f('http://localhost:8000')); @@ -232,7 +232,7 @@ describe('url', function () { test.assertTrue(f('https://127.0.0.1:8000/')); test.assertTrue(f('https://127.0.0.1:8000/index.html')); }); - it('test invalid urls', function () { + it('test invalid urls', () => { test.assertFalse(f('https://localhosts')); test.assertFalse(f('https://localhosts/')); test.assertFalse(f('https://localhosts:8000')); diff --git a/test/test_utf8.js b/test/test_utf8.js index 2ad2c94..a097fcd 100644 --- a/test/test_utf8.js +++ b/test/test_utf8.js @@ -1,10 +1,10 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; -var utf8 = utils.utf8; +import utils from '../src/utils.js'; +const test = utils.test; +const utf8 = utils.utf8; -describe('utf8', function () { - describe('decode', function () { - it('complex', function () { +describe('utf8', () => { + describe('decode', () => { + it('complex', () => { test.assertEqual( utf8.decode( '\x46\x6F\x6F\x20\xC2\xA9\x20\x62\x61\x72\x20\xF0\x9D\x8C\x86\x20\x62\x61\x7A\x20\xE2\x98\x83\x20\x71\x75\x78' @@ -13,8 +13,8 @@ describe('utf8', function () { ); }); }); - describe('encode', function () { - it('complex', function () { + describe('encode', () => { + it('complex', () => { test.assertEqual( utf8.encode('Foo © bar 𝌆 baz ☃ qux'), '\x46\x6F\x6F\x20\xC2\xA9\x20\x62\x61\x72\x20\xF0\x9D\x8C\x86\x20\x62\x61\x7A\x20\xE2\x98\x83\x20\x71\x75\x78' diff --git a/test/test_xml.js b/test/test_xml.js index fda735a..53662c6 100644 --- a/test/test_xml.js +++ b/test/test_xml.js @@ -1,11 +1,11 @@ -var utils = require('../dist/utils.js'); -var test = utils.test; -var xml = utils.xml; +import utils from '../src/utils.js'; +const test = utils.test; +const xml = utils.xml; -describe('xml', function () { - describe('removeNamespaces', function () { - it('test simple', function () { - var s = ''; +describe('xml', () => { + describe('removeNamespaces', () => { + it('test simple', () => { + let s = ''; s += ''; s += ''; @@ -21,7 +21,7 @@ describe('xml', function () { s += ''; s += ''; - var r = ''; + let r = ''; r += ''; r += '';