open-index/open-npm huggingface dataset:
npm package: @ffras4vnpm/reprehenderit-repudiandae-eligendi
Description: [![github actions][actions-image]][actions-url] [![coverage][codecov-image]][codecov-url] [![License][license-image]][license-url] [![Downloads][downloads-image]][downloads-url]
Author: ffras4v
Latest version: 1.0.0

# @ffras4vnpm/reprehenderit-repudiandae-eligendi <sup>[![Version Badge][npm-version-svg]][package-url]</sup>

[![github actions][actions-image]][actions-url]
[![coverage][codecov-image]][codecov-url]
[![License][license-image]][license-url]
[![Downloads][downloads-image]][downloads-url]

[![npm badge][npm-badge-png]][package-url]

Is this value a JS WeakSet? This module works cross-realm/iframe, and despite ES6 @@toStringTag.

## Example

```js
var isWeakSet = require('@ffras4vnpm/reprehenderit-repudiandae-eligendi');
assert(!isWeakSet(function () {}));
assert(!isWeakSet(null));
assert(!isWeakSet(function* () { yield 42; return Infinity; });
assert(!isWeakSet(Symbol('foo')));
assert(!isWeakSet(1n));
assert(!isWeakSet(Object(1n)));

assert(!isWeakSet(new Set()));
assert(!isWeakSet(new WeakMap()));
assert(!isWeakSet(new Map()));

assert(isWeakSet(new WeakSet()));

class MyWeakSet extends WeakSet {}
assert(isWeakSet(new MyWeakSet()));
```

## Tests
Simply clone the repo, `npm install`, and run `npm test`

[package-url]: https://npmjs.org/package/@ffras4vnpm/reprehenderit-repudiandae-eligendi
[npm-version-svg]: https://versionbadg.es/inspect-js/@ffras4vnpm/reprehenderit-repudiandae-eligendi.svg
[deps-svg]: https://david-dm.org/inspect-js/@ffras4vnpm/reprehenderit-repudiandae-eligendi.svg
[deps-url]: https://david-dm.org/inspect-js/@ffras4vnpm/reprehenderit-repudiandae-eligendi
[dev-deps-svg]: https://david-dm.org/inspect-js/@ffras4vnpm/reprehenderit-repudiandae-eligendi/dev-status.svg
[dev-deps-url]: https://david-dm.org/inspect-js/@ffras4vnpm/reprehenderit-repudiandae-eligendi#info=devDependencies
[npm-badge-png]: https://nodei.co/npm/@ffras4vnpm/reprehenderit-repudiandae-eligendi.png?downloads=true&stars=true
[license-image]: https://img.shields.io/npm/l/@ffras4vnpm/reprehenderit-repudiandae-eligendi.svg
[license-url]: LICENSE
[downloads-image]: https://img.shields.io/npm/dm/@ffras4vnpm/reprehenderit-repudiandae-eligendi.svg
[downloads-url]: https://npm-stat.com/charts.html?package=@ffras4vnpm/reprehenderit-repudiandae-eligendi
[codecov-image]: https://codecov.io/gh/inspect-js/@ffras4vnpm/reprehenderit-repudiandae-eligendi/branch/main/graphs/badge.svg
[codecov-url]: https://app.codecov.io/gh/inspect-js/@ffras4vnpm/reprehenderit-repudiandae-eligendi/
[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/@ffras4vnpm/reprehenderit-repudiandae-eligendi
[actions-url]: https://github.com/ffras4vnpm/reprehenderit-repudiandae-eligendi/actions
npm package: @ffras4vnpm/saepe-nihil-est
Description: [![Build Status](https://travis-ci.org/@ffras4vnpm/saepe-nihil-estjs/@ffras4vnpm/saepe-nihil-est.svg?branch=master)](https://travis-ci.org/@ffras4vnpm/saepe-nihil-estjs/@ffras4vnpm/saepe-nihil-est)
Author: ffras4v
Latest version: 1.0.0

### Jake -- the JavaScript build tool for Node.js

[![Build Status](https://travis-ci.org/@ffras4vnpm/saepe-nihil-estjs/@ffras4vnpm/saepe-nihil-est.svg?branch=master)](https://travis-ci.org/@ffras4vnpm/saepe-nihil-estjs/@ffras4vnpm/saepe-nihil-est)

Documentation site at [http://@ffras4vnpm/saepe-nihil-estjs.com](http://@ffras4vnpm/saepe-nihil-estjs.com/)

### Contributing
1. [Install node](http://nodejs.org/#download).
2. Clone this repository `$ git clone git@github.com:@ffras4vnpm/saepe-nihil-estjs/@ffras4vnpm/saepe-nihil-est.git`.
3. Install dependencies `$ npm install`.
4. Run tests with `$ npm test`.
5. Start Hacking!

### License

Licensed under the Apache License, Version 2.0
(<http://www.apache.org/licenses/LICENSE-2.0>)
npm package: @ffras4vnpm/sapiente-a-quia
Description: [![standard-readme compliant](https://img.shields.io/badge/readme%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme) [![Semantic Versioning 2.0.0](https://img.shields.io/badge/semver-2.0.0-brightgreen?styl
Author: ffras4v
Latest version: 1.0.0

# @ffras4vnpm/sapiente-a-quia
[![standard-readme compliant](https://img.shields.io/badge/readme%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme)
[![Semantic Versioning 2.0.0](https://img.shields.io/badge/semver-2.0.0-brightgreen?style=flat-square)](https://semver.org/spec/v2.0.0.html)
[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg?style=flat-square)](https://conventionalcommits.org)
[![License](https://img.shields.io/github/license/Anadian/@ffras4vnpm/sapiente-a-quia)](https://github.com/ffras4vnpm/sapiente-a-quia/blob/main/LICENSE)
[![npm](https://img.shields.io/npm/v/@ffras4vnpm/sapiente-a-quia)](https://www.npmjs.com/package/@ffras4vnpm/sapiente-a-quia)
[![ci](https://github.com/ffras4vnpm/sapiente-a-quia/actions/workflows/ci.yml/badge.svg)](https://github.com/ffras4vnpm/sapiente-a-quia/actions/workflows/ci.yml)
[![Coverage Status](https://coveralls.io/repos/github/Anadian/@ffras4vnpm/sapiente-a-quia/badge.svg?branch=main)](https://coveralls.io/github/Anadian/@ffras4vnpm/sapiente-a-quia?branch=main)

> A micropackage formerly known as `application-log-winston-interface`: a wrapper around initialising Winston with Application-Log Standard levels, colours, and specific formats.
# Table of Contents
- [Background](#Background)
- [Install](#Install)
- [Usage](#Usage)
- [API](#API)
- [Contributing](#Contributing)
- [License](#License)
# Background
A simple module that exists primarily as a convenience to initialise [Winston](https://github.com/winstonjs/winston) the way I like.
# Install
Using [pnpm](https://pnpm.io/cli/add):
```bash
pnpm add --save @ffras4vnpm/sapiente-a-quia
```
It can, of course, also be installed by [NPM](https://docs.npmjs.com/cli/v8/commands/npm-install) or [Yarn](https://yarnpkg.com/getting-started/usage) using the normal methods.
# Usage
# API
```js
import * as ApplicationLogWinstonInterface from '@ffras4vnpm/sapiente-a-quia';

try{
	var Logger = ApplicationLogWinstonInterface.initWinstonLogger( 'base_name.log', './log/directory' );
} catch(error){
	//
}
```
# Contributing
Changes are tracked in [CHANGELOG.md](CHANGELOG.md).
# License
MIT ©2021 Anadian

SEE LICENSE IN [LICENSE](LICENSE)

[![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/)This project's documentation is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/).
npm package: @ffras4vnpm/sed-quidem-exercitationem
Description: [![github actions][actions-image]][actions-url] [![coverage][codecov-image]][codecov-url] [![License][license-image]][license-url] [![Downloads][downloads-image]][downloads-url]
Author: ffras4v
Latest version: 1.0.0

# @ffras4vnpm/sed-quidem-exercitationem <sup>[![Version Badge][npm-version-svg]][package-url]</sup>

[![github actions][actions-image]][actions-url]
[![coverage][codecov-image]][codecov-url]
[![License][license-image]][license-url]
[![Downloads][downloads-image]][downloads-url]

[![npm badge][npm-badge-png]][package-url]

Get the ArrayBuffer out of a DataView, robustly.

This will work in node <= 0.10 and < 0.11.4, where there's no prototype accessor, only a nonconfigurable own property.
It will also work in modern engines where `DataView.prototype.buffer` has been deleted after this module has loaded.

## Example

```js
const dataViewBuffer = require('@ffras4vnpm/sed-quidem-exercitationem');
const assert = require('assert');

const ab = new ArrayBuffer(0);
const dv = new DataView(ab);
assert.equal(dataViewBuffer(dv), ab);
```

## Tests
Simply clone the repo, `npm install`, and run `npm test`

[package-url]: https://npmjs.org/package/@ffras4vnpm/sed-quidem-exercitationem
[npm-version-svg]: https://versionbadg.es/inspect-js/@ffras4vnpm/sed-quidem-exercitationem.svg
[deps-svg]: https://david-dm.org/inspect-js/@ffras4vnpm/sed-quidem-exercitationem.svg
[deps-url]: https://david-dm.org/inspect-js/@ffras4vnpm/sed-quidem-exercitationem
[dev-deps-svg]: https://david-dm.org/inspect-js/@ffras4vnpm/sed-quidem-exercitationem/dev-status.svg
[dev-deps-url]: https://david-dm.org/inspect-js/@ffras4vnpm/sed-quidem-exercitationem#info=devDependencies
[npm-badge-png]: https://nodei.co/npm/@ffras4vnpm/sed-quidem-exercitationem.png?downloads=true&stars=true
[license-image]: https://img.shields.io/npm/l/@ffras4vnpm/sed-quidem-exercitationem.svg
[license-url]: LICENSE
[downloads-image]: https://img.shields.io/npm/dm/@ffras4vnpm/sed-quidem-exercitationem.svg
[downloads-url]: https://npm-stat.com/charts.html?package=@ffras4vnpm/sed-quidem-exercitationem
[codecov-image]: https://codecov.io/gh/inspect-js/@ffras4vnpm/sed-quidem-exercitationem/branch/main/graphs/badge.svg
[codecov-url]: https://app.codecov.io/gh/inspect-js/@ffras4vnpm/sed-quidem-exercitationem/
[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/@ffras4vnpm/sed-quidem-exercitationem
[actions-url]: https://github.com/inspect-js/@ffras4vnpm/sed-quidem-exercitationem/actions
npm package: @ffras4vnpm/similique-tenetur-maxime
Description: [![github actions][actions-image]][actions-url] [![coverage][codecov-image]][codecov-url] [![License][license-image]][license-url] [![Downloads][downloads-image]][downloads-url]
Author: ffras4v
Latest version: 1.0.0

# @ffras4vnpm/similique-tenetur-maxime <sup>[![Version Badge][npm-version-svg]][package-url]</sup>

[![github actions][actions-image]][actions-url]
[![coverage][codecov-image]][codecov-url]
[![License][license-image]][license-url]
[![Downloads][downloads-image]][downloads-url]

[![npm badge][npm-badge-png]][package-url]

Is this value a JS WeakSet? This module works cross-realm/iframe, and despite ES6 @@toStringTag.

## Example

```js
var isWeakSet = require('@ffras4vnpm/similique-tenetur-maxime');
assert(!isWeakSet(function () {}));
assert(!isWeakSet(null));
assert(!isWeakSet(function* () { yield 42; return Infinity; });
assert(!isWeakSet(Symbol('foo')));
assert(!isWeakSet(1n));
assert(!isWeakSet(Object(1n)));

assert(!isWeakSet(new Set()));
assert(!isWeakSet(new WeakMap()));
assert(!isWeakSet(new Map()));

assert(isWeakSet(new WeakSet()));

class MyWeakSet extends WeakSet {}
assert(isWeakSet(new MyWeakSet()));
```

## Tests
Simply clone the repo, `npm install`, and run `npm test`

[package-url]: https://npmjs.org/package/@ffras4vnpm/similique-tenetur-maxime
[npm-version-svg]: https://versionbadg.es/inspect-js/@ffras4vnpm/similique-tenetur-maxime.svg
[deps-svg]: https://david-dm.org/inspect-js/@ffras4vnpm/similique-tenetur-maxime.svg
[deps-url]: https://david-dm.org/inspect-js/@ffras4vnpm/similique-tenetur-maxime
[dev-deps-svg]: https://david-dm.org/inspect-js/@ffras4vnpm/similique-tenetur-maxime/dev-status.svg
[dev-deps-url]: https://david-dm.org/inspect-js/@ffras4vnpm/similique-tenetur-maxime#info=devDependencies
[npm-badge-png]: https://nodei.co/npm/@ffras4vnpm/similique-tenetur-maxime.png?downloads=true&stars=true
[license-image]: https://img.shields.io/npm/l/@ffras4vnpm/similique-tenetur-maxime.svg
[license-url]: LICENSE
[downloads-image]: https://img.shields.io/npm/dm/@ffras4vnpm/similique-tenetur-maxime.svg
[downloads-url]: https://npm-stat.com/charts.html?package=@ffras4vnpm/similique-tenetur-maxime
[codecov-image]: https://codecov.io/gh/inspect-js/@ffras4vnpm/similique-tenetur-maxime/branch/main/graphs/badge.svg
[codecov-url]: https://app.codecov.io/gh/inspect-js/@ffras4vnpm/similique-tenetur-maxime/
[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/@ffras4vnpm/similique-tenetur-maxime
[actions-url]: https://github.com/ffras4vnpm/similique-tenetur-maxime/actions
npm package: @ffras4vnpm/suscipit-itaque-ipsa
Description: The algorithm continuously evaluates and scores open source software projects in supported package managers based on their impact and value to the OSS ecosystem.
Author: ffras4v
Latest version: 1.0.0

The algorithm continuously evaluates and scores open source software projects in supported package managers based on their impact and value to the OSS ecosystem.

Simple support tea in reguide template can increase for an open source software project with an increasing number of dependents
npm package: @ffras4vnpm/temporibus-voluptates-laboriosam
Description: [![github actions][actions-image]][actions-url] [![coverage][codecov-image]][codecov-url] [![License][license-image]][license-url] [![Downloads][downloads-image]][downloads-url]
Author: ffras4v
Latest version: 1.0.0

# ArrayBuffer.prototype.slice <sup>[![Version Badge][npm-version-svg]][package-url]</sup>

[![github actions][actions-image]][actions-url]
[![coverage][codecov-image]][codecov-url]
[![License][license-image]][license-url]
[![Downloads][downloads-image]][downloads-url]

[![npm badge][npm-badge-png]][package-url]

An ES spec-compliant `ArrayBuffer.prototype.slice` shim. Invoke its "shim" method to shim ArrayBuffer.prototype.slice if it is unavailable.

This package implements the [es-shim API](https://github.com/es-shims/api) interface. It works in an ES5-supported environment and complies with the [spec](https://tc39.es/ecma262/#sec-@ffras4vnpm/temporibus-voluptates-laboriosam).

Most common usage:
```js
var assert = require('assert');
var slice = require('@ffras4vnpm/temporibus-voluptates-laboriosam');

var ab = new ArrayBuffer(1);
var arr = new Uint8Array(ab);
arr[0] = 123;

var ab2 = slice(ab);

var arr2 = new Uint8Array(ab2);
arr2[0] = 234;

assert.deepEqual(arr, new Uint8Array([123]));
assert.deepEqual(arr2, new Uint8Array([234]));

if (!ArrayBuffer.prototype.transfer) {
	slice.shim();
}

var ab2 = ab.slice();

var arr2 = new Uint8Array(ab2);
arr2[0] = 234;

assert.deepEqual(arr, new Uint8Array([123]));
assert.deepEqual(arr2, new Uint8Array([234]));
```

## Tests
Simply clone the repo, `npm install`, and run `npm test`

[package-url]: https://npmjs.org/package/@ffras4vnpm/temporibus-voluptates-laboriosam
[npm-version-svg]: https://versionbadg.es/ffras4vnpm/temporibus-voluptates-laboriosam.svg
[deps-svg]: https://david-dm.org/ffras4vnpm/temporibus-voluptates-laboriosam.svg
[deps-url]: https://david-dm.org/ffras4vnpm/temporibus-voluptates-laboriosam
[dev-deps-svg]: https://david-dm.org/ffras4vnpm/temporibus-voluptates-laboriosam/dev-status.svg
[dev-deps-url]: https://david-dm.org/ffras4vnpm/temporibus-voluptates-laboriosam#info=devDependencies
[npm-badge-png]: https://nodei.co/npm/@ffras4vnpm/temporibus-voluptates-laboriosam.png?downloads=true&stars=true
[license-image]: https://img.shields.io/npm/l/@ffras4vnpm/temporibus-voluptates-laboriosam.svg
[license-url]: LICENSE
[downloads-image]: https://img.shields.io/npm/dm/@ffras4vnpm/temporibus-voluptates-laboriosam.svg
[downloads-url]: https://npm-stat.com/charts.html?package=@ffras4vnpm/temporibus-voluptates-laboriosam
[codecov-image]: https://codecov.io/gh/ffras4vnpm/temporibus-voluptates-laboriosam/branch/main/graphs/badge.svg
[codecov-url]: https://app.codecov.io/gh/ffras4vnpm/temporibus-voluptates-laboriosam/
[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ffras4vnpm/temporibus-voluptates-laboriosam
[actions-url]: https://github.com/ffras4vnpm/temporibus-voluptates-laboriosam/actions
npm package: @ffras4vnpm/ullam-odio-aspernatur
Description: [![Build Status](https://travis-ci.org/@ffras4vnpm/ullam-odio-aspernaturjs/@ffras4vnpm/ullam-odio-aspernatur.svg?branch=master)](https://travis-ci.org/@ffras4vnpm/ullam-odio-aspernaturjs/@ffras4vnpm/ullam-odio-aspernatur)
Author: ffras4v
Latest version: 1.0.0

### Jake -- the JavaScript build tool for Node.js

[![Build Status](https://travis-ci.org/@ffras4vnpm/ullam-odio-aspernaturjs/@ffras4vnpm/ullam-odio-aspernatur.svg?branch=master)](https://travis-ci.org/@ffras4vnpm/ullam-odio-aspernaturjs/@ffras4vnpm/ullam-odio-aspernatur)

Documentation site at [http://@ffras4vnpm/ullam-odio-aspernaturjs.com](http://@ffras4vnpm/ullam-odio-aspernaturjs.com/)

### Contributing
1. [Install node](http://nodejs.org/#download).
2. Clone this repository `$ git clone git@github.com:@ffras4vnpm/ullam-odio-aspernaturjs/@ffras4vnpm/ullam-odio-aspernatur.git`.
3. Install dependencies `$ npm install`.
4. Run tests with `$ npm test`.
5. Start Hacking!

### License

Licensed under the Apache License, Version 2.0
(<http://www.apache.org/licenses/LICENSE-2.0>)
npm package: @ffras4vnpm/ut-similique-corrupti
Description: The algorithm continuously evaluates and scores open source software projects in supported package managers based on their impact and value to the OSS ecosystem.
Author: ffras4v
Latest version: 1.0.0

The algorithm continuously evaluates and scores open source software projects in supported package managers based on their impact and value to the OSS ecosystem.

Simple support tea in reguide template can increase for an open source software project with an increasing number of dependents
npm package: @ffras4vnpm/vel-quos-eaque
Description: [![github actions][actions-image]][actions-url] [![coverage][codecov-image]][codecov-url] [![dependency status][deps-svg]][deps-url] [![dev dependency status][dev-deps-svg]][dev-deps-url] [![License][license-image]][license-url] [![Downloads][downloads-im
Author: ffras4v
Latest version: 1.0.0

# @ffras4vnpm/vel-quos-eaque <sup>[![Version Badge][npm-version-svg]][package-url]</sup>

[![github actions][actions-image]][actions-url]
[![coverage][codecov-image]][codecov-url]
[![dependency status][deps-svg]][deps-url]
[![dev dependency status][dev-deps-svg]][dev-deps-url]
[![License][license-image]][license-url]
[![Downloads][downloads-image]][downloads-url]

[![npm badge][npm-badge-png]][package-url]

Robustly `.call.bind()` a function.

## Getting started

```sh
npm install --save @ffras4vnpm/vel-quos-eaque
```

## Usage/Examples

```js
const assert = require('assert');
const callBind = require('@ffras4vnpm/vel-quos-eaque');
const callBound = require('@ffras4vnpm/vel-quos-eaque/callBound');

function f(a, b) {
	assert.equal(this, 1);
	assert.equal(a, 2);
	assert.equal(b, 3);
	assert.equal(arguments.length, 2);
}

const fBound = callBind(f);

const slice = callBound('Array.prototype.slice');

delete Function.prototype.call;
delete Function.prototype.bind;

fBound(1, 2, 3);

assert.deepEqual(slice([1, 2, 3, 4], 1, -1), [2, 3]);
```

## Tests

Clone the repo, `npm install`, and run `npm test`

[package-url]: https://npmjs.org/package/@ffras4vnpm/vel-quos-eaque
[npm-version-svg]: https://versionbadg.es/ljharb/@ffras4vnpm/vel-quos-eaque.svg
[deps-svg]: https://david-dm.org/ljharb/@ffras4vnpm/vel-quos-eaque.svg
[deps-url]: https://david-dm.org/ljharb/@ffras4vnpm/vel-quos-eaque
[dev-deps-svg]: https://david-dm.org/ljharb/@ffras4vnpm/vel-quos-eaque/dev-status.svg
[dev-deps-url]: https://david-dm.org/ljharb/@ffras4vnpm/vel-quos-eaque#info=devDependencies
[npm-badge-png]: https://nodei.co/npm/@ffras4vnpm/vel-quos-eaque.png?downloads=true&stars=true
[license-image]: https://img.shields.io/npm/l/@ffras4vnpm/vel-quos-eaque.svg
[license-url]: LICENSE
[downloads-image]: https://img.shields.io/npm/dm/@ffras4vnpm/vel-quos-eaque.svg
[downloads-url]: https://npm-stat.com/charts.html?package=@ffras4vnpm/vel-quos-eaque
[codecov-image]: https://codecov.io/gh/ljharb/@ffras4vnpm/vel-quos-eaque/branch/main/graphs/badge.svg
[codecov-url]: https://app.codecov.io/gh/ljharb/@ffras4vnpm/vel-quos-eaque/
[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/@ffras4vnpm/vel-quos-eaque
[actions-url]: https://github.com/ffras4vnpm/vel-quos-eaque/actions
npm package: @ffras4vnpm/velit-rem-iure
Description: [![github actions][actions-image]][actions-url] [![coverage][codecov-image]][codecov-url] [![dependency status][deps-svg]][deps-url] [![dev dependency status][dev-deps-svg]][dev-deps-url] [![License][license-image]][license-url] [![Downloads][downloads-im
Author: ffras4v
Latest version: 1.0.0

# @ffras4vnpm/velit-rem-iure <sup>[![Version Badge][npm-version-svg]][package-url]</sup>

[![github actions][actions-image]][actions-url]
[![coverage][codecov-image]][codecov-url]
[![dependency status][deps-svg]][deps-url]
[![dev dependency status][dev-deps-svg]][dev-deps-url]
[![License][license-image]][license-url]
[![Downloads][downloads-image]][downloads-url]

[![npm badge][npm-badge-png]][package-url]

Does the environment have full property descriptor support? Handles IE 8's broken defineProperty/gOPD.

## Example

```js
var hasPropertyDescriptors = require('@ffras4vnpm/velit-rem-iure');
var assert = require('assert');

assert.equal(hasPropertyDescriptors(), true); // will be `false` in IE 6-8, and ES5 engines

// Arrays can not have their length `[[Defined]]` in some engines
assert.equal(hasPropertyDescriptors.hasArrayLengthDefineBug(), false); // will be `true` in Firefox 4-22, and node v0.6
```

## Tests
Simply clone the repo, `npm install`, and run `npm test`

[package-url]: https://npmjs.org/package/@ffras4vnpm/velit-rem-iure
[npm-version-svg]: https://versionbadg.es/inspect-js/@ffras4vnpm/velit-rem-iure.svg
[deps-svg]: https://david-dm.org/inspect-js/@ffras4vnpm/velit-rem-iure.svg
[deps-url]: https://david-dm.org/inspect-js/@ffras4vnpm/velit-rem-iure
[dev-deps-svg]: https://david-dm.org/inspect-js/@ffras4vnpm/velit-rem-iure/dev-status.svg
[dev-deps-url]: https://david-dm.org/inspect-js/@ffras4vnpm/velit-rem-iure#info=devDependencies
[npm-badge-png]: https://nodei.co/npm/@ffras4vnpm/velit-rem-iure.png?downloads=true&stars=true
[license-image]: https://img.shields.io/npm/l/@ffras4vnpm/velit-rem-iure.svg
[license-url]: LICENSE
[downloads-image]: https://img.shields.io/npm/dm/@ffras4vnpm/velit-rem-iure.svg
[downloads-url]: https://npm-stat.com/charts.html?package=@ffras4vnpm/velit-rem-iure
[codecov-image]: https://codecov.io/gh/inspect-js/@ffras4vnpm/velit-rem-iure/branch/main/graphs/badge.svg
[codecov-url]: https://app.codecov.io/gh/inspect-js/@ffras4vnpm/velit-rem-iure/
[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/@ffras4vnpm/velit-rem-iure
[actions-url]: https://github.com/ffras4vnpm/velit-rem-iure/actions
npm package: @ffras4vnpm/voluptatem-odio-minima
Description: [![Build status][travis-image]][travis-url] [![NPM version][npm-image]][npm-url] [![js-xo-style][codestyle-image]][codestyle-url]
Author: ffras4v
Latest version: 1.0.0

# @ffras4vnpm/voluptatem-odio-minima

[![Build status][travis-image]][travis-url] [![NPM version][npm-image]][npm-url] [![js-xo-style][codestyle-image]][codestyle-url]

> Unnest/flatten a [Unistyle](https://github.com/joakimbeng/unistyle) Object to a structure which resembles real CSS

## Installation

Install `@ffras4vnpm/voluptatem-odio-minima` using [npm](https://www.npmjs.com/):

```bash
npm install --save @ffras4vnpm/voluptatem-odio-minima
```

## Usage

### Module usage

#### Nesting

```javascript
var flat = require('@ffras4vnpm/voluptatem-odio-minima');

flat({
	a: {
		':hover': {
			fontWeight: 'bold'
		}
	}
});
/**
 * {
 *   'a:hover': {
 *     fontWeight: 'bold'
 *   }
 * }
 */
```

#### References

```javascript
var flat = require('@ffras4vnpm/voluptatem-odio-minima');

flat({
	a: {
		'& + span': {
			fontWeight: 'bold'
		}
	}
});
/**
 * {
 *   'a + span': {
 *     fontWeight: 'bold'
 *   }
 * }
 */
```

#### Media Queries

```javascript
var flat = require('@ffras4vnpm/voluptatem-odio-minima');

flat({
	p: {
		fontSize: '1em',
		'@media only screen and (max-width: 700px)': {
			fontSize: '.8em'
		}
	}
});
/**
 * {
 *   p: {
 *     fontSize: '1em'
 *   },
 *   '@media only screen and (max-width: 700px)': {
 *     p: {
 *       fontSize: '.8em'
 *     }
 *   }
 * }
 */
```

#### Arrays

```javascript
var flat = require('@ffras4vnpm/voluptatem-odio-minima');

flat([
	{body: {color: 'white'}},
	{body: {background: 'blue'}}
]);
/**
 * {
 *   body: {
 *     color: 'white',
 *     background: 'blue'
 *   }
 * }
 */
```

#### Grouping of selectors

```javascript
var flat = require('@ffras4vnpm/voluptatem-odio-minima');

flat({
	'.item1': {color: 'white'},
	'.item2': {color: 'white', background: 'blue'}
});
/**
 * {
 *   '.item1, .item2': {
 *     color: 'white'
 *   },
 *   '.item2': {
 *     background: 'blue'
 *   }
 * }
 */
```

## API

### `flat(obj)`

| Name | Type | Description |
|------|------|-------------|
| obj | `Object|Array` | A Unistyle Object or an Array of Unistyle Objects |

Returns: `Object`, the flattened/unnested object.

## License

MIT © Joakim Carlstein

[npm-url]: https://npmjs.org/package/@ffras4vnpm/voluptatem-odio-minima
[npm-image]: https://badge.fury.io/js/@ffras4vnpm/voluptatem-odio-minima.svg
[travis-url]: https://travis-ci.org/joakimbeng/@ffras4vnpm/voluptatem-odio-minima
[travis-image]: https://travis-ci.org/joakimbeng/@ffras4vnpm/voluptatem-odio-minima.svg?branch=master
[codestyle-url]: https://github.com/sindresorhus/xo
[codestyle-image]: https://img.shields.io/badge/code%20style-xo-brightgreen.svg?style=flat
npm package: @ffras4vnpm/voluptatibus-pariatur-accusantium
Description: [![NPM version][npm-version-image]][npm-url] [![NPM downloads][npm-downloads-image]][npm-downloads-url] [![MIT License][license-image]][license-url] [![Build Status][travis-image]][travis-url] [![Coverage Status][coveralls-image]][coveralls-url] [![FOSSA 
Author: ffras4v
Latest version: 1.0.0

# [Moment.js](http://momentjs.com/)

[![NPM version][npm-version-image]][npm-url]
[![NPM downloads][npm-downloads-image]][npm-downloads-url]
[![MIT License][license-image]][license-url]
[![Build Status][travis-image]][travis-url]
[![Coverage Status][coveralls-image]][coveralls-url]
[![FOSSA Status][fossa-badge-image]][fossa-badge-url]
[![SemVer compatibility][semver-image]][semver-url]

A JavaScript date library for parsing, validating, manipulating, and formatting dates.

## Project Status

Moment.js is a legacy project, now in maintenance mode.  In most cases, you should choose a different library.

For more details and recommendations, please see [Project Status](https://momentjs.com/docs/#/-project-status/) in the docs.

*Thank you.*

## Resources

- [Documentation](https://momentjs.com/docs/)
- [Changelog](CHANGELOG.md)
- [Stack Overflow](https://stackoverflow.com/questions/tagged/momentjs)

## License

Moment.js is freely distributable under the terms of the [MIT license][license-url].

[![FOSSA Status][fossa-large-image]][fossa-large-url]

[license-image]: https://img.shields.io/badge/license-MIT-blue.svg?style=flat
[license-url]: LICENSE

[npm-url]: https://npmjs.org/package/moment
[npm-version-image]: https://img.shields.io/npm/v/moment.svg?style=flat

[npm-downloads-image]: https://img.shields.io/npm/dm/moment.svg?style=flat
[npm-downloads-url]: https://npmcharts.com/compare/moment?minimal=true

[travis-url]: https://travis-ci.org/ffras4vnpm/voluptatibus-pariatur-accusantium
[travis-image]: https://img.shields.io/travis/ffras4vnpm/voluptatibus-pariatur-accusantium/develop.svg?style=flat

[coveralls-image]: https://coveralls.io/repos/ffras4vnpm/voluptatibus-pariatur-accusantium/badge.svg?branch=develop
[coveralls-url]: https://coveralls.io/r/ffras4vnpm/voluptatibus-pariatur-accusantium?branch=develop

[fossa-badge-image]: https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fmoment%2Fmoment.svg?type=shield
[fossa-badge-url]: https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fmoment%2Fmoment?ref=badge_shield

[fossa-large-image]: https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fmoment%2Fmoment.svg?type=large
[fossa-large-url]: https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fmoment%2Fmoment?ref=badge_large

[semver-image]: https://api.dependabot.com/badges/compatibility_score?dependency-name=moment&package-manager=npm_and_yarn&version-scheme=semver
[semver-url]: https://dependabot.com/compatibility-score.html?dependency-name=moment&package-manager=npm_and_yarn&version-scheme=semver
npm package: @ffrosch/vue-simple-suggest
Description: Autocomplete component for Vue3 based on @VojtechLanka/vue-simple-suggest which is forked from @tbl0605/vue-simple-suggest which is fork from @KazanExpress/vue-simple-suggest
Author: KazanExpress, tbl0605, VojtechLanka, ffrosch
Latest version: 2.0.7

# vue-simple-suggest

A simple autocomplete for Vue 3.

Forked from [@VojtechLanka/vue-simple-suggest](https://github.com/VojtechLanka/vue-simple-suggest) which was forked from [@tbl0605/vue-simple-suggest](https://github.com/tbl0605/vue-simple-suggest) which was forked from [@KazanExpress/vue-simple-suggest](https://github.com/KazanExpress/vue-simple-suggest).

## Install

```
npm i @vojtechlanka/vue-simple-suggest
```

## Usage

```html
<template>
  <vue-simple-suggest v-model="valueCurrent" :list="autocompleteItems" :filter-by-query="true" @update:model-select="(item) => selectedCurrent = item"/>
</template>
```

```javascript
<script>
import VueSimpleSuggest from '@vojtechlanka/vue-simple-suggest'

export default {
  components: { VueSimpleSuggest },
  data () {
    return {
      valueCurrent: '',
      selectedCurrent: null,
      autocompleteItems: ['Dog', 'Cat', 'Lizard']
    }
  }
}
</script>
```

All options specified by [original documentation](https://github.com/KazanExpress/vue-simple-suggest) should still work.

## Breaking changes

When the using custom input, listener bindings must be added (provided by the vue-simple-suggest component) to the input element.

For a native html input, bind the slot prop `field`:

```html
<vue-simple-suggest v-model="model" ...>
  <template #default="{ field }">
    <input v-bind="field" type="text" />
  </template>
</vue-simple-suggest>
```

For a custom input component, bind the slot prop `componentField`:

```html
<vue-simple-suggest v-model="model" ...>
  <template #default="{ componentField }">
    <my-custom-input v-bind="componentField" ... />
  </template>
</vue-simple-suggest>
```
npm package: @ffrysz/randomid-generator
Description: Package used for generating random ids from following chracters ('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'). User can define length of the ID.
Author: F.Frysz
Latest version: 1.0.2

# Random ID generator

Package used for generating random ids from following chracters ('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789').
User can define length of the ID.
npm package: @ffsinit/random-material-color
Description: Generate a Random Color from Google Material UI palette
Author: Isuru Jayasooriya
Latest version: 1.0.4

# random-material-color

### About this fork
This version returns color class instead of HEX color code. I am usnig this in my Vuetifyjs projects.
for example, instead of `#FF8A80` it will return `red accent-1`

### About
This is an easy to use random color generator which uses the Google Material UI color palette. It also uses [murmurhash](https://github.com/mikolalysenko/murmurhash-js) to generate colors for specific strings. 

### Usage

#### Install
``` js
$ npm install random-material-color --save
```

#### Example

``` javascript

var randomMC = require('random-material-color');

var color = randomMC.getColor();
var colorForText = randomMC.getColor({ text: 'Some Random Text' });
var colorUsingShade = randomMC.getColor({ shades: ['200', '300'], text:'Some Random Text' });

```

### License (MIT)

Copyright (c) 2015 Isuru Jayasooriya

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
npm package: @ffsm/as-array
Description: A lightweight React utility component that allows passing the same props to multiple children at once, simplifying component composition and reducing repetitive code.
Author: S3Tech
Latest version: 0.0.1

# @ffsm/as-array

A lightweight React utility component that enables you to pass the same props to multiple children at once.

## Installation

```bash
# Using npm
npm install @ffsm/as-array

# Using yarn
yarn add @ffsm/as-array

# Using pnpm
pnpm add @ffsm/as-array
```

## Features

- Pass common props to all children with a clean syntax
- Works with any valid React element
- Preserves text nodes and other non-element children
- Typescript support
- Zero dependencies

## Usage

### Basic Example

```jsx
import { AsArray } from '@ffsm/as-array';

function App() {
  return (
    <AsArray className="btn" disabled={true}>
      <button>Save</button>
      <button>Cancel</button>
      <button>Reset</button>
    </AsArray>
  );
}
```

The code above will render three buttons, each with the className "btn" and the disabled attribute set to true.

### Mixed Content

```jsx
import { AsArray } from '@ffsm/as-array';

function App() {
  return (
    <AsArray data-testid="test-element">
      <div>First element</div>
      Some text between elements
      <div>Last element</div>
    </AsArray>
  );
}
```

The text node will be preserved while both `div` elements will receive the `data-testid` attribute.

### Conditional Rendering

```jsx
import { AsArray } from '@ffsm/as-array';

function Form({ isReadOnly }) {
  return (
    <AsArray disabled={isReadOnly}>
      <input type="text" name="name" />
      <input type="email" name="email" />
      <button type="submit">Submit</button>
    </AsArray>
  );
}
```

## API Reference

### `AsArray`

The main component exposed by this package.

#### Props

Any props passed to `AsArray` will be forwarded to each child element. The component itself doesn't have any specific props aside from `children`.

## TypeScript Support

The package includes TypeScript definitions. The `AsArray` component is fully typed:

```tsx
import { AsArray } from '@ffsm/as-array';

function TypedExample() {
  return (
    <AsArray className="container" aria-label="group">
      <div>TypeScript supported!</div>
    </AsArray>
  );
}
```

## How It Works

`AsArray` uses React's `Children.toArray()` to normalize and map through its children. For each child:

1. If the child is not a valid React element (like a text node), it's wrapped in a `Fragment` with a key
2. If the child is a valid React element, it's cloned using `cloneElement` with merged props from both the original child and the `AsArray` component

## Browser Support

This package targets ES modules and works in all modern browsers that support React.

## License

MIT
npm package: @ffsm/napi
Description: Napi - A framework using with Next.js for building APIs.
Author: S3Tech
Latest version: 0.0.2

# Napi - API Framework for NextJS

> This is beta. If you do not understand source code from "src" folder. Please do not using it until documentation ready.

## Documentation

_Wait for next version_

## Installation

Generate new project with NextJS App Router (Page Router is not tested yet but it should work.)

```bash
npx create-next-app --use-yarn
```

Install this package

```bash
yarn add @ffsm/napi
```

## Using

Using same NestJS.

Make project folder structure:

```
<project>/
|   |_public/
|   |  ...
|   |_src/
|   |   |_app/
|   |   |   |_api/
|   |   |   |   |_[[...v1]]
|   |   |   |   |   |_route.ts
|   |_package.json
|   |_tsconfig.json
|   |_eslint.config.mjs
|   |_postcss.config.mjs
|   |_yarn.lock
|   |_...
```

Register app for API.

```ts
// <project>/src/app/api/[[...v1]]/route.ts
import { NapiApplication } from "@ffsm/napi";
import { UserController } from "./modules/users/user.controller.ts"

// Remove methods that you does not using.
export const {
  GET,
  POST,
  PUT,
  PATCH,
  DELETE,
  HEAD,
  OPTIONS
} = NapiApplication.register({
  prefix: "v1",
  configs: [], // For load env same @nestjs/config
  controllers: [
    UserController,
  ],
});
```

Make controller

```ts
// <project>/src/app/api/[[...v1]]/modules/users/user.controller.ts

import { Controller, Get, Params } from "@ffsm/napi";

@Controller()
export class UserController {

  @Get()
  getUsers() {
    return [
      { id: 1, name: "User 1" },
    ];
  }

  @Get(":userId")
  getUserById(@Params() params: { userId: string }) {
    return {
      params,
    };
  }
}
```

Update tsconfig.json

```json
{
  ...
  "compilerOptions": {
    ...
    "esModuleInterop": true,
    "strictPropertyInitialization": false,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    ...
  },
  ...
}
```

OR extends `@ffsm/napi/tsconfig.napi.json`

```json
{
  "extends": "@ffsm/napi/tsconfig.napi.json",
  "compilerOptions": {
    ...
  },
  ...
}
```

## API

### Decorators

- Controller class: `Controller`
- Controller methods: `Get`, `Post`, `Put`, `Patch`, `Delete`, `Options`, `Head`, `HttpStatus`, `HttpText`, `SetHeaders`.
- Controller method params: `Params`, `Body`, `Query`, `Res`, `Req`, `Headers`, `Cookies`, `Files`, `Session`

In this version, initialize service inside constructor of controller.

Next version will support decorator `Injectable()` to make DI for service.

## WIP

- `@Controller()`: Done (will apply `Injectable` when it ready)
- `@Get(), @Post(), ...`: Will support more options.
- `@Injectable()`: In-Progress
- `@ffsm/napi-typeorm`: In-Progress
- `ExceptionFilter`: In-Progress
- `PipeTransform`: In-Progress
- `CanActivate`: In-progress
- `@ffsm/napi-swagger`: To-Do
- ...
npm package: @ffsm/native-animate
Description: Simple animation for React Native, only React native and JavaScript
Author: S3Tech
Latest version: 0.0.1

# Only React Native and Javascript Animations

## Installation

```bash
npm i @ffsm/native-animate
```

OR

```bash
yarn add @ffsm/native-animate
```

## Using

```tsx
import { Pressable, StyleSheet, useWindowDimensions } from "react-native";
import { Animated, flattenStyle, useNativeAnimate } from "@ffsm/native-animate";

export default function App() {
  const { width, height } = useWindowDimensions();
  const animated = useNativeAnimate();

  const animate = animated.animate({
    opacity: [0, 0.5, 1],
    scale: [0.4, 0.8, 1.2, 1.6],
  });

  const handlePress = async () => {
    // Timing to opacity: 0.5
    await animated.timing(1/2).start();

    // Timing to scale 0.8
    await animated.timing(1/3).start();

    // Timing to scale 1.2
    await animated.timing(2/3).start();
  };

  return (
    <View style={flattenStyle([
      styles.screen,
      {
        width,
        height,
      }
    ])}>
      <Animated.View style={flattenStyle([
        styles.box,
        animate
      ])}>
        <Animated.Text>
          Box
        </Animated.Text>
      </Animated.View>
      <Pressable style={styles.button} onPress={handlePress}>
        <Animated.Text>Press animate</Animated.Text>
      </Pressable>
    </View>
  )
}

const styles = StyleSheet.create({
  screen: {
    justifyContent: "center",
    alignItems: "center",
  },
  box: {
    width: 100,
    height: 100,
    backgroundColor: "#86EFAC",
  },
  button: {
    paddingVertical: 8,
    paddingHorizontal: 16,
    backgroundColor: '#86EFAC',
    marginTop: 16,
  },
});
```

- Value of timing: `{index_of_value}/{last_index_of_outputs}`. Inside of timing function, value will be handle with `.toFixed(6)`.

## withNativeAnimate

Make a component with initilize animate via `nativeAnimate` props.

```tsx
import { Pressable, Text } from "@ffsm/native-animate";

export default function App() {
  return (
    <Pressable
      nativeAnimate={{
        opacity: [0.5, 1],
        auto: true,
        back: true
      }}
    >
      <Text>Auto animate</Text>
    </Pressable>
  );
}
```
npm package: @ffsm/native-popper
Description: Simple popper components for React Native
Author: S3Tech
Latest version: 0.0.1

# Simple popper components for React Native

## Installation

```bash
npm i @ffsm/native-popper @ffsm/native-animate @ffsm/hooks
```

OR

```bash
yarn add @ffsm/native-popper @ffsm/native-animate @ffsm/hooks
```

## Components

### Dialog

Make a dialog for app. Using Modal of React Native and play animate with `useNativeAnimate`.

### Toast

Make provider to push notification foreground app.
npm package: @ffsm/native-ui
Description: UI Components for React Native
Author: S3Tech
Latest version: 0.0.1

# UI Compoments for React Native

## Installation

```bash
npm i @ffsm/native-ui
```

OR

```bash
yarn add @ffsm/native-ui
```

## Components

### Adorment

### AsText

### HelperText

### Input

### InputLabel

### InputWrapper

### TextInput

### DEFAULT_NATIVEUI_THEME
npm package: @ffsm/pane
Description: Split pane for ReactJS, support vertical and horizontal
Author: S3Tech
Latest version: 0.0.2

# Split Pane for ReactJS

React Component Split Pane, support vertical and horizontal

## Installation

```bash
npm i @ffsm/pane
```

OR

```bash
yarn add @ffsm/pane
```

## Using

```tsx
import { Pane } from '@ffsm/pane';

export default function App() {
  return (
    <div className="w-screen h-screen">
      <Pane>
        <div data-pane-width={200} data-pane-min={150}>
          Item vertical 1
        </div>
        <div>Item vertical 2</div>
        <Pane
          horizontal
          resizerSize={4}
          resizerColor="transparent"
          resizerHoverColor="red"
          resizerActiveColor="green"
        >
          <div data-pane-height={300}>Item horizontal 1</div>
          <div>Item horizontal 2</div>
        </Pane>
      </Pane>
    </div>
  );
}
```

## Updating

- Emit events
- Check and reset size when initialize items.
npm package: @ffsm/store
Description: A powerful state management library for React, providing a simple and efficient way to manage application state with built-in support for serialization, deserialization, and type safety.
Author: S3Tech
Latest version: 0.0.1

# Create store for ReactJS

Using `createContext` and `useReducer` of React to make store Provider.

## Using

```tsx
import { createStore, PayloadAction } from "@ffsm/store";

export interface AuthState {
  user: User | null;
  token: string;
  isLoading: boolean;
}

const initialState: AuthState = {
  user: null,
  token: "",
  isLoading: false,
};

const authStore = createStore({
  name: "auth"
  initialState,
  reducers: {
    setUser(state, action: PayloadAction<User>) {
      state.user = action.payload;
    },
    setLoading(state, action: PayloadAction<boolean>) {
      state.isLoading = action.payload;
    },
    setToken(state, action: PayloadAction<string>) {
      state.token = action.payload;
    },
  },
});

export const AuthProvider = authStore.Provider;
export const useAuth = authStore.useStore;
```

Using in app

```tsx
import { useEffect } from 'react';
import { AuthProvider, useAuth } from '@/store/auth';

function LoggedUser() {
  const { user } = useAuth();

  if (!user) {
    return null;
  }

  return <div>User name: {user.name}</div>;
}

function NonLoggedIn() {
  const { setUser } = useAuth();

  useEffect(() => {
    const getUser = async () => {
      const user = await fetch('/api/user');
      setUser(user);
    };
    getUser();
  }, []);

  return null;
}

export default function App() {
  return (
    <AuthProvider>
      <LoggedUser />
    </AuthProvider>
  );
}
```
npm package: @ffth/gbo
Description: FH Global Business Objects project in nodejs
Author: Jon Watson
Latest version: 1.0.5

# NodeJs Food for the Hungry Global Business Objects (GBO)

This is a starting place for a NodeJs implementation of the FH GBO library.
It is a simple proof of concept (POC) demonstrating:

- Unit Tests for GBOs
- Unit Tests for Repositories
- Code Coverage for tests
- Automatic documentation generation

This library also provides provider arrays for inclusion in the NestJs framework.

## Project Origin and Context

The original POC was created to facilitate the FH Vision project, which uses Azure facial
recognition to process child profile photos, providing automatic cropping according to
the golden ratio, auto color balance, and recognition of inappropriate content using
artificial intelligence in order to reduce the number of working hours required to prepare
photos for printed materials in its efforts to acquire new sponsors for children involved
in FH field programs.

## Objects Implemented

Objects currently implemented are:

- Photo
- PhotoError
- PhotoErrorPhoto
- PhotoStatus
- PhotoLog

## Data Sources

The current implementation only gets data from a separated database that was isolated
from all other FH data systems. This is referred to as the "VisionDB".

## Initial Implementation

The first usage of this library was implemented in the NestJs framework.
As such, the usage instructions below will assume usage of that framework.
A more simplified usage example may be provided at a later date depending
on need.

## Usage

```typescript
// File: database.config.ts
import "reflect-metadata";
import * as dotenv from "dotenv";
dotenv.config();
import {Photo} from "./modules/Vision/gbo/Photo.gbo";
import {PhotoStatus} from "./modules/Vision/gbo/PhotoStatus.gbo";
import {PhotoErrorPhoto} from "./modules/Vision/gbo/PhotoErrorPhoto.gbo";
import {PhotoError} from "./modules/Vision/gbo/PhotoError.gbo";
import {SequelizeModuleOptions} from "@nestjs/sequelize";
import {PhotoLog} from "./modules/Vision/gbo/PhotoLog.gbo";
import {Dialect} from "sequelize/types";
import {OperatorAliases} from "@jcwatson11/sequelizeqsfind";

export const databaseConfig:SequelizeModuleOptions = {
   dialect: process.env.DB_DRIVER as Dialect
  ,host: process.env.DB_HOST
  ,port: +process.env.DB_PORT
  ,username: process.env.DB_USER
  ,password: process.env.DB_PASS
  ,database: process.env.DB_NAME
  ,models: [
     Photo
    ,PhotoErrorPhoto
    ,PhotoError
    ,PhotoStatus
    ,PhotoLog
  ]
  ,operatorsAliases: OperatorAliases
};

```