{"version":3,"sources":["jsdelivr-header.js","/npm/coinstac-api-server@6.9.8/src/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;ACHA,MAAM,aAAE,cAAiB,QAAQ,sBAC3B,KAAO,QAAQ,cACf,IAAM,QAAQ,aACd,gBAAkB,QAAQ,kBAC1B,OAAS,QAAQ,aACjB,OAAE,QAAW,QAAQ,iBACrB,SAAW,QAAQ,eACnB,aACJ,aAAY,sBACZ,sBAAqB,yBACrB,0BACE,QAAQ,iBACN,wBAA0B,QAAQ,6BAGxC,eAAe,cACb,MAAM,EAAS,IAAI,aAAa,CAC9B,cACA,YAAc,IACZ,QAAQ,MAAM,GAAK,YAAY,WAAW,YACnC,GAET,QAAU,IACR,MAAM,WAAE,EAAU,QAAE,GAAY,EAChC,OAAI,EACK,EAAW,QAGb,CACL,YAAa,EAAQ,KAAO,EAAQ,KAAK,YAAc,KACxD,EAEH,cAAe,CACb,eAAM,CAAU,EAAkB,GAChC,IAAK,EAAiB,UACpB,OAAO,EAGT,IACE,MAAM,EAAe,EAAG,WAAW,QAAQ,sBACrC,GAAE,SAAa,gBAAgB,YAAY,EAAiB,WAGlE,OADA,aAAa,KAAK,sBAAuB,EAAc,IAChD,CACT,CAAE,MAAO,GACP,OAAO,CACT,CACF,EACA,YAAA,CAAa,GACX,MAAM,EAAe,EAAG,WAAW,QAAQ,qBAC3C,aAAa,KAAK,yBAA0B,EAC9C,GAEF,QAAS,CACP,iCAGE,EAAO,QAEb,MAAM,EAAM,IAAI,KAAK,OAAO,CAC1B,KAAM,QAAQ,IAAI,oBAClB,KAAM,QAAQ,IAAI,wBAGd,EAAI,SAAS,KAEnB,EAAI,KAAK,SAAS,eAAgB,MAChC,CACE,KAAM,CACJ,IAAK,QAAQ,IAAI,eACjB,WAAY,CAAC,UAEf,SAAU,gBAAgB,cAC1B,OAAQ,CACN,IAAK,gBAAgB,SACrB,IAAK,gBAAgB,OACrB,IAAK,gBAAgB,QACrB,KAAK,EACL,KAAK,KAIX,EAAI,KAAK,QAAQ,gBACjB,EAAI,MAAM,cAEJ,EAAO,gBAAgB,CAC3B,cAGI,EAAO,4BAA4B,EAAI,gBAEvC,EAAI,QAEV,QAAQ,IAAI,sBAAsB,EAAI,KAAK,MAC7C,CAEA,SAAS,UACN,MAAK,IACG,gBAER,OAAO,IACN,QAAQ,MAAM,EAAI","file":"/npm/coinstac-api-server@6.9.8/src/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/coinstac-api-server@6.9.8/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","#!/usr/bin/env node\n\n/* eslint-disable no-console */\nconst { ApolloServer } = require('apollo-server-hapi');\nconst hapi = require('@hapi/hapi');\nconst Jwt = require('@hapi/jwt');\nconst helperFunctions = require('./auth-helpers');\nconst routes = require('./routes');\nconst { schema } = require('./data/schema');\nconst database = require('./database');\nconst {\n  eventEmitter,\n  WS_CONNECTION_STARTED,\n  WS_CONNECTION_TERMINATED,\n} = require('./data/events');\nconst transactionLoggerPlugin = require('./transactionLoggerPlugin');\n\n\nasync function startServer() {\n  const server = new ApolloServer({\n    schema,\n    formatError: (err) => {\n      console.error(err?.extensions?.exception?.stacktrace);\n      return err;\n    },\n    context: (contextao) => {\n      const { connection, request } = contextao;\n      if (connection) {\n        return connection.context;\n      }\n\n      return {\n        credentials: request.auth ? request.auth.credentials : null,\n      };\n    },\n    subscriptions: {\n      async onConnect(connectionParams, ws) {\n        if (!connectionParams.authToken) {\n          return false;\n        }\n\n        try {\n          const connectionId = ws.upgradeReq.headers['sec-websocket-key'];\n          const { id } = await helperFunctions.decodeToken(connectionParams.authToken);\n\n          eventEmitter.emit(WS_CONNECTION_STARTED, connectionId, id);\n          return true;\n        } catch (error) {\n          return false;\n        }\n      },\n      onDisconnect(ws) {\n        const connectionId = ws.upgradeReq.headers['sec-websocket-key'];\n        eventEmitter.emit(WS_CONNECTION_TERMINATED, connectionId);\n      },\n    },\n    plugins: [\n      transactionLoggerPlugin,\n    ],\n  });\n  await server.start();\n\n  const app = new hapi.Server({\n    host: process.env.API_SERVER_HOSTNAME,\n    port: process.env.API_SERVER_PORT,\n  });\n\n  await app.register(Jwt);\n\n  app.auth.strategy('coinstac-jwt', 'jwt',\n    {\n      keys: {\n        key: process.env.API_JWT_SECRET,\n        algorithms: ['HS256'],\n      },\n      validate: helperFunctions.validateToken,\n      verify: {\n        aud: helperFunctions.audience,\n        iss: helperFunctions.issuer,\n        sub: helperFunctions.subject,\n        nbf: true,\n        exp: true,\n      },\n    });\n\n  app.auth.default('coinstac-jwt');\n  app.route(routes);\n\n  await server.applyMiddleware({\n    app,\n  });\n\n  await server.installSubscriptionHandlers(app.listener);\n\n  await app.start();\n\n  console.log(`Server running at: ${app.info.uri}`); // eslint-disable-line no-console\n}\n\ndatabase.connect()\n  .then(() => {\n    return startServer();\n  })\n  .catch((err) => {\n    console.error(err);\n  });\n"]}