Browse Source

chore: adds the state property to Debugger

e22m4u 3 months ago
parent
commit
b1b5888668
4 changed files with 61 additions and 0 deletions
  1. 1 0
      dist/cjs/index.cjs
  2. 49 0
      src/create-debugger.d.ts
  3. 3 0
      src/create-debugger.js
  4. 8 0
      src/create-debugger.spec.js

+ 1 - 0
dist/cjs/index.cjs

@@ -386,6 +386,7 @@ function createDebugger(namespaceOrOptions = void 0, ...namespaceSegments) {
       prefix ? console.log(`${prefix} ${message}`) : console.log(message);
     });
   };
+  debugFn.state = state;
   return debugFn;
 }
 __name(createDebugger, "createDebugger");

+ 49 - 0
src/create-debugger.d.ts

@@ -1,3 +1,46 @@
+/**
+ * Объект конфигурации, который хранит все настройки
+ * для конкретного экземпляра отладчика.
+ */
+export type DebuggerState = {
+  /**
+   * Массив строк, содержащий сегменты пространства имен,
+   * полученные из переменной окружения DEBUGGER_NAMESPACE.
+   */
+  envNsSegments: string[];
+  /**
+   * Массив строк, содержащий сегменты пространства имен,
+   * переданные в качестве аргументов при создании отладчика.
+   */
+  nsSegments: string[];
+  /**
+   * Строка, используемая в качестве шаблона для определения,
+   * активен ли данный отладчик. Она получается из переменной
+   * окружения DEBUG или из localStorage.
+   */
+  pattern: string;
+  /**
+   * Строка, содержащая случайный шестнадцатеричный хэш,
+   * который может быть добавлен к префиксу вывода отладки.
+   */
+  hash: string;
+  /**
+   * Число, определяющее размер смещения (отступа) для сообщений
+   * отладки.
+   */
+  offsetSize: number;
+  /**
+   * Строка, представляющая собой один шаг смещения
+   * (например, два пробела).
+   */
+  offsetStep: string;
+  /**
+   * Строка, используемая в качестве разделителя между
+   * сегментами пространства имен.
+   */
+  delimiter: string;
+};
+
 /**
  * Представляет функцию отладчика, которая также может быть расширена
  * пространствами имен, хэшами или отступами.
@@ -12,6 +55,12 @@ export interface Debugger {
    */
   (message: unknown, ...args: any[]): void;
 
+  /**
+   * Объект конфигурации, который хранит все настройки
+   * для конкретного экземпляра отладчика.
+   */
+  state: DebuggerState;
+
   /**
    * Создание нового экземпляра отладчика с добавленным сегментом
    * пространства имен.

+ 3 - 0
src/create-debugger.js

@@ -320,5 +320,8 @@ export function createDebugger(
       prefix ? console.log(`${prefix} ${message}`) : console.log(message);
     });
   };
+  // сохранение состояния в отдельное свойство отладчика
+  // позволяет проверить настройки без вызова реализации
+  debugFn.state = state;
   return debugFn;
 }

+ 8 - 0
src/create-debugger.spec.js

@@ -66,6 +66,14 @@ describe('createDebugger', function () {
       expect(debug.withOffset).to.be.a('function');
     });
 
+    it('should set the "state" property with DebuggerState object', function () {
+      const debug = createDebugger('test');
+      const state = debug.state;
+      console.log(state);
+      expect(typeof state).to.be.eq('object');
+      expect(state.nsSegments).to.be.eql(['test']);
+    });
+
     it('should output a simple string message when enabled', function () {
       process.env.DEBUG = 'test';
       const debug = createDebugger('test');