Innovenergy_trunk/frontend/node_modules/monocle-ts/lib/index.js

1319 lines
34 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.fromFoldable = exports.fromTraversable = exports.Setter = exports.Fold = exports.Getter = exports.Index = exports.At = exports.Traversal = exports.Optional = exports.Prism = exports.Lens = exports.Iso = exports.traversal = exports.optional = exports.prism = exports.lens = exports.index = exports.iso = exports.at = void 0;
/**
* @since 1.0.0
*/
var A = require("fp-ts/lib/Array");
var Const_1 = require("fp-ts/lib/Const");
var function_1 = require("fp-ts/lib/function");
var Monoid_1 = require("fp-ts/lib/Monoid");
var Option_1 = require("fp-ts/lib/Option");
var pipeable_1 = require("fp-ts/lib/pipeable");
var at = require("./At");
exports.at = at;
var iso = require("./Iso");
exports.iso = iso;
var index = require("./Ix");
exports.index = index;
var lens = require("./Lens");
exports.lens = lens;
var optional = require("./Optional");
exports.optional = optional;
var prism = require("./Prism");
exports.prism = prism;
var traversal = require("./Traversal");
exports.traversal = traversal;
//
// compat
//
var fromIso = function (iso) { return new Iso(iso.get, iso.reverseGet); };
var fromLens = function (lens) { return new Lens(lens.get, lens.set); };
var fromPrism = function (prism) { return new Prism(prism.getOption, prism.reverseGet); };
var fromOptional = function (optional) {
return new Optional(optional.getOption, optional.set);
};
var fromTraversal = function (traversal) { return new Traversal(traversal.modifyF); };
var fromAt = function (at) { return new At(function (i) { return fromLens(at.at(i)); }); };
var fromIndex = function (ix) { return new Index(function (i) { return fromOptional(ix.index(i)); }); };
//
// old APIs
//
var update = function (o, k, a) {
var _a;
return a === o[k] ? o : Object.assign({}, o, (_a = {}, _a[k] = a, _a));
};
/**
* Laws:
* 1. `reverseGet(get(s)) = s`
* 2. `get(reversetGet(a)) = a`
*
* @category constructor
* @since 1.0.0
*/
var Iso = /** @class */ (function () {
function Iso(get, reverseGet) {
this.get = get;
this.reverseGet = reverseGet;
/**
* @since 1.0.0
*/
this._tag = 'Iso';
/**
* @since 1.0.0
*/
this.unwrap = this.get;
/**
* @since 1.0.0
*/
this.to = this.get;
/**
* @since 1.0.0
*/
this.wrap = this.reverseGet;
/**
* @since 1.0.0
*/
this.from = this.reverseGet;
}
/**
* reverse the `Iso`: the source becomes the target and the target becomes the source
* @since 1.0.0
*/
Iso.prototype.reverse = function () {
return fromIso(iso.reverse(this));
};
/**
* @since 1.0.0
*/
Iso.prototype.modify = function (f) {
return iso.modify(f)(this);
};
/**
* view an `Iso` as a `Lens`
*
* @since 1.0.0
*/
Iso.prototype.asLens = function () {
return fromLens(iso.asLens(this));
};
/**
* view an `Iso` as a `Prism`
*
* @since 1.0.0
*/
Iso.prototype.asPrism = function () {
return fromPrism(iso.asPrism(this));
};
/**
* view an `Iso` as a `Optional`
*
* @since 1.0.0
*/
Iso.prototype.asOptional = function () {
return fromOptional(iso.asOptional(this));
};
/**
* view an `Iso` as a `Traversal`
*
* @since 1.0.0
*/
Iso.prototype.asTraversal = function () {
return fromTraversal(iso.asTraversal(this));
};
/**
* view an `Iso` as a `Fold`
*
* @since 1.0.0
*/
Iso.prototype.asFold = function () {
var _this = this;
return new Fold(function () { return function (f) { return function (s) { return f(_this.get(s)); }; }; });
};
/**
* view an `Iso` as a `Getter`
*
* @since 1.0.0
*/
Iso.prototype.asGetter = function () {
var _this = this;
return new Getter(function (s) { return _this.get(s); });
};
/**
* view an `Iso` as a `Setter`
*
* @since 1.0.0
*/
Iso.prototype.asSetter = function () {
var _this = this;
return new Setter(function (f) { return _this.modify(f); });
};
/**
* compose an `Iso` with an `Iso`
*
* @since 1.0.0
*/
Iso.prototype.compose = function (ab) {
return fromIso(iso.compose(ab)(this));
};
/**
* Alias of `compose`
*
* @since 1.0.0
*/
Iso.prototype.composeIso = function (ab) {
return this.compose(ab);
};
/**
* compose an `Iso` with a `Lens `
*
* @since 1.0.0
*/
Iso.prototype.composeLens = function (ab) {
return fromLens((0, pipeable_1.pipe)(this, iso.asLens, lens.compose(ab)));
};
/**
* compose an `Iso` with a `Prism`
*
* @since 1.0.0
*/
Iso.prototype.composePrism = function (ab) {
return fromPrism((0, pipeable_1.pipe)(this, iso.asPrism, prism.compose(ab)));
};
/**
* compose an `Iso` with an `Optional`
*
* @since 1.0.0
*/
Iso.prototype.composeOptional = function (ab) {
return fromOptional((0, pipeable_1.pipe)(this, iso.asOptional, optional.compose(ab)));
};
/**
* compose an `Iso` with a `Traversal`
*
* @since 1.0.0
*/
Iso.prototype.composeTraversal = function (ab) {
return fromTraversal((0, pipeable_1.pipe)(this, iso.asTraversal, traversal.compose(ab)));
};
/**
* compose an `Iso` with a `Fold`
*
* @since 1.0.0
*/
Iso.prototype.composeFold = function (ab) {
return this.asFold().compose(ab);
};
/**
* compose an `Iso` with a `Getter`
*
* @since 1.0.0
*/
Iso.prototype.composeGetter = function (ab) {
return this.asGetter().compose(ab);
};
/**
* compose an `Iso` with a `Setter`
*
* @since 1.0.0
*/
Iso.prototype.composeSetter = function (ab) {
return this.asSetter().compose(ab);
};
return Iso;
}());
exports.Iso = Iso;
/**
* Laws:
* 1. `get(set(a)(s)) = a`
* 2. `set(get(s))(s) = s`
* 3. `set(a)(set(a)(s)) = set(a)(s)`
*
* @category constructor
* @since 1.0.0
*/
var Lens = /** @class */ (function () {
function Lens(get, set) {
this.get = get;
this.set = set;
/**
* @since 1.0.0
*/
this._tag = 'Lens';
}
/**
* @example
* import { Lens } from 'monocle-ts'
*
* type Person = {
* name: string
* age: number
* address: {
* city: string
* }
* }
*
* const city = Lens.fromPath<Person>()(['address', 'city'])
*
* const person: Person = { name: 'Giulio', age: 43, address: { city: 'Milan' } }
*
* assert.strictEqual(city.get(person), 'Milan')
* assert.deepStrictEqual(city.set('London')(person), { name: 'Giulio', age: 43, address: { city: 'London' } })
*
* @since 1.0.0
*/
Lens.fromPath = function () {
var fromProp = Lens.fromProp();
return function (path) {
var lens = fromProp(path[0]);
return path.slice(1).reduce(function (acc, prop) { return acc.compose(fromProp(prop)); }, lens);
};
};
/**
* Returns a `Lens` from a type and a prop
*
* @example
* import { Lens } from 'monocle-ts'
*
* type Person = {
* name: string
* age: number
* }
*
* const age = Lens.fromProp<Person>()('age')
*
* const person: Person = { name: 'Giulio', age: 43 }
*
* assert.strictEqual(age.get(person), 43)
* assert.deepStrictEqual(age.set(44)(person), { name: 'Giulio', age: 44 })
*
* @since 1.0.0
*/
Lens.fromProp = function () {
return function (prop) { return fromLens((0, pipeable_1.pipe)(lens.id(), lens.prop(prop))); };
};
Lens.fromProps = function () {
return function (props) { return fromLens((0, pipeable_1.pipe)(lens.id(), lens.props.apply(lens, props))); };
};
/**
* Returns a `Lens` from a nullable (`A | null | undefined`) prop
*
* @example
* import { Lens } from 'monocle-ts'
*
* interface Outer {
* inner?: Inner
* }
*
* interface Inner {
* value: number
* foo: string
* }
*
* const inner = Lens.fromNullableProp<Outer>()('inner', { value: 0, foo: 'foo' })
* const value = Lens.fromProp<Inner>()('value')
* const lens = inner.compose(value)
*
* assert.deepStrictEqual(lens.set(1)({}), { inner: { value: 1, foo: 'foo' } })
* assert.strictEqual(lens.get({}), 0)
* assert.deepStrictEqual(lens.set(1)({ inner: { value: 1, foo: 'bar' } }), { inner: { value: 1, foo: 'bar' } })
* assert.strictEqual(lens.get({ inner: { value: 1, foo: 'bar' } }), 1)
*
* @since 1.0.0
*/
Lens.fromNullableProp = function () {
return function (k, defaultValue) {
return new Lens(function (s) {
var osk = (0, Option_1.fromNullable)(s[k]);
if ((0, Option_1.isNone)(osk)) {
return defaultValue;
}
else {
return osk.value;
}
}, function (a) { return function (s) { return update(s, k, a); }; });
};
};
/**
* @since 1.0.0
*/
Lens.prototype.modify = function (f) {
return lens.modify(f)(this);
};
/**
* view a `Lens` as a Optional
*
* @since 1.0.0
*/
Lens.prototype.asOptional = function () {
return fromOptional(lens.asOptional(this));
};
/**
* view a `Lens` as a `Traversal`
*
* @since 1.0.0
*/
Lens.prototype.asTraversal = function () {
return fromTraversal(lens.asTraversal(this));
};
/**
* view a `Lens` as a `Setter`
*
* @since 1.0.0
*/
Lens.prototype.asSetter = function () {
var _this = this;
return new Setter(function (f) { return _this.modify(f); });
};
/**
* view a `Lens` as a `Getter`
*
* @since 1.0.0
*/
Lens.prototype.asGetter = function () {
var _this = this;
return new Getter(function (s) { return _this.get(s); });
};
/**
* view a `Lens` as a `Fold`
*
* @since 1.0.0
*/
Lens.prototype.asFold = function () {
var _this = this;
return new Fold(function () { return function (f) { return function (s) { return f(_this.get(s)); }; }; });
};
/**
* compose a `Lens` with a `Lens`
*
* @since 1.0.0
*/
Lens.prototype.compose = function (ab) {
return fromLens(lens.compose(ab)(this));
};
/**
* Alias of `compose`
*
* @since 1.0.0
*/
Lens.prototype.composeLens = function (ab) {
return this.compose(ab);
};
/**
* compose a `Lens` with a `Getter`
*
* @since 1.0.0
*/
Lens.prototype.composeGetter = function (ab) {
return this.asGetter().compose(ab);
};
/**
* compose a `Lens` with a `Fold`
*
* @since 1.0.0
*/
Lens.prototype.composeFold = function (ab) {
return this.asFold().compose(ab);
};
/**
* compose a `Lens` with an `Optional`
*
* @since 1.0.0
*/
Lens.prototype.composeOptional = function (ab) {
return fromOptional((0, pipeable_1.pipe)(this, lens.asOptional, optional.compose(ab)));
};
/**
* compose a `Lens` with an `Traversal`
*
* @since 1.0.0
*/
Lens.prototype.composeTraversal = function (ab) {
return fromTraversal((0, pipeable_1.pipe)(this, lens.asTraversal, traversal.compose(ab)));
};
/**
* compose a `Lens` with an `Setter`
*
* @since 1.0.0
*/
Lens.prototype.composeSetter = function (ab) {
return this.asSetter().compose(ab);
};
/**
* compose a `Lens` with an `Iso`
*
* @since 1.0.0
*/
Lens.prototype.composeIso = function (ab) {
return fromLens((0, pipeable_1.pipe)(this, lens.compose((0, pipeable_1.pipe)(ab, iso.asLens))));
};
/**
* compose a `Lens` with a `Prism`
*
* @since 1.0.0
*/
Lens.prototype.composePrism = function (ab) {
return fromOptional(lens.composePrism(ab)(this));
};
return Lens;
}());
exports.Lens = Lens;
/**
* Laws:
* 1. `pipe(getOption(s), fold(() => s, reverseGet)) = s`
* 2. `getOption(reverseGet(a)) = some(a)`
*
* @category constructor
* @since 1.0.0
*/
var Prism = /** @class */ (function () {
function Prism(getOption, reverseGet) {
this.getOption = getOption;
this.reverseGet = reverseGet;
/**
* @since 1.0.0
*/
this._tag = 'Prism';
}
Prism.fromPredicate = function (predicate) {
return fromPrism(prism.fromPredicate(predicate));
};
/**
* @since 1.0.0
*/
Prism.some = function () {
return somePrism;
};
/**
* @since 1.0.0
*/
Prism.prototype.modify = function (f) {
var _this = this;
return function (s) {
var os = _this.modifyOption(f)(s);
if ((0, Option_1.isNone)(os)) {
return s;
}
else {
return os.value;
}
};
};
/**
* @since 1.0.0
*/
Prism.prototype.modifyOption = function (f) {
var _this = this;
return function (s) {
return Option_1.option.map(_this.getOption(s), function (v) {
var n = f(v);
return n === v ? s : _this.reverseGet(n);
});
};
};
/**
* set the target of a `Prism` with a value
*
* @since 1.0.0
*/
Prism.prototype.set = function (a) {
return this.modify(function () { return a; });
};
/**
* view a `Prism` as a `Optional`
*
* @since 1.0.0
*/
Prism.prototype.asOptional = function () {
return fromOptional(prism.asOptional(this));
};
/**
* view a `Prism` as a `Traversal`
*
* @since 1.0.0
*/
Prism.prototype.asTraversal = function () {
return fromTraversal(prism.asTraversal(this));
};
/**
* view a `Prism` as a `Setter`
*
* @since 1.0.0
*/
Prism.prototype.asSetter = function () {
var _this = this;
return new Setter(function (f) { return _this.modify(f); });
};
/**
* view a `Prism` as a `Fold`
*
* @since 1.0.0
*/
Prism.prototype.asFold = function () {
var _this = this;
return new Fold(function (M) { return function (f) { return function (s) {
var oa = _this.getOption(s);
return (0, Option_1.isNone)(oa) ? M.empty : f(oa.value);
}; }; });
};
/**
* compose a `Prism` with a `Prism`
*
* @since 1.0.0
*/
Prism.prototype.compose = function (ab) {
return fromPrism(prism.compose(ab)(this));
};
/**
* Alias of `compose`
*
* @since 1.0.0
*/
Prism.prototype.composePrism = function (ab) {
return this.compose(ab);
};
/**
* compose a `Prism` with a `Optional`
*
* @since 1.0.0
*/
Prism.prototype.composeOptional = function (ab) {
return fromOptional((0, pipeable_1.pipe)(this, prism.asOptional, optional.compose(ab)));
};
/**
* compose a `Prism` with a `Traversal`
*
* @since 1.0.0
*/
Prism.prototype.composeTraversal = function (ab) {
return fromTraversal((0, pipeable_1.pipe)(this, prism.asTraversal, traversal.compose(ab)));
};
/**
* compose a `Prism` with a `Fold`
*
* @since 1.0.0
*/
Prism.prototype.composeFold = function (ab) {
return this.asFold().compose(ab);
};
/**
* compose a `Prism` with a `Setter`
*
* @since 1.0.0
*/
Prism.prototype.composeSetter = function (ab) {
return this.asSetter().compose(ab);
};
/**
* compose a `Prism` with a `Iso`
*
* @since 1.0.0
*/
Prism.prototype.composeIso = function (ab) {
return fromPrism((0, pipeable_1.pipe)(this, prism.compose((0, pipeable_1.pipe)(ab, iso.asPrism))));
};
/**
* compose a `Prism` with a `Lens`
*
* @since 1.0.0
*/
Prism.prototype.composeLens = function (ab) {
return fromOptional(prism.composeLens(ab)(this));
};
/**
* compose a `Prism` with a `Getter`
*
* @since 1.0.0
*/
Prism.prototype.composeGetter = function (ab) {
return this.asFold().compose(ab.asFold());
};
return Prism;
}());
exports.Prism = Prism;
var somePrism =
/*#__PURE__*/
new Prism(function_1.identity, Option_1.some);
/**
* Laws:
* 1. `pipe(getOption(s), fold(() => s, a => set(a)(s))) = s`
* 2. `getOption(set(a)(s)) = pipe(getOption(s), map(_ => a))`
* 3. `set(a)(set(a)(s)) = set(a)(s)`
*
* @category constructor
* @since 1.0.0
*/
var Optional = /** @class */ (function () {
function Optional(getOption, set) {
this.getOption = getOption;
this.set = set;
/**
* @since 1.0.0
*/
this._tag = 'Optional';
}
/**
* Returns an `Optional` from a nullable (`A | null | undefined`) prop
*
* @example
* import { Optional } from 'monocle-ts'
*
* interface Phone {
* number: string
* }
* interface Employment {
* phone?: Phone
* }
* interface Info {
* employment?: Employment
* }
* interface Response {
* info?: Info
* }
*
* const numberFromResponse = Optional.fromPath<Response>()(['info', 'employment', 'phone', 'number'])
*
* const response1: Response = {
* info: {
* employment: {
* phone: {
* number: '555-1234'
* }
* }
* }
* }
* const response2: Response = {
* info: {
* employment: {}
* }
* }
*
* numberFromResponse.getOption(response1) // some('555-1234')
* numberFromResponse.getOption(response2) // none
*
* @since 2.1.0
*/
Optional.fromPath = function () {
var fromNullableProp = Optional.fromNullableProp();
return function (path) {
var optional = fromNullableProp(path[0]);
return path.slice(1).reduce(function (acc, prop) { return acc.compose(fromNullableProp(prop)); }, optional);
};
};
/**
* @example
* import { Optional } from 'monocle-ts'
*
* interface S {
* a: number | undefined | null
* }
*
* const optional = Optional.fromNullableProp<S>()('a')
*
* const s1: S = { a: undefined }
* const s2: S = { a: null }
* const s3: S = { a: 1 }
*
* assert.deepStrictEqual(optional.set(2)(s1), s1)
* assert.deepStrictEqual(optional.set(2)(s2), s2)
* assert.deepStrictEqual(optional.set(2)(s3), { a: 2 })
*
* @since 1.0.0
*/
Optional.fromNullableProp = function () {
return function (k) {
return new Optional(function (s) { return (0, Option_1.fromNullable)(s[k]); }, function (a) { return function (s) { return (s[k] == null ? s : update(s, k, a)); }; });
};
};
/**
* Returns an `Optional` from an option (`Option<A>`) prop
*
* @example
* import { Optional } from 'monocle-ts'
* import * as O from 'fp-ts/Option'
*
* interface S {
* a: O.Option<number>
* }
*
* const optional = Optional.fromOptionProp<S>()('a')
* const s1: S = { a: O.none }
* const s2: S = { a: O.some(1) }
* assert.deepStrictEqual(optional.set(2)(s1), s1)
* assert.deepStrictEqual(optional.set(2)(s2), { a: O.some(2) })
*
* @since 1.0.0
*/
Optional.fromOptionProp = function () {
var formProp = Lens.fromProp();
return function (prop) { return formProp(prop).composePrism(somePrism); };
};
/**
* @since 1.0.0
*/
Optional.prototype.modify = function (f) {
return optional.modify(f)(this);
};
/**
* @since 1.0.0
*/
Optional.prototype.modifyOption = function (f) {
return optional.modifyOption(f)(this);
};
/**
* view a `Optional` as a `Traversal`
*
* @since 1.0.0
*/
Optional.prototype.asTraversal = function () {
return fromTraversal(optional.asTraversal(this));
};
/**
* view an `Optional` as a `Fold`
*
* @since 1.0.0
*/
Optional.prototype.asFold = function () {
var _this = this;
return new Fold(function (M) { return function (f) { return function (s) {
var oa = _this.getOption(s);
return (0, Option_1.isNone)(oa) ? M.empty : f(oa.value);
}; }; });
};
/**
* view an `Optional` as a `Setter`
*
* @since 1.0.0
*/
Optional.prototype.asSetter = function () {
var _this = this;
return new Setter(function (f) { return _this.modify(f); });
};
/**
* compose a `Optional` with a `Optional`
*
* @since 1.0.0
*/
Optional.prototype.compose = function (ab) {
return fromOptional(optional.compose(ab)(this));
};
/**
* Alias of `compose`
*
* @since 1.0.0
*/
Optional.prototype.composeOptional = function (ab) {
return this.compose(ab);
};
/**
* compose an `Optional` with a `Traversal`
*
* @since 1.0.0
*/
Optional.prototype.composeTraversal = function (ab) {
return fromTraversal((0, pipeable_1.pipe)(this, optional.asTraversal, traversal.compose(ab)));
};
/**
* compose an `Optional` with a `Fold`
*
* @since 1.0.0
*/
Optional.prototype.composeFold = function (ab) {
return this.asFold().compose(ab);
};
/**
* compose an `Optional` with a `Setter`
*
* @since 1.0.0
*/
Optional.prototype.composeSetter = function (ab) {
return this.asSetter().compose(ab);
};
/**
* compose an `Optional` with a `Lens`
*
* @since 1.0.0
*/
Optional.prototype.composeLens = function (ab) {
return fromOptional((0, pipeable_1.pipe)(this, optional.compose((0, pipeable_1.pipe)(ab, lens.asOptional))));
};
/**
* compose an `Optional` with a `Prism`
*
* @since 1.0.0
*/
Optional.prototype.composePrism = function (ab) {
return fromOptional((0, pipeable_1.pipe)(this, optional.compose((0, pipeable_1.pipe)(ab, prism.asOptional))));
};
/**
* compose an `Optional` with a `Iso`
*
* @since 1.0.0
*/
Optional.prototype.composeIso = function (ab) {
return fromOptional((0, pipeable_1.pipe)(this, optional.compose((0, pipeable_1.pipe)(ab, iso.asOptional))));
};
/**
* compose an `Optional` with a `Getter`
*
* @since 1.0.0
*/
Optional.prototype.composeGetter = function (ab) {
return this.asFold().compose(ab.asFold());
};
return Optional;
}());
exports.Optional = Optional;
/**
* @category constructor
* @since 1.0.0
*/
var Traversal = /** @class */ (function () {
function Traversal(
// Van Laarhoven representation
modifyF) {
this.modifyF = modifyF;
/**
* @since 1.0.0
*/
this._tag = 'Traversal';
}
/**
* @since 1.0.0
*/
Traversal.prototype.modify = function (f) {
return traversal.modify(f)(this);
};
/**
* @since 1.0.0
*/
Traversal.prototype.set = function (a) {
return traversal.set(a)(this);
};
Traversal.prototype.filter = function (predicate) {
return fromTraversal(traversal.filter(predicate)(this));
};
/**
* view a `Traversal` as a `Fold`
*
* @since 1.0.0
*/
Traversal.prototype.asFold = function () {
var _this = this;
return new Fold(function (M) { return function (f) {
return _this.modifyF((0, Const_1.getApplicative)(M))(function (a) { return (0, Const_1.make)(f(a)); });
}; });
};
/**
* view a `Traversal` as a `Setter`
*
* @since 1.0.0
*/
Traversal.prototype.asSetter = function () {
var _this = this;
return new Setter(function (f) { return _this.modify(f); });
};
/**
* compose a `Traversal` with a `Traversal`
*
* @since 1.0.0
*/
Traversal.prototype.compose = function (ab) {
return fromTraversal(traversal.compose(ab)(this));
};
/**
* Alias of `compose`
*
* @since 1.0.0
*/
Traversal.prototype.composeTraversal = function (ab) {
return this.compose(ab);
};
/**
* compose a `Traversal` with a `Fold`
*
* @since 1.0.0
*/
Traversal.prototype.composeFold = function (ab) {
return this.asFold().compose(ab);
};
/**
* compose a `Traversal` with a `Setter`
*
* @since 1.0.0
*/
Traversal.prototype.composeSetter = function (ab) {
return this.asSetter().compose(ab);
};
/**
* compose a `Traversal` with a `Optional`
*
* @since 1.0.0
*/
Traversal.prototype.composeOptional = function (ab) {
return this.compose(ab.asTraversal());
};
/**
* compose a `Traversal` with a `Lens`
*
* @since 1.0.0
*/
Traversal.prototype.composeLens = function (ab) {
return fromTraversal((0, pipeable_1.pipe)(this, traversal.compose((0, pipeable_1.pipe)(ab, lens.asTraversal))));
};
/**
* compose a `Traversal` with a `Prism`
*
* @since 1.0.0
*/
Traversal.prototype.composePrism = function (ab) {
return fromTraversal((0, pipeable_1.pipe)(this, traversal.compose((0, pipeable_1.pipe)(ab, prism.asTraversal))));
};
/**
* compose a `Traversal` with a `Iso`
*
* @since 1.0.0
*/
Traversal.prototype.composeIso = function (ab) {
return fromTraversal((0, pipeable_1.pipe)(this, traversal.compose((0, pipeable_1.pipe)(ab, iso.asTraversal))));
};
/**
* compose a `Traversal` with a `Getter`
*
* @since 1.0.0
*/
Traversal.prototype.composeGetter = function (ab) {
return this.asFold().compose(ab.asFold());
};
return Traversal;
}());
exports.Traversal = Traversal;
/**
* @category constructor
* @since 1.2.0
*/
var At = /** @class */ (function () {
function At(at) {
this.at = at;
/**
* @since 1.0.0
*/
this._tag = 'At';
}
/**
* lift an instance of `At` using an `Iso`
*
* @since 1.2.0
*/
At.prototype.fromIso = function (iso) {
return fromAt(at.fromIso(iso)(this));
};
return At;
}());
exports.At = At;
/**
* @category constructor
* @since 1.2.0
*/
var Index = /** @class */ (function () {
function Index(index) {
this.index = index;
/**
* @since 1.0.0
*/
this._tag = 'Index';
}
/**
* @since 1.2.0
*/
Index.fromAt = function (at) {
return fromIndex(index.fromAt(at));
};
/**
* lift an instance of `Index` using an `Iso`
*
* @since 1.2.0
*/
Index.prototype.fromIso = function (iso) {
return fromIndex(index.fromIso(iso)(this));
};
return Index;
}());
exports.Index = Index;
/**
* @category constructor
* @since 1.0.0
*/
var Getter = /** @class */ (function () {
function Getter(get) {
this.get = get;
/**
* @since 1.0.0
*/
this._tag = 'Getter';
}
/**
* view a `Getter` as a `Fold`
*
* @since 1.0.0
*/
Getter.prototype.asFold = function () {
var _this = this;
return new Fold(function () { return function (f) { return function (s) { return f(_this.get(s)); }; }; });
};
/**
* compose a `Getter` with a `Getter`
*
* @since 1.0.0
*/
Getter.prototype.compose = function (ab) {
var _this = this;
return new Getter(function (s) { return ab.get(_this.get(s)); });
};
/**
* Alias of `compose`
*
* @since 1.0.0
*/
Getter.prototype.composeGetter = function (ab) {
return this.compose(ab);
};
/**
* compose a `Getter` with a `Fold`
*
* @since 1.0.0
*/
Getter.prototype.composeFold = function (ab) {
return this.asFold().compose(ab);
};
/**
* compose a `Getter` with a `Lens`
*
* @since 1.0.0
*/
Getter.prototype.composeLens = function (ab) {
return this.compose(ab.asGetter());
};
/**
* compose a `Getter` with a `Iso`
*
* @since 1.0.0
*/
Getter.prototype.composeIso = function (ab) {
return this.compose(ab.asGetter());
};
/**
* compose a `Getter` with a `Optional`
*
* @since 1.0.0
*/
Getter.prototype.composeTraversal = function (ab) {
return this.asFold().compose(ab.asFold());
};
/**
* compose a `Getter` with a `Optional`
*
* @since 1.0.0
*/
Getter.prototype.composeOptional = function (ab) {
return this.asFold().compose(ab.asFold());
};
/**
* compose a `Getter` with a `Prism`
*
* @since 1.0.0
*/
Getter.prototype.composePrism = function (ab) {
return this.asFold().compose(ab.asFold());
};
return Getter;
}());
exports.Getter = Getter;
/**
* @category constructor
* @since 1.0.0
*/
var Fold = /** @class */ (function () {
function Fold(foldMap) {
this.foldMap = foldMap;
/**
* @since 1.0.0
*/
this._tag = 'Fold';
this.getAll = foldMap(A.getMonoid())(A.of);
this.exist = foldMap(Monoid_1.monoidAny);
this.all = foldMap(Monoid_1.monoidAll);
this.foldMapFirst = foldMap((0, Option_1.getFirstMonoid)());
}
/**
* compose a `Fold` with a `Fold`
*
* @since 1.0.0
*/
Fold.prototype.compose = function (ab) {
var _this = this;
return new Fold(function (M) { return function (f) { return _this.foldMap(M)(ab.foldMap(M)(f)); }; });
};
/**
* Alias of `compose`
*
* @since 1.0.0
*/
Fold.prototype.composeFold = function (ab) {
return this.compose(ab);
};
/**
* compose a `Fold` with a `Getter`
*
* @since 1.0.0
*/
Fold.prototype.composeGetter = function (ab) {
return this.compose(ab.asFold());
};
/**
* compose a `Fold` with a `Traversal`
*
* @since 1.0.0
*/
Fold.prototype.composeTraversal = function (ab) {
return this.compose(ab.asFold());
};
/**
* compose a `Fold` with a `Optional`
*
* @since 1.0.0
*/
Fold.prototype.composeOptional = function (ab) {
return this.compose(ab.asFold());
};
/**
* compose a `Fold` with a `Lens`
*
* @since 1.0.0
*/
Fold.prototype.composeLens = function (ab) {
return this.compose(ab.asFold());
};
/**
* compose a `Fold` with a `Prism`
*
* @since 1.0.0
*/
Fold.prototype.composePrism = function (ab) {
return this.compose(ab.asFold());
};
/**
* compose a `Fold` with a `Iso`
*
* @since 1.0.0
*/
Fold.prototype.composeIso = function (ab) {
return this.compose(ab.asFold());
};
Fold.prototype.find = function (p) {
return this.foldMapFirst((0, Option_1.fromPredicate)(p));
};
/**
* get the first target of a `Fold`
*
* @since 1.0.0
*/
Fold.prototype.headOption = function (s) {
return this.find(function () { return true; })(s);
};
return Fold;
}());
exports.Fold = Fold;
/**
* @category constructor
* @since 1.0.0
*/
var Setter = /** @class */ (function () {
function Setter(modify) {
this.modify = modify;
/**
* @since 1.0.0
*/
this._tag = 'Setter';
}
/**
* @since 1.0.0
*/
Setter.prototype.set = function (a) {
return this.modify((0, function_1.constant)(a));
};
/**
* compose a `Setter` with a `Setter`
*
* @since 1.0.0
*/
Setter.prototype.compose = function (ab) {
var _this = this;
return new Setter(function (f) { return _this.modify(ab.modify(f)); });
};
/**
* Alias of `compose`
*
* @since 1.0.0
*/
Setter.prototype.composeSetter = function (ab) {
return this.compose(ab);
};
/**
* compose a `Setter` with a `Traversal`
*
* @since 1.0.0
*/
Setter.prototype.composeTraversal = function (ab) {
return this.compose(ab.asSetter());
};
/**
* compose a `Setter` with a `Optional`
*
* @since 1.0.0
*/
Setter.prototype.composeOptional = function (ab) {
return this.compose(ab.asSetter());
};
/**
* compose a `Setter` with a `Lens`
*
* @since 1.0.0
*/
Setter.prototype.composeLens = function (ab) {
return this.compose(ab.asSetter());
};
/**
* compose a `Setter` with a `Prism`
*
* @since 1.0.0
*/
Setter.prototype.composePrism = function (ab) {
return this.compose(ab.asSetter());
};
/**
* compose a `Setter` with a `Iso`
*
* @since 1.0.0
*/
Setter.prototype.composeIso = function (ab) {
return this.compose(ab.asSetter());
};
return Setter;
}());
exports.Setter = Setter;
function fromTraversable(T) {
var f = traversal.fromTraversable(T);
return function () { return fromTraversal(f()); };
}
exports.fromTraversable = fromTraversable;
function fromFoldable(F) {
return function () {
return new Fold(function (M) {
var foldMapFM = F.foldMap(M);
return function (f) { return function (s) { return foldMapFM(s, f); }; };
});
};
}
exports.fromFoldable = fromFoldable;