{
  "_args": [
    [
      {
        "raw": "modelo@https://registry.npmjs.org/modelo/-/modelo-4.2.0.tgz",
        "scope": null,
        "escapedName": "modelo",
        "name": "modelo",
        "rawSpec": "https://registry.npmjs.org/modelo/-/modelo-4.2.0.tgz",
        "spec": "https://registry.npmjs.org/modelo/-/modelo-4.2.0.tgz",
        "type": "remote"
      },
      "E:\\MissionXJC\\XJC\\functions\\node_modules\\firebase-admin"
    ]
  ],
  "_from": "modelo@>=4.2.0 <5.0.0",
  "_id": "modelo@4.2.0",
  "_inCache": true,
  "_location": "/firebase-admin/modelo",
  "_phantomChildren": {},
  "_requested": {
    "raw": "modelo@https://registry.npmjs.org/modelo/-/modelo-4.2.0.tgz",
    "scope": null,
    "escapedName": "modelo",
    "name": "modelo",
    "rawSpec": "https://registry.npmjs.org/modelo/-/modelo-4.2.0.tgz",
    "spec": "https://registry.npmjs.org/modelo/-/modelo-4.2.0.tgz",
    "type": "remote"
  },
  "_requiredBy": [
    "/firebase-admin",
    "/firebase-admin/@google-cloud/common"
  ],
  "_resolved": "https://registry.npmjs.org/modelo/-/modelo-4.2.0.tgz",
  "_shasum": "3b4b420023a66ca7e32bdba16e710937e14d1b0b",
  "_shrinkwrap": null,
  "_spec": "modelo@https://registry.npmjs.org/modelo/-/modelo-4.2.0.tgz",
  "_where": "E:\\MissionXJC\\XJC\\functions\\node_modules\\firebase-admin",
  "author": {
    "name": "Kevin Conway",
    "email": "kevinjacobconway@gmail.com",
    "url": "https://github.com/kevinconway"
  },
  "bugs": {
    "url": "https://github.com/kevinconway/Modelo.js/issues"
  },
  "dependencies": {},
  "description": "A JavaScript object inheritance utility.",
  "devDependencies": {
    "augment": "^4.3.0",
    "benchmark": "^1.0.0",
    "cli-table": "^0.3.0",
    "expect.js": "^0.3.1",
    "fiber": "^1.0.4",
    "grunt": "^0.4.4",
    "grunt-browserify": "^2.1.3",
    "grunt-contrib-uglify": "^0.4.0",
    "grunt-jslint": "^1.1.8",
    "grunt-mocha-test": "^0.10.2",
    "grunt-shell": "^0.7.0",
    "klass": "^1.4.0",
    "mocha": "^1.20.1"
  },
  "engines": {
    "node": "*"
  },
  "homepage": "https://github.com/kevinconway/Modelo.js",
  "keywords": [
    "class",
    "classes",
    "inherit",
    "inherits",
    "inheritance",
    "mixin",
    "mix-in"
  ],
  "main": "./modelo/modelo.js",
  "name": "modelo",
  "optionalDependencies": {},
  "readme": "# Modelo.js [![Current Build Status](https://travis-ci.org/kevinconway/Modelo.js.png?branch=master)](https://travis-ci.org/kevinconway/Modelo.js)\n\n**A multiple inheritance utility for JavaScript.**\n\n## Why?\n\nInheritance libraries today all seem to enforce the same clunky interface\nstyle. The only one of any merit these days is 'util.inherits' from the Node.js\nstandard library. Only problem: no multiple inheritance.\n\nWouldn't it be great if 'util.inherits' supported multiple inheritance *and*\nit stayed fast too?\n\nThat's this library. That's why it exists.\n\n## util.inherits\n\nThe 'modelo.inherits' function can act as a drop in replacement for\n'util.inherits'. Already have a code base that you want to start extending? No\nproblem.\n\n```javascript\n\n    var modelo = require('modelo');\n\n    function Base() {\n        // Base object constructor\n    }\n    Base.prototype.baseMethod = function baseMethod() {\n        console.log('Method from base object.');\n    }\n\n    function Extension() {\n        // Sub-object constructor\n    }\n    // util.inherits(Extension, Base);\n    modelo.inherits(Example, Base);\n\n    new Extension() instanceof Base; // true\n\n```\n\n## Multiple Inheritance\n\nOnce you need to extend multiple base objects, just put more base objects in\nthe call to 'inherits'.\n\n```javascript\n\n    var modelo = require('modelo');\n\n    function MixinOne() {}\n    function MixinTwo() {}\n\n    function Combined() {}\n    modelo.inherits(Combined, MixinOne, MixinTwo);\n\n    var instance = new Combined();\n\n    instance.isInstance(Combined); // true\n    instance.isInstance(MixinOne); // true\n    instance.isInstance(MixinTwo); // true\n\n```\n\nUnfortunately, there is no way to make 'instanceof' work with multiple\ninheritance. To replace it, simply use the 'isInstance' method that gets added\nto your instances. It will return true for any base object in the inheritance\ntree.\n\nAdditionally, the 'super_' attribute is still present on the new constructor in\nmultiple inheritance but it only references the first prototype present in the\ncall to 'inherits'. It is provided only for compatibility with `util.inherits`\nand, when using multiple inheritance, the 'super_' attribute should be avoided\nin favour of calling the target prototype directly if the form of\n`<Constructor>.prototype.<method>.call(this, ...)` or\n`<Constructor>.prototype.<method>.apply(this, ...)`.\n\n## You Said Something About Fast?\n\nAll inheritance libraries have their cost. When the overhead in question affects\nthe speed of object definition and creation, though, that cost must be kept\nto a minimum. Here is how this library compares to the competition:\n\n### Object Definition\n\nThe typical benchmark you will see while researching inheritance tools is one\nthat measures the cost of an object prototype, or class, definition followed by\nthe creation of a single instance. The following results are based on a test\nwhich does just that. Each library produces an equivalent inheritance tree and\nspawns an instance. The full source of the benchmark can be found in\n'benchmarks/comparisons/define.js'.\n\nThe approximate results:\n\n| Name          | % Slower   |\n----------------|-------------\n| Fiber         | 0.0000 %   |\n| util.inherits | 24.010 %   |\n| augment       | 64.601 %   |\n| Modelo        | 65.594 %   |\n| Klass         | 74.658 %   |\n\n\nThe [Fiber][] library is the clear winner with a 24% difference in run-time cost\nfrom the Node.js 'util.inherits'. Considering the implementation of\n'util.inherits' is effectively a two line wrapper around the 'Object.create'\nbuilt-in, it's quite a surprise that Fiber is *that* much faster. Now, the\n*actual* difference between Fiber and 'util.inherits' is something on the order\nof ~0.00008 seconds which, frankly, is inconsequential.\n\nIn fact, even the difference between Fiber and the bottom three libraries\nis inconsequential, not because the difference is not statistically\nsignificant but, because this benchmark only represents the time required to\ndefine a \"class\", or object prototype. This is something that happens, at most,\nonce for each class, or object prototype, defined in a code base. These\nrun-time costs simply do not matter unless your code base generates hundreds\nof thousands of \"class\" definitions.\n\n### Instance Creation\n\nA far more realistic measurement of overhead is the time it takes to create an\ninstance of an object defined using an inheritance library. After all, creating\ninstances necessarily happens far more often than defining the prototype:\n\n| Name          | % Slower   |\n----------------|-------------\n| Modelo        | 0.0000 %   |\n| util.inherits | 3.4355 %   |\n| Fiber         | 45.017 %   |\n| augment       | 48.284 %   |\n| Klass         | 161.79 %   |\n\nThe above results are deceptive. While it appears as though Modelo is faster\nthan the others, including the Node.js 'util.inherits', the reality is that\nthe run-time difference between these libraries is so small that it exceeds\nthe microsecond resolution of the timer used in the benchmarks. For all intents\nand purposes there is no measurable difference between any of these libraries.\n\n### Conclusion\n\nWhen it comes down to it, you should pick your inheritance tool chain based on\nits interface. The run-time cost of most inheritance libraries on the market\ntoday is sub-microsecond and unlikely to affect the performance of your\ncode.\n\nNote: If you find a flaw in any of the benchmarks used please open an issue on\nGitHub.\n\n## Setup\n\n### Node.js\n\nThis package is published through NPM under the name 'modelo':\n\n    $ npm install modelo\n\nOnce installed, simply 'require(\"modelo\")'.\n\n### Browser\n\nThis module uses browserify to create a browser compatible module. The default\ngrunt workflow for this project will generate both a full and minified browser\nscript in a build directory which can be included as a ```<script>``` tag:\n\n    <script src=\"modelo.browser.min.js\"></script>\n\nThe package is exposed via the global name 'modelo'.\n\n### Tests\n\nRunning the ```npm test``` command will kick off the default grunt workflow. This\nwill lint using jslint, run the mocha/expect tests, generate a browser module,\nand generate browser tests.\n\n### Benchmarks\n\nRunning ```grunt benchmark``` will run the benchmarks discussed above. You can\noptionally install the micro-time library (```npm install microtime```) to get\nmicrosecond precision.\n\n## License\n\nThis project is released and distributed under an MIT License.\n\n    Copyright (C) 2012 Kevin Conway\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to\n    deal in the Software without restriction, including without limitation the\n    rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n    sell copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n\n    The above copyright notice and this permission notice shall be included in\n    all copies or substantial portions of the Software.\n\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n    IN THE SOFTWARE.\n\n## Contributors\n\n### Style Guide\n\nAll code must validate against JSlint.\n\n### Testing\n\nMocha plus expect. All tests and functionality must run in Node.js and the\nbrowser.\n\n### Contributor's Agreement\n\nAll contribution to this project are protected by the contributors agreement\ndetailed in the CONTRIBUTING file. All contributors should read the file before\ncontributing, but as a summary::\n\n    You give us the rights to distribute your code and we promise to maintain\n    an open source release of anything you contribute.\n\n\n[Fiber]: <https://github.com/linkedin/Fiber>\n",
  "readmeFilename": "README.md",
  "repository": {
    "type": "git",
    "url": "git://github.com/kevinconway/Modelo.js.git"
  },
  "scripts": {
    "test": "grunt"
  },
  "version": "4.2.0"
}
