is-what 4.1.10-4 → 4.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +79 -305
- package/dist/cjs/index.d.cts +45 -44
- package/dist/index.d.ts +45 -44
- package/dist/index.js +79 -305
- package/package.json +6 -5
    
        package/dist/cjs/index.cjs
    CHANGED
    
    | @@ -1,346 +1,120 @@ | |
| 1 1 | 
             
            'use strict';
         | 
| 2 2 |  | 
| 3 | 
            -
            /**
         | 
| 4 | 
            -
             * Returns the object type of the given payload
         | 
| 5 | 
            -
             *
         | 
| 6 | 
            -
             * @param {*} payload
         | 
| 7 | 
            -
             * @returns {string}
         | 
| 8 | 
            -
             */
         | 
| 9 3 | 
             
            function getType(payload) {
         | 
| 10 | 
            -
             | 
| 11 | 
            -
            }
         | 
| 12 | 
            -
            /**
         | 
| 13 | 
            -
             * Returns whether the payload is undefined
         | 
| 14 | 
            -
             *
         | 
| 15 | 
            -
             * @param {*} payload
         | 
| 16 | 
            -
             * @returns {payload is undefined}
         | 
| 17 | 
            -
             */
         | 
| 4 | 
            +
              return Object.prototype.toString.call(payload).slice(8, -1);
         | 
| 5 | 
            +
            }
         | 
| 18 6 | 
             
            function isUndefined(payload) {
         | 
| 19 | 
            -
             | 
| 20 | 
            -
            }
         | 
| 21 | 
            -
            /**
         | 
| 22 | 
            -
             * Returns whether the payload is null
         | 
| 23 | 
            -
             *
         | 
| 24 | 
            -
             * @param {*} payload
         | 
| 25 | 
            -
             * @returns {payload is null}
         | 
| 26 | 
            -
             */
         | 
| 7 | 
            +
              return getType(payload) === "Undefined";
         | 
| 8 | 
            +
            }
         | 
| 27 9 | 
             
            function isNull(payload) {
         | 
| 28 | 
            -
             | 
| 29 | 
            -
            }
         | 
| 30 | 
            -
            /**
         | 
| 31 | 
            -
             * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes)
         | 
| 32 | 
            -
             *
         | 
| 33 | 
            -
             * @param {*} payload
         | 
| 34 | 
            -
             * @returns {payload is PlainObject}
         | 
| 35 | 
            -
             */
         | 
| 10 | 
            +
              return getType(payload) === "Null";
         | 
| 11 | 
            +
            }
         | 
| 36 12 | 
             
            function isPlainObject(payload) {
         | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
            }
         | 
| 42 | 
            -
            /**
         | 
| 43 | 
            -
             * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes)
         | 
| 44 | 
            -
             *
         | 
| 45 | 
            -
             * @param {*} payload
         | 
| 46 | 
            -
             * @returns {payload is PlainObject}
         | 
| 47 | 
            -
             */
         | 
| 13 | 
            +
              if (getType(payload) !== "Object")
         | 
| 14 | 
            +
                return false;
         | 
| 15 | 
            +
              const prototype = Object.getPrototypeOf(payload);
         | 
| 16 | 
            +
              return prototype.constructor === Object && prototype === Object.prototype;
         | 
| 17 | 
            +
            }
         | 
| 48 18 | 
             
            function isObject(payload) {
         | 
| 49 | 
            -
             | 
| 50 | 
            -
            }
         | 
| 51 | 
            -
            /**
         | 
| 52 | 
            -
             * Returns whether the payload is a an empty object (excluding special classes or objects with other prototypes)
         | 
| 53 | 
            -
             *
         | 
| 54 | 
            -
             * @param {*} payload
         | 
| 55 | 
            -
             * @returns {payload is { [K in any]: never }}
         | 
| 56 | 
            -
             */
         | 
| 19 | 
            +
              return isPlainObject(payload);
         | 
| 20 | 
            +
            }
         | 
| 57 21 | 
             
            function isEmptyObject(payload) {
         | 
| 58 | 
            -
             | 
| 59 | 
            -
            }
         | 
| 60 | 
            -
            /**
         | 
| 61 | 
            -
             * Returns whether the payload is a an empty object (excluding special classes or objects with other prototypes)
         | 
| 62 | 
            -
             *
         | 
| 63 | 
            -
             * @param {*} payload
         | 
| 64 | 
            -
             * @returns {payload is PlainObject}
         | 
| 65 | 
            -
             */
         | 
| 22 | 
            +
              return isPlainObject(payload) && Object.keys(payload).length === 0;
         | 
| 23 | 
            +
            }
         | 
| 66 24 | 
             
            function isFullObject(payload) {
         | 
| 67 | 
            -
             | 
| 68 | 
            -
            }
         | 
| 69 | 
            -
            /**
         | 
| 70 | 
            -
             * Returns whether the payload is an any kind of object (including special classes or objects with different prototypes)
         | 
| 71 | 
            -
             *
         | 
| 72 | 
            -
             * @param {*} payload
         | 
| 73 | 
            -
             * @returns {payload is PlainObject}
         | 
| 74 | 
            -
             */
         | 
| 25 | 
            +
              return isPlainObject(payload) && Object.keys(payload).length > 0;
         | 
| 26 | 
            +
            }
         | 
| 75 27 | 
             
            function isAnyObject(payload) {
         | 
| 76 | 
            -
             | 
| 77 | 
            -
            }
         | 
| 78 | 
            -
            /**
         | 
| 79 | 
            -
             * Returns whether the payload is an object like a type passed in < >
         | 
| 80 | 
            -
             *
         | 
| 81 | 
            -
             * Usage: isObjectLike<{id: any}>(payload) // will make sure it's an object and has an `id` prop.
         | 
| 82 | 
            -
             *
         | 
| 83 | 
            -
             * @template T this must be passed in < >
         | 
| 84 | 
            -
             * @param {*} payload
         | 
| 85 | 
            -
             * @returns {payload is T}
         | 
| 86 | 
            -
             */
         | 
| 28 | 
            +
              return getType(payload) === "Object";
         | 
| 29 | 
            +
            }
         | 
| 87 30 | 
             
            function isObjectLike(payload) {
         | 
| 88 | 
            -
             | 
| 89 | 
            -
            }
         | 
| 90 | 
            -
            /**
         | 
| 91 | 
            -
             * Returns whether the payload is a function (regular or async)
         | 
| 92 | 
            -
             *
         | 
| 93 | 
            -
             * @param {*} payload
         | 
| 94 | 
            -
             * @returns {payload is AnyFunction}
         | 
| 95 | 
            -
             */
         | 
| 31 | 
            +
              return isAnyObject(payload);
         | 
| 32 | 
            +
            }
         | 
| 96 33 | 
             
            function isFunction(payload) {
         | 
| 97 | 
            -
             | 
| 98 | 
            -
            }
         | 
| 99 | 
            -
            /**
         | 
| 100 | 
            -
             * Returns whether the payload is an array
         | 
| 101 | 
            -
             *
         | 
| 102 | 
            -
             * @param {any} payload
         | 
| 103 | 
            -
             * @returns {payload is any[]}
         | 
| 104 | 
            -
             */
         | 
| 34 | 
            +
              return typeof payload === "function";
         | 
| 35 | 
            +
            }
         | 
| 105 36 | 
             
            function isArray(payload) {
         | 
| 106 | 
            -
             | 
| 107 | 
            -
            }
         | 
| 108 | 
            -
            /**
         | 
| 109 | 
            -
             * Returns whether the payload is a an array with at least 1 item
         | 
| 110 | 
            -
             *
         | 
| 111 | 
            -
             * @param {*} payload
         | 
| 112 | 
            -
             * @returns {payload is any[]}
         | 
| 113 | 
            -
             */
         | 
| 37 | 
            +
              return getType(payload) === "Array";
         | 
| 38 | 
            +
            }
         | 
| 114 39 | 
             
            function isFullArray(payload) {
         | 
| 115 | 
            -
             | 
| 116 | 
            -
            }
         | 
| 117 | 
            -
            /**
         | 
| 118 | 
            -
             * Returns whether the payload is a an empty array
         | 
| 119 | 
            -
             *
         | 
| 120 | 
            -
             * @param {*} payload
         | 
| 121 | 
            -
             * @returns {payload is []}
         | 
| 122 | 
            -
             */
         | 
| 40 | 
            +
              return isArray(payload) && payload.length > 0;
         | 
| 41 | 
            +
            }
         | 
| 123 42 | 
             
            function isEmptyArray(payload) {
         | 
| 124 | 
            -
             | 
| 125 | 
            -
            }
         | 
| 126 | 
            -
            /**
         | 
| 127 | 
            -
             * Returns whether the payload is a string
         | 
| 128 | 
            -
             *
         | 
| 129 | 
            -
             * @param {*} payload
         | 
| 130 | 
            -
             * @returns {payload is string}
         | 
| 131 | 
            -
             */
         | 
| 43 | 
            +
              return isArray(payload) && payload.length === 0;
         | 
| 44 | 
            +
            }
         | 
| 132 45 | 
             
            function isString(payload) {
         | 
| 133 | 
            -
             | 
| 134 | 
            -
            }
         | 
| 135 | 
            -
            /**
         | 
| 136 | 
            -
             * Returns whether the payload is a string, BUT returns false for ''
         | 
| 137 | 
            -
             *
         | 
| 138 | 
            -
             * @param {*} payload
         | 
| 139 | 
            -
             * @returns {payload is string}
         | 
| 140 | 
            -
             */
         | 
| 46 | 
            +
              return getType(payload) === "String";
         | 
| 47 | 
            +
            }
         | 
| 141 48 | 
             
            function isFullString(payload) {
         | 
| 142 | 
            -
             | 
| 143 | 
            -
            }
         | 
| 144 | 
            -
            /**
         | 
| 145 | 
            -
             * Returns whether the payload is ''
         | 
| 146 | 
            -
             *
         | 
| 147 | 
            -
             * @param {*} payload
         | 
| 148 | 
            -
             * @returns {payload is string}
         | 
| 149 | 
            -
             */
         | 
| 49 | 
            +
              return isString(payload) && payload !== "";
         | 
| 50 | 
            +
            }
         | 
| 150 51 | 
             
            function isEmptyString(payload) {
         | 
| 151 | 
            -
             | 
| 152 | 
            -
            }
         | 
| 153 | 
            -
            /**
         | 
| 154 | 
            -
             * Returns whether the payload is a number (but not NaN)
         | 
| 155 | 
            -
             *
         | 
| 156 | 
            -
             * This will return `false` for `NaN`!!
         | 
| 157 | 
            -
             *
         | 
| 158 | 
            -
             * @param {*} payload
         | 
| 159 | 
            -
             * @returns {payload is number}
         | 
| 160 | 
            -
             */
         | 
| 52 | 
            +
              return payload === "";
         | 
| 53 | 
            +
            }
         | 
| 161 54 | 
             
            function isNumber(payload) {
         | 
| 162 | 
            -
             | 
| 163 | 
            -
            }
         | 
| 164 | 
            -
            /**
         | 
| 165 | 
            -
             * Returns whether the payload is a positive number (but not 0)
         | 
| 166 | 
            -
             *
         | 
| 167 | 
            -
             * @param {*} payload
         | 
| 168 | 
            -
             * @returns {payload is number}
         | 
| 169 | 
            -
             */
         | 
| 55 | 
            +
              return getType(payload) === "Number" && !isNaN(payload);
         | 
| 56 | 
            +
            }
         | 
| 170 57 | 
             
            function isPositiveNumber(payload) {
         | 
| 171 | 
            -
             | 
| 172 | 
            -
            }
         | 
| 173 | 
            -
            /**
         | 
| 174 | 
            -
             * Returns whether the payload is a negative number (but not 0)
         | 
| 175 | 
            -
             *
         | 
| 176 | 
            -
             * @param {*} payload
         | 
| 177 | 
            -
             * @returns {payload is number}
         | 
| 178 | 
            -
             */
         | 
| 58 | 
            +
              return isNumber(payload) && payload > 0;
         | 
| 59 | 
            +
            }
         | 
| 179 60 | 
             
            function isNegativeNumber(payload) {
         | 
| 180 | 
            -
             | 
| 181 | 
            -
            }
         | 
| 182 | 
            -
            /**
         | 
| 183 | 
            -
             * Returns whether the payload is a boolean
         | 
| 184 | 
            -
             *
         | 
| 185 | 
            -
             * @param {*} payload
         | 
| 186 | 
            -
             * @returns {payload is boolean}
         | 
| 187 | 
            -
             */
         | 
| 61 | 
            +
              return isNumber(payload) && payload < 0;
         | 
| 62 | 
            +
            }
         | 
| 188 63 | 
             
            function isBoolean(payload) {
         | 
| 189 | 
            -
             | 
| 190 | 
            -
            }
         | 
| 191 | 
            -
            /**
         | 
| 192 | 
            -
             * Returns whether the payload is a regular expression (RegExp)
         | 
| 193 | 
            -
             *
         | 
| 194 | 
            -
             * @param {*} payload
         | 
| 195 | 
            -
             * @returns {payload is RegExp}
         | 
| 196 | 
            -
             */
         | 
| 64 | 
            +
              return getType(payload) === "Boolean";
         | 
| 65 | 
            +
            }
         | 
| 197 66 | 
             
            function isRegExp(payload) {
         | 
| 198 | 
            -
             | 
| 199 | 
            -
            }
         | 
| 200 | 
            -
            /**
         | 
| 201 | 
            -
             * Returns whether the payload is a Map
         | 
| 202 | 
            -
             *
         | 
| 203 | 
            -
             * @param {*} payload
         | 
| 204 | 
            -
             * @returns {payload is Map<any, any>}
         | 
| 205 | 
            -
             */
         | 
| 67 | 
            +
              return getType(payload) === "RegExp";
         | 
| 68 | 
            +
            }
         | 
| 206 69 | 
             
            function isMap(payload) {
         | 
| 207 | 
            -
             | 
| 208 | 
            -
            }
         | 
| 209 | 
            -
            /**
         | 
| 210 | 
            -
             * Returns whether the payload is a WeakMap
         | 
| 211 | 
            -
             *
         | 
| 212 | 
            -
             * @param {*} payload
         | 
| 213 | 
            -
             * @returns {payload is WeakMap<any, any>}
         | 
| 214 | 
            -
             */
         | 
| 70 | 
            +
              return getType(payload) === "Map";
         | 
| 71 | 
            +
            }
         | 
| 215 72 | 
             
            function isWeakMap(payload) {
         | 
| 216 | 
            -
             | 
| 217 | 
            -
            }
         | 
| 218 | 
            -
            /**
         | 
| 219 | 
            -
             * Returns whether the payload is a Set
         | 
| 220 | 
            -
             *
         | 
| 221 | 
            -
             * @param {*} payload
         | 
| 222 | 
            -
             * @returns {payload is Set<any>}
         | 
| 223 | 
            -
             */
         | 
| 73 | 
            +
              return getType(payload) === "WeakMap";
         | 
| 74 | 
            +
            }
         | 
| 224 75 | 
             
            function isSet(payload) {
         | 
| 225 | 
            -
             | 
| 226 | 
            -
            }
         | 
| 227 | 
            -
            /**
         | 
| 228 | 
            -
             * Returns whether the payload is a WeakSet
         | 
| 229 | 
            -
             *
         | 
| 230 | 
            -
             * @param {*} payload
         | 
| 231 | 
            -
             * @returns {payload is WeakSet<any>}
         | 
| 232 | 
            -
             */
         | 
| 76 | 
            +
              return getType(payload) === "Set";
         | 
| 77 | 
            +
            }
         | 
| 233 78 | 
             
            function isWeakSet(payload) {
         | 
| 234 | 
            -
             | 
| 235 | 
            -
            }
         | 
| 236 | 
            -
            /**
         | 
| 237 | 
            -
             * Returns whether the payload is a Symbol
         | 
| 238 | 
            -
             *
         | 
| 239 | 
            -
             * @param {*} payload
         | 
| 240 | 
            -
             * @returns {payload is symbol}
         | 
| 241 | 
            -
             */
         | 
| 79 | 
            +
              return getType(payload) === "WeakSet";
         | 
| 80 | 
            +
            }
         | 
| 242 81 | 
             
            function isSymbol(payload) {
         | 
| 243 | 
            -
             | 
| 244 | 
            -
            }
         | 
| 245 | 
            -
            /**
         | 
| 246 | 
            -
             * Returns whether the payload is a Date, and that the date is valid
         | 
| 247 | 
            -
             *
         | 
| 248 | 
            -
             * @param {*} payload
         | 
| 249 | 
            -
             * @returns {payload is Date}
         | 
| 250 | 
            -
             */
         | 
| 82 | 
            +
              return getType(payload) === "Symbol";
         | 
| 83 | 
            +
            }
         | 
| 251 84 | 
             
            function isDate(payload) {
         | 
| 252 | 
            -
             | 
| 253 | 
            -
            }
         | 
| 254 | 
            -
            /**
         | 
| 255 | 
            -
             * Returns whether the payload is a Blob
         | 
| 256 | 
            -
             *
         | 
| 257 | 
            -
             * @param {*} payload
         | 
| 258 | 
            -
             * @returns {payload is Blob}
         | 
| 259 | 
            -
             */
         | 
| 85 | 
            +
              return getType(payload) === "Date" && !isNaN(payload);
         | 
| 86 | 
            +
            }
         | 
| 260 87 | 
             
            function isBlob(payload) {
         | 
| 261 | 
            -
             | 
| 262 | 
            -
            }
         | 
| 263 | 
            -
            /**
         | 
| 264 | 
            -
             * Returns whether the payload is a File
         | 
| 265 | 
            -
             *
         | 
| 266 | 
            -
             * @param {*} payload
         | 
| 267 | 
            -
             * @returns {payload is File}
         | 
| 268 | 
            -
             */
         | 
| 88 | 
            +
              return getType(payload) === "Blob";
         | 
| 89 | 
            +
            }
         | 
| 269 90 | 
             
            function isFile(payload) {
         | 
| 270 | 
            -
             | 
| 271 | 
            -
            }
         | 
| 272 | 
            -
            /**
         | 
| 273 | 
            -
             * Returns whether the payload is a Promise
         | 
| 274 | 
            -
             *
         | 
| 275 | 
            -
             * @param {*} payload
         | 
| 276 | 
            -
             * @returns {payload is Promise<any>}
         | 
| 277 | 
            -
             */
         | 
| 91 | 
            +
              return getType(payload) === "File";
         | 
| 92 | 
            +
            }
         | 
| 278 93 | 
             
            function isPromise(payload) {
         | 
| 279 | 
            -
             | 
| 280 | 
            -
            }
         | 
| 281 | 
            -
            /**
         | 
| 282 | 
            -
             * Returns whether the payload is an Error
         | 
| 283 | 
            -
             *
         | 
| 284 | 
            -
             * @param {*} payload
         | 
| 285 | 
            -
             * @returns {payload is Error}
         | 
| 286 | 
            -
             */
         | 
| 94 | 
            +
              return getType(payload) === "Promise";
         | 
| 95 | 
            +
            }
         | 
| 287 96 | 
             
            function isError(payload) {
         | 
| 288 | 
            -
             | 
| 289 | 
            -
            }
         | 
| 290 | 
            -
            /**
         | 
| 291 | 
            -
             * Returns whether the payload is literally the value `NaN` (it's `NaN` and also a `number`)
         | 
| 292 | 
            -
             *
         | 
| 293 | 
            -
             * @param {*} payload
         | 
| 294 | 
            -
             * @returns {payload is typeof NaN}
         | 
| 295 | 
            -
             */
         | 
| 97 | 
            +
              return getType(payload) === "Error";
         | 
| 98 | 
            +
            }
         | 
| 296 99 | 
             
            function isNaNValue(payload) {
         | 
| 297 | 
            -
             | 
| 298 | 
            -
            }
         | 
| 299 | 
            -
            /**
         | 
| 300 | 
            -
             * Returns whether the payload is a primitive type (eg. Boolean | Null | Undefined | Number | String | Symbol)
         | 
| 301 | 
            -
             *
         | 
| 302 | 
            -
             * @param {*} payload
         | 
| 303 | 
            -
             * @returns {(payload is boolean | null | undefined | number | string | symbol)}
         | 
| 304 | 
            -
             */
         | 
| 100 | 
            +
              return getType(payload) === "Number" && isNaN(payload);
         | 
| 101 | 
            +
            }
         | 
| 305 102 | 
             
            function isPrimitive(payload) {
         | 
| 306 | 
            -
             | 
| 307 | 
            -
             | 
| 308 | 
            -
                    isUndefined(payload) ||
         | 
| 309 | 
            -
                    isNumber(payload) ||
         | 
| 310 | 
            -
                    isString(payload) ||
         | 
| 311 | 
            -
                    isSymbol(payload));
         | 
| 312 | 
            -
            }
         | 
| 313 | 
            -
            /**
         | 
| 314 | 
            -
             * Returns true whether the payload is null or undefined
         | 
| 315 | 
            -
             *
         | 
| 316 | 
            -
             * @param {*} payload
         | 
| 317 | 
            -
             * @returns {(payload is null | undefined)}
         | 
| 318 | 
            -
             */
         | 
| 103 | 
            +
              return isBoolean(payload) || isNull(payload) || isUndefined(payload) || isNumber(payload) || isString(payload) || isSymbol(payload);
         | 
| 104 | 
            +
            }
         | 
| 319 105 | 
             
            const isNullOrUndefined = isOneOf(isNull, isUndefined);
         | 
| 320 106 | 
             
            function isOneOf(a, b, c, d, e) {
         | 
| 321 | 
            -
             | 
| 322 | 
            -
            }
         | 
| 323 | 
            -
            /**
         | 
| 324 | 
            -
             * Does a generic check to check that the given payload is of a given type.
         | 
| 325 | 
            -
             * In cases like Number, it will return true for NaN as NaN is a Number (thanks javascript!);
         | 
| 326 | 
            -
             * It will, however, differentiate between object and null
         | 
| 327 | 
            -
             *
         | 
| 328 | 
            -
             * @template T
         | 
| 329 | 
            -
             * @param {*} payload
         | 
| 330 | 
            -
             * @param {T} type
         | 
| 331 | 
            -
             * @throws {TypeError} Will throw type error if type is an invalid type
         | 
| 332 | 
            -
             * @returns {payload is T}
         | 
| 333 | 
            -
             */
         | 
| 107 | 
            +
              return (value) => a(value) || b(value) || !!c && c(value) || !!d && d(value) || !!e && e(value);
         | 
| 108 | 
            +
            }
         | 
| 334 109 | 
             
            function isType(payload, type) {
         | 
| 335 | 
            -
             | 
| 336 | 
            -
             | 
| 337 | 
            -
             | 
| 338 | 
            -
             | 
| 339 | 
            -
             | 
| 340 | 
            -
             | 
| 341 | 
            -
             | 
| 342 | 
            -
             | 
| 343 | 
            -
                return getType(payload) === name || Boolean(payload && payload.constructor === type);
         | 
| 110 | 
            +
              if (!(type instanceof Function)) {
         | 
| 111 | 
            +
                throw new TypeError("Type must be a function");
         | 
| 112 | 
            +
              }
         | 
| 113 | 
            +
              if (!Object.prototype.hasOwnProperty.call(type, "prototype")) {
         | 
| 114 | 
            +
                throw new TypeError("Type is not a class");
         | 
| 115 | 
            +
              }
         | 
| 116 | 
            +
              const name = type.name;
         | 
| 117 | 
            +
              return getType(payload) === name || Boolean(payload && payload.constructor === type);
         | 
| 344 118 | 
             
            }
         | 
| 345 119 |  | 
| 346 120 | 
             
            exports.getType = getType;
         |