/node_modules/babel-types/lib/definitions/index.js

https://gitlab.com/lidorle/trello-project · JavaScript · 258 lines · 187 code · 60 blank · 11 comment · 67 complexity · 98c2608d748d6454d0272c0a8057025e MD5 · raw file

  1. /*istanbul ignore next*/"use strict";
  2. exports.__esModule = true;
  3. exports.DEPRECATED_KEYS = exports.BUILDER_KEYS = exports.NODE_FIELDS = exports.ALIAS_KEYS = exports.VISITOR_KEYS = undefined;
  4. var _getIterator2 = require("babel-runtime/core-js/get-iterator");
  5. var _getIterator3 = _interopRequireDefault(_getIterator2);
  6. var _stringify = require("babel-runtime/core-js/json/stringify");
  7. var _stringify2 = _interopRequireDefault(_stringify);
  8. var _typeof2 = require("babel-runtime/helpers/typeof");
  9. var _typeof3 = _interopRequireDefault(_typeof2);
  10. exports.assertEach = assertEach;
  11. /*istanbul ignore next*/exports.assertOneOf = assertOneOf;
  12. /*istanbul ignore next*/exports.assertNodeType = assertNodeType;
  13. /*istanbul ignore next*/exports.assertNodeOrValueType = assertNodeOrValueType;
  14. /*istanbul ignore next*/exports.assertValueType = assertValueType;
  15. /*istanbul ignore next*/exports.chain = chain;
  16. /*istanbul ignore next*/exports.default = defineType;
  17. var /*istanbul ignore next*/_index = require("../index");
  18. /*istanbul ignore next*/
  19. var t = _interopRequireWildcard(_index);
  20. /*istanbul ignore next*/
  21. 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; } }
  22. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  23. var VISITOR_KEYS = /*istanbul ignore next*/exports.VISITOR_KEYS = {};
  24. var ALIAS_KEYS = /*istanbul ignore next*/exports.ALIAS_KEYS = {};
  25. var NODE_FIELDS = /*istanbul ignore next*/exports.NODE_FIELDS = {};
  26. var BUILDER_KEYS = /*istanbul ignore next*/exports.BUILDER_KEYS = {};
  27. var DEPRECATED_KEYS = /*istanbul ignore next*/exports.DEPRECATED_KEYS = {};
  28. function getType(val) {
  29. if (Array.isArray(val)) {
  30. return "array";
  31. } else if (val === null) {
  32. return "null";
  33. } else if (val === undefined) {
  34. return "undefined";
  35. } else {
  36. return (/*istanbul ignore next*/typeof val === "undefined" ? "undefined" : (0, _typeof3.default)(val)
  37. );
  38. }
  39. }
  40. function assertEach(callback) {
  41. function validator(node, key, val) {
  42. if (!Array.isArray(val)) return;
  43. for (var i = 0; i < val.length; i++) {
  44. callback(node, /*istanbul ignore next*/key + "[" + i + "]", val[i]);
  45. }
  46. }
  47. validator.each = callback;
  48. return validator;
  49. }
  50. function assertOneOf() {
  51. /*istanbul ignore next*/
  52. for (var _len = arguments.length, vals = Array(_len), _key = 0; _key < _len; _key++) {
  53. vals[_key] = arguments[_key];
  54. }
  55. function validate(node, key, val) {
  56. if (vals.indexOf(val) < 0) {
  57. throw new TypeError( /*istanbul ignore next*/"Property " + key + " expected value to be one of " + /*istanbul ignore next*/(0, _stringify2.default)(vals) + " but got " + /*istanbul ignore next*/(0, _stringify2.default)(val));
  58. }
  59. }
  60. validate.oneOf = vals;
  61. return validate;
  62. }
  63. function assertNodeType() {
  64. /*istanbul ignore next*/
  65. for (var _len2 = arguments.length, types = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
  66. types[_key2] = arguments[_key2];
  67. }
  68. function validate(node, key, val) {
  69. var valid = false;
  70. for ( /*istanbul ignore next*/var _iterator = types, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) {
  71. /*istanbul ignore next*/
  72. var _ref;
  73. if (_isArray) {
  74. if (_i >= _iterator.length) break;
  75. _ref = _iterator[_i++];
  76. } else {
  77. _i = _iterator.next();
  78. if (_i.done) break;
  79. _ref = _i.value;
  80. }
  81. var type = _ref;
  82. if (t.is(type, val)) {
  83. valid = true;
  84. break;
  85. }
  86. }
  87. if (!valid) {
  88. throw new TypeError( /*istanbul ignore next*/"Property " + key + " of " + node.type + " expected node to be of a type " + /*istanbul ignore next*/(0, _stringify2.default)(types) + " " + /*istanbul ignore next*/("but instead got " + /*istanbul ignore next*/(0, _stringify2.default)(val && val.type)));
  89. }
  90. }
  91. validate.oneOfNodeTypes = types;
  92. return validate;
  93. }
  94. function assertNodeOrValueType() {
  95. /*istanbul ignore next*/
  96. for (var _len3 = arguments.length, types = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
  97. types[_key3] = arguments[_key3];
  98. }
  99. function validate(node, key, val) {
  100. var valid = false;
  101. for ( /*istanbul ignore next*/var _iterator2 = types, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, _getIterator3.default)(_iterator2);;) {
  102. /*istanbul ignore next*/
  103. var _ref2;
  104. if (_isArray2) {
  105. if (_i2 >= _iterator2.length) break;
  106. _ref2 = _iterator2[_i2++];
  107. } else {
  108. _i2 = _iterator2.next();
  109. if (_i2.done) break;
  110. _ref2 = _i2.value;
  111. }
  112. var type = _ref2;
  113. if (getType(val) === type || t.is(type, val)) {
  114. valid = true;
  115. break;
  116. }
  117. }
  118. if (!valid) {
  119. throw new TypeError( /*istanbul ignore next*/"Property " + key + " of " + node.type + " expected node to be of a type " + /*istanbul ignore next*/(0, _stringify2.default)(types) + " " + /*istanbul ignore next*/("but instead got " + /*istanbul ignore next*/(0, _stringify2.default)(val && val.type)));
  120. }
  121. }
  122. validate.oneOfNodeOrValueTypes = types;
  123. return validate;
  124. }
  125. function assertValueType(type) {
  126. function validate(node, key, val) {
  127. var valid = getType(val) === type;
  128. if (!valid) {
  129. throw new TypeError( /*istanbul ignore next*/"Property " + key + " expected type of " + type + " but got " + getType(val));
  130. }
  131. }
  132. validate.type = type;
  133. return validate;
  134. }
  135. function chain() {
  136. /*istanbul ignore next*/
  137. for (var _len4 = arguments.length, fns = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
  138. fns[_key4] = arguments[_key4];
  139. }
  140. function validate() {
  141. for ( /*istanbul ignore next*/var _iterator3 = fns, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, _getIterator3.default)(_iterator3);;) {
  142. /*istanbul ignore next*/
  143. var _ref3;
  144. if (_isArray3) {
  145. if (_i3 >= _iterator3.length) break;
  146. _ref3 = _iterator3[_i3++];
  147. } else {
  148. _i3 = _iterator3.next();
  149. if (_i3.done) break;
  150. _ref3 = _i3.value;
  151. }
  152. var fn = _ref3;
  153. /*istanbul ignore next*/fn.apply( /*istanbul ignore next*/undefined, /*istanbul ignore next*/arguments);
  154. }
  155. }
  156. validate.chainOf = fns;
  157. return validate;
  158. }
  159. function defineType(type) {
  160. /*istanbul ignore next*/var opts = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
  161. var inherits = opts.inherits && store[opts.inherits] || {};
  162. opts.fields = opts.fields || inherits.fields || {};
  163. opts.visitor = opts.visitor || inherits.visitor || [];
  164. opts.aliases = opts.aliases || inherits.aliases || [];
  165. opts.builder = opts.builder || inherits.builder || opts.visitor || [];
  166. if (opts.deprecatedAlias) {
  167. DEPRECATED_KEYS[opts.deprecatedAlias] = type;
  168. }
  169. // ensure all field keys are represented in `fields`
  170. for ( /*istanbul ignore next*/var _iterator4 = opts.visitor.concat(opts.builder), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : (0, _getIterator3.default)(_iterator4);;) {
  171. /*istanbul ignore next*/
  172. var _ref4;
  173. if (_isArray4) {
  174. if (_i4 >= _iterator4.length) break;
  175. _ref4 = _iterator4[_i4++];
  176. } else {
  177. _i4 = _iterator4.next();
  178. if (_i4.done) break;
  179. _ref4 = _i4.value;
  180. }
  181. var _key5 = _ref4;
  182. opts.fields[_key5] = opts.fields[_key5] || {};
  183. }
  184. for (var key in opts.fields) {
  185. var field = opts.fields[key];
  186. if (field.default === undefined) {
  187. field.default = null;
  188. } else if (!field.validate) {
  189. field.validate = assertValueType(getType(field.default));
  190. }
  191. }
  192. VISITOR_KEYS[type] = opts.visitor;
  193. BUILDER_KEYS[type] = opts.builder;
  194. NODE_FIELDS[type] = opts.fields;
  195. ALIAS_KEYS[type] = opts.aliases;
  196. store[type] = opts;
  197. }
  198. var store = {};