@dotenvx/dotenvx 0.43.1 → 0.44.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 CHANGED
@@ -45,10 +45,10 @@ $ echo "HELLO=World" > .env
45
45
  $ echo "console.log('Hello ' + process.env.HELLO)" > index.js
46
46
 
47
47
  $ node index.js
48
- Hello undefined
48
+ Hello undefined # without dotenvx
49
49
 
50
50
  $ dotenvx run -- node index.js
51
- Hello World
51
+ Hello World # with dotenvx
52
52
  > :-D
53
53
  ```
54
54
 
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.43.1",
2
+ "version": "0.44.0",
3
3
  "name": "@dotenvx/dotenvx",
4
4
  "description": "a better dotenv–from the creator of `dotenv`",
5
5
  "author": "@motdotla",
@@ -1,5 +1,5 @@
1
1
  const fs = require('fs')
2
- const logger = require('./../../shared/logger')
2
+ const { logger } = require('./../../shared/logger')
3
3
 
4
4
  const main = require('./../../lib/main')
5
5
 
@@ -1,6 +1,6 @@
1
1
  const fs = require('fs')
2
2
  const main = require('./../../lib/main')
3
- const logger = require('./../../shared/logger')
3
+ const { logger } = require('./../../shared/logger')
4
4
  const createSpinner = require('./../../shared/createSpinner')
5
5
 
6
6
  const sleep = require('./../../lib/helpers/sleep')
@@ -1,4 +1,4 @@
1
- const logger = require('./../../shared/logger')
1
+ const { logger } = require('./../../shared/logger')
2
2
 
3
3
  const conventions = require('./../../lib/helpers/conventions')
4
4
 
@@ -1,7 +1,7 @@
1
1
  const fs = require('fs')
2
2
 
3
3
  const FORMATS = ['.env*', '!.env.vault']
4
- const logger = require('./../../shared/logger')
4
+ const { logger } = require('./../../shared/logger')
5
5
 
6
6
  class Generic {
7
7
  constructor (filename, touchFile = false) {
@@ -5,7 +5,7 @@ const confirm = require('@inquirer/confirm').default
5
5
 
6
6
  const createSpinner = require('./../../../shared/createSpinner')
7
7
  const store = require('./../../../shared/store')
8
- const logger = require('./../../../shared/logger')
8
+ const { logger } = require('./../../../shared/logger')
9
9
 
10
10
  const OAUTH_CLIENT_ID = 'oac_dotenvxcli'
11
11
 
@@ -3,7 +3,7 @@ const confirm = require('@inquirer/confirm').default
3
3
 
4
4
  const createSpinner = require('./../../../shared/createSpinner')
5
5
  const store = require('./../../../shared/store')
6
- const logger = require('./../../../shared/logger')
6
+ const { logger } = require('./../../../shared/logger')
7
7
  const sleep = require('./../../../lib/helpers/sleep')
8
8
 
9
9
  const username = store.getUsername()
@@ -2,7 +2,7 @@ const openBrowser = require('open')
2
2
  const confirm = require('@inquirer/confirm').default
3
3
 
4
4
  const createSpinner = require('./../../../shared/createSpinner')
5
- const logger = require('./../../../shared/logger')
5
+ const { logger } = require('./../../../shared/logger')
6
6
 
7
7
  const isGitRepo = require('./../../../lib/helpers/isGitRepo')
8
8
  const isGithub = require('./../../../lib/helpers/isGithub')
@@ -3,7 +3,7 @@ const path = require('path')
3
3
  const { request } = require('undici')
4
4
 
5
5
  const store = require('./../../../shared/store')
6
- const logger = require('./../../../shared/logger')
6
+ const { logger } = require('./../../../shared/logger')
7
7
  const createSpinner = require('./../../../shared/createSpinner')
8
8
 
9
9
  const isGitRepo = require('./../../../lib/helpers/isGitRepo')
@@ -3,7 +3,7 @@ const path = require('path')
3
3
  const { request } = require('undici')
4
4
 
5
5
  const store = require('./../../../shared/store')
6
- const logger = require('./../../../shared/logger')
6
+ const { logger } = require('./../../../shared/logger')
7
7
  const createSpinner = require('./../../../shared/createSpinner')
8
8
 
9
9
  const isGitRepo = require('./../../../lib/helpers/isGitRepo')
@@ -1,5 +1,5 @@
1
1
  const store = require('./../../../shared/store')
2
- const logger = require('./../../../shared/logger')
2
+ const { logger } = require('./../../../shared/logger')
3
3
 
4
4
  async function status () {
5
5
  logger.info(`logged in to ${store.getHostname()} as ${store.getUsername()}`)
@@ -1,5 +1,5 @@
1
1
  const store = require('./../../../shared/store')
2
- const logger = require('./../../../shared/logger')
2
+ const { logger } = require('./../../../shared/logger')
3
3
 
4
4
  async function token () {
5
5
  logger.debug(store.configPath())
@@ -1,6 +1,6 @@
1
1
  const treeify = require('object-treeify')
2
2
 
3
- const logger = require('./../../shared/logger')
3
+ const { logger } = require('./../../shared/logger')
4
4
 
5
5
  const main = require('./../../lib/main')
6
6
  const ArrayToTree = require('./../../lib/helpers/arrayToTree')
@@ -2,7 +2,7 @@ const fs = require('fs')
2
2
 
3
3
  const ignore = require('ignore')
4
4
 
5
- const logger = require('./../../shared/logger')
5
+ const { logger } = require('./../../shared/logger')
6
6
  const pluralize = require('./../../lib/helpers/pluralize')
7
7
 
8
8
  function prebuild () {
@@ -1,4 +1,4 @@
1
- const logger = require('./../../shared/logger')
1
+ const { logger } = require('./../../shared/logger')
2
2
 
3
3
  const Precommit = require('./../../lib/services/precommit')
4
4
 
@@ -1,7 +1,7 @@
1
1
  const path = require('path')
2
2
  const execa = require('execa')
3
3
  const which = require('which')
4
- const logger = require('./../../shared/logger')
4
+ const { logger } = require('./../../shared/logger')
5
5
 
6
6
  const Run = require('./../../lib/services/run')
7
7
 
@@ -1,6 +1,6 @@
1
1
  const execa = require('execa')
2
2
 
3
- const logger = require('./../../shared/logger')
3
+ const { logger } = require('./../../shared/logger')
4
4
 
5
5
  async function scan () {
6
6
  const options = this.opts()
@@ -1,5 +1,5 @@
1
1
  const fs = require('fs')
2
- const logger = require('./../../shared/logger')
2
+ const { logger } = require('./../../shared/logger')
3
3
 
4
4
  const main = require('./../../lib/main')
5
5
 
@@ -1,4 +1,4 @@
1
- const logger = require('./../../shared/logger')
1
+ const { logger } = require('./../../shared/logger')
2
2
 
3
3
  const main = require('./../../lib/main')
4
4
 
@@ -1,4 +1,4 @@
1
- const logger = require('./../../../shared/logger')
1
+ const { logger } = require('./../../../shared/logger')
2
2
 
3
3
  function convert (directory) {
4
4
  // debug args
@@ -1,6 +1,6 @@
1
1
  const fs = require('fs')
2
2
 
3
- const logger = require('./../../../shared/logger')
3
+ const { logger } = require('./../../../shared/logger')
4
4
  const createSpinner = require('./../../../shared/createSpinner')
5
5
  const sleep = require('./../../../lib/helpers/sleep')
6
6
 
@@ -2,7 +2,7 @@ const fs = require('fs')
2
2
  const path = require('path')
3
3
 
4
4
  const main = require('./../../../lib/main')
5
- const logger = require('./../../../shared/logger')
5
+ const { logger } = require('./../../../shared/logger')
6
6
  const createSpinner = require('./../../../shared/createSpinner')
7
7
  const sleep = require('./../../../lib/helpers/sleep')
8
8
  const pluralize = require('./../../../lib/helpers/pluralize')
@@ -1,4 +1,4 @@
1
- const logger = require('./../../../shared/logger')
1
+ const { logger } = require('./../../../shared/logger')
2
2
 
3
3
  const main = require('./../../../lib/main')
4
4
 
@@ -1,7 +1,7 @@
1
1
  const { Command } = require('commander')
2
2
 
3
3
  const store = require('./../../shared/store')
4
- const logger = require('./../../shared/logger')
4
+ const { logger } = require('./../../shared/logger')
5
5
 
6
6
  const hub = new Command('hub')
7
7
 
@@ -4,7 +4,7 @@ const UpdateNotice = require('./../lib/helpers/updateNotice')
4
4
  const { Command } = require('commander')
5
5
  const program = new Command()
6
6
 
7
- const logger = require('./../shared/logger')
7
+ const { setLogLevel, logger } = require('../shared/logger')
8
8
  const examples = require('./examples')
9
9
  const packageJson = require('./../lib/helpers/packageJson')
10
10
 
@@ -33,25 +33,7 @@ program
33
33
  .hook('preAction', (thisCommand, actionCommand) => {
34
34
  const options = thisCommand.opts()
35
35
 
36
- if (options.logLevel) {
37
- logger.level = options.logLevel
38
- logger.debug(`setting log level to ${options.logLevel}`)
39
- }
40
-
41
- // --quiet overides --log-level. only errors will be shown
42
- if (options.quiet) {
43
- logger.level = 'error'
44
- }
45
-
46
- // --verbose overrides --quiet
47
- if (options.verbose) {
48
- logger.level = 'verbose'
49
- }
50
-
51
- // --debug overrides --verbose
52
- if (options.debug) {
53
- logger.level = 'debug'
54
- }
36
+ setLogLevel(options)
55
37
  })
56
38
 
57
39
  // cli
@@ -7,19 +7,21 @@ function replace (src, key, value) {
7
7
  const parsed = dotenv.parse(src)
8
8
  if (Object.prototype.hasOwnProperty.call(parsed, key)) {
9
9
  const regex = new RegExp(
10
- `^${key}=` + // start of line with key
11
- '(?:' + // begin non-capturing group for handling both quoted and unquoted values
12
- '(["\'`])' + // capture opening quote (' or " or `)
13
- '[^\\1]*' + // match any character except the quote captured initially
14
- '\\1' + // match the same closing quote as captured at the start
15
- '|' + // OR
16
- '[^#\\n]*' + // match any characters until a # (comment) or newline
17
- ')' + // end non-capturing group
18
- '(\\n[^A-Z0-9_].*)*', // match subsequent lines that don't start with a letter, number, or underscore (continuation lines)
19
- 'm' // apply multiline mode, so ^ and $ match start and end of lines, not just the whole string
10
+ // Match the key at the start of a line or following a newline
11
+ `(^|\\n)${key}\\s*=\\s*` +
12
+ // Non-capturing group to handle different types of quotations and unquoted values
13
+ '(?:' +
14
+ '(["\'`])' + // Match an opening quote
15
+ '.*?' + // Non-greedy match for any characters within quotes
16
+ '\\2' + // Match the corresponding closing quote
17
+ '|' +
18
+ // Match unquoted values; account for escaped newlines
19
+ '(?:[^#\\n\\\\]|\\\\.)*' + // Use non-capturing group for any character except #, newline, or backslash, or any escaped character
20
+ ')',
21
+ 'gs' // Global and dotAll mode to treat string as single line
20
22
  )
21
23
 
22
- output = src.replace(regex, formatted)
24
+ output = src.replace(regex, `$1${formatted}`)
23
25
  } else {
24
26
  // append
25
27
  if (src.endsWith('\n')) {
package/src/lib/main.js CHANGED
@@ -1,5 +1,5 @@
1
1
  const path = require('path')
2
- const logger = require('./../shared/logger')
2
+ const { logger } = require('./../shared/logger')
3
3
  const dotenv = require('dotenv')
4
4
 
5
5
  // services
@@ -15,6 +15,7 @@ const VaultEncrypt = require('./services/vaultEncrypt')
15
15
 
16
16
  // helpers
17
17
  const dotenvOptionPaths = require('./helpers/dotenvOptionPaths')
18
+ const { setLogLevel } = require('../shared/logger')
18
19
 
19
20
  // proxies to dotenv
20
21
  const config = function (options = {}) {
@@ -33,11 +34,7 @@ const config = function (options = {}) {
33
34
  DOTENV_KEY = options.DOTENV_KEY
34
35
  }
35
36
 
36
- // debug -> log level
37
- if (options && options.debug) {
38
- logger.level = 'debug'
39
- logger.debug('setting log level to debug')
40
- }
37
+ if (options) setLogLevel(options)
41
38
 
42
39
  // build envs using user set option.path
43
40
  const optionPaths = dotenvOptionPaths(options) // [ '.env' ]
@@ -103,4 +103,24 @@ const logger = createLogger({
103
103
  ]
104
104
  })
105
105
 
106
- module.exports = logger
106
+ const setLogLevel = options => {
107
+ const logLevel = options.debug
108
+ ? 'debug'
109
+ : options.verbose
110
+ ? 'verbose'
111
+ : options.quiet
112
+ ? 'error'
113
+ : options.logLevel
114
+
115
+ if (!logLevel) return
116
+ logger.level = logLevel
117
+ // Only log which level it's setting if it's not set to quiet mode
118
+ if (!options.quiet || (options.quiet && logLevel !== 'error')) {
119
+ logger.debug(`Setting log level to ${logLevel}`)
120
+ }
121
+ }
122
+
123
+ module.exports = {
124
+ logger,
125
+ setLogLevel
126
+ }