/* SPDX-License-Identifier: MIT AND CC0-1.0 * * This file is part of Haketilo. * * Function: Replacement for require('url') to use with jsonschema library. * * License for the resolve() function: * *************************************** * * Copyright Node.js contributors. All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to * deal in the Software without restriction, including without limitation the * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or * sell copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS * IN THE SOFTWARE. * ******************************************************************************* * * License notice for the rest of the file: * *************************************** * * Copyright (C) 2022 Wojtek Kosior * * This program is free software: you can redistribute it and/or modify * it under the terms of the CC0 1.0 Universal License as published by * the Creative Commons Corporation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * CC0 1.0 Universal License for more details. */ /* * The original jsonschema code used legacy resolve() function from * require('url'). Here we define in a replacement for it. */ const dummy_host = 'haketilo.resolve.example.com'; const dummy_prefix = `http://${dummy_host}/`; function resolve(from, to) { const resolvedUrl = new URL(to, new URL(from, dummy_prefix)); if (resolvedUrl.hostname === dummy_host) { // `from` is a relative URL. const { pathname, search, hash } = resolvedUrl; return pathname + search + hash; } return resolvedUrl.toString(); } #EXPORT resolve function parse(url_string) { if (arguments.length > 1) throw "error: this is a mocked version of parse() that only accepts one argument"; return new URL(url_string); } #EXPORT parse