{
  "_args": [
    [
      {
        "raw": "cint@^8.2.1",
        "scope": null,
        "escapedName": "cint",
        "name": "cint",
        "rawSpec": "^8.2.1",
        "spec": ">=8.2.1 <9.0.0",
        "type": "range"
      },
      "/build/npm-check-updates/src/npm-check-updates-2.11.0.tgz"
    ]
  ],
  "_from": "cint@>=8.2.1 <9.0.0",
  "_id": "cint@8.2.1",
  "_inCache": true,
  "_location": "/npm-check-updates/cint",
  "_nodeVersion": "0.11.14",
  "_npmUser": {
    "name": "raine",
    "email": "raineorshine@gmail.com"
  },
  "_npmVersion": "2.5.0",
  "_phantomChildren": {},
  "_requested": {
    "raw": "cint@^8.2.1",
    "scope": null,
    "escapedName": "cint",
    "name": "cint",
    "rawSpec": "^8.2.1",
    "spec": ">=8.2.1 <9.0.0",
    "type": "range"
  },
  "_requiredBy": [
    "/npm-check-updates"
  ],
  "_resolved": "https://registry.npmjs.org/cint/-/cint-8.2.1.tgz",
  "_shasum": "70386b1b48e2773d0d63166a55aff94ef4456a12",
  "_shrinkwrap": null,
  "_spec": "cint@^8.2.1",
  "_where": "/build/npm-check-updates/src/npm-check-updates-2.11.0.tgz",
  "author": {
    "name": "Raine Lourie"
  },
  "bugs": {
    "url": "https://github.com/metaraine/cint/issues"
  },
  "dependencies": {},
  "description": "A library of Javascript utility functions with an emphasis on Functional Programming.",
  "devDependencies": {
    "chai": "^2.0.0",
    "gulp": "^3.5.2",
    "gulp-clean": "^0.2.4",
    "gulp-header": "^1.0.2",
    "gulp-jshint": "^1.4.2",
    "gulp-open": "^0.2.8",
    "gulp-rename": "^1.1.0",
    "gulp-template": "^0.1.1",
    "gulp-uglify": "^0.2.1",
    "gulp-util": "^2.2.14",
    "jshint-stylish": "^0.1.5",
    "lodash.assign": "^2.4.1",
    "mocha": "^2.1.0"
  },
  "directories": {
    "test": "test"
  },
  "dist": {
    "shasum": "70386b1b48e2773d0d63166a55aff94ef4456a12",
    "tarball": "https://registry.npmjs.org/cint/-/cint-8.2.1.tgz"
  },
  "gitHead": "ba9f4a85fd605fdad2bde942d59b57c7415bd709",
  "homepage": "https://github.com/metaraine/cint#readme",
  "keywords": [
    "functional",
    "utility"
  ],
  "license": "ISC",
  "main": "cint.js",
  "maintainers": [
    {
      "name": "raine",
      "email": "raineorshine@gmail.com"
    }
  ],
  "name": "cint",
  "optionalDependencies": {},
  "readme": "A Javascript utility belt with an emphasis on Functional Programming.\r\n\r\n[![NPM version](https://badge.fury.io/js/cint.svg)](http://badge.fury.io/js/cint) [<img src=\"https://travis-ci.org/metaraine/cint.svg\">](https://travis-ci.org/metaraine/cint)\r\n\r\n# Usage\r\n\r\nRead the API (below) or check out some examples used in the [unit tests](https://github.com/metaraine/cint/blob/master/test/index.html).\r\n\r\n# Installation\r\n\r\n## Client-Side\r\n\r\nBower:\r\n\r\n\tbower install cint --save\r\n\r\nInclude it:\r\n\r\n\t<script src=\"bower_components/cint/cint.min.js\"></script>\r\n\r\n## Server-Side\r\n\r\nInstall it:\r\n\r\n\tnpm install cint --save\r\n\r\nRequire it:\r\n\r\n\tvar cint = require(\"cint\");\r\n\r\n# Unit Tests\r\n\r\n\tnpm test\r\n\r\n# API\r\n\r\n## Function\r\n\r\n\t/** Returns a function that returns the inverse of the given boolean function. */\r\n\tcint.not(f)\r\n\r\n\t/** Returns a new function that inserts the given curried arguments to the inner function at the specified index of its runtime arguments.\r\n\t\ti.e. _.partial(f, args...) is equivalent to cint.partialAt(f, 0, args) and _.partialRight(f, args...) is equivalent to cint.partialAt(f, n, args) where n is the arity of the function.\r\n\t*/\r\n\tcint.partialAt(f, index, curriedArgs)\r\n\r\n\t/** Returns a new function that calls the given function with a limit on the number of arguments. */\r\n\tcint.aritize(f, n)\r\n\r\n\t/** Recursively invokes the given function with no parameters until it returns a non-functional value. */\r\n\tcint.callTillValue(value)\r\n\r\n\t/** Calls the given function as normal, then passes its inputs and output to the spier (defaults to console.log) */\r\n\tcint.spy(f, spier)\r\n\r\n\t/** Returns a copy of the given function that calls the original function in the context of the first argument. Passes arguments 1..n as normal. */\r\n\tcint.inContext(f)\r\n\r\n\t/** Converts the given synchronous function into an asynchronous function that applies its arguments to the original function and invokes callback(error, result) */\r\n\tcint.toAsync(f)\r\n\r\n## String\r\n\r\n\t/** Performs variable substitution on the string, replacing items in {curly braces}.\r\n\t\tBased on supplant by Douglas Crockford http://javascript.crockford.com/remedial.html\r\n\t*/\r\n\tcint.supplant(str, o)\r\n\r\n\t/** Returns true if the string starts with the given substring. */\r\n\tcint.startsWith(str, sub)\r\n\r\n\t/** Returns the substring before the first instance of the given delimiter. */\r\n\tcint.before(str, delim)\r\n\r\n\t/** Returns the substring after the first instance of the given delimiter. Returns the whole string if the delimiter is not found. */\r\n\tcint.after(str, delim)\r\n\r\n\t/** Returns the substring between the given delimiters. */\r\n\tcint.betweenstr, left, right)\r\n\r\n\t/** Wraps a string with a left and right */\r\n\tcint.bookend(middle, left, right)\r\n\r\n\t/** Returns a single string that repeats the string n times. */\r\n\tcint.repeatString(str, n, delim)\r\n\r\n\t/** Capitalizes the first letter of each word in the given string. */\r\n\tcint.toTitleCase(str)\r\n\r\n## Number\r\n\r\n\t/** Returns the ordinal value (like '1st' or '2nd') of the given integer. */\r\n\tcint.ordinal(n)\r\n\r\n\t/** Invokes the given function n times, passing the index for each invocation, and returns an array of the results. */\r\n\tcint.mapNumber(n, f)\r\n\r\n## Array\r\n\r\n\t/** Returns a list of values plucked from the property from the given array. If the values are functions, they wll be bound to the array item. */\r\n\tcint.pluck(arr, property)\r\n\r\n\t/** Group the array of objects by one of the object's properties or mappable function. Returns a dictionary containing the original array's items indexed by the property value. */\r\n\tcint.group(arr, propOrFunc)\r\n\r\n\t/** Group the array of objects by one of the object's properties or mappable function. Returns an array of { key: ___, items: ___ } objects which represent all the items in the original array grouped by the value of the specified grouping key. */\r\n\tcint.orderedGroup(arr, propOrFunc)\r\n\r\n\t/** Returns a dictionary whose keys are the values of the array and values are the number of instances of that value within the array. */\r\n\tcint.tally(arr)\r\n\r\n\t/** Tally the property values of an array of object, grouping the counts for each property under its value.\r\n\te.g.\r\n\t[\r\n\t\t{\r\n\t\t\tideal: 4,\r\n\t\t\tpast: 3,\r\n\t\t\tpresent: 7\r\n\t\t},\r\n\t\t{\r\n\t\t\tideal: 5,\r\n\t\t\tpast: 7,\r\n\t\t\tpresent: 7\r\n\t\t}\r\n\t]\r\n\r\n\t=>\r\n\r\n\t{\r\n\t\t\"4\": {\r\n\t\t\tideal: 1\r\n\t\t},\r\n\t\t\"3\": {\r\n\t\t\tpast: 1\r\n\t\t}\r\n\t\t\"5\": {\r\n\t\t\tideal: 1\r\n\t\t}\r\n\t\t\"7\": {\r\n\t\t\tpresent: 2,\r\n\t\t\tpast: 1\r\n\t\t}\r\n\t}\r\n\t*/\r\n\tcint.tallyProps(arr)\r\n\r\n\t/** Returns the unique values in the array. */\r\n\tcint.unique(arr)\r\n\r\n\t/** Returns the reverse of the given array. Unlike the native reverse, does not modify the original array. */\r\n\tcint.reversed(arr)\r\n\r\n\t/** Indexes into an array, supports negative indices. */\r\n\tcint.index(arr, i)\r\n\r\n\t/** Returns a new array containing the elements of the given array shifted n spaces to the left, wrapping around the end. */\r\n\tcint.rotate(arr, n)\r\n\r\n\t/** Creates an object with a property for each element of the given array, determined by a function that returns the property as a { key: value }. */\r\n\tcint.toObject(arr, f)\r\n\r\n\t/** Returns the first item in the given array that returns true for the given function. If no item is found, returns null. */\r\n\tcint.find(arr, f)\r\n\r\n\t/** Returns the first item in the given array whose specified property matches the given value. */\r\n\tcint.findByProperty(arr, prop, value)\r\n\r\n\t/** Functional, nondestructive version of Array.prototype.splice. */\r\n\tcint.spliced(arr, index, howMany/*, elements*/\r\n\r\n\t/** Returns an array of sequential integers from start to end (inclusive). If only one parameter is specified, start is 1. */\r\n\tcint.range(start, end)\r\n\r\n\t/** Returns a new array that only includes items with a specific value of a given property. */\r\n\tcint.filterBy(arr, prop, value)\r\n\r\n\t/** Breaks up the array into n evenly-sized chunks. \r\n\t\tSolution from http://stackoverflow.com/questions/8188548/splitting-a-js-array-into-n-arrays\r\n\t*/\r\n\tcint.chunk(a, n)\r\n\r\n## Object\r\n\r\n\t/** Returns an array of the object's values. */\r\n\tcint.values(o)\r\n\r\n\t/** Returns a new object with the given key and value. */\r\n\tcint.keyValue(key, value)\r\n\r\n\t/** Gets the value of a key of the given object. */\r\n\tcint.getValue(o, key)\r\n\r\n\t/** Sets the value of the given key and returns the object. */\r\n\tcint.setValue(o, key, value)\r\n\r\n\t/** Creates a mapping function that applies the given function to the value of the specified key. */\r\n\tcint.mapOverKey(f, originalKey, newKey)\r\n\r\n\t/** Join the object into a single string with the given separators separating properties from each other as well as values. */\r\n\tcint.joinObject(obj, propSeparator, valueSeparator)\r\n\r\n\t/** Returns true if the object has no non-undefined properties.\r\n\t\t@author\tDouglas Crockford http://javascript.crockford.com/remedial.html\r\n\t*/\r\n\tcint.isEmpty(o)\r\n\r\n\t/** Returns the number of properties on the given object. */\r\n\tcint.numProperties(o)\r\n\r\n\t/** Returns a new object with the given objects merged onto it. Non-undefined properties on later arguments override identical properties on earlier arguments. */\r\n\tcint.merge(/*obj1, obj2, obj3, ...*/)\r\n\r\n\t/** Returns a new object where f(key, value) returns a new key-value pair for each property. */\r\n\tcint.mapObject(obj, f)\r\n\r\n\t/** Returns an array whose items are the result of calling f(key, value) on each property of the given object. If f is undefined, returns a list of { key: ___, value: ___ } objects. */\r\n\tcint.toArray(obj, f)\r\n\r\n\t/** Returns a new object that only includes the properties of the given obj for which f(key, value) is true. */\r\n\tcint.filterObject(obj, f)\r\n\r\n\t/** Changes the specified keys in an object. \r\n\t\t@example cint.changeKeys(\r\n\t\t\t{ fname: 'Raine', lname: 'Lourie', specialty: 'Javascript' }, \r\n\t\t\t{ fname: 'first', lname: 'last' }\r\n\t\t)\r\n\t*/\r\n\tcint.changeKeys(obj, changedKeys)\r\n\r\n\t/** Calls a function on an object and returns the object (for chaining purposes). */\r\n\tcint.tap(f, o)\r\n\r\n\t/* console.log's the given object and returns the object (for chaining purposes). */\r\n\tcint.look(o)\r\n\r\n## Utility\r\n\r\n\t/** Adds two numbers. */\r\n\tcint.addTwo(x, y)\r\n\r\n\t/** Adds all given arguments. */\r\n\tcint.add(/*x,y,z,...*/)\r\n\r\n\t/** Compares two items lexigraphically.\tReturns 1 if a>b, 0 if a==b, or -1 if a<b. */\r\n\tcint.compare(a,b)\r\n\r\n\t/** Returns a function that compares the given property of two items. */\r\n\tcint.compareProperty(property)\r\n\r\n\t/** Returns a compare function that can be passed to Array.sort to sort in the order of the given array of properties. A property can also be appended with ' ASC' or ' DESC' to control the sort order.\r\n\t*/\r\n\tcint.dynamicCompare(props)\r\n\r\n\t/** Returns true if all the items in a are equal to all the items in b, recursively. */\r\n\tcint.equals(a,b)\r\n\r\n\t/** in operator as a function. */\r\n\tcint.hasKey(creamFilling, donut)\r\n\r\n\t/** Returns true if the given value is not undefined, null, or an empty string. */\r\n\tcint.hasValue(x)\r\n\r\n\t/** Returns a string representation of the given scalar, array, or dictionary. */\r\n\tcint.hash(o)\r\n\r\n\t/** Generates a pseudo-random string that can be assumed to be unique.\r\n\t\t@remarks\tuntestable\r\n\t*/\r\n\tcint.guid()\r\n\r\n\t/** Returns a string representing the type of the object, with special handling for null and arrays.\r\n\t\t@author\tDouglas Crockford http://javascript.crockford.com/remedial.html\r\n\t*/\r\n\tcint.typeOf(value)\r\n\r\n\t/** Create a new instance of the given constructor with the given constructor arguments. Useful for higher order programmer where the new keyword won't work. */\r\n\tcint.createNew(C, args)\r\n\r\n\t/** Converts the given value to a string by calling its toString method. */\r\n\tcint.intoString(value)\r\n",
  "readmeFilename": "README.md",
  "repository": {
    "type": "git",
    "url": "git://github.com/metaraine/cint.git"
  },
  "scripts": {
    "test": "mocha"
  },
  "version": "8.2.1"
}
