diff options
Diffstat (limited to 'node_modules/base')
20 files changed, 2405 insertions, 0 deletions
| diff --git a/node_modules/base/LICENSE b/node_modules/base/LICENSE new file mode 100644 index 0000000..e33d14b --- /dev/null +++ b/node_modules/base/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015-2017, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/base/README.md b/node_modules/base/README.md new file mode 100644 index 0000000..c77cdaf --- /dev/null +++ b/node_modules/base/README.md @@ -0,0 +1,491 @@ +<p align="center"> +  <a href="https://github.com/node-base/base"> +    <img height="250" width="250" src="https://raw.githubusercontent.com/node-base/base/master/docs/logo.png"> +  </a> +</p> + +# base [](https://www.npmjs.com/package/base) [](https://npmjs.org/package/base)  [](https://npmjs.org/package/base) [](https://travis-ci.org/node-base/base) + +> base is the foundation for creating modular, unit testable and highly pluggable node.js applications, starting with a handful of common methods, like `set`, `get`, `del` and `use`. + +## Install + +Install with [npm](https://www.npmjs.com/): + +```sh +$ npm install --save base +``` + +## What is Base? + +Base is a framework for rapidly creating high quality node.js applications, using plugins like building blocks. + +### Guiding principles + +The core team follows these principles to help guide API decisions: + +* **Compact API surface**: The smaller the API surface, the easier the library will be to learn and use. +* **Easy to extend**: Implementors can use any npm package, and write plugins in pure JavaScript. If you're building complex apps, Base simplifies inheritance. +* **Easy to test**: No special setup should be required to unit test `Base` or base plugins + +### Minimal API surface + +[The API](#api) was designed to provide only the minimum necessary functionality for creating a useful application, with or without [plugins](#plugins). + +**Base core** + +Base itself ships with only a handful of [useful methods](#api), such as: + +* `.set`: for setting values on the instance +* `.get`: for getting values from the instance +* `.has`: to check if a property exists on the instance +* `.define`: for setting non-enumerable values on the instance +* `.use`: for adding plugins + +**Be generic** + +When deciding on method to add or remove, we try to answer these questions: + +1. Will all or most Base applications need this method? +2. Will this method encourage practices or enforce conventions that are beneficial to implementors? +3. Can or should this be done in a plugin instead? + +### Composability + +**Plugin system** + +It couldn't be easier to extend Base with any features or custom functionality you can think of. + +Base plugins are just functions that take an instance of `Base`: + +```js +var base = new Base(); + +function plugin(base) { +  // do plugin stuff, in pure JavaScript +} +// use the plugin +base.use(plugin); +``` + +**Inheritance** + +Easily inherit Base using `.extend`: + +```js +var Base = require('base'); + +function MyApp() { +  Base.call(this); +} +Base.extend(MyApp); + +var app = new MyApp(); +app.set('a', 'b'); +app.get('a'); +//=> 'b'; +``` + +**Inherit or instantiate with a namespace** + +By default, the `.get`, `.set` and `.has` methods set and get values from the root of the `base` instance. You can customize this using the `.namespace` method exposed on the exported function. For example: + +```js +var Base = require('base'); +// get and set values on the `base.cache` object +var base = Base.namespace('cache'); + +var app = base(); +app.set('foo', 'bar'); +console.log(app.cache.foo); +//=> 'bar' +``` + +## API + +**Usage** + +```js +var Base = require('base'); +var app = new Base(); +app.set('foo', 'bar'); +console.log(app.foo); +//=> 'bar' +``` + +### [Base](index.js#L44) + +Create an instance of `Base` with the given `config` and `options`. + +**Params** + +* `config` **{Object}**: If supplied, this object is passed to [cache-base](https://github.com/jonschlinkert/cache-base) to merge onto the the instance upon instantiation. +* `options` **{Object}**: If supplied, this object is used to initialize the `base.options` object. + +**Example** + +```js +// initialize with `config` and `options` +var app = new Base({isApp: true}, {abc: true}); +app.set('foo', 'bar'); + +// values defined with the given `config` object will be on the root of the instance +console.log(app.baz); //=> undefined +console.log(app.foo); //=> 'bar' +// or use `.get` +console.log(app.get('isApp')); //=> true +console.log(app.get('foo')); //=> 'bar' + +// values defined with the given `options` object will be on `app.options +console.log(app.options.abc); //=> true +``` + +### [.is](index.js#L107) + +Set the given `name` on `app._name` and `app.is*` properties. Used for doing lookups in plugins. + +**Params** + +* `name` **{String}** +* `returns` **{Boolean}** + +**Example** + +```js +app.is('foo'); +console.log(app._name); +//=> 'foo' +console.log(app.isFoo); +//=> true +app.is('bar'); +console.log(app.isFoo); +//=> true +console.log(app.isBar); +//=> true +console.log(app._name); +//=> 'bar' +``` + +### [.isRegistered](index.js#L145) + +Returns true if a plugin has already been registered on an instance. + +Plugin implementors are encouraged to use this first thing in a plugin +to prevent the plugin from being called more than once on the same +instance. + +**Params** + +* `name` **{String}**: The plugin name. +* `register` **{Boolean}**: If the plugin if not already registered, to record it as being registered pass `true` as the second argument. +* `returns` **{Boolean}**: Returns true if a plugin is already registered. + +**Events** + +* `emits`: `plugin` Emits the name of the plugin being registered. Useful for unit tests, to ensure plugins are only registered once. + +**Example** + +```js +var base = new Base(); +base.use(function(app) { +  if (app.isRegistered('myPlugin')) return; +  // do stuff to `app` +}); + +// to also record the plugin as being registered +base.use(function(app) { +  if (app.isRegistered('myPlugin', true)) return; +  // do stuff to `app` +}); +``` + +### [.use](index.js#L175) + +Define a plugin function to be called immediately upon init. Plugins are chainable and expose the following arguments to the plugin function: + +* `app`: the current instance of `Base` +* `base`: the [first ancestor instance](#base) of `Base` + +**Params** + +* `fn` **{Function}**: plugin function to call +* `returns` **{Object}**: Returns the item instance for chaining. + +**Example** + +```js +var app = new Base() +  .use(foo) +  .use(bar) +  .use(baz) +``` + +### [.define](index.js#L197) + +The `.define` method is used for adding non-enumerable property on the instance. Dot-notation is **not supported** with `define`. + +**Params** + +* `key` **{String}**: The name of the property to define. +* `value` **{any}** +* `returns` **{Object}**: Returns the instance for chaining. + +**Example** + +```js +// arbitrary `render` function using lodash `template` +app.define('render', function(str, locals) { +  return _.template(str)(locals); +}); +``` + +### [.mixin](index.js#L222) + +Mix property `key` onto the Base prototype. If base is inherited using `Base.extend` this method will be overridden by a new `mixin` method that will only add properties to the prototype of the inheriting application. + +**Params** + +* `key` **{String}** +* `val` **{Object|Array}** +* `returns` **{Object}**: Returns the `base` instance for chaining. + +**Example** + +```js +app.mixin('foo', function() { +  // do stuff +}); +``` + +### [.base](index.js#L268) + +Getter/setter used when creating nested instances of `Base`, for storing a reference to the first ancestor instance. This works by setting an instance of `Base` on the `parent` property of a "child" instance. The `base` property defaults to the current instance if no `parent` property is defined. + +**Example** + +```js +// create an instance of `Base`, this is our first ("base") instance +var first = new Base(); +first.foo = 'bar'; // arbitrary property, to make it easier to see what's happening later + +// create another instance +var second = new Base(); +// create a reference to the first instance (`first`) +second.parent = first; + +// create another instance +var third = new Base(); +// create a reference to the previous instance (`second`) +// repeat this pattern every time a "child" instance is created +third.parent = second; + +// we can always access the first instance using the `base` property +console.log(first.base.foo); +//=> 'bar' +console.log(second.base.foo); +//=> 'bar' +console.log(third.base.foo); +//=> 'bar' +// and now you know how to get to third base ;) +``` + +### [#use](index.js#L293) + +Static method for adding global plugin functions that will be added to an instance when created. + +**Params** + +* `fn` **{Function}**: Plugin function to use on each instance. +* `returns` **{Object}**: Returns the `Base` constructor for chaining + +**Example** + +```js +Base.use(function(app) { +  app.foo = 'bar'; +}); +var app = new Base(); +console.log(app.foo); +//=> 'bar' +``` + +### [#extend](index.js#L337) + +Static method for inheriting the prototype and static methods of the `Base` class. This method greatly simplifies the process of creating inheritance-based applications. See [static-extend](https://github.com/jonschlinkert/static-extend) for more details. + +**Params** + +* `Ctor` **{Function}**: constructor to extend +* `methods` **{Object}**: Optional prototype properties to mix in. +* `returns` **{Object}**: Returns the `Base` constructor for chaining + +**Example** + +```js +var extend = cu.extend(Parent); +Parent.extend(Child); + +// optional methods +Parent.extend(Child, { +  foo: function() {}, +  bar: function() {} +}); +``` + +### [#mixin](index.js#L379) + +Used for adding methods to the `Base` prototype, and/or to the prototype of child instances. When a mixin function returns a function, the returned function is pushed onto the `.mixins` array, making it available to be used on inheriting classes whenever `Base.mixins()` is called (e.g. `Base.mixins(Child)`). + +**Params** + +* `fn` **{Function}**: Function to call +* `returns` **{Object}**: Returns the `Base` constructor for chaining + +**Example** + +```js +Base.mixin(function(proto) { +  proto.foo = function(msg) { +    return 'foo ' + msg; +  }; +}); +``` + +### [#mixins](index.js#L401) + +Static method for running global mixin functions against a child constructor. Mixins must be registered before calling this method. + +**Params** + +* `Child` **{Function}**: Constructor function of a child class +* `returns` **{Object}**: Returns the `Base` constructor for chaining + +**Example** + +```js +Base.extend(Child); +Base.mixins(Child); +``` + +### [#inherit](index.js#L420) + +Similar to `util.inherit`, but copies all static properties, prototype properties, and getters/setters from `Provider` to `Receiver`. See [class-utils](https://github.com/jonschlinkert/class-utils#inherit) for more details. + +**Params** + +* `Receiver` **{Function}**: Receiving (child) constructor +* `Provider` **{Function}**: Providing (parent) constructor +* `returns` **{Object}**: Returns the `Base` constructor for chaining + +**Example** + +```js +Base.inherit(Foo, Bar); +``` + +## In the wild + +The following node.js applications were built with `Base`: + +* [assemble](https://github.com/assemble/assemble) +* [verb](https://github.com/verbose/verb) +* [generate](https://github.com/generate/generate) +* [scaffold](https://github.com/jonschlinkert/scaffold) +* [boilerplate](https://github.com/jonschlinkert/boilerplate) + +## Test coverage + +``` +Statements   : 98.91% ( 91/92 ) +Branches     : 92.86% ( 26/28 ) +Functions    : 100% ( 17/17 ) +Lines        : 98.9% ( 90/91 ) +``` + +## History + +### v0.11.2 + +* fixes https://github.com/micromatch/micromatch/issues/99 + +### v0.11.0 + +**Breaking changes** + +* Static `.use` and `.run` methods are now non-enumerable + +### v0.9.0 + +**Breaking changes** + +* `.is` no longer takes a function, a string must be passed +* all remaining `.debug` code has been removed +* `app._namespace` was removed (related to `debug`) +* `.plugin`, `.use`, and `.define` no longer emit events +* `.assertPlugin` was removed +* `.lazy` was removed + +## About + +### Related projects + +* [base-cwd](https://www.npmjs.com/package/base-cwd): Base plugin that adds a getter/setter for the current working directory. | [homepage](https://github.com/node-base/base-cwd "Base plugin that adds a getter/setter for the current working directory.") +* [base-data](https://www.npmjs.com/package/base-data): adds a `data` method to base-methods. | [homepage](https://github.com/node-base/base-data "adds a `data` method to base-methods.") +* [base-fs](https://www.npmjs.com/package/base-fs): base-methods plugin that adds vinyl-fs methods to your 'base' application for working with the file… [more](https://github.com/node-base/base-fs) | [homepage](https://github.com/node-base/base-fs "base-methods plugin that adds vinyl-fs methods to your 'base' application for working with the file system, like src, dest, copy and symlink.") +* [base-generators](https://www.npmjs.com/package/base-generators): Adds project-generator support to your `base` application. | [homepage](https://github.com/node-base/base-generators "Adds project-generator support to your `base` application.") +* [base-option](https://www.npmjs.com/package/base-option): Adds a few options methods to base, like `option`, `enable` and `disable`. See the readme… [more](https://github.com/node-base/base-option) | [homepage](https://github.com/node-base/base-option "Adds a few options methods to base, like `option`, `enable` and `disable`. See the readme for the full API.") +* [base-pipeline](https://www.npmjs.com/package/base-pipeline): base-methods plugin that adds pipeline and plugin methods for dynamically composing streaming plugin pipelines. | [homepage](https://github.com/node-base/base-pipeline "base-methods plugin that adds pipeline and plugin methods for dynamically composing streaming plugin pipelines.") +* [base-pkg](https://www.npmjs.com/package/base-pkg): Plugin for adding a `pkg` method that exposes pkg-store to your base application. | [homepage](https://github.com/node-base/base-pkg "Plugin for adding a `pkg` method that exposes pkg-store to your base application.") +* [base-plugins](https://www.npmjs.com/package/base-plugins): Adds 'smart plugin' support to your base application. | [homepage](https://github.com/node-base/base-plugins "Adds 'smart plugin' support to your base application.") +* [base-questions](https://www.npmjs.com/package/base-questions): Plugin for base-methods that adds methods for prompting the user and storing the answers on… [more](https://github.com/node-base/base-questions) | [homepage](https://github.com/node-base/base-questions "Plugin for base-methods that adds methods for prompting the user and storing the answers on a project-by-project basis.") +* [base-store](https://www.npmjs.com/package/base-store): Plugin for getting and persisting config values with your base-methods application. Adds a 'store' object… [more](https://github.com/node-base/base-store) | [homepage](https://github.com/node-base/base-store "Plugin for getting and persisting config values with your base-methods application. Adds a 'store' object that exposes all of the methods from the data-store library. Also now supports sub-stores!") +* [base-task](https://www.npmjs.com/package/base-task): base plugin that provides a very thin wrapper around [https://github.com/doowb/composer](https://github.com/doowb/composer) for adding task methods to… [more](https://github.com/node-base/base-task) | [homepage](https://github.com/node-base/base-task "base plugin that provides a very thin wrapper around <https://github.com/doowb/composer> for adding task methods to your application.") + +### Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +### Contributors + +| **Commits** | **Contributor** |   +| --- | --- |   +| 141 | [jonschlinkert](https://github.com/jonschlinkert) |   +| 30  | [doowb](https://github.com/doowb) |   +| 3   | [charlike](https://github.com/charlike) |   +| 1   | [criticalmash](https://github.com/criticalmash) |   +| 1   | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) |   + +### Building docs + +_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ + +To generate the readme, run the following command: + +```sh +$ npm install -g verbose/verb#dev verb-generate-readme && verb +``` + +### Running tests + +Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: + +```sh +$ npm install && npm test +``` + +### Author + +**Jon Schlinkert** + +* [github/jonschlinkert](https://github.com/jonschlinkert) +* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) + +### License + +Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT License](LICENSE). + +*** + +_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on September 07, 2017._
\ No newline at end of file diff --git a/node_modules/base/index.js b/node_modules/base/index.js new file mode 100644 index 0000000..fb68048 --- /dev/null +++ b/node_modules/base/index.js @@ -0,0 +1,435 @@ +'use strict'; + +var util = require('util'); +var define = require('define-property'); +var CacheBase = require('cache-base'); +var Emitter = require('component-emitter'); +var isObject = require('isobject'); +var merge = require('mixin-deep'); +var pascal = require('pascalcase'); +var cu = require('class-utils'); + +/** + * Optionally define a custom `cache` namespace to use. + */ + +function namespace(name) { +  var Cache = name ? CacheBase.namespace(name) : CacheBase; +  var fns = []; + +  /** +   * Create an instance of `Base` with the given `config` and `options`. +   * +   * ```js +   * // initialize with `config` and `options` +   * var app = new Base({isApp: true}, {abc: true}); +   * app.set('foo', 'bar'); +   * +   * // values defined with the given `config` object will be on the root of the instance +   * console.log(app.baz); //=> undefined +   * console.log(app.foo); //=> 'bar' +   * // or use `.get` +   * console.log(app.get('isApp')); //=> true +   * console.log(app.get('foo')); //=> 'bar' +   * +   * // values defined with the given `options` object will be on `app.options +   * console.log(app.options.abc); //=> true +   * ``` +   * +   * @param {Object} `config` If supplied, this object is passed to [cache-base][] to merge onto the the instance upon instantiation. +   * @param {Object} `options` If supplied, this object is used to initialize the `base.options` object. +   * @api public +   */ + +  function Base(config, options) { +    if (!(this instanceof Base)) { +      return new Base(config, options); +    } +    Cache.call(this, config); +    this.is('base'); +    this.initBase(config, options); +  } + +  /** +   * Inherit cache-base +   */ + +  util.inherits(Base, Cache); + +  /** +   * Add static emitter methods +   */ + +  Emitter(Base); + +  /** +   * Initialize `Base` defaults with the given `config` object +   */ + +  Base.prototype.initBase = function(config, options) { +    this.options = merge({}, this.options, options); +    this.cache = this.cache || {}; +    this.define('registered', {}); +    if (name) this[name] = {}; + +    // make `app._callbacks` non-enumerable +    this.define('_callbacks', this._callbacks); +    if (isObject(config)) { +      this.visit('set', config); +    } +    Base.run(this, 'use', fns); +  }; + +  /** +   * Set the given `name` on `app._name` and `app.is*` properties. Used for doing +   * lookups in plugins. +   * +   * ```js +   * app.is('foo'); +   * console.log(app._name); +   * //=> 'foo' +   * console.log(app.isFoo); +   * //=> true +   * app.is('bar'); +   * console.log(app.isFoo); +   * //=> true +   * console.log(app.isBar); +   * //=> true +   * console.log(app._name); +   * //=> 'bar' +   * ``` +   * @name .is +   * @param {String} `name` +   * @return {Boolean} +   * @api public +   */ + +  Base.prototype.is = function(name) { +    if (typeof name !== 'string') { +      throw new TypeError('expected name to be a string'); +    } +    this.define('is' + pascal(name), true); +    this.define('_name', name); +    this.define('_appname', name); +    return this; +  }; + +  /** +   * Returns true if a plugin has already been registered on an instance. +   * +   * Plugin implementors are encouraged to use this first thing in a plugin +   * to prevent the plugin from being called more than once on the same +   * instance. +   * +   * ```js +   * var base = new Base(); +   * base.use(function(app) { +   *   if (app.isRegistered('myPlugin')) return; +   *   // do stuff to `app` +   * }); +   * +   * // to also record the plugin as being registered +   * base.use(function(app) { +   *   if (app.isRegistered('myPlugin', true)) return; +   *   // do stuff to `app` +   * }); +   * ``` +   * @name .isRegistered +   * @emits `plugin` Emits the name of the plugin being registered. Useful for unit tests, to ensure plugins are only registered once. +   * @param {String} `name` The plugin name. +   * @param {Boolean} `register` If the plugin if not already registered, to record it as being registered pass `true` as the second argument. +   * @return {Boolean} Returns true if a plugin is already registered. +   * @api public +   */ + +  Base.prototype.isRegistered = function(name, register) { +    if (this.registered.hasOwnProperty(name)) { +      return true; +    } +    if (register !== false) { +      this.registered[name] = true; +      this.emit('plugin', name); +    } +    return false; +  }; + +  /** +   * Define a plugin function to be called immediately upon init. Plugins are chainable +   * and expose the following arguments to the plugin function: +   * +   * - `app`: the current instance of `Base` +   * - `base`: the [first ancestor instance](#base) of `Base` +   * +   * ```js +   * var app = new Base() +   *   .use(foo) +   *   .use(bar) +   *   .use(baz) +   * ``` +   * @name .use +   * @param {Function} `fn` plugin function to call +   * @return {Object} Returns the item instance for chaining. +   * @api public +   */ + +  Base.prototype.use = function(fn) { +    fn.call(this, this); +    return this; +  }; + +  /** +   * The `.define` method is used for adding non-enumerable property on the instance. +   * Dot-notation is **not supported** with `define`. +   * +   * ```js +   * // arbitrary `render` function using lodash `template` +   * app.define('render', function(str, locals) { +   *   return _.template(str)(locals); +   * }); +   * ``` +   * @name .define +   * @param {String} `key` The name of the property to define. +   * @param {any} `value` +   * @return {Object} Returns the instance for chaining. +   * @api public +   */ + +  Base.prototype.define = function(key, val) { +    if (isObject(key)) { +      return this.visit('define', key); +    } +    define(this, key, val); +    return this; +  }; + +  /** +   * Mix property `key` onto the Base prototype. If base is inherited using +   * `Base.extend` this method will be overridden by a new `mixin` method that will +   * only add properties to the prototype of the inheriting application. +   * +   * ```js +   * app.mixin('foo', function() { +   *   // do stuff +   * }); +   * ``` +   * @name .mixin +   * @param {String} `key` +   * @param {Object|Array} `val` +   * @return {Object} Returns the `base` instance for chaining. +   * @api public +   */ + +  Base.prototype.mixin = function(key, val) { +    Base.prototype[key] = val; +    return this; +  }; + +  /** +   * Non-enumberable mixin array, used by the static [Base.mixin]() method. +   */ + +  Base.prototype.mixins = Base.prototype.mixins || []; + +  /** +   * Getter/setter used when creating nested instances of `Base`, for storing a reference +   * to the first ancestor instance. This works by setting an instance of `Base` on the `parent` +   * property of a "child" instance. The `base` property defaults to the current instance if +   * no `parent` property is defined. +   * +   * ```js +   * // create an instance of `Base`, this is our first ("base") instance +   * var first = new Base(); +   * first.foo = 'bar'; // arbitrary property, to make it easier to see what's happening later +   * +   * // create another instance +   * var second = new Base(); +   * // create a reference to the first instance (`first`) +   * second.parent = first; +   * +   * // create another instance +   * var third = new Base(); +   * // create a reference to the previous instance (`second`) +   * // repeat this pattern every time a "child" instance is created +   * third.parent = second; +   * +   * // we can always access the first instance using the `base` property +   * console.log(first.base.foo); +   * //=> 'bar' +   * console.log(second.base.foo); +   * //=> 'bar' +   * console.log(third.base.foo); +   * //=> 'bar' +   * // and now you know how to get to third base ;) +   * ``` +   * @name .base +   * @api public +   */ + +  Object.defineProperty(Base.prototype, 'base', { +    configurable: true, +    get: function() { +      return this.parent ? this.parent.base : this; +    } +  }); + +  /** +   * Static method for adding global plugin functions that will +   * be added to an instance when created. +   * +   * ```js +   * Base.use(function(app) { +   *   app.foo = 'bar'; +   * }); +   * var app = new Base(); +   * console.log(app.foo); +   * //=> 'bar' +   * ``` +   * @name #use +   * @param {Function} `fn` Plugin function to use on each instance. +   * @return {Object} Returns the `Base` constructor for chaining +   * @api public +   */ + +  define(Base, 'use', function(fn) { +    fns.push(fn); +    return Base; +  }); + +  /** +   * Run an array of functions by passing each function +   * to a method on the given object specified by the given property. +   * +   * @param  {Object} `obj` Object containing method to use. +   * @param  {String} `prop` Name of the method on the object to use. +   * @param  {Array} `arr` Array of functions to pass to the method. +   */ + +  define(Base, 'run', function(obj, prop, arr) { +    var len = arr.length, i = 0; +    while (len--) { +      obj[prop](arr[i++]); +    } +    return Base; +  }); + +  /** +   * Static method for inheriting the prototype and static methods of the `Base` class. +   * This method greatly simplifies the process of creating inheritance-based applications. +   * See [static-extend][] for more details. +   * +   * ```js +   * var extend = cu.extend(Parent); +   * Parent.extend(Child); +   * +   * // optional methods +   * Parent.extend(Child, { +   *   foo: function() {}, +   *   bar: function() {} +   * }); +   * ``` +   * @name #extend +   * @param {Function} `Ctor` constructor to extend +   * @param {Object} `methods` Optional prototype properties to mix in. +   * @return {Object} Returns the `Base` constructor for chaining +   * @api public +   */ + +  define(Base, 'extend', cu.extend(Base, function(Ctor, Parent) { +    Ctor.prototype.mixins = Ctor.prototype.mixins || []; + +    define(Ctor, 'mixin', function(fn) { +      var mixin = fn(Ctor.prototype, Ctor); +      if (typeof mixin === 'function') { +        Ctor.prototype.mixins.push(mixin); +      } +      return Ctor; +    }); + +    define(Ctor, 'mixins', function(Child) { +      Base.run(Child, 'mixin', Ctor.prototype.mixins); +      return Ctor; +    }); + +    Ctor.prototype.mixin = function(key, value) { +      Ctor.prototype[key] = value; +      return this; +    }; +    return Base; +  })); + +  /** +   * Used for adding methods to the `Base` prototype, and/or to the prototype of child instances. +   * When a mixin function returns a function, the returned function is pushed onto the `.mixins` +   * array, making it available to be used on inheriting classes whenever `Base.mixins()` is +   * called (e.g. `Base.mixins(Child)`). +   * +   * ```js +   * Base.mixin(function(proto) { +   *   proto.foo = function(msg) { +   *     return 'foo ' + msg; +   *   }; +   * }); +   * ``` +   * @name #mixin +   * @param {Function} `fn` Function to call +   * @return {Object} Returns the `Base` constructor for chaining +   * @api public +   */ + +  define(Base, 'mixin', function(fn) { +    var mixin = fn(Base.prototype, Base); +    if (typeof mixin === 'function') { +      Base.prototype.mixins.push(mixin); +    } +    return Base; +  }); + +  /** +   * Static method for running global mixin functions against a child constructor. +   * Mixins must be registered before calling this method. +   * +   * ```js +   * Base.extend(Child); +   * Base.mixins(Child); +   * ``` +   * @name #mixins +   * @param {Function} `Child` Constructor function of a child class +   * @return {Object} Returns the `Base` constructor for chaining +   * @api public +   */ + +  define(Base, 'mixins', function(Child) { +    Base.run(Child, 'mixin', Base.prototype.mixins); +    return Base; +  }); + +  /** +   * Similar to `util.inherit`, but copies all static properties, prototype properties, and +   * getters/setters from `Provider` to `Receiver`. See [class-utils][]{#inherit} for more details. +   * +   * ```js +   * Base.inherit(Foo, Bar); +   * ``` +   * @name #inherit +   * @param {Function} `Receiver` Receiving (child) constructor +   * @param {Function} `Provider` Providing (parent) constructor +   * @return {Object} Returns the `Base` constructor for chaining +   * @api public +   */ + +  define(Base, 'inherit', cu.inherit); +  define(Base, 'bubble', cu.bubble); +  return Base; +} + +/** + * Expose `Base` with default settings + */ + +module.exports = namespace(); + +/** + * Allow users to define a namespace + */ + +module.exports.namespace = namespace; diff --git a/node_modules/base/node_modules/define-property/LICENSE b/node_modules/base/node_modules/define-property/LICENSE new file mode 100644 index 0000000..ec85897 --- /dev/null +++ b/node_modules/base/node_modules/define-property/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015, 2017, Jon Schlinkert + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/base/node_modules/define-property/README.md b/node_modules/base/node_modules/define-property/README.md new file mode 100644 index 0000000..2f1af05 --- /dev/null +++ b/node_modules/base/node_modules/define-property/README.md @@ -0,0 +1,95 @@ +# define-property [](https://www.npmjs.com/package/define-property) [](https://npmjs.org/package/define-property)  [](https://npmjs.org/package/define-property) [](https://travis-ci.org/jonschlinkert/define-property) + +> Define a non-enumerable property on an object. + +## Install + +Install with [npm](https://www.npmjs.com/): + +```sh +$ npm install --save define-property +``` + +Install with [yarn](https://yarnpkg.com): + +```sh +$ yarn add define-property +``` + +## Usage + +**Params** + +* `obj`: The object on which to define the property. +* `prop`: The name of the property to be defined or modified. +* `descriptor`: The descriptor for the property being defined or modified. + +```js +var define = require('define-property'); +var obj = {}; +define(obj, 'foo', function(val) { +  return val.toUpperCase(); +}); + +console.log(obj); +//=> {} + +console.log(obj.foo('bar')); +//=> 'BAR' +``` + +**get/set** + +```js +define(obj, 'foo', { +  get: function() {}, +  set: function() {} +}); +``` + +## About + +### Related projects + +* [assign-deep](https://www.npmjs.com/package/assign-deep): Deeply assign the enumerable properties and/or es6 Symbol properies of source objects to the target… [more](https://github.com/jonschlinkert/assign-deep) | [homepage](https://github.com/jonschlinkert/assign-deep "Deeply assign the enumerable properties and/or es6 Symbol properies of source objects to the target (first) object.") +* [extend-shallow](https://www.npmjs.com/package/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. | [homepage](https://github.com/jonschlinkert/extend-shallow "Extend an object with the properties of additional objects. node.js/javascript util.") +* [merge-deep](https://www.npmjs.com/package/merge-deep): Recursively merge values in a javascript object. | [homepage](https://github.com/jonschlinkert/merge-deep "Recursively merge values in a javascript object.") +* [mixin-deep](https://www.npmjs.com/package/mixin-deep): Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone. | [homepage](https://github.com/jonschlinkert/mixin-deep "Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone.") + +### Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +### Building docs + +_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ + +To generate the readme, run the following command: + +```sh +$ npm install -g verbose/verb#dev verb-generate-readme && verb +``` + +### Running tests + +Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: + +```sh +$ npm install && npm test +``` + +### Author + +**Jon Schlinkert** + +* [github/jonschlinkert](https://github.com/jonschlinkert) +* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) + +### License + +Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT License](LICENSE). + +*** + +_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.5.0, on April 20, 2017._
\ No newline at end of file diff --git a/node_modules/base/node_modules/define-property/index.js b/node_modules/base/node_modules/define-property/index.js new file mode 100644 index 0000000..27c19eb --- /dev/null +++ b/node_modules/base/node_modules/define-property/index.js @@ -0,0 +1,31 @@ +/*! + * define-property <https://github.com/jonschlinkert/define-property> + * + * Copyright (c) 2015, 2017, Jon Schlinkert. + * Released under the MIT License. + */ + +'use strict'; + +var isDescriptor = require('is-descriptor'); + +module.exports = function defineProperty(obj, prop, val) { +  if (typeof obj !== 'object' && typeof obj !== 'function') { +    throw new TypeError('expected an object or function.'); +  } + +  if (typeof prop !== 'string') { +    throw new TypeError('expected `prop` to be a string.'); +  } + +  if (isDescriptor(val) && ('set' in val || 'get' in val)) { +    return Object.defineProperty(obj, prop, val); +  } + +  return Object.defineProperty(obj, prop, { +    configurable: true, +    enumerable: false, +    writable: true, +    value: val +  }); +}; diff --git a/node_modules/base/node_modules/define-property/package.json b/node_modules/base/node_modules/define-property/package.json new file mode 100644 index 0000000..e902143 --- /dev/null +++ b/node_modules/base/node_modules/define-property/package.json @@ -0,0 +1,97 @@ +{ +  "_args": [ +    [ +      "define-property@1.0.0", +      "/home/dstaesse/git/website" +    ] +  ], +  "_development": true, +  "_from": "define-property@1.0.0", +  "_id": "define-property@1.0.0", +  "_inBundle": false, +  "_integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", +  "_location": "/base/define-property", +  "_phantomChildren": {}, +  "_requested": { +    "type": "version", +    "registry": true, +    "raw": "define-property@1.0.0", +    "name": "define-property", +    "escapedName": "define-property", +    "rawSpec": "1.0.0", +    "saveSpec": null, +    "fetchSpec": "1.0.0" +  }, +  "_requiredBy": [ +    "/base" +  ], +  "_resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", +  "_spec": "1.0.0", +  "_where": "/home/dstaesse/git/website", +  "author": { +    "name": "Jon Schlinkert", +    "url": "https://github.com/jonschlinkert" +  }, +  "bugs": { +    "url": "https://github.com/jonschlinkert/define-property/issues" +  }, +  "dependencies": { +    "is-descriptor": "^1.0.0" +  }, +  "description": "Define a non-enumerable property on an object.", +  "devDependencies": { +    "gulp-format-md": "^0.1.12", +    "mocha": "^3.2.0" +  }, +  "engines": { +    "node": ">=0.10.0" +  }, +  "files": [ +    "index.js" +  ], +  "homepage": "https://github.com/jonschlinkert/define-property", +  "keywords": [ +    "define", +    "define-property", +    "enumerable", +    "key", +    "non", +    "non-enumerable", +    "object", +    "prop", +    "property", +    "value" +  ], +  "license": "MIT", +  "main": "index.js", +  "name": "define-property", +  "repository": { +    "type": "git", +    "url": "git+https://github.com/jonschlinkert/define-property.git" +  }, +  "scripts": { +    "test": "mocha" +  }, +  "verb": { +    "related": { +      "list": [ +        "extend-shallow", +        "merge-deep", +        "assign-deep", +        "mixin-deep" +      ] +    }, +    "toc": false, +    "layout": "default", +    "tasks": [ +      "readme" +    ], +    "plugins": [ +      "gulp-format-md" +    ], +    "lint": { +      "reflinks": true +    } +  }, +  "version": "1.0.0" +} diff --git a/node_modules/base/node_modules/is-accessor-descriptor/LICENSE b/node_modules/base/node_modules/is-accessor-descriptor/LICENSE new file mode 100644 index 0000000..e33d14b --- /dev/null +++ b/node_modules/base/node_modules/is-accessor-descriptor/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015-2017, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/base/node_modules/is-accessor-descriptor/README.md b/node_modules/base/node_modules/is-accessor-descriptor/README.md new file mode 100644 index 0000000..d198e1f --- /dev/null +++ b/node_modules/base/node_modules/is-accessor-descriptor/README.md @@ -0,0 +1,144 @@ +# is-accessor-descriptor [](https://www.npmjs.com/package/is-accessor-descriptor) [](https://npmjs.org/package/is-accessor-descriptor) [](https://npmjs.org/package/is-accessor-descriptor) [](https://travis-ci.org/jonschlinkert/is-accessor-descriptor) + +> Returns true if a value has the characteristics of a valid JavaScript accessor descriptor. + +Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. + +## Install + +Install with [npm](https://www.npmjs.com/): + +```sh +$ npm install --save is-accessor-descriptor +``` + +## Usage + +```js +var isAccessor = require('is-accessor-descriptor'); + +isAccessor({get: function() {}}); +//=> true +``` + +You may also pass an object and property name to check if the property is an accessor: + +```js +isAccessor(foo, 'bar'); +``` + +## Examples + +`false` when not an object + +```js +isAccessor('a') +isAccessor(null) +isAccessor([]) +//=> false +``` + +`true` when the object has valid properties + +and the properties all have the correct JavaScript types: + +```js +isAccessor({get: noop, set: noop}) +isAccessor({get: noop}) +isAccessor({set: noop}) +//=> true +``` + +`false` when the object has invalid properties + +```js +isAccessor({get: noop, set: noop, bar: 'baz'}) +isAccessor({get: noop, writable: true}) +isAccessor({get: noop, value: true}) +//=> false +``` + +`false` when an accessor is not a function + +```js +isAccessor({get: noop, set: 'baz'}) +isAccessor({get: 'foo', set: noop}) +isAccessor({get: 'foo', bar: 'baz'}) +isAccessor({get: 'foo', set: 'baz'}) +//=> false +``` + +`false` when a value is not the correct type + +```js +isAccessor({get: noop, set: noop, enumerable: 'foo'}) +isAccessor({set: noop, configurable: 'foo'}) +isAccessor({get: noop, configurable: 'foo'}) +//=> false +``` + +## About + +<details> +<summary><strong>Contributing</strong></summary> + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +</details> + +<details> +<summary><strong>Running Tests</strong></summary> + +Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: + +```sh +$ npm install && npm test +``` + +</details> + +<details> +<summary><strong>Building docs</strong></summary> + +_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ + +To generate the readme, run the following command: + +```sh +$ npm install -g verbose/verb#dev verb-generate-readme && verb +``` + +</details> + +### Related projects + +You might also be interested in these projects: + +* [is-accessor-descriptor](https://www.npmjs.com/package/is-accessor-descriptor): Returns true if a value has the characteristics of a valid JavaScript accessor descriptor. | [homepage](https://github.com/jonschlinkert/is-accessor-descriptor "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.") +* [is-data-descriptor](https://www.npmjs.com/package/is-data-descriptor): Returns true if a value has the characteristics of a valid JavaScript data descriptor. | [homepage](https://github.com/jonschlinkert/is-data-descriptor "Returns true if a value has the characteristics of a valid JavaScript data descriptor.") +* [is-descriptor](https://www.npmjs.com/package/is-descriptor): Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for… [more](https://github.com/jonschlinkert/is-descriptor) | [homepage](https://github.com/jonschlinkert/is-descriptor "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.") +* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object "Returns true if an object was created by the `Object` constructor.") +* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") + +### Contributors + +| **Commits** | **Contributor** |  +| --- | --- | +| 22 | [jonschlinkert](https://github.com/jonschlinkert) | +| 2 | [realityking](https://github.com/realityking) | + +### Author + +**Jon Schlinkert** + +* [github/jonschlinkert](https://github.com/jonschlinkert) +* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) + +### License + +Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT License](LICENSE). + +*** + +_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on November 01, 2017._
\ No newline at end of file diff --git a/node_modules/base/node_modules/is-accessor-descriptor/index.js b/node_modules/base/node_modules/is-accessor-descriptor/index.js new file mode 100644 index 0000000..d2e6fe8 --- /dev/null +++ b/node_modules/base/node_modules/is-accessor-descriptor/index.js @@ -0,0 +1,69 @@ +/*! + * is-accessor-descriptor <https://github.com/jonschlinkert/is-accessor-descriptor> + * + * Copyright (c) 2015-2017, Jon Schlinkert. + * Released under the MIT License. + */ + +'use strict'; + +var typeOf = require('kind-of'); + +// accessor descriptor properties +var accessor = { +  get: 'function', +  set: 'function', +  configurable: 'boolean', +  enumerable: 'boolean' +}; + +function isAccessorDescriptor(obj, prop) { +  if (typeof prop === 'string') { +    var val = Object.getOwnPropertyDescriptor(obj, prop); +    return typeof val !== 'undefined'; +  } + +  if (typeOf(obj) !== 'object') { +    return false; +  } + +  if (has(obj, 'value') || has(obj, 'writable')) { +    return false; +  } + +  if (!has(obj, 'get') || typeof obj.get !== 'function') { +    return false; +  } + +  // tldr: it's valid to have "set" be undefined +  // "set" might be undefined if `Object.getOwnPropertyDescriptor` +  // was used to get the value, and only `get` was defined by the user +  if (has(obj, 'set') && typeof obj[key] !== 'function' && typeof obj[key] !== 'undefined') { +    return false; +  } + +  for (var key in obj) { +    if (!accessor.hasOwnProperty(key)) { +      continue; +    } + +    if (typeOf(obj[key]) === accessor[key]) { +      continue; +    } + +    if (typeof obj[key] !== 'undefined') { +      return false; +    } +  } +  return true; +} + +function has(obj, key) { +  return {}.hasOwnProperty.call(obj, key); +} + +/** + * Expose `isAccessorDescriptor` + */ + +module.exports = isAccessorDescriptor; diff --git a/node_modules/base/node_modules/is-accessor-descriptor/package.json b/node_modules/base/node_modules/is-accessor-descriptor/package.json new file mode 100644 index 0000000..dd15752 --- /dev/null +++ b/node_modules/base/node_modules/is-accessor-descriptor/package.json @@ -0,0 +1,114 @@ +{ +  "_args": [ +    [ +      "is-accessor-descriptor@1.0.0", +      "/home/dstaesse/git/website" +    ] +  ], +  "_development": true, +  "_from": "is-accessor-descriptor@1.0.0", +  "_id": "is-accessor-descriptor@1.0.0", +  "_inBundle": false, +  "_integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", +  "_location": "/base/is-accessor-descriptor", +  "_phantomChildren": {}, +  "_requested": { +    "type": "version", +    "registry": true, +    "raw": "is-accessor-descriptor@1.0.0", +    "name": "is-accessor-descriptor", +    "escapedName": "is-accessor-descriptor", +    "rawSpec": "1.0.0", +    "saveSpec": null, +    "fetchSpec": "1.0.0" +  }, +  "_requiredBy": [ +    "/base/is-descriptor" +  ], +  "_resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", +  "_spec": "1.0.0", +  "_where": "/home/dstaesse/git/website", +  "author": { +    "name": "Jon Schlinkert", +    "url": "https://github.com/jonschlinkert" +  }, +  "bugs": { +    "url": "https://github.com/jonschlinkert/is-accessor-descriptor/issues" +  }, +  "contributors": [ +    { +      "name": "Jon Schlinkert", +      "url": "http://twitter.com/jonschlinkert" +    }, +    { +      "name": "Rouven Weßling", +      "url": "www.rouvenwessling.de" +    } +  ], +  "dependencies": { +    "kind-of": "^6.0.0" +  }, +  "description": "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.", +  "devDependencies": { +    "gulp-format-md": "^1.0.0", +    "mocha": "^3.5.3" +  }, +  "engines": { +    "node": ">=0.10.0" +  }, +  "files": [ +    "index.js" +  ], +  "homepage": "https://github.com/jonschlinkert/is-accessor-descriptor", +  "keywords": [ +    "accessor", +    "check", +    "data", +    "descriptor", +    "get", +    "getter", +    "is", +    "keys", +    "object", +    "properties", +    "property", +    "set", +    "setter", +    "type", +    "valid", +    "value" +  ], +  "license": "MIT", +  "main": "index.js", +  "name": "is-accessor-descriptor", +  "repository": { +    "type": "git", +    "url": "git+https://github.com/jonschlinkert/is-accessor-descriptor.git" +  }, +  "scripts": { +    "test": "mocha" +  }, +  "verb": { +    "toc": false, +    "layout": "default", +    "tasks": [ +      "readme" +    ], +    "plugins": [ +      "gulp-format-md" +    ], +    "related": { +      "list": [ +        "is-accessor-descriptor", +        "is-data-descriptor", +        "is-descriptor", +        "is-plain-object", +        "isobject" +      ] +    }, +    "lint": { +      "reflinks": true +    } +  }, +  "version": "1.0.0" +} diff --git a/node_modules/base/node_modules/is-data-descriptor/LICENSE b/node_modules/base/node_modules/is-data-descriptor/LICENSE new file mode 100644 index 0000000..e33d14b --- /dev/null +++ b/node_modules/base/node_modules/is-data-descriptor/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015-2017, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/base/node_modules/is-data-descriptor/README.md b/node_modules/base/node_modules/is-data-descriptor/README.md new file mode 100644 index 0000000..42b0714 --- /dev/null +++ b/node_modules/base/node_modules/is-data-descriptor/README.md @@ -0,0 +1,161 @@ +# is-data-descriptor [](https://www.npmjs.com/package/is-data-descriptor) [](https://npmjs.org/package/is-data-descriptor) [](https://npmjs.org/package/is-data-descriptor) [](https://travis-ci.org/jonschlinkert/is-data-descriptor) + +> Returns true if a value has the characteristics of a valid JavaScript data descriptor. + +Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support. + +## Install + +Install with [npm](https://www.npmjs.com/): + +```sh +$ npm install --save is-data-descriptor +``` + +## Usage + +```js +var isDataDesc = require('is-data-descriptor'); +``` + +## Examples + +`true` when the descriptor has valid properties with valid values. + +```js +// `value` can be anything +isDataDesc({value: 'foo'}) +isDataDesc({value: function() {}}) +isDataDesc({value: true}) +//=> true +``` + +`false` when not an object + +```js +isDataDesc('a') +//=> false +isDataDesc(null) +//=> false +isDataDesc([]) +//=> false +``` + +`false` when the object has invalid properties + +```js +isDataDesc({value: 'foo', bar: 'baz'}) +//=> false +isDataDesc({value: 'foo', bar: 'baz'}) +//=> false +isDataDesc({value: 'foo', get: function(){}}) +//=> false +isDataDesc({get: function(){}, value: 'foo'}) +//=> false +``` + +`false` when a value is not the correct type + +```js +isDataDesc({value: 'foo', enumerable: 'foo'}) +//=> false +isDataDesc({value: 'foo', configurable: 'foo'}) +//=> false +isDataDesc({value: 'foo', writable: 'foo'}) +//=> false +``` + +## Valid properties + +The only valid data descriptor properties are the following: + +* `configurable` (required) +* `enumerable` (required) +* `value` (optional) +* `writable` (optional) + +To be a valid data descriptor, either `value` or `writable` must be defined. + +**Invalid properties** + +A descriptor may have additional _invalid_ properties (an error will **not** be thrown). + +```js +var foo = {}; + +Object.defineProperty(foo, 'bar', { +  enumerable: true, +  whatever: 'blah', // invalid, but doesn't cause an error +  get: function() { +    return 'baz'; +  } +}); + +console.log(foo.bar); +//=> 'baz' +``` + +## About + +<details> +<summary><strong>Contributing</strong></summary> + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +</details> + +<details> +<summary><strong>Running Tests</strong></summary> + +Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: + +```sh +$ npm install && npm test +``` + +</details> + +<details> +<summary><strong>Building docs</strong></summary> + +_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ + +To generate the readme, run the following command: + +```sh +$ npm install -g verbose/verb#dev verb-generate-readme && verb +``` + +</details> + +### Related projects + +You might also be interested in these projects: + +* [is-accessor-descriptor](https://www.npmjs.com/package/is-accessor-descriptor): Returns true if a value has the characteristics of a valid JavaScript accessor descriptor. | [homepage](https://github.com/jonschlinkert/is-accessor-descriptor "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.") +* [is-data-descriptor](https://www.npmjs.com/package/is-data-descriptor): Returns true if a value has the characteristics of a valid JavaScript data descriptor. | [homepage](https://github.com/jonschlinkert/is-data-descriptor "Returns true if a value has the characteristics of a valid JavaScript data descriptor.") +* [is-descriptor](https://www.npmjs.com/package/is-descriptor): Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for… [more](https://github.com/jonschlinkert/is-descriptor) | [homepage](https://github.com/jonschlinkert/is-descriptor "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.") +* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") + +### Contributors + +| **Commits** | **Contributor** |  +| --- | --- | +| 21 | [jonschlinkert](https://github.com/jonschlinkert) | +| 2 | [realityking](https://github.com/realityking) | + +### Author + +**Jon Schlinkert** + +* [github/jonschlinkert](https://github.com/jonschlinkert) +* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) + +### License + +Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT License](LICENSE). + +*** + +_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on November 01, 2017._
\ No newline at end of file diff --git a/node_modules/base/node_modules/is-data-descriptor/index.js b/node_modules/base/node_modules/is-data-descriptor/index.js new file mode 100644 index 0000000..cfeae36 --- /dev/null +++ b/node_modules/base/node_modules/is-data-descriptor/index.js @@ -0,0 +1,49 @@ +/*! + * is-data-descriptor <https://github.com/jonschlinkert/is-data-descriptor> + * + * Copyright (c) 2015-2017, Jon Schlinkert. + * Released under the MIT License. + */ + +'use strict'; + +var typeOf = require('kind-of'); + +module.exports = function isDataDescriptor(obj, prop) { +  // data descriptor properties +  var data = { +    configurable: 'boolean', +    enumerable: 'boolean', +    writable: 'boolean' +  }; + +  if (typeOf(obj) !== 'object') { +    return false; +  } + +  if (typeof prop === 'string') { +    var val = Object.getOwnPropertyDescriptor(obj, prop); +    return typeof val !== 'undefined'; +  } + +  if (!('value' in obj) && !('writable' in obj)) { +    return false; +  } + +  for (var key in obj) { +    if (key === 'value') continue; + +    if (!data.hasOwnProperty(key)) { +      continue; +    } + +    if (typeOf(obj[key]) === data[key]) { +      continue; +    } + +    if (typeof obj[key] !== 'undefined') { +      return false; +    } +  } +  return true; +}; diff --git a/node_modules/base/node_modules/is-data-descriptor/package.json b/node_modules/base/node_modules/is-data-descriptor/package.json new file mode 100644 index 0000000..2e7cc78 --- /dev/null +++ b/node_modules/base/node_modules/is-data-descriptor/package.json @@ -0,0 +1,113 @@ +{ +  "_args": [ +    [ +      "is-data-descriptor@1.0.0", +      "/home/dstaesse/git/website" +    ] +  ], +  "_development": true, +  "_from": "is-data-descriptor@1.0.0", +  "_id": "is-data-descriptor@1.0.0", +  "_inBundle": false, +  "_integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", +  "_location": "/base/is-data-descriptor", +  "_phantomChildren": {}, +  "_requested": { +    "type": "version", +    "registry": true, +    "raw": "is-data-descriptor@1.0.0", +    "name": "is-data-descriptor", +    "escapedName": "is-data-descriptor", +    "rawSpec": "1.0.0", +    "saveSpec": null, +    "fetchSpec": "1.0.0" +  }, +  "_requiredBy": [ +    "/base/is-descriptor" +  ], +  "_resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", +  "_spec": "1.0.0", +  "_where": "/home/dstaesse/git/website", +  "author": { +    "name": "Jon Schlinkert", +    "url": "https://github.com/jonschlinkert" +  }, +  "bugs": { +    "url": "https://github.com/jonschlinkert/is-data-descriptor/issues" +  }, +  "contributors": [ +    { +      "name": "Jon Schlinkert", +      "url": "http://twitter.com/jonschlinkert" +    }, +    { +      "name": "Rouven Weßling", +      "url": "www.rouvenwessling.de" +    } +  ], +  "dependencies": { +    "kind-of": "^6.0.0" +  }, +  "description": "Returns true if a value has the characteristics of a valid JavaScript data descriptor.", +  "devDependencies": { +    "gulp-format-md": "^1.0.0", +    "mocha": "^3.5.3" +  }, +  "engines": { +    "node": ">=0.10.0" +  }, +  "files": [ +    "index.js" +  ], +  "homepage": "https://github.com/jonschlinkert/is-data-descriptor", +  "keywords": [ +    "accessor", +    "check", +    "data", +    "descriptor", +    "get", +    "getter", +    "is", +    "keys", +    "object", +    "properties", +    "property", +    "set", +    "setter", +    "type", +    "valid", +    "value" +  ], +  "license": "MIT", +  "main": "index.js", +  "name": "is-data-descriptor", +  "repository": { +    "type": "git", +    "url": "git+https://github.com/jonschlinkert/is-data-descriptor.git" +  }, +  "scripts": { +    "test": "mocha" +  }, +  "verb": { +    "toc": false, +    "layout": "default", +    "tasks": [ +      "readme" +    ], +    "plugins": [ +      "gulp-format-md" +    ], +    "related": { +      "list": [ +        "is-accessor-descriptor", +        "is-data-descriptor", +        "is-descriptor", +        "isobject" +      ] +    }, +    "lint": { +      "reflinks": true +    } +  }, +  "version": "1.0.0" +} diff --git a/node_modules/base/node_modules/is-descriptor/LICENSE b/node_modules/base/node_modules/is-descriptor/LICENSE new file mode 100644 index 0000000..c0d7f13 --- /dev/null +++ b/node_modules/base/node_modules/is-descriptor/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015-2017, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE.
\ No newline at end of file diff --git a/node_modules/base/node_modules/is-descriptor/README.md b/node_modules/base/node_modules/is-descriptor/README.md new file mode 100644 index 0000000..658e533 --- /dev/null +++ b/node_modules/base/node_modules/is-descriptor/README.md @@ -0,0 +1,193 @@ +# is-descriptor [](https://www.npmjs.com/package/is-descriptor) [](https://npmjs.org/package/is-descriptor) [](https://npmjs.org/package/is-descriptor) [](https://travis-ci.org/jonschlinkert/is-descriptor) + +> Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors. + +## Install + +Install with [npm](https://www.npmjs.com/): + +```sh +$ npm install --save is-descriptor +``` + +## Usage + +```js +var isDescriptor = require('is-descriptor'); + +isDescriptor({value: 'foo'}) +//=> true +isDescriptor({get: function(){}, set: function(){}}) +//=> true +isDescriptor({get: 'foo', set: function(){}}) +//=> false +``` + +You may also check for a descriptor by passing an object as the first argument and property name (`string`) as the second argument. + +```js +var obj = {}; +obj.foo = 'abc'; + +Object.defineProperty(obj, 'bar', { +  value: 'xyz' +}); + +isDescriptor(obj, 'foo'); +//=> true +isDescriptor(obj, 'bar'); +//=> true +``` + +## Examples + +### value type + +`false` when not an object + +```js +isDescriptor('a'); +//=> false +isDescriptor(null); +//=> false +isDescriptor([]); +//=> false +``` + +### data descriptor + +`true` when the object has valid properties with valid values. + +```js +isDescriptor({value: 'foo'}); +//=> true +isDescriptor({value: noop}); +//=> true +``` + +`false` when the object has invalid properties + +```js +isDescriptor({value: 'foo', bar: 'baz'}); +//=> false +isDescriptor({value: 'foo', bar: 'baz'}); +//=> false +isDescriptor({value: 'foo', get: noop}); +//=> false +isDescriptor({get: noop, value: noop}); +//=> false +``` + +`false` when a value is not the correct type + +```js +isDescriptor({value: 'foo', enumerable: 'foo'}); +//=> false +isDescriptor({value: 'foo', configurable: 'foo'}); +//=> false +isDescriptor({value: 'foo', writable: 'foo'}); +//=> false +``` + +### accessor descriptor + +`true` when the object has valid properties with valid values. + +```js +isDescriptor({get: noop, set: noop}); +//=> true +isDescriptor({get: noop}); +//=> true +isDescriptor({set: noop}); +//=> true +``` + +`false` when the object has invalid properties + +```js +isDescriptor({get: noop, set: noop, bar: 'baz'}); +//=> false +isDescriptor({get: noop, writable: true}); +//=> false +isDescriptor({get: noop, value: true}); +//=> false +``` + +`false` when an accessor is not a function + +```js +isDescriptor({get: noop, set: 'baz'}); +//=> false +isDescriptor({get: 'foo', set: noop}); +//=> false +isDescriptor({get: 'foo', bar: 'baz'}); +//=> false +isDescriptor({get: 'foo', set: 'baz'}); +//=> false +``` + +`false` when a value is not the correct type + +```js +isDescriptor({get: noop, set: noop, enumerable: 'foo'}); +//=> false +isDescriptor({set: noop, configurable: 'foo'}); +//=> false +isDescriptor({get: noop, configurable: 'foo'}); +//=> false +``` + +## About + +### Related projects + +* [is-accessor-descriptor](https://www.npmjs.com/package/is-accessor-descriptor): Returns true if a value has the characteristics of a valid JavaScript accessor descriptor. | [homepage](https://github.com/jonschlinkert/is-accessor-descriptor "Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.") +* [is-data-descriptor](https://www.npmjs.com/package/is-data-descriptor): Returns true if a value has the characteristics of a valid JavaScript data descriptor. | [homepage](https://github.com/jonschlinkert/is-data-descriptor "Returns true if a value has the characteristics of a valid JavaScript data descriptor.") +* [is-descriptor](https://www.npmjs.com/package/is-descriptor): Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for… [more](https://github.com/jonschlinkert/is-descriptor) | [homepage](https://github.com/jonschlinkert/is-descriptor "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.") +* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.") + +### Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +### Contributors + +| **Commits** | **Contributor** |  +| --- | --- | +| 24 | [jonschlinkert](https://github.com/jonschlinkert) | +| 1 | [doowb](https://github.com/doowb) | +| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) | + +### Building docs + +_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_ + +To generate the readme, run the following command: + +```sh +$ npm install -g verbose/verb#dev verb-generate-readme && verb +``` + +### Running tests + +Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command: + +```sh +$ npm install && npm test +``` + +### Author + +**Jon Schlinkert** + +* [github/jonschlinkert](https://github.com/jonschlinkert) +* [twitter/jonschlinkert](https://twitter.com/jonschlinkert) + +### License + +Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT License](LICENSE). + +*** + +_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on July 22, 2017._
\ No newline at end of file diff --git a/node_modules/base/node_modules/is-descriptor/index.js b/node_modules/base/node_modules/is-descriptor/index.js new file mode 100644 index 0000000..c9b91d7 --- /dev/null +++ b/node_modules/base/node_modules/is-descriptor/index.js @@ -0,0 +1,22 @@ +/*! + * is-descriptor <https://github.com/jonschlinkert/is-descriptor> + * + * Copyright (c) 2015-2017, Jon Schlinkert. + * Released under the MIT License. + */ + +'use strict'; + +var typeOf = require('kind-of'); +var isAccessor = require('is-accessor-descriptor'); +var isData = require('is-data-descriptor'); + +module.exports = function isDescriptor(obj, key) { +  if (typeOf(obj) !== 'object') { +    return false; +  } +  if ('get' in obj) { +    return isAccessor(obj, key); +  } +  return isData(obj, key); +}; diff --git a/node_modules/base/node_modules/is-descriptor/package.json b/node_modules/base/node_modules/is-descriptor/package.json new file mode 100644 index 0000000..7d2ed1c --- /dev/null +++ b/node_modules/base/node_modules/is-descriptor/package.json @@ -0,0 +1,118 @@ +{ +  "_args": [ +    [ +      "is-descriptor@1.0.2", +      "/home/dstaesse/git/website" +    ] +  ], +  "_development": true, +  "_from": "is-descriptor@1.0.2", +  "_id": "is-descriptor@1.0.2", +  "_inBundle": false, +  "_integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", +  "_location": "/base/is-descriptor", +  "_phantomChildren": {}, +  "_requested": { +    "type": "version", +    "registry": true, +    "raw": "is-descriptor@1.0.2", +    "name": "is-descriptor", +    "escapedName": "is-descriptor", +    "rawSpec": "1.0.2", +    "saveSpec": null, +    "fetchSpec": "1.0.2" +  }, +  "_requiredBy": [ +    "/base/define-property" +  ], +  "_resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", +  "_spec": "1.0.2", +  "_where": "/home/dstaesse/git/website", +  "author": { +    "name": "Jon Schlinkert", +    "url": "https://github.com/jonschlinkert" +  }, +  "bugs": { +    "url": "https://github.com/jonschlinkert/is-descriptor/issues" +  }, +  "contributors": [ +    { +      "name": "Brian Woodward", +      "url": "https://twitter.com/doowb" +    }, +    { +      "name": "Jon Schlinkert", +      "url": "http://twitter.com/jonschlinkert" +    }, +    { +      "url": "https://github.com/wtgtybhertgeghgtwtg" +    } +  ], +  "dependencies": { +    "is-accessor-descriptor": "^1.0.0", +    "is-data-descriptor": "^1.0.0", +    "kind-of": "^6.0.2" +  }, +  "description": "Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for data descriptors and accessor descriptors.", +  "devDependencies": { +    "gulp-format-md": "^1.0.0", +    "mocha": "^3.5.3" +  }, +  "engines": { +    "node": ">=0.10.0" +  }, +  "files": [ +    "index.js" +  ], +  "homepage": "https://github.com/jonschlinkert/is-descriptor", +  "keywords": [ +    "accessor", +    "check", +    "data", +    "descriptor", +    "get", +    "getter", +    "is", +    "keys", +    "object", +    "properties", +    "property", +    "set", +    "setter", +    "type", +    "valid", +    "value" +  ], +  "license": "MIT", +  "main": "index.js", +  "name": "is-descriptor", +  "repository": { +    "type": "git", +    "url": "git+https://github.com/jonschlinkert/is-descriptor.git" +  }, +  "scripts": { +    "test": "mocha" +  }, +  "verb": { +    "related": { +      "list": [ +        "is-accessor-descriptor", +        "is-data-descriptor", +        "is-descriptor", +        "isobject" +      ] +    }, +    "plugins": [ +      "gulp-format-md" +    ], +    "toc": false, +    "layout": "default", +    "tasks": [ +      "readme" +    ], +    "lint": { +      "reflinks": true +    } +  }, +  "version": "1.0.2" +} diff --git a/node_modules/base/package.json b/node_modules/base/package.json new file mode 100644 index 0000000..e2701ed --- /dev/null +++ b/node_modules/base/package.json @@ -0,0 +1,168 @@ +{ +  "_args": [ +    [ +      "base@0.11.2", +      "/home/dstaesse/git/website" +    ] +  ], +  "_development": true, +  "_from": "base@0.11.2", +  "_id": "base@0.11.2", +  "_inBundle": false, +  "_integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", +  "_location": "/base", +  "_phantomChildren": { +    "kind-of": "6.0.2" +  }, +  "_requested": { +    "type": "version", +    "registry": true, +    "raw": "base@0.11.2", +    "name": "base", +    "escapedName": "base", +    "rawSpec": "0.11.2", +    "saveSpec": null, +    "fetchSpec": "0.11.2" +  }, +  "_requiredBy": [ +    "/snapdragon" +  ], +  "_resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", +  "_spec": "0.11.2", +  "_where": "/home/dstaesse/git/website", +  "author": { +    "name": "Jon Schlinkert", +    "url": "https://github.com/jonschlinkert" +  }, +  "bugs": { +    "url": "https://github.com/node-base/base/issues" +  }, +  "contributors": [ +    { +      "name": "Brian Woodward", +      "url": "https://twitter.com/doowb" +    }, +    { +      "name": "John O'Donnell", +      "url": "https://github.com/criticalmash" +    }, +    { +      "name": "Jon Schlinkert", +      "url": "http://twitter.com/jonschlinkert" +    }, +    { +      "name": "tunnckoCore", +      "url": "https://i.am.charlike.online" +    }, +    { +      "url": "https://github.com/wtgtybhertgeghgtwtg" +    } +  ], +  "dependencies": { +    "cache-base": "^1.0.1", +    "class-utils": "^0.3.5", +    "component-emitter": "^1.2.1", +    "define-property": "^1.0.0", +    "isobject": "^3.0.1", +    "mixin-deep": "^1.2.0", +    "pascalcase": "^0.1.1" +  }, +  "description": "base is the foundation for creating modular, unit testable and highly pluggable node.js applications, starting with a handful of common methods, like `set`, `get`, `del` and `use`.", +  "devDependencies": { +    "gulp": "^3.9.1", +    "gulp-eslint": "^4.0.0", +    "gulp-format-md": "^1.0.0", +    "gulp-istanbul": "^1.1.2", +    "gulp-mocha": "^3.0.1", +    "helper-coverage": "^0.1.3", +    "mocha": "^3.5.0", +    "should": "^13.0.1", +    "through2": "^2.0.3", +    "verb-generate-readme": "^0.6.0" +  }, +  "engines": { +    "node": ">=0.10.0" +  }, +  "files": [ +    "index.js" +  ], +  "homepage": "https://github.com/node-base/base", +  "keywords": [ +    "base", +    "boilerplate", +    "cache", +    "del", +    "get", +    "inherit", +    "methods", +    "set", +    "starter", +    "unset", +    "visit" +  ], +  "license": "MIT", +  "main": "index.js", +  "maintainers": [ +    { +      "name": "Brian Woodward", +      "url": "https://github.com/doowb" +    }, +    { +      "name": "Jon Schlinkert", +      "url": "https://github.com/jonschlinkert" +    } +  ], +  "name": "base", +  "repository": { +    "type": "git", +    "url": "git+https://github.com/node-base/base.git" +  }, +  "scripts": { +    "test": "mocha" +  }, +  "verb": { +    "run": true, +    "toc": false, +    "layout": "default", +    "tasks": [ +      "readme" +    ], +    "plugins": [ +      "gulp-format-md" +    ], +    "helpers": [ +      "helper-coverage" +    ], +    "related": { +      "description": "There are a number of different plugins available for extending base. Let us know if you create your own!", +      "hightlight": "generate", +      "list": [ +        "base-cwd", +        "base-data", +        "base-fs", +        "base-generators", +        "base-option", +        "base-pipeline", +        "base-pkg", +        "base-plugins", +        "base-questions", +        "base-store", +        "base-task" +      ] +    }, +    "reflinks": [ +      "assemble", +      "boilerplate", +      "cache-base", +      "class-utils", +      "generate", +      "scaffold", +      "static-extend", +      "verb" +    ], +    "lint": { +      "reflinks": true +    } +  }, +  "version": "0.11.2" +} | 
