UNPKG

ses

Version:

Hardened JavaScript for Fearless Cooperation

42 lines (36 loc) 1 kB
import { Math, TypeError, create, getOwnPropertyDescriptors, objectPrototype, } from './commons.js'; export default function tameMathObject() { const originalMath = Math; const initialMath = originalMath; // to follow the naming pattern const { random: _, ...otherDescriptors } = getOwnPropertyDescriptors(originalMath); // Use concise methods to obtain named functions without constructors. const tamedMethods = { /** * `%SharedMath%.random()` throws a TypeError starting with "secure mode". * See https://github.com/endojs/endo/issues/910#issuecomment-1581855420 */ random() { throw TypeError('secure mode %SharedMath%.random() throws'); }, }; const sharedMath = create(objectPrototype, { ...otherDescriptors, random: { value: tamedMethods.random, writable: true, enumerable: false, configurable: true, }, }); return { '%InitialMath%': initialMath, '%SharedMath%': sharedMath, }; }