1
0

assert.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.assertOptions = exports.createAssert = void 0;
  4. const handler_1 = require("./handler");
  5. const types_1 = require("./types");
  6. /**
  7. * Creates an options-assert function that uses specified error handler.
  8. */
  9. function createAssert(errHandler) {
  10. return function (options, defaults) {
  11. if (options !== null && options !== undefined && typeof options !== 'object') {
  12. return errHandler.handle(types_1.OptionsError.invalidOptionsParam, { options, defaults });
  13. }
  14. const isArray = Array.isArray(defaults);
  15. if (!isArray && (!defaults || typeof defaults !== 'object')) {
  16. return errHandler.handle(types_1.OptionsError.invalidDefaultsParam, { options, defaults });
  17. }
  18. if (options) {
  19. for (const key of Object.keys(options)) {
  20. if ((isArray && defaults.indexOf(key) === -1) || (!isArray && !(key in defaults))) {
  21. return errHandler.handle(types_1.OptionsError.optionNotRecognized, { options, defaults, key });
  22. }
  23. }
  24. }
  25. else {
  26. options = {};
  27. }
  28. if (!isArray) {
  29. const defs = defaults;
  30. for (const d of Object.keys(defs)) {
  31. if (options[d] === undefined && defs[d] !== undefined) {
  32. options[d] = defs[d];
  33. }
  34. }
  35. }
  36. return options;
  37. };
  38. }
  39. exports.createAssert = createAssert;
  40. /**
  41. * Default options-assert function.
  42. */
  43. exports.assertOptions = createAssert(new handler_1.DefaultErrorHandler());