diff --git a/src/Destroy.ts b/src/Destroy.ts index 249a7ad2c..c5b5e04db 100644 --- a/src/Destroy.ts +++ b/src/Destroy.ts @@ -4,11 +4,18 @@ */ export function objectDestroy(object: any) { - for (const [key, value] of Object.entries(object)) { + if (object === null || typeof object !== 'object') { + return + } + for (const key of Object.keys(object)) { + if (!Object.prototype.hasOwnProperty.call(object, key)) { + continue + } + const value = object[key] if (value instanceof Function) { - (object as Record)[key] = postMortem(value) + object[key] = postMortem(value) } else { - delete (object as Record)[key] + delete object[key] } } } diff --git a/src/NumberLiteralHelper.ts b/src/NumberLiteralHelper.ts index 8d7a526ce..82c145667 100644 --- a/src/NumberLiteralHelper.ts +++ b/src/NumberLiteralHelper.ts @@ -13,8 +13,9 @@ export class NumberLiteralHelper { constructor( private readonly config: Config ) { - const thousandSeparator = this.config.thousandSeparator === '.' ? `\\${this.config.thousandSeparator}` : this.config.thousandSeparator - const decimalSeparator = this.config.decimalSeparator === '.' ? `\\${this.config.decimalSeparator}` : this.config.decimalSeparator + const escapeRegex = (str: string): string => str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + const thousandSeparator = escapeRegex(this.config.thousandSeparator) + const decimalSeparator = escapeRegex(this.config.decimalSeparator) this.numberPattern = new RegExp(`^([+-]?((${decimalSeparator}\\d+)|(\\d+(${thousandSeparator}\\d{3,})*(${decimalSeparator}\\d*)?)))([eE][+-]?\\d+)?$`) this.allThousandSeparatorsRegex = new RegExp(`${thousandSeparator}`, 'g')