open-index/open-npm huggingface dataset:
npm package: @ganuz/each-properties
Description: Each Properties is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

# @ganuz/each-properties
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/ganuz/blob/master/modules/each-properties)
[![Version](https://img.shields.io/npm/v/@ganuz/each-properties.svg)](https://www.npmjs.com/package/@ganuz/each-properties)
[![MIT License](https://img.shields.io/npm/l/@ganuz/each-properties.svg?color=yellow)](https://github.com/yisraelx/ganuz/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@ganuz/each-properties.svg?color=green)](https://bundlephobia.com/result?p=@ganuz/each-properties)
[![TypeScript](https://img.shields.io/badge/100%25-TypeScript-blue.svg)](https://www.typescriptlang.org)

**Each Properties is package from Ganuz library**

## Install
```sh
$ yarn add @ganuz/each-properties
```
Or
```sh
$ npm install --save @ganuz/each-properties
```

## Use
**Module**
```typescript
import {
  default as eachProperties
} from '@ganuz/each-properties';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/each-properties/bundle.umd.min.js"></script>
```
```typescript
let {
  eachProperties
} = G;
```

**Examples**
```typescript
 let target = Object.create({foo: 'bar'}, {
   [Symbol.toStringTag]: {value: 'Some'},
   fn: {value: String, writable: true},
   prop: {get(){}},
 });

 eachProperties(target, (descriptor, property) => console.log(`${property}: ${isDataDescriptor(descriptor)}`) === target;
 // => 'Symbol(Symbol.toStringTag): true'
 // => 'fn: true'
 // => 'prop: false'
 // => true
```
```typescript
 let object = {a: 1, b: 2, c:3};
 eachProperties({a: 1, b: 2, c:3}, ({value}) => value !== 2 && console.log(value)) === object;
 // => 1
 // => true
```


## License
Copyright © [Yisrael Eliev](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/ganuz/blob/master/LICENSE).
npm package: @ganuz/each-prototype-of
Description: Each Prototype Of is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

# @ganuz/each-prototype-of
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/ganuz/blob/master/modules/each-prototype-of)
[![Version](https://img.shields.io/npm/v/@ganuz/each-prototype-of.svg)](https://www.npmjs.com/package/@ganuz/each-prototype-of)
[![MIT License](https://img.shields.io/npm/l/@ganuz/each-prototype-of.svg?color=yellow)](https://github.com/yisraelx/ganuz/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@ganuz/each-prototype-of.svg?color=green)](https://bundlephobia.com/result?p=@ganuz/each-prototype-of)
[![TypeScript](https://img.shields.io/badge/100%25-TypeScript-blue.svg)](https://www.typescriptlang.org)

**Each Prototype Of is package from Ganuz library**

## Install
```sh
$ yarn add @ganuz/each-prototype-of
```
Or
```sh
$ npm install --save @ganuz/each-prototype-of
```

## Use
**Module**
```typescript
import {
  default as eachPrototypeOf
} from '@ganuz/each-prototype-of';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/each-prototype-of/bundle.umd.min.js"></script>
```
```typescript
let {
  eachPrototypeOf
} = G;
```

**Examples**
```typescript
 eachPrototypeOf(null, p => p); // throw TypeError
 eachPrototypeOf({[Symbol.toStringTag]: 'Some'}, p => p); // => Some{}
 eachPrototypeOf(class A{}, p => p); // => class A{}
```
```typescript
 let a = Object.create(null, {name: {value: 'bob'}});
 let b = Object.create(a, {name: {value: 'alice'}});
 let c = Object.create(b, {name: {value: 'john'}});
 let d = Object.create(c, {name: {value: 'alice'}});

 let getProtoByName = (target, name) => (eachPrototypeOf(target, proto => !(proto.name === name && target = proto), target);
 getProtoByName(d, 'alice'); // => d
 getProtoByName(c, 'alice'); // => b
 getProtoByName(a, 'alice'); // => null
 getProtoByName(d, 'leonard'); // => null

 eachPrototypeOf(c, console.log.bind(null, 'proto:'));
 // => 'proto: c'
 // => 'proto: b'
 // => 'proto: a'
 // => c
```


## License
Copyright © [Yisrael Eliev](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/ganuz/blob/master/LICENSE).
npm package: @ganuz/enumerate
Description: Enumerate is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

# @ganuz/enumerate
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/ganuz/blob/master/modules/enumerate)
[![Version](https://img.shields.io/npm/v/@ganuz/enumerate.svg)](https://www.npmjs.com/package/@ganuz/enumerate)
[![MIT License](https://img.shields.io/npm/l/@ganuz/enumerate.svg?color=yellow)](https://github.com/yisraelx/ganuz/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@ganuz/enumerate.svg?color=green)](https://bundlephobia.com/result?p=@ganuz/enumerate)
[![TypeScript](https://img.shields.io/badge/100%25-TypeScript-blue.svg)](https://www.typescriptlang.org)

**Enumerate is package from Ganuz library**

## Install
```sh
$ yarn add @ganuz/enumerate
```
Or
```sh
$ npm install --save @ganuz/enumerate
```

## Use
**Module**
```typescript
import {
  default as enumerate
} from '@ganuz/enumerate';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/enumerate/bundle.umd.min.js"></script>
```
```typescript
let {
  enumerate
} = G;
```

**Examples**
```typescript
 enumerate('foo'); // throw TypeError
 enumerate({foo: 'bar'}); // => ['foo']
 enumerate([1, 2, 3]); // => [0, 1, 2]
 enumerate(Object.create({[Symbol.toStringTag]: 'Some'}, {name: {value: 'moshe', enumerable: true}})); // => ['name', Symbol.toStringTag]
 enumerate(Object.create({get data() {}, drink: 'beer'}, {drink: {value: 'tea'}}}); // => ['data']
 enumerate(Object.create(Object.create({}, {color: {value: 'red'}}), {color: {value: 'blue', enumerable: true}}}); // => ['color']
```


## License
Copyright © [Yisrael Eliev](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/ganuz/blob/master/LICENSE).
npm package: @ganuz/extend-properties
Description: Extend Properties is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

# @ganuz/extend-properties
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/ganuz/blob/master/modules/extend-properties)
[![Version](https://img.shields.io/npm/v/@ganuz/extend-properties.svg)](https://www.npmjs.com/package/@ganuz/extend-properties)
[![MIT License](https://img.shields.io/npm/l/@ganuz/extend-properties.svg?color=yellow)](https://github.com/yisraelx/ganuz/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@ganuz/extend-properties.svg?color=green)](https://bundlephobia.com/result?p=@ganuz/extend-properties)
[![TypeScript](https://img.shields.io/badge/100%25-TypeScript-blue.svg)](https://www.typescriptlang.org)

**Extend Properties is package from Ganuz library**

## Install
```sh
$ yarn add @ganuz/extend-properties
```
Or
```sh
$ npm install --save @ganuz/extend-properties
```

## Use
**Module**
```typescript
import {
  default as extendProperties
} from '@ganuz/extend-properties';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/extend-properties/bundle.umd.min.js"></script>
```
```typescript
let {
  extendProperties
} = G;
```

**Examples**
```typescript
 extendsProperties(null, {}); // throw TypeError
 extendsProperties({}, 'foo'); // throw TypeError
 extendsProperties({color: 'blue', num: 1}, {color: 'red', foo: 'bar'}); // => {color: 'blue', num: 1, foo: 'bar'}
 extendsProperties({foo: 'bar'}, {[Symbol.toStringTag]: 'Tag'}); // => Tag {foo: 'bar'}
 extendsProperties(Object.preventExtensions({name: 'bob'}), {name: 'alice', num: 9}); // => {name: 'bob'}
 extendsProperties({tea: true}, Object.create({foo: 'bar'}, {jeep: {value: false}})); // => {tea: true, jeep: true}
 getOwnPropertyDescriptor(extendsProperties({}, {set some(s){ this._s = s; }}), 'some'); // => {set(s){ this._s = s; }, ...}
```


## License
Copyright © [Yisrael Eliev](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/ganuz/blob/master/LICENSE).
npm package: @ganuz/find-prototype-of
Description: Find Prototype Of is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

# @ganuz/find-prototype-of
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/ganuz/blob/master/modules/find-prototype-of)
[![Version](https://img.shields.io/npm/v/@ganuz/find-prototype-of.svg)](https://www.npmjs.com/package/@ganuz/find-prototype-of)
[![MIT License](https://img.shields.io/npm/l/@ganuz/find-prototype-of.svg?color=yellow)](https://github.com/yisraelx/ganuz/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@ganuz/find-prototype-of.svg?color=green)](https://bundlephobia.com/result?p=@ganuz/find-prototype-of)
[![TypeScript](https://img.shields.io/badge/100%25-TypeScript-blue.svg)](https://www.typescriptlang.org)

**Find Prototype Of is package from Ganuz library**

## Install
```sh
$ yarn add @ganuz/find-prototype-of
```
Or
```sh
$ npm install --save @ganuz/find-prototype-of
```

## Use
**Module**
```typescript
import {
  default as findPrototypeOf
} from '@ganuz/find-prototype-of';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/find-prototype-of/bundle.umd.min.js"></script>
```
```typescript
let {
  findPrototypeOf
} = G;
```

**Examples**
```typescript
 findPrototypeOf(null, proto => proto); // throw TypeError
 findPrototypeOf({}, proto => proto); // => null
 findPrototypeOf({foo: 'bar', [Symbol.toStringTag]: 'Foo'}, proto => proto.foo); // => Foo{foo: 'bar'}
 findPrototypeOf(function (){}, proto => proto.hasOwnProperty('hasOwnProperty')); // => Object.prototype
```
```typescript
 let a = Object.create(null, {color: {value: 'red'}});
 let b = Object.create(a, {color: {value: 'blue'}});
 let c = Object.create(b, {color: {value: 'green'}});

 findPrototypeOf(c, (proto) => proto.color === 'blue') === b; // => true
 findPrototypeOf(c, (proto) => proto.color === 'pink'); // => null
 findPrototypeOf(c, (proto) => console.log(`color: ${proto.color}`));
 // => 'color: green'
 // => 'color: blue'
 // => 'color: red'
 // => null
```


## License
Copyright © [Yisrael Eliev](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/ganuz/blob/master/LICENSE).
npm package: @ganuz/get
Description: Get is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

# @ganuz/get
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/ganuz/blob/master/modules/get)
[![Version](https://img.shields.io/npm/v/@ganuz/get.svg)](https://www.npmjs.com/package/@ganuz/get)
[![MIT License](https://img.shields.io/npm/l/@ganuz/get.svg?color=yellow)](https://github.com/yisraelx/ganuz/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@ganuz/get.svg?color=green)](https://bundlephobia.com/result?p=@ganuz/get)
[![TypeScript](https://img.shields.io/badge/100%25-TypeScript-blue.svg)](https://www.typescriptlang.org)

**Get is package from Ganuz library**

## Install
```sh
$ yarn add @ganuz/get
```
Or
```sh
$ npm install --save @ganuz/get
```

## Use
**Module**
```typescript
import {
  default as get
} from '@ganuz/get';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/get/bundle.umd.min.js"></script>
```
```typescript
let {
  get
} = G;
```

**Examples**
```typescript
 get(undefined, 'foo'); // throw TypeError
 get({foo: 'bar'}, 'foo'); // => 'bar'
 get(['a', 'b', 'c'], 1); // => 'b'
 get({get color(){ return this._c; }, _c: 'red'}, 'color', {_c: 'green'}); // => 'green'
 get({get color(){ return this._c; }, _c: 'red'}, 'color', 55); // => undefined
 get({name: 'bob'}, 'name', {name: 'alice'}); // => 'bob'
 get(Object.create(null), 'constructor'); // => undefined
```

### @ganuz/get/polyfill
**Module**
```typescript
  import '@ganuz/get/polyfill';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/get/polyfill/bundle.umd.min.js"></script>
```

## License
Copyright © [Yisrael Eliev](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/ganuz/blob/master/LICENSE).
npm package: @ganuz/get-metadata
Description: Get Metadata is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

# @ganuz/get-metadata
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/ganuz/blob/master/modules/get-metadata)
[![Version](https://img.shields.io/npm/v/@ganuz/get-metadata.svg)](https://www.npmjs.com/package/@ganuz/get-metadata)
[![MIT License](https://img.shields.io/npm/l/@ganuz/get-metadata.svg?color=yellow)](https://github.com/yisraelx/ganuz/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@ganuz/get-metadata.svg?color=green)](https://bundlephobia.com/result?p=@ganuz/get-metadata)
[![TypeScript](https://img.shields.io/badge/100%25-TypeScript-blue.svg)](https://www.typescriptlang.org)

**Get Metadata is package from Ganuz library**

## Install
```sh
$ yarn add @ganuz/get-metadata
```
Or
```sh
$ npm install --save @ganuz/get-metadata
```

## Use
**Module**
```typescript
import {
  default as getMetadata
} from '@ganuz/get-metadata';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/get-metadata/bundle.umd.min.js"></script>
```
```typescript
let {
  getMetadata
} = G;
```

**Examples**
```typescript
 getMetadata('foo', NaN, 'some'); // throw TypeError
 getMetadata(Symbol('foo'), {}, Symbol('some')); // => undefined
 getMetadata('foo', class {}); // => undefined
```
```typescript
 let some = Object.create(null);
 let other = Object.create(some);

 defineMetadata(Symbol.for('colors'), {red: true}, some);
 defineMetadata(String, 'cool', other, Symbol.for('prop'));

 getMetadata(Symbol.for('colors'), some); // => {red: true}
 getMetadata(String, some, Symbol.for('prop')); // => undefined
 getMetadata(Symbol.for('colors'), other); // => {red: true}
 getMetadata(String, other, Symbol.for('prop')); // => 'cool'

 defineMetadata(String, 'fun', some, Symbol.for('prop'));

 getMetadata(String, some, Symbol.for('prop')); // => 'fun'
 getMetadata(String, other, Symbol.for('prop')); // => 'cool'
```

*Note: It is based on es6 `WeakMap` and `Map` no need for polyfill (built-in library support).*


## License
Copyright © [Yisrael Eliev](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/ganuz/blob/master/LICENSE).
npm package: @ganuz/get-metadata-keys
Description: Get Metadata Keys is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

# @ganuz/get-metadata-keys
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/ganuz/blob/master/modules/get-metadata-keys)
[![Version](https://img.shields.io/npm/v/@ganuz/get-metadata-keys.svg)](https://www.npmjs.com/package/@ganuz/get-metadata-keys)
[![MIT License](https://img.shields.io/npm/l/@ganuz/get-metadata-keys.svg?color=yellow)](https://github.com/yisraelx/ganuz/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@ganuz/get-metadata-keys.svg?color=green)](https://bundlephobia.com/result?p=@ganuz/get-metadata-keys)
[![TypeScript](https://img.shields.io/badge/100%25-TypeScript-blue.svg)](https://www.typescriptlang.org)

**Get Metadata Keys is package from Ganuz library**

## Install
```sh
$ yarn add @ganuz/get-metadata-keys
```
Or
```sh
$ npm install --save @ganuz/get-metadata-keys
```

## Use
**Module**
```typescript
import {
  default as getMetadataKeys
} from '@ganuz/get-metadata-keys';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/get-metadata-keys/bundle.umd.min.js"></script>
```
```typescript
let {
  getMetadataKeys
} = G;
```

**Examples**
```typescript
 getMetadataKeys('foo'); // throw TypeError
 getMetadataKeys({}, Symbol('some')); // => []
 getMetadataKeys(class {}); // => []
```
```typescript
 let a = {};
 let b = Object.setPrototypeOf({}, a);

 defineMetadata('foo', 'bar', a);
 defineMetadata(Function, Object, a);
 defineMetadata(false, 'no', a, 'prop');

 getMetadataKeys(a); => ['foo', Function]
 getMetadataKeys(a, 'prop'); => [false]

 defineMetadata('foo', 'bob', b);
 defineMetadata(Symbol('color'), 'red', b);
 defineMetadata(0, null, b, 'prop');
 defineMetadata(NaN, false, b, 'prop');

 getMetadataKeys(b); => ['foo', Function, Symbol('color')]
 getMetadataKeys(b, 'prop'); => [false, 0, NaN]
```

*Note: It is based on es6 `WeakMap` and `Map` no need for polyfill (built-in library support).*


## License
Copyright © [Yisrael Eliev](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/ganuz/blob/master/LICENSE).
npm package: @ganuz/get-metadata-owner
Description: Get Metadata Owner is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

# @ganuz/get-metadata-owner
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/ganuz/blob/master/modules/get-metadata-owner)
[![Version](https://img.shields.io/npm/v/@ganuz/get-metadata-owner.svg)](https://www.npmjs.com/package/@ganuz/get-metadata-owner)
[![MIT License](https://img.shields.io/npm/l/@ganuz/get-metadata-owner.svg?color=yellow)](https://github.com/yisraelx/ganuz/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@ganuz/get-metadata-owner.svg?color=green)](https://bundlephobia.com/result?p=@ganuz/get-metadata-owner)
[![TypeScript](https://img.shields.io/badge/100%25-TypeScript-blue.svg)](https://www.typescriptlang.org)

**Get Metadata Owner is package from Ganuz library**

## Install
```sh
$ yarn add @ganuz/get-metadata-owner
```
Or
```sh
$ npm install --save @ganuz/get-metadata-owner
```

## Use
**Module**
```typescript
import {
  default as getMetadataOwner
} from '@ganuz/get-metadata-owner';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/get-metadata-owner/bundle.umd.min.js"></script>
```
```typescript
let {
  getMetadataOwner
} = G;
```

**Examples**
```typescript
 getMetadataOwner('foo', NaN, 'prop'); // throw TypeError
 getMetadataOwner('foo', {}); // => null
 getMetadataOwner('foo', class {}, 'prop'); // => null
```
```typescript
 class A {}
 class B extends A {}
 class C extends B {}

 defineMetadata('a', 1, A);
 defineMetadata('b', 2, B);
 defineMetadata('c', 3, C);

 getMetadataOwner('a', C); // => A
 getMetadataOwner('b', A); // => null
 getMetadataOwner('b', B); // => B

 defineMetadata('color', 'red', A);
 defineMetadata('color', 'blue', C);

 getMetadataOwner('color', A); // => A
 getMetadataOwner('color', B); // => A
 getMetadataOwner('color', C); // => C

 defineMetadata('foo', 'bar', B);

 getMetadataOwner('foo', A); // => null
 getMetadataOwner('foo', B); // => B
 getMetadataOwner('foo', C); // => B
```


## License
Copyright © [Yisrael Eliev](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/ganuz/blob/master/LICENSE).
npm package: @ganuz/get-own-metadata
Description: Get Own Metadata is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

# @ganuz/get-own-metadata
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/ganuz/blob/master/modules/get-own-metadata)
[![Version](https://img.shields.io/npm/v/@ganuz/get-own-metadata.svg)](https://www.npmjs.com/package/@ganuz/get-own-metadata)
[![MIT License](https://img.shields.io/npm/l/@ganuz/get-own-metadata.svg?color=yellow)](https://github.com/yisraelx/ganuz/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@ganuz/get-own-metadata.svg?color=green)](https://bundlephobia.com/result?p=@ganuz/get-own-metadata)
[![TypeScript](https://img.shields.io/badge/100%25-TypeScript-blue.svg)](https://www.typescriptlang.org)

**Get Own Metadata is package from Ganuz library**

## Install
```sh
$ yarn add @ganuz/get-own-metadata
```
Or
```sh
$ npm install --save @ganuz/get-own-metadata
```

## Use
**Module**
```typescript
import {
  default as getOwnMetadata
} from '@ganuz/get-own-metadata';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/get-own-metadata/bundle.umd.min.js"></script>
```
```typescript
let {
  getOwnMetadata
} = G;
```

**Examples**
```typescript
 getOwnMetadata('key', null, 'prop'); // throw TypeError
 getOwnMetadata('key', {}); // => undefined
 class Some{ @Metadata('foo', 'bar') static prop: string; }
 getOwnMetadata('foo', Some, 'prop'); // => 'bar'
```
```typescript
 @Metadata('foo', 'bar')
 class A {
     @Metadata('name', 'bob') prop: string;
 }

 @Metadata('num', -97)
 class B extends A {
     @Metadata('name', 'alice') prop: string;
 }

 getOwnMetadata('foo', A); // => 'bar'
 getOwnMetadata('num', A); // => undefined
 getOwnMetadata('name', A.prototype, 'prop'); // => 'bob'

 getOwnMetadata('foo', B); // => undefined
 getOwnMetadata('num', B); // => -97
 getOwnMetadata('name', B.prototype, 'prop'); // => 'alice'
```

*Note: It is based on es6 `WeakMap` and `Map` no need for polyfill (built-in library support).*


## License
Copyright © [Yisrael Eliev](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/ganuz/blob/master/LICENSE).
npm package: @ganuz/get-own-metadata-keys
Description: Get Own Metadata Keys is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

# @ganuz/get-own-metadata-keys
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/ganuz/blob/master/modules/get-own-metadata-keys)
[![Version](https://img.shields.io/npm/v/@ganuz/get-own-metadata-keys.svg)](https://www.npmjs.com/package/@ganuz/get-own-metadata-keys)
[![MIT License](https://img.shields.io/npm/l/@ganuz/get-own-metadata-keys.svg?color=yellow)](https://github.com/yisraelx/ganuz/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@ganuz/get-own-metadata-keys.svg?color=green)](https://bundlephobia.com/result?p=@ganuz/get-own-metadata-keys)
[![TypeScript](https://img.shields.io/badge/100%25-TypeScript-blue.svg)](https://www.typescriptlang.org)

**Get Own Metadata Keys is package from Ganuz library**

## Install
```sh
$ yarn add @ganuz/get-own-metadata-keys
```
Or
```sh
$ npm install --save @ganuz/get-own-metadata-keys
```

## Use
**Module**
```typescript
import {
  default as getOwnMetadataKeys
} from '@ganuz/get-own-metadata-keys';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/get-own-metadata-keys/bundle.umd.min.js"></script>
```
```typescript
let {
  getOwnMetadataKeys
} = G;
```

**Examples**
```typescript
 getOwnMetadataKeys(null); // throw TypeError
 getOwnMetadataKeys({}); // => []
 class C{ @Metadata(Number, 0) prop: string; }
 getOwnMetadataKeys(C.prototype, 'prop'); // => [Number]
```
```typescript
 class Some {}

 class Other extends Some{}

 defineMetadata(Number, 777, Some);
 defineMetadata('foo', 'bar', Some);
 defineMetadata('color', 'blue', Some, 'prop');
 defineMetadata(Object, null, Some, 'prop');
 defineMetadata(String, 'word', Other);
 defineMetadata(Function, Object, Other);
 defineMetadata('color', 'red', Other, 'prop');

 getOwnMetadataKeys(Some); => [Number, 'foo']
 getOwnMetadataKeys(Some, 'prop'); => ['color', Object]
 getOwnMetadataKeys(Other); => [String, Function]
 getOwnMetadataKeys(Other, 'prop'); => ['color']
```

*Note: It is based on es6 `WeakMap` and `Map` no need for polyfill (built-in library support).*


## License
Copyright © [Yisrael Eliev](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/ganuz/blob/master/LICENSE).
npm package: @ganuz/get-own-property-descriptor
Description: Get Own Property Descriptor is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

# @ganuz/get-own-property-descriptor
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/ganuz/blob/master/modules/get-own-property-descriptor)
[![Version](https://img.shields.io/npm/v/@ganuz/get-own-property-descriptor.svg)](https://www.npmjs.com/package/@ganuz/get-own-property-descriptor)
[![MIT License](https://img.shields.io/npm/l/@ganuz/get-own-property-descriptor.svg?color=yellow)](https://github.com/yisraelx/ganuz/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@ganuz/get-own-property-descriptor.svg?color=green)](https://bundlephobia.com/result?p=@ganuz/get-own-property-descriptor)
[![TypeScript](https://img.shields.io/badge/100%25-TypeScript-blue.svg)](https://www.typescriptlang.org)

**Get Own Property Descriptor is package from Ganuz library**

## Install
```sh
$ yarn add @ganuz/get-own-property-descriptor
```
Or
```sh
$ npm install --save @ganuz/get-own-property-descriptor
```

## Use
**Module**
```typescript
import {
  default as getOwnPropertyDescriptor
} from '@ganuz/get-own-property-descriptor';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/get-own-property-descriptor/bundle.umd.min.js"></script>
```
```typescript
let {
  getOwnPropertyDescriptor
} = G;
```

**Examples**
```typescript
 getOwnPropertyDescriptor(null, 'foo'); // throw TypeError
 getOwnPropertyDescriptor('foo', 0); // throw TypeError
 getOwnPropertyDescriptor({foo: 'bar'}, 'foo'); // => PropertyDescriptor{...}
 getOwnPropertyDescriptor({}, 'foo'); // => undefined
 getOwnPropertyDescriptor(Object.create({foo: 'bar'}), 'foo'); // => undefined
```

### @ganuz/get-own-property-descriptor/polyfill
**Module**
```typescript
  import '@ganuz/get-own-property-descriptor/polyfill';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/get-own-property-descriptor/polyfill/bundle.umd.min.js"></script>
```

## License
Copyright © [Yisrael Eliev](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/ganuz/blob/master/LICENSE).
npm package: @ganuz/get-own-property-descriptors
Description: Get Own Property Descriptors is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

# @ganuz/get-own-property-descriptors
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/ganuz/blob/master/modules/get-own-property-descriptors)
[![Version](https://img.shields.io/npm/v/@ganuz/get-own-property-descriptors.svg)](https://www.npmjs.com/package/@ganuz/get-own-property-descriptors)
[![MIT License](https://img.shields.io/npm/l/@ganuz/get-own-property-descriptors.svg?color=yellow)](https://github.com/yisraelx/ganuz/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@ganuz/get-own-property-descriptors.svg?color=green)](https://bundlephobia.com/result?p=@ganuz/get-own-property-descriptors)
[![TypeScript](https://img.shields.io/badge/100%25-TypeScript-blue.svg)](https://www.typescriptlang.org)

**Get Own Property Descriptors is package from Ganuz library**

## Install
```sh
$ yarn add @ganuz/get-own-property-descriptors
```
Or
```sh
$ npm install --save @ganuz/get-own-property-descriptors
```

## Use
**Module**
```typescript
import {
  default as getOwnPropertyDescriptors
} from '@ganuz/get-own-property-descriptors';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/get-own-property-descriptors/bundle.umd.min.js"></script>
```
```typescript
let {
  getOwnPropertyDescriptors
} = G;
```

**Examples**
```typescript
 getOwnPropertyDescriptors(null); // throw TypeError
 getOwnPropertyDescriptors({}); // => {}
 getOwnPropertyDescriptors([1]); // => {0: Descriptor{…}, length: Descriptor{…}}
 getOwnPropertyDescriptors({Symbol('foo'): 'bar', some(){}, get color(){}}); // => {Symbol('foo'): Descriptor{…}, some: Descriptor{…}, color: Descriptor{…}}
 getOwnPropertyDescriptors(Object.create({foo: 'bar'}, {color: {value: 'blue', enumerable: false}})); // => {color: Descriptor{…}}
```


## License
Copyright © [Yisrael Eliev](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/ganuz/blob/master/LICENSE).
npm package: @ganuz/get-property-descriptor
Description: Get Property Descriptor is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

# @ganuz/get-property-descriptor
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/ganuz/blob/master/modules/get-property-descriptor)
[![Version](https://img.shields.io/npm/v/@ganuz/get-property-descriptor.svg)](https://www.npmjs.com/package/@ganuz/get-property-descriptor)
[![MIT License](https://img.shields.io/npm/l/@ganuz/get-property-descriptor.svg?color=yellow)](https://github.com/yisraelx/ganuz/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@ganuz/get-property-descriptor.svg?color=green)](https://bundlephobia.com/result?p=@ganuz/get-property-descriptor)
[![TypeScript](https://img.shields.io/badge/100%25-TypeScript-blue.svg)](https://www.typescriptlang.org)

**Get Property Descriptor is package from Ganuz library**

## Install
```sh
$ yarn add @ganuz/get-property-descriptor
```
Or
```sh
$ npm install --save @ganuz/get-property-descriptor
```

## Use
**Module**
```typescript
import {
  default as getPropertyDescriptor
} from '@ganuz/get-property-descriptor';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/get-property-descriptor/bundle.umd.min.js"></script>
```
```typescript
let {
  getPropertyDescriptor
} = G;
```

**Examples**
```typescript
 getPropertyDescriptor(null ,'prop'); // throw TypeError
 getPropertyDescriptor({foo: 'bar'} ,'foo'); // => {configurable: true, enumerable: true, writable: true, value: 'bar'}
 getPropertyDescriptor(Object.create({foo: 'bar'}) ,'foo'); // => {configurable: true, enumerable: true, writable: true, value: 'bar'}
```
```typescript
 class A { color: string = 'red'; }
 class B extends A {}
 class C extends B { color: string = 'green'; }

 getPropertyDescriptor(A.prototype, 'color'); // => undefined
 getPropertyDescriptor(new A, 'color'); // => {configurable: true, enumerable: true, writable: true, value: 'red'}
 getPropertyDescriptor(new B, 'color'); // => {configurable: true, enumerable: true, writable: true, value: 'red'}
 getPropertyDescriptor(new C, 'color'); // => {configurable: true, enumerable: true, writable: true, value: 'green'
```


## License
Copyright © [Yisrael Eliev](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/ganuz/blob/master/LICENSE).
npm package: @ganuz/get-property-owner
Description: Get Property Owner is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

# @ganuz/get-property-owner
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/ganuz/blob/master/modules/get-property-owner)
[![Version](https://img.shields.io/npm/v/@ganuz/get-property-owner.svg)](https://www.npmjs.com/package/@ganuz/get-property-owner)
[![MIT License](https://img.shields.io/npm/l/@ganuz/get-property-owner.svg?color=yellow)](https://github.com/yisraelx/ganuz/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@ganuz/get-property-owner.svg?color=green)](https://bundlephobia.com/result?p=@ganuz/get-property-owner)
[![TypeScript](https://img.shields.io/badge/100%25-TypeScript-blue.svg)](https://www.typescriptlang.org)

**Get Property Owner is package from Ganuz library**

## Install
```sh
$ yarn add @ganuz/get-property-owner
```
Or
```sh
$ npm install --save @ganuz/get-property-owner
```

## Use
**Module**
```typescript
import {
  default as getPropertyOwner
} from '@ganuz/get-property-owner';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/get-property-owner/bundle.umd.min.js"></script>
```
```typescript
let {
  getPropertyOwner
} = G;
```

**Examples**
```typescript
 getPropertyOwner(null, 'prop'); // throw TypeError
 getPropertyOwner(Object, 'create'); // Object
 getPropertyOwner(async function() {}, 'bind'); // => Function.prototype
 getPropertyOwner({}, 'foo'); // => null
 getPropertyOwner(Object.create(null), 'hasOwnProperty'); // => null
```


## License
Copyright © [Yisrael Eliev](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/ganuz/blob/master/LICENSE).
npm package: @ganuz/get-prototype-of
Description: Get Prototype Of is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

# @ganuz/get-prototype-of
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/ganuz/blob/master/modules/get-prototype-of)
[![Version](https://img.shields.io/npm/v/@ganuz/get-prototype-of.svg)](https://www.npmjs.com/package/@ganuz/get-prototype-of)
[![MIT License](https://img.shields.io/npm/l/@ganuz/get-prototype-of.svg?color=yellow)](https://github.com/yisraelx/ganuz/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@ganuz/get-prototype-of.svg?color=green)](https://bundlephobia.com/result?p=@ganuz/get-prototype-of)
[![TypeScript](https://img.shields.io/badge/100%25-TypeScript-blue.svg)](https://www.typescriptlang.org)

**Get Prototype Of is package from Ganuz library**

## Install
```sh
$ yarn add @ganuz/get-prototype-of
```
Or
```sh
$ npm install --save @ganuz/get-prototype-of
```

## Use
**Module**
```typescript
import {
  default as getPrototypeOf
} from '@ganuz/get-prototype-of';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/get-prototype-of/bundle.umd.min.js"></script>
```
```typescript
let {
  getPrototypeOf
} = G;
```

**Examples**
```typescript
 getPrototypeOf(null); // throw TypeError
 getPrototypeOf(1); // throw TypeError
 getPrototypeOf(Object.create(null)); // => null
 getPrototypeOf(Object.create({foo: 'bar'})); // => Object{foo: 'bar'}
 getPrototypeOf(Object('foo')); // => String.prototype
 getPrototypeOf({}); // => Object.prototype
```

### @ganuz/get-prototype-of/polyfill
**Module**
```typescript
  import '@ganuz/get-prototype-of/polyfill';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/get-prototype-of/polyfill/bundle.umd.min.js"></script>
```

## License
Copyright © [Yisrael Eliev](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/ganuz/blob/master/LICENSE).
npm package: @ganuz/has
Description: Has is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

# @ganuz/has
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/ganuz/blob/master/modules/has)
[![Version](https://img.shields.io/npm/v/@ganuz/has.svg)](https://www.npmjs.com/package/@ganuz/has)
[![MIT License](https://img.shields.io/npm/l/@ganuz/has.svg?color=yellow)](https://github.com/yisraelx/ganuz/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@ganuz/has.svg?color=green)](https://bundlephobia.com/result?p=@ganuz/has)
[![TypeScript](https://img.shields.io/badge/100%25-TypeScript-blue.svg)](https://www.typescriptlang.org)

**Has is package from Ganuz library**

## Install
```sh
$ yarn add @ganuz/has
```
Or
```sh
$ npm install --save @ganuz/has
```

## Use
**Module**
```typescript
import {
  default as has
} from '@ganuz/has';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/has/bundle.umd.min.js"></script>
```
```typescript
let {
  has
} = G;
```

**Examples**
```typescript
 has([1], 0); // => true
 has(null, 'foo'); // throw TypeError
 has(v => v, 'prototype'); // => false
 has('foo', 'toString'); // throw TypeError
 has(1, 'valueOf'); // throw TypeError
 has({color: 'green'}, 'color'); // => true
 has(Object.create({foo: 'bar'}), 'foo'); // => true
```

### @ganuz/has/polyfill
**Module**
```typescript
  import '@ganuz/has/polyfill';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/has/polyfill/bundle.umd.min.js"></script>
```

## License
Copyright © [Yisrael Eliev](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/ganuz/blob/master/LICENSE).
npm package: @ganuz/has-metadata
Description: Has Metadata is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

# @ganuz/has-metadata
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/ganuz/blob/master/modules/has-metadata)
[![Version](https://img.shields.io/npm/v/@ganuz/has-metadata.svg)](https://www.npmjs.com/package/@ganuz/has-metadata)
[![MIT License](https://img.shields.io/npm/l/@ganuz/has-metadata.svg?color=yellow)](https://github.com/yisraelx/ganuz/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@ganuz/has-metadata.svg?color=green)](https://bundlephobia.com/result?p=@ganuz/has-metadata)
[![TypeScript](https://img.shields.io/badge/100%25-TypeScript-blue.svg)](https://www.typescriptlang.org)

**Has Metadata is package from Ganuz library**

## Install
```sh
$ yarn add @ganuz/has-metadata
```
Or
```sh
$ npm install --save @ganuz/has-metadata
```

## Use
**Module**
```typescript
import {
  default as hasMetadata
} from '@ganuz/has-metadata';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/has-metadata/bundle.umd.min.js"></script>
```
```typescript
let {
  hasMetadata
} = G;
```

**Examples**
```typescript
 hasMetadata('foo', null); // throw TypeError
 hasMetadata('foo', {}); // => false
 class C{ @Metadata(String, 'cool') [Symbol.for('some')]: string; }
 hasMetadata(String, C.prototype, Symbol.for('some')); // => true
```
```typescript
 class Some{}
 defineMetadata('foo', 'bar', Some);
 hasMetadata('foo', Some); // => true
 class Other extends Some {}
 hasMetadata('foo', Other); // => true
```

*Note: It is based on es6 `WeakMap` and `Map` no need for polyfill (built-in library support).*


## License
Copyright © [Yisrael Eliev](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/ganuz/blob/master/LICENSE).
npm package: @ganuz/has-own
Description: Has Own is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

# @ganuz/has-own
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/ganuz/blob/master/modules/has-own)
[![Version](https://img.shields.io/npm/v/@ganuz/has-own.svg)](https://www.npmjs.com/package/@ganuz/has-own)
[![MIT License](https://img.shields.io/npm/l/@ganuz/has-own.svg?color=yellow)](https://github.com/yisraelx/ganuz/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@ganuz/has-own.svg?color=green)](https://bundlephobia.com/result?p=@ganuz/has-own)
[![TypeScript](https://img.shields.io/badge/100%25-TypeScript-blue.svg)](https://www.typescriptlang.org)

**Has Own is package from Ganuz library**

## Install
```sh
$ yarn add @ganuz/has-own
```
Or
```sh
$ npm install --save @ganuz/has-own
```

## Use
**Module**
```typescript
import {
  default as hasOwn
} from '@ganuz/has-own';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/has-own/bundle.umd.min.js"></script>
```
```typescript
let {
  hasOwn
} = G;
```

**Examples**
```typescript
 hasOwn(null, 'foo'); // throw TypeError
 hasOwn(undefined, 0); // throw TypeError
 hasOwn('foo', 'toString'); // throw TypeError
 hasOwn([], 'length'); // => true
 hasOwn(Object, 'create'); // => true
 hasOwn({foo: 'bar'}, 'foo'); // => true
 hasOwn(Object.create({foo: 'bar'}), 'foo'); // => false
```


## License
Copyright © [Yisrael Eliev](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/ganuz/blob/master/LICENSE).
npm package: @ganuz/has-own-metadata
Description: Has Own Metadata is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

# @ganuz/has-own-metadata
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/ganuz/blob/master/modules/has-own-metadata)
[![Version](https://img.shields.io/npm/v/@ganuz/has-own-metadata.svg)](https://www.npmjs.com/package/@ganuz/has-own-metadata)
[![MIT License](https://img.shields.io/npm/l/@ganuz/has-own-metadata.svg?color=yellow)](https://github.com/yisraelx/ganuz/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@ganuz/has-own-metadata.svg?color=green)](https://bundlephobia.com/result?p=@ganuz/has-own-metadata)
[![TypeScript](https://img.shields.io/badge/100%25-TypeScript-blue.svg)](https://www.typescriptlang.org)

**Has Own Metadata is package from Ganuz library**

## Install
```sh
$ yarn add @ganuz/has-own-metadata
```
Or
```sh
$ npm install --save @ganuz/has-own-metadata
```

## Use
**Module**
```typescript
import {
  default as hasOwnMetadata
} from '@ganuz/has-own-metadata';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/has-own-metadata/bundle.umd.min.js"></script>
```
```typescript
let {
  hasOwnMetadata
} = G;
```

**Examples**
```typescript
 hasOwnMetadata('key', null, 'prop'); // throw TypeError
 hasOwnMetadata('key', class {}, 'prop'); // => false

 class C{}
 defineMetadata('foo', 'bar', C);
 hasOwnMetadata('foo', C); // => true
```

*Note: It is based on es6 `WeakMap` and `Map` no need for polyfill (built-in library support).*


## License
Copyright © [Yisrael Eliev](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/ganuz/blob/master/LICENSE).
npm package: @ganuz/is-accessor-descriptor
Description: Is Accessor Descriptor is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

# @ganuz/is-accessor-descriptor
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/ganuz/blob/master/modules/is-accessor-descriptor)
[![Version](https://img.shields.io/npm/v/@ganuz/is-accessor-descriptor.svg)](https://www.npmjs.com/package/@ganuz/is-accessor-descriptor)
[![MIT License](https://img.shields.io/npm/l/@ganuz/is-accessor-descriptor.svg?color=yellow)](https://github.com/yisraelx/ganuz/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@ganuz/is-accessor-descriptor.svg?color=green)](https://bundlephobia.com/result?p=@ganuz/is-accessor-descriptor)
[![TypeScript](https://img.shields.io/badge/100%25-TypeScript-blue.svg)](https://www.typescriptlang.org)

**Is Accessor Descriptor is package from Ganuz library**

## Install
```sh
$ yarn add @ganuz/is-accessor-descriptor
```
Or
```sh
$ npm install --save @ganuz/is-accessor-descriptor
```

## Use
**Module**
```typescript
import {
  default as isAccessorDescriptor
} from '@ganuz/is-accessor-descriptor';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/is-accessor-descriptor/bundle.umd.min.js"></script>
```
```typescript
let {
  isAccessorDescriptor
} = G;
```

**Examples**
```typescript
 isAccessorDescriptor(); // => false
 isAccessorDescriptor({}); // => false
 isAccessorDescriptor({color: 'red'}); // => false
 isAccessorDescriptor({get: undefined}); // => true
 isAccessorDescriptor({get: undefined, enumerable: NaN}); // => true
 isAccessorDescriptor({get: []}); // => true
 isAccessorDescriptor({set: 78, value: {}}); // => true
 isAccessorDescriptor({get(){}, writable: true}); // => true
 isAccessorDescriptor({get: undefined, value: 88, writable: true}); // => true
```

*Note: This function does not validate that it is a valid descriptor, it only checks if the properties of data descriptor exist,
 for description validation use {@link isPropertyDescriptor}.*

### @ganuz/is-accessor-descriptor/assert
**Module**
```typescript
import {
  default as assertAccessorDescriptor
} from '@ganuz/is-accessor-descriptor/assert';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/is-accessor-descriptor/assert/bundle.umd.min.js"></script>
```
```typescript
let {
  assertAccessorDescriptor
} = G;
```

**Examples**
```typescript
 assertAccessorDescriptor(null); // throw
 assertAccessorDescriptor('foo'); // throw
 assertAccessorDescriptor({}); // throw
 assertAccessorDescriptor({get: undefined}); // => {get: undefined}
 assertAccessorDescriptor({set(v) {}, value: 35}); // => {set(v) {}, value: 35}
```


## License
Copyright © [Yisrael Eliev](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/ganuz/blob/master/LICENSE).
npm package: @ganuz/is-configurable
Description: Is Configurable is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

# @ganuz/is-configurable
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/ganuz/blob/master/modules/is-configurable)
[![Version](https://img.shields.io/npm/v/@ganuz/is-configurable.svg)](https://www.npmjs.com/package/@ganuz/is-configurable)
[![MIT License](https://img.shields.io/npm/l/@ganuz/is-configurable.svg?color=yellow)](https://github.com/yisraelx/ganuz/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@ganuz/is-configurable.svg?color=green)](https://bundlephobia.com/result?p=@ganuz/is-configurable)
[![TypeScript](https://img.shields.io/badge/100%25-TypeScript-blue.svg)](https://www.typescriptlang.org)

**Is Configurable is package from Ganuz library**

## Install
```sh
$ yarn add @ganuz/is-configurable
```
Or
```sh
$ npm install --save @ganuz/is-configurable
```

## Use
**Module**
```typescript
import {
  default as isConfigurable
} from '@ganuz/is-configurable';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/is-configurable/bundle.umd.min.js"></script>
```
```typescript
let {
  isConfigurable
} = G;
```

**Examples**
```typescript
 isConfigurable(null, 'foo'); // throw TypeError
 isConfigurable({ foo: 'bar'}, 'foo'); // => true
 isConfigurable({}, 'foo'); // => true
 isConfigurable(class { static foo = 'bar'; }, 'foo'); // => true
 isConfigurable(Object.create(Object.create({}, {foo: {value: 'bar'}})), 'foo'); // => true
 isConfigurable(Object.create({}, {foo: {value: 'bar'}}), 'foo'); // => false
 isConfigurable([], 'length'); // => false
 isConfigurable(Object.freeze({foo: 'bar'}), 'foo'); // => false
```

### @ganuz/is-configurable/assert
**Module**
```typescript
import {
  default as assertConfigurable
} from '@ganuz/is-configurable/assert';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/is-configurable/assert/bundle.umd.min.js"></script>
```
```typescript
let {
  assertConfigurable
} = G;
```

**Examples**
```typescript
 assertConfigurable({}, 'foo'); // => {}
 assertConfigurable({foo: 'bar'}, 'foo'); // => {foo: 'bar'}
 assertConfigurable(Object.create({}, {foo: {value: 'bar'}}), 'foo'); // throw TypeError
 assertConfigurable(Object.freeze({foo: 'bar'}), 'foo'); // throw TypeError
```


## License
Copyright © [Yisrael Eliev](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/ganuz/blob/master/LICENSE).