{"version":3,"sources":["jsdelivr-header.js","/npm/jot@2.0.2/lib/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aAIA,MAAM,KAAO,QAAQ,QACf,KAAO,QAAQ,QACf,IAAM,QAAQ,OACd,IAAM,QAAQ,gBAKd,UAAY,CAAC,EAKnB,QAAQ,SAAW,CAAC,EAAQ,EAAS,KAEjC,EAAO,KAAK,OAAO,MAAO,UAAU,gBACpC,GAAM,EAGV,QAAQ,SAAS,WAAa,CAC1B,IAAK,QAAQ,oBAGjB,UAAU,WAAa,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAEzG,UAAU,cAAgB,IAAI,OAAO,CACjC,OAAQ,IAAI,SAAS,WAAW,MAAM,IACtC,WAAY,IAAI,QAAQ,MAAM,IAAI,SAAS,MAAM,UAAU,aAAa,QAAQ,SAChF,SAAU,IAAI,SACd,OAAQ,IAAI,SAAS,QAAQ,OAC7B,OAAQ,IAAI,SACZ,MAAO,IAAI,SAAS,QAAQ,SAC5B,aAAc,IAAI,SAGtB,UAAU,eAAiB,CAAC,EAAQ,KAEhC,MAAM,EAAU,IAAI,SAAS,EAAS,UAAU,eAEhD,KAAK,QAAQ,EAAQ,MAAO,EAAQ,OAEpC,MAAM,EAAW,EAAQ,MAEzB,MAAO,CACH,aAAc,CAAC,EAAS,KAEpB,MAAM,EAAQ,KAAK,eAEnB,EAAM,OAAQ,EAEd,IAAI,EAAQ,EAAQ,QAAQ,cAM5B,IAJK,GAAS,EAAQ,MAAM,EAAS,UACjC,EAAQ,EAAQ,MAAM,EAAS,QAAQ,EAAS,SAG/C,EAID,OAFA,EAAM,OAAO,QAAQ,QAAU,iBAExB,EAAM,GAGjB,IAAI,OAAO,EAAO,EAAS,OAAQ,CAC/B,WAAY,EAAS,WACrB,SAAU,EAAS,SACnB,OAAQ,EAAS,SAClB,CAAC,EAAK,IAED,GAEA,EAAM,OAAO,QAAQ,QAAU,EAExB,EAAM,IAGZ,EAAS,kBAId,EAAS,aAAa,EAAS,GAAS,CAAC,EAAK,EAAS,KAEnD,IAAI,EAAc,EAElB,OAAI,GAEA,EAAM,OAAO,QAAQ,QAAU,EAExB,EAAM,IAGZ,GAOA,IACD,EAAc,GAGX,EAAM,SAAS,CAAE,YAAa,MATjC,EAAM,OAAO,QAAQ,QAAU,mBAExB,EAAM,GAOkC,IAzB5C,EAAM,SAAS,CAAE,YAAa,KA2B3C,EAET","file":"/npm/jot@2.0.2/lib/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/jot@2.0.2/lib/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","'use strict';\n\n// Load modules\n\nconst Boom = require('boom');\nconst Hoek = require('hoek');\nconst Joi = require('joi');\nconst Jwt = require('jsonwebtoken');\n\n\n// Declare internals\n\nconst internals = {};\n\n\n// Plugin\n\nexports.register = (server, options, next) => {\n\n    server.auth.scheme('jwt', internals.implementation);\n    next();\n};\n\nexports.register.attributes = {\n    pkg: require('../package.json')\n};\n\ninternals.algorithms = ['HS256', 'HS384', 'HS512', 'RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'none'];\n\ninternals.optionsSchema = Joi.object({\n    secret: Joi.string().required().allow(''),\n    algorithms: Joi.array().items(Joi.string().valid(internals.algorithms)).default('HS256'),\n    audience: Joi.string(),\n    cookie: Joi.string().default('sid'),\n    issuer: Joi.string(),\n    token: Joi.string().default('token'),\n    validateFunc: Joi.func()\n});\n\ninternals.implementation = (server, options) => {\n\n    const results = Joi.validate(options, internals.optionsSchema);\n\n    Hoek.assert(!results.error, results.error);\n\n    const settings = results.value;\n\n    return {\n        authenticate: (request, reply) => {\n\n            const error = Boom.unauthorized();\n\n            error.isJot = true;\n\n            let token = request.headers.authorization;\n\n            if (!token && request.state[settings.cookie]) {\n                token = request.state[settings.cookie][settings.token];\n            }\n\n            if (!token) {\n\n                error.output.payload.message = 'No token found';\n\n                return reply(error);\n            }\n\n            Jwt.verify(token, settings.secret, {\n                algorithms: settings.algorithms,\n                audience: settings.audience,\n                issuer: settings.issuer\n            }, (err, decoded) => {\n\n                if (err) {\n\n                    error.output.payload.message = err;\n\n                    return reply(error);\n                }\n\n                if (!settings.validateFunc) {\n                    return reply.continue({ credentials: decoded });\n                }\n\n                settings.validateFunc(request, decoded, (err, isValid, updatedCredentials) => {\n\n                    let credentials = updatedCredentials;\n\n                    if (err) {\n\n                        error.output.payload.message = err;\n\n                        return reply(error);\n                    }\n\n                    if (!isValid) {\n\n                        error.output.payload.message = 'Token is invalid';\n\n                        return reply(error);\n                    }\n\n                    if (!credentials) {\n                        credentials = decoded;\n                    }\n\n                    return reply.continue({ credentials: credentials });\n                });\n            });\n        }\n    };\n};\n"]}