{"version":3,"sources":["jsdelivr-header.js","/npm/cookiefile@1.0.10/http-cookiefile.js"],"names":[],"mappings":"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","file":"/npm/cookiefile@1.0.10/http-cookiefile.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/cookiefile@1.0.10/http-cookiefile.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/**\n * Created by horat1us on 09.10.16.\n */\n\"use strict\";\nmodule.exports = {\n    Cookie: class Cookie {\n        constructor({domain, httpOnly = false, crossDomain = false, path = '/', https = false, expire = 0, name, value}) {\n            if (!(expire instanceof Date || require('isnumeric')(expire))) {\n                throw new module.exports.CookieError();\n            }\n            this.domain = domain;\n            this.crossDomain = crossDomain;\n            this.path = path;\n            this.https = https;\n            this.expire = ~~expire ? ~~expire : 0;\n            this.value = value;\n            this.cookieName = name;\n            this.httpOnly = httpOnly\n        }\n\n        /** @return {String} */\n        get name() {\n            return this.cookieName;\n        }\n\n        get isCrossDomain() {\n            return this.crossDomain.toString().toUpperCase();\n        }\n\n        get isHttps() {\n            return this.https.toString().toUpperCase();\n        }\n\n        /**\n         * @return {Cookie}\n         */\n        clone() {\n            return new Cookie(this);\n        }\n\n        /** @return {String} */\n        toString() {\n            let _this = this,\n                string = this.httpOnly ? \"#HttpOnly_\" : \"\";\n            ['domain', 'isCrossDomain', 'path', 'isHttps', 'expire', 'name', 'value']\n                .forEach(prop => string += _this[prop] + '\\t');\n            return string.trim() + '\\n';\n        }\n\n        toHeader() {\n            return `${this.name}=${this.value}; `;\n        }\n\n        toResponseHeader() {\n\n            return `Set-Cookie: ${this.name}=${this.value}; ` +\n                [['Domain', 'domain'], ['Path', 'path']]\n                    .map(([name, prop]) => `${name}=${this[prop]}`)\n                    .join('; ') + '; ' +\n                `expires=${new Date(this.expire).toUTCString()}; ` +\n                [['Secure', 'https'], ['HttpOnly', 'httpOnly']]\n                    .filter(([,property]) => this[property])\n                    .map(([name]) => ` ${name}`)\n                    .join('; ');\n        }\n\n        /**\n         * @param {Cookie} cookie\n         * @return {Boolean}\n         */\n        is(cookie) {\n            for (let prop in ['domain', 'crossDomain', 'path', 'https', 'expire', 'name', 'value']) {\n                if (this[prop] !== cookie[prop]) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    },\n    CookieMap: class CookieMap extends Map {\n        constructor(file = []) {\n            if (Array.isArray(file)) {\n                super();\n                file.forEach(cookie => {\n                    if (!(cookie instanceof module.exports.Cookie)) {\n                        throw new module.exports.CookieError(4);\n                    }\n                    this.set(cookie);\n                });\n                this.file = false;\n            } else if (typeof(file) === 'string') {\n                super();\n                this.file = file;\n                return this.readFile();\n            } else {\n                throw new TypeError(\"Wrong argument supplied for CookieMap construtor\");\n            }\n        }\n\n        /**\n         * @param {String} nameValue a=b=c\n         * @returns {Array} [ 'a', 'b=c' ]\n         */\n        static split(nameValue) {\n            let parts = nameValue\n                .trim()\n                .split('=');\n            if (parts.length == 1) {\n                return parts;\n            }\n            parts = [parts[0], (nameValue.replace(`${parts[0]}=`, ''))];\n            return parts;\n        }\n\n        /**\n         * @param {String} header HTTP Header like Set-Cookie: ...\n         * @param {Object} props\n         * @return {CookieMap}\n         */\n        header(header, props = {}) {\n            if (!CookieMap.validateHeader(header)) {\n                return this;\n            }\n            let CookieInfo = {};\n            header\n                .replace('Set-Cookie: ', '')\n                .split(';')\n                .map(CookieMap.split)\n                .map(parts => parts.map(part => part.trim()))\n                .filter(part => {\n                    if (part.length === 2) {\n                        return true;\n                    }\n                    switch (part[0]) {\n                        case \"Secure\":\n                            CookieInfo.https = true;\n                            break;\n                        case \"HttpOnly\":\n                            CookieInfo.httpOnly = true;\n                            break;\n                    }\n                    return false;\n                })\n                .forEach(([name, value]) => {\n                    switch (name.toLowerCase()) {\n                        case \"domain\":\n                            return CookieInfo.domain = value;\n                        case \"path\":\n                            return CookieInfo.path = value;\n                        case \"expires\":\n                            return CookieInfo.expire = new Date(value);\n                        case \"same-Site\":\n                        case \"max-Age\":\n                            // TODO: Integrate support for Max-Age and Same-Site directives\n                            return;\n                        default:\n                            CookieInfo.name = name;\n                            CookieInfo.value = value;\n                    }\n                });\n\n            CookieInfo = Object.assign(props, CookieInfo);\n\n            ['name', 'value', 'domain']\n                .forEach(prop => {\n                    if (!CookieInfo.hasOwnProperty(prop)) {\n                        throw new module.exports.CookieError(5);\n                    }\n                });\n\n            this.set(new module.exports.Cookie(CookieInfo));\n\n            return this;\n        }\n\n        /**\n         * @param {String} requestHeader: Cookie: a=b; d=c\n         * @param {Object} params\n         * @return {CookieMap}\n         */\n        generate(requestHeader, params = {}) {\n            requestHeader\n                .replace('Cookie: ', '')\n                .trim()\n                .split(';')\n                .map(cookie => cookie.trim())\n                .filter(cookie => cookie.length > 0)\n                .map(CookieMap.split)\n                .filter(cookie => cookie.length === 2)\n                .map(([name, value]) => Object.assign({name, value}, params))\n                .map(params => new module.exports.Cookie(params))\n                .forEach(cookie => this.set(cookie));\n\n            return this;\n        }\n\n        /**\n         * Takes sample HTTP Cookie and return true if set-cookie header given\n         * @param {String} header HTTP Header like Set-Cookie: ...\n         */\n        static validateHeader(header) {\n            return header\n                    .trim()\n                    .substr(0, 11) === \"Set-Cookie:\";\n        }\n\n        /**\n         * @param {Cookie} cookie\n         * @return {CookieMap}\n         */\n        set(cookie) {\n            if (!(cookie instanceof module.exports.Cookie)) {\n                throw new TypeError(`Cookie must be type of cookie, ${typeof(cookie)} given`);\n            }\n            super.set(cookie.name, cookie);\n\n            return this;\n        }\n\n        /**\n         * @return {CookieMap}\n         */\n        save(file = false) {\n            if (file === false || typeof(file) !== 'string') {\n                file = this.file;\n            }\n            if (file === false) {\n                throw new module.exports.CookieError(2);\n            }\n\n            require('fs').writeFileSync(file, this.toString());\n\n            return this;\n        }\n\n        /**\n         * @returns {CookieMap}\n         */\n        clone() {\n            let cookieMap = new CookieMap();\n            for ([, cookie] of this) {\n                cookieMap.set(cookie.clone());\n            }\n            return cookieMap;\n        }\n\n        toString() {\n            let cookieContent = module.exports.CookieFile.Header;\n\n            /** @var {Cookie} cookie */\n            for (let cookie of this.values()) {\n                cookieContent += cookie.toString();\n            }\n\n            return cookieContent.trim();\n        }\n\n        /**\n         * @return {String} HTTP User header\n         */\n        toRequestHeader({http = true, secure = true} = {}) {\n            let string = 'Cookie: ';\n            /**\n             * @var {String} name\n             * @var {Cookie} cookie\n             */\n            for (let [, cookie] of this) {\n                string += cookie.toHeader();\n            }\n\n            return string.replace(/;\\s*$/, '');\n        }\n\n        /**\n         * @return {String} HTTP Server header\n         */\n        toResponseHeader() {\n            let headers = [];\n\n            for (let [,cookie] of this) {\n                headers.push(cookie.toResponseHeader());\n            }\n\n            return headers;\n        }\n\n\n        /**\n         * @return {CookieMap}\n         */\n        readFile() {\n            if (!require('file-exists')(this.file)) {\n                throw new module.exports.CookieError(1);\n            }\n            const fs = require('fs');\n            let cookieFileContents = fs.readFileSync(this.file, {encoding: 'UTF-8'})\n\n            const cookies = cookieFileContents\n                .split('\\n')\n                .map(line => line.split(\"\\t\").map((word) => word.trim()))\n                .filter(line => line.length === 7)\n                .map(cookieData => ({\n                    name: cookieData[5],\n                    value: cookieData[6],\n                    domain: cookieData[0],\n                    crossDomain: cookieData[1] === 'TRUE',\n                    path: cookieData[2],\n                    https: cookieData[3] === 'TRUE',\n                    expire: ~~cookieData[4] ? ~~cookieData[4] : 0,\n                }))\n                .map(cookie => {\n                    if (cookie.domain.substr(0, 10) === \"#HttpOnly_\") {\n                        cookie.httpOnly = true;\n                        cookie.domain = cookie.domain.substr(10);\n                    }\n                    return cookie;\n                })\n                .forEach(cookie => this.set(\n                    new module.exports.Cookie(cookie)\n                ));\n\n            return this;\n        }\n\n\n        get size() {\n            return super.size;\n        }\n    },\n    CookieError: class CookieError extends Error {\n        constructor(code = 0) {\n            const message = (() => {\n                switch (code) {\n                    case 5:\n                        return \"Wrong header passed for creating cookie\";\n                    case 4:\n                        return \"Cookie passed to constructor is incorrect\";\n                    case 3:\n                        return \"Cookie file writing error\";\n                    case 2:\n                        return 'You can not save this object because is initialized by Map, not file';\n                    case 1:\n                        return 'Cookie File doesn\\'t exists';\n                    default:\n                        return \"Cookie expire must be instance of Date or integer\";\n                }\n            })();\n\n            super(message);\n        }\n    }\n    ,\n    CookieFile: {\n        Header: `# Netscape HTTP Cookie File\n# https://curl.haxx.se/docs/http-cookies.html\n# This file was generated by node-httpcookie! Edit at your own risk\n\n`,\n    }\n}\n;"]}