{
  "name": "api-check",
  "version": "7.5.3",
  "description": "Validate the api to your functions to help people use them correctly. This is pretty much React's propTypes without React.",
  "main": "dist/api-check.js",
  "dependencies": {},
  "devDependencies": {
    "babel": "5.5.8",
    "babel-core": "5.5.8",
    "babel-eslint": "3.1.17",
    "babel-loader": "5.1.4",
    "bootstrap": "3.3.5",
    "chai": "2.1.0",
    "codecov.io": "0.1.4",
    "commitizen": "1.0.4",
    "cz-conventional-changelog": "1.1.0",
    "eslint": "1.5.1",
    "eslint-config-kentcdodds": "4.0.0",
    "eslint-loader": "1.0.0",
    "eslint-plugin-mocha": "0.5.1",
    "ghooks": "0.3.2",
    "isparta": "3.0.3",
    "isparta-loader": "0.2.0",
    "istanbul": "0.3.5",
    "json-stringify-safe": "5.0.0",
    "karma": "0.12.36",
    "karma-chai": "0.1.0",
    "karma-chrome-launcher": "0.1.12",
    "karma-coverage": "0.4.2",
    "karma-firefox-launcher": "0.1.6",
    "karma-mocha": "0.1.10",
    "karma-webpack": "1.5.1",
    "kcd-common-tools": "1.0.0-beta.9",
    "lodash": "3.9.3",
    "mocha": "2.1.0",
    "node-libs-browser": "^0.5.2",
    "publish-latest": "1.1.2",
    "semantic-release": "^4.3.5",
    "surge": "0.14.2",
    "uglify-loader": "1.2.0",
    "validate-commit-msg": "1.0.0",
    "webpack": "1.9.11"
  },
  "scripts": {
    "commit": "git-cz",
    "start": "COVERAGE=true NODE_ENV=test karma start",
    "test": "COVERAGE=true NODE_ENV=test karma start --single-run",
    "test:debug": "echo 'WARNING: This is currently not working quite right...' && NODE_ENV=test karma start --browsers Chrome",
    "build:dist": "NODE_ENV=development webpack --config node_modules/kcd-common-tools/shared/webpack.config.js --progress --colors",
    "build:prod": "NODE_ENV=production webpack --config node_modules/kcd-common-tools/shared/webpack.config.js --progress --colors",
    "build": "npm run build:dist & npm run build:prod",
    "check-coverage": "./node_modules/istanbul/lib/cli.js check-coverage --statements 100 --functions 100 --lines 100 --branches 100",
    "report-coverage": "cat ./coverage/lcov.info | codecov",
    "deploy": "npm run deployClean && npm run deployCopy && npm run deploySurge",
    "deploySurge": "surge -p deploy.ignored -d api-check.surge.sh",
    "deployCopy": "cp index.html deploy.ignored/ && cp dist/api-check.js deploy.ignored/dist/",
    "deployClean": "rm -rf deploy.ignored/ && mkdir deploy.ignored/ && mkdir deploy.ignored/dist/",
    "code-checks": "eslint src/",
    "prepublish": "npm run build",
    "postpublish": "publish-latest",
    "semantic-release": "semantic-release pre && npm publish && semantic-release post"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/kentcdodds/api-check"
  },
  "keywords": [
    "javascript",
    "validation",
    "api",
    "function",
    "propTypes"
  ],
  "author": {
    "name": "Kent C. Dodds",
    "email": "kent@doddsfamily.us",
    "url": "http://kent.doddsfamily.us"
  },
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/kentcdodds/api-check/issues"
  },
  "homepage": "https://github.com/kentcdodds/api-check",
  "config": {
    "ghooks": {
      "pre-commit": "./node_modules/.bin/validate-commit-msg && npm run code-checks && npm t && npm run check-coverage"
    }
  },
  "czConfig": {
    "path": "node_modules/cz-conventional-changelog"
  },
  "kcdCommon": {
    "webpack": {
      "output": {
        "library": "apiCheck",
        "libraryTarget": "umd"
      }
    }
  },
  "readme": "# api-check\n\n[![bower version](https://img.shields.io/bower/v/api-check.svg?style=flat-square)](https://www.npmjs.org/package/angular-formly)\n[![npm version](https://img.shields.io/npm/v/api-check.svg?style=flat-square)](https://www.npmjs.org/package/angular-formly)\n[![npm downloads](https://img.shields.io/npm/dm/api-check.svg?style=flat-square)](http://npm-stat.com/charts.html?package=api-check)\n[![Build Status](https://img.shields.io/travis/kentcdodds/api-check.svg?style=flat-square)](https://travis-ci.org/kentcdodds/api-check)\n[![Code Coverage](https://img.shields.io/codecov/c/github/kentcdodds/api-check.svg?style=flat-square)](https://codecov.io/github/kentcdodds/api-check)\n[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/kentcdodds/api-check?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n\n*If that build is ever red or the coverage is ever less than 100% then I want you to\n[flame me on twitter (@kentcdodds)](https://twitter.com/kentcdodds) and be sure to mention how disappointed\n[@josepheames](https://twitter.com/josepheames) would be in me*\n\nIt's like [ReactJS `propTypes`](http://facebook.github.io/react/docs/reusable-components.html) without React. Actually,\nit's very heavily inspired by this concept. It's purpose is for normal JavaScript functions rather than just React\nComponents.\n\n[![Demo Screenshot](other/screenshot.png)](http://jsbin.com/hibocu/edit?js,console,output)\n\n## Installation\n\n`$ npm i -S api-check` or `$bower i -S api-check`\n\napi-check utilizes [UMD](https://github.com/umdjs/umd), so you can:\n\n`var apiCheck = require('api-check')(/* your custom options, checkers*/);`\n\nAlso available as an AMD module or as `apiCheck` on global\n\n## Example\n\nNote, there are a bunch of tests. Those should be instructive as well.\n\n```javascript\nvar myApiCheck = require('api-check')({\n  /* config options */\n  output: {\n    prefix: 'app/lib Name',\n    suffix: 'Good luck!',\n    docsBaseUrl: 'http://www.example.com/error-docs#'\n  },\n  verbose: false\n}, {\n  /* custom checkers if you wanna */\n});\n\n// given we have a function like this:\nfunction foo(bar, foobar) {\n  // we can define our api as the first argument to myApiCheck.warn\n  myApiCheck.warn([myApiCheck.number, myApiCheck.arrayOf(myApiCheck.string)], arguments);\n  // do stuff\n}\n// the function above can be called like so:\nfoo(3, ['a','b','c']);\n\n// if it were called like so, a descriptive warning would be logged to the console\nfoo('whatever', false);\n\n\n// here's something a little more complex (this is what's in the screenshot and [the demo](http://jsbin.com/hibocu/edit?js,console,output))\nvar myCheck = require('api-check')({\n  output: {\n    prefix: 'myApp',\n    suffix: 'see docs -->',\n    docsBaseUrl: 'http://example.com/error-descriptions#'\n  }\n});\nfunction doSomething(person, options, callback) {\n  myCheck.warn([ // you can also do myCheck.throw to throw an exception\n    myCheck.shape({\n      name: myCheck.shape({\n        first: myCheck.string,\n        last: myCheck.string\n      }),\n      age: myCheck.number,\n      isOld: myCheck.bool,\n      walk: myCheck.func,\n      ipAddress: function(val, name, location) {\n        if (!/(\\d{1,3}\\.){3}\\d{1,3}/.test(val)) {\n          return myCheck.utils.getError(name, location, 'ipAddress');\n        }\n      },\n      childrenNames: myCheck.arrayOf(myCheck.string).optional\n    }),\n    myCheck.any.optional,\n    myCheck.func\n  ], arguments, {\n    prefix: 'doSomething',\n    suffix: 'Good luck!',\n    urlSuffix: 'dosomething-api-check-failure'\n  });\n\n  // do stuff\n}\n\nvar person = {\n  name: {\n    first: 'Matt',\n    last: 'Meese'\n  },\n  age: 27,\n  isOld: false,\n  ipAddress: '127.0.0.1',\n  walk: function() {}\n};\nfunction callback() {}\nvar options = 'whatever I want because it is an \"any\" type';\n\nconsole.log('Successful call');\ndoSomething(person, options, callback);\n\nconsole.log('Successful call (without options)');\ndoSomething(person, callback); // <-- options is optional\n\nconsole.log('Failed call (without person)');\ndoSomething(callback); // <-- this would fail because person is not optional\n\nperson.ipAddress = 'Invalid IP Address!!!';\n\nconsole.log('Failed call (invalid ip address)');\ndoSomething(person, options, callback); // <-- this would fail because the ipAddress checker would fail\n\n// if you only wish to check the first argument to a function, you don't need to supply an array.\n\nvar libCheck = apiCheck(); // you don't HAVE to pass anything if you don't want to.\nfunction bar(a) {\n  var errorMessage = libCheck(apiCheck.string, arguments);\n  if (!errorMessage) {\n    // success\n  } else if (typeof errorMessage === 'string') {\n    // there was a problem and errorMessage would like to tell you about it\n  }\n}\nbar('hello!'); // <-- success!\n```\n\n## Differences from React's propTypes\n\nDifferences in [Supported Types](#supported-types) noted below with a *\n\n- All types are required by default, to set something as optional, append `.optional`\n- checkApi.js does not support `element` and `node` types\n- checkApi.js supports a few additional types\n- `object` fails on null. Use `object.nullOk` if you don't want that\n\n## Similarities to React's propTypes\n\nThis project was totally written from scratch, but it (should) support the same api as React's `propTypes` (with the\nnoted difference above). If you notice something that functions differently, please file an issue.\n\n## apiCheck(), apiCheck.warn(), and apiCheck.throw()\n\nThese functions do the same thing, with minor differences. In both the `warn` and `throw` case, a message is generated\nbased on the arguments that the function was received and the api that was defined to describe what was wrong with the\ninvocation.\n\nIn all cases, an object is returned with the following properties:\n\n### argTypes (arrayOf[Object])\n\nThis is an array of objects representing the types of the arguments passed.\n\n### apiTypes (arrayOf[Object])\n\nThis is an object representing the types of the api. It's a whole language of its own that you'll hopefully get after\nlooking at it for a while.\n\n### failed (boolean)\n\nWill be false when the check passes, and true when it fails\n\n### passed (boolean)\n\nWill be true when the check passes, and false when it fails\n\n### message (string)\n\nIf the check failed, this will be a useful message for display to the user. If it passed, this will be an empty string\n\nAlso note that if you only have one argument, then the first argument to the `apiCheck` function can simply be the\nchecker function. For example:\n\n```javascript\napiCheck(apiCheck.bool, arguments);\n```\n\nThe second argument can either be an arguments-like object or an array.\n\n## Supported types\n\n### array\n\n```javascript\napiCheck.array([]); // <-- pass\napiCheck.array(23); // <-- fail\n```\n\n### bool\n\n```javascript\napiCheck.bool(false); // <-- pass\napiCheck.bool('me bool too?'); // <-- fail\n```\n\n### func\n\n```javascript\napiCheck.func(function() {}); // <-- pass\napiCheck.func(new RegExp()); // <-- fail\n```\n\n### func.withProperties *\n\n*Not available in React's `propTypes`*\n\n```javascript\nvar checker = apiCheck.func.withProperties({\n  type: apiCheck.oneOfType([apiCheck.object, apiCheck.string]),\n  help: apiCheck.string.optional\n});\nfunction winning(){}\nwinning.type = 'awesomeness';\nchecker(winning); // <--pass\n\nfunction losing(){}\nchecker(losing); // <-- fail\n```\n\n### number\n\n```javascript\napiCheck.number(423.32); // <-- pass\napiCheck.number({}); // <-- fail\n```\n\n### object *\n\n`null` fails, use [`object.nullOk`](#objectnullok-) to allow null to pass\n\n```javascript\napiCheck.object({}); // <-- pass\napiCheck.object([]); // <-- fail\napiCheck.object(null); // <-- fail\n```\n\n#### object.nullOk *\n\n*Not available in React's `propTypes`*\n\n``` javascript\napiCheck.object.nullOk({}); // <-- pass\napiCheck.object.nullOk([]); // <--- false\napiCheck.object.nullOk(null); // <-- pass\n```\n\n### string\n\n```javascript\napiCheck.string('I am a string!'); // <-- pass\napiCheck.string([]); // <-- fail\n```\n\n### range\n\n```javascript\napiCheck.range(0, 10)(4); // <-- pass\napiCheck.rang(-100, 100)(500); // <-- fail\n```\n\n### greaterThan\n\n```javascript\napiCheck.greaterThan(100)(200); // <-- pass\napiCheck.greaterThan(-10)(-20); // <-- fail\napiCheck.greaterThan(50)('Frogs!'); // <-- fail\n```\n\n### lessThan\n\n```javascript\napiCheck.lessThan(100)(50); // <-- pass\napiCheck.lessThan(-10)(0); // <-- fail\napiCheck.lessThan(50)('Frogs!'); // <-- fail\n```\n\n### instanceOf\n\n```javascript\napiCheck.instanceOf(RegExp)(new RegExp); // <-- pass\napiCheck.instanceOf(Date)('wanna go on a date?'); // <-- fail\n```\n\n### oneOf\n\n```javascript\napiCheck.oneOf(['Treek', ' Wicket Wystri Warrick'])('Treek'); // <-- pass\napiCheck.oneOf(['Chewbacca', 'Snoova'])('Snoova'); // <-- fail\n```\n\n### oneOfType\n\n```javascript\napiCheck.oneOfType([apiCheck.string, apiCheck.object])({}); // <-- pass\napiCheck.oneOfType([apiCheck.array, apiCheck.bool])('Kess'); // <-- fail\n```\n\n### arrayOf\n\n```javascript\napiCheck.arrayOf(apiCheck.string)(['Huraga', 'Japar', 'Kahless']); // <-- pass\napiCheck.arrayOf(\n  apiCheck.arrayOf(\n    apiCheck.arrayOf(\n      apiCheck.number\n    )\n  )\n)([[[1,2,3], [4,5,6], [7,8,9]], [[1,2,3], [4,5,6], [7,8,9]]]); // <-- pass (for realz)\napiCheck.arrayOf(apiCheck.bool)(['a', 'b', 'c']); // <-- fail\n```\n\n### typeOrArrayOf *\n\n*Not available in React's `propTypes`*\n\nConvenience checker that combines `oneOfType` with `arrayOf` and whatever you specify. So you could take this:\n\n```javascript\napiCheck.oneOfType([\n  apiCheck.string, apiCheck.arrayOf(apiCheck.string)\n]);\n```\n\nwith\n\n```javascript\napiCheck.typeOrArrayOf(apiCheck.string);\n```\n\nwhich is a common enough use case to justify the checker.\n\n```javascript\napiCheck.typeOrArrayOf(apiCheck.string)('string'); // <-- pass\napiCheck.typeOrArrayOf(apiCheck.string)(['array', 'of strings']); // <-- pass\napiCheck.typeOrArrayOf(apiCheck.bool)(['array', false]); // <-- fail\napiCheck.typeOrArrayOf(apiCheck.object)(32); // <-- fail\n```\n\n### objectOf\n\n```javascript\napiCheck.objectOf(apiCheck.arrayOf(apiCheck.bool))({a: [true, false], b: [false, true]}); // <-- pass\napiCheck.objectOf(apiCheck.number)({a: 'not a number?', b: 'yeah, me neither (◞‸◟；)'}); // <-- fail\n```\n\n### shape *\n\n*Note: React `propTypes` __does__ support `shape`, however it __does not__ support the `strict` option*\n\nIf you add `.strict` to the `shape`, then it will enforce that the given object does not have any extra properties\noutside those specified in the `shape`. See below for an example...\n\n```javascript\napiCheck.shape({\n  name: checkers.shape({\n    first: checkers.string,\n    last: checkers.string\n  }),\n  age: checkers.number,\n  isOld: checkers.bool,\n  walk: checkers.func,\n  childrenNames: checkers.arrayOf(checkers.string)\n})({\n  name: {\n    first: 'Matt',\n    last: 'Meese'\n  },\n  age: 27,\n  isOld: false,\n  walk: function() {},\n  childrenNames: []\n}); // <-- pass\napiCheck.shape({\n  mint: checkers.bool,\n  chocolate: checkers.bool\n})({mint: true}); // <-- fail\n```\n\nExample of `strict`\n\n```javascript\nvar strictShape = apiCheck.shape({\n  cookies: apiCheck.bool,\n  milk: apiCheck.bool,\n  popcorn: apiCheck.bool.optional\n}).strict; // <-- that!\n\nstrictShape({\n  cookies: true,\n  milk: true,\n  popcorn: true,\n  candy: true\n}); // <-- fail because the extra `candy` property\n\nstrictShape({\n  cookies: true,\n  milk: true\n}); // <-- pass because it has no extra properties and `popcorn` is optional\n```\n\nNote, you can also append `.optional` to the `.strict` (as in: `apiCheck.shape({}).strict.optional`)\n\n#### shape.onlyIf *\n\n*Not available in React's `propTypes`*\n\nThis can only be used in combination with `shape`\n\n```javascript\napiCheck.shape({\n  cookies: apiCheck.shape.onlyIf(['mint', 'chips'], apiCheck.bool)\n})({cookies: true, mint: true, chips: true}); // <-- pass\n\napiCheck.shape({\n  cookies: apiCheck.shape.onlyIf(['mint', 'chips'], apiCheck.bool)\n})({chips: true}); // <-- pass (cookies not specified)\n\napiCheck.shape({\n  cookies: apiCheck.shape.onlyIf('mint', apiCheck.bool)\n})({cookies: true}); // <-- fail\n```\n\n#### shape.ifNot *\n\n*Not available in React's `propTypes`*\n\nThis can only be used in combination with `shape`\n\n```javascript\napiCheck.shape({\n  cookies: apiCheck.shape.ifNot('mint', apiCheck.bool)\n})({cookies: true}); // <-- pass\n\napiCheck.shape({\n  cookies: apiCheck.shape.ifNot(['mint', 'chips'], apiCheck.bool)\n})({cookies: true, chips: true}); // <-- fail\n```\n\n#### requiredIfNot *\n\n*Not available in React's `propTypes`*\n\nThis can only be used in combination with `shape`\n\n```javascript\nchecker = checkers.shape({\n  foobar: checkers.shape.requiredIfNot(['foobaz', 'baz'], checkers.bool),\n  foobaz: checkers.object.optional,\n  baz: checkers.string.optional,\n  foo: checkers.string.optional\n});\nchecker({\n  foo: [1, 2],\n  foobar: true\n}); // <-- passes\n\nchecker({foo: 'bar'}); // <-- fails\n```\n\n##### all\n\n*Not available in React's `propTypes`*\n\nThis can only be used in combination with `shape.requiredIfNot`\n\n\n```javascript\nchecker = checkers.shape({\n  foobar: checkers.shape.requiredIfNot.all(['foobaz', 'baz'], checkers.bool),\n  foobaz: checkers.object.optional,\n  baz: checkers.string.optional,\n  foo: checkers.string.optional\n});\nchecker({\n  foo: [1, 2]\n}); // <-- fails\n\nchecker({\n  foo: [1, 2],\n  foobar: true\n}); // <-- passes\n\nchecker({\n  foo: [1, 2],\n  baz: 'foo'\n}); // <-- passes\n```\n\n\n### args *\n\n*Not available in React's `propTypes`*\n\nThis will check if the given item is an `arguments`-like object (non-array object that has a length property)\n\n```javascript\nfunction foo(bar) {\n  apiCheck.args(arguments); // <-- pass\n}\napiCheck.args([]); // <-- fail\napiCheck.args({}); // <-- fail\napiCheck.args({length: 3}); // <-- pass\napiCheck.args({length: 'not-number'}); // <-- fail\n```\n\n### any\n\n```javascript\napiCheck.any({}); // <-- pass\napiCheck.any([]); // <-- pass\napiCheck.any(true); // <-- pass\napiCheck.any(false); // <-- pass\napiCheck.any(/* seriously, anything, except undefined */); // <-- fail\napiCheck.any.optional(/* unless you specify optional :-) */); // <-- pass\napiCheck.any(3); // <-- pass\napiCheck.any(3.1); // <-- pass\napiCheck.any(3.14); // <-- pass\napiCheck.any(3.141); // <-- pass\napiCheck.any(3.1415); // <-- pass\napiCheck.any(3.14159); // <-- pass\napiCheck.any(3.141592); // <-- pass\napiCheck.any(3.1415926); // <-- pass\napiCheck.any(3.14159265); // <-- pass\napiCheck.any(3.141592653); // <-- pass\napiCheck.any(3.1415926535); // <-- pass\napiCheck.any(3.14159265359); // <-- pass\napiCheck.any(jfio,.jgo); // <-- Syntax error.... ಠ_ಠ\n```\n\n## Custom Types\n\nYou can specify your own type. You do so like so:\n\n```javascript\nvar myCheck = require('api-check')({\n  output: {prefix: 'myCheck'}\n});\n\nfunction ipAddressChecker(val, name, location) {\n  if (!/(\\d{1,3}\\.){3}\\d{1,3}/.test(val)) {\n    return apiCheck.utils.getError(name, location, ipAddressChecker.type);\n  }\n};\nipAddressChecker.type = 'ipAddressString';\n\nfunction foo(string, ipAddress) {\n  myCheck.warn([\n    myCheck.string,\n    ipAddressChecker\n  ], arguments);\n}\n```\n\nThen, if you invoked that function like this:\n\n```javascript\nfoo('hello', 'not-an-ip-address');\n```\n\nIt would result in a warning like this:\n\n```\nmyCheck apiCheck failed! `Argument 1` passed, `value` at `Argument 2` must be `ipAddressString`\n\nYou passed:\n[\n  \"hello\",\n  \"not-an-ip-address\"\n]\n\nWith the types:\n[\n  \"string\",\n  \"string\"\n]\n\nThe API calls for:\n[\n  \"String\",\n  \"ipAddressString\"\n]\n```\n\nThere's actually quite a bit of cool stuff you can do with custom types checkers. If you want to know what they are,\nlook at the tests or file an issue for me to go document them. :-)\n\n### apiCheck.utils\n\nWhen writing custom types, you may find the `utils` helpful. Please file an issue to ask me to improve documentation for\nwhat's available. For now, check out `api-check-utils.test.js`\n\n## Customization\n\n*Note, obviously, these things are specific to `apiCheck` and not part of React `propTypes`*\n\nWhen you create your instance of `apiCheck`, you can configure it with different options as part of the first argument.\n\n\n### config.output\n\nYou can specify some extra options for the output of the message.\n\n```javascript\nvar myApiCheck = require('api-check')({\n  output: {\n    prefix: 'Global prefix',\n    suffix: 'global suffix',\n    docsBaseUrl: 'https://example.com/errors-and-warnings#'\n  },\n  verbose: false, // <-- defaults to false\n  disabled: false // <-- defaults to false, set this to true in production\n});\n```\n\nYou can also specify an `output` object to each `apiCheck()`, `apiCheck.throw()`, and `apiCheck.warn()` request:\n\n```javascript\nmyApiCheck(apiCheck.bool, arguments, {\n  prefix: 'instance prefix:',\n  suffix: 'instance suffix',\n  urlSuffix: 'example-error-additional-info'\n});\n```\n\nA failure with the above configuration would yield something like this:\n\n```\nGlobal prefix instance prefix {{error message}} instance suffix global suffix https://example.com/errors-and-warnings#example-error-additional-info\n```\n\nAs an alternative to `urlSuffix`, you can also specify a `url`:\n\n```javascript\nmyApiCheck(apiCheck.bool, arguments, {\n  url: 'https://example.com/some-direct-url-that-does-not-use-the-docsBaseUrl'\n});\n```\n\n### getErrorMessage\n\nThis is the method that apiCheck uses to get the message it throws or console.warns. If you don't like it, feel free to\nmake a better one by simply: `apiCheck.getErrorMessage = function(api, args, output) {/* return message */}`\n\n### handleErrorMessage\n\nThis is the method that apiCheck uses to throw or warn the message. If you prefer to do your own thing, that's cool.\nSimply `apiCheck.handleErrorMessage = function(message, shouldThrow) { /* throw or warn */ }`\n\n### Disable apiCheck\n\nIt's a good idea to disable the apiCheck in production. You can disable your own instance of `apiCheck` as part of\nthe `options`, but it's probably just better to disable `apiCheck` globally. I recommend you do this before you (or\nany of you dependencies) create an instance of `apiCheck`. Here's how you would do that:\n\n```javascript\nvar apiCheck = require('api-check');\napiCheck.globalConfig.disabled = true;\n```\n\n## Credits\n\nThis library was written by [Kent C. Dodds](https://twitter.com/kentcdodds). Again, big credits go to the team working\non React for thinking up the api. This library was written from scratch, but I'd be lying if I didn't say that I\nreferenced their functions a time or two.\n",
  "readmeFilename": "README.md",
  "_id": "api-check@7.5.3",
  "dist": {
    "shasum": "33b1006ff1a97a3346d73b7dad43a4241dd29922"
  },
  "_from": "api-check@",
  "_resolved": "https://registry.npmjs.org/api-check/-/api-check-7.5.3.tgz"
}
