{
  "manifest": {
    "name": "deepmerge",
    "description": "A library for deep (recursive) merging of Javascript objects",
    "keywords": [
      "merge",
      "deep",
      "extend",
      "copy",
      "clone",
      "recursive"
    ],
    "version": "4.3.1",
    "homepage": "https://github.com/TehShrike/deepmerge",
    "repository": {
      "type": "git",
      "url": "git://github.com/TehShrike/deepmerge.git"
    },
    "main": "dist/cjs.js",
    "engines": {
      "node": ">=0.10.0"
    },
    "scripts": {
      "build": "rollup -c",
      "test": "npm run build && tape test/*.js && jsmd readme.md && npm run test:typescript",
      "test:typescript": "tsc --noEmit test/typescript.ts && ts-node test/typescript.ts",
      "size": "npm run build && uglifyjs --compress --mangle -- ./dist/umd.js | gzip -c | wc -c"
    },
    "devDependencies": {
      "@types/node": "^8.10.54",
      "is-mergeable-object": "1.1.0",
      "is-plain-object": "^5.0.0",
      "jsmd": "^1.0.2",
      "rollup": "^1.23.1",
      "rollup-plugin-commonjs": "^10.1.0",
      "rollup-plugin-node-resolve": "^5.2.0",
      "tape": "^4.11.0",
      "ts-node": "7.0.1",
      "typescript": "=2.2.2",
      "uglify-js": "^3.6.1"
    },
    "license": "MIT",
    "_registry": "npm",
    "_loc": "/homez.1033/heliovt/.cache/yarn/v6/npm-deepmerge-4.3.1-44b5f2147cd3b00d4b56137685966f26fd25dd4a-integrity/node_modules/deepmerge/package.json",
    "readmeFilename": "readme.md",
    "readme": "# deepmerge\n\nMerges the enumerable properties of two or more objects deeply.\n\n> UMD bundle is 723B minified+gzipped\n\n## Getting Started\n\n### Example Usage\n<!--js\nconst merge = require('./')\n-->\n\n```js\nconst x = {\n\tfoo: { bar: 3 },\n\tarray: [{\n\t\tdoes: 'work',\n\t\ttoo: [ 1, 2, 3 ]\n\t}]\n}\n\nconst y = {\n\tfoo: { baz: 4 },\n\tquux: 5,\n\tarray: [{\n\t\tdoes: 'work',\n\t\ttoo: [ 4, 5, 6 ]\n\t}, {\n\t\treally: 'yes'\n\t}]\n}\n\nconst output = {\n\tfoo: {\n\t\tbar: 3,\n\t\tbaz: 4\n\t},\n\tarray: [{\n\t\tdoes: 'work',\n\t\ttoo: [ 1, 2, 3 ]\n\t}, {\n\t\tdoes: 'work',\n\t\ttoo: [ 4, 5, 6 ]\n\t}, {\n\t\treally: 'yes'\n\t}],\n\tquux: 5\n}\n\nmerge(x, y) // => output\n```\n\n\n### Installation\n\nWith [npm](http://npmjs.org) do:\n\n```sh\nnpm install deepmerge\n```\n\ndeepmerge can be used directly in the browser without the use of package managers/bundlers as well:  [UMD version from unpkg.com](https://unpkg.com/deepmerge/dist/umd.js).\n\n\n### Include\n\ndeepmerge exposes a CommonJS entry point:\n\n```\nconst merge = require('deepmerge')\n```\n\nThe ESM entry point was dropped due to a [Webpack bug](https://github.com/webpack/webpack/issues/6584).\n\n# API\n\n\n## `merge(x, y, [options])`\n\nMerge two objects `x` and `y` deeply, returning a new merged object with the\nelements from both `x` and `y`.\n\nIf an element at the same key is present for both `x` and `y`, the value from\n`y` will appear in the result.\n\nMerging creates a new object, so that neither `x` or `y` is modified.\n\n**Note:** By default, arrays are merged by concatenating them.\n\n## `merge.all(arrayOfObjects, [options])`\n\nMerges any number of objects into a single result object.\n\n```js\nconst foobar = { foo: { bar: 3 } }\nconst foobaz = { foo: { baz: 4 } }\nconst bar = { bar: 'yay!' }\n\nmerge.all([ foobar, foobaz, bar ]) // => { foo: { bar: 3, baz: 4 }, bar: 'yay!' }\n```\n\n\n## Options\n\n### `arrayMerge`\n\nThere are multiple ways to merge two arrays, below are a few examples but you can also create your own custom function.\n\nYour `arrayMerge` function will be called with three arguments: a `target` array, the `source` array, and an `options` object with these properties:\n\n- `isMergeableObject(value)`\n- `cloneUnlessOtherwiseSpecified(value, options)`\n\n#### `arrayMerge` example: overwrite target array\n\nOverwrites the existing array values completely rather than concatenating them:\n\n```js\nconst overwriteMerge = (destinationArray, sourceArray, options) => sourceArray\n\nmerge(\n\t[1, 2, 3],\n\t[3, 2, 1],\n\t{ arrayMerge: overwriteMerge }\n) // => [3, 2, 1]\n```\n\n#### `arrayMerge` example: combine arrays\n\nCombines objects at the same index in the two arrays.\n\nThis was the default array merging algorithm pre-version-2.0.0.\n\n```js\nconst combineMerge = (target, source, options) => {\n\tconst destination = target.slice()\n\n\tsource.forEach((item, index) => {\n\t\tif (typeof destination[index] === 'undefined') {\n\t\t\tdestination[index] = options.cloneUnlessOtherwiseSpecified(item, options)\n\t\t} else if (options.isMergeableObject(item)) {\n\t\t\tdestination[index] = merge(target[index], item, options)\n\t\t} else if (target.indexOf(item) === -1) {\n\t\t\tdestination.push(item)\n\t\t}\n\t})\n\treturn destination\n}\n\nmerge(\n\t[{ a: true }],\n\t[{ b: true }, 'ah yup'],\n\t{ arrayMerge: combineMerge }\n) // => [{ a: true, b: true }, 'ah yup']\n```\n\n### `isMergeableObject`\n\nBy default, deepmerge clones every property from almost every kind of object.\n\nYou may not want this, if your objects are of special types, and you want to copy the whole object instead of just copying its properties.\n\nYou can accomplish this by passing in a function for the `isMergeableObject` option.\n\nIf you only want to clone properties of plain objects, and ignore all \"special\" kinds of instantiated objects, you probably want to drop in [`is-plain-object`](https://github.com/jonschlinkert/is-plain-object).\n\n```js\nconst { isPlainObject } = require('is-plain-object')\n\nfunction SuperSpecial() {\n\tthis.special = 'oh yeah man totally'\n}\n\nconst instantiatedSpecialObject = new SuperSpecial()\n\nconst target = {\n\tsomeProperty: {\n\t\tcool: 'oh for sure'\n\t}\n}\n\nconst source = {\n\tsomeProperty: instantiatedSpecialObject\n}\n\nconst defaultOutput = merge(target, source)\n\ndefaultOutput.someProperty.cool // => 'oh for sure'\ndefaultOutput.someProperty.special // => 'oh yeah man totally'\ndefaultOutput.someProperty instanceof SuperSpecial // => false\n\nconst customMergeOutput = merge(target, source, {\n\tisMergeableObject: isPlainObject\n})\n\ncustomMergeOutput.someProperty.cool // => undefined\ncustomMergeOutput.someProperty.special // => 'oh yeah man totally'\ncustomMergeOutput.someProperty instanceof SuperSpecial // => true\n```\n\n### `customMerge`\n\nSpecifies a function which can be used to override the default merge behavior for a property, based on the property name.\n\nThe `customMerge` function will be passed the key for each property, and should return the function which should be used to merge the values for that property.\n\nIt may also return undefined, in which case the default merge behaviour will be used.\n\n```js\nconst alex = {\n\tname: {\n\t\tfirst: 'Alex',\n\t\tlast: 'Alexson'\n\t},\n\tpets: ['Cat', 'Parrot']\n}\n\nconst tony = {\n\tname: {\n\t\tfirst: 'Tony',\n\t\tlast: 'Tonison'\n\t},\n\tpets: ['Dog']\n}\n\nconst mergeNames = (nameA, nameB) => `${nameA.first} and ${nameB.first}`\n\nconst options = {\n\tcustomMerge: (key) => {\n\t\tif (key === 'name') {\n\t\t\treturn mergeNames\n\t\t}\n\t}\n}\n\nconst result = merge(alex, tony, options)\n\nresult.name // => 'Alex and Tony'\nresult.pets // => ['Cat', 'Parrot', 'Dog']\n```\n\n\n### `clone`\n\n*Deprecated.*\n\nDefaults to `true`.\n\nIf `clone` is `false` then child objects will be copied directly instead of being cloned.  This was the default behavior before version 2.x.\n\n\n# Testing\n\nWith [npm](http://npmjs.org) do:\n\n```sh\nnpm test\n```\n\n\n# License\n\nMIT\n",
    "licenseText": "The MIT License (MIT)\n\nCopyright (c) 2012 James Halliday, Josh Duff, and other contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies 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\nTHE SOFTWARE.\n"
  },
  "artifacts": [],
  "remote": {
    "resolved": "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a",
    "type": "tarball",
    "reference": "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz",
    "hash": "44b5f2147cd3b00d4b56137685966f26fd25dd4a",
    "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
    "registry": "npm",
    "packageName": "deepmerge",
    "cacheIntegrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== sha1-RLXyFHzTsA1LVhN2hZZvJv0l3Uo="
  },
  "registry": "npm",
  "hash": "44b5f2147cd3b00d4b56137685966f26fd25dd4a"
}