simple-squiggle

A restricted subset of Squiggle
Log | Files | Refs | README

set.js (1334B)


      1 var superPropBase = require("./superPropBase.js");
      2 
      3 var defineProperty = require("./defineProperty.js");
      4 
      5 function set(target, property, value, receiver) {
      6   if (typeof Reflect !== "undefined" && Reflect.set) {
      7     set = Reflect.set;
      8   } else {
      9     set = function set(target, property, value, receiver) {
     10       var base = superPropBase(target, property);
     11       var desc;
     12 
     13       if (base) {
     14         desc = Object.getOwnPropertyDescriptor(base, property);
     15 
     16         if (desc.set) {
     17           desc.set.call(receiver, value);
     18           return true;
     19         } else if (!desc.writable) {
     20           return false;
     21         }
     22       }
     23 
     24       desc = Object.getOwnPropertyDescriptor(receiver, property);
     25 
     26       if (desc) {
     27         if (!desc.writable) {
     28           return false;
     29         }
     30 
     31         desc.value = value;
     32         Object.defineProperty(receiver, property, desc);
     33       } else {
     34         defineProperty(receiver, property, value);
     35       }
     36 
     37       return true;
     38     };
     39   }
     40 
     41   return set(target, property, value, receiver);
     42 }
     43 
     44 function _set(target, property, value, receiver, isStrict) {
     45   var s = set(target, property, value, receiver || target);
     46 
     47   if (!s && isStrict) {
     48     throw new Error('failed to set property');
     49   }
     50 
     51   return value;
     52 }
     53 
     54 module.exports = _set, module.exports.__esModule = true, module.exports["default"] = module.exports;