@dotenvx/next-env 2.0.1 → 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.
Files changed (2) hide show
  1. package/dist/index.cjs +97 -55
  2. package/package.json +2 -2
package/dist/index.cjs CHANGED
@@ -6010,40 +6010,12 @@ var require_dist = __commonJS({
6010
6010
  module22.exports = expand2;
6011
6011
  }
6012
6012
  });
6013
- var require_keyring = __commonJS2({
6014
- "src/keyring.js"(exports22, module22) {
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 quote(value) {
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, _quote) {
6041
+ function clean(value, quote) {
6070
6042
  let v = trimmer(value);
6071
6043
  v = v.replace(/^(['"`])([\s\S]*)\1$/mg, "$2");
6072
- if (_quote === '"') {
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 lines = (src || "").toString().replace(/\r\n?/mg, "\n");
6094
- let match;
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 = parsed[name];
6140
+ publicKeyHex = parsedValue;
6102
6141
  }
6103
6142
  if (!overload && inProcessEnv(name)) {
6104
- parsed[name] = processEnv2[name];
6143
+ parsedValue = processEnv2[name];
6105
6144
  }
6106
6145
  try {
6107
- parsed[name] = decrypt2(ring[publicKeyHex], parsed[name]);
6146
+ parsedValue = decrypt2(ring[publicKeyHex], parsedValue);
6108
6147
  } catch (_e) {
6109
6148
  }
6110
- const encryptedPrefixed = encrypted2(parsed[name]);
6149
+ const encryptedPrefixed = encrypted2(parsedValue);
6111
6150
  let evaled = false;
6112
- if (!encryptedPrefixed && _quote !== "'" && (!inProcessEnv(name) || processEnv2[name] === parsed[name])) {
6113
- const priorEvaled = parsed[name];
6151
+ if (!encryptedPrefixed && quote !== "'" && (!inProcessEnv(name) || processEnv2[name] === parsedValue)) {
6152
+ const priorEvaled = parsedValue;
6114
6153
  try {
6115
- parsed[name] = evaluate2(priorEvaled, { processEnv: processEnv2, runningParsed });
6154
+ parsedValue = evaluate2(priorEvaled, { processEnv: processEnv2, runningParsed });
6116
6155
  } catch (_e) {
6117
6156
  }
6118
- if (priorEvaled !== parsed[name]) {
6157
+ if (priorEvaled !== parsedValue) {
6119
6158
  evaled = true;
6120
6159
  }
6121
6160
  }
6122
- if (!encryptedPrefixed && !evaled && _quote !== "'" && (!processEnv2[name] || overload)) {
6123
- parsed[name] = resolveEscapeSequences(expand2(parsed[name], { processEnv: processEnv2, runningParsed, literals }));
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] = parsed[name];
6165
+ literals[name] = parsedValue;
6127
6166
  }
6128
- runningParsed[name] = parsed[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
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dotenvx/next-env",
3
- "version": "2.0.1",
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.3.0",
26
+ "@dotenvx/primitives": "0.4.0",
27
27
  "esbuild": "^0.28.1"
28
28
  }
29
29
  }