obext
v0.0.34
Published
ES6+ Object Extensions
Maintainers
Readme
obext — ES6+ Object Extensions
Reactive property definitions for JavaScript objects — change events, value transformers, defaults, aliases, and read-only computed properties via Object.defineProperty.
Install
npm install obextQuick Start
const { prop, field, read_only, get_set } = require('obext');
// reactive property with default + change callback
const obj = { raise(name, e) { /* event bus */ } };
prop(obj, 'temperature', 20, (e) => {
console.log(`${e.old} → ${e.value}`);
});
obj.temperature = 25; // logs: "20 → 25"
// field — stores on obj._ (serialisable)
field(obj, 'label', 'Untitled');
obj._.label; // 'Untitled'
// read-only computed property
read_only(obj, 'area', () => obj._w * obj._h);
// raw getter/setter with aliases
let _v = 0;
get_set(obj, ['width', 'w'], () => _v, (v) => { _v = v; });Exports
| Export | Alias | Purpose |
|---|---|---|
| prop | — | Reactive property with closure storage, change events, transforms, defaults, aliases |
| field | — | Reactive property stored on obj._, change events, transforms, defaults |
| read_only | ro | Getter-only property |
| get_set | gs | Raw getter/setter pair |
| opts | — | Module options: { raise_change_events: true } |
Requirements
- Node.js ≥ 12.0.0
- Dependency:
lang-mini(utility functions)
Documentation
Full documentation is available in the docs/ folder:
- Introduction
- Installation & Quick Start
- prop — Deep Dive
- field — Deep Dive
- Read-Only Properties
- Get/Set Properties
- Module Options
- Ecosystem Integration
- Agent Reference
Part of a Wider System
obext is a low-level building block primarily consumed by:
- jsgui3-html — UI control framework (every control uses
prop/fieldfor reactive state) - jsgui3-gfx-core — Pixel buffer and shape classes
- ta-tensor — Tensor analysis library
- lang-tools — Data model layer
These upstream modules expect obext to export the exact API surface listed above.
License
MIT © James Vickers
