@junojs/common
v0.4.0
Published
Common utilities for JunoJS (Forms, Router, Http, i18n)
Downloads
57
Maintainers
Readme
@junojs/common
A set of core utilities for JunoJS applications, providing robust solutions for form management, HTTP communication, and internationalization.
✨ Features
- Reactive Forms: Decorator-based validation system with
FormModelfor state tracking. - HTTP Client: Interceptor-powered
HttpClientwith automatic JSON handling and error routing. - I18n Service: Lightweight, singleton-based internationalization with parameter interpolation.
- Zod Integration: Support for schema-based validation alongside class-level decorators.
🚀 Installation
npm install @junojs/common🛠️ Modules
📝 Forms & Validation
JunoJS Common provides a powerful way to handle forms using class decorators or schemas.
Class-Based Forms
Extend FormModel and use decorators to define validation rules.
import { FormModel, Required, Email, Match } from '@junojs/common';
class RegistrationForm extends FormModel {
@Required('Username is required')
username = '';
@Required()
@Email()
email = '';
@Required()
password = '';
@Match('password', 'Passwords do not match')
confirmPassword = '';
}
const form = new RegistrationForm();
// Check validity
if (form.isValid()) {
console.log('Form is valid!', form.getErrors());
}Schema Validation (Custom or Zod)
Use the built-in schema builder for ad-hoc validation.
import { s } from '@junojs/common';
const userSchema = s.object({
name: s.string().required(),
age: s.number().min(18)
});
const result = await userSchema.parse({ name: 'John', age: 16 });
// { success: false, errors: { age: 'Min length 18' } }🌐 HTTP Client
The HttpClient provides a clean API for making requests with support for interceptors and global error handling.
import { HttpClient } from '@junojs/common';
const http = new HttpClient();
// Interceptors
http.addRequestInterceptor((url, init) => {
init.headers = { ...init.headers, 'Authorization': 'Bearer ...' };
return [url, init];
});
// Fetching data
const users = await http.get<User[]>('/api/users');🌍 I18n Service
The I18nService handles multilingual content with simple registration and translation APIs.
import { I18nService } from '@junojs/common';
const i18n = I18nService.instance;
// Register translations
i18n.addTranslations('en', {
welcome: 'Welcome, {{name}}!',
submit: 'Send'
});
i18n.setLocale('en');
// Use in your components
const text = i18n.t('welcome', { name: 'Juno' }); // "Welcome, Juno!"📜 License
MIT © JunoJS Team
