@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.
Files changed (2) hide show
  1. package/dist/index.cjs +122 -62
  2. 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 encrypt = (plainText) => {
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 = 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 encrypt(receiverRawPK, data, config = config_js_1.ECIES_CONFIG) {
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/keyring.js
6085
- var require_keyring = __commonJS({
6086
- "src/keyring.js"(exports2, module2) {
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 quote(value) {
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, _quote) {
6127
+ function clean(value, quote) {
6144
6128
  let v = trimmer(value);
6145
6129
  v = v.replace(/^(['"`])([\s\S]*)\1$/mg, "$2");
6146
- if (_quote === '"') {
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 lines = (src || "").toString().replace(/\r\n?/mg, "\n");
6168
- let match;
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 = parsed[name];
6230
+ publicKeyHex = parsedValue;
6176
6231
  }
6177
6232
  if (!overload && inProcessEnv(name)) {
6178
- parsed[name] = processEnv[name];
6233
+ parsedValue = processEnv[name];
6179
6234
  }
6180
6235
  try {
6181
- parsed[name] = decrypt2(ring[publicKeyHex], parsed[name]);
6236
+ parsedValue = decrypt2(ring[publicKeyHex], parsedValue);
6182
6237
  } catch (_e) {
6183
6238
  }
6184
- const encryptedPrefixed = encrypted2(parsed[name]);
6239
+ const encryptedPrefixed = encrypted2(parsedValue);
6185
6240
  let evaled = false;
6186
- if (!encryptedPrefixed && _quote !== "'" && (!inProcessEnv(name) || processEnv[name] === parsed[name])) {
6187
- const priorEvaled = parsed[name];
6241
+ if (!encryptedPrefixed && quote !== "'" && (!inProcessEnv(name) || processEnv[name] === parsedValue)) {
6242
+ const priorEvaled = parsedValue;
6188
6243
  try {
6189
- parsed[name] = evaluate2(priorEvaled, { processEnv, runningParsed });
6244
+ parsedValue = evaluate2(priorEvaled, { processEnv, runningParsed });
6190
6245
  } catch (_e) {
6191
6246
  }
6192
- if (priorEvaled !== parsed[name]) {
6247
+ if (priorEvaled !== parsedValue) {
6193
6248
  evaled = true;
6194
6249
  }
6195
6250
  }
6196
- if (!encryptedPrefixed && !evaled && _quote !== "'" && (!processEnv[name] || overload)) {
6197
- parsed[name] = resolveEscapeSequences(expand2(parsed[name], { processEnv, runningParsed, literals }));
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] = parsed[name];
6255
+ literals[name] = parsedValue;
6201
6256
  }
6202
- runningParsed[name] = parsed[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
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.3.0",
2
+ "version": "0.5.0",
3
3
  "name": "@dotenvx/primitives",
4
4
  "description": "a secure dotenv–from the creator of `dotenv`",
5
5
  "author": "@motdotla",