Sha256: d9e83f9f9895365b3a03c1f365e80833389d25508ca38d2e0d7576468fff7c8a

Contents?: true

Size: 1.94 KB

Versions: 16

Compression:

Stored size: 1.94 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(loc, value) {
  const obj = (0, _optionAssertions.assertObject)(loc, value);

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

    if (obj.enter || obj.exit) {
      throw new Error(`${(0, _optionAssertions.msg)(loc)} 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) {
  const rootPath = {
    type: "root",
    source: "plugin"
  };
  Object.keys(obj).forEach(key => {
    const validator = VALIDATORS[key];

    if (validator) {
      const optLoc = {
        type: "option",
        name: key,
        parent: rootPath
      };
      validator(optLoc, obj[key]);
    } else {
      const invalidPluginPropertyError = new Error(`.${key} is not a valid Plugin property`);
      invalidPluginPropertyError.code = "BABEL_UNKNOWN_PLUGIN_PROPERTY";
      throw invalidPluginPropertyError;
    }
  });
  return obj;
}

Version data entries

16 entries across 15 versions & 5 rubygems

Version Path
optimacms-0.1.61 spec/dummy/node_modules/@babel/core/lib/config/validation/plugins.js
disco_app-0.16.1 test/dummy/node_modules/@babel/core/lib/config/validation/plugins.js
disco_app-0.15.2 test/dummy/node_modules/@babel/core/lib/config/validation/plugins.js
disco_app-0.18.4 test/dummy/node_modules/@babel/core/lib/config/validation/plugins.js
disco_app-0.18.1 test/dummy/node_modules/@babel/core/lib/config/validation/plugins.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/@babel/core/lib/config/validation/plugins.js
disco_app-0.14.0 test/dummy/node_modules/@babel/core/lib/config/validation/plugins.js
disco_app-0.13.6.pre.puma.pre.3 test/dummy/node_modules/@babel/core/lib/config/validation/plugins.js
tang-0.2.1 spec/tang_app/node_modules/@babel/core/lib/config/validation/plugins.js
groonga-client-model-6.0.0 test/apps/rails6.1.3/node_modules/@babel/core/lib/config/validation/plugins.js
groonga-client-model-6.0.0 test/apps/rails6.0.3.5/node_modules/@babel/core/lib/config/validation/plugins.js
ruby2js-4.0.4 lib/tasks/testrails/node_modules/@babel/core/lib/config/validation/plugins.js
ruby2js-4.0.3 lib/tasks/testrails/node_modules/@babel/core/lib/config/validation/plugins.js
tang-0.2.0 spec/tang_app/node_modules/@babel/core/lib/config/validation/plugins.js
tang-0.1.0 spec/tang_app/node_modules/@babel/core/lib/config/validation/plugins.js
tang-0.0.9 spec/tang_app/node_modules/@babel/core/lib/config/validation/plugins.js