is-what 3.5.0 → 3.7.1
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/.eslintignore +8 -0
- package/.eslintrc.js +17 -0
- package/dist/index.cjs.js +25 -5
- package/dist/index.esm.js +24 -6
- package/package.json +26 -11
- package/src/index.ts +26 -6
- package/test/ava.ts +195 -0
- package/test/index.test.js +3 -0
- package/types/index.d.ts +18 -4
- package/wallaby.conf.js +0 -23
    
        package/.eslintignore
    ADDED
    
    
    
        package/.eslintrc.js
    ADDED
    
    | @@ -0,0 +1,17 @@ | |
| 1 | 
            +
            // npm i -D @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint eslint-config-prettier eslint-plugin-tree-shaking
         | 
| 2 | 
            +
            module.exports = {
         | 
| 3 | 
            +
              root: true,
         | 
| 4 | 
            +
              parser: '@typescript-eslint/parser',
         | 
| 5 | 
            +
              plugins: ['@typescript-eslint', 'tree-shaking'],
         | 
| 6 | 
            +
              extends: [
         | 
| 7 | 
            +
                'eslint:recommended',
         | 
| 8 | 
            +
                'plugin:@typescript-eslint/eslint-recommended',
         | 
| 9 | 
            +
                'plugin:@typescript-eslint/recommended',
         | 
| 10 | 
            +
                'prettier/@typescript-eslint',
         | 
| 11 | 
            +
              ],
         | 
| 12 | 
            +
              rules: {
         | 
| 13 | 
            +
                '@typescript-eslint/no-explicit-any': 'off',
         | 
| 14 | 
            +
                '@typescript-eslint/ban-ts-ignore': 'off',
         | 
| 15 | 
            +
                'tree-shaking/no-side-effects-in-initialization': 'error',
         | 
| 16 | 
            +
              },
         | 
| 17 | 
            +
            }
         | 
    
        package/dist/index.cjs.js
    CHANGED
    
    | @@ -136,7 +136,7 @@ function isBoolean(payload) { | |
| 136 136 | 
             
                return getType(payload) === 'Boolean';
         | 
| 137 137 | 
             
            }
         | 
| 138 138 | 
             
            /**
         | 
| 139 | 
            -
             * Returns whether the payload is a regular expression
         | 
| 139 | 
            +
             * Returns whether the payload is a regular expression (RegExp)
         | 
| 140 140 | 
             
             *
         | 
| 141 141 | 
             
             * @param {*} payload
         | 
| 142 142 | 
             
             * @returns {payload is RegExp}
         | 
| @@ -154,7 +154,7 @@ function isSymbol(payload) { | |
| 154 154 | 
             
                return getType(payload) === 'Symbol';
         | 
| 155 155 | 
             
            }
         | 
| 156 156 | 
             
            /**
         | 
| 157 | 
            -
             * Returns whether the payload is a  | 
| 157 | 
            +
             * Returns whether the payload is a Date, and that the date is valid
         | 
| 158 158 | 
             
             *
         | 
| 159 159 | 
             
             * @param {*} payload
         | 
| 160 160 | 
             
             * @returns {payload is Date}
         | 
| @@ -163,7 +163,7 @@ function isDate(payload) { | |
| 163 163 | 
             
                return getType(payload) === 'Date' && !isNaN(payload);
         | 
| 164 164 | 
             
            }
         | 
| 165 165 | 
             
            /**
         | 
| 166 | 
            -
             * Returns whether the payload is a  | 
| 166 | 
            +
             * Returns whether the payload is a Blob
         | 
| 167 167 | 
             
             *
         | 
| 168 168 | 
             
             * @param {*} payload
         | 
| 169 169 | 
             
             * @returns {payload is Blob}
         | 
| @@ -172,7 +172,7 @@ function isBlob(payload) { | |
| 172 172 | 
             
                return getType(payload) === 'Blob';
         | 
| 173 173 | 
             
            }
         | 
| 174 174 | 
             
            /**
         | 
| 175 | 
            -
             * Returns whether the payload is a  | 
| 175 | 
            +
             * Returns whether the payload is a File
         | 
| 176 176 | 
             
             *
         | 
| 177 177 | 
             
             * @param {*} payload
         | 
| 178 178 | 
             
             * @returns {payload is File}
         | 
| @@ -180,6 +180,24 @@ function isBlob(payload) { | |
| 180 180 | 
             
            function isFile(payload) {
         | 
| 181 181 | 
             
                return getType(payload) === 'File';
         | 
| 182 182 | 
             
            }
         | 
| 183 | 
            +
            /**
         | 
| 184 | 
            +
             * Returns whether the payload is a Promise
         | 
| 185 | 
            +
             *
         | 
| 186 | 
            +
             * @param {*} payload
         | 
| 187 | 
            +
             * @returns {payload is Promise}
         | 
| 188 | 
            +
             */
         | 
| 189 | 
            +
            function isPromise(payload) {
         | 
| 190 | 
            +
                return getType(payload) === 'Promise';
         | 
| 191 | 
            +
            }
         | 
| 192 | 
            +
            /**
         | 
| 193 | 
            +
             * Returns whether the payload is an Error
         | 
| 194 | 
            +
             *
         | 
| 195 | 
            +
             * @param {*} payload
         | 
| 196 | 
            +
             * @returns {payload is Error}
         | 
| 197 | 
            +
             */
         | 
| 198 | 
            +
            function isError(payload) {
         | 
| 199 | 
            +
                return getType(payload) === 'Error';
         | 
| 200 | 
            +
            }
         | 
| 183 201 | 
             
            /**
         | 
| 184 202 | 
             
             * Returns whether the payload is a primitive type (eg. Boolean | Null | Undefined | Number | String | Symbol)
         | 
| 185 203 | 
             
             *
         | 
| @@ -218,7 +236,7 @@ function isType(payload, type) { | |
| 218 236 | 
             
                if (!(type instanceof Function)) {
         | 
| 219 237 | 
             
                    throw new TypeError('Type must be a function');
         | 
| 220 238 | 
             
                }
         | 
| 221 | 
            -
                if (! | 
| 239 | 
            +
                if (!Object.prototype.hasOwnProperty.call(type, 'prototype')) {
         | 
| 222 240 | 
             
                    throw new TypeError('Type is not a class');
         | 
| 223 241 | 
             
                }
         | 
| 224 242 | 
             
                // Classes usually have names (as functions usually have names)
         | 
| @@ -233,6 +251,7 @@ exports.isBlob = isBlob; | |
| 233 251 | 
             
            exports.isBoolean = isBoolean;
         | 
| 234 252 | 
             
            exports.isDate = isDate;
         | 
| 235 253 | 
             
            exports.isEmptyString = isEmptyString;
         | 
| 254 | 
            +
            exports.isError = isError;
         | 
| 236 255 | 
             
            exports.isFile = isFile;
         | 
| 237 256 | 
             
            exports.isFullString = isFullString;
         | 
| 238 257 | 
             
            exports.isFunction = isFunction;
         | 
| @@ -243,6 +262,7 @@ exports.isObject = isObject; | |
| 243 262 | 
             
            exports.isObjectLike = isObjectLike;
         | 
| 244 263 | 
             
            exports.isPlainObject = isPlainObject;
         | 
| 245 264 | 
             
            exports.isPrimitive = isPrimitive;
         | 
| 265 | 
            +
            exports.isPromise = isPromise;
         | 
| 246 266 | 
             
            exports.isRegExp = isRegExp;
         | 
| 247 267 | 
             
            exports.isString = isString;
         | 
| 248 268 | 
             
            exports.isSymbol = isSymbol;
         | 
    
        package/dist/index.esm.js
    CHANGED
    
    | @@ -132,7 +132,7 @@ function isBoolean(payload) { | |
| 132 132 | 
             
                return getType(payload) === 'Boolean';
         | 
| 133 133 | 
             
            }
         | 
| 134 134 | 
             
            /**
         | 
| 135 | 
            -
             * Returns whether the payload is a regular expression
         | 
| 135 | 
            +
             * Returns whether the payload is a regular expression (RegExp)
         | 
| 136 136 | 
             
             *
         | 
| 137 137 | 
             
             * @param {*} payload
         | 
| 138 138 | 
             
             * @returns {payload is RegExp}
         | 
| @@ -150,7 +150,7 @@ function isSymbol(payload) { | |
| 150 150 | 
             
                return getType(payload) === 'Symbol';
         | 
| 151 151 | 
             
            }
         | 
| 152 152 | 
             
            /**
         | 
| 153 | 
            -
             * Returns whether the payload is a  | 
| 153 | 
            +
             * Returns whether the payload is a Date, and that the date is valid
         | 
| 154 154 | 
             
             *
         | 
| 155 155 | 
             
             * @param {*} payload
         | 
| 156 156 | 
             
             * @returns {payload is Date}
         | 
| @@ -159,7 +159,7 @@ function isDate(payload) { | |
| 159 159 | 
             
                return getType(payload) === 'Date' && !isNaN(payload);
         | 
| 160 160 | 
             
            }
         | 
| 161 161 | 
             
            /**
         | 
| 162 | 
            -
             * Returns whether the payload is a  | 
| 162 | 
            +
             * Returns whether the payload is a Blob
         | 
| 163 163 | 
             
             *
         | 
| 164 164 | 
             
             * @param {*} payload
         | 
| 165 165 | 
             
             * @returns {payload is Blob}
         | 
| @@ -168,7 +168,7 @@ function isBlob(payload) { | |
| 168 168 | 
             
                return getType(payload) === 'Blob';
         | 
| 169 169 | 
             
            }
         | 
| 170 170 | 
             
            /**
         | 
| 171 | 
            -
             * Returns whether the payload is a  | 
| 171 | 
            +
             * Returns whether the payload is a File
         | 
| 172 172 | 
             
             *
         | 
| 173 173 | 
             
             * @param {*} payload
         | 
| 174 174 | 
             
             * @returns {payload is File}
         | 
| @@ -176,6 +176,24 @@ function isBlob(payload) { | |
| 176 176 | 
             
            function isFile(payload) {
         | 
| 177 177 | 
             
                return getType(payload) === 'File';
         | 
| 178 178 | 
             
            }
         | 
| 179 | 
            +
            /**
         | 
| 180 | 
            +
             * Returns whether the payload is a Promise
         | 
| 181 | 
            +
             *
         | 
| 182 | 
            +
             * @param {*} payload
         | 
| 183 | 
            +
             * @returns {payload is Promise}
         | 
| 184 | 
            +
             */
         | 
| 185 | 
            +
            function isPromise(payload) {
         | 
| 186 | 
            +
                return getType(payload) === 'Promise';
         | 
| 187 | 
            +
            }
         | 
| 188 | 
            +
            /**
         | 
| 189 | 
            +
             * Returns whether the payload is an Error
         | 
| 190 | 
            +
             *
         | 
| 191 | 
            +
             * @param {*} payload
         | 
| 192 | 
            +
             * @returns {payload is Error}
         | 
| 193 | 
            +
             */
         | 
| 194 | 
            +
            function isError(payload) {
         | 
| 195 | 
            +
                return getType(payload) === 'Error';
         | 
| 196 | 
            +
            }
         | 
| 179 197 | 
             
            /**
         | 
| 180 198 | 
             
             * Returns whether the payload is a primitive type (eg. Boolean | Null | Undefined | Number | String | Symbol)
         | 
| 181 199 | 
             
             *
         | 
| @@ -214,7 +232,7 @@ function isType(payload, type) { | |
| 214 232 | 
             
                if (!(type instanceof Function)) {
         | 
| 215 233 | 
             
                    throw new TypeError('Type must be a function');
         | 
| 216 234 | 
             
                }
         | 
| 217 | 
            -
                if (! | 
| 235 | 
            +
                if (!Object.prototype.hasOwnProperty.call(type, 'prototype')) {
         | 
| 218 236 | 
             
                    throw new TypeError('Type is not a class');
         | 
| 219 237 | 
             
                }
         | 
| 220 238 | 
             
                // Classes usually have names (as functions usually have names)
         | 
| @@ -222,4 +240,4 @@ function isType(payload, type) { | |
| 222 240 | 
             
                return getType(payload) === name || Boolean(payload && payload.constructor === type);
         | 
| 223 241 | 
             
            }
         | 
| 224 242 |  | 
| 225 | 
            -
            export { getType, isAnyObject, isArray, isBlob, isBoolean, isDate, isEmptyString, isFile, isFullString, isFunction, isNull, isNullOrUndefined, isNumber, isObject, isObjectLike, isPlainObject, isPrimitive, isRegExp, isString, isSymbol, isType, isUndefined };
         | 
| 243 | 
            +
            export { getType, isAnyObject, isArray, isBlob, isBoolean, isDate, isEmptyString, isError, isFile, isFullString, isFunction, isNull, isNullOrUndefined, isNumber, isObject, isObjectLike, isPlainObject, isPrimitive, isPromise, isRegExp, isString, isSymbol, isType, isUndefined };
         | 
    
        package/package.json
    CHANGED
    
    | @@ -1,14 +1,18 @@ | |
| 1 1 | 
             
            {
         | 
| 2 2 | 
             
              "name": "is-what",
         | 
| 3 | 
            -
              " | 
| 3 | 
            +
              "sideEffects": false,
         | 
| 4 | 
            +
              "version": "3.7.1",
         | 
| 4 5 | 
             
              "description": "JS type check (TypeScript supported) functions like `isPlainObject() isArray()` etc. A simple & small integration.",
         | 
| 5 6 | 
             
              "main": "dist/index.cjs.js",
         | 
| 6 7 | 
             
              "module": "dist/index.esm.js",
         | 
| 7 8 | 
             
              "typings": "types/index.d.ts",
         | 
| 8 9 | 
             
              "scripts": {
         | 
| 10 | 
            +
                "ava": "ava",
         | 
| 9 11 | 
             
                "test": "jest",
         | 
| 10 12 | 
             
                "test-w": "jest --watchAll",
         | 
| 11 | 
            -
                " | 
| 13 | 
            +
                "lint": "eslint . --ext .js,.jsx,.ts,.tsx",
         | 
| 14 | 
            +
                "rollup": "rollup -c ./build/rollup.js",
         | 
| 15 | 
            +
                "build": "npm run lint && npm run rollup && npm run test"
         | 
| 12 16 | 
             
              },
         | 
| 13 17 | 
             
              "repository": {
         | 
| 14 18 | 
             
                "type": "git",
         | 
| @@ -41,18 +45,29 @@ | |
| 41 45 | 
             
                "url": "https://github.com/mesqueeb/is-what/issues"
         | 
| 42 46 | 
             
              },
         | 
| 43 47 | 
             
              "homepage": "https://github.com/mesqueeb/is-what#readme",
         | 
| 48 | 
            +
              "dependencies": {},
         | 
| 44 49 | 
             
              "devDependencies": {
         | 
| 45 | 
            -
                "@babel/core": "^7.7 | 
| 50 | 
            +
                "@babel/core": "^7.8.7",
         | 
| 46 51 | 
             
                "@types/babel-core": "^6.25.6",
         | 
| 47 | 
            -
                "@types/jest": "^ | 
| 52 | 
            +
                "@types/jest": "^25.1.4",
         | 
| 53 | 
            +
                "@typescript-eslint/eslint-plugin": "^2.23.0",
         | 
| 54 | 
            +
                "@typescript-eslint/parser": "^2.23.0",
         | 
| 55 | 
            +
                "ava": "^3.5.0",
         | 
| 48 56 | 
             
                "babel-core": "^7.0.0-bridge.0",
         | 
| 49 | 
            -
                "babel-jest": "^ | 
| 57 | 
            +
                "babel-jest": "^25.1.0",
         | 
| 50 58 | 
             
                "babel-preset-env": "^1.7.0",
         | 
| 51 | 
            -
                " | 
| 52 | 
            -
                " | 
| 53 | 
            -
                " | 
| 54 | 
            -
                " | 
| 55 | 
            -
                " | 
| 59 | 
            +
                "eslint": "^6.8.0",
         | 
| 60 | 
            +
                "eslint-config-prettier": "^6.10.0",
         | 
| 61 | 
            +
                "eslint-plugin-tree-shaking": "^1.8.0",
         | 
| 62 | 
            +
                "jest": "^25.1.0",
         | 
| 63 | 
            +
                "regenerator-runtime": "^0.13.5",
         | 
| 64 | 
            +
                "rollup": "^1.32.1",
         | 
| 65 | 
            +
                "rollup-plugin-typescript2": "^0.26.0",
         | 
| 66 | 
            +
                "ts-node": "^8.6.2",
         | 
| 67 | 
            +
                "typescript": "^3.8.3"
         | 
| 56 68 | 
             
              },
         | 
| 57 | 
            -
              " | 
| 69 | 
            +
              "ava": {
         | 
| 70 | 
            +
                "extensions": ["ts"],
         | 
| 71 | 
            +
                "require": ["ts-node/register"]
         | 
| 72 | 
            +
              }
         | 
| 58 73 | 
             
            }
         | 
    
        package/src/index.ts
    CHANGED
    
    | @@ -145,7 +145,7 @@ export function isBoolean (payload: any): payload is boolean { | |
| 145 145 | 
             
            }
         | 
| 146 146 |  | 
| 147 147 | 
             
            /**
         | 
| 148 | 
            -
             * Returns whether the payload is a regular expression
         | 
| 148 | 
            +
             * Returns whether the payload is a regular expression (RegExp)
         | 
| 149 149 | 
             
             *
         | 
| 150 150 | 
             
             * @param {*} payload
         | 
| 151 151 | 
             
             * @returns {payload is RegExp}
         | 
| @@ -165,7 +165,7 @@ export function isSymbol (payload: any): payload is symbol { | |
| 165 165 | 
             
            }
         | 
| 166 166 |  | 
| 167 167 | 
             
            /**
         | 
| 168 | 
            -
             * Returns whether the payload is a  | 
| 168 | 
            +
             * Returns whether the payload is a Date, and that the date is valid
         | 
| 169 169 | 
             
             *
         | 
| 170 170 | 
             
             * @param {*} payload
         | 
| 171 171 | 
             
             * @returns {payload is Date}
         | 
| @@ -175,7 +175,7 @@ export function isDate (payload: any): payload is Date { | |
| 175 175 | 
             
            }
         | 
| 176 176 |  | 
| 177 177 | 
             
            /**
         | 
| 178 | 
            -
             * Returns whether the payload is a  | 
| 178 | 
            +
             * Returns whether the payload is a Blob
         | 
| 179 179 | 
             
             *
         | 
| 180 180 | 
             
             * @param {*} payload
         | 
| 181 181 | 
             
             * @returns {payload is Blob}
         | 
| @@ -185,7 +185,7 @@ export function isBlob (payload: any): payload is Blob { | |
| 185 185 | 
             
            }
         | 
| 186 186 |  | 
| 187 187 | 
             
            /**
         | 
| 188 | 
            -
             * Returns whether the payload is a  | 
| 188 | 
            +
             * Returns whether the payload is a File
         | 
| 189 189 | 
             
             *
         | 
| 190 190 | 
             
             * @param {*} payload
         | 
| 191 191 | 
             
             * @returns {payload is File}
         | 
| @@ -194,6 +194,26 @@ export function isFile (payload: any): payload is File { | |
| 194 194 | 
             
              return getType(payload) === 'File'
         | 
| 195 195 | 
             
            }
         | 
| 196 196 |  | 
| 197 | 
            +
            /**
         | 
| 198 | 
            +
             * Returns whether the payload is a Promise
         | 
| 199 | 
            +
             *
         | 
| 200 | 
            +
             * @param {*} payload
         | 
| 201 | 
            +
             * @returns {payload is Promise}
         | 
| 202 | 
            +
             */
         | 
| 203 | 
            +
            export function isPromise (payload: any): payload is Promise<any> {
         | 
| 204 | 
            +
              return getType(payload) === 'Promise'
         | 
| 205 | 
            +
            }
         | 
| 206 | 
            +
             | 
| 207 | 
            +
            /**
         | 
| 208 | 
            +
             * Returns whether the payload is an Error
         | 
| 209 | 
            +
             *
         | 
| 210 | 
            +
             * @param {*} payload
         | 
| 211 | 
            +
             * @returns {payload is Error}
         | 
| 212 | 
            +
             */
         | 
| 213 | 
            +
            export function isError (payload: any): payload is Error {
         | 
| 214 | 
            +
              return getType(payload) === 'Error'
         | 
| 215 | 
            +
            }
         | 
| 216 | 
            +
             | 
| 197 217 | 
             
            /**
         | 
| 198 218 | 
             
             * Returns whether the payload is a primitive type (eg. Boolean | Null | Undefined | Number | String | Symbol)
         | 
| 199 219 | 
             
             *
         | 
| @@ -238,10 +258,10 @@ export function isType<T extends Function> (payload: any, type: T): payload is T | |
| 238 258 | 
             
              if (!(type instanceof Function)) {
         | 
| 239 259 | 
             
                throw new TypeError('Type must be a function')
         | 
| 240 260 | 
             
              }
         | 
| 241 | 
            -
              if (! | 
| 261 | 
            +
              if (!Object.prototype.hasOwnProperty.call(type, 'prototype')) {
         | 
| 242 262 | 
             
                throw new TypeError('Type is not a class')
         | 
| 243 263 | 
             
              }
         | 
| 244 264 | 
             
              // Classes usually have names (as functions usually have names)
         | 
| 245 | 
            -
              const name: string | undefined | null = ( | 
| 265 | 
            +
              const name: string | undefined | null = (type as any).name
         | 
| 246 266 | 
             
              return getType(payload) === name || Boolean(payload && payload.constructor === type)
         | 
| 247 267 | 
             
            }
         | 
    
        package/test/ava.ts
    ADDED
    
    | @@ -0,0 +1,195 @@ | |
| 1 | 
            +
            import test from 'ava'
         | 
| 2 | 
            +
            import {
         | 
| 3 | 
            +
              isError,
         | 
| 4 | 
            +
              isObject,
         | 
| 5 | 
            +
              isPlainObject,
         | 
| 6 | 
            +
              isAnyObject,
         | 
| 7 | 
            +
              isUndefined,
         | 
| 8 | 
            +
              isNull,
         | 
| 9 | 
            +
              isNullOrUndefined,
         | 
| 10 | 
            +
              isFunction,
         | 
| 11 | 
            +
              isArray,
         | 
| 12 | 
            +
              isString,
         | 
| 13 | 
            +
              isEmptyString,
         | 
| 14 | 
            +
              isFullString,
         | 
| 15 | 
            +
              isBoolean,
         | 
| 16 | 
            +
              isRegExp,
         | 
| 17 | 
            +
              isNumber,
         | 
| 18 | 
            +
              isDate,
         | 
| 19 | 
            +
              isSymbol,
         | 
| 20 | 
            +
              isPrimitive,
         | 
| 21 | 
            +
              isType,
         | 
| 22 | 
            +
              // isBlob,
         | 
| 23 | 
            +
              // isFile,
         | 
| 24 | 
            +
              isPromise,
         | 
| 25 | 
            +
            } from '../src/index'
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            // const blob = Buffer.from([])
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            test('Basic true tests', t => {
         | 
| 30 | 
            +
              t.is(isError(new Error('')), true)
         | 
| 31 | 
            +
              t.is(isUndefined(undefined), true)
         | 
| 32 | 
            +
              t.is(isNull(null), true)
         | 
| 33 | 
            +
              t.is(isNullOrUndefined(null), true)
         | 
| 34 | 
            +
              t.is(isNullOrUndefined(undefined), true)
         | 
| 35 | 
            +
              t.is(isObject({}), true)
         | 
| 36 | 
            +
              t.is(isObject(new Object()), true)
         | 
| 37 | 
            +
              t.is(
         | 
| 38 | 
            +
                isFunction(_ => {}),
         | 
| 39 | 
            +
                true
         | 
| 40 | 
            +
              )
         | 
| 41 | 
            +
              t.is(isArray([]), true)
         | 
| 42 | 
            +
              t.is(isArray(new Array()), true)
         | 
| 43 | 
            +
              t.is(isString(''), true)
         | 
| 44 | 
            +
              t.is(isString('_'), true)
         | 
| 45 | 
            +
              t.is(isEmptyString(''), true)
         | 
| 46 | 
            +
              t.is(isFullString(' '), true)
         | 
| 47 | 
            +
              t.is(isBoolean(true), true)
         | 
| 48 | 
            +
              t.is(isBoolean(false), true)
         | 
| 49 | 
            +
              t.is(isRegExp(/./), true)
         | 
| 50 | 
            +
              t.is(isRegExp(/./gi), true)
         | 
| 51 | 
            +
              t.is(isNumber(0), true)
         | 
| 52 | 
            +
              t.is(isNumber(1), true)
         | 
| 53 | 
            +
              t.is(isDate(new Date()), true)
         | 
| 54 | 
            +
              t.is(isSymbol(Symbol()), true)
         | 
| 55 | 
            +
              // t.is(isBlob(blob), true)
         | 
| 56 | 
            +
              // t.is(isFile(new File([''], '', { type: 'text/html' })), true)
         | 
| 57 | 
            +
              t.is(isPromise(new Promise((resolve, reject) => {})), true)
         | 
| 58 | 
            +
            })
         | 
| 59 | 
            +
             | 
| 60 | 
            +
            test('Basic false tests', t => {
         | 
| 61 | 
            +
              t.is(isError({}), false)
         | 
| 62 | 
            +
              t.is(isNumber(NaN), false)
         | 
| 63 | 
            +
              t.is(isDate(new Date('_')), false)
         | 
| 64 | 
            +
              t.is(isDate(NaN), false)
         | 
| 65 | 
            +
              t.is(isUndefined(NaN), false)
         | 
| 66 | 
            +
              t.is(isNull(NaN), false)
         | 
| 67 | 
            +
              t.is(isObject(NaN), false)
         | 
| 68 | 
            +
              t.is(isFunction(NaN), false)
         | 
| 69 | 
            +
              t.is(isArray(NaN), false)
         | 
| 70 | 
            +
              t.is(isString(NaN), false)
         | 
| 71 | 
            +
              t.is(isEmptyString(' '), false)
         | 
| 72 | 
            +
              t.is(isFullString(''), false)
         | 
| 73 | 
            +
              t.is(isBoolean(NaN), false)
         | 
| 74 | 
            +
              t.is(isRegExp(NaN), false)
         | 
| 75 | 
            +
              t.is(isSymbol(NaN), false)
         | 
| 76 | 
            +
              t.is(isNullOrUndefined(NaN), false)
         | 
| 77 | 
            +
            })
         | 
| 78 | 
            +
             | 
| 79 | 
            +
            test('Primitive tests', t => {
         | 
| 80 | 
            +
              // true
         | 
| 81 | 
            +
              t.is(isPrimitive(0), true)
         | 
| 82 | 
            +
              t.is(isPrimitive(''), true)
         | 
| 83 | 
            +
              t.is(isPrimitive('str'), true)
         | 
| 84 | 
            +
              t.is(isPrimitive(Symbol()), true)
         | 
| 85 | 
            +
              t.is(isPrimitive(true), true)
         | 
| 86 | 
            +
              t.is(isPrimitive(false), true)
         | 
| 87 | 
            +
              t.is(isPrimitive(null), true)
         | 
| 88 | 
            +
              t.is(isPrimitive(undefined), true)
         | 
| 89 | 
            +
              // false
         | 
| 90 | 
            +
              t.is(isPrimitive(NaN), false)
         | 
| 91 | 
            +
              t.is(isPrimitive([]), false)
         | 
| 92 | 
            +
              t.is(isPrimitive(new Array()), false)
         | 
| 93 | 
            +
              t.is(isPrimitive({}), false)
         | 
| 94 | 
            +
              t.is(isPrimitive(new Object()), false)
         | 
| 95 | 
            +
              t.is(isPrimitive(new Date()), false)
         | 
| 96 | 
            +
              t.is(
         | 
| 97 | 
            +
                isPrimitive(_ => {}),
         | 
| 98 | 
            +
                false
         | 
| 99 | 
            +
              )
         | 
| 100 | 
            +
            })
         | 
| 101 | 
            +
             | 
| 102 | 
            +
            test('Date exception', t => {
         | 
| 103 | 
            +
              t.is(isDate(new Date('_')), false)
         | 
| 104 | 
            +
            })
         | 
| 105 | 
            +
             | 
| 106 | 
            +
            test('Generic isType', t => {
         | 
| 107 | 
            +
              function MyClass () {}
         | 
| 108 | 
            +
              // This is correct old fashion syntax for classes, if this is missing
         | 
| 109 | 
            +
              MyClass.prototype.constructor = MyClass
         | 
| 110 | 
            +
              class MyOtherClass {}
         | 
| 111 | 
            +
              const myClass = new MyClass()
         | 
| 112 | 
            +
              // this is expected behaviour
         | 
| 113 | 
            +
              t.is(isType('', String), true)
         | 
| 114 | 
            +
              t.is(isType('_', String), true)
         | 
| 115 | 
            +
              t.is(isType('Hello World', String), true)
         | 
| 116 | 
            +
              t.is(isType(NaN, Number), true)
         | 
| 117 | 
            +
              t.is(isType(0, Number), true)
         | 
| 118 | 
            +
              t.is(isType(1, Number), true)
         | 
| 119 | 
            +
              t.is(isType({}, Object), true)
         | 
| 120 | 
            +
              t.is(isType(new Object(), Object), true)
         | 
| 121 | 
            +
              t.is(isType([], Array), true)
         | 
| 122 | 
            +
              t.is(isType(new Array(), Array), true)
         | 
| 123 | 
            +
              t.is(
         | 
| 124 | 
            +
                isType(_ => {}, Function),
         | 
| 125 | 
            +
                true
         | 
| 126 | 
            +
              )
         | 
| 127 | 
            +
              t.is(isType(true, Boolean), true)
         | 
| 128 | 
            +
              t.is(isType(false, Boolean), true)
         | 
| 129 | 
            +
              t.is(isType(new Date('_'), Date), true)
         | 
| 130 | 
            +
              t.is(isType(new Date(), Date), true)
         | 
| 131 | 
            +
              t.is(isType(/./, RegExp), true)
         | 
| 132 | 
            +
              t.is(isType(/./gi, RegExp), true)
         | 
| 133 | 
            +
              t.is(isType(myClass, MyClass), true)
         | 
| 134 | 
            +
              t.is(isType(new MyOtherClass(), MyOtherClass), true)
         | 
| 135 | 
            +
              t.is(isType(myClass, MyOtherClass), false)
         | 
| 136 | 
            +
              t.is(isType(Symbol(), Symbol), true)
         | 
| 137 | 
            +
              // t.is(isType(null, Null), true)
         | 
| 138 | 
            +
              // t.is(isType(undefined, Undefined), true)
         | 
| 139 | 
            +
              // It SHOULD fail
         | 
| 140 | 
            +
              t.is(isType(5, String), false)
         | 
| 141 | 
            +
              t.is(isType(null, Object), false)
         | 
| 142 | 
            +
              // Not sure if this would be the expected behaviour but everything is an object
         | 
| 143 | 
            +
              // so I would say so
         | 
| 144 | 
            +
              t.is(isType(myClass, Object), true)
         | 
| 145 | 
            +
            })
         | 
| 146 | 
            +
             | 
| 147 | 
            +
            test('isObject vs isAnyObject', t => {
         | 
| 148 | 
            +
              function MyClass () {}
         | 
| 149 | 
            +
              // This is correct old fashion syntax for classes, if this is missing
         | 
| 150 | 
            +
              MyClass.prototype.constructor = MyClass
         | 
| 151 | 
            +
              const myClass = new MyClass()
         | 
| 152 | 
            +
              class MyClass2 {}
         | 
| 153 | 
            +
              const myClass2 = new MyClass()
         | 
| 154 | 
            +
              const mySpecialObject = {}
         | 
| 155 | 
            +
              Object.setPrototypeOf(mySpecialObject, {
         | 
| 156 | 
            +
                toDate: function () {
         | 
| 157 | 
            +
                  return new Date()
         | 
| 158 | 
            +
                },
         | 
| 159 | 
            +
              })
         | 
| 160 | 
            +
              // IS OBJECT
         | 
| 161 | 
            +
              // plain object
         | 
| 162 | 
            +
              t.is(isObject({}), true)
         | 
| 163 | 
            +
              t.is(isObject(new Object()), true)
         | 
| 164 | 
            +
              t.is(isPlainObject({}), true)
         | 
| 165 | 
            +
              t.is(isPlainObject(new Object()), true)
         | 
| 166 | 
            +
              // classes & prototypes
         | 
| 167 | 
            +
              t.is(isObject(myClass), false)
         | 
| 168 | 
            +
              t.is(isObject(myClass2), false)
         | 
| 169 | 
            +
              t.is(isObject(mySpecialObject), false)
         | 
| 170 | 
            +
              t.is(isPlainObject(myClass), false)
         | 
| 171 | 
            +
              t.is(isPlainObject(myClass2), false)
         | 
| 172 | 
            +
              t.is(isPlainObject(mySpecialObject), false)
         | 
| 173 | 
            +
              // arrays and dates
         | 
| 174 | 
            +
              t.is(isObject([]), false)
         | 
| 175 | 
            +
              t.is(isObject(new Array()), false)
         | 
| 176 | 
            +
              t.is(isObject(new Date('_')), false)
         | 
| 177 | 
            +
              t.is(isObject(new Date()), false)
         | 
| 178 | 
            +
              t.is(isPlainObject([]), false)
         | 
| 179 | 
            +
              t.is(isPlainObject(new Array()), false)
         | 
| 180 | 
            +
              t.is(isPlainObject(new Date('_')), false)
         | 
| 181 | 
            +
              t.is(isPlainObject(new Date()), false)
         | 
| 182 | 
            +
              // IS ANY OBJECT
         | 
| 183 | 
            +
              // plain object
         | 
| 184 | 
            +
              t.is(isAnyObject({}), true)
         | 
| 185 | 
            +
              t.is(isAnyObject(new Object()), true)
         | 
| 186 | 
            +
              // classes & prototypes
         | 
| 187 | 
            +
              t.is(isAnyObject(myClass), true)
         | 
| 188 | 
            +
              t.is(isAnyObject(myClass2), true)
         | 
| 189 | 
            +
              t.is(isAnyObject(mySpecialObject), true)
         | 
| 190 | 
            +
              // arrays and dates
         | 
| 191 | 
            +
              t.is(isAnyObject([]), false)
         | 
| 192 | 
            +
              t.is(isAnyObject(new Array()), false)
         | 
| 193 | 
            +
              t.is(isAnyObject(new Date('_')), false)
         | 
| 194 | 
            +
              t.is(isAnyObject(new Date()), false)
         | 
| 195 | 
            +
            })
         | 
    
        package/test/index.test.js
    CHANGED
    
    | @@ -1,3 +1,4 @@ | |
| 1 | 
            +
            // @ts-check
         | 
| 1 2 | 
             
            import {
         | 
| 2 3 | 
             
              isObject,
         | 
| 3 4 | 
             
              isPlainObject,
         | 
| @@ -19,6 +20,7 @@ import { | |
| 19 20 | 
             
              isType,
         | 
| 20 21 | 
             
              isBlob,
         | 
| 21 22 | 
             
              isFile,
         | 
| 23 | 
            +
              isPromise,
         | 
| 22 24 | 
             
            } from '../dist/index.cjs'
         | 
| 23 25 |  | 
| 24 26 | 
             
            test('Basic true tests', () => {
         | 
| @@ -45,6 +47,7 @@ test('Basic true tests', () => { | |
| 45 47 | 
             
              expect(isSymbol(Symbol())).toBe(true)
         | 
| 46 48 | 
             
              expect(isBlob(new Blob())).toBe(true)
         | 
| 47 49 | 
             
              expect(isFile(new File([''], '', { type: 'text/html' }))).toBe(true)
         | 
| 50 | 
            +
              expect(isPromise(new Promise((resolve, reject) => {}))).toBe(true)
         | 
| 48 51 | 
             
            })
         | 
| 49 52 |  | 
| 50 53 | 
             
            test('Basic false tests', () => {
         | 
    
        package/types/index.d.ts
    CHANGED
    
    | @@ -108,7 +108,7 @@ export declare function isNumber(payload: any): payload is number; | |
| 108 108 | 
             
             */
         | 
| 109 109 | 
             
            export declare function isBoolean(payload: any): payload is boolean;
         | 
| 110 110 | 
             
            /**
         | 
| 111 | 
            -
             * Returns whether the payload is a regular expression
         | 
| 111 | 
            +
             * Returns whether the payload is a regular expression (RegExp)
         | 
| 112 112 | 
             
             *
         | 
| 113 113 | 
             
             * @param {*} payload
         | 
| 114 114 | 
             
             * @returns {payload is RegExp}
         | 
| @@ -122,26 +122,40 @@ export declare function isRegExp(payload: any): payload is RegExp; | |
| 122 122 | 
             
             */
         | 
| 123 123 | 
             
            export declare function isSymbol(payload: any): payload is symbol;
         | 
| 124 124 | 
             
            /**
         | 
| 125 | 
            -
             * Returns whether the payload is a  | 
| 125 | 
            +
             * Returns whether the payload is a Date, and that the date is valid
         | 
| 126 126 | 
             
             *
         | 
| 127 127 | 
             
             * @param {*} payload
         | 
| 128 128 | 
             
             * @returns {payload is Date}
         | 
| 129 129 | 
             
             */
         | 
| 130 130 | 
             
            export declare function isDate(payload: any): payload is Date;
         | 
| 131 131 | 
             
            /**
         | 
| 132 | 
            -
             * Returns whether the payload is a  | 
| 132 | 
            +
             * Returns whether the payload is a Blob
         | 
| 133 133 | 
             
             *
         | 
| 134 134 | 
             
             * @param {*} payload
         | 
| 135 135 | 
             
             * @returns {payload is Blob}
         | 
| 136 136 | 
             
             */
         | 
| 137 137 | 
             
            export declare function isBlob(payload: any): payload is Blob;
         | 
| 138 138 | 
             
            /**
         | 
| 139 | 
            -
             * Returns whether the payload is a  | 
| 139 | 
            +
             * Returns whether the payload is a File
         | 
| 140 140 | 
             
             *
         | 
| 141 141 | 
             
             * @param {*} payload
         | 
| 142 142 | 
             
             * @returns {payload is File}
         | 
| 143 143 | 
             
             */
         | 
| 144 144 | 
             
            export declare function isFile(payload: any): payload is File;
         | 
| 145 | 
            +
            /**
         | 
| 146 | 
            +
             * Returns whether the payload is a Promise
         | 
| 147 | 
            +
             *
         | 
| 148 | 
            +
             * @param {*} payload
         | 
| 149 | 
            +
             * @returns {payload is Promise}
         | 
| 150 | 
            +
             */
         | 
| 151 | 
            +
            export declare function isPromise(payload: any): payload is Promise<any>;
         | 
| 152 | 
            +
            /**
         | 
| 153 | 
            +
             * Returns whether the payload is an Error
         | 
| 154 | 
            +
             *
         | 
| 155 | 
            +
             * @param {*} payload
         | 
| 156 | 
            +
             * @returns {payload is Error}
         | 
| 157 | 
            +
             */
         | 
| 158 | 
            +
            export declare function isError(payload: any): payload is Error;
         | 
| 145 159 | 
             
            /**
         | 
| 146 160 | 
             
             * Returns whether the payload is a primitive type (eg. Boolean | Null | Undefined | Number | String | Symbol)
         | 
| 147 161 | 
             
             *
         | 
    
        package/wallaby.conf.js
    DELETED
    
    | @@ -1,23 +0,0 @@ | |
| 1 | 
            -
            module.exports = function (wallaby) {
         | 
| 2 | 
            -
              return {
         | 
| 3 | 
            -
                files: [
         | 
| 4 | 
            -
                  'src/**/*.ts',
         | 
| 5 | 
            -
                  'dist/**/*.js'
         | 
| 6 | 
            -
                ],
         | 
| 7 | 
            -
                tests: [
         | 
| 8 | 
            -
                  'test/**/*.js'
         | 
| 9 | 
            -
                ],
         | 
| 10 | 
            -
                env: {
         | 
| 11 | 
            -
                  type: 'node',
         | 
| 12 | 
            -
                  runner: 'node'
         | 
| 13 | 
            -
                },
         | 
| 14 | 
            -
                compilers: {
         | 
| 15 | 
            -
                  '**/*.+(js|ts)': wallaby.compilers.typeScript({allowJs: true, outDir: './bin'})
         | 
| 16 | 
            -
                },
         | 
| 17 | 
            -
                preprocessors: {
         | 
| 18 | 
            -
                  '**/*.jsts': file => file.changeExt('js').content
         | 
| 19 | 
            -
                },
         | 
| 20 | 
            -
                testFramework: 'jest',
         | 
| 21 | 
            -
                debug: true
         | 
| 22 | 
            -
              }
         | 
| 23 | 
            -
            }
         |