@dotenvx/primitives 0.3.0 → 0.4.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/dist/index.cjs +102 -58
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -6081,43 +6081,13 @@ var require_expand = __commonJS({
|
|
|
6081
6081
|
}
|
|
6082
6082
|
});
|
|
6083
6083
|
|
|
6084
|
-
// src/
|
|
6085
|
-
var
|
|
6086
|
-
"src/
|
|
6087
|
-
var { PrivateKey } = require_dist();
|
|
6088
|
-
var derive2 = require_derive();
|
|
6089
|
-
function keyring2() {
|
|
6090
|
-
const mem = {};
|
|
6091
|
-
const processEnv = process.env;
|
|
6092
|
-
for (const name in processEnv) {
|
|
6093
|
-
if (name.startsWith("DOTENV_PRIVATE_KEY")) {
|
|
6094
|
-
try {
|
|
6095
|
-
const privateKeyHex = processEnv[name];
|
|
6096
|
-
const publicKeyHex = derive2(privateKeyHex);
|
|
6097
|
-
mem[publicKeyHex] = privateKeyHex;
|
|
6098
|
-
} catch (_e) {
|
|
6099
|
-
}
|
|
6100
|
-
}
|
|
6101
|
-
}
|
|
6102
|
-
return mem;
|
|
6103
|
-
}
|
|
6104
|
-
module2.exports = keyring2;
|
|
6105
|
-
}
|
|
6106
|
-
});
|
|
6107
|
-
|
|
6108
|
-
// src/parse.js
|
|
6109
|
-
var require_parse = __commonJS({
|
|
6110
|
-
"src/parse.js"(exports2, module2) {
|
|
6111
|
-
var decrypt2 = require_decrypt();
|
|
6112
|
-
var keyring2 = require_keyring();
|
|
6113
|
-
var encrypted2 = require_encrypted();
|
|
6114
|
-
var evaluate2 = require_evaluate();
|
|
6115
|
-
var expand2 = require_expand();
|
|
6116
|
-
var LINE = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;
|
|
6084
|
+
// src/scan.js
|
|
6085
|
+
var require_scan = __commonJS({
|
|
6086
|
+
"src/scan.js"(exports2, module2) {
|
|
6117
6087
|
function trimmer(value) {
|
|
6118
6088
|
return (value || "").trim();
|
|
6119
6089
|
}
|
|
6120
|
-
function
|
|
6090
|
+
function getQuote(value) {
|
|
6121
6091
|
const v = trimmer(value);
|
|
6122
6092
|
const maybeQuote = v[0];
|
|
6123
6093
|
let q = "";
|
|
@@ -6140,16 +6110,93 @@ var require_parse = __commonJS({
|
|
|
6140
6110
|
}
|
|
6141
6111
|
return q;
|
|
6142
6112
|
}
|
|
6143
|
-
function clean(value,
|
|
6113
|
+
function clean(value, quote) {
|
|
6144
6114
|
let v = trimmer(value);
|
|
6145
6115
|
v = v.replace(/^(['"`])([\s\S]*)\1$/mg, "$2");
|
|
6146
|
-
if (
|
|
6116
|
+
if (quote === '"') {
|
|
6147
6117
|
v = v.replace(/\\n/g, "\n");
|
|
6148
6118
|
v = v.replace(/\\r/g, "\r");
|
|
6149
6119
|
v = v.replace(/\\t/g, " ");
|
|
6150
6120
|
}
|
|
6151
6121
|
return v;
|
|
6152
6122
|
}
|
|
6123
|
+
function scan2(src, transform) {
|
|
6124
|
+
const LINE = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;
|
|
6125
|
+
const parsed = {};
|
|
6126
|
+
const lines = (src || "").toString().replace(/\r\n?/mg, "\n");
|
|
6127
|
+
let match;
|
|
6128
|
+
while ((match = LINE.exec(lines)) !== null) {
|
|
6129
|
+
const name = match[1];
|
|
6130
|
+
const raw = match[2];
|
|
6131
|
+
const quote = getQuote(raw);
|
|
6132
|
+
const value = clean(raw, quote);
|
|
6133
|
+
let parsedValue = value;
|
|
6134
|
+
if (typeof transform === "function") {
|
|
6135
|
+
parsedValue = transform({
|
|
6136
|
+
name,
|
|
6137
|
+
value,
|
|
6138
|
+
quote
|
|
6139
|
+
});
|
|
6140
|
+
}
|
|
6141
|
+
parsed[name] = parsedValue;
|
|
6142
|
+
}
|
|
6143
|
+
return {
|
|
6144
|
+
parsed
|
|
6145
|
+
};
|
|
6146
|
+
}
|
|
6147
|
+
module2.exports = scan2;
|
|
6148
|
+
}
|
|
6149
|
+
});
|
|
6150
|
+
|
|
6151
|
+
// src/keyring.js
|
|
6152
|
+
var require_keyring = __commonJS({
|
|
6153
|
+
"src/keyring.js"(exports2, module2) {
|
|
6154
|
+
var fs = require("fs");
|
|
6155
|
+
var derive2 = require_derive();
|
|
6156
|
+
var scan2 = require_scan();
|
|
6157
|
+
function keysFromFile(filepath = ".env.keys") {
|
|
6158
|
+
try {
|
|
6159
|
+
const src = fs.readFileSync(filepath, "utf8");
|
|
6160
|
+
const { parsed } = scan2(src);
|
|
6161
|
+
return parsed;
|
|
6162
|
+
} catch (_e) {
|
|
6163
|
+
return {};
|
|
6164
|
+
}
|
|
6165
|
+
}
|
|
6166
|
+
function keyring2() {
|
|
6167
|
+
const mem = {};
|
|
6168
|
+
const processEnv = process.env;
|
|
6169
|
+
const keysFilepath = ".env.keys";
|
|
6170
|
+
const sources = {
|
|
6171
|
+
...keysFromFile(keysFilepath),
|
|
6172
|
+
...processEnv
|
|
6173
|
+
// process.env wins
|
|
6174
|
+
};
|
|
6175
|
+
for (const name in sources) {
|
|
6176
|
+
if (name.startsWith("DOTENV_PRIVATE_KEY")) {
|
|
6177
|
+
try {
|
|
6178
|
+
const privateKeyHex = sources[name];
|
|
6179
|
+
const publicKeyHex = derive2(privateKeyHex);
|
|
6180
|
+
mem[publicKeyHex] = privateKeyHex;
|
|
6181
|
+
} catch (_e) {
|
|
6182
|
+
}
|
|
6183
|
+
}
|
|
6184
|
+
}
|
|
6185
|
+
return mem;
|
|
6186
|
+
}
|
|
6187
|
+
module2.exports = keyring2;
|
|
6188
|
+
}
|
|
6189
|
+
});
|
|
6190
|
+
|
|
6191
|
+
// src/parse.js
|
|
6192
|
+
var require_parse = __commonJS({
|
|
6193
|
+
"src/parse.js"(exports2, module2) {
|
|
6194
|
+
var decrypt2 = require_decrypt();
|
|
6195
|
+
var keyring2 = require_keyring();
|
|
6196
|
+
var encrypted2 = require_encrypted();
|
|
6197
|
+
var evaluate2 = require_evaluate();
|
|
6198
|
+
var expand2 = require_expand();
|
|
6199
|
+
var scan2 = require_scan();
|
|
6153
6200
|
function resolveEscapeSequences(value) {
|
|
6154
6201
|
return value.replace(/\\\$/g, "$");
|
|
6155
6202
|
}
|
|
@@ -6160,50 +6207,45 @@ var require_parse = __commonJS({
|
|
|
6160
6207
|
function inProcessEnv(name) {
|
|
6161
6208
|
return Object.prototype.hasOwnProperty.call(processEnv, name);
|
|
6162
6209
|
}
|
|
6163
|
-
let parsed = {};
|
|
6164
6210
|
let publicKeyHex;
|
|
6165
6211
|
let runningParsed = {};
|
|
6166
6212
|
let literals = {};
|
|
6167
|
-
const
|
|
6168
|
-
|
|
6169
|
-
while ((match = LINE.exec(lines)) !== null) {
|
|
6170
|
-
const name = match[1];
|
|
6171
|
-
const value = match[2];
|
|
6172
|
-
const _quote = quote(value);
|
|
6173
|
-
parsed[name] = clean(value, _quote);
|
|
6213
|
+
const { parsed } = scan2(src, ({ name, value, quote }) => {
|
|
6214
|
+
let parsedValue = value;
|
|
6174
6215
|
if (name.startsWith("DOTENV_PUBLIC_KEY")) {
|
|
6175
|
-
publicKeyHex =
|
|
6216
|
+
publicKeyHex = parsedValue;
|
|
6176
6217
|
}
|
|
6177
6218
|
if (!overload && inProcessEnv(name)) {
|
|
6178
|
-
|
|
6219
|
+
parsedValue = processEnv[name];
|
|
6179
6220
|
}
|
|
6180
6221
|
try {
|
|
6181
|
-
|
|
6222
|
+
parsedValue = decrypt2(ring[publicKeyHex], parsedValue);
|
|
6182
6223
|
} catch (_e) {
|
|
6183
6224
|
}
|
|
6184
|
-
const encryptedPrefixed = encrypted2(
|
|
6225
|
+
const encryptedPrefixed = encrypted2(parsedValue);
|
|
6185
6226
|
let evaled = false;
|
|
6186
|
-
if (!encryptedPrefixed &&
|
|
6187
|
-
const priorEvaled =
|
|
6227
|
+
if (!encryptedPrefixed && quote !== "'" && (!inProcessEnv(name) || processEnv[name] === parsedValue)) {
|
|
6228
|
+
const priorEvaled = parsedValue;
|
|
6188
6229
|
try {
|
|
6189
|
-
|
|
6230
|
+
parsedValue = evaluate2(priorEvaled, { processEnv, runningParsed });
|
|
6190
6231
|
} catch (_e) {
|
|
6191
6232
|
}
|
|
6192
|
-
if (priorEvaled !==
|
|
6233
|
+
if (priorEvaled !== parsedValue) {
|
|
6193
6234
|
evaled = true;
|
|
6194
6235
|
}
|
|
6195
6236
|
}
|
|
6196
|
-
if (!encryptedPrefixed && !evaled &&
|
|
6197
|
-
|
|
6237
|
+
if (!encryptedPrefixed && !evaled && quote !== "'" && (!processEnv[name] || overload)) {
|
|
6238
|
+
parsedValue = resolveEscapeSequences(expand2(parsedValue, { processEnv, runningParsed, literals }));
|
|
6198
6239
|
}
|
|
6199
6240
|
if (quote === "'") {
|
|
6200
|
-
literals[name] =
|
|
6241
|
+
literals[name] = parsedValue;
|
|
6201
6242
|
}
|
|
6202
|
-
runningParsed[name] =
|
|
6243
|
+
runningParsed[name] = parsedValue;
|
|
6203
6244
|
if (Object.prototype.hasOwnProperty.call(processEnv, name) && !overload) {
|
|
6204
6245
|
} else {
|
|
6205
6246
|
}
|
|
6206
|
-
|
|
6247
|
+
return parsedValue;
|
|
6248
|
+
});
|
|
6207
6249
|
return {
|
|
6208
6250
|
parsed
|
|
6209
6251
|
};
|
|
@@ -6220,6 +6262,7 @@ var evaluate = require_evaluate();
|
|
|
6220
6262
|
var expand = require_expand();
|
|
6221
6263
|
var keyring = require_keyring();
|
|
6222
6264
|
var parse = require_parse();
|
|
6265
|
+
var scan = require_scan();
|
|
6223
6266
|
module.exports = {
|
|
6224
6267
|
decrypt,
|
|
6225
6268
|
derive,
|
|
@@ -6227,5 +6270,6 @@ module.exports = {
|
|
|
6227
6270
|
evaluate,
|
|
6228
6271
|
expand,
|
|
6229
6272
|
keyring,
|
|
6230
|
-
parse
|
|
6273
|
+
parse,
|
|
6274
|
+
scan
|
|
6231
6275
|
};
|
package/package.json
CHANGED