Sha256: 2c2870fe90526ca107abc825f80232bf1a929d5b27b36ddccb9b6ca5744a51d9

Contents?: true

Size: 1.58 KB

Versions: 10

Compression:

Stored size: 1.58 KB

Contents

"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.validatePluginObject = validatePluginObject;

var _optionAssertions = require("./option-assertions");

const VALIDATORS = {
  name: _optionAssertions.assertString,
  manipulateOptions: _optionAssertions.assertFunction,
  pre: _optionAssertions.assertFunction,
  post: _optionAssertions.assertFunction,
  inherits: _optionAssertions.assertFunction,
  visitor: assertVisitorMap,
  parserOverride: _optionAssertions.assertFunction,
  generatorOverride: _optionAssertions.assertFunction
};

function assertVisitorMap(key, value) {
  const obj = (0, _optionAssertions.assertObject)(key, value);

  if (obj) {
    Object.keys(obj).forEach(prop => assertVisitorHandler(prop, obj[prop]));

    if (obj.enter || obj.exit) {
      throw new Error(`.${key} cannot contain catch-all "enter" or "exit" handlers. Please target individual nodes.`);
    }
  }

  return obj;
}

function assertVisitorHandler(key, value) {
  if (value && typeof value === "object") {
    Object.keys(value).forEach(handler => {
      if (handler !== "enter" && handler !== "exit") {
        throw new Error(`.visitor["${key}"] may only have .enter and/or .exit handlers.`);
      }
    });
  } else if (typeof value !== "function") {
    throw new Error(`.visitor["${key}"] must be a function`);
  }

  return value;
}

function validatePluginObject(obj) {
  Object.keys(obj).forEach(key => {
    const validator = VALIDATORS[key];
    if (validator) validator(key, obj[key]);else throw new Error(`.${key} is not a valid Plugin property`);
  });
  return obj;
}

Version data entries

10 entries across 10 versions & 3 rubygems

Version Path
condenser-0.0.8 lib/condenser/processors/node_modules/@babel/core/lib/config/validation/plugins.js
jester-data-8.0.0 node_modules/@babel/core/lib/config/validation/plugins.js
ezii-os-5.2.1 node_modules/@babel/core/lib/config/validation/plugins.js
ezii-os-2.0.1 node_modules/@babel/core/lib/config/validation/plugins.js
ezii-os-1.1.0 node_modules/@babel/core/lib/config/validation/plugins.js
ezii-os-1.0.0 node_modules/@babel/core/lib/config/validation/plugins.js
condenser-0.0.7 lib/condenser/processors/node_modules/@babel/core/lib/config/validation/plugins.js
ezii-os-0.0.0.1.0 node_modules/@babel/core/lib/config/validation/plugins.js
ezii-os-0.0.0.0.1 node_modules/@babel/core/lib/config/validation/plugins.js
condenser-0.0.5 lib/condenser/processors/node_modules/@babel/core/lib/config/validation/plugins.js