oolong
v1.15.1
Published
Utilities for objects. Simple, tasteful and plentiful. Supports inherited properties.
Downloads
48,907
Readme
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 ignorance 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.
Oolong
- .assign(target, source...)
- .assignOwn(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...)
- .object(keys, callback, [thisArg])
- .ownKeys(object)
- .pick(object, keys...)
- .pickDeep(object, keys...)
- .pluck(object, key)
- .property(key)
- .reject(object, callback, [thisArg])
- .setPrototypeOf(object, prototype)
- .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 [email protected] or create an issue online.