{"version":3,"sources":["jsdelivr-header.js","/npm/@rails/request.js@0.0.11/src/fetch_response.js","/npm/@rails/request.js@0.0.11/src/request_interceptor.js","/npm/@rails/request.js@0.0.11/src/lib/utils.js","/npm/@rails/request.js@0.0.11/src/fetch_request.js","/npm/@rails/request.js@0.0.11/src/verbs.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNO,MAAM,CAAc,CACzB,YAAa,EAAU,CACrB,KAAK,SAAW,CAClB,CAEA,IAAI,YAAc,CAChB,OAAO,KAAK,SAAS,MACvB,CAEA,IAAI,YAAc,CAChB,OAAO,KAAK,SAAS,UACvB,CAEA,IAAI,IAAM,CACR,OAAO,KAAK,SAAS,EACvB,CAEA,IAAI,iBAAmB,CACrB,OAAO,KAAK,aAAe,GAC7B,CAEA,IAAI,qBAAuB,CACzB,OAAO,KAAK,aAAe,GAC7B,CAEA,IAAI,mBAAqB,CACvB,OAAO,KAAK,SAAS,QAAQ,IAAI,kBAAkB,CACrD,CAEA,IAAI,aAAe,CAGjB,OAFoB,KAAK,SAAS,QAAQ,IAAI,cAAc,GAAK,IAE9C,QAAQ,OAAQ,EAAE,CACvC,CAEA,IAAI,SAAW,CACb,OAAO,KAAK,SAAS,OACvB,CAEA,IAAI,MAAQ,CACV,OAAI,KAAK,YAAY,MAAM,yCAAyC,EAC3D,KAAK,KAGP,QAAQ,OAAO,IAAI,MAAM,sCAAsC,KAAK,WAAW,WAAW,CAAC,CACpG,CAEA,IAAI,MAAQ,CACV,OAAI,KAAK,YAAY,MAAM,uBAAuB,EACzC,KAAK,eAAiB,KAAK,aAAe,KAAK,SAAS,KAAI,GAG9D,QAAQ,OAAO,IAAI,MAAM,qCAAqC,KAAK,WAAW,WAAW,CAAC,CACnG,CAEA,IAAI,MAAQ,CACV,OAAO,KAAK,eAAiB,KAAK,aAAe,KAAK,SAAS,KAAI,EACrE,CAEA,IAAI,eAAiB,CACnB,OAAO,KAAK,YAAY,MAAM,gCAAgC,CAChE,CAEA,IAAI,UAAY,CACd,OAAO,KAAK,YAAY,MAAM,yBAAyB,CACzD,CAEA,MAAM,mBAAqB,CACzB,GAAI,KAAK,cACH,OAAO,MACT,MAAM,OAAO,MAAM,oBAAoB,MAAM,KAAK,IAAI,EAEtD,QAAQ,KAAK,kGAAkG,MAGjH,QAAO,QAAQ,OAAO,IAAI,MAAM,6CAA6C,KAAK,WAAW,WAAW,CAAC,CAE7G,CAEA,MAAM,cAAgB,CACpB,GAAI,KAAK,SAAU,CACjB,MAAM,EAAS,SAAS,cAAc,QAAQ,EACxC,EAAU,SAAS,cAAc,sBAAsB,EACvD,EAAQ,GAAW,EAAQ,QAC7B,GAAS,EAAO,aAAa,QAAS,CAAK,EAC/C,EAAO,UAAY,MAAM,KAAK,KAC9B,SAAS,KAAK,YAAY,CAAM,CAClC,KACE,QAAO,QAAQ,OAAO,IAAI,MAAM,uCAAuC,KAAK,WAAW,WAAW,CAAC,CAEvG,CACF,CC3FO,MAAM,CAAmB,CAC9B,OAAO,SAAU,EAAa,CAC5B,KAAK,YAAc,CACrB,CAEA,OAAO,KAAO,CACZ,OAAO,KAAK,WACd,CAEA,OAAO,OAAS,CACd,KAAK,YAAc,MACrB,CACF,CCZO,SAAS,EAAW,EAAM,CAC/B,MAAM,EAAU,SAAS,OAAS,SAAS,OAAO,MAAM,IAAI,EAAI,CAAA,EAC1D,EAAS,GAAG,mBAAmB,CAAI,CAAC,IACpC,EAAS,EAAQ,KAAK,GAAU,EAAO,WAAW,CAAM,CAAC,EAE/D,GAAI,EAAQ,CACV,MAAM,EAAQ,EAAO,MAAM,GAAG,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,EAEjD,GAAI,EACF,OAAO,mBAAmB,CAAK,CAEnC,CACF,CAEO,SAAS,EAAS,EAAQ,CAC/B,MAAM,EAAS,CAAA,EAEf,UAAW,KAAO,EAAQ,CACxB,MAAM,EAAQ,EAAO,CAAG,EACpB,IAAU,SACZ,EAAO,CAAG,EAAI,EAElB,CAEA,OAAO,CACT,CAEO,SAAS,EAAa,EAAM,CACjC,MAAM,EAAU,SAAS,KAAK,cAAc,cAAc,CAAI,IAAI,EAClE,OAAO,GAAW,EAAQ,OAC5B,CAEO,SAAS,EAA2B,EAAU,CACnD,MAAO,CAAC,GAAG,CAAQ,EAAE,OAAO,CAAC,EAAS,CAAC,EAAM,CAAK,IACzC,EAAQ,OAAO,OAAO,GAAU,SAAW,CAAC,CAAC,EAAM,CAAK,CAAC,EAAI,CAAA,CAAE,EACrE,CAAA,CAAE,CACP,CAEO,SAAS,EAAc,EAAc,EAAS,CACnD,SAAW,CAAC,EAAM,CAAK,IAAK,EACtB,aAAiB,OAAO,OAExB,EAAa,IAAI,CAAI,GAAK,CAAC,EAAK,SAAS,IAAI,GAC/C,EAAa,OAAO,CAAI,EACxB,EAAa,IAAI,EAAM,CAAK,GAE5B,EAAa,OAAO,EAAM,CAAK,EAGrC,CC7CO,MAAM,CAAa,CACxB,YAAa,EAAQ,EAAK,EAAU,CAAA,EAAI,CACtC,KAAK,OAAS,EACd,KAAK,QAAU,EACf,KAAK,YAAc,EAAI,SAAQ,CACjC,CAEA,MAAM,SAAW,CACf,GAAI,CACF,MAAM,EAAqB,EAAmB,IAAG,EAC7C,GACF,MAAM,EAAmB,IAAI,CAEjC,OAAS,EAAO,CACd,QAAQ,MAAM,CAAK,CACrB,CAEA,MAAM,EAAS,KAAK,eAAiB,gBAAkB,OAAO,MAC1D,OAAO,MAAM,MACb,OAAO,MAEL,EAAW,IAAI,EAAc,MAAM,EAAM,KAAK,IAAK,KAAK,YAAY,CAAC,EAE3E,OAAI,EAAS,iBAAmB,EAAS,kBAChC,QAAQ,OAAO,OAAO,SAAS,KAAO,EAAS,iBAAiB,GAGrE,EAAS,UACX,MAAM,EAAS,aAAY,GAGW,EAAS,IAAM,EAAS,sBAEzB,EAAS,eAC9C,MAAM,EAAS,kBAAiB,EAG3B,EACT,CAEA,UAAW,EAAK,EAAO,CACrB,MAAM,EAAU,KAAK,kBACrB,EAAQ,CAAG,EAAI,EACf,KAAK,QAAQ,QAAU,CACzB,CAEA,cAAgB,CACd,GAAI,CAAC,KAAK,YAAY,WAAW,OAAO,EACtC,MAAO,GAGT,GAAI,CACF,OAAO,IAAI,IAAI,KAAK,WAAW,EAAE,WAAa,OAAO,SAAS,QAChE,MAAY,CACV,MAAO,EACT,CACF,CAEA,IAAI,cAAgB,CAClB,MAAO,CACL,OAAQ,KAAK,OAAO,YAAW,EAC/B,QAAS,KAAK,QACd,KAAM,KAAK,cACX,OAAQ,KAAK,OACb,YAAa,KAAK,YAClB,SAAU,KAAK,QACrB,CACE,CAEA,IAAI,SAAW,CACb,MAAM,EAAc,CAClB,mBAAoB,iBACpB,eAAgB,KAAK,YACrB,OAAQ,KAAK,MACnB,EAEI,OAAI,KAAK,aAAY,IACnB,EAAY,cAAc,EAAI,KAAK,WAG9B,EACL,OAAO,OAAO,EAAa,KAAK,iBAAiB,CACvD,CACE,CAEA,IAAI,WAAa,CACf,OAAO,EAAU,EAAY,YAAY,CAAC,GAAK,EAAY,YAAY,CACzE,CAEA,IAAI,aAAe,CACjB,OAAI,KAAK,QAAQ,YACR,KAAK,QAAQ,YACX,KAAK,MAAQ,MAAQ,KAAK,gBAAgB,OAAO,SAC1D,OACS,KAAK,gBAAgB,OAAO,KAC9B,KAAK,KAAK,KAGZ,kBACT,CAEA,IAAI,QAAU,CACZ,OAAQ,KAAK,aAAY,CACvB,IAAK,OACH,MAAO,mCACT,IAAK,eACH,MAAO,+DACT,IAAK,OACH,MAAO,6CACT,IAAK,SACH,MAAO,0CACT,QACE,MAAO,KACf,CACE,CAEA,IAAI,MAAQ,CACV,OAAO,KAAK,QAAQ,IACtB,CAEA,IAAI,OAAS,CACX,MAAM,GAAiB,KAAK,YAAY,MAAM,GAAG,EAAE,CAAC,GAAK,IAAI,MAAM,GAAG,EAAE,CAAC,EACnE,EAAS,IAAI,gBAAgB,CAAa,EAEhD,IAAI,EAAe,KAAK,QAAQ,MAC5B,aAAwB,OAAO,SACjC,EAAe,EAA0B,CAAY,EAC5C,aAAwB,OAAO,gBACxC,EAAe,EAAa,QAAO,EAEnC,EAAe,OAAO,QAAQ,GAAgB,CAAA,CAAE,EAGlD,EAAa,EAAQ,CAAY,EAEjC,MAAM,EAAQ,EAAO,SAAQ,EAC7B,OAAQ,EAAM,OAAS,EAAI,IAAI,CAAK,GAAK,EAC3C,CAEA,IAAI,KAAO,CACT,OAAQ,KAAK,YAAY,MAAM,GAAG,EAAE,CAAC,EAAG,MAAM,GAAG,EAAE,CAAC,EAAI,KAAK,KAC/D,CAEA,IAAI,cAAgB,CAClB,OAAO,KAAK,QAAQ,cAAgB,MACtC,CAEA,IAAI,QAAU,CACZ,OAAO,KAAK,QAAQ,MACtB,CAEA,IAAI,UAAY,CACd,OAAO,KAAK,QAAQ,UAAY,QAClC,CAEA,IAAI,aAAe,CACjB,OAAO,KAAK,QAAQ,aAAe,aACrC,CAEA,IAAI,mBAAqB,CACvB,OAAO,KAAK,QAAQ,SAAW,CAAA,CACjC,CAEA,IAAI,eAAiB,CACnB,MAAM,EAAgB,OAAO,UAAU,SAAS,KAAK,KAAK,IAAI,IAAM,kBAGpE,OAF0B,KAAK,QAAQ,cAAc,IAAM,oBAElC,CAAC,EACjB,KAAK,UAAU,KAAK,IAAI,EAG1B,KAAK,IACd,CACF,CC/KA,eAAe,EAAK,EAAK,EAAS,CAEhC,OADgB,IAAI,EAAa,MAAO,EAAK,CAAO,EACrC,QAAO,CACxB,CAEA,eAAe,EAAM,EAAK,EAAS,CAEjC,OADgB,IAAI,EAAa,OAAQ,EAAK,CAAO,EACtC,QAAO,CACxB,CAEA,eAAe,EAAK,EAAK,EAAS,CAEhC,OADgB,IAAI,EAAa,MAAO,EAAK,CAAO,EACrC,QAAO,CACxB,CAEA,eAAe,EAAO,EAAK,EAAS,CAElC,OADgB,IAAI,EAAa,QAAS,EAAK,CAAO,EACvC,QAAO,CACxB,CAEA,eAAe,EAAS,EAAK,EAAS,CAEpC,OADgB,IAAI,EAAa,SAAU,EAAK,CAAO,EACxC,QAAO,CACxB","file":"/npm/@rails/request.js@0.0.11/src/index.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v4.62.2 and esbuild v0.28.1.\n * Original file: /npm/@rails/request.js@0.0.11/src/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","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  get isScript () {\n    return this.contentType.match(/\\b(?:java|ecma)script\\b/)\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  async activeScript () {\n    if (this.isScript) {\n      const script = document.createElement('script')\n      const metaTag = document.querySelector('meta[name=csp-nonce]')\n      const nonce = metaTag && metaTag.content\n      if (nonce) { script.setAttribute('nonce', nonce) }\n      script.innerHTML = await this.text\n      document.body.appendChild(script)\n    } else {\n      return Promise.reject(new Error(`Expected a Script 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) && !name.includes('[]')) {\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 fetch = (this.responseKind === 'turbo-stream' && window.Turbo)\n      ? window.Turbo.fetch\n      : window.fetch\n\n    const response = new FetchResponse(await 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.isScript) {\n      await response.activeScript()\n    }\n\n    const responseStatusIsTurboStreamable = response.ok || response.unprocessableEntity\n\n    if (responseStatusIsTurboStreamable && 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  sameHostname () {\n    if (!this.originalUrl.startsWith('http:')) {\n      return true\n    }\n\n    try {\n      return new URL(this.originalUrl).hostname === window.location.hostname\n    } catch (_) {\n      return true\n    }\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: this.credentials,\n      redirect: this.redirect\n    }\n  }\n\n  get headers () {\n    const baseHeaders = {\n      'X-Requested-With': 'XMLHttpRequest',\n      'Content-Type': this.contentType,\n      Accept: this.accept\n    }\n\n    if (this.sameHostname()) {\n      baseHeaders['X-CSRF-Token'] = this.csrfToken\n    }\n\n    return compact(\n      Object.assign(baseHeaders, 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      case 'script':\n        return 'text/javascript, application/javascript'\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 credentials () {\n    return this.options.credentials || 'same-origin'\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","import { FetchRequest } from './fetch_request'\n\nasync function get (url, options) {\n  const request = new FetchRequest('get', url, options)\n  return request.perform()\n}\n\nasync function post (url, options) {\n  const request = new FetchRequest('post', url, options)\n  return request.perform()\n}\n\nasync function put (url, options) {\n  const request = new FetchRequest('put', url, options)\n  return request.perform()\n}\n\nasync function patch (url, options) {\n  const request = new FetchRequest('patch', url, options)\n  return request.perform()\n}\n\nasync function destroy (url, options) {\n  const request = new FetchRequest('delete', url, options)\n  return request.perform()\n}\n\nexport { get, post, put, patch, destroy }\n"]}