pnpm
Version:
Fast, disk space efficient package manager
196 lines (195 loc) • 22 kB
JSON
{
"_args": [
[
{
"raw": "base@^0.11.1",
"scope": null,
"escapedName": "base",
"name": "base",
"rawSpec": "^0.11.1",
"spec": ">=0.11.1 <0.12.0",
"type": "range"
},
"/home/zoltan/src/pnpm/pnpm/packages/pnpm/node_modules/snapdragon"
]
],
"_from": "base@>=0.11.1 <0.12.0",
"_id": "base@0.11.2",
"_inCache": true,
"_location": "/base",
"_nodeVersion": "8.4.0",
"_npmOperationalInternal": {
"host": "s3://npm-registry-packages",
"tmp": "tmp/base-0.11.2.tgz_1504834551853_0.9452250017784536"
},
"_npmUser": {
"name": "jonschlinkert",
"email": "github@sellside.com"
},
"_npmVersion": "5.4.1",
"_phantomChildren": {
"kind-of": "6.0.2"
},
"_requested": {
"raw": "base@^0.11.1",
"scope": null,
"escapedName": "base",
"name": "base",
"rawSpec": "^0.11.1",
"spec": ">=0.11.1 <0.12.0",
"type": "range"
},
"_requiredBy": [
"/snapdragon"
],
"_resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
"_shasum": "7bde5ced145b6d551a90db87f83c558b4eb48a8f",
"_shrinkwrap": null,
"_spec": "base@^0.11.1",
"_where": "/home/zoltan/src/pnpm/pnpm/packages/pnpm/node_modules/snapdragon",
"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"
},
"directories": {},
"dist": {
"integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
"shasum": "7bde5ced145b6d551a90db87f83c558b4eb48a8f",
"tarball": "https://registry.npmjs.org/base/-/base-0.11.2.tgz"
},
"engines": {
"node": ">=0.10.0"
},
"files": [
"index.js"
],
"gitHead": "1885b1dc37dff5479d852dd0810d32207e190bab",
"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",
"optionalDependencies": {},
"readme": "<p align=\"center\">\n <a href=\"https://github.com/node-base/base\">\n <img height=\"250\" width=\"250\" src=\"https://raw.githubusercontent.com/node-base/base/master/docs/logo.png\">\n </a>\n</p>\n\n# base [](https://www.npmjs.com/package/base) [](https://npmjs.org/package/base) [](https://npmjs.org/package/base) [](https://travis-ci.org/node-base/base)\n\n> 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`.\n\n## Install\n\nInstall with [npm](https://www.npmjs.com/):\n\n```sh\n$ npm install --save base\n```\n\n## What is Base?\n\nBase is a framework for rapidly creating high quality node.js applications, using plugins like building blocks.\n\n### Guiding principles\n\nThe core team follows these principles to help guide API decisions:\n\n* **Compact API surface**: The smaller the API surface, the easier the library will be to learn and use.\n* **Easy to extend**: Implementors can use any npm package, and write plugins in pure JavaScript. If you're building complex apps, Base simplifies inheritance.\n* **Easy to test**: No special setup should be required to unit test `Base` or base plugins\n\n### Minimal API surface\n\n[The API](#api) was designed to provide only the minimum necessary functionality for creating a useful application, with or without [plugins](#plugins).\n\n**Base core**\n\nBase itself ships with only a handful of [useful methods](#api), such as:\n\n* `.set`: for setting values on the instance\n* `.get`: for getting values from the instance\n* `.has`: to check if a property exists on the instance\n* `.define`: for setting non-enumerable values on the instance\n* `.use`: for adding plugins\n\n**Be generic**\n\nWhen deciding on method to add or remove, we try to answer these questions:\n\n1. Will all or most Base applications need this method?\n2. Will this method encourage practices or enforce conventions that are beneficial to implementors?\n3. Can or should this be done in a plugin instead?\n\n### Composability\n\n**Plugin system**\n\nIt couldn't be easier to extend Base with any features or custom functionality you can think of.\n\nBase plugins are just functions that take an instance of `Base`:\n\n```js\nvar base = new Base();\n\nfunction plugin(base) {\n // do plugin stuff, in pure JavaScript\n}\n// use the plugin\nbase.use(plugin);\n```\n\n**Inheritance**\n\nEasily inherit Base using `.extend`:\n\n```js\nvar Base = require('base');\n\nfunction MyApp() {\n Base.call(this);\n}\nBase.extend(MyApp);\n\nvar app = new MyApp();\napp.set('a', 'b');\napp.get('a');\n//=> 'b';\n```\n\n**Inherit or instantiate with a namespace**\n\nBy 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:\n\n```js\nvar Base = require('base');\n// get and set values on the `base.cache` object\nvar base = Base.namespace('cache');\n\nvar app = base();\napp.set('foo', 'bar');\nconsole.log(app.cache.foo);\n//=> 'bar'\n```\n\n## API\n\n**Usage**\n\n```js\nvar Base = require('base');\nvar app = new Base();\napp.set('foo', 'bar');\nconsole.log(app.foo);\n//=> 'bar'\n```\n\n### [Base](index.js#L44)\n\nCreate an instance of `Base` with the given `config` and `options`.\n\n**Params**\n\n* `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.\n* `options` **{Object}**: If supplied, this object is used to initialize the `base.options` object.\n\n**Example**\n\n```js\n// initialize with `config` and `options`\nvar app = new Base({isApp: true}, {abc: true});\napp.set('foo', 'bar');\n\n// values defined with the given `config` object will be on the root of the instance\nconsole.log(app.baz); //=> undefined\nconsole.log(app.foo); //=> 'bar'\n// or use `.get`\nconsole.log(app.get('isApp')); //=> true\nconsole.log(app.get('foo')); //=> 'bar'\n\n// values defined with the given `options` object will be on `app.options\nconsole.log(app.options.abc); //=> true\n```\n\n### [.is](index.js#L107)\n\nSet the given `name` on `app._name` and `app.is*` properties. Used for doing lookups in plugins.\n\n**Params**\n\n* `name` **{String}**\n* `returns` **{Boolean}**\n\n**Example**\n\n```js\napp.is('foo');\nconsole.log(app._name);\n//=> 'foo'\nconsole.log(app.isFoo);\n//=> true\napp.is('bar');\nconsole.log(app.isFoo);\n//=> true\nconsole.log(app.isBar);\n//=> true\nconsole.log(app._name);\n//=> 'bar'\n```\n\n### [.isRegistered](index.js#L145)\n\nReturns true if a plugin has already been registered on an instance.\n\nPlugin implementors are encouraged to use this first thing in a plugin\nto prevent the plugin from being called more than once on the same\ninstance.\n\n**Params**\n\n* `name` **{String}**: The plugin name.\n* `register` **{Boolean}**: If the plugin if not already registered, to record it as being registered pass `true` as the second argument.\n* `returns` **{Boolean}**: Returns true if a plugin is already registered.\n\n**Events**\n\n* `emits`: `plugin` Emits the name of the plugin being registered. Useful for unit tests, to ensure plugins are only registered once.\n\n**Example**\n\n```js\nvar base = new Base();\nbase.use(function(app) {\n if (app.isRegistered('myPlugin')) return;\n // do stuff to `app`\n});\n\n// to also record the plugin as being registered\nbase.use(function(app) {\n if (app.isRegistered('myPlugin', true)) return;\n // do stuff to `app`\n});\n```\n\n### [.use](index.js#L175)\n\nDefine a plugin function to be called immediately upon init. Plugins are chainable and expose the following arguments to the plugin function:\n\n* `app`: the current instance of `Base`\n* `base`: the [first ancestor instance](#base) of `Base`\n\n**Params**\n\n* `fn` **{Function}**: plugin function to call\n* `returns` **{Object}**: Returns the item instance for chaining.\n\n**Example**\n\n```js\nvar app = new Base()\n .use(foo)\n .use(bar)\n .use(baz)\n```\n\n### [.define](index.js#L197)\n\nThe `.define` method is used for adding non-enumerable property on the instance. Dot-notation is **not supported** with `define`.\n\n**Params**\n\n* `key` **{String}**: The name of the property to define.\n* `value` **{any}**\n* `returns` **{Object}**: Returns the instance for chaining.\n\n**Example**\n\n```js\n// arbitrary `render` function using lodash `template`\napp.define('render', function(str, locals) {\n return _.template(str)(locals);\n});\n```\n\n### [.mixin](index.js#L222)\n\nMix 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.\n\n**Params**\n\n* `key` **{String}**\n* `val` **{Object|Array}**\n* `returns` **{Object}**: Returns the `base` instance for chaining.\n\n**Example**\n\n```js\napp.mixin('foo', function() {\n // do stuff\n});\n```\n\n### [.base](index.js#L268)\n\nGetter/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.\n\n**Example**\n\n```js\n// create an instance of `Base`, this is our first (\"base\") instance\nvar first = new Base();\nfirst.foo = 'bar'; // arbitrary property, to make it easier to see what's happening later\n\n// create another instance\nvar second = new Base();\n// create a reference to the first instance (`first`)\nsecond.parent = first;\n\n// create another instance\nvar third = new Base();\n// create a reference to the previous instance (`second`)\n// repeat this pattern every time a \"child\" instance is created\nthird.parent = second;\n\n// we can always access the first instance using the `base` property\nconsole.log(first.base.foo);\n//=> 'bar'\nconsole.log(second.base.foo);\n//=> 'bar'\nconsole.log(third.base.foo);\n//=> 'bar'\n// and now you know how to get to third base ;)\n```\n\n### [#use](index.js#L293)\n\nStatic method for adding global plugin functions that will be added to an instance when created.\n\n**Params**\n\n* `fn` **{Function}**: Plugin function to use on each instance.\n* `returns` **{Object}**: Returns the `Base` constructor for chaining\n\n**Example**\n\n```js\nBase.use(function(app) {\n app.foo = 'bar';\n});\nvar app = new Base();\nconsole.log(app.foo);\n//=> 'bar'\n```\n\n### [#extend](index.js#L337)\n\nStatic 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.\n\n**Params**\n\n* `Ctor` **{Function}**: constructor to extend\n* `methods` **{Object}**: Optional prototype properties to mix in.\n* `returns` **{Object}**: Returns the `Base` constructor for chaining\n\n**Example**\n\n```js\nvar extend = cu.extend(Parent);\nParent.extend(Child);\n\n// optional methods\nParent.extend(Child, {\n foo: function() {},\n bar: function() {}\n});\n```\n\n### [#mixin](index.js#L379)\n\nUsed 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)`).\n\n**Params**\n\n* `fn` **{Function}**: Function to call\n* `returns` **{Object}**: Returns the `Base` constructor for chaining\n\n**Example**\n\n```js\nBase.mixin(function(proto) {\n proto.foo = function(msg) {\n return 'foo ' + msg;\n };\n});\n```\n\n### [#mixins](index.js#L401)\n\nStatic method for running global mixin functions against a child constructor. Mixins must be registered before calling this method.\n\n**Params**\n\n* `Child` **{Function}**: Constructor function of a child class\n* `returns` **{Object}**: Returns the `Base` constructor for chaining\n\n**Example**\n\n```js\nBase.extend(Child);\nBase.mixins(Child);\n```\n\n### [#inherit](index.js#L420)\n\nSimilar 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.\n\n**Params**\n\n* `Receiver` **{Function}**: Receiving (child) constructor\n* `Provider` **{Function}**: Providing (parent) constructor\n* `returns` **{Object}**: Returns the `Base` constructor for chaining\n\n**Example**\n\n```js\nBase.inherit(Foo, Bar);\n```\n\n## In the wild\n\nThe following node.js applications were built with `Base`:\n\n* [assemble](https://github.com/assemble/assemble)\n* [verb](https://github.com/verbose/verb)\n* [generate](https://github.com/generate/generate)\n* [scaffold](https://github.com/jonschlinkert/scaffold)\n* [boilerplate](https://github.com/jonschlinkert/boilerplate)\n\n## Test coverage\n\n```\nStatements : 98.91% ( 91/92 )\nBranches : 92.86% ( 26/28 )\nFunctions : 100% ( 17/17 )\nLines : 98.9% ( 90/91 )\n```\n\n## History\n\n### v0.11.2\n\n* fixes https://github.com/micromatch/micromatch/issues/99\n\n### v0.11.0\n\n**Breaking changes**\n\n* Static `.use` and `.run` methods are now non-enumerable\n\n### v0.9.0\n\n**Breaking changes**\n\n* `.is` no longer takes a function, a string must be passed\n* all remaining `.debug` code has been removed\n* `app._namespace` was removed (related to `debug`)\n* `.plugin`, `.use`, and `.define` no longer emit events\n* `.assertPlugin` was removed\n* `.lazy` was removed\n\n## About\n\n### Related projects\n\n* [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.\")\n* [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.\")\n* [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.\")\n* [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.\")\n* [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.\")\n* [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.\")\n* [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.\")\n* [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.\")\n* [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.\")\n* [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!\")\n* [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.\")\n\n### Contributing\n\nPull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).\n\n### Contributors\n\n| **Commits** | **Contributor** | \n| --- | --- | \n| 141 | [jonschlinkert](https://github.com/jonschlinkert) | \n| 30 | [doowb](https://github.com/doowb) | \n| 3 | [charlike](https://github.com/charlike) | \n| 1 | [criticalmash](https://github.com/criticalmash) | \n| 1 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) | \n\n### Building docs\n\n_(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.)_\n\nTo generate the readme, run the following command:\n\n```sh\n$ npm install -g verbose/verb#dev verb-generate-readme && verb\n```\n\n### Running tests\n\nRunning 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:\n\n```sh\n$ npm install && npm test\n```\n\n### Author\n\n**Jon Schlinkert**\n\n* [github/jonschlinkert](https://github.com/jonschlinkert)\n* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)\n\n### License\n\nCopyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).\nReleased under the [MIT License](LICENSE).\n\n***\n\n_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on September 07, 2017._",
"readmeFilename": "README.md",
"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"
}