open-index/open-npm huggingface dataset:
npm package: @senka/db
Description: Senka Db 
Author: SereSatka
Latest version: 1.0.5

# <center> SenkaDb</center>

## Usage

```js
import {Database} from "@senka/db";
/**
 * Commonjs
 * const {Database} = require("@senka/db")
 */
const db = new Db({path?:string,name?:string});
db.set("a",0)//{"a":0}
db.add("a",6)//{"a":6}
db.subtract("a",2)//{"a":4}

db.get("a")//return 4
db.fetch("a")//return 4
db.all()//return {"a":4}

db.deleteAll()//{}
db.delete("a")//{}
db.has("a")//return false


```

## Emitter

```js
db.on("set", (oldData, newData) => {
  console.log(`${oldData} => ${newData}`);
});
db.on("delete", (deleteData) => {
  console.log(`${deleteData}`);
});
db.on("add", (oldData, newData) => {
  console.log(`${oldData} => ${newData}`);
});
db.on("subtract", (oldData, newData) => {
  console.log(`${oldData} => ${newData}`);
});
db.on("deleteAll", (data) => {
  console.log(`${data}`);
});
```

- <a href="https://discord.com/users/812347817602842624">Discord</a>
npm package: @senka/discord-colorizer
Description: Discord ansi colorizer
Author: SeneSatka
Latest version: 1.0.3

# <center> SenkaDiscordColorizer</center>

## Usage

```js
import { colorizer } from "@senka/discord-colorizer";
client.channels.get("<channel_id>").send(
  colorizer.build(`${colorizer.blue("Hello")}
 ${colorizer.red("World")}`)
);
```

<div><a href="https://discord.com/users/812347817602842624">Discord</a></div>
npm package: @senka/discord.js-canvas
Description: Simple canvas module
Author: SeneSatka
Latest version: 1.0.0

# @senka/discord.js-canvas

## Usage

```js
import { welcomeMessageImage } from "@senka/discord.js-canvas";
const { welcomeMessageImage } = require("@senka/discord.js-canvas");
```

```js
const client = new Client({
  intents: ["Guilds", "GuildMessages", "MessageContent", "GuildMembers"],
});

client.login("<bot_token>");
client.on("guildMemberAdd", async (member) => {
  const image = await new welcomeMessageImage(member, true).create();
  const channel = member.client.channels.get("<channel_id>");

  channel.send({
    files: [
      new AttachmentBuilder(image, {
        name: "welcomeImage.png",
        description: "@senka/discord.js-canvas",
      }),
    ],
  });
});
```

## Options

```js
const image =await new welcomeMessageImage(member, /*Auto? boolean*/ false)
.setUsername({
    position: Position;
    fontSize: FontSize;
    color: string;
} | "auto")
.setAvatar({
    size: number | "auto";
    position: Position;
    round: boolean | "auto";
    border: {
        size: number | "auto";
        color: string;
    } | false;
} | "auto")
.setCard({
    size: {
        width: number | "auto";
        height: number | "auto";
    };
    backgroundUrl: string;
} | "auto")
.setTransparentLayer({
    size: {
        width: number | "auto";
        height: number | "auto";
    };
    alpha: number | "auto";
    position: Position;
    round: Array<number> | "auto";
    color: string | "auto";
} | "auto")
.addText({
    text: string;
    position: Position;
    fontSize: FontSize;
    color: string;
    textAlign: "Left" | "Right" | "Center";
} | "auto")
.create()//await

```
npm package: @senka/djs-pagination
Description: ```js import { Book, isBook, bookHandler } from "@senka/discord-pagination"
Author: SeneSatka
Latest version: 1.0.3

## Usage

```js
import { Book, isBook, bookHandler } from "@senka/discord-pagination"

client.on("interactionCreate", (i) => {
  if (isBook(i)) return bookHandler(i);
  //other coodes...
});


const embed1 = new EmbedBuilder()
  .setTitle("Page 1")
  .setDescription("User who opened this page: [user.globalName]");

const embed2 = new EmbedBuilder()
  .setTitle("Page 2")
  .setDescription("User who opened this page: [user.username]");

const embed3 = new EmbedBuilder()
  .setTitle("Page 3")
  .setDescription("User who opened this page:  [user.id]");

const book = new Book({
  name: "book1",
  pages: [embed1, embed2, embed3],
  buttonType: "Primary",
});


<channel>.send(book.build());
<interaction,message>.reply(book.build(<interaction,message>.user))
```

### Book options

```ts
new Book({
  name: string, //Required
  prevLabel: string, //Default <
  nextLabel: string, //Default >
  firstLabel: string, //Default <<
  lastLabel: string, //Default >>
  currentPage: number, //Default 1
  pages: Array<Embed | EmbedBuilder>,
  buttonType: "Primary" | "Secondary" | "Success" | "Danger",
  //Default Success
});
```

## Images

<img src="https://github.com/SeneSatka/djs-pagination/blob/main/assets/Page1.png?raw=true"/>
<img src="https://github.com/SeneSatka/djs-pagination/blob/main/assets/Page2.png?raw=true"/>
<img src="https://github.com/SeneSatka/djs-pagination/blob/main/assets/Page3.png?raw=true"/>

## Book Storage

The books are stored in books.json in the directory where the transaction was started.
So why is it saved?
When the Discord bot is restarted, the books sent as messages become useless. To prevent this, books are stored in books.json and can be edited.
npm package: @senka/logger
Description: SenkaLogger. Simple colorized console logger
Author: SeneSatka
Latest version: 1.0.9

# <center> SenkaLogger</center>

## Usage

```js
import { Logger } from "@senka/logger";
/**
 * Commonjs
 * const { Logger } = require("@senka/logger")
 */
const logger = new Logger();
logger.warn("npm i @senka/logger");
logger.error("You still haven't downloaded @senka/logger");
logger.log("Thanks for downloading");
logger.discord("Jack: Hi");
```

<img src="https://lh3.googleusercontent.com/u/0/drive-viewer/AITFw-xJRfUfy_EE-B1HsnthDMN2Cyzha4Q5vey9_Wkn8JrPmZPKZ_EeC2P06DxYYFczUwKtiw_E9m3dQsHRK2VJlgFvg7JP=w1239-h571"/>

## Logger Options

```js
const loggerOptions={
    discordColor: string;/* default  #645cff */
    defaultColor: string;/* default  #0f0 */
    defaultErrorColor: string;/* default  #f00 */
    defaultWarningColor: string;/* default  #ff0 */
    discordTextColor: string;/* default  #625cff */
    defaultTextColor: string;/* default  #0f5 */
    defaultTextErrorColor: string;/* default  #f05 */
    defaultTextWarningColor: string;/* default  #ff5 */
    time: boolean;/* default false */
    }


    const logger= new Logger({time:true})
    // Adds [HH:MM:SS]> to the beginning of the line
```

## Loading

```js
import { Logger } from "@senka/logger";
const logger = new Logger();
logger.loading({
  time: 1500,
  changeTime: 500,
  loadArr: [".", "..", "..."],
  before: "Loading",
});
//or
logger.loading({
  time: 1500,
  changeTime: 500,
  loadArr: ".",
  repeat: true,
  before: "Loading",
});
/**
 *  Loading.
 *  Loading..
 *  Loading...
 *  Note: The line is refreshed,
 *  it does not write to more than one line.
 */
```

### Loading Options

```js
const loadingoptions={
  time: number;//required
  changeTime: number;//required
  loadArr: any;/* default ["\\", "|", "/", "-"] */
  repat: boolean;/* default false */
  before: string | number;
  after: string | number;
}
const logger = new Logger();
logger.loading({
    time:4000,
    changeTime:500,
    before:"Loading [ ",
    after:" ]"
    })
/**
 *  Loading [ \ ]
 *  Loading [ | ]
 *  Loading [ / ]
 *  Loading [ - ]
 *  Loading [ \ ]
 *  Loading [ | ]
 *  Loading [ / ]
 *  Loading [ - ]
 * Note: The line is refreshed,
 * it does not write to more than one line.
 */
```

<a href="https://discord.com/users/812347817602842624">Discord</a>
npm package: @senka/systeminfo
Description: System info
Author: SeneSatka
Latest version: 1.1.2

# <center> SenkaSystemInfo</center>

## Usage

```js
import { getSystemInfo, logSystemLogoAndInfo } from "@senka/systeminfo";
/**
 * Commonjs
 * const { getSystemInfo, logSystemLogoAndInfo } = require("@senka/systeminfo")
 */
await getSystemInfo().then((data) => console.log(data));
/* Example:
 {
    os: data.distro,
    version: data.release,
    arch: data.arch,
    platform: data.platform,
    totalram: `${Math.round(totalmem() / 1024 / 1024 / 1024)}GB`,
    freeram: `${Math.round(freemem() / 1024 / 1024 / 1024)}GB`,
}
 */
logSystemLogoAndInfo();
/* Example
   ⠀ ⣤⣴⣾⣿⣿⣿⣿⣿⣶⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡄
    ⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⢰⣦⣄⣀⣀⣠⣴⣾⣿⠃      OS: Microsoft Windows 11 Pro
    ⢸⣿⣿⣿⣿⣿⣿⣿⣿⡏⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⠀      Version: 10.0.22621
⠀   ⣼⣿⡿⠿⠛⠻⠿⣿⣿⡇⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀      Arch: x64
⠀    ⠉⠀⠀⠀ ⠀⠀⠀⠈⠁⠀⢰⣿⣿⣿⣿⣿⣿⣿⣿⠇       Platform: Windows
⠀  ⣠⣴⣶⣿⣿⣿⣷⣶⣤⠀⠀⠀⠈⠉⠛⠛⠛⠉⠉⠀⠀⠀       Computer: Scripter
⠀ ⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⣶⣦⣄⣀⣀⣀⣤⣤⣶⠀⠀⠀⠀     Used Ram:: 54%
  ⣾⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⢀⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀
  ⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀
⢠⣿⡿⠿⠛⠉⠉⠉⠛⠿⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀
⠘⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⢿⣿⣿⣿⣿⣿⠿⠛⠀⠀⠀ 
*/
```
npm package: @senka/text-to-ascii
Description: ```js import { ascii } from "@senka/text-to-ascii";
Author: SeneSatka
Latest version: 1.0.1

## @senka/text-to-ascii

```js
import { ascii } from "@senka/text-to-ascii";

const { ascii } = require("@senka/text-to-ascii");

const text = ascii("Hello\nWorld");
console.log(text);
/* OUTPUT

##     ## ######## ##       ##        #######  
##     ## ##       ##       ##       ##     ## 
##     ## ##       ##       ##       ##     ## 
######### ######   ##       ##       ##     ## 
##     ## ##       ##       ##       ##     ## 
##     ## ##       ##       ##       ##     ## 
##     ## ######## ######## ########  #######  


##      ##  #######  ########  ##       ########  
##  ##  ## ##     ## ##     ## ##       ##     ## 
##  ##  ## ##     ## ##     ## ##       ##     ## 
##  ##  ## ##     ## ########  ##       ##     ## 
##  ##  ## ##     ## ##   ##   ##       ##     ## 
##  ##  ## ##     ## ##    ##  ##       ##     ## 
 ###  ###   #######  ##     ## ######## ########  
 */
```