12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.validatePluginObject = validatePluginObject;
- var _optionAssertions = require("./option-assertions.js");
- 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 => {
- if (prop !== "_exploded" && prop !== "_verified") {
- 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`);
- }
- }
- 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;
- }
- 0 && 0;
- //# sourceMappingURL=plugins.js.map
|