// SPDX-FileCopyrightText: 2022 Johannes Loher // // SPDX-License-Identifier: MIT import en from '../lang/en.json'; function setupPrimitives() { Object.defineProperties(Number, { isNumeric: { value: function (n: unknown) { if (n instanceof Array) return false; else if (([null, ''] as unknown[]).includes(n)) return false; // @ts-expect-error Abusing JavaScript a bit here, but it's the implementation from foundry return +n === +n; }, }, fromString: { value: function (str: unknown) { if (typeof str !== 'string' || !str.length) return NaN; // Remove whitespace. str = str.replace(/\s+/g, ''); return Number(str); }, }, }); Object.defineProperties(Math, { clamped: { value: function (num: number, min: number, max: number) { return Math.min(max, Math.max(num, min)); }, }, }); } function setupStubs() { class StubGame { constructor() { this.i18n = { localize: (key: string) => (key in en ? en[key as keyof typeof en] : key), }; } i18n: { localize: (key: string) => string; }; } const game = new StubGame(); Object.defineProperties(globalThis, { game: { value: game }, Game: { value: StubGame }, }); } setupPrimitives(); setupStubs();