Foundationpackages/core/README.md

@arachnejs/core

Kernel for the Arachne framework: dependency injection, module lifecycle, typed events, and a logger interface.

Install #

bun add @arachnejs/core

Quick start #

import {
  createApp,
  createToken,
  defineModule,
  type Logger,
} from "@arachnejs/core";

const Greeter = createToken<{ hello(): string }>("Greeter");

const greet = defineModule({
  name: "greet",
  providers: [
    {
      token: Greeter,
      useValue: { hello: () => "hi" },
    },
  ],
  async setup(ctx) {
    ctx.logger.info(ctx.container.resolve(Greeter).hello());
  },
});

const app = createApp({ modules: [greet] });
await app.boot();
await app.dispose();

API #

ExportRole
createTokenOpaque DI token
ContainerSingleton / transient / factory providers, child scopes
defineModuleDeclarative module with providers + lifecycle
EventBusTyped pub/sub
createConsoleLoggerDefault Logger
createAppBoots modules in topological order

Zero runtime dependencies. See ADR 0003.