Oolong.js
Oolong.js is a library for JavaScript full of object-related
utilities. It's similar to Underscore.js, but it focuses
strictly on functions dealing with objects. It's implementation emphasizes
simplicity and good taste. For example, it always takes inherited
properties into account leading to less surprises for users of your code.
Oolong.js grew out of my frustration with Underscore.js
and Lodash.js and their inconsistent and sometimes outright ignoring
of inherited properties. This leads to unnecessary complexity, arbitrary
constraints and a leaky-implementation in your code or public APIs. This
behavior is cancer propelled around by ignorance and misunderstandings between
dictionaries and interfaces. Oolong.js is my first step at killing it.
Installing
npm install oolong
Oolong.js follows semantic versioning, so feel free to
depend on its major version with something like >= 1.0.0 < 2
(a.k.a ^1.0.0
).
API
For extended documentation on all functions, please see the
Oolong.js API Documentation.
- assign(target, source...)
- clone(object)
- cloneDeep(object)
- create(prototype, [source...])
- defaults(target, source...)
- defineGetter(object, property, fn)
- defineSetter(object, property, fn)
- each(object, callback, [thisArg])
- eachOwn(object, callback, [thisArg])
- filter(object, callback, [thisArg])
- forEach(object, callback, [thisArg])
- forEachOwn(object, callback, [thisArg])
- has(object, key)
- hasOwn(object, key)
- isEmpty(object)
- isIn(object, key)
- isInOwn(object, key)
- isObject(object)
- isOwnEmpty(object)
- isPlainObject(object)
- keys(object)
- lookupGetter(object, property)
- lookupSetter(object, property)
- map(object, callback, [thisArg])
- mapKeys(object, callback, [thisArg])
- merge(target, source...)
- ownKeys(object)
- reject(object, callback, [thisArg])
- values(object)
- wrap(value, key)
License
Oolong.js is released under a Lesser GNU Affero General Public License,
which in summary means:
- You can use this program for no cost.
- You can use this program for both personal and commercial reasons.
- You do not have to share your own program's code which uses this program.
- You have to share modifications (e.g. bug-fixes) you've made to this
program.
For more convoluted language, see the LICENSE
file.
About
Andri Möll typed this and the code.
Monday Calendar supported the engineering work.
If you find Oolong.js needs improving, please don't hesitate to type to me
now at andri@dot.ee or create an issue online.