@wearesage/schema
Version:
A flexible schema definition and validation system for TypeScript with multi-database support
73 lines (61 loc) • 2.37 kB
text/typescript
// Let's test what actually happens with dynamic imports
class TestUser {
name = 'test';
}
// Simulate what happens in our decorator
function testTarget() {
return import('./test-entities/User').User; // This will fail, but let's see what it returns
}
function testDirectImport() {
return TestUser; // Direct class reference
}
console.log('=== Testing direct class reference ===');
const directResult = testDirectImport();
console.log('Direct result:', directResult);
console.log('Direct type:', typeof directResult);
console.log('Direct name:', directResult.name);
console.log('Direct constructor:', directResult.constructor);
console.log('\n=== Testing dynamic import reference ===');
try {
const dynamicResult = testTarget();
console.log('Dynamic result:', dynamicResult);
console.log('Dynamic type:', typeof dynamicResult);
console.log('Dynamic is Promise?:', dynamicResult instanceof Promise);
console.log('Dynamic has then?:', typeof dynamicResult?.then);
if (dynamicResult instanceof Promise) {
console.log('It IS a Promise! Resolving...');
dynamicResult.then(resolved => {
console.log('Resolved to:', resolved);
console.log('Resolved type:', typeof resolved);
console.log('Resolved name:', resolved?.name);
}).catch(err => {
console.log('Promise rejected:', err.message);
});
}
} catch (error) {
console.log('Error calling dynamic import:', error.message);
}
// Test with actual entity classes
import { User } from './test-entities/User';
console.log('\n=== Testing with real entity ===');
function testRealEntity() {
return User;
}
function testRealDynamicImport() {
// This simulates what our decorators do
return import('./test-entities/User').then(module => module.User);
}
const realDirect = testRealEntity();
console.log('Real direct:', realDirect);
console.log('Real direct type:', typeof realDirect);
console.log('Real direct name:', realDirect.name);
console.log('\n=== Testing real dynamic import ===');
const realDynamic = testRealDynamicImport();
console.log('Real dynamic result:', realDynamic);
console.log('Real dynamic is Promise?:', realDynamic instanceof Promise);
if (realDynamic instanceof Promise) {
realDynamic.then(resolved => {
console.log('Real dynamic resolved to:', resolved);
console.log('Real dynamic resolved name:', resolved.name);
});
}