Skip to content

Commit 5ff473f

Browse files
authoredFeb 22, 2023
refactor: expose argument context types (#610)
1 parent 23fd6e0 commit 5ff473f

File tree

5 files changed

+48
-10
lines changed

5 files changed

+48
-10
lines changed
 

‎src/arguments/CoreBoolean.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import type { PieceContext } from '@sapphire/pieces';
22
import { resolveBoolean } from '../lib/resolvers/boolean';
33
import { Argument } from '../lib/structures/Argument';
4+
import type { BooleanArgumentContext } from '../lib/types/ArgumentContexts';
45

56
export class CoreArgument extends Argument<boolean> {
67
public constructor(context: PieceContext) {
78
super(context, { name: 'boolean' });
89
}
910

10-
public run(parameter: string, context: { readonly truths?: string[]; falses?: readonly string[] } & Argument.Context): Argument.Result<boolean> {
11+
public run(parameter: string, context: BooleanArgumentContext): Argument.Result<boolean> {
1112
const resolved = resolveBoolean(parameter, { truths: context.truths, falses: context.falses });
1213
return resolved.mapErrInto((identifier) =>
1314
this.error({

‎src/arguments/CoreEnum.ts

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
import type { PieceContext } from '@sapphire/pieces';
22
import { resolveEnum } from '../lib/resolvers/enum';
33
import { Argument } from '../lib/structures/Argument';
4+
import type { EnumArgumentContext } from '../lib/types/ArgumentContexts';
45

56
export class CoreArgument extends Argument<string> {
67
public constructor(context: PieceContext) {
78
super(context, { name: 'enum' });
89
}
910

10-
public run(
11-
parameter: string,
12-
context: { readonly enum?: string[]; readonly caseInsensitive?: boolean } & Argument.Context
13-
): Argument.Result<string> {
11+
public run(parameter: string, context: EnumArgumentContext): Argument.Result<string> {
1412
const resolved = resolveEnum(parameter, { enum: context.enum, caseInsensitive: context.caseInsensitive });
1513
return resolved.mapErrInto((identifier) =>
1614
this.error({

‎src/arguments/CoreMessage.ts

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
import type { PieceContext } from '@sapphire/pieces';
22
import type { Message } from 'discord.js';
3-
import { resolveMessage, type MessageResolverOptions } from '../lib/resolvers/message';
3+
import { resolveMessage } from '../lib/resolvers/message';
44
import { Argument } from '../lib/structures/Argument';
5+
import type { MessageArgumentContext } from '../lib/types/ArgumentContexts';
56

67
export class CoreArgument extends Argument<Message> {
78
public constructor(context: PieceContext) {
89
super(context, { name: 'message' });
910
}
1011

11-
public async run(
12-
parameter: string,
13-
context: Omit<MessageResolverOptions, 'messageOrInteraction'> & Argument.Context
14-
): Argument.AsyncResult<Message> {
12+
public async run(parameter: string, context: MessageArgumentContext): Argument.AsyncResult<Message> {
1513
const channel = context.channel ?? context.message.channel;
1614
const resolved = await resolveMessage(parameter, {
1715
messageOrInteraction: context.message,

‎src/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ export * from './lib/structures/Listener';
6868
export * from './lib/structures/ListenerStore';
6969
export * from './lib/structures/Precondition';
7070
export * from './lib/structures/PreconditionStore';
71+
export * from './lib/types/ArgumentContexts';
7172
export * from './lib/types/Enums';
7273
export * from './lib/types/Events';
7374
export {

‎src/lib/types/ArgumentContexts.ts

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import type { MessageResolverOptions } from '../resolvers/message';
2+
import type { Argument } from '../structures/Argument';
3+
4+
/**
5+
* The context for the `'enum'` argument.
6+
* @since 4.2.0 (🌿)
7+
*/
8+
export interface EnumArgumentContext extends Argument.Context {
9+
readonly enum?: string[];
10+
readonly caseInsensitive?: boolean;
11+
}
12+
13+
/**
14+
* The context for the `'boolean'` argument.
15+
* @since 4.2.0 (🌿)
16+
*/
17+
export interface BooleanArgumentContext extends Argument.Context {
18+
/**
19+
* The words that resolve to `true`.
20+
* Any words added to this array will be merged with the words:
21+
* ```ts
22+
* ['1', 'true', '+', 't', 'yes', 'y']
23+
* ```
24+
*/
25+
readonly truths?: string[];
26+
/**
27+
* The words that resolve to `false`.
28+
* Any words added to this array will be merged with the words:
29+
* ```ts
30+
* ['0', 'false', '-', 'f', 'no', 'n']
31+
* ```
32+
*/
33+
readonly falses?: string[];
34+
}
35+
36+
/**
37+
* The context for the `'message'` argument.
38+
* @since 4.2.0 (🌿)
39+
*/
40+
export type MessageArgumentContext = Omit<MessageResolverOptions, 'messageOrInteraction'> & Argument.Context;

0 commit comments

Comments
 (0)
Please sign in to comment.