{"version":3,"sources":["../server.ts"],"sourcesContent":["import { loadConfig } from '@vtex/fsp-config'\nimport express from 'express'\nimport { createProxyMiddleware } from 'http-proxy-middleware'\n\nconst ROOT_PORT = 3000\n\nconst app = express()\n\nexport async function start(storeCandidate?: string) {\n  const { stores } = await loadConfig()\n\n  // Granted the user doesn't provide a store, we should prefer the first one available from the config file.\n  const store = storeCandidate || Object.keys(stores)?.[0]\n  const foundStore = stores[store]\n\n  if (!foundStore) {\n    throw new Error(\n      `Could not find store \"${store}\". Make sure the store is configured on faststore.json`\n    )\n  }\n\n  if (!Object.keys(foundStore).length) {\n    throw new Error(\n      `No available modules for \"${store}\". Make sure the modules are properly configured on faststore.json`\n    )\n  }\n\n  const { discovery, checkout } = foundStore\n\n  const salesApp = foundStore['sales-app']\n\n  if (discovery) {\n    const discoveryProxy = createProxyMiddleware({\n      target: `http://localhost:${discovery.port}`,\n      pathFilter: (path) => !path.startsWith('/checkout'),\n      logger: process.env.FS_DEBUG ? console : undefined,\n    })\n\n    app.use('/', discoveryProxy)\n    app.use('/discovery', discoveryProxy)\n  }\n\n  if (checkout) {\n    const checkoutProxy = createProxyMiddleware({\n      target: `http://localhost:${checkout.port}/checkout`,\n      changeOrigin: true,\n      logger: process.env.FS_DEBUG ? console : undefined,\n    })\n\n    app.use('/checkout', checkoutProxy)\n  }\n\n  if (salesApp) {\n    app.use('/sales-app', (_, res) => {\n      return res.redirect(`http://localhost:${salesApp.port}`)\n    })\n  }\n\n  app.listen(ROOT_PORT, () => {\n    console.log(`Running \"${store}\" and listening on port ${ROOT_PORT}`)\n  })\n}\n"],"mappings":";AAAA,SAAS,kBAAkB;AAC3B,OAAO,aAAa;AACpB,SAAS,6BAA6B;AAEtC,IAAM,YAAY;AAElB,IAAM,MAAM,QAAQ;AAEpB,eAAsB,MAAM,gBAAyB;AARrD;AASE,QAAM,EAAE,OAAO,IAAI,MAAM,WAAW;AAGpC,QAAM,QAAQ,oBAAkB,YAAO,KAAK,MAAM,MAAlB,mBAAsB;AACtD,QAAM,aAAa,OAAO,KAAK;AAE/B,MAAI,CAAC,YAAY;AACf,UAAM,IAAI;AAAA,MACR,yBAAyB,KAAK;AAAA,IAChC;AAAA,EACF;AAEA,MAAI,CAAC,OAAO,KAAK,UAAU,EAAE,QAAQ;AACnC,UAAM,IAAI;AAAA,MACR,6BAA6B,KAAK;AAAA,IACpC;AAAA,EACF;AAEA,QAAM,EAAE,WAAW,SAAS,IAAI;AAEhC,QAAM,WAAW,WAAW,WAAW;AAEvC,MAAI,WAAW;AACb,UAAM,iBAAiB,sBAAsB;AAAA,MAC3C,QAAQ,oBAAoB,UAAU,IAAI;AAAA,MAC1C,YAAY,CAAC,SAAS,CAAC,KAAK,WAAW,WAAW;AAAA,MAClD,QAAQ,QAAQ,IAAI,WAAW,UAAU;AAAA,IAC3C,CAAC;AAED,QAAI,IAAI,KAAK,cAAc;AAC3B,QAAI,IAAI,cAAc,cAAc;AAAA,EACtC;AAEA,MAAI,UAAU;AACZ,UAAM,gBAAgB,sBAAsB;AAAA,MAC1C,QAAQ,oBAAoB,SAAS,IAAI;AAAA,MACzC,cAAc;AAAA,MACd,QAAQ,QAAQ,IAAI,WAAW,UAAU;AAAA,IAC3C,CAAC;AAED,QAAI,IAAI,aAAa,aAAa;AAAA,EACpC;AAEA,MAAI,UAAU;AACZ,QAAI,IAAI,cAAc,CAAC,GAAG,QAAQ;AAChC,aAAO,IAAI,SAAS,oBAAoB,SAAS,IAAI,EAAE;AAAA,IACzD,CAAC;AAAA,EACH;AAEA,MAAI,OAAO,WAAW,MAAM;AAC1B,YAAQ,IAAI,YAAY,KAAK,2BAA2B,SAAS,EAAE;AAAA,EACrE,CAAC;AACH;","names":[]}