You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							113 lines
						
					
					
						
							3.0 KiB
						
					
					
				
			
		
		
	
	
							113 lines
						
					
					
						
							3.0 KiB
						
					
					
				"use strict"; | 
						|
 | 
						|
const conversions = require("webidl-conversions"); | 
						|
const utils = require("./utils.js"); | 
						|
 | 
						|
const impl = utils.implSymbol; | 
						|
 | 
						|
class XMLSerializer { | 
						|
  constructor() { | 
						|
    return iface.setup(Object.create(new.target.prototype)); | 
						|
  } | 
						|
 | 
						|
  serializeToString(root) { | 
						|
    if (!this || !module.exports.is(this)) { | 
						|
      throw new TypeError("Illegal invocation"); | 
						|
    } | 
						|
 | 
						|
    if (arguments.length < 1) { | 
						|
      throw new TypeError( | 
						|
        "Failed to execute 'serializeToString' on 'XMLSerializer': 1 argument required, but only " + | 
						|
          arguments.length + | 
						|
          " present." | 
						|
      ); | 
						|
    } | 
						|
    const args = []; | 
						|
    { | 
						|
      let curArg = arguments[0]; | 
						|
      curArg = utils.tryImplForWrapper(curArg); | 
						|
      args.push(curArg); | 
						|
    } | 
						|
    return this[impl].serializeToString(...args); | 
						|
  } | 
						|
} | 
						|
Object.defineProperties(XMLSerializer.prototype, { | 
						|
  serializeToString: { enumerable: true }, | 
						|
  [Symbol.toStringTag]: { value: "XMLSerializer", configurable: true } | 
						|
}); | 
						|
const iface = { | 
						|
  // When an interface-module that implements this interface as a mixin is loaded, it will append its own `.is()` | 
						|
  // method into this array. It allows objects that directly implements *those* interfaces to be recognized as | 
						|
  // implementing this mixin interface. | 
						|
  _mixedIntoPredicates: [], | 
						|
  is(obj) { | 
						|
    if (obj) { | 
						|
      if (utils.hasOwn(obj, impl) && obj[impl] instanceof Impl.implementation) { | 
						|
        return true; | 
						|
      } | 
						|
      for (const isMixedInto of module.exports._mixedIntoPredicates) { | 
						|
        if (isMixedInto(obj)) { | 
						|
          return true; | 
						|
        } | 
						|
      } | 
						|
    } | 
						|
    return false; | 
						|
  }, | 
						|
  isImpl(obj) { | 
						|
    if (obj) { | 
						|
      if (obj instanceof Impl.implementation) { | 
						|
        return true; | 
						|
      } | 
						|
 | 
						|
      const wrapper = utils.wrapperForImpl(obj); | 
						|
      for (const isMixedInto of module.exports._mixedIntoPredicates) { | 
						|
        if (isMixedInto(wrapper)) { | 
						|
          return true; | 
						|
        } | 
						|
      } | 
						|
    } | 
						|
    return false; | 
						|
  }, | 
						|
  convert(obj, { context = "The provided value" } = {}) { | 
						|
    if (module.exports.is(obj)) { | 
						|
      return utils.implForWrapper(obj); | 
						|
    } | 
						|
    throw new TypeError(`${context} is not of type 'XMLSerializer'.`); | 
						|
  }, | 
						|
 | 
						|
  create(constructorArgs, privateData) { | 
						|
    let obj = Object.create(XMLSerializer.prototype); | 
						|
    obj = this.setup(obj, constructorArgs, privateData); | 
						|
    return obj; | 
						|
  }, | 
						|
  createImpl(constructorArgs, privateData) { | 
						|
    let obj = Object.create(XMLSerializer.prototype); | 
						|
    obj = this.setup(obj, constructorArgs, privateData); | 
						|
    return utils.implForWrapper(obj); | 
						|
  }, | 
						|
  _internalSetup(obj) {}, | 
						|
  setup(obj, constructorArgs, privateData) { | 
						|
    if (!privateData) privateData = {}; | 
						|
 | 
						|
    privateData.wrapper = obj; | 
						|
 | 
						|
    this._internalSetup(obj); | 
						|
    Object.defineProperty(obj, impl, { | 
						|
      value: new Impl.implementation(constructorArgs, privateData), | 
						|
      configurable: true | 
						|
    }); | 
						|
 | 
						|
    obj[impl][utils.wrapperSymbol] = obj; | 
						|
    if (Impl.init) { | 
						|
      Impl.init(obj[impl], privateData); | 
						|
    } | 
						|
    return obj; | 
						|
  }, | 
						|
  interface: XMLSerializer, | 
						|
  expose: { | 
						|
    Window: { XMLSerializer } | 
						|
  } | 
						|
}; // iface | 
						|
module.exports = iface; | 
						|
 | 
						|
const Impl = require("./XMLSerializer-impl.js");
 | 
						|
 |