UNPKG

typescript-class-helpers

Version:
72 lines 8.28 kB
import { _ } from 'tnp-core/browser'; import { SYMBOL } from './symbols'; /** * @DEPRECATED * Describe fields assigned in class */ const FRegEx = new RegExp(/(?:this\.)(.+?(?= ))/g); export function describeFromClassStringify(target, parent = false) { // @ts-ignore var result = []; if (parent) { var proto = Object.getPrototypeOf(target.prototype); if (proto) { // @ts-ignore result = result.concat(describeFromClassStringify(proto.constructor, parent)); } } const classString = target.toString(); const matches = classString.match(FRegEx) || []; result = result.concat(matches); return result.map(prop => prop .replace('this.', '') .replace('.', '') .replace(')', '') .replace('(', '')); } /** * Describe fields assigne through @DefaultModelWithMapping decorator * without functions */ export function describeByDefaultModelsAndMapping(target) { let res = {}; if (target) { // @ts-ignore if (target[SYMBOL.DEFAULT_MODEL]) { // @ts-ignore Object.keys(target[SYMBOL.DEFAULT_MODEL]) .filter(key => { // @ts-ignore return !_.isFunction(target[SYMBOL.DEFAULT_MODEL][key]); }) .forEach(key => { // @ts-ignore return res[key] = null; }); } // @ts-ignore let mapping = target[SYMBOL.MODELS_MAPPING]; if (_.isArray(mapping)) { mapping.forEach(m => { Object.keys(m) .forEach(key => { // @ts-ignore res[key] = null; }); }); } else if (mapping) { Object.keys(mapping) .forEach(key => { // @ts-ignore res[key] = null; }); } } let propNames = Object.keys(res).filter(f => !!f); propNames = (!propNames.includes('id') ? ['id'] : []).concat(propNames); return propNames; } ; ({}); // @--end-of-file-for-module=typescript-class-helpers lib/describe-class.ts //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpYmUtY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC90eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvcHJvamVjdHMvdHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzL3NyYy9saWIvZGVzY3JpYmUtY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFJbkM7OztJQUdJO0FBQ0osTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUNuRCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsTUFBZ0IsRUFBRSxNQUFNLEdBQUcsS0FBSztJQUN6RSxhQUFhO0lBQ2IsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLElBQUksTUFBTSxFQUFFLENBQUM7UUFDWCxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRCxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsYUFBYTtZQUNiLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNoRixDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QyxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUsvQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoQyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJO1NBQzNCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1NBQ3BCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1NBQ2hCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1NBQ2hCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQ2xCLENBQUE7QUFFSCxDQUFDO0FBRUQ7OztLQUdLO0FBQ0wsTUFBTSxVQUFVLGlDQUFpQyxDQUFDLE1BQWdCO0lBQ2hFLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQTtJQUNaLElBQUksTUFBTSxFQUFFLENBQUM7UUFDWCxhQUFhO1FBQ2IsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDakMsYUFBYTtZQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztpQkFDdEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNaLGFBQWE7Z0JBQ2IsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQztpQkFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2IsYUFBYTtnQkFDYixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsYUFBYTtRQUNiLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdkIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7cUJBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNiLGFBQWE7b0JBQ2IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFDbEIsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7YUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBRW5CLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2lCQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2IsYUFBYTtnQkFDYixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4RSxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQywyRUFBMkUiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgU1lNQk9MIH0gZnJvbSAnLi9zeW1ib2xzJztcblxuXG5cbi8qKlxuICAqIEBERVBSRUNBVEVEXG4gICogRGVzY3JpYmUgZmllbGRzIGFzc2lnbmVkIGluIGNsYXNzXG4gICovXG5jb25zdCBGUmVnRXggPSBuZXcgUmVnRXhwKC8oPzp0aGlzXFwuKSguKz8oPz0gKSkvZyk7XG5leHBvcnQgZnVuY3Rpb24gZGVzY3JpYmVGcm9tQ2xhc3NTdHJpbmdpZnkodGFyZ2V0OiBGdW5jdGlvbiwgcGFyZW50ID0gZmFsc2UpOiBzdHJpbmdbXSB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAocGFyZW50KSB7XG4gICAgdmFyIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRhcmdldC5wcm90b3R5cGUpO1xuICAgIGlmIChwcm90bykge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChkZXNjcmliZUZyb21DbGFzc1N0cmluZ2lmeShwcm90by5jb25zdHJ1Y3RvciwgcGFyZW50KSk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGNsYXNzU3RyaW5nID0gdGFyZ2V0LnRvU3RyaW5nKCk7XG4gIGNvbnN0IG1hdGNoZXMgPSBjbGFzc1N0cmluZy5tYXRjaChGUmVnRXgpIHx8IFtdXG5cblxuXG5cbiAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChtYXRjaGVzKTtcbiAgcmV0dXJuIHJlc3VsdC5tYXAocHJvcCA9PiBwcm9wXG4gICAgLnJlcGxhY2UoJ3RoaXMuJywgJycpXG4gICAgLnJlcGxhY2UoJy4nLCAnJylcbiAgICAucmVwbGFjZSgnKScsICcnKVxuICAgIC5yZXBsYWNlKCcoJywgJycpXG4gIClcblxufVxuXG4vKipcbiAgICogRGVzY3JpYmUgZmllbGRzIGFzc2lnbmUgdGhyb3VnaCBARGVmYXVsdE1vZGVsV2l0aE1hcHBpbmcgZGVjb3JhdG9yXG4gICAqIHdpdGhvdXQgZnVuY3Rpb25zXG4gICAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2NyaWJlQnlEZWZhdWx0TW9kZWxzQW5kTWFwcGluZyh0YXJnZXQ6IEZ1bmN0aW9uKTogc3RyaW5nW10ge1xuICBsZXQgcmVzID0ge31cbiAgaWYgKHRhcmdldCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAodGFyZ2V0W1NZTUJPTC5ERUZBVUxUX01PREVMXSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgT2JqZWN0LmtleXModGFyZ2V0W1NZTUJPTC5ERUZBVUxUX01PREVMXSlcbiAgICAgICAgLmZpbHRlcihrZXkgPT4ge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICByZXR1cm4gIV8uaXNGdW5jdGlvbih0YXJnZXRbU1lNQk9MLkRFRkFVTFRfTU9ERUxdW2tleV0pO1xuICAgICAgICB9KVxuICAgICAgICAuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICByZXR1cm4gcmVzW2tleV0gPSBudWxsO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGxldCBtYXBwaW5nID0gdGFyZ2V0W1NZTUJPTC5NT0RFTFNfTUFQUElOR107XG4gICAgaWYgKF8uaXNBcnJheShtYXBwaW5nKSkge1xuICAgICAgbWFwcGluZy5mb3JFYWNoKG0gPT4ge1xuICAgICAgICBPYmplY3Qua2V5cyhtKVxuICAgICAgICAgIC5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByZXNba2V5XSA9IG51bGw7XG4gICAgICAgICAgfSk7XG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAobWFwcGluZykge1xuXG4gICAgICBPYmplY3Qua2V5cyhtYXBwaW5nKVxuICAgICAgICAuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICByZXNba2V5XSA9IG51bGw7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGxldCBwcm9wTmFtZXMgPSBPYmplY3Qua2V5cyhyZXMpLmZpbHRlcihmID0+ICEhZik7XG4gIHByb3BOYW1lcyA9ICghcHJvcE5hbWVzLmluY2x1ZGVzKCdpZCcpID8gWydpZCddIDogW10pLmNvbmNhdChwcm9wTmFtZXMpO1xuICByZXR1cm4gcHJvcE5hbWVzO1xufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dHlwZXNjcmlwdC1jbGFzcy1oZWxwZXJzIGxpYi9kZXNjcmliZS1jbGFzcy50cyJdfQ==