js-partial-classes
Version:
A utility package for supplementing main classes with methods from partial classes, supporting both static and instance methods.
49 lines (37 loc) • 1.34 kB
JavaScript
import { supplement } from 'js-partial-classes';
// Main class with static initialization block
class ApiService {
static {
// Supplement with partial classes during static initialization
supplement(this, import('./auth-partial.js'));
supplement(this, import('./logging-partial.js'));
}
constructor(baseUrl) {
this.baseUrl = baseUrl;
this.endpoints = {};
}
addEndpoint(name, path) {
this.endpoints[name] = path;
}
getEndpoint(name) {
return this.endpoints[name];
}
}
// Test the supplemented methods (after static initialization)
async function testApiService() {
console.log('ApiService has been supplemented with auth and logging methods');
// Test the supplemented methods
const apiService = new ApiService('https://api.example.com');
// Static methods
const token = ApiService.generateToken();
console.log('Generated token:', token);
console.log('Token validation:', ApiService.validateToken(token)); // true
ApiService.logInfo('API service initialized');
// Instance methods
apiService.logError(new Error('Test error message'));
// Original methods still work
apiService.addEndpoint('users', '/users');
console.log('Users endpoint:', apiService.getEndpoint('users')); // '/users'
}
// Run the example
testApiService().catch(console.error);