{"version":3,"sources":["jsdelivr-header.js","/npm/@procore/js-sdk-sample-app@1.1.0/server/main.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,QAAQ,oBACR,MAAM,KAAO,QAAQ,QACf,OAAS,QAAQ,UACjB,MAAQ,QAAQ,SAChB,KAAO,QAAQ,oBACf,IAAM,QAAQ,QACd,GAAE,IAAO,QAAQ,SACjB,MAAE,MAAK,QAAE,QAAO,UAAE,UAAS,MAAE,MAAK,OAAE,QAAW,QAAQ,mBAEvD,UAAW,QAAQ,IAAI,UACvB,cAAgB,QAAQ,IAAI,cAC5B,aAAe,QAAQ,IAAI,aAE3B,OAAS,IAAI,KAAK,OAExB,OAAO,WAAW,CAAE,KAAM,KAAM,KAAM,cAEtC,OAAO,SACL,CAAC,MAAO,OAAQ,OACf,IACD,GAAI,EAAO,MAAM,EAEjB,MAAM,EAAQ,OAAO,MAAM,CAAE,QAAS,WAAY,UAAW,SAE7D,OAAO,IAAI,MAAQ,EAEnB,OAAO,KAAK,SAAS,UAAW,UAAU,EAAM,CAC9C,SAAU,QAAQ,IAAI,iBACtB,OAAQ,oBACR,UAAU,EACV,WAAY,SACZ,IAAK,MACL,aAAc,CAAC,EAAK,EAAS,KAC3B,EAAM,IAAI,EAAQ,KAAK,CAAC,EAAK,IACvB,EAAc,EAAS,GAAK,GAE3B,EAEE,EAAS,MAAM,EAAM,EAAO,MAFb,EAAS,MAAM,IAGtC,IAIL,OAAO,MAAM,CACX,QAAS,CACP,IAAK,QAAQ,qBAEf,WAAY,UACZ,KAAM,UAGR,OAAO,MAAM,CACX,OAAQ,MACR,KAAM,mBACN,OAAQ,CACN,MAAM,EACN,QAAS,CAAC,EAAK,IACN,EAAM,SAAS,UAAU,CAAE,SAAU,UAAW,IAAK,mBAKlE,OAAO,MAAM,CACX,OAAQ,MACR,KAAM,0BACN,OAAQ,CACN,MAAM,EACN,SAAU,CAAE,MAAO,CAAE,KAAM,IAAI,WAC/B,QAAS,CAAC,EAAK,KACb,MAAM,EAAO,EAAI,MAAM,KACjB,EAAM,KAEZ,MAAM,CAAE,GAAI,UAAW,OAAQ,cAAe,IAAK,aAAc,SAC9D,MAAK,IACJ,EAAI,OAAO,IAAI,MAAM,IAAI,EAAK,CAAE,QAAQ,GAAG,IACrC,GAAO,EAAM,GAEjB,EAAI,WAAW,IAAI,CAAE,QAEd,EAAM,SAAS,OACvB,GACF,KAKT,OAAO,MAAM,CACX,OAAQ,OACR,KAAM,yBACN,OAAQ,CACN,MAAM,EACN,QAAS,CAAC,EAAK,KACb,MAAM,EAAM,QAAQ,IAEpB,OAAO,IAAI,MAAM,IAAI,GAAK,CAAC,GAAM,cAC/B,QAAQ,CACN,GAAI,UACJ,OAAQ,cACR,IAAK,aACL,QAAS,EAAQ,cACjB,MAAO,EAAQ,aAEhB,MAAM,GACE,EAAI,IAAI,MAAM,IAAI,EAAK,CAAE,QAAS,IAAc,GAE5C,EADL,GAIS,MAEhB,GACF,KAKP,OAAO,MAAM,CACX,OAAQ,MACR,KAAM,mBACN,OAAQ,CACN,MAAM,EACN,QAAS,CACP,UAAW,CACT,KAAM,SACN,SAAS,OAMjB,OAAO,MAAM,CACX,OAAQ,MACR,KAAM,SACN,OAAQ,CACN,MAAM,EACN,QAAS,CACP,KAAM,UAKZ,OAAO,MAAM,CACX,OAAQ,MACR,KAAM,YACN,OAAQ,CACN,QAAS,CAAC,EAAK,KACb,EAAM,KAAK,MAAO,CAAE,KAAM,EAAI,KAAK,aAAa,KAKtD,OAAO,OAAM","file":"/npm/@procore/js-sdk-sample-app@1.1.0/server/main.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.19.2.\n * Original file: /npm/@procore/js-sdk-sample-app@1.1.0/server/main.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","require('isomorphic-fetch')\nconst Hapi = require('hapi')\nconst Vision = require('vision')\nconst Inert = require('inert')\nconst Auth = require('hapi-auth-cookie')\nconst Joi = require('joi')\nconst { v4 } = require('uuid')\nconst { token, refresh, authorize, oauth, client } = require('@procore/js-sdk')\n\nconst CLIENT_ID =process.env.CLIENT_ID\nconst CLIENT_SECRET = process.env.CLIENT_SECRET\nconst REDIRECT_URL = process.env.REDIRECT_URL\n\nconst server = new Hapi.Server()\n\nserver.connection({ port: 8080, host: 'localhost' })\n\nserver.register(\n  [Inert, Vision, Auth],\n  (err) => {\n  if (err) { throw err }\n\n  const cache = server.cache({ segment: 'sessions', expiresIn: 3 * 24 * 60 * 60 * 1000  });\n\n  server.app.cache = cache;\n\n  server.auth.strategy('session', 'cookie', true, {\n    password: process.env.SESSION_PASSWORD,\n    cookie: 'procore-resources',\n    isSecure: false,\n    redirectTo: '/login',\n    ttl: 24 * 60 * 60 * 1000,\n    validateFunc: (req, session, callback) => {\n      cache.get(session.sid, (err, cached) => {\n        if (err) { return callback(err, false) }\n\n        if (!cached) { return callback(null, false) }\n\n        return callback(null, true, cached.code)\n      })\n    }\n  })\n\n  server.views({\n    engines: {\n      jsx: require('hapi-react-views')\n    },\n    relativeTo: __dirname,\n    path: 'views'\n  })\n\n  server.route({\n    method: 'GET',\n    path: '/sessions/create',\n    config: {\n      auth: false,\n      handler: (req, reply) => {\n        return reply.redirect(authorize({ clientId: CLIENT_ID, uri: REDIRECT_URL }))\n      }\n    }\n  })\n\n  server.route({\n    method: 'GET',\n    path: '/oauth/procore/callback',\n    config: {\n      auth: false,\n      validate: { query: { code: Joi.string() } },\n      handler: (req, reply) => {\n        const code = req.query.code\n        const sid = v4()\n\n        token({ id: CLIENT_ID, secret: CLIENT_SECRET, uri: REDIRECT_URL, code })\n          .then(code => {\n            req.server.app.cache.set(sid, { code }, 0, err => {\n              if (err) { reply(err) }\n\n              req.cookieAuth.set({ sid })\n\n              return reply.redirect('/')\n            })\n          })\n      }\n    }\n  })\n\n  server.route({\n    method: 'POST',\n    path: '/oauth/procore/refresh',\n    config: {\n      auth: false,\n      handler: (req, reply) => {\n        const sid = session.sid\n\n        server.app.cache.get(sid, (err, {account}) => {\n          refresh({\n            id: CLIENT_ID,\n            secret: CLIENT_SECRET,\n            uri: REDIRECT_URL,\n            refresh: account.refresh_token,\n            token: account.auth_token\n          })\n          .then((refreshed) => {\n            return req.app.cache.set(sid, { account: refreshed }, (err) => {\n              if (err) {\n                return reply(err)\n              }\n\n              return reply(refreshed)\n            })\n          })\n        })\n      }\n    }\n  })\n\n  server.route({\n    method: 'GET',\n    path: '/public/{param*}',\n    config: {\n      auth: false,\n      handler: {\n        directory: {\n          path: 'public',\n          listing: true\n        }\n      }\n    }\n  })\n\n  server.route({\n    method: 'GET',\n    path: '/login',\n    config: {\n      auth: false,\n      handler: {\n        view: 'App'\n      }\n    }\n  })\n\n  server.route({\n    method: 'GET',\n    path: '/{param*}',\n    config: {\n      handler: (req, reply) => {\n        reply.view('App', { auth: req.auth.credentials })\n      }\n    }\n  })\n\n  server.start()\n})\n"]}