This is an adaptation of three.js' PointerLockControls to a common js module, based itself on three.fly.
// 1. Create pointer lock controls:
var PointerLockControls = require('three-pointerlock');
var controls = new PointerLockControls(camera);
// 2. Inside your update scene loop (e.g. inside requestAnimationFrame()):
controls.update(1); // `1` is time delta.
With npm do:
npm install three-pointerlock
MIT