123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396 |
- "use strict";
- const conversions = require("webidl-conversions");
- const utils = require("./utils.js");
- const impl = utils.implSymbol;
- function URL(url) {
- if (!new.target) {
- throw new TypeError(
- "Failed to construct 'URL'. Please use the 'new' operator; this 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], { context: "Failed to construct 'URL': parameter 1" });
- if (args[1] !== undefined) {
- args[1] = conversions["USVString"](args[1], { context: "Failed to construct 'URL': parameter 2" });
- }
- iface.setup(this, args);
- }
- Object.defineProperty(URL, "prototype", {
- value: URL.prototype,
- writable: false,
- enumerable: false,
- configurable: false
- });
- URL.prototype.toJSON = function toJSON() {
- if (!this || !module.exports.is(this)) {
- throw new TypeError("Illegal invocation");
- }
- return this[impl].toJSON();
- };
- Object.defineProperty(URL.prototype, "href", {
- get() {
- if (!this || !module.exports.is(this)) {
- throw new TypeError("Illegal invocation");
- }
- return this[impl]["href"];
- },
- set(V) {
- if (!this || !module.exports.is(this)) {
- throw new TypeError("Illegal invocation");
- }
- V = conversions["USVString"](V, { context: "Failed to set the 'href' property on 'URL': The provided value" });
- this[impl]["href"] = V;
- },
- enumerable: true,
- configurable: true
- });
- URL.prototype.toString = function toString() {
- if (!this || !module.exports.is(this)) {
- throw new TypeError("Illegal invocation");
- }
- return this[impl]["href"];
- };
- Object.defineProperty(URL.prototype, "origin", {
- get() {
- if (!this || !module.exports.is(this)) {
- throw new TypeError("Illegal invocation");
- }
- return this[impl]["origin"];
- },
- enumerable: true,
- configurable: true
- });
- Object.defineProperty(URL.prototype, "protocol", {
- get() {
- if (!this || !module.exports.is(this)) {
- throw new TypeError("Illegal invocation");
- }
- return this[impl]["protocol"];
- },
- set(V) {
- if (!this || !module.exports.is(this)) {
- throw new TypeError("Illegal invocation");
- }
- V = conversions["USVString"](V, { context: "Failed to set the 'protocol' property on 'URL': The provided value" });
- this[impl]["protocol"] = V;
- },
- enumerable: true,
- configurable: true
- });
- Object.defineProperty(URL.prototype, "username", {
- get() {
- if (!this || !module.exports.is(this)) {
- throw new TypeError("Illegal invocation");
- }
- return this[impl]["username"];
- },
- set(V) {
- if (!this || !module.exports.is(this)) {
- throw new TypeError("Illegal invocation");
- }
- V = conversions["USVString"](V, { context: "Failed to set the 'username' property on 'URL': The provided value" });
- this[impl]["username"] = V;
- },
- enumerable: true,
- configurable: true
- });
- Object.defineProperty(URL.prototype, "password", {
- get() {
- if (!this || !module.exports.is(this)) {
- throw new TypeError("Illegal invocation");
- }
- return this[impl]["password"];
- },
- set(V) {
- if (!this || !module.exports.is(this)) {
- throw new TypeError("Illegal invocation");
- }
- V = conversions["USVString"](V, { context: "Failed to set the 'password' property on 'URL': The provided value" });
- this[impl]["password"] = V;
- },
- enumerable: true,
- configurable: true
- });
- Object.defineProperty(URL.prototype, "host", {
- get() {
- if (!this || !module.exports.is(this)) {
- throw new TypeError("Illegal invocation");
- }
- return this[impl]["host"];
- },
- set(V) {
- if (!this || !module.exports.is(this)) {
- throw new TypeError("Illegal invocation");
- }
- V = conversions["USVString"](V, { context: "Failed to set the 'host' property on 'URL': The provided value" });
- this[impl]["host"] = V;
- },
- enumerable: true,
- configurable: true
- });
- Object.defineProperty(URL.prototype, "hostname", {
- get() {
- if (!this || !module.exports.is(this)) {
- throw new TypeError("Illegal invocation");
- }
- return this[impl]["hostname"];
- },
- set(V) {
- if (!this || !module.exports.is(this)) {
- throw new TypeError("Illegal invocation");
- }
- V = conversions["USVString"](V, { context: "Failed to set the 'hostname' property on 'URL': The provided value" });
- this[impl]["hostname"] = V;
- },
- enumerable: true,
- configurable: true
- });
- Object.defineProperty(URL.prototype, "port", {
- get() {
- if (!this || !module.exports.is(this)) {
- throw new TypeError("Illegal invocation");
- }
- return this[impl]["port"];
- },
- set(V) {
- if (!this || !module.exports.is(this)) {
- throw new TypeError("Illegal invocation");
- }
- V = conversions["USVString"](V, { context: "Failed to set the 'port' property on 'URL': The provided value" });
- this[impl]["port"] = V;
- },
- enumerable: true,
- configurable: true
- });
- Object.defineProperty(URL.prototype, "pathname", {
- get() {
- if (!this || !module.exports.is(this)) {
- throw new TypeError("Illegal invocation");
- }
- return this[impl]["pathname"];
- },
- set(V) {
- if (!this || !module.exports.is(this)) {
- throw new TypeError("Illegal invocation");
- }
- V = conversions["USVString"](V, { context: "Failed to set the 'pathname' property on 'URL': The provided value" });
- this[impl]["pathname"] = V;
- },
- enumerable: true,
- configurable: true
- });
- Object.defineProperty(URL.prototype, "search", {
- get() {
- if (!this || !module.exports.is(this)) {
- throw new TypeError("Illegal invocation");
- }
- return this[impl]["search"];
- },
- set(V) {
- if (!this || !module.exports.is(this)) {
- throw new TypeError("Illegal invocation");
- }
- V = conversions["USVString"](V, { context: "Failed to set the 'search' property on 'URL': The provided value" });
- this[impl]["search"] = V;
- },
- enumerable: true,
- configurable: true
- });
- Object.defineProperty(URL.prototype, "searchParams", {
- get() {
- if (!this || !module.exports.is(this)) {
- throw new TypeError("Illegal invocation");
- }
- return utils.getSameObject(this, "searchParams", () => {
- return utils.tryWrapperForImpl(this[impl]["searchParams"]);
- });
- },
- enumerable: true,
- configurable: true
- });
- Object.defineProperty(URL.prototype, "hash", {
- get() {
- if (!this || !module.exports.is(this)) {
- throw new TypeError("Illegal invocation");
- }
- return this[impl]["hash"];
- },
- set(V) {
- if (!this || !module.exports.is(this)) {
- throw new TypeError("Illegal invocation");
- }
- V = conversions["USVString"](V, { context: "Failed to set the 'hash' property on 'URL': The provided value" });
- this[impl]["hash"] = V;
- },
- enumerable: true,
- configurable: true
- });
- Object.defineProperty(URL.prototype, Symbol.toStringTag, {
- value: "URL",
- writable: false,
- enumerable: false,
- configurable: true
- });
- const iface = {
- mixedInto: [],
- is(obj) {
- if (obj) {
- if (obj[impl] instanceof Impl.implementation) {
- return true;
- }
- for (let i = 0; i < module.exports.mixedInto.length; ++i) {
- if (obj instanceof module.exports.mixedInto[i]) {
- return true;
- }
- }
- }
- return false;
- },
- isImpl(obj) {
- if (obj) {
- if (obj instanceof Impl.implementation) {
- return true;
- }
- const wrapper = utils.wrapperForImpl(obj);
- for (let i = 0; i < module.exports.mixedInto.length; ++i) {
- if (wrapper instanceof module.exports.mixedInto[i]) {
- 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 'URL'.`);
- },
- create(constructorArgs, privateData) {
- let obj = Object.create(URL.prototype);
- obj = this.setup(obj, constructorArgs, privateData);
- return obj;
- },
- createImpl(constructorArgs, privateData) {
- let obj = Object.create(URL.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),
- writable: false,
- enumerable: false,
- configurable: true
- });
- obj[impl][utils.wrapperSymbol] = obj;
- if (Impl.init) {
- Impl.init(obj[impl], privateData);
- }
- return obj;
- },
- interface: URL,
- expose: {
- Window: { URL },
- Worker: { URL }
- }
- }; // iface
- module.exports = iface;
- const Impl = require(".//URL-impl.js");
|