@contrast/config 1.4.0 → 1.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/lib/options.js CHANGED
@@ -382,12 +382,14 @@ const protect = [
382
382
  fn: castBoolean,
383
383
  desc: 'turns on probe analysis and report them to Contrast UI'
384
384
  },
385
- ...Object.values(Rule).map((ruleId) => ({
386
- name: `protect.rules.${ruleId}.mode`,
387
- arg: '<mode>',
388
- enum: ['monitor', 'block', 'block_at_perimeter', 'off'],
389
- desc: `the mode in which to run the ${ruleId} rule`,
390
- })),
385
+ ...Object.values(Rule)
386
+ .filter((ruleId) => ![Rule.BOT_BLOCKER, Rule.IP_DENYLIST, Rule.VIRTUAL_PATCH].includes(ruleId))
387
+ .map((ruleId) => ({
388
+ name: `protect.rules.${ruleId}.mode`,
389
+ arg: '<mode>',
390
+ enum: ['monitor', 'block', 'block_at_perimeter', 'off'],
391
+ desc: `the mode in which to run the ${ruleId} rule`,
392
+ })),
391
393
  ];
392
394
 
393
395
  const assess = [
package/lib/util.js CHANGED
@@ -42,9 +42,11 @@ function set(obj, name, value) {
42
42
  * @param {*} value
43
43
  * @param {boolean} def set from default or not
44
44
  */
45
- function setConfig(conf, name, value, def) {
45
+ function setConfig(conf, name, value, def, origin) {
46
46
  set(conf, name, value);
47
47
  conf._default[name] = def;
48
+ conf._flat[name] = value;
49
+ conf._sources[name] = origin;
48
50
  }
49
51
 
50
52
  class ConfigurationError extends Error {
@@ -57,7 +59,8 @@ class Config {
57
59
  constructor() {
58
60
  Object.assign(this, {
59
61
  _default: {},
60
- api: {},
62
+ _flat: {},
63
+ _sources: {},
61
64
  agent: {
62
65
  reporters: {},
63
66
  logger: {},
@@ -69,6 +72,7 @@ class Config {
69
72
  },
70
73
  assess: {},
71
74
  server: {},
75
+ api: {},
72
76
  });
73
77
  }
74
78
 
@@ -244,12 +248,17 @@ function mergeOptions() {
244
248
  .reduce((obj, prop) => obj?.[prop], fileOptions);
245
249
 
246
250
  // For some values, we want to know if we assigned by falling back to default
247
- let isFromDefault;
251
+ let isFromDefault, origin;
252
+
253
+ if (env != null || autoEnv != null) {
254
+ origin = 'ENV';
255
+ } else if (fileFlag != null) {
256
+ origin = 'YAML';
257
+ }
248
258
 
249
259
  // env > file > default
250
260
  let value = [env, autoEnv, fileFlag]
251
- .map((v) => fn(v))
252
- .find((flag) => flag !== undefined);
261
+ .map((v) => fn(v)).find((flag) => flag !== undefined);
253
262
 
254
263
  // if it's an enum, find it in the enum or set the value to default
255
264
  // ineffective if optDefault wasn't in the enum;
@@ -257,6 +266,7 @@ function mergeOptions() {
257
266
  if (optEnum && optEnum.indexOf(value) === -1) {
258
267
  value = fn(optDefault);
259
268
  isFromDefault = true;
269
+ origin = 'DEFAULT';
260
270
  }
261
271
 
262
272
  // set default last and separately, so that we can mark that the option was
@@ -264,9 +274,10 @@ function mergeOptions() {
264
274
  if (value === undefined) {
265
275
  value = fn(optDefault);
266
276
  isFromDefault = true;
277
+ origin = 'DEFAULT';
267
278
  }
268
279
 
269
- setConfig(options, name, value, isFromDefault);
280
+ setConfig(options, name, value, isFromDefault, origin);
270
281
  return options;
271
282
  }, new Config());
272
283
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contrast/config",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "An API for discovering Contrast agent configuration data",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "author": "Contrast Security <nodejs@contrastsecurity.com> (https://www.contrastsecurity.com)",
@@ -17,7 +17,7 @@
17
17
  "test": "../scripts/test.sh"
18
18
  },
19
19
  "dependencies": {
20
- "@contrast/common": "1.2.0",
20
+ "@contrast/common": "1.3.0",
21
21
  "yaml": "^2.0.1"
22
22
  }
23
23
  }