@dotenvx/dotenvx 1.38.2 → 1.38.4

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.38.2...main)
5
+ [Unreleased](https://github.com/dotenvx/dotenvx/compare/v1.38.4...main)
6
+
7
+ ## [1.38.4](https://github.com/dotenvx/dotenvx/compare/v1.38.3...v1.38.4)
8
+
9
+ ### Changed
10
+
11
+ * 🐞 Fix blank line disappearing after encrypting empty value ([#542](https://github.com/dotenvx/dotenvx/pull/542))
12
+
13
+ ## [1.38.3](https://github.com/dotenvx/dotenvx/compare/v1.38.2...v1.38.3)
14
+
15
+ ### Changed
16
+
17
+ * 🐞 Fix self-referencing expansion when key exists already in `process.env` ([#536](https://github.com/dotenvx/dotenvx/pull/536))
6
18
 
7
19
  ## [1.38.2](https://github.com/dotenvx/dotenvx/compare/v1.38.1...v1.38.2)
8
20
 
package/README.md CHANGED
@@ -2232,27 +2232,48 @@ More examples
2232
2232
 
2233
2233
  ## Guides
2234
2234
 
2235
- > Go deeper into using `dotenvx` with detailed framework and platform guides.
2235
+ > Go deeper with `dotenvx` detailed framework and platform guides.
2236
2236
  >
2237
2237
 
2238
- * <a href="https://dotenvx.com/docs/platforms/digital-ocean">Digital Ocean <img src="https://api.iconify.design/devicon/digitalocean.svg" alt="Digital Ocean" width="20" /></a>
2239
- * <a href="https://dotenvx.com/docs/platforms/docker">Docker <img src="https://api.iconify.design/skill-icons/docker.svg" alt="Docker" width="20" /></a>
2240
- * <a href="https://dotenvx.com/docs/platforms/fly">Fly.io <img src="https://api.iconify.design/logos/fly-icon.svg" alt="Fly.io" width="20" /></a>
2241
- * <a href="https://dotenvx.com/docs/cis/github-actions">GitHub Actions <img src="https://api.iconify.design/devicon/github.svg" alt="GitHub" width="20" /></a>
2242
- * <a href="https://dotenvx.com/docs/platforms/heroku">Heroku <img src="https://api.iconify.design/skill-icons/heroku.svg" alt="Heroku" width="20" /></a>
2243
- * <a href="https://dotenvx.com/docs/platforms/netlify">Netlify <img src="https://api.iconify.design/skill-icons/netlify-light.svg" alt="Netlify" width="20" /></a>
2244
- * <a href="https://dotenvx.com/docs/package-managers/npm">NPM <img src="https://cdn.jsdelivr.net/npm/simple-icons@latest/icons/npm.svg" alt="NPM Logo" width="20" height="20" style="fill:#CB3837;"></a>
2245
- * <a href="https://dotenvx.com/docs/monorepos/nx">Nx <img src="https://cdn.jsdelivr.net/npm/simple-icons@latest/icons/nx.svg" alt="Nx Logo" width="20" height="20" style="fill:#143055;"></a>
2246
- * <a href="https://dotenvx.com/docs/platforms/render">Render <img src="https://api.iconify.design/simple-icons/render.svg" alt="Render" width="20" /></a>
2247
- * <a href="https://dotenvx.com/docs/platforms/railway">Railway <img src="https://api.iconify.design/simple-icons/railway.svg" alt="Railway" width="20" /></a>
2248
- * <a href="https://dotenvx.com/docs/monorepos/turborepo">Turborepo <img src="https://cdn.jsdelivr.net/npm/simple-icons@latest/icons/turborepo.svg" alt="Turborepo Logo" width="20" height="20" style="fill:#EF4444;"></a>
2249
- * <a href="https://dotenvx.com/docs/platforms/vercel">Vercel <img src="https://api.iconify.design/devicon/vercel.svg" alt="Vercel" width="20" /></a>
2250
- * [more](https://dotenvx.com/docs/guides)
2251
- * <a href="https://dotenvx.com/docs/guides#node-js">Node.js <img src="https://cdn.jsdelivr.net/npm/simple-icons@latest/icons/nodejs.svg" alt="Node.js Logo" width="20" height="20" style="fill:#5FA04E;"></a>
2252
- * <a href="https://dotenvx.com/docs/guides#python">Python <img src="https://cdn.jsdelivr.net/npm/simple-icons@latest/icons/python.svg" alt="Python Logo" width="20" height="20" style="fill:#3776AB;"></a>
2253
- * <a href="https://dotenvx.com/docs/guides#php">PHP <img src="https://cdn.jsdelivr.net/npm/simple-icons@latest/icons/php.svg" alt="PHP Logo" width="20" height="20" style="fill:#777BB4;"></a>
2254
- * <a href="https://dotenvx.com/docs/guides#ruby">Ruby <img src="https://cdn.jsdelivr.net/npm/simple-icons@latest/icons/ruby.svg" alt="Ruby Logo" width="20" height="20" style="fill:#CC342D;"></a>
2255
- * <a href="https://dotenvx.com/docs/guides#rust">Rust <img src="https://cdn.jsdelivr.net/npm/simple-icons@latest/icons/rust.svg" alt="Rust Logo" width="20" height="20" style="fill:#000000;"></a>
2238
+ * [Languages](https://dotenvx.com/docs#languages)
2239
+ * [Node.js](https://dotenvx.com/docs/languages/nodejs)
2240
+ * [Python](https://dotenvx.com/docs/languages/python)
2241
+ * [Ruby](https://dotenvx.com/docs/languages/ruby)
2242
+ * [Go](https://dotenvx.com/docs/languages/go)
2243
+ * [PHP](https://dotenvx.com/docs/languages/php)
2244
+ * [Rust](https://dotenvx.com/docs/languages/rust)
2245
+ * [Frameworks](https://dotenvx.com/docs#frameworks)
2246
+ * [Astro](https://dotenvx.com/docs/frameworks/astro)
2247
+ * [Express](https://dotenvx.com/docs/frameworks/express)
2248
+ * [Next](https://dotenvx.com/docs/frameworks/next)
2249
+ * [Remix](https://dotenvx.com/docs/frameworks/remix)
2250
+ * [Flask](https://dotenvx.com/docs/frameworks/flask)
2251
+ * [Sinatra](https://dotenvx.com/docs/frameworks/sinatra)
2252
+ * [Rocket](https://dotenvx.com/docs/frameworks/rocket)
2253
+ * [Platforms](https://dotenvx.com/docs#platforms)
2254
+ * [Digital Ocean](https://dotenvx.com/docs/platforms/digital-ocean)
2255
+ * [Docker](https://dotenvx.com/docs/platforms/docker)
2256
+ * [Fly](https://dotenvx.com/docs/platforms/fly)
2257
+ * [Heroku](https://dotenvx.com/docs/platforms/heroku)
2258
+ * [Netlify](https://dotenvx.com/docs/platforms/netlify)
2259
+ * [Vercel](https://dotenvx.com/docs/platforms/vercel)
2260
+ * [Railway](https://dotenvx.com/docs/platforms/railway)
2261
+ * [Render](https://dotenvx.com/docs/platforms/render)
2262
+ * [CI/CDs](https://dotenvx.com/docs#cis)
2263
+ * [GitHub Actions](https://dotenvx.com/docs/cis/github-actions)
2264
+ * [Background Jobs](https://dotenvx.com/docs#background-jobs)
2265
+ * [Trigger.dev](https://dotenvx.com/docs/background-jobs/triggerdotdev)
2266
+ * [Package Managers](https://dotenvx.com/docs#package-managers)
2267
+ * [NPM](https://dotenvx.com/docs/package-managers/npm)
2268
+ * [PNPM](https://dotenvx.com/docs/package-managers/pnpm)
2269
+ * [Process Managers](https://dotenvx.com/docs#process-managers)
2270
+ * [PM2](https://dotenvx.com/docs/process-managers/pm2)
2271
+ * [Monorepos](https://dotenvx.com/docs#monorepos)
2272
+ * [Nx](https://dotenvx.com/docs/monorepos/nx)
2273
+ * [Turborepo](https://dotenvx.com/docs/monorepos/turborepo)
2274
+ * [Concepts](https://dotenvx.com/docs#concepts)
2275
+ * [.env](https://dotenvx.com/docs/env-file)
2276
+ * [.env.keys](https://dotenvx.com/docs/env-keys-file)
2256
2277
 
2257
2278
  &nbsp;
2258
2279
 
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.38.2",
2
+ "version": "1.38.4",
3
3
  "name": "@dotenvx/dotenvx",
4
4
  "description": "a better dotenv–from the creator of `dotenv`",
5
5
  "author": "@motdotla",
@@ -60,7 +60,7 @@ class Parse {
60
60
  }
61
61
 
62
62
  // expand empty, double, or backticks
63
- if (!evaled && quote !== "'" && !this.processEnv[key]) {
63
+ if (!evaled && quote !== "'" && (!this.processEnv[key] || this.overload)) {
64
64
  this.parsed[key] = resolveEscapeSequences(this.expand(this.parsed[key]))
65
65
  }
66
66
 
@@ -20,6 +20,15 @@ function replace (src, key, replaceValue) {
20
20
  let enforceEndOfLine = ''
21
21
  if (escapedOriginalValue === '') {
22
22
  enforceEndOfLine = '$' // EMPTY scenario
23
+
24
+ // if empty quote and consecutive newlines
25
+ const newlineMatch = src.match(new RegExp(`${key}\\s*=\\s*\n\n`, 'm')) // match any consecutive newline scenario for a blank value
26
+ if (quote === '' && newlineMatch) {
27
+ const newlineCount = (newlineMatch[0].match(/\n/g)).length - 1
28
+ for (let i = 0; i < newlineCount; i++) {
29
+ newPart += '\n' // re-append the extra newline to preserve user's format choice
30
+ }
31
+ }
23
32
  }
24
33
 
25
34
  const currentPart = new RegExp(