diff --git a/src/types/core.ts b/src/types/core.ts index 9beb715..16d5dc0 100644 --- a/src/types/core.ts +++ b/src/types/core.ts @@ -1,15 +1,16 @@ +/** + * Core typings. + * Includes iti, dependencies, and other commonly used types + * Should not have discord.js imports + */ import { type EventEmitter } from 'node:events'; import { ErrorHandling, Logging, ModuleManager, SernEmitter } from '../core'; import { Container, UnpackFunction } from 'iti'; +import { Module } from './module'; +import { Awaitable } from './handler'; export type ModuleStore = Map; -export type ServerlessDependencyList = [ - SernEmitter, - ErrorHandling, - Logging | undefined, - ModuleManager, -]; -export type WebsocketDependencyList = [ +export type DependencyList = [ SernEmitter, ErrorHandling, Logging | undefined, @@ -32,22 +33,13 @@ export interface CoreDependencies { '@sern/modules': Singleton; '@sern/errors': Singleton; } -/** - * To support older versions. Type alias for WebsocketDependencies - * @deprecated - */ -export type Dependencies = WebsocketDependencies; -export interface ServerlessDependencies extends CoreDependencies { - '@sern/client': never; -} -export interface WebsocketDependencies extends CoreDependencies { +export interface Dependencies extends CoreDependencies { '@sern/client': Singleton; } -export type AnyDependencies = ServerlessDependencies | WebsocketDependencies; //prettier-ignore -export type MapDeps = T extends [ +export type MapDeps = T extends [ infer First extends keyof Deps, ...infer Rest extends readonly unknown[], ] @@ -56,13 +48,17 @@ export type MapDeps ...(MapDeps extends [never] ? [] : MapDeps), ] : [never]; -//Basically, '@sern/client' | '@sern/store' | '@sern/modules' | '@sern/error' | '@sern/emitter' will be provided defaults, and you can exclude the rest -export type OptionalDependencies = '@sern/logger'; + +/* + * @deprecated + * Will remove optional logger in the future + */export type OptionalDependencies = '@sern/logger'; export type Processed = T & { name: string; description: string }; export type Deprecated = [never, Message]; -export interface DependencyConfiguration { +export interface DependencyConfiguration { + //@deprecated. Loggers will always be included in the future exclude?: Set; - build: (root: Container, {}>) => Container; + build: (root: Container) => Awaitable>; } export interface ImportPayload { @@ -75,6 +71,10 @@ export interface Wrapper { defaultPrefix?: string; events?: string; containerConfig: { - get: (...keys: (keyof WebsocketDependencies)[]) => unknown[]; + get: (...keys: (keyof Dependencies)[]) => unknown[]; }; } +export interface InitArgs> { + module: T; + absPath: string; +} diff --git a/src/types/module.ts b/src/types/module.ts index ef9364b..f365933 100644 --- a/src/types/module.ts +++ b/src/types/module.ts @@ -23,7 +23,7 @@ import { UserContextMenuCommandInteraction, UserSelectMenuInteraction, } from 'discord.js'; -import { InitArgs } from '../core'; +import { InitArgs } from './core'; import { Args, Payload, SlashOptions } from '../types/handler'; import { Context } from '../classic/context'; import { Processed } from '../types/core'; diff --git a/src/types/plugin.ts b/src/types/plugin.ts index 621564b..9699d2e 100644 --- a/src/types/plugin.ts +++ b/src/types/plugin.ts @@ -14,7 +14,7 @@ import type { Err, Ok, Result } from 'ts-results-es'; import type { PluginType } from '../core/structures/enums'; import type { CommandModule, EventModule } from './module'; -import type { InitArgs } from '../core/plugins'; +import type { InitArgs } from './core'; import type { Awaitable } from './handler'; import { Processed } from './core'; export type PluginResult = Awaitable;