UNPKG

js-partial-classes

Version:

A utility package for supplementing main classes with methods from partial classes, supporting both static and instance methods.

74 lines (59 loc) • 1.93 kB
import { supplement, iterateDescriptors, SUPPLEMENTED_SYMBOLS } from '../index.js'; // Test classes class MainClass { static { // Supplement with partial class during static initialization supplement(this, import('./test-partial.js')); } constructor() { this.name = 'Main'; } mainMethod() { return 'Main method'; } } class PartialClass { static staticMethod() { return 'Static method from partial'; } instanceMethod() { return 'Instance method from partial'; } anotherInstanceMethod() { return 'Another instance method'; } } // Test the supplement function async function testSupplement() { console.log('Testing supplement function...'); // Test after static initialization supplementation const mainAfter = new MainClass(); await MainClass[SUPPLEMENTED_SYMBOLS.SUPPLEMENTATION_COMPLETED]; console.log('After static initialization supplementation:'); console.log('- Main method:', mainAfter.mainMethod()); console.log('- Static method:', MainClass.staticMethod()); console.log('- Instance method:', mainAfter.instanceMethod()); console.log('- Another instance method:', mainAfter.anotherInstanceMethod()); console.log('\nāœ… Static initialization supplement test passed!'); } // Test the iterateDescriptors function function testIterateDescriptors() { console.log('\nTesting iterateDescriptors function...'); const descriptors = []; iterateDescriptors(PartialClass, ([key, value]) => { descriptors.push({ key, type: typeof value.value }); }); console.log('Found descriptors:', descriptors.map(d => `${d.key} (${d.type})`)); console.log('āœ… IterateDescriptors test passed!'); } // Run tests async function runTests() { try { await testSupplement(); testIterateDescriptors(); console.log('\nšŸŽ‰ All tests passed!'); } catch (error) { console.error('āŒ Test failed:', error); } } runTests();