{"version":3,"file":"helpers.532a8e33.js","sources":["../../../node_modules/cookie/index.js","../../../node_modules/universal-cookie/es6/utils.js","../../../node_modules/universal-cookie/es6/Cookies.js","../../../frontend/features/ideation/utils/userAuthenticate.js","../../../frontend/api/v3/helpers.js"],"sourcesContent":["/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var pairs = str.split(';')\n var dec = opt.decode || decode;\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var index = pair.indexOf('=')\n\n // skip things that don't look like key=value\n if (index < 0) {\n continue;\n }\n\n var key = pair.substring(0, index).trim()\n\n // only assign once\n if (undefined == obj[key]) {\n var val = pair.substring(index + 1, pair.length).trim()\n\n // quoted values\n if (val[0] === '\"') {\n val = val.slice(1, -1)\n }\n\n obj[key] = tryDecode(val, dec);\n }\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid')\n }\n\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n","import * as cookie from 'cookie';\r\nexport function hasDocumentCookie() {\r\n // Can we get/set cookies on document.cookie?\r\n return typeof document === 'object' && typeof document.cookie === 'string';\r\n}\r\nexport function cleanCookies() {\r\n document.cookie.split(';').forEach(function (c) {\r\n document.cookie = c\r\n .replace(/^ +/, '')\r\n .replace(/=.*/, '=;expires=' + new Date().toUTCString() + ';path=/');\r\n });\r\n}\r\nexport function parseCookies(cookies, options) {\r\n if (typeof cookies === 'string') {\r\n return cookie.parse(cookies, options);\r\n }\r\n else if (typeof cookies === 'object' && cookies !== null) {\r\n return cookies;\r\n }\r\n else {\r\n return {};\r\n }\r\n}\r\nexport function isParsingCookie(value, doNotParse) {\r\n if (typeof doNotParse === 'undefined') {\r\n // We guess if the cookie start with { or [, it has been serialized\r\n doNotParse =\r\n !value || (value[0] !== '{' && value[0] !== '[' && value[0] !== '\"');\r\n }\r\n return !doNotParse;\r\n}\r\nexport function readCookie(value, options) {\r\n if (options === void 0) { options = {}; }\r\n var cleanValue = cleanupCookieValue(value);\r\n if (isParsingCookie(cleanValue, options.doNotParse)) {\r\n try {\r\n return JSON.parse(cleanValue);\r\n }\r\n catch (e) {\r\n // At least we tried\r\n }\r\n }\r\n // Ignore clean value if we failed the deserialization\r\n // It is not relevant anymore to trim those values\r\n return value;\r\n}\r\nfunction cleanupCookieValue(value) {\r\n // express prepend j: before serializing a cookie\r\n if (value && value[0] === 'j' && value[1] === ':') {\r\n return value.substr(2);\r\n }\r\n return value;\r\n}\r\n","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nimport * as cookie from 'cookie';\r\nimport { hasDocumentCookie, parseCookies, readCookie } from './utils';\r\nvar Cookies = /** @class */ (function () {\r\n function Cookies(cookies, options) {\r\n var _this = this;\r\n this.changeListeners = [];\r\n this.HAS_DOCUMENT_COOKIE = false;\r\n this.cookies = parseCookies(cookies, options);\r\n new Promise(function () {\r\n _this.HAS_DOCUMENT_COOKIE = hasDocumentCookie();\r\n }).catch(function () { });\r\n }\r\n Cookies.prototype._updateBrowserValues = function (parseOptions) {\r\n if (!this.HAS_DOCUMENT_COOKIE) {\r\n return;\r\n }\r\n this.cookies = cookie.parse(document.cookie, parseOptions);\r\n };\r\n Cookies.prototype._emitChange = function (params) {\r\n for (var i = 0; i < this.changeListeners.length; ++i) {\r\n this.changeListeners[i](params);\r\n }\r\n };\r\n Cookies.prototype.get = function (name, options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n return readCookie(this.cookies[name], options);\r\n };\r\n Cookies.prototype.getAll = function (options, parseOptions) {\r\n if (options === void 0) { options = {}; }\r\n this._updateBrowserValues(parseOptions);\r\n var result = {};\r\n for (var name_1 in this.cookies) {\r\n result[name_1] = readCookie(this.cookies[name_1], options);\r\n }\r\n return result;\r\n };\r\n Cookies.prototype.set = function (name, value, options) {\r\n var _a;\r\n if (typeof value === 'object') {\r\n value = JSON.stringify(value);\r\n }\r\n this.cookies = __assign(__assign({}, this.cookies), (_a = {}, _a[name] = value, _a));\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, value, options);\r\n }\r\n this._emitChange({ name: name, value: value, options: options });\r\n };\r\n Cookies.prototype.remove = function (name, options) {\r\n var finalOptions = (options = __assign(__assign({}, options), { expires: new Date(1970, 1, 1, 0, 0, 1), maxAge: 0 }));\r\n this.cookies = __assign({}, this.cookies);\r\n delete this.cookies[name];\r\n if (this.HAS_DOCUMENT_COOKIE) {\r\n document.cookie = cookie.serialize(name, '', finalOptions);\r\n }\r\n this._emitChange({ name: name, value: undefined, options: options });\r\n };\r\n Cookies.prototype.addChangeListener = function (callback) {\r\n this.changeListeners.push(callback);\r\n };\r\n Cookies.prototype.removeChangeListener = function (callback) {\r\n var idx = this.changeListeners.indexOf(callback);\r\n if (idx >= 0) {\r\n this.changeListeners.splice(idx, 1);\r\n }\r\n };\r\n return Cookies;\r\n}());\r\nexport default Cookies;\r\n","// Libraries\nimport Cookies from 'universal-cookie';\n\nconst cookies = new Cookies();\n\nexport const getUserToken = () => {\n return cookies.get(gon.jwtCookieName) || '';\n};\n\nexport const userAuthenticated = () => {\n return Boolean(getUserToken());\n};\n","// Libraries\nimport camelcaseKeys from 'camelcase-keys';\nimport { isArray, isNumber, isObject } from 'underscore';\nimport { currentLanguage } from 'i18n';\n\n// Errors\nimport { logError } from 'common/utils/errors';\nimport { jsonaDeserialize } from 'common/utils/helpers';\n\n// Utils\nimport { getUserToken, userAuthenticated } from 'ideation/utils/userAuthenticate';\n\nconst API_BASE_URL = '/api/v3';\nconst JSON_API_MEDIA = 'application/vnd.api+json';\nconst DEFAULT_HEADERS = {\n 'X-CSRF-Token': document.querySelector('meta[name=\"csrf-token\"]')?.getAttribute('content'),\n 'Content-Language': currentLanguage,\n accept: JSON_API_MEDIA,\n};\n\nexport class FetchError extends Error {\n constructor(message, status, statusText) {\n super(message);\n this.name = 'FetchError';\n this.status = status;\n this.statusText = statusText;\n }\n}\n\nfunction defaultHeaders() {\n if (userAuthenticated()) {\n return { ...DEFAULT_HEADERS, authorization: `bearer ${getUserToken()}` };\n }\n\n return DEFAULT_HEADERS;\n}\n\nfunction queryString(originalParams) {\n const params = new URLSearchParams();\n\n for (const [paramKey, paramValue] of Object.entries(originalParams)) {\n if (!paramValue && !isNumber(paramValue)) continue;\n\n if (isObject(paramValue) && !isArray(paramValue)) {\n for (const [key, value] of Object.entries(paramValue)) {\n params.append(`${paramKey}[${key}]`, value);\n }\n } else {\n params.append(paramKey, paramValue);\n }\n }\n\n return params.toString();\n}\n\nexport function privateApiUrl(endpoint, params = {}) {\n let url = `${API_BASE_URL}/private/${endpoint}`;\n\n if (Object.keys.length) {\n url += `?${queryString(params)}`;\n }\n\n return url;\n}\n\nexport function publicApiUrl(endpoint, params = {}) {\n return `${API_BASE_URL}/public/${endpoint}?${queryString(params)}`;\n}\n\n// eslint-disable-next-line\nasync function request(url, method = 'GET', headers = {}, body) {\n try {\n const response = await fetch(url, {\n headers: { ...defaultHeaders(), ...headers },\n method,\n body,\n });\n\n if (response.ok) {\n if (response.status === 204) {\n return '';\n }\n\n const json = await response.json();\n\n if (json.data) {\n const deserialized = jsonaDeserialize(json);\n const links = json.links && camelcaseKeys(json.links, { deep: true });\n const meta = json.meta && camelcaseKeys(json.meta, { deep: true });\n\n return { deserialized, links, meta };\n }\n\n return json;\n }\n\n const error = new FetchError(\n `${response.status} code returned for ${method} ${url}`,\n response.status,\n response.statusText\n );\n\n try {\n error.body = await response.json();\n throw error;\n } catch {\n throw error;\n }\n } catch (error) {\n logError(error);\n throw error;\n }\n}\n\nexport function getRequest(url) {\n return request(url, 'GET');\n}\n\nexport function postRequest(url, body) {\n return request(url, 'POST', { 'content-type': JSON_API_MEDIA }, JSON.stringify(body));\n}\n\nexport function putRequest(url, body) {\n return request(url, 'PUT', { 'content-type': JSON_API_MEDIA }, JSON.stringify(body));\n}\n\nexport function deleteRequest(url, body) {\n return request(url, 'DELETE', { 'content-type': JSON_API_MEDIA }, JSON.stringify(body));\n}\n"],"names":["parse_1","parse","serialize_1","serialize","decode","encode","fieldContentRegExp","str","options","obj","opt","pairs","dec","i","pair","index","key","val","tryDecode","name","enc","value","maxAge","sameSite","hasDocumentCookie","parseCookies","cookies","cookie.parse","isParsingCookie","doNotParse","readCookie","cleanValue","cleanupCookieValue","__assign","this","s","p","Cookies","_this","parseOptions","params","result","name_1","_a","cookie.serialize","finalOptions","callback","idx","Cookies$1","getUserToken","userAuthenticated","API_BASE_URL","JSON_API_MEDIA","DEFAULT_HEADERS","currentLanguage","FetchError","message","status","statusText","defaultHeaders","queryString","originalParams","paramKey","paramValue","isNumber","isObject","isArray","privateApiUrl","endpoint","url","publicApiUrl","request","method","headers","body","response","json","deserialized","jsonaDeserialize","links","camelcaseKeys","meta","error","logError","getRequest","postRequest","putRequest","deleteRequest"],"mappings":"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"}