@axway/amplify-utils
Version:
Axway Amplify utility library
229 lines (161 loc) • 4.56 kB
Markdown
# Amplify Utils
A library for solving common filesystem, path, and more.
## Installation
npm i @axway/amplify-utils --save
## fs
```js
import {
existsSync,
isDir,
isFile,
locate
} from '@axway/amplify-utils';
console.log(existsSync('/path/to/something'));
console.log(isDir('/path/to/some/dir'));
console.log(isFile('/path/to/some/file'));
// recursively search a directory for a file up to a specified depth
console.log(locate('/path/to/some/dir', 'somefile', 2));
```
## path
```js
import {
expandPath,
real
} from '@axway/amplify-utils';
// replace ~ with the user's home path and join any additional segments
console.log(expandPath('~/foo', 'bar'));
// resolves symlinks to real path, even if symlink is broken
console.log(real('/some/path'));
```
## utils
```js
import { arch } from '@axway/amplify-utils';
console.log(arch()); // 'x86' or 'x64'
```
```js
import { arrayify } from '@axway/amplify-utils';
console.log(arrayify('foo')); // [ 'foo' ]
console.log(arrayify([ 'a', '', null, 'b' ], true)); // [ 'a', 'b' ]
```
```js
import { assertNodeEngineVersion } from '@axway/amplify-utils';
// throw an exception if current node version doesn't satisfy the `engines.node` version
assertNodeEngineVersion(require('package.json'));
```
```js
import { cache } from '@axway/amplify-utils';
const now = () => Date.now();
const first = await cache('my namespace', now);
const second = await cache('my namespace', now);
assert(first === second);
const third = await cache('my namespace', true, now);
assert(first !== third && second !== third);
```
```js
import { cacheSync } from '@axway/amplify-utils';
const now = () => Date.now();
const first = cacheSync('my namespace', now);
const second = cacheSync('my namespace', now);
assert(first === second);
const third = cacheSync('my namespace', true, now);
assert(first !== third && second !== third);
```
Debouncer that returns a promise and that can be cancelled.
```js
import { debounce } from '@axway/amplify-utils';
const fn = debounce(() => {
console.log(new Date());
});
// schedule the callback to be called in 200ms
fn().then(() => {
console.log('Function called');
});
// cancel the debounce
fn.cancel();
```
```js
import { formatNumber } from '@axway/amplify-utils';
console.log(formatNumber(12)); // 12
console.log(formatNumber(123)); // 123
console.log(formatNumber(1234)); // 1,234
console.log(formatNumber(12345)); // 12,345
console.log(formatNumber(123456)); // 123,456
console.log(formatNumber(1234567)); // 1,234,567
```
```js
import { get } from '@axway/amplify-utils';
const obj = {
foo: 'bar'
};
console.log(get(obj, 'foo')); // 'bar'
console.log(get(obj, 'baz', 'pow')); // 'pow'
```
Get all open sockets, [net] servers, timers, child processes, filesystem watchers, and other
handles.
```js
import { getActiveHandles } from '@axway/amplify-utils';
console.log(getActiveHandles());
```
```js
import { inherits } from '@axway/amplify-utils';
class A {}
class B extends A {}
class C {}
console.log(inherits(B, A)); // true
console.log(inherits(B, C)); // false
```
```js
import { mergeDeep } from '@axway/amplify-utils';
const obj1 = {
a: {
b: 'c'
}
};
const obj2 = {
a: {
d: 'e'
}
};
console.log(mergeDeep(obj1, obj2)); // { a: { b: 'c', d: 'e' } }
```
```js
import { mutex } from '@axway/amplify-utils';
const fn = () => {
return mutex('my mutex', () => {
console.log('foo!');
});
};
await Promise.all([ fn(), fn(), fn() ]);
```
```js
import { randomBytes } from '@axway/amplify-utils';
console.log(randomBytes(20));
```
```js
import { sha1 } from '@axway/amplify-utils';
console.log(sha1('foo'));
```
```js
import { sleep } from '@axway/amplify-utils';
await sleep(1000); // sleep for 1 second
```
Block multiple simultaneous callers until the first caller finishes, then all queued up 'tailgaters'
are resolved with the result.
```js
import { tailgate } from '@axway/amplify-utils';
const fn = () => {
return tailgate('my tailgate', async () => {
console.log('I will only be called once');
});
};
await Promise.all([ fn(), fn(), fn() ]);
```
```js
import { unique } from '@axway/amplify-utils';
console.log(unique([ 'a', 'b', 'a', 'b' ])); // [ 'a', 'b' ]
```
## Legal
This project is open source under the [Apache Public License v2][1] and is developed by
[Axway, Inc](http://www.axway.com/) and the community. Please read the [`LICENSE`][1] file included
in this distribution for more information.
[1]: https://github.com/appcelerator/amplify-tooling/blob/master/packages/amplify-cli-utils/LICENSE