123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- "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");
|