cafe-utility 32.0.0 → 32.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/index.d.ts +3 -1
  2. package/index.js +18 -11
  3. package/package.json +1 -1
package/index.d.ts CHANGED
@@ -66,6 +66,7 @@ declare function roundToNearest(value: number, nearest: number): number
66
66
  declare function formatDistance(meters: number): string
67
67
  declare function triangularNumber(n: number): number
68
68
  declare function searchFloat(string: string): number
69
+ declare function binomialSample(n: number, p: number, generator?: () => number): number
69
70
  declare function isObject(value: any, checkForPlainObject?: boolean): value is object
70
71
  declare function isStrictlyObject(value: any): value is object
71
72
  declare function isEmptyArray(value: any): boolean
@@ -449,7 +450,7 @@ declare function minutes(value: number): number
449
450
  declare function hours(value: number): number
450
451
  declare function days(value: number): number
451
452
  declare function makeDate(numberWithUnit: string): number
452
- declare function makeStorage(numberWithUnit: string): number
453
+ declare function makeStorage(numberWithUnit: string, conversionMultiplier?: number): number
453
454
  declare function getPreLine(string: string): string
454
455
  declare function getCached<T>(key: string, ttlMillis: number, handler: () => Promise<T>): Promise<T>
455
456
  declare function deleteFromCache(key: string): void
@@ -889,6 +890,7 @@ export declare const Numbers: {
889
890
  formatDistance: typeof formatDistance
890
891
  triangularNumber: typeof triangularNumber
891
892
  searchFloat: typeof searchFloat
893
+ binomialSample: typeof binomialSample
892
894
  }
893
895
  export declare const Promises: {
894
896
  raceFulfilled: typeof raceFulfilled
package/index.js CHANGED
@@ -267,6 +267,13 @@ function searchFloat(n) {
267
267
  if (!e) throw Error('No float found in ' + n)
268
268
  return parseFloat(e[0])
269
269
  }
270
+ function binomialSample(n, e, t = Math.random) {
271
+ const r = n * e,
272
+ o = Math.sqrt(n * e * (1 - e)),
273
+ u = (t() + t() + t() + t() + t() + t() - 3) * Math.SQRT2,
274
+ s = Math.round(r + o * u)
275
+ return Math.max(0, Math.min(n, s))
276
+ }
270
277
  function isObject(n, e = !0) {
271
278
  return !n || (e && !isUndefined(n._readableState)) || (e && n.constructor && (n.constructor.isBuffer || n.constructor.name == 'Uint8Array' || n.constructor.name === 'ArrayBuffer' || n.constructor.name === 'ReadableStream')) ? !1 : typeof n == 'object'
272
279
  }
@@ -1409,21 +1416,21 @@ function makeDate(n) {
1409
1416
  .replace(/^-?[0-9.]+/, '')
1410
1417
  .trim()
1411
1418
  .toLowerCase(),
1412
- r = dateUnits[t]
1419
+ r = t === '' ? 1 : dateUnits[t]
1413
1420
  if (!r) throw Error(`Unknown unit: "${t}"`)
1414
- return e * r
1421
+ return Math.ceil(e * r)
1415
1422
  }
1416
- const storageUnits = { b: 1, byte: 1, bytes: 1, kb: 1024, kilobyte: 1024, kilobytes: 1024, mb: 1024 ** 2, megabyte: 1024 ** 2, megabytes: 1024 ** 2, gb: 1024 ** 3, gigabyte: 1024 ** 3, gigabytes: 1024 ** 3, tb: 1024 ** 4, terabyte: 1024 ** 4, terabytes: 1024 ** 4 }
1417
- function makeStorage(n) {
1418
- const e = parseFloat(n)
1419
- if (isNaN(e)) throw Error('makeDate got NaN for input')
1420
- const t = n
1423
+ const storageUnitExponents = { b: 0, byte: 0, bytes: 0, kb: 1, kilobyte: 1, kilobytes: 1, mb: 2, megabyte: 2, megabytes: 2, gb: 3, gigabyte: 3, gigabytes: 3, tb: 4, terabyte: 4, terabytes: 4 }
1424
+ function makeStorage(n, e = 1024) {
1425
+ const t = parseFloat(n)
1426
+ if (isNaN(t)) throw Error('makeStorage got NaN for input')
1427
+ const r = n
1421
1428
  .replace(/^-?[0-9.]+/, '')
1422
1429
  .trim()
1423
1430
  .toLowerCase(),
1424
- r = storageUnits[t]
1425
- if (!r) throw Error(`Unknown unit: "${t}"`)
1426
- return e * r
1431
+ o = r === '' ? 0 : storageUnitExponents[r]
1432
+ if (o == null) throw Error(`Unknown unit: "${r}"`)
1433
+ return Math.ceil(t * e ** o)
1427
1434
  }
1428
1435
  function getPreLine(n) {
1429
1436
  return n.replace(/ +/g, ' ').replace(/^ /gm, '')
@@ -2716,7 +2723,7 @@ class TrieRouter {
2716
2723
  (exports.Random = { intBetween, floatBetween, chance, signed: signedRandom, makeSeededRng, point: randomPoint, procs }),
2717
2724
  (exports.Arrays = { countUnique, makeUnique, splitBySize, splitByCount, index: indexArray, indexCollection: indexArrayToCollection, onlyOrThrow, onlyOrNull, firstOrThrow, firstOrNull, shuffle, initialize: initializeArray, initialize2D: initialize2DArray, rotate2D: rotate2DArray, containsShape, glue, pluck, pick, pickMany, pickManyUnique, pickWeighted, pickRandomIndices, pickGuaranteed, last, pipe, makePipe, sortWeighted, pushAll, unshiftAll, filterAndRemove, merge: mergeArrays, empty, pushToBucket, unshiftAndLimit, atRolling, group, createOscillator, organiseWithLimits, tickPlaybook, getArgument, getBooleanArgument, getNumberArgument, requireStringArgument, requireNumberArgument, bringToFront, bringToFrontInPlace, findInstance, filterInstances, interleave, toggle, createHierarchy, multicall, maxBy }),
2718
2725
  (exports.System = { sleepMillis, forever, scheduleMany, waitFor, expandError, runAndSetInterval, whereAmI }),
2719
- (exports.Numbers = { make: makeNumber, sum, average, median, getDistanceFromMidpoint, clamp, range, interpolate, createSequence, increment, decrement, format: formatNumber, fromDecimals, makeStorage, asMegabytes, convertBytes, hexToRgb, rgbToHex, haversineDistanceToMeters, roundToNearest, formatDistance, triangularNumber, searchFloat }),
2726
+ (exports.Numbers = { make: makeNumber, sum, average, median, getDistanceFromMidpoint, clamp, range, interpolate, createSequence, increment, decrement, format: formatNumber, fromDecimals, makeStorage, asMegabytes, convertBytes, hexToRgb, rgbToHex, haversineDistanceToMeters, roundToNearest, formatDistance, triangularNumber, searchFloat, binomialSample }),
2720
2727
  (exports.Promises = { raceFulfilled, invert: invertPromise, runInParallelBatches }),
2721
2728
  (exports.Dates = { getTimestamp, getTimeDelta, secondsToHumanTime, countCycles, isoDate, throttle, timeSince, dateTimeSlug, unixTimestamp, fromUtcString, fromMillis, getProgress, humanizeTime, humanizeProgress, createTimeDigits, mapDayNumber, getDayInfoFromDate, getDayInfoFromDateTimeString, seconds, minutes, hours, days, make: makeDate, normalizeTime, absoluteDays }),
2722
2729
  (exports.Objects = { safeParse, deleteDeep, getDeep, setDeep, incrementDeep, ensureDeep, replaceDeep, getFirstDeep, deepMergeInPlace, deepMerge2, deepMerge3, mapAllAsync, cloneWithJson, sortObject, sortArray, sortAny, deepEquals, deepEqualsEvery, runOn, ifPresent, zip, zipSum, removeEmptyArrays, removeEmptyValues, flatten, unflatten, match, sort: sortObjectValues, map: mapObject, mapIterable, filterKeys: filterObjectKeys, filterValues: filterObjectValues, rethrow, setSomeOnObject, setSomeDeep, flip, getAllPermutations, countTruthyValues, transformToArray, setMulti, incrementMulti, createBidirectionalMap, createTemporalBidirectionalMap, pushToBidirectionalMap, unshiftToBidirectionalMap, addToTemporalBidirectionalMap, getFromTemporalBidirectionalMap, createStatefulToggle, diffKeys, pickRandomKey, mapRandomKey, fromObjectString, toQueryString, parseQueryString, hasKey, selectMax, reposition, unwrapSingleKey, parseKeyValues }),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cafe-utility",
3
- "version": "32.0.0",
3
+ "version": "32.2.0",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "exports": {