mentie 0.1.15 → 0.1.16
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/environment.js +78 -11
- package/modules/logging.js +7 -5
- package/package.json +4 -1
package/modules/environment.js
CHANGED
|
@@ -2,61 +2,128 @@
|
|
|
2
2
|
// Platform and environment detection
|
|
3
3
|
// ///////////////////////////////
|
|
4
4
|
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Environment checks for various runtime contexts.
|
|
9
|
+
* Useful in compiled code where the runtime environment may not be known at compile time.
|
|
10
|
+
* @namespace
|
|
11
|
+
*/
|
|
12
|
+
export const env = {}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Determines if the current runtime environment is a web browser.
|
|
16
|
+
* @returns {boolean} True if running in a web environment, otherwise false.
|
|
17
|
+
*/
|
|
18
|
+
env.is_web = () => typeof window !== 'undefined'
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Checks if the code is running in the Cypress testing environment within a web browser.
|
|
22
|
+
* @returns {boolean} True if running in Cypress, otherwise false.
|
|
23
|
+
*/
|
|
24
|
+
env.is_cypress = () => env.is_web() && typeof window.Cypress !== 'undefined'
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Determines if the current runtime environment is Node.js.
|
|
28
|
+
* @returns {boolean} True if running in Node.js, otherwise false.
|
|
29
|
+
*/
|
|
30
|
+
env.is_node = () => typeof process !== 'undefined' && process.versions && process.versions?.node
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Checks if the code is running in an emulator environment in Node.js.
|
|
34
|
+
* @returns {boolean} True if running in a Node.js emulator, otherwise false.
|
|
35
|
+
*/
|
|
36
|
+
env.is_emulator = () => env.is_node() && process.env?.FUNCTIONS_EMULATOR === 'true'
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Determines if the Node.js environment is in development mode.
|
|
40
|
+
* @returns {boolean} True if NODE_ENV is 'development', otherwise false.
|
|
41
|
+
*/
|
|
42
|
+
env.node_dev = () => typeof process !== 'undefined' && process.env?.NODE_ENV === 'development'
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Determines if the web environment is in development mode.
|
|
46
|
+
* @returns {boolean} True if the URL includes 'debug=true' or 'localhost', otherwise false.
|
|
47
|
+
*/
|
|
48
|
+
env.web_dev = () => typeof location !== 'undefined' && ( `${ location.href }`.includes( 'debug=true' ) || `${ location.href }`.includes( 'localhost' ) )
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Determines if the environment is in development mode (either web or Node.js).
|
|
52
|
+
* @returns {boolean} True if either web_dev or node_dev returns true, otherwise false.
|
|
53
|
+
*/
|
|
54
|
+
env.dev = () => env.node_dev() || env.web_dev()
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Retrieves the log level set via URL parameters in a web environment.
|
|
58
|
+
* @returns {string|null} The log level from URL parameters, or null if not set.
|
|
59
|
+
*/
|
|
60
|
+
env.web_loglevel = () => env.is_web() && new URLSearchParams( location?.search ).get( 'loglevel' )
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Retrieves the log level set via environment variables in a Node.js environment.
|
|
64
|
+
* @returns {string|undefined} The log level from environment variables, or undefined if not set.
|
|
65
|
+
*/
|
|
66
|
+
env.node_loglevel = () => env.is_node() && process.env?.LOG_LEVEL
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Retrieves the effective log level based on the environment. Defaults to 'info' in development environments, 'error' otherwise.
|
|
70
|
+
* @returns {string} The determined log level.
|
|
71
|
+
*/
|
|
72
|
+
env.loglevel = () => env.web_loglevel() || env.node_loglevel() || env.dev() ? 'info' : 'error'
|
|
73
|
+
|
|
74
|
+
|
|
5
75
|
/**
|
|
6
76
|
* Checks if the code is running in a web environment.
|
|
7
77
|
* @returns {boolean} Returns true if the code is running in a web environment, otherwise returns false.
|
|
8
78
|
*/
|
|
9
|
-
export const is_web =
|
|
79
|
+
export const is_web = env.is_web()
|
|
10
80
|
|
|
11
81
|
/**
|
|
12
82
|
* Checks if the code is running within a Cypress environment.
|
|
13
83
|
* @returns {boolean} Returns true if the code is running in a Cypress environment, otherwise returns false.
|
|
14
84
|
*/
|
|
15
|
-
export const is_cypress =
|
|
85
|
+
export const is_cypress = env.is_cypress()
|
|
16
86
|
|
|
17
87
|
/**
|
|
18
88
|
* Checks if the code is running in a Node environment.
|
|
19
89
|
* @returns {boolean} Returns true if the code is running in a Node environment, otherwise returns false.
|
|
20
90
|
*/
|
|
21
|
-
export const is_node =
|
|
91
|
+
export const is_node = env.is_node()
|
|
22
92
|
|
|
23
93
|
/**
|
|
24
94
|
* Checks if the code is running in a Firebase functions emulator environment.
|
|
25
95
|
* @returns {boolean} Returns true if the code is running in a Firebase environment, otherwise returns false.
|
|
26
96
|
*/
|
|
27
|
-
export const is_emulator =
|
|
97
|
+
export const is_emulator = env.is_emulator()
|
|
28
98
|
|
|
29
99
|
// ///////////////////////////////
|
|
30
100
|
// Mode and loglevel detection
|
|
31
101
|
// ///////////////////////////////
|
|
32
102
|
|
|
33
|
-
const node_dev = typeof process !== 'undefined' && process.env?.NODE_ENV === 'development'
|
|
34
|
-
const web_dev = typeof location !== 'undefined' && ( `${ location.href }`.includes( 'debug=true' ) || `${ location.href }`.includes( 'localhost' ) )
|
|
35
|
-
|
|
36
103
|
/**
|
|
37
104
|
* Represents the development environment.
|
|
38
105
|
* @type {boolean}
|
|
39
106
|
*/
|
|
40
|
-
export const dev =
|
|
107
|
+
export const dev = env.dev()
|
|
41
108
|
|
|
42
109
|
/**
|
|
43
110
|
* The log level for web applications.
|
|
44
111
|
* @type {string} - Log level. Valid values are: 'info', 'warn', 'error'
|
|
45
112
|
*/
|
|
46
|
-
export const web_loglevel =
|
|
113
|
+
export const web_loglevel = env.web_loglevel()
|
|
47
114
|
|
|
48
115
|
/**
|
|
49
116
|
* The log level for the Node environment.
|
|
50
117
|
* @type {string} - Log level. Valid values are: 'info', 'warn', 'error'
|
|
51
118
|
*/
|
|
52
|
-
export const node_loglevel =
|
|
119
|
+
export const node_loglevel = env.node_loglevel()
|
|
53
120
|
|
|
54
121
|
|
|
55
122
|
/**
|
|
56
123
|
* The log level used in the environment.
|
|
57
124
|
* @type {string}
|
|
58
125
|
*/
|
|
59
|
-
export const loglevel =
|
|
126
|
+
export const loglevel = env.loglevel()
|
|
60
127
|
|
|
61
128
|
|
|
62
129
|
/**
|
package/modules/logging.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
// Import environment data
|
|
2
|
-
import { dev,
|
|
2
|
+
import { dev, env } from "./environment.js"
|
|
3
3
|
|
|
4
4
|
const should_log = levels => {
|
|
5
5
|
|
|
6
|
+
const loglevel = env.loglevel()
|
|
7
|
+
|
|
6
8
|
// Check if the loglevel matches this call
|
|
7
9
|
const valid_levels = [ 'info', 'warn', 'error' ]
|
|
8
10
|
|
|
@@ -63,7 +65,7 @@ const annotate_messages = messages => {
|
|
|
63
65
|
|
|
64
66
|
|
|
65
67
|
// If we are running in cypress, stringify the messages because they become unavailable in the console
|
|
66
|
-
if( is_cypress ) {
|
|
68
|
+
if( env.is_cypress() ) {
|
|
67
69
|
|
|
68
70
|
try {
|
|
69
71
|
messages = messages.map( message => JSON.stringify( message, null, 2 ) )
|
|
@@ -122,7 +124,7 @@ log.info = function( ...messages ) {
|
|
|
122
124
|
const levels = [ 'info' ]
|
|
123
125
|
|
|
124
126
|
// Log the messages if the loglevel matches
|
|
125
|
-
if( is_emulator || should_log( levels ) ) {
|
|
127
|
+
if( env.is_emulator() || should_log( levels ) ) {
|
|
126
128
|
|
|
127
129
|
// Annotate the provided messages
|
|
128
130
|
annotate_messages( messages )
|
|
@@ -170,7 +172,7 @@ log.error = function( ...messages ) {
|
|
|
170
172
|
|
|
171
173
|
// Check if the loglevel matches this call
|
|
172
174
|
const levels = [ 'error', 'warn', 'info' ]
|
|
173
|
-
const should_log = dev || levels.includes( loglevel )
|
|
175
|
+
const should_log = dev || levels.includes( env.loglevel() )
|
|
174
176
|
if( !dev || !should_log ) return
|
|
175
177
|
|
|
176
178
|
// Log the messages if the loglevel matches
|
|
@@ -180,4 +182,4 @@ log.error = function( ...messages ) {
|
|
|
180
182
|
}
|
|
181
183
|
|
|
182
184
|
// Set the loglevel on the log function
|
|
183
|
-
log.loglevel = loglevel
|
|
185
|
+
log.loglevel = env.loglevel()
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mentie",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.16",
|
|
4
4
|
"description": "Mentor's toolbelt",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -30,5 +30,8 @@
|
|
|
30
30
|
"peerDependencies": {
|
|
31
31
|
"promise-parallel-throttle": "^3.5.0",
|
|
32
32
|
"promise-retry": "^2.0.1"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"safe-stable-stringify": "^2.4.3"
|
|
33
36
|
}
|
|
34
37
|
}
|