# gextend

> [![Build Status](https://secure.travis-ci.org/goliatone/gextend.png)](http://travis-ci.org/goliatone/gextend)

Latest version **0.8.0** (published 2020-06-13) · 0 weekly downloads

## Install

```sh
npm install gextend
pnpm add gextend
yarn add gextend
bun add gextend
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.8.0 |
| Published | 2020-06-13 |
| First published | 2014-11-28 |
| Weekly downloads | 0 |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >= 0.10.0 |
| Dependencies | 0 |
| Unpacked size | 254.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Maintainers | goliatone |

## Links

- npm: https://www.npmjs.com/package/gextend
- Repository: https://github.com/goliatone/gextend
- Homepage: https://github.com/goliatone/gextend#readme
- Issues: https://github.com/goliatone/gextend/issues
- npm.io page: https://npm.io/package/gextend

## Recent versions

- 0.8.0 (latest) — 2020-06-13
- 0.7.0 — 2020-06-13
- 0.6.0 — 2019-08-05
- 0.5.0 — 2019-08-05
- 0.4.0 — 2019-08-05
- 0.3.0 — 2016-05-05
- 0.1.6 — 2014-11-28
- 0.1.5 — 2014-11-28

## README

# GExtend

[![Build Status](https://secure.travis-ci.org/goliatone/gextend.png)](http://travis-ci.org/goliatone/gextend)

Simple extend helper module, for Node.js and Browser.

## Getting Started

The functionality is quite simple:

```js
const DEFAULTS = {
    port: 9090,
    url: 'http://localhost'
};

function connect(options){
    let config = extend({}, DEFAULTS, options);
    console.log('Connect to %s:%s', config.url, config.port);
}

connect({
    url: 'http://127.0.0.1'
});
```

A simple pattern that I find myself using often:


```js
class MyClass {
    constructor(config){
        if(config.autoinitialize) this.init(config);
    }

    init(config){
        let attributes = ['logger', 'emitter', 'pubsub'];

        extend.only(attributes);
        extend(this, config);
        
        /**
         * This will prevent polluting the 
         * built in console object.
         */ 
        extend.unshim(this);

        /**
         * We could also collapse `unshim`
         * `only`, and `extend`
         */ 
        // extend.only(attributes).unshim(config)(this, config);
    }
}

MyClass.DEFAULTS = {
    autoinitialize: true,
    logger: extend.shim(console)
};
```

## Development
`npm install && bower install`

If you need to `sudo` the `npm` command, you can try to:

```terminal
sudo chown $(whoami) ~/.npm
sudo chown $(whoami) /usr/local/share/npm/bin
sudo chown -R $(whoami) /usr/local/lib/node_modules
```

If you bump versions, remember to update:
- package.json
- bower.json
- component.json
- etc.


## Bower
>Bower is a package manager for the web. It offers a generic, unopinionated solution to the problem of front-end package management, while exposing the package dependency model via an API that can be consumed by a more opinionated build stack. There are no system wide dependencies, no dependencies are shared between different apps, and the dependency tree is flat.

To register gextend in the [bower](http://bower.io/) [registry](http://sindresorhus.com/bower-components/):
`bower register gextend git://github.com/goliatone/gextend.git`

Then, make sure to tag your module:

`git tag -a v0.1.0 -m "Initial release."`

And push it:

`git push --tags`


## Travis
In order to enable Travis for this specific project, you need to do so on your Travi's [profile](https://travis-ci.org/profile). Look for the entry `goliatone/gextend`, activate, and sync.


## Release History
* 2019-08-04: v0.6.0 `unshim` returns `extend` object so we can chain.
* 2019-08-04: v0.5.0 Add shim/uhshim functions to `extend` object.
* 2019-08-04: v0.4.0 Check for functions, overwrite instead of extending them.

---
_Source: https://npm.io/package/gextend · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
