This repository has been archived on 2022-08-14. You can view files and clone it, but cannot push or open issues or pull requests.

28 lines
938 B
JavaScript

// @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();
};
}