@dotenvx/next-env 2.0.0 → 2.0.2
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 +1 -1
- package/dist/index.cjs +98 -57
- package/package.json +2 -2
package/README.md
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -6010,40 +6010,12 @@ var require_dist = __commonJS({
|
|
|
6010
6010
|
module22.exports = expand2;
|
|
6011
6011
|
}
|
|
6012
6012
|
});
|
|
6013
|
-
var
|
|
6014
|
-
"src/
|
|
6015
|
-
var { PrivateKey } = require_dist2();
|
|
6016
|
-
var derive2 = require_derive();
|
|
6017
|
-
function keyring2() {
|
|
6018
|
-
const mem = {};
|
|
6019
|
-
const processEnv2 = process.env;
|
|
6020
|
-
for (const name in processEnv2) {
|
|
6021
|
-
if (name.startsWith("DOTENV_PRIVATE_KEY")) {
|
|
6022
|
-
try {
|
|
6023
|
-
const privateKeyHex = processEnv2[name];
|
|
6024
|
-
const publicKeyHex = derive2(privateKeyHex);
|
|
6025
|
-
mem[publicKeyHex] = privateKeyHex;
|
|
6026
|
-
} catch (_e) {
|
|
6027
|
-
}
|
|
6028
|
-
}
|
|
6029
|
-
}
|
|
6030
|
-
return mem;
|
|
6031
|
-
}
|
|
6032
|
-
module22.exports = keyring2;
|
|
6033
|
-
}
|
|
6034
|
-
});
|
|
6035
|
-
var require_parse = __commonJS2({
|
|
6036
|
-
"src/parse.js"(exports22, module22) {
|
|
6037
|
-
var decrypt2 = require_decrypt();
|
|
6038
|
-
var keyring2 = require_keyring();
|
|
6039
|
-
var encrypted2 = require_encrypted();
|
|
6040
|
-
var evaluate2 = require_evaluate();
|
|
6041
|
-
var expand2 = require_expand();
|
|
6042
|
-
var LINE = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;
|
|
6013
|
+
var require_scan = __commonJS2({
|
|
6014
|
+
"src/scan.js"(exports22, module22) {
|
|
6043
6015
|
function trimmer(value) {
|
|
6044
6016
|
return (value || "").trim();
|
|
6045
6017
|
}
|
|
6046
|
-
function
|
|
6018
|
+
function getQuote(value) {
|
|
6047
6019
|
const v = trimmer(value);
|
|
6048
6020
|
const maybeQuote = v[0];
|
|
6049
6021
|
let q = "";
|
|
@@ -6066,16 +6038,89 @@ var require_dist = __commonJS({
|
|
|
6066
6038
|
}
|
|
6067
6039
|
return q;
|
|
6068
6040
|
}
|
|
6069
|
-
function clean(value,
|
|
6041
|
+
function clean(value, quote) {
|
|
6070
6042
|
let v = trimmer(value);
|
|
6071
6043
|
v = v.replace(/^(['"`])([\s\S]*)\1$/mg, "$2");
|
|
6072
|
-
if (
|
|
6044
|
+
if (quote === '"') {
|
|
6073
6045
|
v = v.replace(/\\n/g, "\n");
|
|
6074
6046
|
v = v.replace(/\\r/g, "\r");
|
|
6075
6047
|
v = v.replace(/\\t/g, " ");
|
|
6076
6048
|
}
|
|
6077
6049
|
return v;
|
|
6078
6050
|
}
|
|
6051
|
+
function scan2(src, transform) {
|
|
6052
|
+
const LINE = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;
|
|
6053
|
+
const parsed = {};
|
|
6054
|
+
const lines = (src || "").toString().replace(/\r\n?/mg, "\n");
|
|
6055
|
+
let match;
|
|
6056
|
+
while ((match = LINE.exec(lines)) !== null) {
|
|
6057
|
+
const name = match[1];
|
|
6058
|
+
const raw = match[2];
|
|
6059
|
+
const quote = getQuote(raw);
|
|
6060
|
+
const value = clean(raw, quote);
|
|
6061
|
+
let parsedValue = value;
|
|
6062
|
+
if (typeof transform === "function") {
|
|
6063
|
+
parsedValue = transform({
|
|
6064
|
+
name,
|
|
6065
|
+
value,
|
|
6066
|
+
quote
|
|
6067
|
+
});
|
|
6068
|
+
}
|
|
6069
|
+
parsed[name] = parsedValue;
|
|
6070
|
+
}
|
|
6071
|
+
return {
|
|
6072
|
+
parsed
|
|
6073
|
+
};
|
|
6074
|
+
}
|
|
6075
|
+
module22.exports = scan2;
|
|
6076
|
+
}
|
|
6077
|
+
});
|
|
6078
|
+
var require_keyring = __commonJS2({
|
|
6079
|
+
"src/keyring.js"(exports22, module22) {
|
|
6080
|
+
var fs2 = require("fs");
|
|
6081
|
+
var derive2 = require_derive();
|
|
6082
|
+
var scan2 = require_scan();
|
|
6083
|
+
function keysFromFile(filepath = ".env.keys") {
|
|
6084
|
+
try {
|
|
6085
|
+
const src = fs2.readFileSync(filepath, "utf8");
|
|
6086
|
+
const { parsed } = scan2(src);
|
|
6087
|
+
return parsed;
|
|
6088
|
+
} catch (_e) {
|
|
6089
|
+
return {};
|
|
6090
|
+
}
|
|
6091
|
+
}
|
|
6092
|
+
function keyring2() {
|
|
6093
|
+
const mem = {};
|
|
6094
|
+
const processEnv2 = process.env;
|
|
6095
|
+
const keysFilepath = ".env.keys";
|
|
6096
|
+
const sources = {
|
|
6097
|
+
...keysFromFile(keysFilepath),
|
|
6098
|
+
...processEnv2
|
|
6099
|
+
// process.env wins
|
|
6100
|
+
};
|
|
6101
|
+
for (const name in sources) {
|
|
6102
|
+
if (name.startsWith("DOTENV_PRIVATE_KEY")) {
|
|
6103
|
+
try {
|
|
6104
|
+
const privateKeyHex = sources[name];
|
|
6105
|
+
const publicKeyHex = derive2(privateKeyHex);
|
|
6106
|
+
mem[publicKeyHex] = privateKeyHex;
|
|
6107
|
+
} catch (_e) {
|
|
6108
|
+
}
|
|
6109
|
+
}
|
|
6110
|
+
}
|
|
6111
|
+
return mem;
|
|
6112
|
+
}
|
|
6113
|
+
module22.exports = keyring2;
|
|
6114
|
+
}
|
|
6115
|
+
});
|
|
6116
|
+
var require_parse = __commonJS2({
|
|
6117
|
+
"src/parse.js"(exports22, module22) {
|
|
6118
|
+
var decrypt2 = require_decrypt();
|
|
6119
|
+
var keyring2 = require_keyring();
|
|
6120
|
+
var encrypted2 = require_encrypted();
|
|
6121
|
+
var evaluate2 = require_evaluate();
|
|
6122
|
+
var expand2 = require_expand();
|
|
6123
|
+
var scan2 = require_scan();
|
|
6079
6124
|
function resolveEscapeSequences(value) {
|
|
6080
6125
|
return value.replace(/\\\$/g, "$");
|
|
6081
6126
|
}
|
|
@@ -6086,50 +6131,45 @@ var require_dist = __commonJS({
|
|
|
6086
6131
|
function inProcessEnv(name) {
|
|
6087
6132
|
return Object.prototype.hasOwnProperty.call(processEnv2, name);
|
|
6088
6133
|
}
|
|
6089
|
-
let parsed = {};
|
|
6090
6134
|
let publicKeyHex;
|
|
6091
6135
|
let runningParsed = {};
|
|
6092
6136
|
let literals = {};
|
|
6093
|
-
const
|
|
6094
|
-
|
|
6095
|
-
while ((match = LINE.exec(lines)) !== null) {
|
|
6096
|
-
const name = match[1];
|
|
6097
|
-
const value = match[2];
|
|
6098
|
-
const _quote = quote(value);
|
|
6099
|
-
parsed[name] = clean(value, _quote);
|
|
6137
|
+
const { parsed } = scan2(src, ({ name, value, quote }) => {
|
|
6138
|
+
let parsedValue = value;
|
|
6100
6139
|
if (name.startsWith("DOTENV_PUBLIC_KEY")) {
|
|
6101
|
-
publicKeyHex =
|
|
6140
|
+
publicKeyHex = parsedValue;
|
|
6102
6141
|
}
|
|
6103
6142
|
if (!overload && inProcessEnv(name)) {
|
|
6104
|
-
|
|
6143
|
+
parsedValue = processEnv2[name];
|
|
6105
6144
|
}
|
|
6106
6145
|
try {
|
|
6107
|
-
|
|
6146
|
+
parsedValue = decrypt2(ring[publicKeyHex], parsedValue);
|
|
6108
6147
|
} catch (_e) {
|
|
6109
6148
|
}
|
|
6110
|
-
const encryptedPrefixed = encrypted2(
|
|
6149
|
+
const encryptedPrefixed = encrypted2(parsedValue);
|
|
6111
6150
|
let evaled = false;
|
|
6112
|
-
if (!encryptedPrefixed &&
|
|
6113
|
-
const priorEvaled =
|
|
6151
|
+
if (!encryptedPrefixed && quote !== "'" && (!inProcessEnv(name) || processEnv2[name] === parsedValue)) {
|
|
6152
|
+
const priorEvaled = parsedValue;
|
|
6114
6153
|
try {
|
|
6115
|
-
|
|
6154
|
+
parsedValue = evaluate2(priorEvaled, { processEnv: processEnv2, runningParsed });
|
|
6116
6155
|
} catch (_e) {
|
|
6117
6156
|
}
|
|
6118
|
-
if (priorEvaled !==
|
|
6157
|
+
if (priorEvaled !== parsedValue) {
|
|
6119
6158
|
evaled = true;
|
|
6120
6159
|
}
|
|
6121
6160
|
}
|
|
6122
|
-
if (!encryptedPrefixed && !evaled &&
|
|
6123
|
-
|
|
6161
|
+
if (!encryptedPrefixed && !evaled && quote !== "'" && (!processEnv2[name] || overload)) {
|
|
6162
|
+
parsedValue = resolveEscapeSequences(expand2(parsedValue, { processEnv: processEnv2, runningParsed, literals }));
|
|
6124
6163
|
}
|
|
6125
6164
|
if (quote === "'") {
|
|
6126
|
-
literals[name] =
|
|
6165
|
+
literals[name] = parsedValue;
|
|
6127
6166
|
}
|
|
6128
|
-
runningParsed[name] =
|
|
6167
|
+
runningParsed[name] = parsedValue;
|
|
6129
6168
|
if (Object.prototype.hasOwnProperty.call(processEnv2, name) && !overload) {
|
|
6130
6169
|
} else {
|
|
6131
6170
|
}
|
|
6132
|
-
|
|
6171
|
+
return parsedValue;
|
|
6172
|
+
});
|
|
6133
6173
|
return {
|
|
6134
6174
|
parsed
|
|
6135
6175
|
};
|
|
@@ -6144,6 +6184,7 @@ var require_dist = __commonJS({
|
|
|
6144
6184
|
var expand = require_expand();
|
|
6145
6185
|
var keyring = require_keyring();
|
|
6146
6186
|
var parse2 = require_parse();
|
|
6187
|
+
var scan = require_scan();
|
|
6147
6188
|
module2.exports = {
|
|
6148
6189
|
decrypt,
|
|
6149
6190
|
derive,
|
|
@@ -6151,7 +6192,8 @@ var require_dist = __commonJS({
|
|
|
6151
6192
|
evaluate,
|
|
6152
6193
|
expand,
|
|
6153
6194
|
keyring,
|
|
6154
|
-
parse: parse2
|
|
6195
|
+
parse: parse2,
|
|
6196
|
+
scan
|
|
6155
6197
|
};
|
|
6156
6198
|
}
|
|
6157
6199
|
});
|
|
@@ -6201,8 +6243,7 @@ function processEnv(loadedEnvFiles, dir, log = console, forceReload = false, onR
|
|
|
6201
6243
|
const parsed = {};
|
|
6202
6244
|
for (const envFile of loadedEnvFiles) {
|
|
6203
6245
|
try {
|
|
6204
|
-
|
|
6205
|
-
result.parsed = parse(envFile.contents);
|
|
6246
|
+
const result = parse(envFile.contents);
|
|
6206
6247
|
if (result.parsed && !previousLoadedEnvFiles.some(
|
|
6207
6248
|
(item) => item.contents === envFile.contents && item.path === envFile.path
|
|
6208
6249
|
)) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dotenvx/next-env",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.2",
|
|
4
4
|
"description": "dotenvx drop-in replacement for @next/env",
|
|
5
5
|
"license": "BSD-3-Clause",
|
|
6
6
|
"repository": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"prepublishOnly": "npm pack --dry-run"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@dotenvx/primitives": "0.
|
|
26
|
+
"@dotenvx/primitives": "0.4.0",
|
|
27
27
|
"esbuild": "^0.28.1"
|
|
28
28
|
}
|
|
29
29
|
}
|