From b1bfcedb7b8d77614793ab6c8cfe6ec6eb3f1960 Mon Sep 17 00:00:00 2001 From: Cody Deckard Date: Wed, 25 Oct 2017 12:11:10 -0700 Subject: [PATCH] internal: add emitExperimentalWarning function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a new emitExperimentalWarning function to internal/util to warn users that they are using an experimental feature and that feature can change at any time. PR-URL: https://github.com/nodejs/node/pull/16497 Refs: https://github.com/nodejs/node/issues/9036 Reviewed-By: Michael Dawson Reviewed-By: James M Snell Reviewed-By: Ruben Bridgewater Reviewed-By: Michaƫl Zasso --- lib/internal/util.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/internal/util.js b/lib/internal/util.js index b125e7f76e61d7..38c63390df922e 100644 --- a/lib/internal/util.js +++ b/lib/internal/util.js @@ -10,6 +10,8 @@ const kArrowMessagePrivateSymbolIndex = binding['arrow_message_private_symbol']; const kDecoratedPrivateSymbolIndex = binding['decorated_private_symbol']; const noCrypto = !process.versions.openssl; +const experimentalWarnings = new Set(); + function isError(e) { return objectToString(e) === '[object Error]' || e instanceof Error; } @@ -115,6 +117,14 @@ function normalizeEncoding(enc) { } } +function emitExperimentalWarning(feature) { + if (experimentalWarnings.has(feature)) return; + const msg = `${feature} is an experimental feature. This feature could ` + + 'change at any time'; + experimentalWarnings.add(feature); + process.emitWarning(msg, 'ExperimentalWarning'); +} + function filterDuplicateStrings(items, low) { const map = new Map(); for (var i = 0; i < items.length; i++) { @@ -280,6 +290,7 @@ module.exports = { createClassWrapper, decorateErrorStack, deprecate, + emitExperimentalWarning, filterDuplicateStrings, getConstructorOf, isError,