From 86a96a80a292831db17957f726ce39347c22703b Mon Sep 17 00:00:00 2001 From: Scott Motte Date: Wed, 2 Feb 2022 11:47:18 -0800 Subject: [PATCH 1/2] Add test for empty single or double quotes value --- lib/main.js | 2 +- tests/.env | 2 ++ tests/test-parse.js | 4 ++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/main.js b/lib/main.js index 27f4620f..34facb25 100644 --- a/lib/main.js +++ b/lib/main.js @@ -28,7 +28,7 @@ function parse (src) { const maybeQuote = value[0] // Remove surrounding quotes - value = value.replace(/^(['"])([\s\S]+)\1$/mg, '$2') + value = value.replace(/^(['"])([\s\S]*)\1$/mg, '$2') // Expand newlines if double quoted if (maybeQuote === '"') { diff --git a/tests/.env b/tests/.env index fe0d87e9..241c88fd 100644 --- a/tests/.env +++ b/tests/.env @@ -3,6 +3,8 @@ BASIC=basic # previous line intentionally left blank AFTER_LINE=after_line EMPTY= +EMPTY_SINGLE_QUOTES='' +EMPTY_DOUBLE_QUOTES="" SINGLE_QUOTES='single_quotes' SINGLE_QUOTES_SPACED=' single quotes ' DOUBLE_QUOTES="double_quotes" diff --git a/tests/test-parse.js b/tests/test-parse.js index f5614ed6..7526ecfa 100644 --- a/tests/test-parse.js +++ b/tests/test-parse.js @@ -13,6 +13,10 @@ t.equal(parsed.AFTER_LINE, 'after_line', 'reads after a skipped line') t.equal(parsed.EMPTY, '', 'defaults empty values to empty string') +t.equal(parsed.EMPTY_SINGLE_QUOTES, '', 'defaults empty values to empty string') + +t.equal(parsed.EMPTY_DOUBLE_QUOTES, '', 'defaults empty values to empty string') + t.equal(parsed.SINGLE_QUOTES, 'single_quotes', 'escapes single quoted values') t.equal(parsed.SINGLE_QUOTES_SPACED, ' single quotes ', 'respects surrounding spaces in single quotes') From 298e989fca9638688884ac2e2236551d1ed4f253 Mon Sep 17 00:00:00 2001 From: Scott Motte Date: Wed, 2 Feb 2022 11:50:09 -0800 Subject: [PATCH 2/2] v15.0.1 --- CHANGELOG.md | 6 ++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 17168102..e350818d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file. See [standa ## [Unreleased](https://github.com/motdotla/dotenv/compare/v15.0.0...master) +## [15.0.1](https://github.com/motdotla/dotenv/compare/v15.0.0...v15.0.1) (2022-02-02) + +### Changed + +- Properly parse empty single or double quoted values 🐞 ([#614](https://github.com/motdotla/dotenv/pull/614)) + ## [15.0.0](https://github.com/motdotla/dotenv/compare/v14.3.2...v15.0.0) (2022-01-31) `v15.0.0` is a major new release with some important breaking changes. diff --git a/package-lock.json b/package-lock.json index f4d42673..de80a80b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { "name": "dotenv", - "version": "15.0.0", + "version": "15.0.1", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "15.0.0", + "version": "15.0.1", "license": "BSD-2-Clause", "devDependencies": { "@types/node": "^17.0.9", diff --git a/package.json b/package.json index c1c97e8d..295755bf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dotenv", - "version": "15.0.0", + "version": "15.0.1", "description": "Loads environment variables from .env file", "main": "lib/main.js", "types": "lib/main.d.ts",