# qc-util

> The utility module of the QC ecosystem.

Latest version **0.2.0** (published 2016-09-27) · MIT license · 0 weekly downloads

## Install

```sh
npm install qc-util
pnpm add qc-util
yarn add qc-util
bun add qc-util
```

## Health

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

Positive: no vulnerabilities.

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

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.0 |
| Published | 2016-09-27 |
| First published | 2016-05-24 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1 |
| Author | Danny Hurlburt |
| Maintainers | dhurlburtusa |
| Keywords | printf, toBool, toDate, toInt, toNum, toStr, typeOf, qc |

## Links

- npm: https://www.npmjs.com/package/qc-util
- Repository: https://github.com/dhurlburtusa/qc-util
- Homepage: https://github.com/dhurlburtusa/qc-util#readme
- Issues: https://github.com/dhurlburtusa/qc-util/issues
- npm.io page: https://npm.io/package/qc-util

## Recent versions

- 0.2.0 (latest) — 2016-09-27
- 0.1.1 — 2016-09-24
- 0.1.0 — 2016-09-10
- 0.0.0 — 2016-07-23
- 0.0.0-alpha — 2016-05-24

## README

# qc-util

The utility module of the QC ecosystem.  This module is intended to be isomorphic.  That is, it is designed
to run on node or in a modern browser.

[![Build Status](https://travis-ci.org/dhurlburtusa/qc-util.svg?branch=master)](https://travis-ci.org/dhurlburtusa/qc-util)

## Install

```bash
npm install qc-util
```

To avoid potential issues, update `npm` before installing:

```bash
npm install npm -g
```


## Node Usage

```js
import { Arr, Bool, Dte, Mth, Num, Obj, Str, typeOf } from 'qc-util';

Arr.wrap('item'); // ['item'].
Bool.toBool('no'); // `Boolean('no')` returns `true` instead of `false`.
Dte.toDate('7/12/2016', { formats: 'm/d/Y' }); // => new Date(2016, 6, 12).
Num.toInt('1e4'); // `parseInt('1e4')` returns `1` instead of `10000`.
Num.toInt('Infinity'); // `parseInt('Infinity')` returns `NaN` instead of `null`.
Str.toStr(null); // `'' + null` returns `'null'` instead of `null`.

Mth.round(1234.5678, -2); // `1234.57`

var obj = {};
Obj.put(obj, 'name.first', 'foo');
// obj now is: `{ name: { first: 'foo' } }`
Obj.put(obj, 'name.last', 'bar');
// obj now is: `{ name: { first: 'foo', last: 'bar' } }`
```


## `null` is Legitimate

In the QC ecosystem, `null` is considered a legitimate value.  This aligns with how `null` is treated in JSON which
is important because JavaScript objects/arrays are serialized to and from JSON.

As demonstrated in the below example, `null` is legitimate in JSON.  However, `undefined` is not.  A property assigned
the `undefined` value is treated the same as if the property wasn't defined at all.

```js
JSON.stringify({ foo: undefined }); // `'{}'`
JSON.stringify({ foo: null }); // `'{"foo":null}'`
```


## Browser Usage

ES2015 (aka ES6) features are used where supported by Node.  Since many browsers still don't support the
same ES6 features that Node supports, the JavaScript source will need to be transpiled before using.
The source is tested with Babel.  After transpiling, it is recommended that the transpiled source be bundled
into a single file.  To test that the transpiled source runs correctly when bundled, Webpack is used.

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