mirror of
				https://scm.univ-tours.fr/22107988t/rappaurio-sae501_502.git
				synced 2025-11-04 05:15:23 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			197 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			197 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
"use strict";
 | 
						|
 | 
						|
const conversions = require("webidl-conversions");
 | 
						|
const utils = require("./utils.js");
 | 
						|
const Impl = require(".//URL-impl.js");
 | 
						|
 | 
						|
const impl = utils.implSymbol;
 | 
						|
 | 
						|
function URL(url) {
 | 
						|
  if (!this || this[impl] || !(this instanceof URL)) {
 | 
						|
    throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.");
 | 
						|
  }
 | 
						|
  if (arguments.length < 1) {
 | 
						|
    throw new TypeError("Failed to construct 'URL': 1 argument required, but only " + arguments.length + " present.");
 | 
						|
  }
 | 
						|
  const args = [];
 | 
						|
  for (let i = 0; i < arguments.length && i < 2; ++i) {
 | 
						|
    args[i] = arguments[i];
 | 
						|
  }
 | 
						|
  args[0] = conversions["USVString"](args[0]);
 | 
						|
  if (args[1] !== undefined) {
 | 
						|
  args[1] = conversions["USVString"](args[1]);
 | 
						|
  }
 | 
						|
 | 
						|
  module.exports.setup(this, args);
 | 
						|
}
 | 
						|
 | 
						|
URL.prototype.toJSON = function toJSON() {
 | 
						|
  if (!this || !module.exports.is(this)) {
 | 
						|
    throw new TypeError("Illegal invocation");
 | 
						|
  }
 | 
						|
  const args = [];
 | 
						|
  for (let i = 0; i < arguments.length && i < 0; ++i) {
 | 
						|
    args[i] = arguments[i];
 | 
						|
  }
 | 
						|
  return this[impl].toJSON.apply(this[impl], args);
 | 
						|
};
 | 
						|
Object.defineProperty(URL.prototype, "href", {
 | 
						|
  get() {
 | 
						|
    return this[impl].href;
 | 
						|
  },
 | 
						|
  set(V) {
 | 
						|
    V = conversions["USVString"](V);
 | 
						|
    this[impl].href = V;
 | 
						|
  },
 | 
						|
  enumerable: true,
 | 
						|
  configurable: true
 | 
						|
});
 | 
						|
 | 
						|
URL.prototype.toString = function () {
 | 
						|
  if (!this || !module.exports.is(this)) {
 | 
						|
    throw new TypeError("Illegal invocation");
 | 
						|
  }
 | 
						|
  return this.href;
 | 
						|
};
 | 
						|
 | 
						|
Object.defineProperty(URL.prototype, "origin", {
 | 
						|
  get() {
 | 
						|
    return this[impl].origin;
 | 
						|
  },
 | 
						|
  enumerable: true,
 | 
						|
  configurable: true
 | 
						|
});
 | 
						|
 | 
						|
Object.defineProperty(URL.prototype, "protocol", {
 | 
						|
  get() {
 | 
						|
    return this[impl].protocol;
 | 
						|
  },
 | 
						|
  set(V) {
 | 
						|
    V = conversions["USVString"](V);
 | 
						|
    this[impl].protocol = V;
 | 
						|
  },
 | 
						|
  enumerable: true,
 | 
						|
  configurable: true
 | 
						|
});
 | 
						|
 | 
						|
Object.defineProperty(URL.prototype, "username", {
 | 
						|
  get() {
 | 
						|
    return this[impl].username;
 | 
						|
  },
 | 
						|
  set(V) {
 | 
						|
    V = conversions["USVString"](V);
 | 
						|
    this[impl].username = V;
 | 
						|
  },
 | 
						|
  enumerable: true,
 | 
						|
  configurable: true
 | 
						|
});
 | 
						|
 | 
						|
Object.defineProperty(URL.prototype, "password", {
 | 
						|
  get() {
 | 
						|
    return this[impl].password;
 | 
						|
  },
 | 
						|
  set(V) {
 | 
						|
    V = conversions["USVString"](V);
 | 
						|
    this[impl].password = V;
 | 
						|
  },
 | 
						|
  enumerable: true,
 | 
						|
  configurable: true
 | 
						|
});
 | 
						|
 | 
						|
Object.defineProperty(URL.prototype, "host", {
 | 
						|
  get() {
 | 
						|
    return this[impl].host;
 | 
						|
  },
 | 
						|
  set(V) {
 | 
						|
    V = conversions["USVString"](V);
 | 
						|
    this[impl].host = V;
 | 
						|
  },
 | 
						|
  enumerable: true,
 | 
						|
  configurable: true
 | 
						|
});
 | 
						|
 | 
						|
Object.defineProperty(URL.prototype, "hostname", {
 | 
						|
  get() {
 | 
						|
    return this[impl].hostname;
 | 
						|
  },
 | 
						|
  set(V) {
 | 
						|
    V = conversions["USVString"](V);
 | 
						|
    this[impl].hostname = V;
 | 
						|
  },
 | 
						|
  enumerable: true,
 | 
						|
  configurable: true
 | 
						|
});
 | 
						|
 | 
						|
Object.defineProperty(URL.prototype, "port", {
 | 
						|
  get() {
 | 
						|
    return this[impl].port;
 | 
						|
  },
 | 
						|
  set(V) {
 | 
						|
    V = conversions["USVString"](V);
 | 
						|
    this[impl].port = V;
 | 
						|
  },
 | 
						|
  enumerable: true,
 | 
						|
  configurable: true
 | 
						|
});
 | 
						|
 | 
						|
Object.defineProperty(URL.prototype, "pathname", {
 | 
						|
  get() {
 | 
						|
    return this[impl].pathname;
 | 
						|
  },
 | 
						|
  set(V) {
 | 
						|
    V = conversions["USVString"](V);
 | 
						|
    this[impl].pathname = V;
 | 
						|
  },
 | 
						|
  enumerable: true,
 | 
						|
  configurable: true
 | 
						|
});
 | 
						|
 | 
						|
Object.defineProperty(URL.prototype, "search", {
 | 
						|
  get() {
 | 
						|
    return this[impl].search;
 | 
						|
  },
 | 
						|
  set(V) {
 | 
						|
    V = conversions["USVString"](V);
 | 
						|
    this[impl].search = V;
 | 
						|
  },
 | 
						|
  enumerable: true,
 | 
						|
  configurable: true
 | 
						|
});
 | 
						|
 | 
						|
Object.defineProperty(URL.prototype, "hash", {
 | 
						|
  get() {
 | 
						|
    return this[impl].hash;
 | 
						|
  },
 | 
						|
  set(V) {
 | 
						|
    V = conversions["USVString"](V);
 | 
						|
    this[impl].hash = V;
 | 
						|
  },
 | 
						|
  enumerable: true,
 | 
						|
  configurable: true
 | 
						|
});
 | 
						|
 | 
						|
 | 
						|
module.exports = {
 | 
						|
  is(obj) {
 | 
						|
    return !!obj && obj[impl] instanceof Impl.implementation;
 | 
						|
  },
 | 
						|
  create(constructorArgs, privateData) {
 | 
						|
    let obj = Object.create(URL.prototype);
 | 
						|
    this.setup(obj, constructorArgs, privateData);
 | 
						|
    return obj;
 | 
						|
  },
 | 
						|
  setup(obj, constructorArgs, privateData) {
 | 
						|
    if (!privateData) privateData = {};
 | 
						|
    privateData.wrapper = obj;
 | 
						|
 | 
						|
    obj[impl] = new Impl.implementation(constructorArgs, privateData);
 | 
						|
    obj[impl][utils.wrapperSymbol] = obj;
 | 
						|
  },
 | 
						|
  interface: URL,
 | 
						|
  expose: {
 | 
						|
    Window: { URL: URL },
 | 
						|
    Worker: { URL: URL }
 | 
						|
  }
 | 
						|
};
 | 
						|
 |