mirror of
https://github.com/FrankerFaceZ/FrankerFaceZ.git
synced 2025-06-28 15:27:43 +00:00
4.12.5
* Added: Localization Message Capture. Message capture is a developer feature intended to make it easier to add new strings to the localization project. * Added: Translation Tester. A tool to allow translators to test translations directly in the app before submitting them to the localization project. * Fixed: Modified emotes not appearing correctly in tool-tips.
This commit is contained in:
parent
ebb954e6c1
commit
f4c989561e
25 changed files with 521 additions and 82 deletions
|
@ -349,6 +349,58 @@ export function get(path, object) {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Copy an object so that it can be safely serialized. If an object
|
||||
* is not serializable, such as a promise, returns null.
|
||||
*
|
||||
* @export
|
||||
* @param {*} object The thing to copy.
|
||||
* @param {Number} [depth=2] The maximum depth to explore the object.
|
||||
* @param {Set} [seen=null] A Set of seen objects. Internal use only.
|
||||
* @returns {Object} The copy to safely store or use.
|
||||
*/
|
||||
export function shallow_copy(object, depth = 2, seen = null) {
|
||||
if ( object == null )
|
||||
return object;
|
||||
|
||||
if ( object instanceof Promise || typeof object === 'function' )
|
||||
return null;
|
||||
|
||||
if ( typeof object !== 'object' )
|
||||
return object;
|
||||
|
||||
if ( depth === 0 )
|
||||
return null;
|
||||
|
||||
if ( ! seen )
|
||||
seen = new Set;
|
||||
|
||||
seen.add(object);
|
||||
|
||||
if ( Array.isArray(object) ) {
|
||||
const out = [];
|
||||
for(const val of object) {
|
||||
if ( seen.has(val) )
|
||||
continue;
|
||||
|
||||
out.push(shallow_copy(val, depth - 1, new Set(seen)));
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
const out = {};
|
||||
for(const [key, val] of Object.entries(object) ) {
|
||||
if ( seen.has(val) )
|
||||
continue;
|
||||
|
||||
out[key] = shallow_copy(val, depth - 1, new Set(seen));
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
|
||||
export function deep_copy(object, seen) {
|
||||
if ( object === null )
|
||||
return null;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue