PHP WebShell
Текущая директория: /usr/lib/node_modules/bitgo/node_modules/@celo/contractkit/node_modules/fp-ts/es6
Просмотр файла: NonEmptyArray.js
import * as A from './Array';
import { getMeetSemigroup, getJoinSemigroup } from './Semigroup';
import { some, none } from './Option';
import { pipeable } from './pipeable';
/**
* @since 2.0.0
*/
export var URI = 'NonEmptyArray';
/**
* Append an element to the front of an array, creating a new non empty array
*
* @example
* import { cons } from 'fp-ts/lib/NonEmptyArray'
*
* assert.deepStrictEqual(cons(1, [2, 3, 4]), [1, 2, 3, 4])
*
* @since 2.0.0
*/
export var cons = A.cons;
/**
* Append an element to the end of an array, creating a new non empty array
*
* @example
* import { snoc } from 'fp-ts/lib/NonEmptyArray'
*
* assert.deepStrictEqual(snoc([1, 2, 3], 4), [1, 2, 3, 4])
*
* @since 2.0.0
*/
export var snoc = A.snoc;
/**
* Builds a `NonEmptyArray` from an `Array` returning `none` if `as` is an empty array
*
* @since 2.0.0
*/
export function fromArray(as) {
return A.isNonEmpty(as) ? some(as) : none;
}
/**
* @since 2.0.0
*/
export var getShow = A.getShow;
/**
* @since 2.0.0
*/
export function head(nea) {
return nea[0];
}
/**
* @since 2.0.0
*/
export function tail(nea) {
return nea.slice(1);
}
/**
* @since 2.0.0
*/
export var reverse = A.reverse;
/**
* @since 2.0.0
*/
export function min(ord) {
var S = getMeetSemigroup(ord);
return function (nea) { return nea.reduce(S.concat); };
}
/**
* @since 2.0.0
*/
export function max(ord) {
var S = getJoinSemigroup(ord);
return function (nea) { return nea.reduce(S.concat); };
}
/**
* Builds a `Semigroup` instance for `NonEmptyArray`
*
* @since 2.0.0
*/
export function getSemigroup() {
return {
concat: function (x, y) { return x.concat(y); }
};
}
/**
* @example
* import { getEq, cons } from 'fp-ts/lib/NonEmptyArray'
* import { eqNumber } from 'fp-ts/lib/Eq'
*
* const E = getEq(eqNumber)
* assert.strictEqual(E.equals(cons(1, [2]), [1, 2]), true)
* assert.strictEqual(E.equals(cons(1, [2]), [1, 3]), false)
*
* @since 2.0.0
*/
export var getEq = A.getEq;
/**
* Group equal, consecutive elements of an array into non empty arrays.
*
* @example
* import { cons, group } from 'fp-ts/lib/NonEmptyArray'
* import { ordNumber } from 'fp-ts/lib/Ord'
*
* assert.deepStrictEqual(group(ordNumber)([1, 2, 1, 1]), [
* cons(1, []),
* cons(2, []),
* cons(1, [1])
* ])
*
* @since 2.0.0
*/
export function group(E) {
return function (as) {
var len = as.length;
if (len === 0) {
return A.empty;
}
var r = [];
var head = as[0];
var nea = [head];
for (var i = 1; i < len; i++) {
var x = as[i];
if (E.equals(x, head)) {
nea.push(x);
}
else {
r.push(nea);
head = x;
nea = [head];
}
}
r.push(nea);
return r;
};
}
/**
* Sort and then group the elements of an array into non empty arrays.
*
* @example
* import { cons, groupSort } from 'fp-ts/lib/NonEmptyArray'
* import { ordNumber } from 'fp-ts/lib/Ord'
*
* assert.deepStrictEqual(groupSort(ordNumber)([1, 2, 1, 1]), [cons(1, [1, 1]), cons(2, [])])
*
* @since 2.0.0
*/
export function groupSort(O) {
var sortO = A.sort(O);
var groupO = group(O);
return function (as) { return groupO(sortO(as)); };
}
/**
* Splits an array into sub-non-empty-arrays stored in an object, based on the result of calling a `string`-returning
* function on each element, and grouping the results according to values returned
*
* @example
* import { cons, groupBy } from 'fp-ts/lib/NonEmptyArray'
*
* assert.deepStrictEqual(groupBy((s: string) => String(s.length))(['foo', 'bar', 'foobar']), {
* '3': cons('foo', ['bar']),
* '6': cons('foobar', [])
* })
*
* @since 2.0.0
*/
export function groupBy(f) {
return function (as) {
var r = {};
for (var _i = 0, as_1 = as; _i < as_1.length; _i++) {
var a = as_1[_i];
var k = f(a);
if (r.hasOwnProperty(k)) {
r[k].push(a);
}
else {
r[k] = cons(a, []);
}
}
return r;
};
}
/**
* @since 2.0.0
*/
export function last(nea) {
return nea[nea.length - 1];
}
/**
* @since 2.0.0
*/
export function sort(O) {
return A.sort(O);
}
/**
* @since 2.0.0
*/
export function insertAt(i, a) {
return A.insertAt(i, a);
}
/**
* @since 2.0.0
*/
export function updateAt(i, a) {
return A.updateAt(i, a);
}
/**
* @since 2.0.0
*/
export function modifyAt(i, f) {
return A.modifyAt(i, f);
}
/**
* @since 2.0.0
*/
export var copy = A.copy;
export function filter(predicate) {
return filterWithIndex(function (_, a) { return predicate(a); });
}
/**
* @since 2.0.0
*/
export function filterWithIndex(predicate) {
return function (nea) { return fromArray(nea.filter(function (a, i) { return predicate(i, a); })); };
}
/**
* @since 2.0.0
*/
export var of = A.of;
/**
* @since 2.0.0
*/
export var nonEmptyArray = {
URI: URI,
map: A.array.map,
mapWithIndex: A.array.mapWithIndex,
of: of,
ap: A.array.ap,
chain: A.array.chain,
extend: A.array.extend,
extract: head,
reduce: A.array.reduce,
foldMap: A.array.foldMap,
reduceRight: A.array.reduceRight,
traverse: A.array.traverse,
sequence: A.array.sequence,
reduceWithIndex: A.array.reduceWithIndex,
foldMapWithIndex: A.array.foldMapWithIndex,
reduceRightWithIndex: A.array.reduceRightWithIndex,
traverseWithIndex: A.array.traverseWithIndex
};
var _a = pipeable(nonEmptyArray), ap = _a.ap, apFirst = _a.apFirst, apSecond = _a.apSecond, chain = _a.chain, chainFirst = _a.chainFirst, duplicate = _a.duplicate, extend = _a.extend, flatten = _a.flatten, foldMap = _a.foldMap, foldMapWithIndex = _a.foldMapWithIndex, map = _a.map, mapWithIndex = _a.mapWithIndex, reduce = _a.reduce, reduceRight = _a.reduceRight, reduceRightWithIndex = _a.reduceRightWithIndex, reduceWithIndex = _a.reduceWithIndex;
export {
/**
* @since 2.0.0
*/
ap,
/**
* @since 2.0.0
*/
apFirst,
/**
* @since 2.0.0
*/
apSecond,
/**
* @since 2.0.0
*/
chain,
/**
* @since 2.0.0
*/
chainFirst,
/**
* @since 2.0.0
*/
duplicate,
/**
* @since 2.0.0
*/
extend,
/**
* @since 2.0.0
*/
flatten,
/**
* @since 2.0.0
*/
foldMap,
/**
* @since 2.0.0
*/
foldMapWithIndex,
/**
* @since 2.0.0
*/
map,
/**
* @since 2.0.0
*/
mapWithIndex,
/**
* @since 2.0.0
*/
reduce,
/**
* @since 2.0.0
*/
reduceRight,
/**
* @since 2.0.0
*/
reduceRightWithIndex,
/**
* @since 2.0.0
*/
reduceWithIndex };
Выполнить команду
Для локальной разработки. Не используйте в интернете!