25.0.0-beta.3 • Published 6 months ago

@contextjs/system v25.0.0-beta.3

Weekly downloads
-
License
MIT
Repository
github
Last release
6 months ago

@contextjs/system

Tests  npm  License

A zero-dependency system utility library for the ContextJS ecosystem, providing application lifecycle, environment detection, console formatting, exception handling, property extraction (nameof()), and core extensions — all written with full type safety.

Features

  • Application lifecycle management with onRun() hooks
  • Environment detection with development/production/test/staging support
  • Console formatting with ANSI styles and argument parsing
  • Typed exceptions like NullReferenceException and InvalidExpressionException
  • Safe property extraction via nameof() for both lambdas and keys
  • Core helpers for object and string manipulation with type guards
  • Type-safe utility Throw guard methods
  • Fully tested, 100% coverage, no dependencies

Installation

npm i @contextjs/system

Quick Start

1. Run an application

import { Application } from '@contextjs/system';

const app = new Application();

app.onRun(async () => {
    console.log("App booted");
});

await app.runAsync();

2. nameof() Example

import { Application, nameof } from '@contextjs/system';

const app = new Application();

class User {
    name: string = 'John Doe';
    age: number = 30;
}

class Config {
    port: number = 3000;
    host: string = 'localhost';
}

const user = new User();

const property = nameof(() => user.name); // "name"
const key = nameof<Config>('port');       // "port"

app.onRun(async () => {
    console.log("App is running");
    console.log(`User name: ${user.name}`);
    console.log(`User age: ${user.age}`);
});

await app.runAsync();

Console Formatting

import { Console } from "@contextjs/system";

Console.writeLineSuccess('✔ Success');
Console.writeLineWarning('⚠ Warning');
Console.writeLineError('✖ Error');
Console.writeLineInfo('ℹ Info');

Console.writeLineFormatted({ format: ['bold', 'green'], text: 'Styled' });

Common Utilities

Guard with Throw

import { Application, StringExtensions, Throw } from "@contextjs/system";

const name = StringExtensions.empty;
const configPath = "config.json";
const obj = { key: "value" };

const app = new Application();

app.onRun(async () => {
    Throw.ifNullOrWhiteSpace(name);
    Throw.ifNullOrEmpty(configPath);
    Throw.ifNull(obj);
});

await app.runAsync();

Use string helpers

import { StringExtensions } from "@contextjs/system";

const value = "a b c ";

StringExtensions.removeWhiteSpaces(value);
console.log(StringExtensions.isNullOrWhiteSpace(value));

Check object null state

import { ObjectExtensions } from "@contextjs/system";

const value: string = "Hello, World!";

if (!ObjectExtensions.isNullOrUndefined(value)) {
    // TypeScript will narrow the type
    console.log(value);
}

Testing

This library is fully covered with unit tests using Node's native test module.

Test coverage includes:

  • Environment parsing
  • Console formatting
  • String/object helpers
  • Exception and guard behavior
  • Version display
  • Application lifecycle execution
  • Property name extraction via nameof()

Philosophy

@contextjs/system is built to be the minimal core foundation for higher-level libraries in the ContextJS ecosystem. It provides safe, strongly-typed primitives that you can rely on without reflection, decorators, or external dependencies.

API Reference

For detailed API documentation, please refer to the API Reference.

25.0.0-beta.3

6 months ago

25.0.0-beta.2

6 months ago

25.0.0-beta.1

6 months ago

0.5.3-alpha.1

6 months ago

0.5.2-alpha.1

6 months ago

0.5.1-alpha.1

7 months ago

0.5.0-alpha.1

7 months ago

0.4.8

7 months ago

0.4.7

8 months ago

0.4.6

8 months ago

0.4.5

8 months ago

0.4.4

8 months ago

0.4.3

8 months ago

0.4.2

8 months ago

0.4.1

8 months ago

0.4.0

8 months ago

0.3.0

8 months ago