diff --git a/src/PKPass.ts b/src/PKPass.ts index ccd22a5..2e10fd8 100644 --- a/src/PKPass.ts +++ b/src/PKPass.ts @@ -199,7 +199,7 @@ export default class PKPass extends Bundle { */ public get props(): Readonly { - return freezeRecusive(this[propsSymbol]); + return Utils.freezeRecursive(this[propsSymbol]); } /** @@ -913,31 +913,6 @@ export default class PKPass extends Bundle { } } -function freezeRecusive(object: Object) { - const objectCopy = {}; - const objectEntries = Object.entries(object); - - for (let i = 0; i < objectEntries.length; i++) { - const [key, value] = objectEntries[i]; - - if (value && typeof value === "object") { - if (Array.isArray(value)) { - objectCopy[key] = value.slice(); - - for (let j = 0; j < value.length; j++) { - objectCopy[key][j] = freezeRecusive(value[j]); - } - } else { - objectCopy[key] = freezeRecusive(value); - } - } else { - objectCopy[key] = value; - } - } - - return Object.freeze(objectCopy); -} - function validateJSONBuffer( buffer: Buffer, schema: Parameters[0], diff --git a/src/utils.ts b/src/utils.ts index dd65ddd..5db486e 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -73,3 +73,35 @@ function padMeTwo(original: string | number) { export function removeHidden(from: Array): Array { return from.filter((e) => e.charAt(0) !== "."); } + +/** + * Freezes recursively an object and all of its properties + * + * @param object + * @returns + */ + +export function freezeRecursive(object: Object) { + const objectCopy = {}; + const objectEntries = Object.entries(object); + + for (let i = 0; i < objectEntries.length; i++) { + const [key, value] = objectEntries[i]; + + if (value && typeof value === "object") { + if (Array.isArray(value)) { + objectCopy[key] = value.slice(); + + for (let j = 0; j < value.length; j++) { + objectCopy[key][j] = freezeRecursive(value[j]); + } + } else { + objectCopy[key] = freezeRecursive(value); + } + } else { + objectCopy[key] = value; + } + } + + return Object.freeze(objectCopy); +}