mentie 0.2.37 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/modules/cache.js +10 -3
- package/modules/environment.js +74 -1
- package/package.json +1 -1
package/README.md
CHANGED
package/modules/cache.js
CHANGED
|
@@ -14,9 +14,10 @@ const _cache = {}
|
|
|
14
14
|
*
|
|
15
15
|
* @param {string} key - The key to cache the value.
|
|
16
16
|
* @param {*} [value] - The value to be cached (optional).
|
|
17
|
+
* @param {number} [expires_in_ms=Infinity] - The expiration time in milliseconds (optional).
|
|
17
18
|
* @returns {*} The cached value.
|
|
18
19
|
*/
|
|
19
|
-
export function cache( key, value ) {
|
|
20
|
+
export function cache( key, value, expires_in_ms=Infinity ) {
|
|
20
21
|
|
|
21
22
|
// If the key is undefined, log a warning
|
|
22
23
|
if( key === undefined ) {
|
|
@@ -28,8 +29,14 @@ export function cache( key, value ) {
|
|
|
28
29
|
log.warn( `The cache key ${ key } contains 'undefined', this may indicate a bug in your cache logic` )
|
|
29
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 }
|
|
34
|
+
|
|
35
|
+
// If cache has value, but it expired, remove it
|
|
36
|
+
if( _cache[key] && _cache[key].expires < Date.now() ) delete _cache[key]
|
|
37
|
+
|
|
38
|
+
// Return the value of the cache key, which may be undefined
|
|
39
|
+
return _cache[key]?.value
|
|
33
40
|
}
|
|
34
41
|
|
|
35
42
|
/**
|
package/modules/environment.js
CHANGED
|
@@ -77,6 +77,41 @@ env.node_loglevel = () => env.is_node() && process.env?.LOG_LEVEL
|
|
|
77
77
|
*/
|
|
78
78
|
env.loglevel = () => env.web_loglevel() || env.node_loglevel() || env.dev() ? 'info' : 'error'
|
|
79
79
|
|
|
80
|
+
/**
|
|
81
|
+
* Checks if the code is running in a web browser and the platform is Mac.
|
|
82
|
+
* @returns {boolean} True if the code is running in a web browser and the platform is Mac, otherwise false.
|
|
83
|
+
*/
|
|
84
|
+
env.is_mac = () => env.is_web() && navigator.userAgent?.toUpperCase().includes( 'MAC' )
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Checks if the code is running in a web browser and the platform is iPhone.
|
|
88
|
+
* @returns {boolean} True if the code is running in a web browser and the platform is iPhone, otherwise false.
|
|
89
|
+
*/
|
|
90
|
+
env.is_iphone = () => env.is_web() && navigator.userAgent?.toUpperCase().includes( 'IPHONE' )
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Checks if the code is running in a web browser and the platform is Android.
|
|
94
|
+
* @returns {boolean} True if the code is running in a web browser and the platform is Android, otherwise false.
|
|
95
|
+
*/
|
|
96
|
+
env.is_android = () => env.is_web() && navigator.userAgent?.toUpperCase().includes( 'ANDROID' )
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Checks if the code is running in a web browser and the platform is iOS.
|
|
100
|
+
* @returns {boolean} True if the code is running in a web browser and the platform is made by Apple
|
|
101
|
+
*/
|
|
102
|
+
env.is_apple = () => env.is_web() && navigator.userAgent?.toUpperCase().includes( 'MAC OS X' )
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Checks if the code is running in a web browser and the platform is Windows.
|
|
106
|
+
* @returns {boolean} True if the code is running in a web browser and the platform is Linux, otherwise false.
|
|
107
|
+
*/
|
|
108
|
+
env.is_linux = () => env.is_web() && navigator.userAgent?.toUpperCase().includes( 'LINUX' )
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Checks if the code is running in a web browser and the platform is Windows.
|
|
112
|
+
* @returns {boolean} True if the code is running in a web browser and the platform is Windows, otherwise false.
|
|
113
|
+
*/
|
|
114
|
+
env.is_windows = () => env.is_web() && navigator.userAgent?.toUpperCase().includes( 'WIN' )
|
|
80
115
|
|
|
81
116
|
/**
|
|
82
117
|
* Checks if the code is running in a web environment.
|
|
@@ -114,6 +149,36 @@ export const is_emulator = env.is_emulator()
|
|
|
114
149
|
*/
|
|
115
150
|
export const is_github_actions = typeof process !== 'undefined' && process.env?.GITHUB_ACTIONS == true
|
|
116
151
|
|
|
152
|
+
/**
|
|
153
|
+
* @returns {boolean} Returns true if the code is running on an Apple device, otherwise returns false.
|
|
154
|
+
*/
|
|
155
|
+
export const is_apple = env.is_apple()
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* @returns {boolean} Returns true if the code is running on an iPhone, otherwise returns false.
|
|
159
|
+
*/
|
|
160
|
+
export const is_iphone = env.is_iphone()
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* @returns {boolean} Returns true if the code is running on a Mac, otherwise returns false.
|
|
164
|
+
*/
|
|
165
|
+
export const is_mac = env.is_mac()
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* @returns {boolean} Returns true if the code is running on an Android device, otherwise returns false.
|
|
169
|
+
*/
|
|
170
|
+
export const is_android = env.is_android()
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* @returns {boolean} Returns true if the code is running on a Linux device, otherwise returns false.
|
|
174
|
+
*/
|
|
175
|
+
export const is_linux = env.is_linux()
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* @returns {boolean} Returns true if the code is running on a Windows device, otherwise returns false.
|
|
179
|
+
*/
|
|
180
|
+
export const is_windows = env.is_windows()
|
|
181
|
+
|
|
117
182
|
// ///////////////////////////////
|
|
118
183
|
// Mode and loglevel detection
|
|
119
184
|
// ///////////////////////////////
|
|
@@ -156,7 +221,15 @@ export const log_environment = logger => {
|
|
|
156
221
|
is_web,
|
|
157
222
|
loglevel: web_loglevel,
|
|
158
223
|
window: typeof window !== 'undefined' && window,
|
|
159
|
-
search: typeof location !== 'undefined' && location.search
|
|
224
|
+
search: typeof location !== 'undefined' && location.search,
|
|
225
|
+
platform: {
|
|
226
|
+
is_android,
|
|
227
|
+
is_apple,
|
|
228
|
+
is_iphone,
|
|
229
|
+
is_linux,
|
|
230
|
+
is_mac,
|
|
231
|
+
is_windows
|
|
232
|
+
}
|
|
160
233
|
},
|
|
161
234
|
node: {
|
|
162
235
|
is_node,
|