@dotenvx/primitives 0.3.0 → 0.5.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 +122 -62
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -5390,7 +5390,7 @@ var require_compat = __commonJS({
|
|
|
5390
5390
|
const isAEAD = algorithm === "aes-256-gcm" || algorithm === "chacha20-poly1305";
|
|
5391
5391
|
const authTagLength = isAEAD ? AEAD_TAG_LENGTH : 0;
|
|
5392
5392
|
const options = isAEAD ? { authTagLength } : void 0;
|
|
5393
|
-
const
|
|
5393
|
+
const encrypt2 = (plainText) => {
|
|
5394
5394
|
const cipher = (0, node_crypto_1.createCipheriv)(algorithm, key, nonce, options);
|
|
5395
5395
|
if (isAEAD && AAD !== void 0) {
|
|
5396
5396
|
cipher.setAAD(AAD);
|
|
@@ -5415,7 +5415,7 @@ var require_compat = __commonJS({
|
|
|
5415
5415
|
return (0, utils_1.concatBytes)(updated, finalized);
|
|
5416
5416
|
};
|
|
5417
5417
|
return {
|
|
5418
|
-
encrypt,
|
|
5418
|
+
encrypt: encrypt2,
|
|
5419
5419
|
decrypt: decrypt2
|
|
5420
5420
|
};
|
|
5421
5421
|
};
|
|
@@ -5826,13 +5826,13 @@ var require_dist = __commonJS({
|
|
|
5826
5826
|
"use strict";
|
|
5827
5827
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
5828
5828
|
exports2.PublicKey = exports2.PrivateKey = exports2.ECIES_CONFIG = void 0;
|
|
5829
|
-
exports2.encrypt =
|
|
5829
|
+
exports2.encrypt = encrypt2;
|
|
5830
5830
|
exports2.decrypt = decrypt2;
|
|
5831
5831
|
var utils_1 = require_utils();
|
|
5832
5832
|
var config_js_1 = require_config();
|
|
5833
5833
|
var index_js_1 = require_keys();
|
|
5834
5834
|
var index_js_2 = require_utils4();
|
|
5835
|
-
function
|
|
5835
|
+
function encrypt2(receiverRawPK, data, config = config_js_1.ECIES_CONFIG) {
|
|
5836
5836
|
const curve = config.ellipticCurve;
|
|
5837
5837
|
const ephemeralSK = new index_js_1.PrivateKey(void 0, curve);
|
|
5838
5838
|
const receiverPK = receiverRawPK instanceof Uint8Array ? new index_js_1.PublicKey(receiverRawPK, curve) : index_js_1.PublicKey.fromHex(receiverRawPK, curve);
|
|
@@ -6002,6 +6002,20 @@ var require_derive = __commonJS({
|
|
|
6002
6002
|
}
|
|
6003
6003
|
});
|
|
6004
6004
|
|
|
6005
|
+
// src/encrypt.js
|
|
6006
|
+
var require_encrypt = __commonJS({
|
|
6007
|
+
"src/encrypt.js"(exports2, module2) {
|
|
6008
|
+
var { encrypt: eciesEncrypt } = require_dist();
|
|
6009
|
+
var { PREFIX } = require_encrypted();
|
|
6010
|
+
function encrypt2(publicKeyHex, value) {
|
|
6011
|
+
const ciphertext = eciesEncrypt(publicKeyHex, Buffer.from(value));
|
|
6012
|
+
const encoded = Buffer.from(ciphertext, "hex").toString("base64");
|
|
6013
|
+
return `${PREFIX}${encoded}`;
|
|
6014
|
+
}
|
|
6015
|
+
module2.exports = encrypt2;
|
|
6016
|
+
}
|
|
6017
|
+
});
|
|
6018
|
+
|
|
6005
6019
|
// src/evaluate.js
|
|
6006
6020
|
var require_evaluate = __commonJS({
|
|
6007
6021
|
"src/evaluate.js"(exports2, module2) {
|
|
@@ -6081,43 +6095,13 @@ var require_expand = __commonJS({
|
|
|
6081
6095
|
}
|
|
6082
6096
|
});
|
|
6083
6097
|
|
|
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;
|
|
6098
|
+
// src/scan.js
|
|
6099
|
+
var require_scan = __commonJS({
|
|
6100
|
+
"src/scan.js"(exports2, module2) {
|
|
6117
6101
|
function trimmer(value) {
|
|
6118
6102
|
return (value || "").trim();
|
|
6119
6103
|
}
|
|
6120
|
-
function
|
|
6104
|
+
function getQuote(value) {
|
|
6121
6105
|
const v = trimmer(value);
|
|
6122
6106
|
const maybeQuote = v[0];
|
|
6123
6107
|
let q = "";
|
|
@@ -6140,16 +6124,93 @@ var require_parse = __commonJS({
|
|
|
6140
6124
|
}
|
|
6141
6125
|
return q;
|
|
6142
6126
|
}
|
|
6143
|
-
function clean(value,
|
|
6127
|
+
function clean(value, quote) {
|
|
6144
6128
|
let v = trimmer(value);
|
|
6145
6129
|
v = v.replace(/^(['"`])([\s\S]*)\1$/mg, "$2");
|
|
6146
|
-
if (
|
|
6130
|
+
if (quote === '"') {
|
|
6147
6131
|
v = v.replace(/\\n/g, "\n");
|
|
6148
6132
|
v = v.replace(/\\r/g, "\r");
|
|
6149
6133
|
v = v.replace(/\\t/g, " ");
|
|
6150
6134
|
}
|
|
6151
6135
|
return v;
|
|
6152
6136
|
}
|
|
6137
|
+
function scan2(src, transform) {
|
|
6138
|
+
const LINE = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;
|
|
6139
|
+
const parsed = {};
|
|
6140
|
+
const lines = (src || "").toString().replace(/\r\n?/mg, "\n");
|
|
6141
|
+
let match;
|
|
6142
|
+
while ((match = LINE.exec(lines)) !== null) {
|
|
6143
|
+
const name = match[1];
|
|
6144
|
+
const raw = match[2];
|
|
6145
|
+
const quote = getQuote(raw);
|
|
6146
|
+
const value = clean(raw, quote);
|
|
6147
|
+
let parsedValue = value;
|
|
6148
|
+
if (typeof transform === "function") {
|
|
6149
|
+
parsedValue = transform({
|
|
6150
|
+
name,
|
|
6151
|
+
value,
|
|
6152
|
+
quote
|
|
6153
|
+
});
|
|
6154
|
+
}
|
|
6155
|
+
parsed[name] = parsedValue;
|
|
6156
|
+
}
|
|
6157
|
+
return {
|
|
6158
|
+
parsed
|
|
6159
|
+
};
|
|
6160
|
+
}
|
|
6161
|
+
module2.exports = scan2;
|
|
6162
|
+
}
|
|
6163
|
+
});
|
|
6164
|
+
|
|
6165
|
+
// src/keyring.js
|
|
6166
|
+
var require_keyring = __commonJS({
|
|
6167
|
+
"src/keyring.js"(exports2, module2) {
|
|
6168
|
+
var fs = require("fs");
|
|
6169
|
+
var derive2 = require_derive();
|
|
6170
|
+
var scan2 = require_scan();
|
|
6171
|
+
function keysFromFile(filepath = ".env.keys") {
|
|
6172
|
+
try {
|
|
6173
|
+
const src = fs.readFileSync(filepath, "utf8");
|
|
6174
|
+
const { parsed } = scan2(src);
|
|
6175
|
+
return parsed;
|
|
6176
|
+
} catch (_e) {
|
|
6177
|
+
return {};
|
|
6178
|
+
}
|
|
6179
|
+
}
|
|
6180
|
+
function keyring2() {
|
|
6181
|
+
const mem = {};
|
|
6182
|
+
const processEnv = process.env;
|
|
6183
|
+
const keysFilepath = ".env.keys";
|
|
6184
|
+
const sources = {
|
|
6185
|
+
...keysFromFile(keysFilepath),
|
|
6186
|
+
...processEnv
|
|
6187
|
+
// process.env wins
|
|
6188
|
+
};
|
|
6189
|
+
for (const name in sources) {
|
|
6190
|
+
if (name.startsWith("DOTENV_PRIVATE_KEY")) {
|
|
6191
|
+
try {
|
|
6192
|
+
const privateKeyHex = sources[name];
|
|
6193
|
+
const publicKeyHex = derive2(privateKeyHex);
|
|
6194
|
+
mem[publicKeyHex] = privateKeyHex;
|
|
6195
|
+
} catch (_e) {
|
|
6196
|
+
}
|
|
6197
|
+
}
|
|
6198
|
+
}
|
|
6199
|
+
return mem;
|
|
6200
|
+
}
|
|
6201
|
+
module2.exports = keyring2;
|
|
6202
|
+
}
|
|
6203
|
+
});
|
|
6204
|
+
|
|
6205
|
+
// src/parse.js
|
|
6206
|
+
var require_parse = __commonJS({
|
|
6207
|
+
"src/parse.js"(exports2, module2) {
|
|
6208
|
+
var decrypt2 = require_decrypt();
|
|
6209
|
+
var keyring2 = require_keyring();
|
|
6210
|
+
var encrypted2 = require_encrypted();
|
|
6211
|
+
var evaluate2 = require_evaluate();
|
|
6212
|
+
var expand2 = require_expand();
|
|
6213
|
+
var scan2 = require_scan();
|
|
6153
6214
|
function resolveEscapeSequences(value) {
|
|
6154
6215
|
return value.replace(/\\\$/g, "$");
|
|
6155
6216
|
}
|
|
@@ -6160,50 +6221,45 @@ var require_parse = __commonJS({
|
|
|
6160
6221
|
function inProcessEnv(name) {
|
|
6161
6222
|
return Object.prototype.hasOwnProperty.call(processEnv, name);
|
|
6162
6223
|
}
|
|
6163
|
-
let parsed = {};
|
|
6164
6224
|
let publicKeyHex;
|
|
6165
6225
|
let runningParsed = {};
|
|
6166
6226
|
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);
|
|
6227
|
+
const { parsed } = scan2(src, ({ name, value, quote }) => {
|
|
6228
|
+
let parsedValue = value;
|
|
6174
6229
|
if (name.startsWith("DOTENV_PUBLIC_KEY")) {
|
|
6175
|
-
publicKeyHex =
|
|
6230
|
+
publicKeyHex = parsedValue;
|
|
6176
6231
|
}
|
|
6177
6232
|
if (!overload && inProcessEnv(name)) {
|
|
6178
|
-
|
|
6233
|
+
parsedValue = processEnv[name];
|
|
6179
6234
|
}
|
|
6180
6235
|
try {
|
|
6181
|
-
|
|
6236
|
+
parsedValue = decrypt2(ring[publicKeyHex], parsedValue);
|
|
6182
6237
|
} catch (_e) {
|
|
6183
6238
|
}
|
|
6184
|
-
const encryptedPrefixed = encrypted2(
|
|
6239
|
+
const encryptedPrefixed = encrypted2(parsedValue);
|
|
6185
6240
|
let evaled = false;
|
|
6186
|
-
if (!encryptedPrefixed &&
|
|
6187
|
-
const priorEvaled =
|
|
6241
|
+
if (!encryptedPrefixed && quote !== "'" && (!inProcessEnv(name) || processEnv[name] === parsedValue)) {
|
|
6242
|
+
const priorEvaled = parsedValue;
|
|
6188
6243
|
try {
|
|
6189
|
-
|
|
6244
|
+
parsedValue = evaluate2(priorEvaled, { processEnv, runningParsed });
|
|
6190
6245
|
} catch (_e) {
|
|
6191
6246
|
}
|
|
6192
|
-
if (priorEvaled !==
|
|
6247
|
+
if (priorEvaled !== parsedValue) {
|
|
6193
6248
|
evaled = true;
|
|
6194
6249
|
}
|
|
6195
6250
|
}
|
|
6196
|
-
if (!encryptedPrefixed && !evaled &&
|
|
6197
|
-
|
|
6251
|
+
if (!encryptedPrefixed && !evaled && quote !== "'" && (!processEnv[name] || overload)) {
|
|
6252
|
+
parsedValue = resolveEscapeSequences(expand2(parsedValue, { processEnv, runningParsed, literals }));
|
|
6198
6253
|
}
|
|
6199
6254
|
if (quote === "'") {
|
|
6200
|
-
literals[name] =
|
|
6255
|
+
literals[name] = parsedValue;
|
|
6201
6256
|
}
|
|
6202
|
-
runningParsed[name] =
|
|
6257
|
+
runningParsed[name] = parsedValue;
|
|
6203
6258
|
if (Object.prototype.hasOwnProperty.call(processEnv, name) && !overload) {
|
|
6204
6259
|
} else {
|
|
6205
6260
|
}
|
|
6206
|
-
|
|
6261
|
+
return parsedValue;
|
|
6262
|
+
});
|
|
6207
6263
|
return {
|
|
6208
6264
|
parsed
|
|
6209
6265
|
};
|
|
@@ -6215,17 +6271,21 @@ var require_parse = __commonJS({
|
|
|
6215
6271
|
// src/index.js
|
|
6216
6272
|
var decrypt = require_decrypt();
|
|
6217
6273
|
var derive = require_derive();
|
|
6274
|
+
var encrypt = require_encrypt();
|
|
6218
6275
|
var encrypted = require_encrypted();
|
|
6219
6276
|
var evaluate = require_evaluate();
|
|
6220
6277
|
var expand = require_expand();
|
|
6221
6278
|
var keyring = require_keyring();
|
|
6222
6279
|
var parse = require_parse();
|
|
6280
|
+
var scan = require_scan();
|
|
6223
6281
|
module.exports = {
|
|
6224
6282
|
decrypt,
|
|
6225
6283
|
derive,
|
|
6284
|
+
encrypt,
|
|
6226
6285
|
encrypted,
|
|
6227
6286
|
evaluate,
|
|
6228
6287
|
expand,
|
|
6229
6288
|
keyring,
|
|
6230
|
-
parse
|
|
6289
|
+
parse,
|
|
6290
|
+
scan
|
|
6231
6291
|
};
|
package/package.json
CHANGED