Releases: ipavlic/apex-fp
Post Strike
Summit Series
null
values now compared inPrimitiveComparer
. Where relevant,null
is smaller than non null.OptionalDouble
andOptionalDecimal
values arefinal
.DoubleCollection
,DecimalCollection
andObjectCollection
constructors takeIterable
instead ofList
. Constructors are private and collections are build withof
to matchSObjectCollection
.- Directory structure was simplified to match an empty
sf
(sfdx
) template. - Github action has been updated to work.
HMCS Shawinigan
- Adds
min
andmax
toDoubleCollection
andDecimalCollection
- Renames
AssignTo
toModify
- Simplifies
Fn
structure
Mischief Night
- Adds support for mapping to objects on
Fn.MapTo
- Introduces
ObjectCollection
to serve as a target for object mappings
Nathan Cirillo
- Introduces
MapTo
- Raises test coverage
- Consolidates many function factories into
Fp
Thanksgiving Day
- Lazy evaluation was added through
SObjectStream
- Library name has changed to
apex-fp
, to avoid confusion withapex/up
for AWS Lambda - Documentation improvements and clean-ups
September Rain
Project moved to SFDX
March Break
Transform
and resulting RecordTransform
functionality were moved to explicitly named CopyFields
to make the purpose clearer.
Polar Vortex
Experimental reduceType methods were removed in favour of mapToType style of methods, which return TypeCollection. This is similar to Java's Stream. For example,
Decimal totalAmount = Collection.of(opps).mapToDecimal(Opportunity.Amount).sum();
Current API is also unstable, and will possibly change to make the naming more consistent or to remove redundancies.
Previous naming favoured plural endings (groupByStrings
, pluckDoubles
), while new type collections use Java's singular convention.
One example of redundancy is Collection.of(opps).pluckDecimals(Opportunity.Amount)
which yields the same result as Collection.of(opps).mapToDecimal(Opportunity.Amount).asList()
.
Black Tuesday
Adds Transform
to support prototype-matching definition of SObjectToSobject
functions. Put simply,
Opportunity prototype = new Opportunity(Name = 'Test')
Collection.of(opps).mapAll(Transform.record(prototype));
will copy all defined field values on the provided prototype
to records in collection, overwriting any existing values for those fields. Other fields will not be touched.