massive update, probably broken
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-go / node_modules / whatwg-url / lib / URL.js
1 "use strict";
2
3 const conversions = require("webidl-conversions");
4 const utils = require("./utils.js");
5 const Impl = require(".//URL-impl.js");
6
7 const impl = utils.implSymbol;
8
9 function URL(url) {
10   if (!this || this[impl] || !(this instanceof URL)) {
11     throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.");
12   }
13   if (arguments.length < 1) {
14     throw new TypeError("Failed to construct 'URL': 1 argument required, but only " + arguments.length + " present.");
15   }
16   const args = [];
17   for (let i = 0; i < arguments.length && i < 2; ++i) {
18     args[i] = arguments[i];
19   }
20   args[0] = conversions["USVString"](args[0]);
21   if (args[1] !== undefined) {
22   args[1] = conversions["USVString"](args[1]);
23   }
24
25   module.exports.setup(this, args);
26 }
27
28 URL.prototype.toJSON = function toJSON() {
29   if (!this || !module.exports.is(this)) {
30     throw new TypeError("Illegal invocation");
31   }
32   const args = [];
33   for (let i = 0; i < arguments.length && i < 0; ++i) {
34     args[i] = arguments[i];
35   }
36   return this[impl].toJSON.apply(this[impl], args);
37 };
38 Object.defineProperty(URL.prototype, "href", {
39   get() {
40     return this[impl].href;
41   },
42   set(V) {
43     V = conversions["USVString"](V);
44     this[impl].href = V;
45   },
46   enumerable: true,
47   configurable: true
48 });
49
50 URL.prototype.toString = function () {
51   if (!this || !module.exports.is(this)) {
52     throw new TypeError("Illegal invocation");
53   }
54   return this.href;
55 };
56
57 Object.defineProperty(URL.prototype, "origin", {
58   get() {
59     return this[impl].origin;
60   },
61   enumerable: true,
62   configurable: true
63 });
64
65 Object.defineProperty(URL.prototype, "protocol", {
66   get() {
67     return this[impl].protocol;
68   },
69   set(V) {
70     V = conversions["USVString"](V);
71     this[impl].protocol = V;
72   },
73   enumerable: true,
74   configurable: true
75 });
76
77 Object.defineProperty(URL.prototype, "username", {
78   get() {
79     return this[impl].username;
80   },
81   set(V) {
82     V = conversions["USVString"](V);
83     this[impl].username = V;
84   },
85   enumerable: true,
86   configurable: true
87 });
88
89 Object.defineProperty(URL.prototype, "password", {
90   get() {
91     return this[impl].password;
92   },
93   set(V) {
94     V = conversions["USVString"](V);
95     this[impl].password = V;
96   },
97   enumerable: true,
98   configurable: true
99 });
100
101 Object.defineProperty(URL.prototype, "host", {
102   get() {
103     return this[impl].host;
104   },
105   set(V) {
106     V = conversions["USVString"](V);
107     this[impl].host = V;
108   },
109   enumerable: true,
110   configurable: true
111 });
112
113 Object.defineProperty(URL.prototype, "hostname", {
114   get() {
115     return this[impl].hostname;
116   },
117   set(V) {
118     V = conversions["USVString"](V);
119     this[impl].hostname = V;
120   },
121   enumerable: true,
122   configurable: true
123 });
124
125 Object.defineProperty(URL.prototype, "port", {
126   get() {
127     return this[impl].port;
128   },
129   set(V) {
130     V = conversions["USVString"](V);
131     this[impl].port = V;
132   },
133   enumerable: true,
134   configurable: true
135 });
136
137 Object.defineProperty(URL.prototype, "pathname", {
138   get() {
139     return this[impl].pathname;
140   },
141   set(V) {
142     V = conversions["USVString"](V);
143     this[impl].pathname = V;
144   },
145   enumerable: true,
146   configurable: true
147 });
148
149 Object.defineProperty(URL.prototype, "search", {
150   get() {
151     return this[impl].search;
152   },
153   set(V) {
154     V = conversions["USVString"](V);
155     this[impl].search = V;
156   },
157   enumerable: true,
158   configurable: true
159 });
160
161 Object.defineProperty(URL.prototype, "hash", {
162   get() {
163     return this[impl].hash;
164   },
165   set(V) {
166     V = conversions["USVString"](V);
167     this[impl].hash = V;
168   },
169   enumerable: true,
170   configurable: true
171 });
172
173
174 module.exports = {
175   is(obj) {
176     return !!obj && obj[impl] instanceof Impl.implementation;
177   },
178   create(constructorArgs, privateData) {
179     let obj = Object.create(URL.prototype);
180     this.setup(obj, constructorArgs, privateData);
181     return obj;
182   },
183   setup(obj, constructorArgs, privateData) {
184     if (!privateData) privateData = {};
185     privateData.wrapper = obj;
186
187     obj[impl] = new Impl.implementation(constructorArgs, privateData);
188     obj[impl][utils.wrapperSymbol] = obj;
189   },
190   interface: URL,
191   expose: {
192     Window: { URL: URL },
193     Worker: { URL: URL }
194   }
195 };
196