@nanoforge-dev/config
v1.0.1
Published
NanoForge Engine - Config
Downloads
165
Readme
About
@nanoforge-dev/config is a wrapper of class-validator and class-transformer to imports validation and transformation decorators.
Installation
Node.js 24.11.0 or newer is required.
npm install @nanoforge-dev/config
yarn add @nanoforge-dev/config
pnpm add @nanoforge-dev/config
bun add @nanoforge-dev/configWarning
This library is of exclusive usage for other libraries. To put variables in the environment to allow libraries to use it through this config library, you must put it in factory options :
import { type IRunOptions } from "@nanoforge-dev/common";
import { NanoforgeFactory } from "@nanoforge-dev/core";
import { NetworkLibrary } from "@nanoforge-dev/network";
export async function main(options: IRunOptions) {
const app = NanoforgeFactory.createClient({
environment: {
serverTcpPort: "4445",
serverUdpPort: "4444",
serverAddress: "127.0.0.1",
},
});
const network = new NetworkLibrary();
app.useNetwork(network);
await app.init(options);
await app.run();
}Example usage
Initialize the library in your main file.
export class NetworkClientLibrary extends BaseNetworkLibrary {
get __name(): string {
return "NetworkClientLibrary";
}
public override async __init(context: InitContext): Promise<void> {
const config = await context.config.registerConfig(ClientConfigNetwork);
// Do something with config
}
}Using this config
import {
Default,
Expose,
IsByteLength,
IsIpOrFQDN,
IsOptional,
IsPort,
} from "@nanoforge-dev/config";
export class ClientConfigNetwork {
// This var must be a string port (ex: "4444") but can be undefined
@Expose()
@IsOptional()
@IsPort()
serverTcpPort?: string;
@Expose()
@IsOptional()
@IsPort()
serverUdpPort?: string;
// This var must be ip address or fqdn (it cannot be undefined)
@Expose()
@IsIpOrFQDN()
serverAddress?: string;
// This var must be a byte length between 2 and 64. It can be undefined as it as a default value.
@Expose()
@Default("PACKET_END")
@IsByteLength(2, 64)
magicValue!: string;
}Links
Contributing
Before creating an issue, please ensure that it hasn't already been reported/suggested, and double-check the
documentation.
See the contribution guide if you'd like to submit a PR.
Help
If you don't understand something in the documentation, you are experiencing problems, or you just need a gentle nudge in the right direction, please don't hesitate to ask questions in discussions.
