@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
JavaScript
;
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=