--- /dev/null
+'use strict';
+
+const FormPrompt = require('../prompts/form');
+
+const defaultAuthenticate = () => {
+ throw new Error('expected prompt to have a custom authenticate method');
+};
+
+const factory = (authenticate = defaultAuthenticate) => {
+
+ class AuthPrompt extends FormPrompt {
+ constructor(options) {
+ super(options);
+ }
+
+ async submit() {
+ this.value = await authenticate.call(this, this.values, this.state);
+ super.base.submit.call(this);
+ }
+
+ static create(authenticate) {
+ return factory(authenticate);
+ }
+ }
+
+ return AuthPrompt;
+};
+
+module.exports = factory();