{"version":3,"file":"fetch_request-bSzARCYm.js","sources":["../../../node_modules/.pnpm/@rails+request.js@0.0.6/node_modules/@rails/request.js/src/fetch_response.js","../../../node_modules/.pnpm/@rails+request.js@0.0.6/node_modules/@rails/request.js/src/request_interceptor.js","../../../node_modules/.pnpm/@rails+request.js@0.0.6/node_modules/@rails/request.js/src/lib/utils.js","../../../node_modules/.pnpm/@rails+request.js@0.0.6/node_modules/@rails/request.js/src/fetch_request.js"],"sourcesContent":["export class FetchResponse {\n constructor (response) {\n this.response = response\n }\n\n get statusCode () {\n return this.response.status\n }\n\n get redirected () {\n return this.response.redirected\n }\n\n get ok () {\n return this.response.ok\n }\n\n get unauthenticated () {\n return this.statusCode === 401\n }\n\n get unprocessableEntity () {\n return this.statusCode === 422\n }\n\n get authenticationURL () {\n return this.response.headers.get('WWW-Authenticate')\n }\n\n get contentType () {\n const contentType = this.response.headers.get('Content-Type') || ''\n\n return contentType.replace(/;.*$/, '')\n }\n\n get headers () {\n return this.response.headers\n }\n\n get html () {\n if (this.contentType.match(/^(application|text)\\/(html|xhtml\\+xml)$/)) {\n return this.text\n }\n\n return Promise.reject(new Error(`Expected an HTML response but got \"${this.contentType}\" instead`))\n }\n\n get json () {\n if (this.contentType.match(/^application\\/.*json$/)) {\n return this.responseJson || (this.responseJson = this.response.json())\n }\n\n return Promise.reject(new Error(`Expected a JSON response but got \"${this.contentType}\" instead`))\n }\n\n get text () {\n return this.responseText || (this.responseText = this.response.text())\n }\n\n get isTurboStream () {\n return this.contentType.match(/^text\\/vnd\\.turbo-stream\\.html/)\n }\n\n async renderTurboStream () {\n if (this.isTurboStream) {\n if (window.Turbo) {\n await window.Turbo.renderStreamMessage(await this.text)\n } else {\n console.warn('You must set `window.Turbo = Turbo` to automatically process Turbo Stream events with request.js')\n }\n } else {\n return Promise.reject(new Error(`Expected a Turbo Stream response but got \"${this.contentType}\" instead`))\n }\n }\n}\n","export class RequestInterceptor {\n static register (interceptor) {\n this.interceptor = interceptor\n }\n\n static get () {\n return this.interceptor\n }\n\n static reset () {\n this.interceptor = undefined\n }\n}\n","export function getCookie (name) {\n const cookies = document.cookie ? document.cookie.split('; ') : []\n const prefix = `${encodeURIComponent(name)}=`\n const cookie = cookies.find(cookie => cookie.startsWith(prefix))\n\n if (cookie) {\n const value = cookie.split('=').slice(1).join('=')\n\n if (value) {\n return decodeURIComponent(value)\n }\n }\n}\n\nexport function compact (object) {\n const result = {}\n\n for (const key in object) {\n const value = object[key]\n if (value !== undefined) {\n result[key] = value\n }\n }\n\n return result\n}\n\nexport function metaContent (name) {\n const element = document.head.querySelector(`meta[name=\"${name}\"]`)\n return element && element.content\n}\n\nexport function stringEntriesFromFormData (formData) {\n return [...formData].reduce((entries, [name, value]) => {\n return entries.concat(typeof value === 'string' ? [[name, value]] : [])\n }, [])\n}\n\nexport function mergeEntries (searchParams, entries) {\n for (const [name, value] of entries) {\n if (value instanceof window.File) continue\n\n if (searchParams.has(name)) {\n searchParams.delete(name)\n searchParams.set(name, value)\n } else {\n searchParams.append(name, value)\n }\n }\n}\n","import { FetchResponse } from './fetch_response'\nimport { RequestInterceptor } from './request_interceptor'\nimport { getCookie, compact, metaContent, stringEntriesFromFormData, mergeEntries } from './lib/utils'\n\nexport class FetchRequest {\n constructor (method, url, options = {}) {\n this.method = method\n this.options = options\n this.originalUrl = url.toString()\n }\n\n async perform () {\n try {\n const requestInterceptor = RequestInterceptor.get()\n if (requestInterceptor) {\n await requestInterceptor(this)\n }\n } catch (error) {\n console.error(error)\n }\n\n const response = new FetchResponse(await window.fetch(this.url, this.fetchOptions))\n\n if (response.unauthenticated && response.authenticationURL) {\n return Promise.reject(window.location.href = response.authenticationURL)\n }\n\n if (response.ok && response.isTurboStream) {\n await response.renderTurboStream()\n }\n\n return response\n }\n\n addHeader (key, value) {\n const headers = this.additionalHeaders\n headers[key] = value\n this.options.headers = headers\n }\n\n get fetchOptions () {\n return {\n method: this.method.toUpperCase(),\n headers: this.headers,\n body: this.formattedBody,\n signal: this.signal,\n credentials: 'same-origin',\n redirect: this.redirect\n }\n }\n\n get headers () {\n return compact(\n Object.assign({\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-CSRF-Token': this.csrfToken,\n 'Content-Type': this.contentType,\n Accept: this.accept\n },\n this.additionalHeaders)\n )\n }\n\n get csrfToken () {\n return getCookie(metaContent('csrf-param')) || metaContent('csrf-token')\n }\n\n get contentType () {\n if (this.options.contentType) {\n return this.options.contentType\n } else if (this.body == null || this.body instanceof window.FormData) {\n return undefined\n } else if (this.body instanceof window.File) {\n return this.body.type\n }\n\n return 'application/json'\n }\n\n get accept () {\n switch (this.responseKind) {\n case 'html':\n return 'text/html, application/xhtml+xml'\n case 'turbo-stream':\n return 'text/vnd.turbo-stream.html, text/html, application/xhtml+xml'\n case 'json':\n return 'application/json, application/vnd.api+json'\n default:\n return '*/*'\n }\n }\n\n get body () {\n return this.options.body\n }\n\n get query () {\n const originalQuery = (this.originalUrl.split('?')[1] || '').split('#')[0]\n const params = new URLSearchParams(originalQuery)\n\n let requestQuery = this.options.query\n if (requestQuery instanceof window.FormData) {\n requestQuery = stringEntriesFromFormData(requestQuery)\n } else if (requestQuery instanceof window.URLSearchParams) {\n requestQuery = requestQuery.entries()\n } else {\n requestQuery = Object.entries(requestQuery || {})\n }\n\n mergeEntries(params, requestQuery)\n\n const query = params.toString()\n return (query.length > 0 ? `?${query}` : '')\n }\n\n get url () {\n return (this.originalUrl.split('?')[0]).split('#')[0] + this.query\n }\n\n get responseKind () {\n return this.options.responseKind || 'html'\n }\n\n get signal () {\n return this.options.signal\n }\n\n get redirect () {\n return this.options.redirect || 'follow'\n }\n\n get additionalHeaders () {\n return this.options.headers || {}\n }\n\n get formattedBody () {\n const bodyIsAString = Object.prototype.toString.call(this.body) === '[object String]'\n const contentTypeIsJson = this.headers['Content-Type'] === 'application/json'\n\n if (contentTypeIsJson && !bodyIsAString) {\n return JSON.stringify(this.body)\n }\n\n return this.body\n }\n}\n"],"names":["FetchResponse","response","RequestInterceptor","interceptor","getCookie","name","cookies","prefix","cookie","value","compact","object","result","key","metaContent","element","stringEntriesFromFormData","formData","entries","mergeEntries","searchParams","FetchRequest","method","url","options","requestInterceptor","error","headers","originalQuery","params","requestQuery","query","bodyIsAString"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}