mirror of
https://gitlab.com/openstapps/openstapps.git
synced 2026-01-23 01:53:00 +00:00
feat: add function to remove undefined properties
This commit is contained in:
@@ -155,6 +155,38 @@ export class ConnectorClient extends Client {
|
|||||||
return thingWithoutReferences as SCAssociatedThingWithoutReferences<THING>;
|
return thingWithoutReferences as SCAssociatedThingWithoutReferences<THING>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Recursively deletes all undefined properties from an object instance
|
||||||
|
*
|
||||||
|
* @param obj Object to delete undefined properties from
|
||||||
|
*/
|
||||||
|
static removeUndefinedProperties(obj: object): void {
|
||||||
|
// return atomic data types and arrays (recursion anchor)
|
||||||
|
if (typeof obj !== 'object' || Array.isArray(obj)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// check each key
|
||||||
|
for (const key in obj) {
|
||||||
|
/* istanbul ignore if */
|
||||||
|
if (!obj.hasOwnProperty(key)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const indexedObj = obj as { [k: string]: unknown; };
|
||||||
|
|
||||||
|
if (typeof indexedObj[key] === 'undefined') {
|
||||||
|
// delete undefined keyss
|
||||||
|
delete indexedObj[key];
|
||||||
|
} else {
|
||||||
|
// check recursive
|
||||||
|
ConnectorClient.removeUndefinedProperties(indexedObj[key] as object);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Request a bulk transfer to the backend
|
* Request a bulk transfer to the backend
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -361,6 +361,27 @@ export class ConnectorClientSpec {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@test
|
||||||
|
async removeUndefinedProperties() {
|
||||||
|
const objectWithUndefinedProperties = {value: 'foo',
|
||||||
|
novalue: undefined,
|
||||||
|
nested: {
|
||||||
|
value: 'foo',
|
||||||
|
novalue: undefined},
|
||||||
|
};
|
||||||
|
const objectWithoutUndefinedProperties = {value: 'foo',
|
||||||
|
nested: {
|
||||||
|
value: 'foo'},
|
||||||
|
};
|
||||||
|
ConnectorClient.removeUndefinedProperties(objectWithUndefinedProperties);
|
||||||
|
|
||||||
|
expect(objectWithUndefinedProperties).to.deep.equal(objectWithoutUndefinedProperties, JSON.stringify(
|
||||||
|
[objectWithUndefinedProperties, objectWithoutUndefinedProperties],
|
||||||
|
null,
|
||||||
|
2,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
@test
|
@test
|
||||||
async update() {
|
async update() {
|
||||||
const message: SCMessage = {
|
const message: SCMessage = {
|
||||||
|
|||||||
Reference in New Issue
Block a user