open-index/open-npm huggingface dataset:
npm package: @ganuz/-descriptor
Description: Descriptor is a group of packages of Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

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

**Descriptor is a group of packages of Ganuz library**

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

## Use
**Module**
```typescript
import {
  isAccessorDescriptor,
  isDataDescriptor,
  isPropertyDescriptor,
  toAccessorDescriptor,
  toDataDescriptor,
  toPropertyDescriptor,
  IPropertyDescriptorOptions
} from '@ganuz/-descriptor';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/-descriptor/bundle.umd.min.js"></script>
```
```typescript
let {
  isAccessorDescriptor,
  isDataDescriptor,
  isPropertyDescriptor,
  toAccessorDescriptor,
  toDataDescriptor,
  toPropertyDescriptor
} = G;
```
### @ganuz/-descriptor/assert
**Module**
```typescript
import {
  assertAccessorDescriptor,
  assertDataDescriptor,
  assertPropertyDescriptor
} from '@ganuz/-descriptor/assert';
```

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

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

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

**Metadata is a group of packages of Ganuz library**

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

## Use
**Module**
```typescript
import {
  defineMetadata,
  defineMetadataWith,
  deleteMetadata,
  getMetadata,
  getMetadataKeys,
  getMetadataOwner,
  getOwnMetadata,
  getOwnMetadataKeys,
  hasMetadata,
  hasOwnMetadata,
  scope
} from '@ganuz/-metadata';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/-metadata/bundle.umd.min.js"></script>
```
```typescript
let {
  defineMetadata,
  defineMetadataWith,
  deleteMetadata,
  getMetadata,
  getMetadataKeys,
  getMetadataOwner,
  getOwnMetadata,
  getOwnMetadataKeys,
  hasMetadata,
  hasOwnMetadata,
  scope
} = G;
```

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

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

**Property is a group of packages of Ganuz library**

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

## Use
**Module**
```typescript
import {
  copyProperties,
  copyProperty,
  defineProperties,
  definePropertiesWith,
  defineProperty,
  definePropertyWith,
  IDefinePropertyWithCallback,
  deleteProperty,
  each,
  eachProperties,
  enumerate,
  extendProperties,
  get,
  getOwnPropertyDescriptor,
  getOwnPropertyDescriptors,
  getPropertyDescriptor,
  has,
  hasOwn,
  isConfigurable,
  isEnumerable,
  isDefinable,
  isWritable,
  ownKeys,
  set
} from '@ganuz/-property';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/-property/bundle.umd.min.js"></script>
```
```typescript
let {
  copyProperties,
  copyProperty,
  defineProperties,
  definePropertiesWith,
  defineProperty,
  definePropertyWith,
  deleteProperty,
  each,
  eachProperties,
  enumerate,
  extendProperties,
  get,
  getOwnPropertyDescriptor,
  getOwnPropertyDescriptors,
  getPropertyDescriptor,
  has,
  hasOwn,
  isConfigurable,
  isEnumerable,
  isDefinable,
  isWritable,
  ownKeys,
  set
} = G;
```
### @ganuz/-property/assert
**Module**
```typescript
import {
  assertConfigurable,
  assertEnumerable,
  assertDefinable,
  assertWritable
} from '@ganuz/-property/assert';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/-property/assert/bundle.umd.min.js"></script>
```
```typescript
let {
  assertConfigurable,
  assertEnumerable,
  assertDefinable,
  assertWritable
} = G;
```
### @ganuz/-property/polyfill
**Module**
```typescript
  import '@ganuz/-property/polyfill';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/-property/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/-proto
Description: Proto is a group of packages of Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

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

**Proto is a group of packages of Ganuz library**

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

## Use
**Module**
```typescript
import {
  appendPrototypeOf,
  clone,
  cloneWith,
  eachPrototypeOf,
  findPrototypeOf,
  getPropertyOwner,
  getPrototypeOf,
  isInstanceOf,
  isPrototypeOf,
  setPrototypeOf
} from '@ganuz/-proto';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/-proto/bundle.umd.min.js"></script>
```
```typescript
let {
  appendPrototypeOf,
  clone,
  cloneWith,
  eachPrototypeOf,
  findPrototypeOf,
  getPropertyOwner,
  getPrototypeOf,
  isInstanceOf,
  isPrototypeOf,
  setPrototypeOf
} = G;
```
### @ganuz/-proto/assert
**Module**
```typescript
import {
  assertInstanceOf,
  assertPrototypeOf
} from '@ganuz/-proto/assert';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/-proto/assert/bundle.umd.min.js"></script>
```
```typescript
let {
  assertInstanceOf,
  assertPrototypeOf
} = G;
```
### @ganuz/-proto/polyfill
**Module**
```typescript
  import '@ganuz/-proto/polyfill';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/-proto/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/-reflect
Description: Reflect is a group of packages of Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

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

**Reflect is a group of packages of Ganuz library**

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

## Use
**Module**
```typescript
import {
  apply,
  construct,
  defineProperty,
  deleteProperty,
  get,
  getOwnPropertyDescriptor,
  getPrototypeOf,
  has,
  isExtensible,
  ownKeys,
  preventExtensions,
  set,
  setPrototypeOf
} from '@ganuz/-reflect';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/-reflect/bundle.umd.min.js"></script>
```
```typescript
let {
  apply,
  construct,
  defineProperty,
  deleteProperty,
  get,
  getOwnPropertyDescriptor,
  getPrototypeOf,
  has,
  isExtensible,
  ownKeys,
  preventExtensions,
  set,
  setPrototypeOf
} = G;
```
### @ganuz/-reflect/assert
**Module**
```typescript
import {
  assertExtensible
} from '@ganuz/-reflect/assert';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/-reflect/assert/bundle.umd.min.js"></script>
```
```typescript
let {
  assertExtensible
} = G;
```
### @ganuz/-reflect/polyfill
**Module**
```typescript
  import '@ganuz/-reflect/polyfill';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/-reflect/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-map
Description: Get Metadata Map is a internal package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

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

**Get Metadata Map is a internal package from Ganuz library**

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

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

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

**Map is a internal package from Ganuz library**

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

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

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

**Weak Map is a internal package from Ganuz library**

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

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

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

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

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

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

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

**Examples**
```typescript
 appendPrototypeOf(null, {}); // throw TypeError
 appendPrototypeOf({}, undefined); // => throw TypeError
 appendPrototypeOf({}, null); // => true
 appendPrototypeOf(class Foo{}, class Some{}); // => true
 appendPrototypeOf(Object.preventExtensions({foo: 'bar'}), null); // => false
 appendPrototypeOf(Object, function(){}); // => false
 appendPrototypeOf(Object.prototype, {}); // => false
 appendPrototypeOf(String.prototype, {}); // => false
 appendPrototypeOf(Object('foo'), {}); // => true
```

*Note: it will append `proto` to `target` on the last proto of prototype chain that is not native.*


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

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

**Apply is package from Ganuz library**

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

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

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

**Examples**
```typescript
 apply(function() {}, null); // throw Error(...);
 apply(class {}, null, []); // throw Error(...);
 apply(() => 'beer', null, {}); // => 'beer'
 apply(Math.abs, null, [-1]); // => 1
 apply(function get(key) { return this[key];}, {foo: 'bar'}, ['foo']); // => 'bar'

 (function(){
     apply(() => console.log(this), null, []); // => Object
 }).call(Object));
```

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

**Browser**
```html
<script src="https://unpkg.com/@ganuz/apply/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/clone
Description: Clone is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

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

**Clone is package from Ganuz library**

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

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

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

**Examples**
```typescript
 let objectDescriptors = {
    numbers: {value: [1, 3, 5], enumerable: true},
    [Symbol.toStringTag]: {get(){ return 'Some'; } , configurable: true},
 };
 let object = Object.create(null, descriptors);
 let cloneObject = clone(object);
 let cloneDescriptors = Object.getOwnPropertyDescriptors(cloneObject);

 object === cloneObject; // => false
 Object.prototype.isPrototypeOf.call(object, cloneObject); // => false
 Object.getPrototypeOf(cloneObject); // => null
 object.numbers ==== cloneObject.numbers; // => true
 objectDescriptors[Symbol.toStringTag].get === cloneDescriptors[Symbol.toStringTag].get; // => true
 isDeepEqual(objectDescriptors, cloneDescriptors); // => true
```
```typescript
 class Some{
     data = {foo: 'bar'};
     method(){}
 }

 let some = new Some();
 let cloneSome = clone(some);

 some === cloneSome; // => false
 getPrototypeOf(cloneSome) === Some.prototype; // => true
 cloneSome.constructor === Some; // => true
 cloneSome instanceof Some; // => true
 some.data === cloneSome.data; // => true
 Object.getOwnPropertyNames(cloneSome); // => ['data'];
```


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

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

**Clone With is package from Ganuz library**

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

## Use
**Module**
```typescript
import {
  default as cloneWith
} from '@ganuz/clone-with';
```

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

**Examples**
```typescript
 cloneWith('foo', v => v); // throw TypeError
 cloneWith({foo: 'bar'}, () => 77); // throw TypeError
 cloneWith({foo: 'bar'}, () => {get: () => 'bar', writable: false}); // throw TypeError
 cloneWith({}, v => v); // => {}
 cloneWith({foo: 'bar'}, v => v); // => {foo: 'bar'}
 cloneWith({foo: 'bar'}, () => undefined); // => {foo: 'bar'}
 cloneWith([0, 1, 2, 3, 4], ({value: n}) => {value: n % 2 === 0 ? n : NaN}); // => [0, NaN, 2, NaN, 4]
 cloneWith({name: 'alice'}, d => ({...d, value: 'bob'})); // => {name: 'bob'}
```
```typescript
  let proto = {data: 'data'};
  let object = {foo: 'bar',  get color(){ return 'blue'; }, id(v){ return v; }, set some(v){}};
  Object.setPrototype(object, proto);

  let cloneObject = clone(object, ({value, get}, property, object) => {
     return {
         value: get ? get.call(object) : value,
         writable: true
     };
  });

  Object.getPrototypeOf(cloneObject) === proto; // => true
  Object.getOwnPropertyDescriptors(cloneObject);
  // => {
  //   color: {value: 'blue', configurable: false, enumerable: false, writable: true},
  //   foo: {value: 'blue', configurable: false, enumerable: false, writable: true},
  //   id: {value(v){ return v; }, configurable: false, enumerable: false, writable: true}
  //   some: {value: undefined, configurable: false, enumerable: false, writable: 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/construct
Description: Construct is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

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

**Construct is package from Ganuz library**

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

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

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

**Examples**
```typescript
 class A{
     public color: string;
     constructor(public a: string){}
 }
 A.prototype.color = 'blue';

 class B{
     public color: string;
     constructor(public b: string){}
 }
 B.prototype.color = 'red';

 construct(v => v, []); // throw TypeError('target...')
 construct(A, void 0, B); // throw TypeError('args...')
 construct(A, [], v => v); // throw TypeError('newTarget...')
 construct(function C(...args){this.args = args;}, [1, 2, 3]); // => A{args: [1, 2, 3]}
 construct(function D(){ return 'foo'; }, [], function E(){}); // => E{}
 construct(function F(){ return Object('foo'); }, [], function G(){}); // => String('foo')
 construct(function H(){ this.h = this instanceof H;}, [], function I(){}); // => I{h: false}
 construct(A, {0: 1, length: '1'}); // => A{color: 'blue', a: 1}
 construct(A, [2], B); // => B{color: 'red', a: 2}

 let logInstanceOf = construct(Function, ['instance, Constructor', 'console.log(instance instanceof Constructor);'], A);
 logInstanceOf.length; // => 2
 logInstanceOf(logInstanceOf, A); // => true
 logInstanceOf(logInstanceOf, Function); // => false
 typeof logInstanceOf === 'function'; // => true

 let b = construct(Array, [5], B);
 b instanceof A; // => true
 b instanceof B; // => true
 b instanceof Array; // => false
 Array.isArray(b); // => true
 String(b); // => '[object Array]';
 b.color; // => 'red'
 b.length; // => 5
 b[9] = 6;
 b.length; // => 10
```

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

**Browser**
```html
<script src="https://unpkg.com/@ganuz/construct/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/copy-properties
Description: Copy Properties is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

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

**Copy Properties is package from Ganuz library**

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

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

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

**Examples**
```typescript
 copyProperties(null, {}); // throw TypeError;
 copyProperties({}, 'foo'); // throw TypeError;
 copyProperties({foo: 'bar', name: 'bob'}, {num: 5, name: 'alice'}); // => {foo: 'bar', name: 'alice', num: 5}
 copyProperties(Object.create(null, {color: {value: 'red'}}), {color: 'blue', num: -1}); // => {color: 'red', num: -1}
 copyProperties({tv: false}, Object.create({foo: 'bar'}, {car: true})); // => {tv: false, car: true}
 copyProperties(Object.freeze({tea: false}), {tea: true}); // => {tea: false}
 copyProperties(Object.seal({coffee: true}), {coffee: false}); // => {coffee: true}
 copyProperties({num: 5, str: undefined}, {num: undefined, str: 'some'}); // => {num: undefined, str: 'some'}
 copyProperties({get color(){ return this._c; }, set color(c) { this._c = c;}},{color: 'red'}); // => {color: 'red'}
 copyProperties({}, {[Symbol.toStringTag]: 'Some'}); // => Some{}
 copyProperties(copyProperties({color: 'blue'}, Object.create(null, {color: {value: 'red'}})), {color: 'pink'}); // => {color: 'red'}
```


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

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

**Copy Property is package from Ganuz library**

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

## Use
**Module**
```typescript
import {
  default as copyProperty
} from '@ganuz/copy-property';
```

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

**Examples**
```typescript
 copyProperty(null, 'foo', {}); // throw TypeError
 copyProperty({}, 'foo', {}); // => false
 copyProperty({}, Symbol.for('foo'), {[Symbol.for('foo')]: 'bar'}); // => true
 copyProperty({}, 'a', ['A'], 1); // => true
 copyProperty({color: 'red'}, 'color', class {static color = 'blue'; }); // => true
 copyProperty(Object.seal({name: 'bob'}), 'name', {color: 'alice'}); // => false
 copyProperty(Object.create({}, {num: {value: -1}}), 'num', {num: 17}); // => false
```
```typescript
 let colorSym = Symbol('color');
 let target = {};
 let source = Object.create({}, {
    color: { set(color){ this[colorSym] = color; }, enumerable: true},
    [colorSym]: {value: 'black', writable: true}
 });

 copyProperty(target, '_color', source, 'color'); // => true
 copyProperty(target, colorSym, source); // => true

 target._color = 'pink';
 source.color = 'blue';

 console.log(source[colorSym]); // => 'blue'

 Object.getOwnPropertyDescriptors(target);
 // => {_color: {
 //      get: undefined, set(color){ this[colorSym] = color; }, enumerable: true, configurable: false
 // }, [colorSym]: {
 //      value: 'pink', writable: true, enumerable: false, configurable: 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/define-metadata
Description: Define Metadata is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

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

**Define Metadata is package from Ganuz library**

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

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

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

**Examples**
```typescript
 defineMetadata('key', 'value', null, 'prop'); // throw TypeError
 defineMetadata('foo', 'bar', {}); // => void
 defineMetadata('key', 'value', class {}, 'prop'); // => void
```
```typescript
 class A{}
 class B extends A{}

 defineMetadata('color', 'red', B);
 defineMetadata(Number, 45, A);
 getMetadata('color', A); // => undefined
 getMetadata('color', B); // => 'red'
 getMetadata(Number, A); // => 45
 getMetadata(Number, B); // => 45

 defineMetadata('color', 'green', A);
 defineMetadata(Number, 0x69, B);
 getMetadata('color', A); // => 'green'
 getMetadata('color', B); // => 'red'
 getMetadata(Number, A); // => 45
 getMetadata(Number, B); // => 105
```

*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/define-metadata-with
Description: Define Metadata With is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

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

**Define Metadata With is package from Ganuz library**

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

## Use
**Module**
```typescript
import {
  default as defineMetadataWith
} from '@ganuz/define-metadata-with';
```

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

**Examples**
```typescript
 defineMetadataWith('key', 'data', () => {}, 'foo', 'prop'); // throw TypeError
 defineMetadataWith('key', 'data', {}, {}, 'prop'); // throw TypeError
 defineMetadataWith('key', 'data', () => {}, {}); // => void
 defineMetadataWith('key', 'data', (o, n) => o || n, {}, 'prop'); // => void
 defineMetadataWith('key', 'data', () => 'some', class {}); // => void
```


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

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

**Define Properties is package from Ganuz library**

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

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

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

**Examples**
```typescript
 defineProperties(null, {}); // throw TypeError
 defineProperties({}, {foo: {value: 'bar'}}); // => {foo: 'bar'}
 defineProperties({}, {[Symbol.toStringTag]: {get: () => 'Some'}}); // => Some{}
 defineProperties(Object.freeze({drink: 'tea'}), {color: {value: 'yellow'}}); // => {drink: 'tea'}
```
```typescript
 let object = {car: false};

 defineProperties(object, {
     color: {value: 'red'},
     foo: {get: () => 'bar', writable: true},
     jeep: {value: true}
 }); // throw TypeError

 console.log(object); // => {car: false}
```
```typescript
 let object = Object.create(null, {
     num: {value: 3, configurable: true},
     color: {value: 'pink', enumerable: true},
     drink: {value: 'tea', writable: true},
     word: {value: 'cool', writable: true},
     name: {value: 'bob', configurable: true, enumerable: true}
 });

 defineProperties(object, {
     num: {value: -1},
     color: {value: 'red'},
     drink: {value: 'coffee', configurable: false},
     word: {value: 'fun', enumerable: true},
    name: {value: 'alice'}
 }) === object; // => true

 getOwnPropertyDescriptors(object);
 // => {
 //    num: {value: -1, configurable: true, enumerable: false, writable: false},
 //    color: {value: 'pink', configurable: false, enumerable: true, writable: false},
 //    drink: {value: 'coffee', configurable: false, enumerable: false, writable: true},
 //    word: {value: 'cool', configurable: false, enumerable: false, writable: true},
 //    name: {value: 'alice', configurable: true, enumerable: true, writable: 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/define-property
Description: Define Property is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

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

**Define Property is package from Ganuz library**

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

## Use
**Module**
```typescript
import {
  default as defineProperty
} from '@ganuz/define-property';
```

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

**Examples**
```typescript
 defineProperty(null, 'foo', {value: 'bar'}); // throw TypeError
 defineProperty({}, 'foo', {value: 'bar', get: () => 'bar'}); // throw TypeError
 defineProperty({}, 'foo', {value: 'bar'}); // => true
 defineProperty(Object.freeze({}), 'foo', {value: 'bar'}); // => false
 defineProperty(Object.freeze({car: true}), 'foo', {car: true, enumerable: true}); // => true
 defineProperty(Object.create(null, {drink: {value: 'tea', writable: true}}), 'drink', {value: 'beer'}); // => true
 defineProperty(Object.create({}, {name: {value: 'bob', writable: true}}), 'name', {value: 'alice', configurable: false}); // => true
 defineProperty(Object.create(null, {color: {value: 'red'}}), 'color', {value: 'blue'}); // => false
 defineProperty(Object.create({}, {foo: {value: 'bar'}}), 'foo', {configurable: false}); // => true
```
```typescript
 let object = {color: 'red', get foo (){ return 'bar'; }};

 defineProperty(object, 'name', {value: 'bob'}); // => true
 defineProperty(object, 'color', {value: 'yellow', writable: false}); // => true
 defineProperty(object, 'foo', {value: 'bar', configurable: false}); // => true

 Object.getOwnPropertyDescriptors(object);
 // => {
 //     color: {value: 'yellow', configurable: true, enumerable: true, writable: false},
 //     foo: {value: 'bar', configurable: false, enumerable: true, writable: false},
 //     name: {value: 'bob', configurable: false, enumerable: false, writable: false}
 // }
```

### @ganuz/define-property/polyfill
**Module**
```typescript
  import '@ganuz/define-property/polyfill';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/define-property/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/delete-metadata
Description: Delete Metadata is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

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

**Delete Metadata is package from Ganuz library**

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

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

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

**Examples**
```typescript
 deleteMetadata('foo', null); // throw TypeError
 deleteMetadata('key', {}, 'prop'); // => false
 class Some { @Metadata('foo', 'bar') prop; }
 deleteMetadata('foo', new Some, 'prop'); // => false
 deleteMetadata('foo', Some.prototype, 'prop'); // => true
```
```typescript
 @Metadata(color: 'red') class A {}
 class B extends A {}
 @Metadata(color: 'green') class C extends B{}

 deleteMetadata('color', B); // => false
 getMetadata('color', B); // => 'red'
 deleteMetadata('color', C); // => true
 getMetadata('color', C); // => 'red'
 deleteMetadata('color', C); // => false
 getMetadata('color', C); // => 'red'
 deleteMetadata('color', A); // => true
 getMetadata('color', C); // => undefined
```

*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/delete-property
Description: Delete Property is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

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

**Delete Property is package from Ganuz library**

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

## Use
**Module**
```typescript
import {
  default as deleteProperty
} from '@ganuz/delete-property';
```

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

**Examples**
```typescript
 deleteProperty(55, 'foo'); // => throw TypeError
 deleteProperty({foo: 'bar'}, 'foo'); // => true
 deleteProperty([0, 1, 2], 0); // => true
 deleteProperty(Object.create(null, {foo: {value: 'bar'}}), 'foo'); // => false
 deleteProperty(Object.seal({foo: 'bar'}), 'foo'); // => false
```

### @ganuz/delete-property/polyfill
**Module**
```typescript
  import '@ganuz/delete-property/polyfill';
```

**Browser**
```html
<script src="https://unpkg.com/@ganuz/delete-property/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/each
Description: Each is package from Ganuz library
Author: Yisrael Eliev
Latest version: 0.1.1

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

**Each is package from Ganuz library**

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

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

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

**Examples**
```typescript
 let target = Object.create({num: 55}, {
     name: {value: 'alice', writable: true},
     foo: {get(){ return 'bar'; },
     [Symbol('color')]: {value: 'red'}
 };

 each(target, (value, key, object) => console.log(`object['${key}'] = ${object[key]};`) === target;
 // => 'object['name'] = 'alice';'
 // => 'object['foo'] = 'bar';'
 // => 'object['Symbol(color)'] = 'red';'
 // => true
```
```typescript
 let array = [6, -1, NaN, 88, 0.5];

 each(array, (value) => value === value && console.log(value)) === array;
 // => 6
 // => -1
 // => true
```


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