Skip to main content

Library

Library modules are intended to help organize and contain groupings of logic.

namedescription
configurationA mapping of configuration options this module declares
nameApplication name — influences configuration & TServiceParams
dependsAn array of dependency libraries that must be loaded first
optionalDependsAn array of dependency libraries that must be loaded first (if provided by application module)
servicesObject of service classes to register in the application
priorityInitOptional array to control service initialization order

Example Code

Minimum

import { CreateLibrary } from "@digital-alchemy/core";

import { APIService } from "./services/index.mts";

export const MY_LIB = CreateLibrary({
name: "my_app",
services: {
api: APIService,
},
});

declare module "@digital-alchemy/core" {
export interface LoadedModules {
// key must match name
my_app: typeof MY_APPLICATION;
}
}

Full

More advanced setup with libraries, configuration, and prioritized services:

import { CreateLibrary } from "@digital-alchemy/core";
import { LIB_UTILS } from "@cool-org/logic";

import {
DatabaseService,
LoaderService,
SpecialLogicService,
} from "./services/index.mts";

export const MY_APPLICATION = CreateLibrary({
// Optional: declare configuration values used by services
configuration: {
DATABASE_URL: {
type: "string",
required: true,
},
},
depends: [LIB_UTILS],
name: "my_app",
// Ensures database loads before loader
priorityInit: ["database", "loader"],
services: {
database: DatabaseService,
loader: LoaderService,
logic: SpecialLogicService,
},
});

declare module "@digital-alchemy/core" {
export interface LoadedModules {
my_app: typeof MY_APPLICATION;
}
}