mentie 0.3.0 → 0.3.2

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/modules/cache.js CHANGED
@@ -13,7 +13,7 @@ const _cache = {}
13
13
  * If no value is provided, it retrieves the value from the cache.
14
14
  *
15
15
  * @param {string} key - The key to cache the value.
16
- * @param {*} [value] - The value to be cached (optional).
16
+ * @param {*} [value] - The value to be cached (optional). Use null to unset, undefined is never saved when provided as a parameter
17
17
  * @param {number} [expires_in_ms=Infinity] - The expiration time in milliseconds (optional).
18
18
  * @returns {*} The cached value.
19
19
  */
@@ -30,10 +30,13 @@ export function cache( key, value, expires_in_ms=Infinity ) {
30
30
  }
31
31
 
32
32
  // If value is provided, save value and expiration
33
- if( value ) _cache[key] = { value, expires: Date.now() + expires_in_ms }
33
+ if( value !== undefined ) _cache[key] = { value, expires: Date.now() + expires_in_ms }
34
34
 
35
35
  // If cache has value, but it expired, remove it
36
- if( _cache[key] && _cache[key].expires < Date.now() ) delete _cache[key]
36
+ if( _cache[key] && _cache[key].expires < Date.now() ) {
37
+ log.info( `Cache key ${ key } expired, removing from cache` )
38
+ delete _cache[key]
39
+ }
37
40
 
38
41
  // Return the value of the cache key, which may be undefined
39
42
  return _cache[key]?.value
package/modules/text.js CHANGED
@@ -1,3 +1,5 @@
1
+ import { random_number_between } from "./numbers"
2
+
1
3
  /**
2
4
  * Truncates a given text to a specified length and appends a suffix if necessary.
3
5
  *
@@ -38,3 +40,30 @@ export const capitalise = string => {
38
40
  if( !string ) return ''
39
41
  return `${ string?.charAt( 0 ).toUpperCase() }${ string?.slice( 1, string?.length ) }`
40
42
  }
43
+
44
+
45
+ /**
46
+ * Generates a random letter from the allowed characters.
47
+ *
48
+ * @param {string} [allowed_chars] - A string of characters to choose from. If not provided, defaults to the lowercase English alphabet.
49
+ * @returns {string} A randomly selected character from the allowed characters.
50
+ */
51
+ export const random_letter = ( allowed_chars, capitals=true ) => {
52
+
53
+ const letters = 'abcdefghijklmnopqrstuvwxyz'
54
+ let chars = allowed_chars || letters
55
+ if( capitals ) chars += letters.toUpperCase()
56
+
57
+ return chars.charAt( Math.floor( Math.random() * chars.length ) )
58
+
59
+ }
60
+
61
+ export const random_string_of_length = ( length, allowed_chars, numbers=true ) => {
62
+
63
+ return Array.from( { length }, () => {
64
+ // If numbers are allowed, add a 50% chance of generating a number
65
+ if( numbers && Math.random() > 0.5 ) return `${ random_number_between( 9, 0 ) }`
66
+ return random_letter( allowed_chars )
67
+ } ).join( '' )
68
+
69
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mentie",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "Mentor's toolbelt",
5
5
  "type": "module",
6
6
  "main": "index.js",