UNPKG

terraform-generator

Version:

Generate Terraform configurations with Node.js.

134 lines (133 loc) 4.91 kB
"use strict"; var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; }; var _Block_instances, _Block_arguments, _Block_innerBlocks, _Block_insideTerraformBlock, _Block_validateIdentifier; Object.defineProperty(exports, "__esModule", { value: true }); exports.Block = void 0; const utils_1 = require("../utils"); /** * @category Block */ class Block extends utils_1.TerraformElement { /** * Construct block. * * @param type type * @param names names * @param args arguments */ constructor(type, names, args, innerBlocks, insideTerraformBlock = false) { super(); _Block_instances.add(this); _Block_arguments.set(this, void 0); _Block_innerBlocks.set(this, void 0); _Block_insideTerraformBlock.set(this, void 0); __classPrivateFieldGet(this, _Block_instances, "m", _Block_validateIdentifier).call(this, type); names.forEach(name => { __classPrivateFieldGet(this, _Block_instances, "m", _Block_validateIdentifier).call(this, name); }); this.blockType = type; this.blockNames = names; __classPrivateFieldSet(this, _Block_arguments, args, "f"); __classPrivateFieldSet(this, _Block_innerBlocks, innerBlocks ? innerBlocks : [], "f"); __classPrivateFieldSet(this, _Block_insideTerraformBlock, insideTerraformBlock, "f"); } /** * Is this block to be placed inside top-level terraform block. */ isInsideTerraformBlock() { return __classPrivateFieldGet(this, _Block_insideTerraformBlock, "f"); } /** * Get arguments. */ getArguments() { return __classPrivateFieldGet(this, _Block_arguments, "f"); } /** * Get argument by key. * * @param key key */ getArgument(key) { return __classPrivateFieldGet(this, _Block_arguments, "f")[key]; } /** * Set argument. * * @param key key * @param value value */ setArgument(key, value) { __classPrivateFieldGet(this, _Block_arguments, "f")[key] = value; return this; } /** * Set arguments. * * @param args arguments */ setArguments(args) { __classPrivateFieldSet(this, _Block_arguments, { ...__classPrivateFieldGet(this, _Block_arguments, "f"), ...args }, "f"); return this; } /** * Delete argument by key. * * @param key key */ deleteArgument(key) { delete __classPrivateFieldGet(this, _Block_arguments, "f")[key]; return this; } /** * Get inner blocks. */ getInnerBlocks() { return __classPrivateFieldGet(this, _Block_innerBlocks, "f"); } /** * Set inner blocks. */ setInnerBlocks(innerBlocks) { __classPrivateFieldSet(this, _Block_innerBlocks, innerBlocks ? innerBlocks : [], "f"); return this; } toTerraform() { let str = this.blockType; this.blockNames.forEach(name => { str += ` "${name}"`; }); str += '{\n'; str += utils_1.Util.argumentsToString(__classPrivateFieldGet(this, _Block_arguments, "f")); __classPrivateFieldGet(this, _Block_innerBlocks, "f").forEach(block => { str += `${block.toTerraform().trim()}\n`; }); str += '}\n\n'; return utils_1.Util.escape(str); } /** * Block's id attribute. */ get id() { return this.attr('id'); } } exports.Block = Block; _Block_arguments = new WeakMap(), _Block_innerBlocks = new WeakMap(), _Block_insideTerraformBlock = new WeakMap(), _Block_instances = new WeakSet(), _Block_validateIdentifier = function _Block_validateIdentifier(identifier) { if (!identifier.match(utils_1.IDENTIFIER_REGEX)) { throw new Error(`Invalid identifier: ${identifier}`); } };