cafe-utility 33.0.0 → 33.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.
package/index.d.ts CHANGED
@@ -57,6 +57,7 @@ declare function getFirstDeep(object: CafeObject, paths: string[], fallbackToAny
57
57
  declare function forever(callable: (() => Promise<void>) | (() => void), millis: number, log?: (message: string, metadata: object) => void): Promise<never>
58
58
  declare function runAndSetInterval(callable: () => void, millis: number): () => void
59
59
  declare function whereAmI(): 'browser' | 'node'
60
+ declare function withRetries<T>(callable: () => Promise<T>, allowedFailures: number, delayMillisFirst: number, delayMillisLast: number, log?: (message: string, metadata: object) => void, onFailure?: () => void): Promise<T>
60
61
  declare function asMegabytes(number: number): number
61
62
  declare function convertBytes(bytes: number, divisor?: number): string
62
63
  declare function hexToRgb(hex: string): [number, number, number]
@@ -358,6 +359,7 @@ declare function selectMax<T>(object: Record<string, T>, mapper: (item: T) => nu
358
359
  declare function reposition(array: Record<string, unknown>[], key: string, current: number, delta: number): void
359
360
  declare function unwrapSingleKey(object: Record<string, unknown>): unknown
360
361
  declare function parseKeyValues(lines: string[], separator?: string): Record<string, string>
362
+ declare function errorMatches(error: unknown, expected: string): boolean
361
363
  declare function buildUrl(baseUrl?: string | null, path?: string | null, query?: Record<string, any> | null): string
362
364
  declare function parseCsv(string: string, delimiter?: string, quote?: string): string[]
363
365
  declare function humanizeProgress(state: Progress): string
@@ -746,6 +748,13 @@ export declare class TrieRouter<Q, S> {
746
748
  insert(pathSegments: string[], handler: RouterFn<Q, S>): void
747
749
  handle(pathSegments: string[], request: Q, response: S, context: Map<string, string>): Promise<boolean>
748
750
  }
751
+ export declare class RollingValueProvider<T> {
752
+ private values
753
+ private index
754
+ constructor(values: T[])
755
+ current(): T
756
+ next(): T
757
+ }
749
758
  export declare const Binary: {
750
759
  hexToUint8Array: typeof hexToUint8Array
751
760
  uint8ArrayToHex: typeof uint8ArrayToHex
@@ -867,6 +876,7 @@ export declare const System: {
867
876
  expandError: typeof expandError
868
877
  runAndSetInterval: typeof runAndSetInterval
869
878
  whereAmI: typeof whereAmI
879
+ withRetries: typeof withRetries
870
880
  }
871
881
  export declare const Numbers: {
872
882
  make: typeof makeNumber
@@ -986,6 +996,7 @@ export declare const Objects: {
986
996
  reposition: typeof reposition
987
997
  unwrapSingleKey: typeof unwrapSingleKey
988
998
  parseKeyValues: typeof parseKeyValues
999
+ errorMatches: typeof errorMatches
989
1000
  }
990
1001
  export declare const Types: {
991
1002
  isFunction: typeof isFunction
package/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict'
2
2
  var _a
3
- Object.defineProperty(exports, '__esModule', { value: !0 }), (exports.Vector = exports.Cache = exports.Assertions = exports.Strings = exports.Types = exports.Objects = exports.Dates = exports.Promises = exports.Numbers = exports.System = exports.Arrays = exports.Random = exports.Elliptic = exports.Binary = exports.TrieRouter = exports.AsyncQueue = exports.PubSubChannel = exports.FixedPointNumber = exports.MerkleTree = exports.Chunk = exports.Uint8ArrayWriter = exports.Uint8ArrayReader = exports.AsyncLazy = exports.Lazy = exports.Optional = void 0)
3
+ Object.defineProperty(exports, '__esModule', { value: !0 }), (exports.Vector = exports.Cache = exports.Assertions = exports.Strings = exports.Types = exports.Objects = exports.Dates = exports.Promises = exports.Numbers = exports.System = exports.Arrays = exports.Random = exports.Elliptic = exports.Binary = exports.RollingValueProvider = exports.TrieRouter = exports.AsyncQueue = exports.PubSubChannel = exports.FixedPointNumber = exports.MerkleTree = exports.Chunk = exports.Uint8ArrayWriter = exports.Uint8ArrayReader = exports.AsyncLazy = exports.Lazy = exports.Optional = void 0)
4
4
  async function invertPromise(n) {
5
5
  return new Promise((e, t) => n.then(t, e))
6
6
  }
@@ -231,6 +231,18 @@ function whereAmI() {
231
231
  const n = globalThis.process
232
232
  return n ? (n.browser === !0 ? 'browser' : 'node') : 'browser'
233
233
  }
234
+ async function withRetries(n, e, t, r, o, i) {
235
+ let u = null
236
+ for (let s = 0; s <= e; s++)
237
+ try {
238
+ return await n()
239
+ } catch (c) {
240
+ if (((u = c), s === e)) break
241
+ const f = t + (r - t) * (s / (e - 1))
242
+ o && o('Error in withRetries, retrying', { attempt: s + 1, allowedFailures: e, delayMillis: f, error: c }), i && i(), await sleepMillis(f)
243
+ }
244
+ throw u
245
+ }
234
246
  function asMegabytes(n) {
235
247
  return n / 1024 / 1024
236
248
  }
@@ -1269,6 +1281,11 @@ function parseKeyValues(n, e = ':') {
1269
1281
  .filter(t => t)
1270
1282
  )
1271
1283
  }
1284
+ function errorMatches(n, e) {
1285
+ if (!n) return !1
1286
+ const t = n.message
1287
+ return typeof t == 'string' && t.includes(e)
1288
+ }
1272
1289
  function buildUrl(n, e, t) {
1273
1290
  return joinUrl([n, e]) + toQueryString(t || {})
1274
1291
  }
@@ -2084,8 +2101,8 @@ function keccakPermutate(n) {
2084
2101
  I = (n[7] << 28) | (n[6] >>> 4),
2085
2102
  C = (n[8] << 27) | (n[9] >>> 5),
2086
2103
  D = (n[9] << 27) | (n[8] >>> 5),
2087
- B = (n[11] << 4) | (n[10] >>> 28),
2088
- P = (n[10] << 4) | (n[11] >>> 28),
2104
+ P = (n[11] << 4) | (n[10] >>> 28),
2105
+ B = (n[10] << 4) | (n[11] >>> 28),
2089
2106
  v = (n[13] << 12) | (n[12] >>> 20),
2090
2107
  U = (n[12] << 12) | (n[13] >>> 20),
2091
2108
  L = (n[14] << 6) | (n[15] >>> 26),
@@ -2124,7 +2141,7 @@ function keccakPermutate(n) {
2124
2141
  wn = (n[46] << 24) | (n[47] >>> 8),
2125
2142
  xn = (n[48] << 14) | (n[49] >>> 18),
2126
2143
  yn = (n[49] << 14) | (n[48] >>> 18)
2127
- ;(n[0] = E ^ (~v & K)), (n[1] = M ^ (~U & Z)), (n[2] = v ^ (~K & un)), (n[3] = U ^ (~Z & cn)), (n[4] = K ^ (~un & xn)), (n[5] = Z ^ (~cn & yn)), (n[6] = un ^ (~xn & E)), (n[7] = cn ^ (~yn & M)), (n[8] = xn ^ (~E & v)), (n[9] = yn ^ (~M & U)), (n[10] = R ^ (~F & q)), (n[11] = I ^ (~W & H)), (n[12] = F ^ (~q & en)), (n[13] = W ^ (~H & tn)), (n[14] = q ^ (~en & pn)), (n[15] = H ^ (~tn & mn)), (n[16] = en ^ (~pn & R)), (n[17] = tn ^ (~mn & I)), (n[18] = pn ^ (~R & F)), (n[19] = mn ^ (~I & W)), (n[20] = O ^ (~L & Q)), (n[21] = k ^ (~N & G)), (n[22] = L ^ (~Q & sn)), (n[23] = N ^ (~G & fn)), (n[24] = Q ^ (~sn & ln)), (n[25] = G ^ (~fn & an)), (n[26] = sn ^ (~ln & O)), (n[27] = fn ^ (~an & k)), (n[28] = ln ^ (~O & L)), (n[29] = an ^ (~k & N)), (n[30] = C ^ (~B & V)), (n[31] = D ^ (~P & J)), (n[32] = B ^ (~V & rn)), (n[33] = P ^ (~J & on)), (n[34] = V ^ (~rn & gn)), (n[35] = J ^ (~on & wn)), (n[36] = rn ^ (~gn & C)), (n[37] = on ^ (~wn & D)), (n[38] = gn ^ (~C & B)), (n[39] = wn ^ (~D & P)), (n[40] = T ^ (~j & Y)), (n[41] = S ^ (~z & _)), (n[42] = j ^ (~Y & X)), (n[43] = z ^ (~_ & nn)), (n[44] = Y ^ (~X & hn)), (n[45] = _ ^ (~nn & dn)), (n[46] = X ^ (~hn & T)), (n[47] = nn ^ (~dn & S)), (n[48] = hn ^ (~T & j)), (n[49] = dn ^ (~S & z)), (n[0] ^= IOTA_CONSTANTS[e * 2]), (n[1] ^= IOTA_CONSTANTS[e * 2 + 1])
2144
+ ;(n[0] = E ^ (~v & K)), (n[1] = M ^ (~U & Z)), (n[2] = v ^ (~K & un)), (n[3] = U ^ (~Z & cn)), (n[4] = K ^ (~un & xn)), (n[5] = Z ^ (~cn & yn)), (n[6] = un ^ (~xn & E)), (n[7] = cn ^ (~yn & M)), (n[8] = xn ^ (~E & v)), (n[9] = yn ^ (~M & U)), (n[10] = R ^ (~F & q)), (n[11] = I ^ (~W & H)), (n[12] = F ^ (~q & en)), (n[13] = W ^ (~H & tn)), (n[14] = q ^ (~en & pn)), (n[15] = H ^ (~tn & mn)), (n[16] = en ^ (~pn & R)), (n[17] = tn ^ (~mn & I)), (n[18] = pn ^ (~R & F)), (n[19] = mn ^ (~I & W)), (n[20] = O ^ (~L & Q)), (n[21] = k ^ (~N & G)), (n[22] = L ^ (~Q & sn)), (n[23] = N ^ (~G & fn)), (n[24] = Q ^ (~sn & ln)), (n[25] = G ^ (~fn & an)), (n[26] = sn ^ (~ln & O)), (n[27] = fn ^ (~an & k)), (n[28] = ln ^ (~O & L)), (n[29] = an ^ (~k & N)), (n[30] = C ^ (~P & V)), (n[31] = D ^ (~B & J)), (n[32] = P ^ (~V & rn)), (n[33] = B ^ (~J & on)), (n[34] = V ^ (~rn & gn)), (n[35] = J ^ (~on & wn)), (n[36] = rn ^ (~gn & C)), (n[37] = on ^ (~wn & D)), (n[38] = gn ^ (~C & P)), (n[39] = wn ^ (~D & B)), (n[40] = T ^ (~j & Y)), (n[41] = S ^ (~z & _)), (n[42] = j ^ (~Y & X)), (n[43] = z ^ (~_ & nn)), (n[44] = Y ^ (~X & hn)), (n[45] = _ ^ (~nn & dn)), (n[46] = X ^ (~hn & T)), (n[47] = nn ^ (~dn & S)), (n[48] = hn ^ (~T & j)), (n[49] = dn ^ (~S & z)), (n[0] ^= IOTA_CONSTANTS[e * 2]), (n[1] ^= IOTA_CONSTANTS[e * 2 + 1])
2128
2145
  }
2129
2146
  }
2130
2147
  function bytesToNumbers(n) {
@@ -2718,16 +2735,28 @@ class TrieRouter {
2718
2735
  return c ? (o.set('wildcard', e.join('/')), c.handler ? (await c.handler(t, r, o), !0) : !1) : !1
2719
2736
  }
2720
2737
  }
2721
- ;(exports.TrieRouter = TrieRouter),
2738
+ exports.TrieRouter = TrieRouter
2739
+ class RollingValueProvider {
2740
+ constructor(e) {
2741
+ ;(this.index = 0), (this.values = e)
2742
+ }
2743
+ current() {
2744
+ return this.values[this.index]
2745
+ }
2746
+ next() {
2747
+ return (this.index = (this.index + 1) % this.values.length), this.values[this.index]
2748
+ }
2749
+ }
2750
+ ;(exports.RollingValueProvider = RollingValueProvider),
2722
2751
  (exports.Binary = { hexToUint8Array, uint8ArrayToHex, binaryToUint8Array, uint8ArrayToBinary, base64ToUint8Array, uint8ArrayToBase64, base32ToUint8Array, uint8ArrayToBase32, log2Reduce, partition, concatBytes, numberToUint8, uint8ToNumber, numberToUint16, uint16ToNumber, numberToUint32, uint32ToNumber, numberToUint64, uint64ToNumber, numberToUint256, uint256ToNumber, sliceBytes, keccak256, sha3_256, proximity, commonPrefix, setBit, getBit, indexOf: binaryIndexOf, equals: binaryEquals, padStart: binaryPadStart, padStartToMultiple: binaryPadStartToMultiple, padEnd: binaryPadEnd, padEndToMultiple: binaryPadEndToMultiple, xorCypher, isUtf8 }),
2723
2752
  (exports.Elliptic = { privateKeyToPublicKey, compressPublicKey, publicKeyFromCompressed, publicKeyToAddress, signMessage, signHash, verifySignature, recoverPublicKey, checksumEncode }),
2724
2753
  (exports.Random = { intBetween, floatBetween, chance, signed: signedRandom, makeSeededRng, point: randomPoint, procs }),
2725
2754
  (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 }),
2726
- (exports.System = { sleepMillis, forever, scheduleMany, waitFor, expandError, runAndSetInterval, whereAmI }),
2755
+ (exports.System = { sleepMillis, forever, scheduleMany, waitFor, expandError, runAndSetInterval, whereAmI, withRetries }),
2727
2756
  (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 }),
2728
2757
  (exports.Promises = { raceFulfilled, invert: invertPromise, runInParallelBatches }),
2729
2758
  (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 }),
2730
- (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 }),
2759
+ (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, errorMatches }),
2731
2760
  (exports.Types = { isFunction, isObject, isStrictlyObject, isEmptyArray, isEmptyObject, isUndefined, isString, isNumber, isBoolean, isDate, isBlank, isId, isIntegerString, isHexString, isUrl, isNullable, asString, asHexString, asSafeString, asIntegerString, asNumber, asFunction, asInteger, asBoolean, asDate, asNullableString, asEmptiableString, asId, asTime, asArray, asObject, asNullableObject, asStringMap, asNumericDictionary, asUrl, asEmptiable, asNullable, asOptional, enforceObjectShape, enforceArrayShape, isPng, isJpg, isWebp, isImage }),
2732
2761
  (exports.Strings = { tokenizeByCount, tokenizeByLength, searchHex, searchSubstring, randomHex: randomHexString, randomLetter: randomLetterString, randomAlphanumeric: randomAlphanumericString, randomRichAscii: randomRichAsciiString, randomUnicode: randomUnicodeString, includesAny, slugify, normalForm, enumify, escapeHtml, decodeHtmlEntities, after, afterLast, before, beforeLast, betweenWide, betweenNarrow, getPreLine, containsWord, containsWords, joinUrl, getFuzzyMatchScore, sortByFuzzyScore, splitOnce, splitAll, randomize, expand, shrinkTrim, capitalize, decapitalize, csvEscape, parseCsv, surroundInOut, getExtension, getBasename, normalizeEmail, normalizeFilename, parseFilename, camelToTitle, slugToTitle, slugToCamel, joinHumanly, findWeightedPair, extractBlock, extractAllBlocks, replaceBlocks, indexOfEarliest, lastIndexOfBefore, parseHtmlAttributes, readNextWord, readWordsAfterAll, resolveVariables, resolveVariableWithDefaultSyntax, resolveRemainingVariablesWithDefaults, isLetter, isDigit, isLetterOrDigit, isValidObjectPathCharacter, insert: insertString, indexOfRegex, allIndexOf, lineMatches, linesMatchInOrder, represent, resolveMarkdownLinks, buildUrl, isChinese, replaceBetweenStrings, describeMarkdown, isBalanced, textToFormat, splitFormatting, splitHashtags, splitUrls, route, explodeReplace, generateVariants, replaceWord, replacePascalCaseWords, stripHtml, breakLine, measureTextWidth, toLines, levenshteinDistance, findCommonPrefix, findCommonDirectory }),
2733
2762
  (exports.Assertions = { asEqual, asTrue, asTruthy, asFalse, asFalsy, asEither }),
package/module.mjs CHANGED
@@ -26,3 +26,4 @@ export const AsyncQueue = utility.AsyncQueue
26
26
  export const Uint8ArrayReader = utility.Uint8ArrayReader
27
27
  export const Uint8ArrayWriter = utility.Uint8ArrayWriter
28
28
  export const TrieRouter = utility.TrieRouter
29
+ export const RollingValueProvider = utility.RollingValueProvider
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cafe-utility",
3
- "version": "33.0.0",
3
+ "version": "33.2.0",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "exports": {