Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.sorionlib.dev/llms.txt

Use this file to discover all available pages before exploring further.

Overview

Sorionlib can be configured through constructor options, configuration files, or environment variables.

Constructor options

Pass options directly when creating a client:
import { Sorion } from "sorionlib";

const client = new Sorion({
  logging: true,
  prefix: "!",
  debug: false
});

Configuration options

OptionTypeDefaultDescription
loggingbooleanfalseEnable console logging.
prefixstring"!"Command prefix for Discord bots.
debugbooleanfalseEnable debug mode.
timeoutnumber30000Default timeout in milliseconds.
retriesnumber3Number of retry attempts.
localestring"en"Default locale for messages.

Configuration file

Create a sorion.config.js file in your project root:
// sorion.config.js
module.exports = {
  logging: true,
  prefix: "!",
  debug: process.env.NODE_ENV === "development",
  timeout: 30000,
  retries: 3
};
The client automatically loads this file:
import { Sorion } from "sorionlib";

const client = new Sorion();
// Config loaded from sorion.config.js

Environment variables

Sorionlib reads from environment variables prefixed with SORION_:
# .env
SORION_LOGGING=true
SORION_PREFIX=!
SORION_DEBUG=false
SORION_TIMEOUT=30000
Environment variables override config file values:
import { Sorion } from "sorionlib";

const client = new Sorion();
// Reads from .env if present

Configuration priority

Configuration is merged in this order (later overrides earlier):
  1. Default values
  2. Configuration file (sorion.config.js)
  3. Environment variables (SORION_*)
  4. Constructor options
// sorion.config.js sets logging: false
// .env sets SORION_LOGGING=true
// Constructor sets logging: false

const client = new Sorion({ logging: false });
// Result: logging is false (constructor wins)

Module-specific configuration

API client

import { Sorion } from "sorionlib";

const client = new Sorion({
  api: {
    baseUrl: "https://api.example.com",
    timeout: 10000,
    retries: 5,
    headers: {
      "X-API-Version": "2"
    }
  }
});

Discord bot

import { Sorion } from "sorionlib";

const client = new Sorion({
  discord: {
    token: process.env.DISCORD_TOKEN,
    prefix: "!",
    intents: ["Guilds", "GuildMessages", "MessageContent"],
    presence: {
      status: "online",
      activity: {
        type: "PLAYING",
        name: "with Sorionlib"
      }
    }
  }
});

Database

import { Sorion } from "sorionlib";

const client = new Sorion({
  database: {
    type: "mongodb",
    uri: process.env.MONGODB_URI,
    database: "myapp",
    poolSize: 10
  }
});

Inline configuration

Override configuration at runtime:
import { Sorion } from "sorionlib";

const client = new Sorion({ logging: false });

// Enable logging temporarily
client.configure({ logging: true });

// Do something with logging enabled
await client.doSomething();

// Disable logging again
client.configure({ logging: false });

Validate configuration

Check if configuration is valid:
import { Sorion, validateConfig } from "sorionlib";

const config = {
  logging: true,
  prefix: "!",
  timeout: -1 // Invalid
};

const result = validateConfig(config);

if (!result.valid) {
  console.log(result.errors);
  // [{ field: "timeout", message: "Must be a positive number" }]
}

Example configuration

Complete configuration example:
// sorion.config.js
module.exports = {
  // General
  logging: process.env.NODE_ENV !== "production",
  debug: process.env.NODE_ENV === "development",
  locale: "en",

  // API client
  api: {
    baseUrl: process.env.API_URL,
    timeout: 30000,
    retries: 3
  },

  // Discord bot
  discord: {
    token: process.env.DISCORD_TOKEN,
    prefix: "!",
    intents: ["Guilds", "GuildMessages"]
  },

  // Database
  database: {
    type: "mongodb",
    uri: process.env.MONGODB_URI,
    database: "myapp"
  }
};