New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

awesome-logging

Package Overview
Dependencies
Maintainers
1
Versions
48
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

awesome-logging - npm Package Compare versions

Comparing version 0.3.0 to 0.4.0

lib/prompt/models/config/confirm.d.ts

0

lib/awesome-logger.d.ts

@@ -0,0 +0,0 @@ import { AwesomeLoggerType, LoggerConfig, LoggerReturnType } from './logger/logger-type';

@@ -0,0 +0,0 @@ "use strict";

export * from './awesome-logger';
export * from './logger';
export * from './prompt';
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {

@@ -6,0 +10,0 @@ if (k2 === undefined) k2 = k;

@@ -0,0 +0,0 @@ export * from './logger-base';

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {

@@ -6,0 +10,0 @@ if (k2 === undefined) k2 = k;

@@ -0,0 +0,0 @@ export declare abstract class AwesomeLoggerBase {

@@ -0,0 +0,0 @@ "use strict";

@@ -0,0 +0,0 @@ "use strict";

@@ -0,0 +0,0 @@ import { AwesomeChecklistLoggerConfig, AwesomeChecklistLoggerControl } from './models/config/checklist';

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=logger-definitions.js.map

9

lib/logger/logger-manager.js

@@ -16,5 +16,8 @@ "use strict";

console.log = (message) => {
if (typeof message !== 'string') {
message = `${message}`;
}
awesome_logger_1.AwesomeLogger.log('text', { text: message });
};
ansi_utils_1.HIDE_CURSOR();
(0, ansi_utils_1.HIDE_CURSOR)();
if (!logger_base_1.AwesomeLoggerBase.isInitialized) {

@@ -34,3 +37,3 @@ logger_base_1.AwesomeLoggerBase.isInitialized = true;

}
// This incomplete logic is a workaround for stackblitz
// This isIncomplete logic is a workaround for stackblitz
// where data is triggered on a per-character basis

@@ -98,3 +101,3 @@ // This only happens in strange terminals like on stackblitz

}
ansi_utils_1.HIDE_CURSOR();
(0, ansi_utils_1.HIDE_CURSOR)();
const renderedLines = this._activeLogger.render();

@@ -101,0 +104,0 @@ if (renderedLines === undefined) {

@@ -0,0 +0,0 @@ import { AwesomeLoggerDefinitions } from './logger-definitions';

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=logger-type.js.map

@@ -0,0 +0,0 @@ import { AwesomeLoggerBase } from '../logger-base';

@@ -0,0 +0,0 @@ "use strict";

@@ -0,0 +0,0 @@ import { AwesomeLoggerBase } from '../../logger-base';

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=checklist.js.map

@@ -0,0 +0,0 @@ import { AwesomeLoggerBase } from '../../logger-base';

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=multi.js.map

@@ -0,0 +0,0 @@ import { AwesomeLoggerColor } from '../../../utils/logger-color';

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=progress.js.map

@@ -0,0 +0,0 @@ import { AwesomeLoggerBase } from '../../logger-base';

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=spinner.js.map

@@ -0,0 +0,0 @@ import { AwesomeLoggerBase } from '../../logger-base';

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=text.js.map

@@ -0,0 +0,0 @@ import { AwesomeLoggerBase } from '../logger-base';

@@ -0,0 +0,0 @@ "use strict";

@@ -0,0 +0,0 @@ import { AwesomeLoggerBase } from '../logger-base';

@@ -45,10 +45,10 @@ "use strict";

getNextLine() {
const totalLength = Math.min(terminal_size_1.TerminalSize.terminalWidth - 2, this._options.maxWidth) - strip_ansi_1.default(this._options.text).length;
const totalLength = Math.min(terminal_size_1.TerminalSize.terminalWidth - 2, this._options.maxWidth) - (0, strip_ansi_1.default)(this._options.text).length;
const finnishedLength = Math.round((this._currentProgress / this._options.totalProgress) * totalLength);
const unFinnishedLength = totalLength - finnishedLength;
const res = this._options.text +
logger_color_1.colorize(this._options.borderColor)(this._options.borderChar) +
logger_color_1.colorize(this._options.filledColor)(this._options.filledChar.repeat(finnishedLength)) +
logger_color_1.colorize(this._options.unfilledColor)(this._options.unfilledChar.repeat(unFinnishedLength)) +
logger_color_1.colorize(this._options.borderColor)(this._options.borderChar);
(0, logger_color_1.colorize)(this._options.borderColor)(this._options.borderChar) +
(0, logger_color_1.colorize)(this._options.filledColor)(this._options.filledChar.repeat(finnishedLength)) +
(0, logger_color_1.colorize)(this._options.unfilledColor)(this._options.unfilledChar.repeat(unFinnishedLength)) +
(0, logger_color_1.colorize)(this._options.borderColor)(this._options.borderChar);
return res;

@@ -55,0 +55,0 @@ }

@@ -0,0 +0,0 @@ import { AwesomeLoggerBase } from '../logger-base';

@@ -0,0 +0,0 @@ "use strict";

@@ -0,0 +0,0 @@ import { AwesomeLoggerBase } from '../logger-base';

@@ -0,0 +0,0 @@ "use strict";

@@ -0,0 +0,0 @@ export * from './prompt-base';

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {

@@ -6,0 +10,0 @@ if (k2 === undefined) k2 = k;

@@ -0,0 +0,0 @@ import { AwesomePromptChoiceConfig, AwesomePromptChoiceControl } from './config/choice';

@@ -0,0 +0,0 @@ "use strict";

@@ -0,0 +0,0 @@ import { AwesomePromptBase } from '../../prompt-base';

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=base.js.map

@@ -0,0 +0,0 @@ import { AwesomePromptBaseControl } from './base';

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=choice.js.map

@@ -0,0 +0,0 @@ import { AwesomePromptBaseControl } from './base';

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=text.js.map

@@ -0,0 +0,0 @@ import { AwesomePromptBaseControl } from './base';

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=toggle.js.map

@@ -0,0 +0,0 @@ import { AwesomePromptTextConfig, AwesomePromptTextControl } from './config/text';

@@ -0,0 +0,0 @@ "use strict";

@@ -0,0 +0,0 @@ import { AwesomePromptToggleConfig, AwesomePromptToggleControl } from './config/toggle';

@@ -0,0 +0,0 @@ "use strict";

@@ -0,0 +0,0 @@ import { AwesomeLoggerBase } from '../logger/logger-base';

@@ -0,0 +0,0 @@ "use strict";

@@ -0,0 +0,0 @@ import { AwesomePromptType, PromptConfig, PromptReturnType } from './prompt-type';

@@ -7,2 +7,3 @@ "use strict";

const toggle_prompt_1 = require("./models/toggle-prompt");
const confirm_prompt_1 = require("./models/confirm-prompt");
class PromptCreator {

@@ -24,6 +25,10 @@ static create(type, config) {

}
case 'confirm': {
prompt = new confirm_prompt_1.AwesomeConfirmPromt(config);
break;
}
default: {
throw new Error(`Prompt type '${type}' not found`);
}
}
if (!prompt) {
throw new Error(`Logger type '${type}' not found`);
}
return prompt;

@@ -30,0 +35,0 @@ }

import { AwesomePromptChoiceConfig, AwesomePromptChoiceControl } from './models/config/choice';
import { AwesomePromptConfirmConfig, AwesomePromptConfirmControl } from './models/config/confirm';
import { AwesomePromptTextConfig, AwesomePromptTextControl } from './models/config/text';

@@ -16,2 +17,6 @@ import { AwesomePromptToggleConfig, AwesomePromptToggleControl } from './models/config/toggle';

returnValue: AwesomePromptChoiceControl;
} | {
type: 'confirm';
config: AwesomePromptConfirmConfig;
returnValue: AwesomePromptConfirmControl;
};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=prompt-definitions.js.map

@@ -0,0 +0,0 @@ import { AwesomePromptDefinitions } from './prompt-definitions';

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=prompt-type.js.map

@@ -0,0 +0,0 @@ export declare class Stdout {

@@ -0,0 +0,0 @@ "use strict";

@@ -28,4 +28,4 @@ "use strict";

for (let i = 0; i < lastLines.length; i++) {
ansi_utils_1.DELETE_LINE();
ansi_utils_1.MOVE_UP();
(0, ansi_utils_1.DELETE_LINE)();
(0, ansi_utils_1.MOVE_UP)();
}

@@ -40,4 +40,4 @@ // resetting lastString & lastLine to make it reprint everything

for (let i = 0; i < lessLines; i++) {
ansi_utils_1.DELETE_LINE();
ansi_utils_1.MOVE_UP();
(0, ansi_utils_1.DELETE_LINE)();
(0, ansi_utils_1.MOVE_UP)();
}

@@ -49,4 +49,4 @@ }

}
ansi_utils_1.MOVE_UP(moveUpAmount);
ansi_utils_1.MOVE_LEFT();
(0, ansi_utils_1.MOVE_UP)(moveUpAmount);
(0, ansi_utils_1.MOVE_LEFT)();
}

@@ -68,4 +68,4 @@ for (let i = 0; i < newLines.length; i++) {

}
const oldStringLength = strip_ansi_1.default(oldVal).length;
let newStringLength = strip_ansi_1.default(newVal).length;
const oldStringLength = (0, strip_ansi_1.default)(oldVal).length;
let newStringLength = (0, strip_ansi_1.default)(newVal).length;
while (oldStringLength > newStringLength) {

@@ -72,0 +72,0 @@ // If the new string is shorter than the old string, we need to "erase" the difference by printing spaces

@@ -54,8 +54,8 @@ "use strict";

// If the forced line is longer that the maximal width of our terminal, split it up into sections that do fit
while (strip_ansi_1.default(rest).length > terminal_size_1.TerminalSize.terminalWidth - 2) {
while ((0, strip_ansi_1.default)(rest).length > terminal_size_1.TerminalSize.terminalWidth - 2) {
// The line length is limited to two characters less than the actual length
// so that the scroll indicators can be printed, if needed
const maxLengthString = slice_ansi_1.default(rest, 0, terminal_size_1.TerminalSize.terminalWidth - 2);
const maxLengthString = (0, slice_ansi_1.default)(rest, 0, terminal_size_1.TerminalSize.terminalWidth - 2);
res.push(maxLengthString);
rest = slice_ansi_1.default(rest, terminal_size_1.TerminalSize.terminalWidth);
rest = (0, slice_ansi_1.default)(rest, terminal_size_1.TerminalSize.terminalWidth);
}

@@ -62,0 +62,0 @@ if (rest) {

@@ -0,0 +0,0 @@ "use strict";

export {};

@@ -77,17 +77,20 @@ "use strict";

// };
const c = awesome_logger_1.AwesomeLogger.prompt('toggle', {
options: [
'option 1',
'option 2',
'option 3',
'option 4',
'option 5',
'option 6',
'option 7',
'option 8',
'option 9',
'option 10'
]
// const c = AwesomeLogger.prompt('toggle', {
// options: [
// 'option 1',
// 'option 2',
// 'option 3',
// 'option 4',
// 'option 5',
// 'option 6',
// 'option 7',
// 'option 8',
// 'option 9',
// 'option 10'
// ]
// });
// c.result.then(r => {});
awesome_logger_1.AwesomeLogger.prompt('confirm', { text: 'Are you really sure?' }).result.then(r => {
console.log(r);
});
c.result.then(r => { });
// const line0 = AwesomeLogger.create('text', { text: chalk.yellow('Multiple lines, all changing:') });

@@ -94,0 +97,0 @@ // const line1 = AwesomeLogger.create('text', { text: chalk.blue('Important Information') });

export declare const CONTROL_PREFIX: string;

@@ -9,3 +9,3 @@ "use strict";

const stdout_1 = require("../render/stdout");
restore_cursor_1.default();
(0, restore_cursor_1.default)();
// @internal

@@ -12,0 +12,0 @@ exports.CONTROL_PREFIX_FIRST_CHAR = '\u001b';

@@ -0,0 +0,0 @@ "use strict";

export declare type AwesomeLoggerColor = 'WHITE' | 'BLACK' | 'RED' | 'GREEN' | 'YELLOW' | 'BLUE' | 'MAGENTA' | 'CYAN' | 'GRAY';
export declare const colorize: (color?: AwesomeLoggerColor | undefined, bgColor?: AwesomeLoggerColor | undefined) => (val: string) => string;

@@ -0,0 +0,0 @@ "use strict";

@@ -0,0 +0,0 @@ export declare class TerminalSize {

@@ -0,0 +0,0 @@ "use strict";

{
"name": "awesome-logging",
"version": "0.3.0",
"version": "0.4.0",
"description": "Advanced logging messages, interactive prompts, loading animations and more in TypeScript",

@@ -17,6 +17,6 @@ "main": "lib/index.js",

"dependencies": {
"chalk": "^4.1.1",
"chalk": "^4.1.2",
"restore-cursor": "^3.1.0",
"slice-ansi": "^4.0.0",
"strip-ansi": "^6.0.0"
"strip-ansi": "^6.0.1"
},

@@ -27,15 +27,16 @@ "devDependencies": {

"@awdware/prettier-config": "^0.0.2",
"@types/jest": "^26.0.24",
"@types/jest": "^27.0.3",
"@types/node": "^14.14.20",
"@types/slice-ansi": "^4.0.0",
"@typescript-eslint/eslint-plugin": "^4.28.1",
"@typescript-eslint/parser": "^4.28.5",
"eslint": "^7.31.0",
"jest": "^27.0.6",
"jest-junit": "^12.2.0",
"@typescript-eslint/eslint-plugin": "^5.4.0",
"@typescript-eslint/parser": "^5.4.0",
"eslint": "^8.6.0",
"jest": "^27.4.7",
"jest-junit": "^13.0.0",
"legally": "^3.5.10",
"node-terminal-emulator": "^0.0.14",
"ts-jest": "^27.0.3",
"ts-node": "^10.0.0",
"typescript": "^4.3.5"
"node-terminal-simulator": "^1.1.0",
"prettier": "^2.5.1",
"ts-jest": "^27.1.3",
"ts-node": "^10.4.0",
"typescript": "^4.6.2"
},

@@ -42,0 +43,0 @@ "prettier": "@awdware/prettier-config",

@@ -1,29 +0,46 @@

# Awesome Logging
[![npm](https://img.shields.io/npm/v/awesome-logging?style=for-the-badge)](https://www.npmjs.com/package/awesome-logging)
[![npm](https://img.shields.io/npm/v/awesome-logging?color=%2300d26a&style=for-the-badge)](https://www.npmjs.com/package/awesome-logging)
[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/loaderb0t/awesome-logging/awesome-logging-CI/main?style=for-the-badge)](https://github.com/LoaderB0T/awesome-logging/actions/workflows/build.yml)
![Azure DevOps tests](https://img.shields.io/azure-devops/tests/loaderb0t/awesome-logging/30?style=for-the-badge)
[![Sonar Quality Gate](https://img.shields.io/sonar/alert_status/LoaderB0T_awesome-logging?server=https%3A%2F%2Fsonarcloud.io&sonarVersion=8.8&style=for-the-badge)](https://sonarcloud.io/dashboard?id=LoaderB0T_awesome-logging)
# awesome-logging
An awesome set of logging and prompting utilities for Node.js.
## Motivation 💥
**awesome-logging** is a collection of fancy text outputs and inputs for CLI tools written in NodeJS.
No matter what you want to log to the terminal or what information you need from the user, **awesome-logging** will help you do so.
- You want to show the progress of a certain task while also logging messages to the terminal while keeping everythign nice and formatted? No problem.
- You want the user to select one or multiple options of a given list? No problem!
- You want to log messages in the background while showing a fancy animation or a prompt to the user? No problem!
- You want to show the progress of a certain task while also logging messages to the terminal while keeping everything nice and formatted? No problem.
- You want the user to select one or multiple options of a given list? Sure thing!
- You want to log messages in the background while showing a fancy animation or a prompt to the user? Go for it!
## Key functionality
## Features 🔥
- Written in TypeScript (Strongly typed)
- Live-update logging messages in a reliable way
- Multi-line logging
- Loading animations and progress bars
- Interactive prompts to get user input
- Interrupt currently playing animations with regular log entries
- Extendable design (add your own loggers / prompts)
✅ Written in TypeScript (Strongly typed)
✅ Live-update logging messages in a reliable way
✅ Multi-line logging
✅ Flicker-free output, even on Windows
✅ Loading animations and progress bars
✅ Interactive prompts to get user input
✅ Interrupt currently playing animations with regular log entries
✅ Extendable design (add your own loggers / prompts)
One example of a multiline logger with many different logger types: (Not particularly pretty, but shows the idea)
![multiline example](https://user-images.githubusercontent.com/37637338/124401662-e6793480-dd2a-11eb-9a8d-c09328b19259.gif)
## Installation
## Built With 🔧
- [TypeScript](https://www.typescriptlang.org/)
## Installation 📦
```console

@@ -35,4 +52,8 @@ yarn add awesome-logging

## Examples
## Docs 📃
Find a bit of documentation [here](https://github.com/LoaderB0T/awesome-logging/blob/main/DOCS.md).
## Usage Example 🚀
```typescript

@@ -84,118 +105,23 @@ import { AwesomeLogger } from 'awesome-logger';

## AwesomeLogger Methods
## Contributing 🧑🏻‍💻
```typescript
AwesomeLogger.create(loggerType, loggerOptions): LoggerControl
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.
AwesomeLogger.log(text): LoggerControl
AwesomeLogger.log(logger): LoggerControl
AwesomeLogger.log(loggerType, loggerOptions): LoggerControl
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
Don't forget to give the project a star! Thanks again!
AwesomeLogger.prompt(promptType, promptOptions): PromptControl
AwesomeLogger.interrupt(text): void
```
1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
## Logger types
## License 🔑
### Text
Distributed under the MIT License. See `LICENSE.txt` for more information.
The simplest of all loggers; logs any printable string, no matter if one, or multiple lines.
## Contact 📧
**LoggerOptions**
Janik Schumacher - [@LoaderB0T](https://twitter.com/LoaderB0T) - [linkedin](https://www.linkedin.com/in/janikschumacher/)
| Option | type | description | default |
| ------ | ------ | ------------------------------- | ------- |
| text | string | The text that should be logged. | '' |
**LoggerControl**
| Method | returnType | description |
| --------------------- | ---------- | ------------------------------ |
| setText(text: string) | void | Sets a new text to the logger. |
---
### Spinner
Logs a loading spinner with a custom loading animation and text.
**LoggerOptions**
| Option | type | description | default |
| ------------- | -------- | ----------------------------------------------------- | --------------------------- |
| text | string | The description text of the loading spinner. | '' |
| spinnerFrames | string[] | The array of strings that are used for the animation. | ['. ', '.. ', '...', '.. '] |
| spinnerDelay | number | The amount of ms between each spinnerframe. | 500 |
**LoggerControl**
| Method | returnType | description |
| --------------------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------ |
| stop(options: { succeeded?: boolean; removeLine?: boolean; text?: string }) | void | Stops the spinner and changes the logging accordingly to the provided options. |
---
### Progress
Loggs a progressbar with optional text.
**LoggerOptions**
| Option | type | description | default |
| ------------- | ------------------ | --------------------------------------------------------------------- | -------------- |
| totalProgress | number | The maximum number the progress can reach. | 100 |
| text | string | The text that is displayed in front of the bar. | '' |
| completedText | string | The text that is displayed when the progress reaches 100%. | '' |
| unfilledChar | string | The character that is pronted for the uncompleted section of the bar. | '·' |
| filledChar | string | The character that is pronted for the completed section of the bar. | '■' |
| borderChar | string | The caharter that is printed on the left and right of the bar. | '■' |
| maxWidth | number | The maximum cound characters the progressbar can have can. | Terminal Width |
| borderColor | AwesomeLoggerColor | The color of the border chars. | 'GRAY' |
| unfilledColor | AwesomeLoggerColor | The color of the uncompleted part of the bar. | 'GRAY' |
| filledColor | AwesomeLoggerColor | The color of the completed part of the bar. | 'WHITE' |
**Note:** For performance reasons do not specify the colors of unfilled or filled characters directly in the string option, but by the dedicated color option.
**LoggerControl**
| Method | returnType | description |
| -------------------------------------------- | ---------- | ---------------------------------------------------- |
| setProgress(progress: number, text?: string) | void | Sets the current progress and optionally a new text. |
---
### Checklist
Logs a list of items that have a certain state like 'pending', 'inProgress', 'succeeded' and more.
**LoggerOptions**
| Option | type | description | default |
| ------ | -------------------------- | ----------------------------------------- | ------- |
| items | AwesomeChecklistLoggerItem | All items that are part of the checklist. | [] |
**LoggerControl**
| Method | returnType | description |
| -------------------------------------------------------------------------------- | ---------- | ------------------------------------------------------------------------------------------- |
| changeState(index: number, state: AwesomeChecklistLoggerState, newText?: string) | void | Changes the state of one item based on the index. Optionally sets a new text for that item. |
---
### Multi
Combines multiple loggers that were created previously and loggs them below each other.
**LoggerOptions**
| Option | type | description | default |
| -------- | ------------------- | -------------------------------------------------- | ------- |
| children | AwesomeLoggerBase[] | The array of loggers that were created previously. | [] |
**LoggerControl**
| Method | returnType | description |
| ------------------------------------------------------ | ---------- | ------------------------------------------------------------------------------------------------------------------------------ |
| getChild\<T extends AwesomeLoggerBase\>(index: number) | T | Returns the child at the given index. Be cautious as you have to be sure what kind of logger is present at the provided index. |
---
Project Link: [https://github.com/LoaderB0T/awesome-logging](https://github.com/LoaderB0T/awesome-logging)

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc