// @flow import semver from 'semver'; import { type Context } from 'koa'; import pkg from 'rich-markdown-editor/package.json'; import { EditorUpdateError } from '../../errors'; export default function editor() { return async function editorMiddleware(ctx: Context, next: () => Promise<*>) { const clientVersion = ctx.headers['x-editor-version']; // If the editor version on the client is behind the current version being // served in production by either a minor (new features), or major (breaking // changes) then force a client reload. if (clientVersion) { const parsedClientVersion = semver.parse(clientVersion); const parsedCurrentVersion = semver.parse(pkg.version); if ( parsedClientVersion.major < parsedCurrentVersion.major || parsedClientVersion.minor < parsedCurrentVersion.minor ) { throw new EditorUpdateError(); } } return next(); }; }