twilio
Version:
A Twilio helper library
84 lines (83 loc) • 2.22 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const xmlbuilder_1 = __importDefault(require("xmlbuilder"));
/* jshint ignore:start */
/**
* Parent TwiML object
*/
/* jshint ignore:end */
class TwiML {
constructor() {
this._propertyName = "";
this.response = xmlbuilder_1.default
.create("Response", {
stringify: {
attValue: function (value) {
if (Array.isArray(value)) {
value = value.join(" ");
}
return this.attEscape?.("" + value || "") || "";
},
},
})
.dec("1.0", "UTF-8");
}
/* jshint ignore:start */
/**
* Because child elements have properties named after their class names, we need
* to translate that when we want to access that at the parent prototype level.
* So this will translate something like Say to 'say' and VoiceResponse to
* 'response'.
*/
/* jshint ignore:end */
_getXml() {
return this[this._propertyName];
}
/* jshint ignore:start */
/**
* Convert to TwiML
*
* @returns TwiML XML
*/
/* jshint ignore:end */
toString() {
return this._getXml().end();
}
/* jshint ignore:start */
/**
* Add text under the TwiML node
*
* @param {string} content
*/
/* jshint ignore:end */
addText(content) {
this._getXml().txt(content);
}
/* jshint ignore:start */
/**
* Add an arbitrary tag as a child.
*
* @param {string} content
*/
/* jshint ignore:end */
addChild(tagName, attributes) {
return new GenericNode(this._getXml().ele(tagName, attributes));
}
}
exports.default = TwiML;
/* jshint ignore:start */
/**
* Generic node
*/
/* jshint ignore:end */
class GenericNode extends TwiML {
// must match variable name for _getPropertyName
constructor(node) {
super();
this.node = node;
this._propertyName = "node";
}
}