summaryrefslogtreecommitdiff
path: root/shared/logger/node_modules/@sentry/utils/esm/logger.js
diff options
context:
space:
mode:
Diffstat (limited to 'shared/logger/node_modules/@sentry/utils/esm/logger.js')
-rw-r--r--shared/logger/node_modules/@sentry/utils/esm/logger.js83
1 files changed, 83 insertions, 0 deletions
diff --git a/shared/logger/node_modules/@sentry/utils/esm/logger.js b/shared/logger/node_modules/@sentry/utils/esm/logger.js
new file mode 100644
index 0000000..6c8c644
--- /dev/null
+++ b/shared/logger/node_modules/@sentry/utils/esm/logger.js
@@ -0,0 +1,83 @@
+import { getGlobalSingleton, GLOBAL_OBJ } from './worldwide.js';
+
+/** Prefix for logging strings */
+const PREFIX = 'Sentry Logger ';
+
+const CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert', 'trace'] ;
+
+/**
+ * Temporarily disable sentry console instrumentations.
+ *
+ * @param callback The function to run against the original `console` messages
+ * @returns The results of the callback
+ */
+function consoleSandbox(callback) {
+ if (!('console' in GLOBAL_OBJ)) {
+ return callback();
+ }
+
+ const originalConsole = GLOBAL_OBJ.console ;
+ const wrappedLevels = {};
+
+ // Restore all wrapped console methods
+ CONSOLE_LEVELS.forEach(level => {
+ // TODO(v7): Remove this check as it's only needed for Node 6
+ const originalWrappedFunc =
+ originalConsole[level] && (originalConsole[level] ).__sentry_original__;
+ if (level in originalConsole && originalWrappedFunc) {
+ wrappedLevels[level] = originalConsole[level] ;
+ originalConsole[level] = originalWrappedFunc ;
+ }
+ });
+
+ try {
+ return callback();
+ } finally {
+ // Revert restoration to wrapped state
+ Object.keys(wrappedLevels).forEach(level => {
+ originalConsole[level] = wrappedLevels[level ];
+ });
+ }
+}
+
+function makeLogger() {
+ let enabled = false;
+ const logger = {
+ enable: () => {
+ enabled = true;
+ },
+ disable: () => {
+ enabled = false;
+ },
+ };
+
+ if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {
+ CONSOLE_LEVELS.forEach(name => {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ logger[name] = (...args) => {
+ if (enabled) {
+ consoleSandbox(() => {
+ GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`, ...args);
+ });
+ }
+ };
+ });
+ } else {
+ CONSOLE_LEVELS.forEach(name => {
+ logger[name] = () => undefined;
+ });
+ }
+
+ return logger ;
+}
+
+// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used
+let logger;
+if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {
+ logger = getGlobalSingleton('logger', makeLogger);
+} else {
+ logger = makeLogger();
+}
+
+export { CONSOLE_LEVELS, consoleSandbox, logger };
+//# sourceMappingURL=logger.js.map