UNPKG

@snow-tzu/type-config

Version:

Core configuration management system with Spring Boot-like features

35 lines (34 loc) 1.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MapBinder = void 0; require("reflect-metadata"); const decorators_1 = require("./decorators"); class MapBinder { isMapProperty(target, propertyKey) { const type = Reflect.getMetadata('design:type', target, propertyKey); return type === Map; } isRecordProperty(target, propertyKey) { const type = Reflect.getMetadata('design:type', target, propertyKey); const isRecord = Reflect.getMetadata(decorators_1.RECORD_TYPE_KEY, target, propertyKey); return type === Object && isRecord === true; } objectToMap(obj, valueType) { if (!obj || typeof obj !== 'object' || Array.isArray(obj)) { throw new Error('Expected object for Map binding'); } const map = new Map(); for (const [key, value] of Object.entries(obj)) { if (valueType) { const instance = new valueType(); Object.assign(instance, value); map.set(key, instance); } else { map.set(key, value); } } return map; } } exports.MapBinder = MapBinder;