UNPKG

alexa-ssml

Version:
69 lines (46 loc) 2.32 kB
'use strict'; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = ssml; var _get = require('lodash/get'); var _get2 = _interopRequireDefault(_get); var _identity = require('lodash/identity'); var _identity2 = _interopRequireDefault(_identity); var _flattenDeep = require('lodash/flattenDeep'); var _flattenDeep2 = _interopRequireDefault(_flattenDeep); var _schema = require('./schema'); var schemas = _interopRequireWildcard(_schema); var _validateProps = require('./validateProps'); var _validateProps2 = _interopRequireDefault(_validateProps); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function ssml(tagName, props) { for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { args[_key - 2] = arguments[_key]; } var children = (0, _flattenDeep2.default)(args.length ? args : (0, _get2.default)(props, 'children', [])); // handle custom elements (only functions for now) if (typeof tagName === 'function') { return tagName(_extends({}, props, { children: children })); } // make sure we have a valid tag if (typeof tagName !== 'string') { throw new Error('Invalid tag: ' + tagName); } // make sure we have a known tag var _ref = schemas[tagName.toLowerCase()] || {}; var tag = _ref.tag; var schema = _ref.schema; var _ref$transform = _ref.transform; var transform = _ref$transform === undefined ? _identity2.default : _ref$transform; if (!tag) { throw new Error('Unknown tag: ' + tagName); } return { tag: tag, props: transform((0, _validateProps2.default)(props, schema)), children: children }; }