UNPKG

@hyperledger/cactus-common

Version:

Universal library used by both front end and back end components of Cactus. Aims to be a developer swiss army knife.

66 lines 3.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Objects = void 0; /** * Utility class responsible for common and tedious tasks involving Javascript objects (instances of classes). */ class Objects { /** * Returns a list of methods for an instance, including the inherited ones. * Example: * * ```javascript * class Base { * constructor() { * } * getX() { * return 'x'; * } * } * * class A extends Base { * getA() { * return 'a'; * } * } * * const a = new A(); * const methodNames = Objects.getAllMethodNames(a); * console.log(methodNames); * // [ 'getA', 'getX' ] * ``` * * @param anObject */ static getAllMethodNames(anObject) { let aRecord = anObject; let properties = []; do { const symbols = Object.getOwnPropertySymbols(aRecord); const symbolPropertyNames = symbols.map((aSymbol) => aSymbol.toString()); const propertyNamesCurrent = Object.getOwnPropertyNames(aRecord) .concat(symbolPropertyNames) .sort() .filter((propertyName, index, arr) => { return (typeof aRecord[propertyName] === "function" && propertyName !== "constructor" && (index === 0 || propertyName !== arr[index - 1]) && properties.indexOf(propertyName) === -1); }); properties = properties.concat(propertyNamesCurrent); aRecord = Object.getPrototypeOf(aRecord); } while (aRecord && Object.getPrototypeOf(aRecord)); return properties; } static getAllFieldNames(anObject) { const allFieldNames = []; for (const propertyKey in anObject) { if (Object.prototype.hasOwnProperty.call(anObject, propertyKey)) { allFieldNames.push(propertyKey); } } return allFieldNames; } } exports.Objects = Objects; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tYWluL3R5cGVzY3JpcHQvb2JqZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILE1BQWEsT0FBTztJQUNsQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0EwQkc7SUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBaUI7UUFDL0MsSUFBSSxPQUFPLEdBQUcsUUFBNkMsQ0FBQztRQUM1RCxJQUFJLFVBQVUsR0FBYSxFQUFFLENBQUM7UUFDOUIsR0FBRyxDQUFDO1lBQ0YsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RELE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFFekUsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDO2lCQUM3RCxNQUFNLENBQUMsbUJBQW1CLENBQUM7aUJBQzNCLElBQUksRUFBRTtpQkFDTixNQUFNLENBQUMsQ0FBQyxZQUFvQixFQUFFLEtBQWEsRUFBRSxHQUFHLEVBQUUsRUFBRTtnQkFDbkQsT0FBTyxDQUNMLE9BQU8sT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLFVBQVU7b0JBQzNDLFlBQVksS0FBSyxhQUFhO29CQUM5QixDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksWUFBWSxLQUFLLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ2hELFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3hDLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztZQUVMLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDckQsT0FBTyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxRQUFRLE9BQU8sSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ3BELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFTSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBaUM7UUFDOUQsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLEtBQUssTUFBTSxXQUFXLElBQUksUUFBUSxFQUFFLENBQUM7WUFDbkMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hFLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0NBQ0Y7QUE5REQsMEJBOERDIn0=