mirror of
https://github.com/sern-handler/handler
synced 2026-06-06 01:16:55 +00:00
* refactor: move things to core, imports not fixed yet * work on strategy and lifted Context * remove id from lifted Context * refactor: remove dependence on discord.js for module stoore * moving and fixing imports * chore: move operators into core * chore: fix paths * add wrapper platform field * add deprecation warning * chore:update paths * chore:remove const function * chore: remove deprecated symbols * docs: add documentation to internal function * chore: remove deprecated support for plugins * chore: remove dependence on discord.js Awaitable type * chore: update typings * lift requiredDependencyKeys out of makeFetcher * move strategy to index.ts and add adapters * chore: fix typings * chore: move command args matrix as binding * feat: make Context platform specific, CoreContext as Core * chore: remove extra file * chore: move prettier into package.json * chore(core): update imports and operators * chore(core): add DefaultWrapper as sern classic * move eslint and prettier configs to json * chore: remove utils folder in favor of single file * chore: remove redundant directories for single files * chore: remove redundant directories for single files * refactor: move and update things * chore: move commands into seperate file * chore: serverless work * chore: remove redundant directories for single files * chore: rename, wip refactoring * chore: redundant directory * refactor: internalize operators * feat!: new module resolution algorithm * chore: refactor and move things * chore: refactor and add multiplatform typings * chore: remove leaky import * chore: add agnostic predicates * chore: add old context here until i figure out what to do * chore: update Proccessed typing to ./core * chore: add tweetnacl * revert: multiplatform * revert: multiplatform * chore: modularize and split typings * chore: revert multiplatform * chore: revert multi and mov sernEmitter * chore: revert multi and clean up code * refactor: add createGenericHandler * refactor: remove unneeded signatures and fix imports * feat: add getPublishableCommands to ModuleManager * chore: remove bad imports * style: pretty * revert: remove AnyDependencies type * refactor: fold switch case * docs: specifics * chore: change all file names to camel case * refactor: change all files to camelcase and refactor * revert: remove cloudflare typings * feat: SernEmitter now captures promise rejections * chore: fix InitArgs missing * chore: move typings * chore: move and clean * chore: delete plugins dir * chore: cleanup dispatchers subdirectory for single file * chore: move context into structures directory * refactor: cleaning up code and renaming variables * chore: update name of function to reflect use * revert: multiple entry points * revert: readd discordEvent * refactor: rename, format, move things * feat: types organization and cleaning up code base * fix: unaliased modules would throw error * build: speed up build * revert: readd module store and add contract * add separate id for id processing * chore: progress of globalizing dependencies type * chore: update container and init hook progress * style: format & lint * feat: dev and prod mode * fix: directories ignoring incorrectly * refactor: move metadata outside of module declarations * revert: re export command executable and event executable * refactor: a lot * fix: plugins for class modules and module loader * style: pretty * fix class based module loading * feat: globalize dependencies type * revert: internal name * feat: add new sern emitter event * refactor: remove cast * refactor: add better typings for sern event modules * test: add tests * test: add more tests * feat: change error handling contract * chore: make changes in codebase after error contract change * docs: add purpose of d.ts file * revert removal of crash method and mark deprecated * fix: typings for options- have access to all properties now * refactor: npx knip * 3.0.0-rc1 * chore: fix for version 3 and reexport old types * fix: reexport payload and button modules * fix: component commands incorrectly aligned and ordered * chore: bump version * test: add id generation testing * refactor: algorithm for module resolution * chore: bump vers * test: add eventDispatcher test * *.test.ts * fix: autocomplete nested option * chore: bump vers * add npmignore .yarn * feat: experimental loading sern.config.json * refactor: simplify build * chore: bump vers * chore: add documentation for service api * add since * feat: add possible mode option in file loading mode * refactor: remove two unneeded functions and refactor to throw early * refactor: clean up handler code * fix: undefined this binding * refactor: clean up signatures and types * refactor: make evident the internal api and move around stuff * refactor: remove circular dependencies * fix circulars and imports * oops, moving around mroe stuff * refresh lock * chore: import type and prettier * style: prettier * feat: solidify init logic * fix module-loading.ts --------- Co-authored-by: jacoobes <jacobnguyend@gmail.com>
143 lines
3.3 KiB
TypeScript
143 lines
3.3 KiB
TypeScript
/**
|
|
* @since 1.0.0
|
|
* A bitfield that discriminates command modules
|
|
* @enum { number }
|
|
* @example
|
|
* ```ts
|
|
* export default commandModule({
|
|
* // highlight-next-line
|
|
* type : CommandType.Text,
|
|
* name : 'a text command'
|
|
* execute(message) {
|
|
* console.log(message.content)
|
|
* }
|
|
* })
|
|
* ```
|
|
*/
|
|
export enum CommandType {
|
|
Text = 1 << 0,
|
|
Slash = 1 << 1,
|
|
Both = 3,
|
|
CtxUser = 1 << 2,
|
|
CtxMsg = 1 << 3,
|
|
Button = 1 << 4,
|
|
StringSelect = 1 << 5,
|
|
Modal = 1 << 6,
|
|
UserSelect = 1 << 7,
|
|
RoleSelect = 1 << 8,
|
|
MentionableSelect = 1 << 9,
|
|
ChannelSelect = 1 << 10,
|
|
}
|
|
|
|
/**
|
|
* A bitfield that discriminates event modules
|
|
* @enum { number }
|
|
* @example
|
|
* ```ts
|
|
* export default eventModule({
|
|
* //highlight-next-line
|
|
* type : EventType.Discord,
|
|
* name : 'guildMemberAdd'
|
|
* execute(member : GuildMember) {
|
|
* console.log(member)
|
|
* }
|
|
* })
|
|
* ```
|
|
*/
|
|
export enum EventType {
|
|
/**
|
|
* The EventType for handling discord events
|
|
*/
|
|
Discord = 1,
|
|
/**
|
|
* The EventType for handling sern events
|
|
*/
|
|
Sern = 2,
|
|
/**
|
|
* The EventType for handling external events.
|
|
* Could be for example, `process` events, database events
|
|
*/
|
|
External = 3,
|
|
}
|
|
|
|
/**
|
|
* A bitfield that discriminates plugins
|
|
* @enum { number }
|
|
* @example
|
|
* ```ts
|
|
* export default function myPlugin() : EventPlugin<CommandType.Text> {
|
|
* //highlight-next-line
|
|
* type : PluginType.Event,
|
|
* execute([ctx, args], controller) {
|
|
* return controller.next();
|
|
* }
|
|
* }
|
|
* ```
|
|
*/
|
|
export enum PluginType {
|
|
/**
|
|
* The PluginType for InitPlugins
|
|
*/
|
|
Init = 1,
|
|
/**
|
|
* The PluginType for EventPlugins
|
|
*/
|
|
Control = 2,
|
|
}
|
|
/**
|
|
* @enum { string }
|
|
*/
|
|
export enum PayloadType {
|
|
/**
|
|
* The PayloadType for a SernEmitter success event
|
|
*/
|
|
Success = 'success',
|
|
/**
|
|
* The PayloadType for a SernEmitter failure event
|
|
*/
|
|
Failure = 'failure',
|
|
/**
|
|
* The PayloadType for a SernEmitter warning event
|
|
*/
|
|
Warning = 'warning',
|
|
}
|
|
|
|
/**
|
|
* @enum { string }
|
|
*/
|
|
export const enum SernError {
|
|
/**
|
|
* Throws when registering an invalid module.
|
|
* This means it is undefined or an invalid command type was provided
|
|
*/
|
|
InvalidModuleType = 'Detected an unknown module type',
|
|
/**
|
|
* Attempted to lookup module in command module store. Nothing was found!
|
|
*/
|
|
UndefinedModule = `A module could not be detected`,
|
|
/**
|
|
* Attempted to lookup module in command module store. Nothing was found!
|
|
*/
|
|
MismatchModule = `A module type mismatched with event emitted!`,
|
|
/**
|
|
* Unsupported interaction at this moment.
|
|
*/
|
|
NotSupportedInteraction = `This interaction is not supported.`,
|
|
/**
|
|
* One plugin called `controller.stop()` (end command execution / loading)
|
|
*/
|
|
PluginFailure = `A plugin failed to call controller.next()`,
|
|
/**
|
|
* A crash that occurs when accessing an invalid property of Context
|
|
*/
|
|
MismatchEvent = `You cannot use message when an interaction fired or vice versa`,
|
|
/**
|
|
* Unsupported feature attempted to access at this time
|
|
*/
|
|
NotSupportedYet = `This feature is not supported yet`,
|
|
/**
|
|
* Required Dependency not found
|
|
*/
|
|
MissingRequired = `@sern/client is required but was not found`,
|
|
}
|