UNPKG

estree-toolkit

Version:

Traverser, scope tracker, and more tools for working with ESTree AST

39 lines (38 loc) 1.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.builders = exports.getNodeValidationEnabled = exports.setNodeValidationEnabled = void 0; const definitions_1 = require("./definitions"); const assert_1 = require("./assert"); const helpers_1 = require("./helpers"); let shouldValidateNodes = true; const setNodeValidationEnabled = (state) => { shouldValidateNodes = state; }; exports.setNodeValidationEnabled = setNodeValidationEnabled; const getNodeValidationEnabled = () => shouldValidateNodes; exports.getNodeValidationEnabled = getNodeValidationEnabled; exports.builders = {}; for (const key in definitions_1.definitions) { const nodeType = key; const definition = definitions_1.definitions[nodeType]; const { fields } = definition; const fieldNames = (0, definitions_1.getFieldsOf)(definition, 'builder'); exports.builders[(0, helpers_1.toCamelCase)(nodeType)] = (...args) => { const node = { type: nodeType }; fieldNames.forEach((fieldName, index) => { const field = fields[fieldName]; node[fieldName] = args[index] !== undefined ? args[index] : ('default' in field ? (typeof field.default == 'function' ? field.default(node) : field.default) : /* istanbul ignore next */ args[index]); if (shouldValidateNodes && field.validate != null) { (0, assert_1.runValidation)(field.validate, node[fieldName]); } }); if (shouldValidateNodes && definition.finalValidate != null) { (0, assert_1.runValidation)(definition.finalValidate, node); } return node; }; }