/
githubmirror
/
node
Обзор
Документация
Войти
/
githubmirror
/
node
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
lib/readline/promises.js
69 строк
2 KB
René
lib: revert to using default derived class constructors
30 авг 2025, 17:28
Не верифицирован
30 авг 2025, 17:28
196f546
Код
Авторство
О чём код?
'use strict'; const { Promise, SymbolDispose, } = primordials; const { Readline, } = require('internal/readline/promises'); const { Interface: _Interface, kQuestion, kQuestionCancel, kQuestionReject, } = require('internal/readline/interface'); const { AbortError, } = require('internal/errors'); const { validateAbortSignal } = require('internal/validators'); const { kEmptyObject, } = require('internal/util'); let addAbortListener; class Interface extends _Interface { question(query, options = kEmptyObject) { return new Promise((resolve, reject) => { let cb = resolve; if (options?.signal) { validateAbortSignal(options.signal, 'options.signal'); if (options.signal.aborted) { return reject( new AbortError(undefined, { cause: options.signal.reason })); } const onAbort = () => { this[kQuestionCancel](); reject(new AbortError(undefined, { cause: options.signal.reason })); }; addAbortListener ??= require('internal/events/abort_listener').addAbortListener; const disposable = addAbortListener(options.signal, onAbort); cb = (answer) => { disposable[SymbolDispose](); resolve(answer); }; } this[kQuestionReject] = reject; this[kQuestion](query, cb); }); } } function createInterface(input, output, completer, terminal) { return new Interface(input, output, completer, terminal); } module.exports = { Interface, Readline, createInterface, };