{"version":3,"file":"render-app-bridge.mjs","sources":["../../../../src/helpers/render-app-bridge.ts"],"sourcesContent":["import {Request, Response} from 'express';\nimport {Shopify} from '@shopify/shopify-api';\n\nimport {APP_BRIDGE_URL} from '../const';\nimport {addCSPHeader} from '../middlewares/csp-headers';\n\nfunction appBridgeUrl() {\n  // eslint-disable-next-line no-process-env\n  return process.env.APP_BRIDGE_URL || APP_BRIDGE_URL;\n}\n\n/**\n * Serves the App Bridge bootstrap shim for a document (page load) request.\n *\n * App Bridge loads in the browser, obtains a fresh session token, and reloads\n * the page with it attached. This is how an embedded document request that is\n * missing or has a stale session token recovers, without a top-level OAuth\n * redirect. Mirrors `renderAppBridge` in the React Router package.\n */\nexport function renderAppBridge(\n  api: Shopify,\n  req: Request,\n  res: Response,\n): void {\n  addCSPHeader(api, req, res);\n\n  res.status(200).set('content-type', 'text/html;charset=utf-8').send(`\n      <script data-api-key=\"${api.config.apiKey}\" src=\"${appBridgeUrl()}\"></script>\n    `);\n}\n"],"names":[],"mappings":";;;AAMA,SAAS,YAAY,GAAA;;AAEnB,IAAA,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,cAAc;AACrD;AAEA;;;;;;;AAOG;SACa,eAAe,CAC7B,GAAY,EACZ,GAAY,EACZ,GAAa,EAAA;AAEb,IAAA,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAE3B,IAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,yBAAyB,CAAC,CAAC,IAAI,CAAC;AACxC,4BAAA,EAAA,GAAG,CAAC,MAAM,CAAC,MAAM,CAAA,OAAA,EAAU,YAAY,EAAE,CAAA;AAClE,IAAA,CAAA,CAAC;AACN;;;;"}