UNPKG

@riddance/service

Version:

Too much code slows you down, creates risks, increases maintainability burdens, confuses AI. So let's commit less of it.

57 lines 7.31 kB
import { verify } from './lib/jwt.js'; export * from '@riddance/host/lib/http'; export * from './context.js'; /*@__INLINE__*/ export function withStatus(error, status) { return Object.assign(error, { statusCode: status }); } export function withPublicMessage(error, message) { if (message) { const enriched = error; if (enriched.body) { ; enriched.body.message = message; } else { enriched.body = { message }; } } return error; } export function badRequest(publicMessage) { return withPublicMessage(withStatus(new Error('Bad request'), 400), publicMessage); } /** Please authenticate yourself, e.g. log in or refresh your tokens. */ export function unauthorized() { return withStatus(new Error('Unauthorized'), 401); } /** I known who you are; you're not getting in. */ export function forbidden() { return withStatus(new Error('Forbidden'), 403); } export function notFound() { return withStatus(new Error('Not found'), 404); } export function notImplemented() { return withStatus(new Error('Not implemented'), 501); } /*@__NO_SIDE_EFFECTS__*/ export async function getBearer(context, req) { const key = context.env.BEARER_PUBLIC_KEY; if (!key) { throw new Error('Please set the BEARER_PUBLIC_KEY environment variable to extract bearer.'); } const authHeader = req.headers.authorization; if (!authHeader?.startsWith('Bearer ')) { throw unauthorized(); } try { const token = authHeader.slice('Bearer '.length); const certificate = '-----BEGIN PUBLIC KEY-----\n' + key + '\n-----END PUBLIC KEY-----'; return await /*@__PURE__*/ verify(token, certificate); } catch (e) { context.log.debug('Error verifying jwt.', e); throw unauthorized(); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImh0dHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUVyQyxjQUFjLHlCQUF5QixDQUFBO0FBQ3ZDLGNBQWMsY0FBYyxDQUFBO0FBRTVCLGVBQWU7QUFDZixNQUFNLFVBQVUsVUFBVSxDQUF3QixLQUFZLEVBQUUsTUFBYztJQUMxRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUE7QUFDdkQsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBdUIsS0FBYSxFQUFFLE9BQWdCO0lBQ25GLElBQUksT0FBTyxFQUFFLENBQUM7UUFDVixNQUFNLFFBQVEsR0FBRyxLQUE4QyxDQUFBO1FBQy9ELElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hCLENBQUM7WUFBQyxRQUFRLENBQUMsSUFBbUMsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3BFLENBQUM7YUFBTSxDQUFDO1lBQ0osUUFBUSxDQUFDLElBQUksR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFBO1FBQy9CLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUE7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsYUFBc0I7SUFDN0MsT0FBTyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUE7QUFDdEYsQ0FBQztBQUVELHdFQUF3RTtBQUN4RSxNQUFNLFVBQVUsWUFBWTtJQUN4QixPQUFPLFVBQVUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUNyRCxDQUFDO0FBRUQsa0RBQWtEO0FBQ2xELE1BQU0sVUFBVSxTQUFTO0lBQ3JCLE9BQU8sVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBQ2xELENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUTtJQUNwQixPQUFPLFVBQVUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUNsRCxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWM7SUFDMUIsT0FBTyxVQUFVLENBQUMsSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUN4RCxDQUFDO0FBRUQsd0JBQXdCLENBQUMsTUFBTSxDQUFDLEtBQUssVUFBVSxTQUFTLENBQ3BELE9BQWdCLEVBQ2hCLEdBQTRDO0lBRTVDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUE7SUFDekMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1AsTUFBTSxJQUFJLEtBQUssQ0FBQywwRUFBMEUsQ0FBQyxDQUFBO0lBQy9GLENBQUM7SUFDRCxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQTtJQUM1QyxJQUFJLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sWUFBWSxFQUFFLENBQUE7SUFDeEIsQ0FBQztJQUNELElBQUksQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2hELE1BQU0sV0FBVyxHQUFHLDhCQUE4QixHQUFHLEdBQUcsR0FBRyw0QkFBNEIsQ0FBQTtRQUN2RixPQUFPLE1BQU0sYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUE7SUFDekQsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDVCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUM1QyxNQUFNLFlBQVksRUFBRSxDQUFBO0lBQ3hCLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGV4dCwgSnNvbiB9IGZyb20gJy4vY29udGV4dC5qcydcbmltcG9ydCB7IHZlcmlmeSB9IGZyb20gJy4vbGliL2p3dC5qcydcblxuZXhwb3J0ICogZnJvbSAnQHJpZGRhbmNlL2hvc3QvbGliL2h0dHAnXG5leHBvcnQgKiBmcm9tICcuL2NvbnRleHQuanMnXG5cbi8qQF9fSU5MSU5FX18qL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhTdGF0dXM8U3RhdHVzIGV4dGVuZHMgbnVtYmVyPihlcnJvcjogRXJyb3IsIHN0YXR1czogU3RhdHVzKSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oZXJyb3IsIHsgc3RhdHVzQ29kZTogc3RhdHVzIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoUHVibGljTWVzc2FnZTxURXJyb3IgZXh0ZW5kcyBFcnJvcj4oZXJyb3I6IFRFcnJvciwgbWVzc2FnZT86IHN0cmluZyk6IFRFcnJvciB7XG4gICAgaWYgKG1lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgZW5yaWNoZWQgPSBlcnJvciBhcyB1bmtub3duIGFzIHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9XG4gICAgICAgIGlmIChlbnJpY2hlZC5ib2R5KSB7XG4gICAgICAgICAgICA7KGVucmljaGVkLmJvZHkgYXMgeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0pLm1lc3NhZ2UgPSBtZXNzYWdlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbnJpY2hlZC5ib2R5ID0geyBtZXNzYWdlIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXJyb3Jcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhZFJlcXVlc3QocHVibGljTWVzc2FnZT86IHN0cmluZykge1xuICAgIHJldHVybiB3aXRoUHVibGljTWVzc2FnZSh3aXRoU3RhdHVzKG5ldyBFcnJvcignQmFkIHJlcXVlc3QnKSwgNDAwKSwgcHVibGljTWVzc2FnZSlcbn1cblxuLyoqIFBsZWFzZSBhdXRoZW50aWNhdGUgeW91cnNlbGYsIGUuZy4gbG9nIGluIG9yIHJlZnJlc2ggeW91ciB0b2tlbnMuICovXG5leHBvcnQgZnVuY3Rpb24gdW5hdXRob3JpemVkKCkge1xuICAgIHJldHVybiB3aXRoU3RhdHVzKG5ldyBFcnJvcignVW5hdXRob3JpemVkJyksIDQwMSlcbn1cblxuLyoqIEkga25vd24gd2hvIHlvdSBhcmU7IHlvdSdyZSBub3QgZ2V0dGluZyBpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JiaWRkZW4oKSB7XG4gICAgcmV0dXJuIHdpdGhTdGF0dXMobmV3IEVycm9yKCdGb3JiaWRkZW4nKSwgNDAzKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm90Rm91bmQoKSB7XG4gICAgcmV0dXJuIHdpdGhTdGF0dXMobmV3IEVycm9yKCdOb3QgZm91bmQnKSwgNDA0KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm90SW1wbGVtZW50ZWQoKSB7XG4gICAgcmV0dXJuIHdpdGhTdGF0dXMobmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKSwgNTAxKVxufVxuXG4vKkBfX05PX1NJREVfRUZGRUNUU19fKi8gZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEJlYXJlcihcbiAgICBjb250ZXh0OiBDb250ZXh0LFxuICAgIHJlcTogeyBoZWFkZXJzOiB7IGF1dGhvcml6YXRpb24/OiBzdHJpbmcgfSB9LFxuKTogUHJvbWlzZTxKc29uPiB7XG4gICAgY29uc3Qga2V5ID0gY29udGV4dC5lbnYuQkVBUkVSX1BVQkxJQ19LRVlcbiAgICBpZiAoIWtleSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSBzZXQgdGhlIEJFQVJFUl9QVUJMSUNfS0VZIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGV4dHJhY3QgYmVhcmVyLicpXG4gICAgfVxuICAgIGNvbnN0IGF1dGhIZWFkZXIgPSByZXEuaGVhZGVycy5hdXRob3JpemF0aW9uXG4gICAgaWYgKCFhdXRoSGVhZGVyPy5zdGFydHNXaXRoKCdCZWFyZXIgJykpIHtcbiAgICAgICAgdGhyb3cgdW5hdXRob3JpemVkKClcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSBhdXRoSGVhZGVyLnNsaWNlKCdCZWFyZXIgJy5sZW5ndGgpXG4gICAgICAgIGNvbnN0IGNlcnRpZmljYXRlID0gJy0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXFxuJyArIGtleSArICdcXG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0nXG4gICAgICAgIHJldHVybiBhd2FpdCAvKkBfX1BVUkVfXyovIHZlcmlmeSh0b2tlbiwgY2VydGlmaWNhdGUpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb250ZXh0LmxvZy5kZWJ1ZygnRXJyb3IgdmVyaWZ5aW5nIGp3dC4nLCBlKVxuICAgICAgICB0aHJvdyB1bmF1dGhvcml6ZWQoKVxuICAgIH1cbn1cbiJdfQ==