Greasy Fork is available in English.

urlcat-umd

A UMD version of urlcat

Skrip ini tidak untuk dipasang secara langsung. Ini adalah pustaka skrip lain untuk disertakan dengan direktif meta // @require https://update.greasyfork.org/scripts/489919/1346397/urlcat-umd.js

(function (global, factory) {
    global = typeof globalThis !== 'undefined' ? globalThis : global || self;
    factory(global.URLCat = {}, global.Qs);
})(this, (function (exports, qs) { 'use strict';

    var __defProp = Object.defineProperty;
    var __getOwnPropSymbols = Object.getOwnPropertySymbols;
    var __hasOwnProp = Object.prototype.hasOwnProperty;
    var __propIsEnum = Object.prototype.propertyIsEnumerable;
    var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
    var __spreadValues = (a, b) => {
        for (var prop in b || (b = {}))
            if (__hasOwnProp.call(b, prop))
                __defNormalProp(a, prop, b[prop]);
        if (__getOwnPropSymbols)
            for (var prop of __getOwnPropSymbols(b)) {
                if (__propIsEnum.call(b, prop))
                    __defNormalProp(a, prop, b[prop]);
            }
        return a;
    };
    function urlcat(baseUrlOrTemplate, pathTemplateOrParams, maybeParams = {}, config = {}) {
        if (typeof pathTemplateOrParams === "string") {
            const baseUrl = baseUrlOrTemplate;
            const pathTemplate = pathTemplateOrParams;
            const params = maybeParams;
            return urlcatImpl(pathTemplate, params, baseUrl, config);
        } else {
            const baseTemplate = baseUrlOrTemplate;
            const params = pathTemplateOrParams;
            return urlcatImpl(baseTemplate, params, void 0, config);
        }
    }
    function configure(rootConfig) {
        return (baseUrlOrTemplate, pathTemplateOrParams, maybeParams = {}, config = {}) => urlcat(baseUrlOrTemplate, pathTemplateOrParams, maybeParams, __spreadValues(__spreadValues({}, rootConfig), config));
    }
    function joinFullUrl(renderedPath, baseUrl, pathAndQuery) {
        if (renderedPath.length) {
            return join(baseUrl, "/", pathAndQuery);
        } else {
            return join(baseUrl, "?", pathAndQuery);
        }
    }
    function urlcatImpl(pathTemplate, params, baseUrl, config) {
        const { renderedPath, remainingParams } = path(pathTemplate, params);
        const cleanParams = removeNullOrUndef(remainingParams);
        const renderedQuery = query(cleanParams, config);
        const pathAndQuery = join(renderedPath, "?", renderedQuery);
        return baseUrl ? joinFullUrl(renderedPath, baseUrl, pathAndQuery) : pathAndQuery;
    }
    function query(params, config) {
        var _a, _b;
        if (Object.keys(params).length < 1) {
            return "";
        }
        const qsConfiguration = {
            format: (_b = (_a = config == null ? void 0 : config.objectFormat) == null ? void 0 : _a.format) != null ? _b : "RFC1738",
            arrayFormat: config == null ? void 0 : config.arrayFormat
        };
        return qs.stringify(params, qsConfiguration);
    }
    function subst(template, params) {
        const { renderedPath } = path(template, params);
        return renderedPath;
    }
    function path(template, params) {
        const remainingParams = __spreadValues({}, params);
        const renderedPath = template.replace(/:[_A-Za-z]+[_A-Za-z0-9]*/g, (p) => {
            const key = p.slice(1);
            validatePathParam(params, key);
            delete remainingParams[key];
            return encodeURIComponent(params[key]);
        });
        return { renderedPath, remainingParams };
    }
    function validatePathParam(params, key) {
        const allowedTypes = ["boolean", "string", "number"];
        if (!Object.prototype.hasOwnProperty.call(params, key)) {
            throw new Error(`Missing value for path parameter ${key}.`);
        }
        if (!allowedTypes.includes(typeof params[key])) {
            throw new TypeError(
                `Path parameter ${key} cannot be of type ${typeof params[key]}. Allowed types are: ${allowedTypes.join(", ")}.`
            );
        }
        if (typeof params[key] === "string" && params[key].trim() === "") {
            throw new Error(`Path parameter ${key} cannot be an empty string.`);
        }
    }
    function join(part1, separator, part2) {
        const p1 = part1.endsWith(separator) ? part1.slice(0, -separator.length) : part1;
        const p2 = part2.startsWith(separator) ? part2.slice(separator.length) : part2;
        return p1 === "" || p2 === "" ? p1 + p2 : p1 + separator + p2;
    }
    function removeNullOrUndef(params) {
        return Object.keys(params).filter((k) => notNullOrUndefined(params[k])).reduce((result, k) => {
            result[k] = params[k];
            return result;
        }, {});
    }
    function notNullOrUndefined(v) {
        return v !== void 0 && v !== null;
    }

    exports.configure = configure;
    exports.urlcat = urlcat;
    exports.join = join;
    exports.query = query;
    exports.subst = subst;

    // Object.defineProperty(exports, '__esModule', { value: true });

}));