@dotenvx/dotenvx 1.48.3 → 1.49.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/CHANGELOG.md CHANGED
@@ -2,7 +2,19 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
- [Unreleased](https://github.com/dotenvx/dotenvx/compare/v1.48.3...main)
5
+ [Unreleased](https://github.com/dotenvx/dotenvx/compare/v1.48.4...main)
6
+
7
+ ## [1.49.0](https://github.com/dotenvx/dotenvx/compare/v1.48.4...v1.49.0) (2025-08-18)
8
+
9
+ ### Added
10
+
11
+ * For precommit and prebuild, ignore `.env.x` file like we do with `.env.vault` file. ([#666](https://github.com/dotenvx/dotenvx/pull/666))
12
+
13
+ ## [1.48.4](https://github.com/dotenvx/dotenvx/compare/v1.48.3...v1.48.4) (2025-07-29)
14
+
15
+ ### Removed
16
+
17
+ * Remove unnecessary use of `eval` in proKeypair helper ([#654](https://github.com/dotenvx/dotenvx/pull/654))
6
18
 
7
19
  ## 1.48.3
8
20
 
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
- [![dotenvx](https://dotenvx.com/better-banner.png)](https://dotenvx.com)
1
+ [![dotenvx](https://dotenvx.com/banner.png)](https://dotenvx.com)
2
2
 
3
- *a better dotenv*–from the creator of [`dotenv`](https://github.com/motdotla/dotenv).
3
+ *a secure dotenv*–from the creator of [`dotenv`](https://github.com/motdotla/dotenv).
4
4
 
5
5
  * run anywhere (cross-platform)
6
6
  * multi-environment
@@ -2036,7 +2036,7 @@ Output help for `dotenvx`.
2036
2036
  $ dotenvx help
2037
2037
  Usage: dotenvx run -- yourcommand
2038
2038
 
2039
- a better dotenv–from the creator of `dotenv`
2039
+ a secure dotenv–from the creator of `dotenv`
2040
2040
 
2041
2041
  Options:
2042
2042
  -l, --log-level <level> set log level (default: "info")
@@ -2543,18 +2543,22 @@ This is known as *Decryption at Access* and is written about in [the whitepaper]
2543
2543
 
2544
2544
  ### Usage
2545
2545
 
2546
- ```sh
2547
2546
  1. Install Radar
2548
2547
 
2548
+ ```sh
2549
2549
  $ curl -sfS https://dotenvx.sh/radar | sh
2550
+ ```
2550
2551
 
2551
2552
  2. Log in
2552
2553
 
2554
+ ```sh
2553
2555
  $ dotenvx-radar login
2554
2556
  ✔ logged in [username]
2557
+ ```
2555
2558
 
2556
2559
  3. Run dotenvx
2557
2560
 
2561
+ ```sh
2558
2562
  $ dotenvx run -- yourcommand
2559
2563
  [dotenvx@1.0.0] 📡 radar active
2560
2564
  [dotenvx@1.0.0] injecting env (1) from .env
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
- "version": "1.48.3",
2
+ "version": "1.49.0",
3
3
  "name": "@dotenvx/dotenvx",
4
- "description": "a better dotenv–from the creator of `dotenv`",
4
+ "description": "a secure dotenv–from the creator of `dotenv`",
5
5
  "author": "@motdotla",
6
6
  "keywords": [
7
7
  "dotenv",
@@ -44,7 +44,7 @@
44
44
  "funding": "https://dotenvx.com",
45
45
  "dependencies": {
46
46
  "commander": "^11.1.0",
47
- "dotenv": "^16.4.5",
47
+ "dotenv": "^17.2.1",
48
48
  "eciesjs": "^0.4.10",
49
49
  "execa": "^5.1.1",
50
50
  "fdir": "^6.2.0",
@@ -56,7 +56,7 @@
56
56
  "devDependencies": {
57
57
  "@yao-pkg/pkg": "^5.14.2",
58
58
  "capture-console": "^1.0.2",
59
- "esbuild": "^0.24.0",
59
+ "esbuild": "^0.25.8",
60
60
  "proxyquire": "^2.1.3",
61
61
  "sinon": "^14.0.1",
62
62
  "standard": "^17.1.0",
@@ -40,7 +40,7 @@ function dotenvParse (src, skipExpandForDoubleQuotes = false, skipConvertingWind
40
40
  //
41
41
  // # .env
42
42
  // HELLO="World"
43
- // HELLO="enrypted:1234"
43
+ // HELLO="encrypted:1234"
44
44
  obj[key] = obj[key] || []
45
45
  obj[key].push(value)
46
46
  } else {
@@ -10,7 +10,7 @@ function isFullyEncrypted (src) {
10
10
  //
11
11
  // # .env
12
12
  // HELLO="World"
13
- // HELLO="enrypted:1234"
13
+ // HELLO="encrypted:1234"
14
14
  //
15
15
  // key => [value1, ...]
16
16
  for (const value of values) {
@@ -13,13 +13,9 @@ class ProKeypair {
13
13
  let result = {}
14
14
 
15
15
  try {
16
- // if installed as sibling module
17
- const projectRoot = path.resolve(process.cwd())
18
- // eslint-disable-next-line no-eval
19
- const dotenvxProPath = eval('require').resolve('@dotenvx/dotenvx-pro', { paths: [projectRoot] }) // necessary for webpack builds
20
- // eslint-disable-next-line no-eval
21
- const { keypair } = eval('require')(dotenvxProPath) // necessary for webpack builds
22
- result = keypair(this.envFilepath)
16
+ const fallbackBin = path.resolve(process.cwd(), 'node_modules/.bin/dotenvx-pro')
17
+ const output = childProcess.execSync(`${fallbackBin} keypair -f ${this.envFilepath}`, { stdio: ['pipe', 'pipe', 'ignore'] }).toString().trim()
18
+ result = JSON.parse(output)
23
19
  } catch (_e) {
24
20
  try {
25
21
  // if installed as binary cli
@@ -41,13 +41,13 @@ class Prebuild {
41
41
 
42
42
  // check if that file is being ignored
43
43
  if (ig.ignores(file)) {
44
- if (file === '.env.example' || file === '.env.vault') {
44
+ if (file === '.env.example' || file === '.env.vault' || file === '.env.x') {
45
45
  const warning = new Error(`[dotenvx@${packageJson.version}][prebuild] ${file} (currently ignored but should not be)`)
46
46
  warning.help = `[dotenvx@${packageJson.version}][prebuild] ⮕ run [dotenvx ext gitignore --pattern !${file}]`
47
47
  warnings.push(warning)
48
48
  }
49
49
  } else {
50
- if (file !== '.env.example' && file !== '.env.vault') {
50
+ if (file !== '.env.example' && file !== '.env.vault' && file !== '.env.x') {
51
51
  const src = fsx.readFileX(file)
52
52
  const encrypted = isFullyEncrypted(src)
53
53
 
@@ -57,13 +57,13 @@ class Precommit {
57
57
  if (this._isFileToBeCommitted(file)) {
58
58
  // check if that file is being ignored
59
59
  if (ig.ignores(file)) {
60
- if (file === '.env.example' || file === '.env.vault') {
60
+ if (file === '.env.example' || file === '.env.vault' || file === '.env.x') {
61
61
  const warning = new Error(`[dotenvx@${packageJson.version}][precommit] ${file} (currently ignored but should not be)`)
62
62
  warning.help = `[dotenvx@${packageJson.version}][precommit] ⮕ run [dotenvx ext gitignore --pattern !${file}]`
63
63
  warnings.push(warning)
64
64
  }
65
65
  } else {
66
- if (file !== '.env.example' && file !== '.env.vault') {
66
+ if (file !== '.env.example' && file !== '.env.vault' && file !== '.env.x') {
67
67
  const src = fsx.readFileX(file)
68
68
  const encrypted = isFullyEncrypted(src)
69
69