server/front/src/utility.ts
jonny 3836d5037c game state can be read out by the client APIs
# Conflicts:
#	front/src/Api/IframeListener.ts
#	front/src/Phaser/Game/GameScene.ts
#	front/src/iframe_api.ts
2021-04-21 15:56:52 +02:00

18 lines
No EOL
528 B
TypeScript

export function deepFreezeClone<T> (obj:T):Readonly<T> {
return deepFreeze(JSON.parse(JSON.stringify(obj)));
}
function deepFreeze<T> (obj:T):T{
Object.freeze(obj);
if (obj === undefined) {
return obj;
}
const propertyNames = Object.getOwnPropertyNames(obj) as Array<keyof T>;
propertyNames.forEach(function (prop) {
if (obj[prop] !== null&& (typeof obj[prop] === "object" || typeof obj[prop] === "function") && !Object.isFrozen(obj[prop])) {
deepFreezeClone(obj[prop]);
}
});
return obj;
}