Added test to ensure that release notes are parsed properly Updated to latest dependencies to fix security vulnerability Updated GH Actions Workflow to run test before updating tag Updated README.md to reflect proper whatsnew documentation.
155 lines
4.1 KiB
JavaScript
155 lines
4.1 KiB
JavaScript
'use strict';
|
|
|
|
Object.defineProperty(exports, '__esModule', {
|
|
value: true
|
|
});
|
|
exports.default = void 0;
|
|
|
|
var _defaultConfig = _interopRequireDefault(require('./defaultConfig'));
|
|
|
|
var _utils = require('./utils');
|
|
|
|
function _interopRequireDefault(obj) {
|
|
return obj && obj.__esModule ? obj : {default: obj};
|
|
}
|
|
|
|
function _objectSpread(target) {
|
|
for (var i = 1; i < arguments.length; i++) {
|
|
var source = arguments[i] != null ? arguments[i] : {};
|
|
var ownKeys = Object.keys(source);
|
|
if (typeof Object.getOwnPropertySymbols === 'function') {
|
|
ownKeys = ownKeys.concat(
|
|
Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
})
|
|
);
|
|
}
|
|
ownKeys.forEach(function(key) {
|
|
_defineProperty(target, key, source[key]);
|
|
});
|
|
}
|
|
return target;
|
|
}
|
|
|
|
function _defineProperty(obj, key, value) {
|
|
if (key in obj) {
|
|
Object.defineProperty(obj, key, {
|
|
value: value,
|
|
enumerable: true,
|
|
configurable: true,
|
|
writable: true
|
|
});
|
|
} else {
|
|
obj[key] = value;
|
|
}
|
|
return obj;
|
|
}
|
|
|
|
let hasDeprecationWarnings = false;
|
|
|
|
const shouldSkipValidationForPath = (path, key, blacklist) =>
|
|
blacklist ? blacklist.includes([...path, key].join('.')) : false;
|
|
|
|
const _validate = (config, exampleConfig, options, path = []) => {
|
|
if (
|
|
typeof config !== 'object' ||
|
|
config == null ||
|
|
typeof exampleConfig !== 'object' ||
|
|
exampleConfig == null
|
|
) {
|
|
return {
|
|
hasDeprecationWarnings
|
|
};
|
|
}
|
|
|
|
for (const key in config) {
|
|
if (
|
|
options.deprecatedConfig &&
|
|
key in options.deprecatedConfig &&
|
|
typeof options.deprecate === 'function'
|
|
) {
|
|
const isDeprecatedKey = options.deprecate(
|
|
config,
|
|
key,
|
|
options.deprecatedConfig,
|
|
options
|
|
);
|
|
hasDeprecationWarnings = hasDeprecationWarnings || isDeprecatedKey;
|
|
} else if (allowsMultipleTypes(key)) {
|
|
const value = config[key];
|
|
|
|
if (
|
|
typeof options.condition === 'function' &&
|
|
typeof options.error === 'function'
|
|
) {
|
|
if (key === 'maxWorkers' && !isOfTypeStringOrNumber(value)) {
|
|
throw new _utils.ValidationError(
|
|
'Validation Error',
|
|
`${key} has to be of type string or number`,
|
|
`maxWorkers=50% or\nmaxWorkers=3`
|
|
);
|
|
}
|
|
}
|
|
} else if (Object.hasOwnProperty.call(exampleConfig, key)) {
|
|
if (
|
|
typeof options.condition === 'function' &&
|
|
typeof options.error === 'function' &&
|
|
!options.condition(config[key], exampleConfig[key])
|
|
) {
|
|
options.error(key, config[key], exampleConfig[key], options, path);
|
|
}
|
|
} else if (
|
|
shouldSkipValidationForPath(path, key, options.recursiveBlacklist)
|
|
) {
|
|
// skip validating unknown options inside blacklisted paths
|
|
} else {
|
|
options.unknown &&
|
|
options.unknown(config, exampleConfig, key, options, path);
|
|
}
|
|
|
|
if (
|
|
options.recursive &&
|
|
!Array.isArray(exampleConfig[key]) &&
|
|
options.recursiveBlacklist &&
|
|
!shouldSkipValidationForPath(path, key, options.recursiveBlacklist)
|
|
) {
|
|
_validate(config[key], exampleConfig[key], options, [...path, key]);
|
|
}
|
|
}
|
|
|
|
return {
|
|
hasDeprecationWarnings
|
|
};
|
|
};
|
|
|
|
const allowsMultipleTypes = key => key === 'maxWorkers';
|
|
|
|
const isOfTypeStringOrNumber = value =>
|
|
typeof value === 'number' || typeof value === 'string';
|
|
|
|
const validate = (config, options) => {
|
|
hasDeprecationWarnings = false; // Preserve default blacklist entries even with user-supplied blacklist
|
|
|
|
const combinedBlacklist = [
|
|
...(_defaultConfig.default.recursiveBlacklist || []),
|
|
...(options.recursiveBlacklist || [])
|
|
];
|
|
const defaultedOptions = Object.assign(
|
|
_objectSpread({}, _defaultConfig.default, options, {
|
|
recursiveBlacklist: combinedBlacklist,
|
|
title: options.title || _defaultConfig.default.title
|
|
})
|
|
);
|
|
|
|
const _validate2 = _validate(config, options.exampleConfig, defaultedOptions),
|
|
hdw = _validate2.hasDeprecationWarnings;
|
|
|
|
return {
|
|
hasDeprecationWarnings: hdw,
|
|
isValid: true
|
|
};
|
|
};
|
|
|
|
var _default = validate;
|
|
exports.default = _default;
|