Base Framework

3.0.0 · abandoned · verified Sun Apr 19

The `base` package, with its current stable version 3.0.0, is an open-source framework designed to provide a minimal and highly composable foundation for building server-side Node.js applications. It emphasizes modularity through a plugin-based architecture, allowing developers to extend its core functionality—which includes methods like `.set`, `.get`, `.has`, `.define`, and `.use`—with custom features or community plugins. A key design principle is a compact API surface, aiming for ease of learning and use, while encouraging unit testability and a Node.js core-style approach without excessive API sugar. Despite its architectural benefits for creating extensible applications, the project appears to be no longer actively maintained, with the last significant release and code contributions dating back over six years. This lack of recent updates means that while the principles are sound, users should consider the implications of using an unmaintained framework for new development, particularly regarding security patches or compatibility with newer Node.js versions.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates creating a Base application, utilizing its core methods for data management, defining non-enumerable properties, integrating a simple plugin, and inheriting from the Base class to build a custom application, all within a CommonJS environment.

const Base = require('base');

// 1. Create a new Base instance
const app = new Base();
console.log('Base application initialized.');

// 2. Use core methods: set, get, has
app.set('greeting', 'Hello, Base!');
console.log(`App greeting: ${app.get('greeting')}`);

if (app.has('greeting')) {
  console.log('The "greeting" property exists.');
}

// 3. Define a non-enumerable property
app.define('version', '3.0.0');
console.log(`App version (non-enumerable): ${app.version}`);
for (const key in app) {
  if (Object.prototype.hasOwnProperty.call(app, key)) {
    console.log(`Enumerable property: ${key}`);
  }
}

// 4. Demonstrate a simple plugin
function myLoggerPlugin(instance) {
  instance.log = function(message) {
    console.log(`[MyLoggerPlugin] ${message}`);
  };
  instance.log('Logger plugin activated.');
}

// Use the plugin
app.use(myLoggerPlugin);
app.log('This message is logged via the plugin.');

// 5. Extend Base to create a custom application class
function MyApp() {
  Base.call(this); // Call Base constructor
  this.name = 'My Custom App';
}
Base.extend(MyApp); // Inherit Base methods

const myAppInstance = new MyApp();
myAppInstance.set('owner', 'Registry AI');
console.log(`${myAppInstance.name} owner: ${myAppInstance.get('owner')}`);

// This snippet demonstrates initialization, basic data storage, non-enumerable properties,
// plugin integration, and inheritance, covering core functionalities of the Base framework.
// It is written in CommonJS, typical for the era of this package.

view raw JSON →