@sebastianwessel/quickjs
Version:
A typescript package to execute JavaScript and TypeScript code in a WebAssembly QuickJS sandbox
3 lines (2 loc) • 2.35 kB
TypeScript
declare const _default: "\n\nexport class URL {\n constructor(url, base) {\n const parser = __parseURL(url,base)\n this.href = parser.href;\n this.protocol = parser.protocol;\n this.host = parser.host;\n this.hostname = parser.hostname;\n this.port = parser.port;\n this.pathname = parser.pathname;\n this.search = parser.search;\n this.searchParams = new URLSearchParams(parser.search)\n this.hash = parser.hash;\n this.username = parser.username;\n this.password = parser.password;\n this.origin = parser.protocol+'//'+parser.host;\n }\n\n toString() {\n return this.href;\n }\n\n toJSON() {\n return this.href;\n }\n}\n\n\n\n\nexport class URLSearchParams {\n constructor(init = '') {\n this.params = {};\n\n if (typeof init === 'string') {\n this._parseFromString(init);\n } else if (init instanceof URLSearchParams) {\n init.forEach((value, key) => this.append(key, value));\n } else if (typeof init === 'object') {\n Object.keys(init).forEach(key => this.append(key, init[key]));\n }\n }\n\n _parseFromString(query) {\n if (query.startsWith('?')) {\n query = query.slice(1);\n }\n query.split('&').forEach(pair => {\n const [key, value] = pair.split('=').map(decodeURIComponent);\n this.append(key, value);\n });\n }\n\n append(key, value) {\n if (!this.params[key]) {\n this.params[key] = [];\n }\n this.params[key].push(value);\n }\n\n delete(key) {\n delete this.params[key];\n }\n\n get(key) {\n return this.params[key] ? this.params[key][0] : null;\n }\n\n getAll(key) {\n return this.params[key] || [];\n }\n\n has(key) {\n return this.params.hasOwnProperty(key);\n }\n\n set(key, value) {\n this.params[key] = [value];\n }\n\n toString() {\n return Object.keys(this.params)\n .map(key => this.params[key]\n .map(value => encodeURIComponent(key)+'='+encodeURIComponent(value))\n .join('&'))\n .join('&');\n }\n\n forEach(callback, thisArg) {\n Object.keys(this.params).forEach(key => {\n this.params[key].forEach(value => {\n callback.call(thisArg, value, key, this);\n });\n });\n }\n}\n\nglobalThis.URLSearchParams = URLSearchParams;\nglobalThis.URL = URL;\n\n\nexport default { URLSearchParams, URL }\n";
export default _default;