@dotenvx/primitives 0.7.1 → 0.8.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 +53 -9
  2. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -6146,26 +6146,33 @@ var require_scan = __commonJS({
6146
6146
  }
6147
6147
  return q;
6148
6148
  }
6149
- function clean(value, quote) {
6149
+ function clean(value, quote, opts) {
6150
6150
  let v = trimmer(value);
6151
6151
  v = v.replace(/^(['"`])([\s\S]*)\1$/mg, "$2");
6152
- if (quote === '"') {
6152
+ if (quote === '"' && opts.expandDoubleQuotedNewlines !== false) {
6153
6153
  v = v.replace(/\\n/g, "\n");
6154
6154
  v = v.replace(/\\r/g, "\r");
6155
6155
  v = v.replace(/\\t/g, " ");
6156
6156
  }
6157
6157
  return v;
6158
6158
  }
6159
- function scan2(src, transform) {
6159
+ function scan2(src, opts = {}, transform) {
6160
+ if (typeof opts === "function") {
6161
+ transform = opts;
6162
+ opts = {};
6163
+ }
6160
6164
  const LINE = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;
6161
6165
  const parsed = {};
6162
- const lines = (src || "").toString().replace(/\r\n?/mg, "\n");
6166
+ let lines = (src || "").toString();
6167
+ if (opts.convertWindowsNewlines !== false) {
6168
+ lines = lines.replace(/\r\n?/mg, "\n");
6169
+ }
6163
6170
  let match;
6164
6171
  while ((match = LINE.exec(lines)) !== null) {
6165
6172
  const name = match[1];
6166
6173
  const raw = match[2];
6167
6174
  const quote = getQuote(raw);
6168
- const value = clean(raw, quote);
6175
+ const value = clean(raw, quote, opts);
6169
6176
  let parsedValue = value;
6170
6177
  if (typeof transform === "function") {
6171
6178
  parsedValue = transform({
@@ -6174,7 +6181,8 @@ var require_scan = __commonJS({
6174
6181
  quote
6175
6182
  });
6176
6183
  }
6177
- parsed[name] = parsedValue;
6184
+ parsed[name] = parsed[name] || [];
6185
+ parsed[name].push(parsedValue);
6178
6186
  }
6179
6187
  return {
6180
6188
  parsed
@@ -6194,7 +6202,11 @@ var require_keyring = __commonJS({
6194
6202
  try {
6195
6203
  const src = fs.readFileSync(filepath, "utf8");
6196
6204
  const { parsed } = scan2(src);
6197
- return parsed;
6205
+ const result = {};
6206
+ for (const name in parsed) {
6207
+ result[name] = parsed[name][parsed[name].length - 1];
6208
+ }
6209
+ return result;
6198
6210
  } catch (_e) {
6199
6211
  return {};
6200
6212
  }
@@ -6236,6 +6248,13 @@ var require_parse = __commonJS({
6236
6248
  function resolveEscapeSequences(value) {
6237
6249
  return value.replace(/\\\$/g, "$");
6238
6250
  }
6251
+ function collapse(parsed) {
6252
+ const result = {};
6253
+ for (const name in parsed) {
6254
+ result[name] = parsed[name][parsed[name].length - 1];
6255
+ }
6256
+ return result;
6257
+ }
6239
6258
  function parse2(src, opts = {}) {
6240
6259
  const overload = opts.overload;
6241
6260
  const processEnv = opts.processEnv || process.env;
@@ -6283,13 +6302,36 @@ var require_parse = __commonJS({
6283
6302
  return parsedValue;
6284
6303
  });
6285
6304
  return {
6286
- parsed
6305
+ parsed: collapse(parsed)
6287
6306
  };
6288
6307
  }
6289
6308
  module2.exports = parse2;
6290
6309
  }
6291
6310
  });
6292
6311
 
6312
+ // src/sealed.js
6313
+ var require_sealed = __commonJS({
6314
+ "src/sealed.js"(exports2, module2) {
6315
+ var encrypted2 = require_encrypted();
6316
+ var scan2 = require_scan();
6317
+ function publicKey(name) {
6318
+ return name.startsWith("DOTENV_PUBLIC_KEY");
6319
+ }
6320
+ function sealed2(src) {
6321
+ const { parsed } = scan2(src);
6322
+ for (const [name, values] of Object.entries(parsed)) {
6323
+ for (const value of values) {
6324
+ if (!encrypted2(value) && !publicKey(name)) {
6325
+ return false;
6326
+ }
6327
+ }
6328
+ }
6329
+ return true;
6330
+ }
6331
+ module2.exports = sealed2;
6332
+ }
6333
+ });
6334
+
6293
6335
  // src/index.js
6294
6336
  var decrypt = require_decrypt();
6295
6337
  var derive = require_derive();
@@ -6301,6 +6343,7 @@ var keypair = require_keypair();
6301
6343
  var keyring = require_keyring();
6302
6344
  var parse = require_parse();
6303
6345
  var scan = require_scan();
6346
+ var sealed = require_sealed();
6304
6347
  module.exports = {
6305
6348
  decrypt,
6306
6349
  derive,
@@ -6311,5 +6354,6 @@ module.exports = {
6311
6354
  keypair,
6312
6355
  keyring,
6313
6356
  parse,
6314
- scan
6357
+ scan,
6358
+ sealed
6315
6359
  };
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.7.1",
2
+ "version": "0.8.0",
3
3
  "name": "@dotenvx/primitives",
4
4
  "description": "a secure dotenv–from the creator of `dotenv`",
5
5
  "author": "@motdotla",