{
  "manifest": {
    "name": "hoopy",
    "version": "0.1.4",
    "license": "MIT",
    "description": "Like an array, but rounder.",
    "keywords": [
      "data",
      "structure",
      "collection",
      "array",
      "circular",
      "extends",
      "proxy"
    ],
    "author": {
      "name": "Phil Booth",
      "email": "pmbooth@gmail.com",
      "url": "https://philbooth.me/"
    },
    "main": "index.js",
    "engines": {
      "node": ">= 6.0.0"
    },
    "scripts": {
      "lint": "eslint .",
      "test": "mocha --es_staging --ui tdd test.js",
      "release": "release"
    },
    "repository": {
      "type": "git",
      "url": "git+https://gitlab.com/philbooth/hoopy.git"
    },
    "homepage": "https://gitlab.com/philbooth/hoopy#readme",
    "bugs": {
      "url": "https://gitlab.com/philbooth/hoopy/issues"
    },
    "devDependencies": {
      "chai": "^4.1.2",
      "eslint": "^3.19.0",
      "mocha": "^5.2.0",
      "please-release-me": "^2.0.2"
    },
    "_registry": "npm",
    "_loc": "/homez.1033/heliovt/.cache/yarn/v6/npm-hoopy-0.1.4-609207d661100033a9a9402ad3dea677381c1b1d-integrity/node_modules/hoopy/package.json",
    "contributors": [
      {
        "name": "Phil Booth",
        "email": "pmbooth@gmail.com",
        "url": "https://philbooth.me/"
      },
      {
        "name": "James M. Greene",
        "url": "https://github.com/JamesMGreene"
      }
    ],
    "readmeFilename": "README.md",
    "readme": "# hoopy\n\n[![Build status](https://gitlab.com/philbooth/hoopy/badges/master/pipeline.svg)](https://gitlab.com/philbooth/hoopy/pipelines)\n[![Package status](https://img.shields.io/npm/v/hoopy.svg)](https://www.npmjs.com/package/hoopy)\n[![Downloads](https://img.shields.io/npm/dm/hoopy.svg)](https://www.npmjs.com/package/hoopy)\n[![License](https://img.shields.io/npm/l/hoopy.svg)](https://opensource.org/licenses/MIT)\n\n\nLike an array, but rounder.\n\n* [Huh?](#huh)\n* [What's it useful for?](#whats-it-useful-for)\n* [How do I install it?](#how-do-i-install-it)\n* [How do I use it?](#how-do-i-use-it)\n  * [Loading the library](#loading-the-library)\n  * [Creating arrays](#creating-arrays)\n  * [Accessing array items](#accessing-array-items)\n  * [Growing the array](#growing-the-array)\n* [Is there a change log?](#is-there-a-change-log)\n* [How do I set up the dev environment?](#how-do-i-set-up-the-dev-environment)\n* [What license is it released under?](#what-license-is-it-released-under)\n\n## Huh?\n\nHoopy is a circular array\ndata type.\nIt extends `Array`\nso that out-of-bounds indices\nwrap back round\nto the start of the array\n(or if they're negative indices,\nthey wrap back round\nto the end of the array).\n\n## What's it useful for?\n\nIf you want a fixed-length buffer\nfor streamed I/O,\nHoopy can do that for you.\n\n## How do I install it?\n\nVia `npm`:\n\n```\nnpm i hoopy --save\n```\n\nOr if you just want the git repo:\n\n```\ngit clone git@gitlab.com:philbooth/hoopy.git\n```\n\n## How do I use it?\n\n### Loading the library\n\n```js\nconst Hoopy = require('hoopy');\n```\n\n### Creating arrays\n\n```js\nconst hoopy = new Hoopy(10);\nassert(Array.isArray(hoopy));\n```\n\nYou must pass\na `size` argument\nto the `Hoopy` constructor,\notherwise it will throw.\n\n### Accessing array items\n\n```js\nfor (let i = 0; i < hoopy.length; ++i) {\n  hoopy[i] = i;\n  console.log(hoopy[i]);\n}\n```\n\nYou can read and write array items\nusing square brackets for indexing\nas you would with a normal array.\nHowever, if you write to\nan out-of-bounds index,\nit will not increase\nthe length of the array.\nInstead the index is applied\nmodulo the array length,\nwrapping back round to the start.\nNegative indices work in reverse,\nwrapping back round to the end\nof the array.\n\nThe methods\n`push`, `pop`, `shift` and `unshift`\nwill throw if called.\nFuture versions of the library\nmay implement sane behaviour\nfor them.\nAll of the other `Array` methods\nwork normally.\n\n### Growing the array\n\n```js\nhoopy.grow(50);\n```\n\nThe `grow` method\nadds items to the array.\nIt takes one argument,\nwhich is the number\nof items to grow the array by.\nThe new length of the array\nwill be the old length\nplus the number you pass to `grow`.\n\nIf the current state of the array\nincludes overflowed indices,\n`grow` will take care\nto move those items\nin to the freshly-created\navailable space,\nso that the correct order is maintained\nfor your data.\n\nThe caller is responsible\nfor ensuring they don't overwrite\nunprocessed items.\nIf you need to increase\nthe size of the array,\nyou must call `grow`.\n\n## Is there a change log?\n\n[Yes](CHANGELOG.md).\n\n## How do I set up the dev environment?\n\nTo install the dependencies:\n\n```\nnpm i\n```\n\nTo run the tests:\n\n```\nnpm t\n```\n\nTo lint the code:\n\n```\nnpm run lint\n```\n\n## What license is it released under?\n\n[MIT](LICENSE).\n\n",
    "licenseText": "Copyright © 2017 Phil Booth\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"
  },
  "artifacts": [],
  "remote": {
    "resolved": "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d",
    "type": "tarball",
    "reference": "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz",
    "hash": "609207d661100033a9a9402ad3dea677381c1b1d",
    "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==",
    "registry": "npm",
    "packageName": "hoopy",
    "cacheIntegrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== sha1-YJIH1mEQADOpqUAq096mdzgcGx0="
  },
  "registry": "npm",
  "hash": "609207d661100033a9a9402ad3dea677381c1b1d"
}