index.cjs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. 'use strict';
  2. function getType(payload) {
  3. return Object.prototype.toString.call(payload).slice(8, -1);
  4. }
  5. function isAnyObject(payload) {
  6. return getType(payload) === "Object";
  7. }
  8. function isArray(payload) {
  9. return getType(payload) === "Array";
  10. }
  11. function isBlob(payload) {
  12. return getType(payload) === "Blob";
  13. }
  14. function isBoolean(payload) {
  15. return getType(payload) === "Boolean";
  16. }
  17. function isDate(payload) {
  18. return getType(payload) === "Date" && !isNaN(payload);
  19. }
  20. function isEmptyArray(payload) {
  21. return isArray(payload) && payload.length === 0;
  22. }
  23. function isPlainObject(payload) {
  24. if (getType(payload) !== "Object")
  25. return false;
  26. const prototype = Object.getPrototypeOf(payload);
  27. return !!prototype && prototype.constructor === Object && prototype === Object.prototype;
  28. }
  29. function isEmptyObject(payload) {
  30. return isPlainObject(payload) && Object.keys(payload).length === 0;
  31. }
  32. function isEmptyString(payload) {
  33. return payload === "";
  34. }
  35. function isError(payload) {
  36. return getType(payload) === "Error" || payload instanceof Error;
  37. }
  38. function isFile(payload) {
  39. return getType(payload) === "File";
  40. }
  41. function isFullArray(payload) {
  42. return isArray(payload) && payload.length > 0;
  43. }
  44. function isFullObject(payload) {
  45. return isPlainObject(payload) && Object.keys(payload).length > 0;
  46. }
  47. function isString(payload) {
  48. return getType(payload) === "String";
  49. }
  50. function isFullString(payload) {
  51. return isString(payload) && payload !== "";
  52. }
  53. function isFunction(payload) {
  54. return typeof payload === "function";
  55. }
  56. function isType(payload, type) {
  57. if (!(type instanceof Function)) {
  58. throw new TypeError("Type must be a function");
  59. }
  60. if (!Object.prototype.hasOwnProperty.call(type, "prototype")) {
  61. throw new TypeError("Type is not a class");
  62. }
  63. const name = type.name;
  64. return getType(payload) === name || Boolean(payload && payload.constructor === type);
  65. }
  66. function isInstanceOf(value, classOrClassName) {
  67. if (typeof classOrClassName === "function") {
  68. for (let p = value; p; p = Object.getPrototypeOf(p)) {
  69. if (isType(p, classOrClassName)) {
  70. return true;
  71. }
  72. }
  73. return false;
  74. } else {
  75. for (let p = value; p; p = Object.getPrototypeOf(p)) {
  76. if (getType(p) === classOrClassName) {
  77. return true;
  78. }
  79. }
  80. return false;
  81. }
  82. }
  83. function isMap(payload) {
  84. return getType(payload) === "Map";
  85. }
  86. function isNaNValue(payload) {
  87. return getType(payload) === "Number" && isNaN(payload);
  88. }
  89. function isNumber(payload) {
  90. return getType(payload) === "Number" && !isNaN(payload);
  91. }
  92. function isNegativeNumber(payload) {
  93. return isNumber(payload) && payload < 0;
  94. }
  95. function isNull(payload) {
  96. return getType(payload) === "Null";
  97. }
  98. function isOneOf(a, b, c, d, e) {
  99. return (value) => a(value) || b(value) || !!c && c(value) || !!d && d(value) || !!e && e(value);
  100. }
  101. function isUndefined(payload) {
  102. return getType(payload) === "Undefined";
  103. }
  104. const isNullOrUndefined = isOneOf(isNull, isUndefined);
  105. function isObject(payload) {
  106. return isPlainObject(payload);
  107. }
  108. function isObjectLike(payload) {
  109. return isAnyObject(payload);
  110. }
  111. function isPositiveNumber(payload) {
  112. return isNumber(payload) && payload > 0;
  113. }
  114. function isSymbol(payload) {
  115. return getType(payload) === "Symbol";
  116. }
  117. function isPrimitive(payload) {
  118. return isBoolean(payload) || isNull(payload) || isUndefined(payload) || isNumber(payload) || isString(payload) || isSymbol(payload);
  119. }
  120. function isPromise(payload) {
  121. return getType(payload) === "Promise";
  122. }
  123. function isRegExp(payload) {
  124. return getType(payload) === "RegExp";
  125. }
  126. function isSet(payload) {
  127. return getType(payload) === "Set";
  128. }
  129. function isWeakMap(payload) {
  130. return getType(payload) === "WeakMap";
  131. }
  132. function isWeakSet(payload) {
  133. return getType(payload) === "WeakSet";
  134. }
  135. exports.getType = getType;
  136. exports.isAnyObject = isAnyObject;
  137. exports.isArray = isArray;
  138. exports.isBlob = isBlob;
  139. exports.isBoolean = isBoolean;
  140. exports.isDate = isDate;
  141. exports.isEmptyArray = isEmptyArray;
  142. exports.isEmptyObject = isEmptyObject;
  143. exports.isEmptyString = isEmptyString;
  144. exports.isError = isError;
  145. exports.isFile = isFile;
  146. exports.isFullArray = isFullArray;
  147. exports.isFullObject = isFullObject;
  148. exports.isFullString = isFullString;
  149. exports.isFunction = isFunction;
  150. exports.isInstanceOf = isInstanceOf;
  151. exports.isMap = isMap;
  152. exports.isNaNValue = isNaNValue;
  153. exports.isNegativeNumber = isNegativeNumber;
  154. exports.isNull = isNull;
  155. exports.isNullOrUndefined = isNullOrUndefined;
  156. exports.isNumber = isNumber;
  157. exports.isObject = isObject;
  158. exports.isObjectLike = isObjectLike;
  159. exports.isOneOf = isOneOf;
  160. exports.isPlainObject = isPlainObject;
  161. exports.isPositiveNumber = isPositiveNumber;
  162. exports.isPrimitive = isPrimitive;
  163. exports.isPromise = isPromise;
  164. exports.isRegExp = isRegExp;
  165. exports.isSet = isSet;
  166. exports.isString = isString;
  167. exports.isSymbol = isSymbol;
  168. exports.isType = isType;
  169. exports.isUndefined = isUndefined;
  170. exports.isWeakMap = isWeakMap;
  171. exports.isWeakSet = isWeakSet;