reciple 10.0.42 → 10.0.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/assets/global/nodemon.json +3 -0
  2. package/dist/_virtual/{_@oxc-project_runtime@0.115.0 → _@oxc-project_runtime@0.122.0}/helpers/decorate.mjs +1 -1
  3. package/dist/bin/commands/build.d.mts +1 -2
  4. package/dist/bin/commands/build.mjs +1 -2
  5. package/dist/bin/commands/create.d.mts +1 -2
  6. package/dist/bin/commands/create.mjs +1 -2
  7. package/dist/bin/commands/createModule.d.mts +1 -2
  8. package/dist/bin/commands/createModule.mjs +1 -2
  9. package/dist/bin/commands/start.d.mts +1 -2
  10. package/dist/bin/commands/start.mjs +1 -2
  11. package/dist/bin/commands/startSharding.d.mts +1 -2
  12. package/dist/bin/commands/startSharding.mjs +1 -2
  13. package/dist/bin/reciple.mjs +1 -2
  14. package/dist/classes/NotAnError.d.mts +1 -2
  15. package/dist/classes/NotAnError.mjs +1 -2
  16. package/dist/classes/cli/CLI.d.mts +1 -2
  17. package/dist/classes/cli/CLI.mjs +2 -3
  18. package/dist/classes/cli/CLISubcommand.d.mts +1 -2
  19. package/dist/classes/cli/CLISubcommand.mjs +1 -2
  20. package/dist/classes/cli/ConfigReader.d.mts +1 -2
  21. package/dist/classes/cli/ConfigReader.mjs +1 -2
  22. package/dist/classes/cli/RuntimeEnvironment.d.mts +1 -2
  23. package/dist/classes/cli/RuntimeEnvironment.mjs +1 -2
  24. package/dist/classes/client/EventListeners.d.mts +1 -2
  25. package/dist/classes/client/EventListeners.mjs +1 -2
  26. package/dist/classes/client/ModuleLoader.d.mts +1 -2
  27. package/dist/classes/client/ModuleLoader.mjs +1 -2
  28. package/dist/classes/managers/ModuleManager.d.mts +1 -2
  29. package/dist/classes/managers/ModuleManager.mjs +2 -3
  30. package/dist/classes/modules/BaseModule.d.mts +1 -2
  31. package/dist/classes/modules/BaseModule.mjs +1 -2
  32. package/dist/classes/modules/PostconditionModule.d.mts +1 -2
  33. package/dist/classes/modules/PostconditionModule.mjs +2 -3
  34. package/dist/classes/modules/PreconditionModule.d.mts +1 -2
  35. package/dist/classes/modules/PreconditionModule.mjs +2 -3
  36. package/dist/classes/modules/commands/ContextMenuCommandModule.d.mts +1 -2
  37. package/dist/classes/modules/commands/ContextMenuCommandModule.mjs +2 -3
  38. package/dist/classes/modules/commands/MessageCommandModule.d.mts +1 -2
  39. package/dist/classes/modules/commands/MessageCommandModule.mjs +2 -3
  40. package/dist/classes/modules/commands/SlashCommandModule.d.mts +1 -2
  41. package/dist/classes/modules/commands/SlashCommandModule.mjs +2 -3
  42. package/dist/classes/modules/events/ClientEventModule.d.mts +1 -2
  43. package/dist/classes/modules/events/ClientEventModule.mjs +1 -2
  44. package/dist/classes/modules/events/EventModule.d.mts +3 -5
  45. package/dist/classes/modules/events/EventModule.mjs +1 -2
  46. package/dist/classes/modules/events/RESTEventModule.d.mts +1 -2
  47. package/dist/classes/modules/events/RESTEventModule.mjs +1 -2
  48. package/dist/classes/templates/ModuleTemplateBuilder.d.mts +1 -2
  49. package/dist/classes/templates/ModuleTemplateBuilder.mjs +1 -2
  50. package/dist/classes/templates/TemplateBuilder.d.mts +1 -2
  51. package/dist/classes/templates/TemplateBuilder.mjs +1 -2
  52. package/dist/classes/validation/BaseModuleValidator.d.mts +11 -12
  53. package/dist/classes/validation/BaseModuleValidator.mjs +1 -2
  54. package/dist/classes/validation/CommandModuleValidator.d.mts +23 -24
  55. package/dist/classes/validation/CommandModuleValidator.mjs +1 -2
  56. package/dist/classes/validation/EventModuleValidator.d.mts +11 -12
  57. package/dist/classes/validation/EventModuleValidator.mjs +1 -2
  58. package/dist/classes/validation/PostconditionModule.d.mts +9 -10
  59. package/dist/classes/validation/PostconditionModule.mjs +1 -2
  60. package/dist/classes/validation/PreconditionModule.d.mts +8 -9
  61. package/dist/classes/validation/PreconditionModule.mjs +1 -2
  62. package/dist/helpers/constants.d.mts +1 -2
  63. package/dist/helpers/constants.mjs +1 -2
  64. package/dist/helpers/types.d.mts +1 -2
  65. package/dist/index.d.mts +1 -2
  66. package/dist/index.mjs +1 -2
  67. package/dist/package.mjs +4 -5
  68. package/package.json +8 -8
  69. package/dist/bin/commands/build.mjs.map +0 -1
  70. package/dist/bin/commands/create.mjs.map +0 -1
  71. package/dist/bin/commands/createModule.mjs.map +0 -1
  72. package/dist/bin/commands/start.mjs.map +0 -1
  73. package/dist/bin/commands/startSharding.mjs.map +0 -1
  74. package/dist/bin/reciple.mjs.map +0 -1
  75. package/dist/classes/NotAnError.mjs.map +0 -1
  76. package/dist/classes/cli/CLI.mjs.map +0 -1
  77. package/dist/classes/cli/CLISubcommand.mjs.map +0 -1
  78. package/dist/classes/cli/ConfigReader.mjs.map +0 -1
  79. package/dist/classes/cli/RuntimeEnvironment.mjs.map +0 -1
  80. package/dist/classes/client/EventListeners.mjs.map +0 -1
  81. package/dist/classes/client/ModuleLoader.mjs.map +0 -1
  82. package/dist/classes/managers/ModuleManager.mjs.map +0 -1
  83. package/dist/classes/modules/BaseModule.mjs.map +0 -1
  84. package/dist/classes/modules/PostconditionModule.mjs.map +0 -1
  85. package/dist/classes/modules/PreconditionModule.mjs.map +0 -1
  86. package/dist/classes/modules/commands/ContextMenuCommandModule.mjs.map +0 -1
  87. package/dist/classes/modules/commands/MessageCommandModule.mjs.map +0 -1
  88. package/dist/classes/modules/commands/SlashCommandModule.mjs.map +0 -1
  89. package/dist/classes/modules/events/ClientEventModule.mjs.map +0 -1
  90. package/dist/classes/modules/events/EventModule.mjs.map +0 -1
  91. package/dist/classes/modules/events/RESTEventModule.mjs.map +0 -1
  92. package/dist/classes/templates/ModuleTemplateBuilder.mjs.map +0 -1
  93. package/dist/classes/templates/TemplateBuilder.mjs.map +0 -1
  94. package/dist/classes/validation/BaseModuleValidator.mjs.map +0 -1
  95. package/dist/classes/validation/CommandModuleValidator.mjs.map +0 -1
  96. package/dist/classes/validation/EventModuleValidator.mjs.map +0 -1
  97. package/dist/classes/validation/PostconditionModule.mjs.map +0 -1
  98. package/dist/classes/validation/PreconditionModule.mjs.map +0 -1
  99. package/dist/helpers/constants.mjs.map +0 -1
  100. package/dist/index.mjs.map +0 -1
  101. package/dist/package.mjs.map +0 -1
@@ -1,12 +1,12 @@
1
1
  import { ModuleType } from "../../helpers/constants.mjs";
2
2
  import { AnyCommandModuleData } from "../../helpers/types.mjs";
3
- import * as _reciple_core0 from "@reciple/core";
3
+ import * as _$_reciple_core0 from "@reciple/core";
4
4
  import { Validator } from "@reciple/core";
5
- import * as _sapphire_shapeshift0 from "@sapphire/shapeshift";
5
+ import * as _$_sapphire_shapeshift0 from "@sapphire/shapeshift";
6
6
 
7
7
  //#region src/classes/validation/CommandModuleValidator.d.ts
8
8
  declare class CommandModuleValidator extends Validator {
9
- static object: _sapphire_shapeshift0.ObjectValidator<{
9
+ static object: _$_sapphire_shapeshift0.ObjectValidator<{
10
10
  id: string | undefined;
11
11
  moduleType: ModuleType | undefined;
12
12
  onEnable: Function | undefined;
@@ -14,24 +14,24 @@ declare class CommandModuleValidator extends Validator {
14
14
  onDisable: Function | undefined;
15
15
  } & {
16
16
  id: string;
17
- type: _reciple_core0.CommandType;
18
- data: _sapphire_shapeshift0.UndefinedToOptional<{
17
+ type: _$_reciple_core0.CommandType;
18
+ data: _$_sapphire_shapeshift0.UndefinedToOptional<{
19
19
  name: any;
20
20
  description: any;
21
21
  aliases: any;
22
22
  options: any;
23
23
  flags: any;
24
- }> | _sapphire_shapeshift0.UndefinedToOptional<{
24
+ }> | _$_sapphire_shapeshift0.UndefinedToOptional<{
25
25
  type: any;
26
26
  name: any;
27
27
  }>;
28
28
  cooldown: number | undefined;
29
- preconditions: _sapphire_shapeshift0.UndefinedToOptional<{
29
+ preconditions: _$_sapphire_shapeshift0.UndefinedToOptional<{
30
30
  id: any;
31
31
  scope: any;
32
32
  execute: any;
33
33
  }>[] | undefined;
34
- postconditions: _sapphire_shapeshift0.UndefinedToOptional<{
34
+ postconditions: _$_sapphire_shapeshift0.UndefinedToOptional<{
35
35
  id: any;
36
36
  scope: any;
37
37
  execute: any;
@@ -39,7 +39,7 @@ declare class CommandModuleValidator extends Validator {
39
39
  disabledPreconditions: string[] | undefined;
40
40
  disabledPostconditions: string[] | undefined;
41
41
  execute: Function;
42
- }, _sapphire_shapeshift0.UndefinedToOptional<{
42
+ }, _$_sapphire_shapeshift0.UndefinedToOptional<{
43
43
  id: string | undefined;
44
44
  moduleType: ModuleType | undefined;
45
45
  onEnable: Function | undefined;
@@ -47,24 +47,24 @@ declare class CommandModuleValidator extends Validator {
47
47
  onDisable: Function | undefined;
48
48
  } & {
49
49
  id: string;
50
- type: _reciple_core0.CommandType;
51
- data: _sapphire_shapeshift0.UndefinedToOptional<{
50
+ type: _$_reciple_core0.CommandType;
51
+ data: _$_sapphire_shapeshift0.UndefinedToOptional<{
52
52
  name: any;
53
53
  description: any;
54
54
  aliases: any;
55
55
  options: any;
56
56
  flags: any;
57
- }> | _sapphire_shapeshift0.UndefinedToOptional<{
57
+ }> | _$_sapphire_shapeshift0.UndefinedToOptional<{
58
58
  type: any;
59
59
  name: any;
60
60
  }>;
61
61
  cooldown: number | undefined;
62
- preconditions: _sapphire_shapeshift0.UndefinedToOptional<{
62
+ preconditions: _$_sapphire_shapeshift0.UndefinedToOptional<{
63
63
  id: any;
64
64
  scope: any;
65
65
  execute: any;
66
66
  }>[] | undefined;
67
- postconditions: _sapphire_shapeshift0.UndefinedToOptional<{
67
+ postconditions: _$_sapphire_shapeshift0.UndefinedToOptional<{
68
68
  id: any;
69
69
  scope: any;
70
70
  execute: any;
@@ -73,7 +73,9 @@ declare class CommandModuleValidator extends Validator {
73
73
  disabledPostconditions: string[] | undefined;
74
74
  execute: Function;
75
75
  }>>;
76
- static resolvable: _sapphire_shapeshift0.UnionValidator<_sapphire_shapeshift0.UndefinedToOptional<{
76
+ static resolvable: _$_sapphire_shapeshift0.UnionValidator<_$_sapphire_shapeshift0.UndefinedToOptional<{
77
+ toJSON: Function;
78
+ }> | _$_sapphire_shapeshift0.UndefinedToOptional<{
77
79
  id: string | undefined;
78
80
  moduleType: ModuleType | undefined;
79
81
  onEnable: Function | undefined;
@@ -81,24 +83,24 @@ declare class CommandModuleValidator extends Validator {
81
83
  onDisable: Function | undefined;
82
84
  } & {
83
85
  id: string;
84
- type: _reciple_core0.CommandType;
85
- data: _sapphire_shapeshift0.UndefinedToOptional<{
86
+ type: _$_reciple_core0.CommandType;
87
+ data: _$_sapphire_shapeshift0.UndefinedToOptional<{
86
88
  name: any;
87
89
  description: any;
88
90
  aliases: any;
89
91
  options: any;
90
92
  flags: any;
91
- }> | _sapphire_shapeshift0.UndefinedToOptional<{
93
+ }> | _$_sapphire_shapeshift0.UndefinedToOptional<{
92
94
  type: any;
93
95
  name: any;
94
96
  }>;
95
97
  cooldown: number | undefined;
96
- preconditions: _sapphire_shapeshift0.UndefinedToOptional<{
98
+ preconditions: _$_sapphire_shapeshift0.UndefinedToOptional<{
97
99
  id: any;
98
100
  scope: any;
99
101
  execute: any;
100
102
  }>[] | undefined;
101
- postconditions: _sapphire_shapeshift0.UndefinedToOptional<{
103
+ postconditions: _$_sapphire_shapeshift0.UndefinedToOptional<{
102
104
  id: any;
103
105
  scope: any;
104
106
  execute: any;
@@ -106,11 +108,8 @@ declare class CommandModuleValidator extends Validator {
106
108
  disabledPreconditions: string[] | undefined;
107
109
  disabledPostconditions: string[] | undefined;
108
110
  execute: Function;
109
- }> | _sapphire_shapeshift0.UndefinedToOptional<{
110
- toJSON: Function;
111
111
  }>>;
112
112
  static isValid(value: unknown): asserts value is AnyCommandModuleData;
113
113
  }
114
114
  //#endregion
115
- export { CommandModuleValidator };
116
- //# sourceMappingURL=CommandModuleValidator.d.mts.map
115
+ export { CommandModuleValidator };
@@ -12,5 +12,4 @@ var CommandModuleValidator = class CommandModuleValidator extends Validator {
12
12
  };
13
13
 
14
14
  //#endregion
15
- export { CommandModuleValidator };
16
- //# sourceMappingURL=CommandModuleValidator.mjs.map
15
+ export { CommandModuleValidator };
@@ -2,19 +2,19 @@ import { ModuleType } from "../../helpers/constants.mjs";
2
2
  import { EventModule } from "../modules/events/EventModule.mjs";
3
3
  import { Validator } from "@reciple/core";
4
4
  import { EventEmitter } from "node:events";
5
- import * as _sapphire_shapeshift0 from "@sapphire/shapeshift";
5
+ import * as _$_sapphire_shapeshift0 from "@sapphire/shapeshift";
6
6
 
7
7
  //#region src/classes/validation/EventModuleValidator.d.ts
8
8
  declare class EventModuleValidator extends Validator {
9
- static emitter: _sapphire_shapeshift0.InstanceValidator<EventEmitter<{
9
+ static emitter: _$_sapphire_shapeshift0.InstanceValidator<EventEmitter<{
10
10
  [x: string]: any[];
11
11
  [x: number]: any[];
12
12
  [x: symbol]: any[];
13
13
  }>>;
14
- static event: _sapphire_shapeshift0.StringValidator<string>;
15
- static once: _sapphire_shapeshift0.UnionValidator<boolean | undefined>;
16
- static onEvent: _sapphire_shapeshift0.InstanceValidator<Function>;
17
- static object: _sapphire_shapeshift0.ObjectValidator<{
14
+ static event: _$_sapphire_shapeshift0.StringValidator<string>;
15
+ static once: _$_sapphire_shapeshift0.UnionValidator<boolean | undefined>;
16
+ static onEvent: _$_sapphire_shapeshift0.InstanceValidator<Function>;
17
+ static object: _$_sapphire_shapeshift0.ObjectValidator<{
18
18
  id: string | undefined;
19
19
  moduleType: ModuleType | undefined;
20
20
  onEnable: Function | undefined;
@@ -29,7 +29,7 @@ declare class EventModuleValidator extends Validator {
29
29
  event: string;
30
30
  once: boolean | undefined;
31
31
  onEvent: Function;
32
- }, _sapphire_shapeshift0.UndefinedToOptional<{
32
+ }, _$_sapphire_shapeshift0.UndefinedToOptional<{
33
33
  id: string | undefined;
34
34
  moduleType: ModuleType | undefined;
35
35
  onEnable: Function | undefined;
@@ -45,9 +45,7 @@ declare class EventModuleValidator extends Validator {
45
45
  once: boolean | undefined;
46
46
  onEvent: Function;
47
47
  }>>;
48
- static resolvable: _sapphire_shapeshift0.UnionValidator<_sapphire_shapeshift0.UndefinedToOptional<{
49
- toJSON: Function;
50
- }> | _sapphire_shapeshift0.UndefinedToOptional<{
48
+ static resolvable: _$_sapphire_shapeshift0.UnionValidator<_$_sapphire_shapeshift0.UndefinedToOptional<{
51
49
  id: string | undefined;
52
50
  moduleType: ModuleType | undefined;
53
51
  onEnable: Function | undefined;
@@ -62,6 +60,8 @@ declare class EventModuleValidator extends Validator {
62
60
  event: string;
63
61
  once: boolean | undefined;
64
62
  onEvent: Function;
63
+ }> | _$_sapphire_shapeshift0.UndefinedToOptional<{
64
+ toJSON: Function;
65
65
  }>>;
66
66
  static isValidEmitter(emitter: unknown): asserts emitter is EventEmitter;
67
67
  static isValidEvent(event: unknown): asserts event is string;
@@ -70,5 +70,4 @@ declare class EventModuleValidator extends Validator {
70
70
  static isValid(value: unknown): asserts value is EventModule.Data;
71
71
  }
72
72
  //#endregion
73
- export { EventModuleValidator };
74
- //# sourceMappingURL=EventModuleValidator.d.mts.map
73
+ export { EventModuleValidator };
@@ -38,5 +38,4 @@ var EventModuleValidator = class EventModuleValidator extends Validator {
38
38
  };
39
39
 
40
40
  //#endregion
41
- export { EventModuleValidator };
42
- //# sourceMappingURL=EventModuleValidator.mjs.map
41
+ export { EventModuleValidator };
@@ -1,22 +1,22 @@
1
1
  import { PostconditionModule } from "../modules/PostconditionModule.mjs";
2
2
  import { CommandPostconditionReason, CommandType, Validator } from "@reciple/core";
3
- import * as _sapphire_shapeshift0 from "@sapphire/shapeshift";
3
+ import * as _$_sapphire_shapeshift0 from "@sapphire/shapeshift";
4
4
 
5
5
  //#region src/classes/validation/PostconditionModule.d.ts
6
6
  declare class PostconditionModuleValidator extends Validator {
7
- static scope: _sapphire_shapeshift0.UnionValidator<CommandType[] | undefined>;
8
- static accepts: _sapphire_shapeshift0.UnionValidator<CommandPostconditionReason[] | undefined>;
9
- static execute: _sapphire_shapeshift0.InstanceValidator<Function>;
10
- static object: _sapphire_shapeshift0.ObjectValidator<{
7
+ static scope: _$_sapphire_shapeshift0.UnionValidator<CommandType[] | undefined>;
8
+ static accepts: _$_sapphire_shapeshift0.UnionValidator<CommandPostconditionReason[] | undefined>;
9
+ static execute: _$_sapphire_shapeshift0.InstanceValidator<Function>;
10
+ static object: _$_sapphire_shapeshift0.ObjectValidator<{
11
11
  scope: CommandType[] | undefined;
12
12
  execute: Function;
13
- }, _sapphire_shapeshift0.UndefinedToOptional<{
13
+ }, _$_sapphire_shapeshift0.UndefinedToOptional<{
14
14
  scope: CommandType[] | undefined;
15
15
  execute: Function;
16
16
  }>>;
17
- static resolvable: _sapphire_shapeshift0.UnionValidator<_sapphire_shapeshift0.UndefinedToOptional<{
17
+ static resolvable: _$_sapphire_shapeshift0.UnionValidator<_$_sapphire_shapeshift0.UndefinedToOptional<{
18
18
  toJSON: Function;
19
- }> | _sapphire_shapeshift0.UndefinedToOptional<{
19
+ }> | _$_sapphire_shapeshift0.UndefinedToOptional<{
20
20
  scope: CommandType[] | undefined;
21
21
  execute: Function;
22
22
  }>>;
@@ -26,5 +26,4 @@ declare class PostconditionModuleValidator extends Validator {
26
26
  static isValid(value: unknown): asserts value is PostconditionModule.Data;
27
27
  }
28
28
  //#endregion
29
- export { PostconditionModuleValidator };
30
- //# sourceMappingURL=PostconditionModule.d.mts.map
29
+ export { PostconditionModuleValidator };
@@ -30,5 +30,4 @@ var PostconditionModuleValidator = class PostconditionModuleValidator extends Va
30
30
  };
31
31
 
32
32
  //#endregion
33
- export { PostconditionModuleValidator };
34
- //# sourceMappingURL=PostconditionModule.mjs.map
33
+ export { PostconditionModuleValidator };
@@ -1,21 +1,21 @@
1
1
  import { PreconditionModule } from "../modules/PreconditionModule.mjs";
2
2
  import { CommandType, Validator } from "@reciple/core";
3
- import * as _sapphire_shapeshift0 from "@sapphire/shapeshift";
3
+ import * as _$_sapphire_shapeshift0 from "@sapphire/shapeshift";
4
4
 
5
5
  //#region src/classes/validation/PreconditionModule.d.ts
6
6
  declare class PreconditionModuleValidator extends Validator {
7
- static scope: _sapphire_shapeshift0.UnionValidator<CommandType[] | undefined>;
8
- static execute: _sapphire_shapeshift0.InstanceValidator<Function>;
9
- static object: _sapphire_shapeshift0.ObjectValidator<{
7
+ static scope: _$_sapphire_shapeshift0.UnionValidator<CommandType[] | undefined>;
8
+ static execute: _$_sapphire_shapeshift0.InstanceValidator<Function>;
9
+ static object: _$_sapphire_shapeshift0.ObjectValidator<{
10
10
  scope: CommandType[] | undefined;
11
11
  execute: Function;
12
- }, _sapphire_shapeshift0.UndefinedToOptional<{
12
+ }, _$_sapphire_shapeshift0.UndefinedToOptional<{
13
13
  scope: CommandType[] | undefined;
14
14
  execute: Function;
15
15
  }>>;
16
- static resolvable: _sapphire_shapeshift0.UnionValidator<_sapphire_shapeshift0.UndefinedToOptional<{
16
+ static resolvable: _$_sapphire_shapeshift0.UnionValidator<_$_sapphire_shapeshift0.UndefinedToOptional<{
17
17
  toJSON: Function;
18
- }> | _sapphire_shapeshift0.UndefinedToOptional<{
18
+ }> | _$_sapphire_shapeshift0.UndefinedToOptional<{
19
19
  scope: CommandType[] | undefined;
20
20
  execute: Function;
21
21
  }>>;
@@ -24,5 +24,4 @@ declare class PreconditionModuleValidator extends Validator {
24
24
  static isValid(value: unknown): asserts value is PreconditionModule.Data;
25
25
  }
26
26
  //#endregion
27
- export { PreconditionModuleValidator };
28
- //# sourceMappingURL=PreconditionModule.d.mts.map
27
+ export { PreconditionModuleValidator };
@@ -25,5 +25,4 @@ var PreconditionModuleValidator = class PreconditionModuleValidator extends Vali
25
25
  };
26
26
 
27
27
  //#endregion
28
- export { PreconditionModuleValidator };
29
- //# sourceMappingURL=PreconditionModule.mjs.map
28
+ export { PreconditionModuleValidator };
@@ -15,5 +15,4 @@ declare enum ModuleType {
15
15
  Postcondition = 5
16
16
  }
17
17
  //#endregion
18
- export { ModuleType, cli, packageJSON };
19
- //# sourceMappingURL=constants.d.mts.map
18
+ export { ModuleType, cli, packageJSON };
@@ -24,5 +24,4 @@ let ModuleType = /* @__PURE__ */ function(ModuleType) {
24
24
  }({});
25
25
 
26
26
  //#endregion
27
- export { ModuleType, cli, packageJSON };
28
- //# sourceMappingURL=constants.mjs.map
27
+ export { ModuleType, cli, packageJSON };
@@ -18,5 +18,4 @@ type AnyCommandModuleData<T extends CommandType = CommandType> = T extends Comma
18
18
  type BuildConfig = Omit<UserConfig, 'watch' | 'css' | 'cwd' | 'env' | 'envFile' | 'envPrefix' | 'exe' | 'exports' | 'ignoreWatch' | 'skipNodeModulesBundle' | 'platform' | 'format' | 'unbundle' | 'bundle' | 'skipNodeModulesBundle' | 'noExternal' | 'cjsDefault' | 'workspace' | 'customLogger' | 'logLevel' | 'deps'>;
19
19
  type ShardingConfig = Omit<ShardingManagerOptions, 'shardArgs' | 'token' | 'execArgv'>;
20
20
  //#endregion
21
- export { AnyCommandBuilderMethods, AnyCommandModule, AnyCommandModuleData, AnyModule, AnyModuleData, BuildConfig, ShardingConfig };
22
- //# sourceMappingURL=types.d.mts.map
21
+ export { AnyCommandBuilderMethods, AnyCommandModule, AnyCommandModuleData, AnyModule, AnyModuleData, BuildConfig, ShardingConfig };
package/dist/index.d.mts CHANGED
@@ -34,5 +34,4 @@ declare global {
34
34
  var useLogger: () => Logger;
35
35
  }
36
36
  //#endregion
37
- export { AnyCommandBuilderMethods, AnyCommandModule, AnyCommandModuleData, AnyModule, AnyModuleData, BaseModule, BaseModuleValidator, BuildConfig, CLI, CLISubcommand, ClientEventModule, CommandModuleValidator, ConfigReader, ContextMenuCommandModule, EventListeners, EventModule, EventModuleValidator, MessageCommandModule, ModuleLoader, ModuleManager, ModuleTemplateBuilder, ModuleType, NotAnError, PostconditionModule, PostconditionModuleValidator, PreconditionModule, PreconditionModuleValidator, RESTEventModule, RuntimeEnvironment, ShardingConfig, SlashCommandModule, TemplateBuilder, cli, packageJSON };
38
- //# sourceMappingURL=index.d.mts.map
37
+ export { AnyCommandBuilderMethods, AnyCommandModule, AnyCommandModuleData, AnyModule, AnyModuleData, BaseModule, BaseModuleValidator, BuildConfig, CLI, CLISubcommand, ClientEventModule, CommandModuleValidator, ConfigReader, ContextMenuCommandModule, EventListeners, EventModule, EventModuleValidator, MessageCommandModule, ModuleLoader, ModuleManager, ModuleTemplateBuilder, ModuleType, NotAnError, PostconditionModule, PostconditionModuleValidator, PreconditionModule, PreconditionModuleValidator, RESTEventModule, RuntimeEnvironment, ShardingConfig, SlashCommandModule, TemplateBuilder, cli, packageJSON };
package/dist/index.mjs CHANGED
@@ -34,5 +34,4 @@ globalThis.useClient = () => {
34
34
  globalThis.useLogger = () => logger;
35
35
 
36
36
  //#endregion
37
- export { BaseModule, BaseModuleValidator, CLI, CLISubcommand, ClientEventModule, CommandModuleValidator, ConfigReader, ContextMenuCommandModule, EventListeners, EventModule, EventModuleValidator, MessageCommandModule, ModuleLoader, ModuleManager, ModuleTemplateBuilder, ModuleType, NotAnError, PostconditionModule, PostconditionModuleValidator, PreconditionModule, PreconditionModuleValidator, RESTEventModule, RuntimeEnvironment, SlashCommandModule, TemplateBuilder, cli, packageJSON };
38
- //# sourceMappingURL=index.mjs.map
37
+ export { BaseModule, BaseModuleValidator, CLI, CLISubcommand, ClientEventModule, CommandModuleValidator, ConfigReader, ContextMenuCommandModule, EventListeners, EventModule, EventModuleValidator, MessageCommandModule, ModuleLoader, ModuleManager, ModuleTemplateBuilder, ModuleType, NotAnError, PostconditionModule, PostconditionModuleValidator, PreconditionModule, PreconditionModuleValidator, RESTEventModule, RuntimeEnvironment, SlashCommandModule, TemplateBuilder, cli, packageJSON };
package/dist/package.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  //#region package.json
2
2
  var package_default = {
3
3
  name: "reciple",
4
- version: "10.0.42",
4
+ version: "10.0.44",
5
5
  license: "LGPL-3.0-only",
6
6
  description: "The CLI for reciple",
7
7
  module: "./dist/index.mjs",
@@ -37,7 +37,7 @@ var package_default = {
37
37
  },
38
38
  dependencies: {
39
39
  "@clack/prompts": "^1.1.0",
40
- "@dotenvx/dotenvx": "^1.57.1",
40
+ "@dotenvx/dotenvx": "^1.58.0",
41
41
  "@prtty/print": "catalog:",
42
42
  "@prtty/prtty": "catalog:",
43
43
  "@reciple/utils": "workspace:^",
@@ -58,7 +58,7 @@ var package_default = {
58
58
  "@types/micromatch": "^4.0.10",
59
59
  "@types/node": "catalog:",
60
60
  "nodemon": "^3.1.14",
61
- "rolldown": "^1.0.0-rc.10",
61
+ "rolldown": "^1.0.0-rc.12",
62
62
  "typescript": "catalog:"
63
63
  },
64
64
  peerDependencies: {
@@ -73,5 +73,4 @@ var package_default = {
73
73
  };
74
74
 
75
75
  //#endregion
76
- export { package_default as default };
77
- //# sourceMappingURL=package.mjs.map
76
+ export { package_default as default };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "reciple",
3
- "version": "10.0.42",
3
+ "version": "10.0.44",
4
4
  "license": "LGPL-3.0-only",
5
5
  "description": "The CLI for reciple",
6
6
  "module": "./dist/index.mjs",
@@ -36,10 +36,10 @@
36
36
  },
37
37
  "dependencies": {
38
38
  "@clack/prompts": "^1.1.0",
39
- "@dotenvx/dotenvx": "^1.57.1",
39
+ "@dotenvx/dotenvx": "^1.58.0",
40
40
  "@prtty/print": "^1.1.3",
41
41
  "@prtty/prtty": "^1.1.2",
42
- "@reciple/utils": "^10.0.2",
42
+ "@reciple/utils": "^10.0.4",
43
43
  "@sapphire/shapeshift": "^4.0.0",
44
44
  "@sapphire/snowflake": "^3.5.5",
45
45
  "commander": "^14.0.3",
@@ -50,18 +50,18 @@
50
50
  "pkg-types": "^2.3.0",
51
51
  "tinyglobby": "^0.2.15",
52
52
  "ts-mixer": "^6.0.4",
53
- "tsdown": "^0.21.4"
53
+ "tsdown": "^0.21.6"
54
54
  },
55
55
  "devDependencies": {
56
- "@reciple/jsx": "^10.0.9",
56
+ "@reciple/jsx": "^10.0.10",
57
57
  "@types/micromatch": "^4.0.10",
58
58
  "@types/node": "^25.5.0",
59
59
  "nodemon": "^3.1.14",
60
- "rolldown": "^1.0.0-rc.10",
61
- "typescript": "^5.9.3"
60
+ "rolldown": "^1.0.0-rc.12",
61
+ "typescript": "^6.0.2"
62
62
  },
63
63
  "peerDependencies": {
64
- "@reciple/core": "^10.0.4",
64
+ "@reciple/core": "^10.0.6",
65
65
  "discord.js": "^14.25.1"
66
66
  },
67
67
  "peerDependenciesMeta": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"build.mjs","names":[],"sources":["../../../src/bin/commands/build.ts"],"sourcesContent":["import { Command } from 'commander';\nimport { CLISubcommand } from '../../classes/cli/CLISubcommand.js';\nimport { ConfigReader } from '../../classes/cli/ConfigReader.js';\nimport { build } from 'tsdown';\nimport { CLI } from '../../classes/cli/CLI.js';\n\nexport default class BuildSubcommand extends CLISubcommand {\n public subcommand: Command = new Command('build')\n .description('Build the reciple modules defined in config file')\n .argument('[project]', 'The root directory of your project');\n\n public async execute(): Promise<void> {\n await this.cli.setCurrentDirectory(this.subcommand.args[0]);\n\n const configReader = new ConfigReader(\n await ConfigReader.find()\n ?? ConfigReader.createConfigFilename('js')\n );\n\n const { build: buildConfig } = await configReader.read();\n\n let plugins = buildConfig.plugins\n ? Array.isArray(buildConfig.plugins)\n ? buildConfig.plugins\n : [buildConfig.plugins]\n : [];\n\n plugins.push(CLI.createRolldownLogger(this.cli.logger));\n\n await build({\n ...buildConfig,\n logLevel: 'silent',\n plugins,\n });\n }\n}\n"],"mappings":";;;;;;;AAMA,IAAqB,kBAArB,cAA6C,cAAc;CACvD,AAAO,aAAsB,IAAI,QAAQ,QAAQ,CAC5C,YAAY,mDAAmD,CAC/D,SAAS,aAAa,qCAAqC;CAEhE,MAAa,UAAyB;AAClC,QAAM,KAAK,IAAI,oBAAoB,KAAK,WAAW,KAAK,GAAG;EAO3D,MAAM,EAAE,OAAO,gBAAgB,MALV,IAAI,aACrB,MAAM,aAAa,MAAM,IACtB,aAAa,qBAAqB,KAAK,CAC7C,CAEiD,MAAM;EAExD,IAAI,UAAU,YAAY,UACpB,MAAM,QAAQ,YAAY,QAAQ,GAC9B,YAAY,UACZ,CAAC,YAAY,QAAQ,GACzB,EAAE;AAER,UAAQ,KAAK,IAAI,qBAAqB,KAAK,IAAI,OAAO,CAAC;AAEvD,QAAM,MAAM;GACR,GAAG;GACH,UAAU;GACV;GACH,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"create.mjs","names":[],"sources":["../../../src/bin/commands/create.ts"],"sourcesContent":["import { Command, Option } from 'commander';\nimport { CLISubcommand } from '../../classes/cli/CLISubcommand.js';\nimport { TemplateBuilder } from '../../classes/templates/TemplateBuilder.js';\nimport { cancel } from '@clack/prompts';\nimport { inspect } from 'node:util';\nimport { NotAnError } from '../../classes/NotAnError.js';\nimport { type PackageManagerName, packageManagers } from 'nypm';\nimport { colors } from '@prtty/prtty';\n\nexport default class CreateSubcommand extends CLISubcommand {\n public subcommand: Command = new Command('create')\n .description('Create a new reciple project')\n .argument('[project]', 'The root directory of your project')\n .option('-c, --config <path>', 'Path to the configuration file')\n .option('-t, --token <DiscordToken>', 'Set your Discord Bot token')\n .option('-T, --typescript', 'Use TypeScript')\n .addOption(new Option('-p, --package-manager <name>', 'The name of the package manager to use')\n .choices(packageManagers.map(pm => pm.name))\n )\n .option('-D, --default', 'Use defaults for prompts')\n .option('--install', 'Install dependencies during setup', true)\n .option('--no-install', 'Do not install dependencies during setup')\n .option('--build', 'Build the project after creation', true)\n .option('--no-build', 'Do not build the project after creation')\n .allowUnknownOption(true);\n\n public async execute(): Promise<void> {\n const flags = this.cli.getFlags<CreateSubcommand.Flags>('create');\n const template = new TemplateBuilder({\n cli: this.cli,\n typescript: flags?.typescript,\n packageManager: flags?.packageManager,\n defaultAll: flags?.default,\n token: flags?.token,\n });\n\n try {\n await template.init();\n await template.createDirectory({ directory: this.subcommand.args[0] });\n await template.setupLanguage();\n await template.createConfig();\n await template.createEnvFile({ envFile: this.cli.flags.env[0] });\n await template.createTemplate();\n await template.setPackageManager();\n await template.installDependencies({ value: flags?.install });\n await template.createModules();\n await template.build({ skipBuild: !flags?.build });\n } catch (error) {\n cancel(colors.red(error instanceof NotAnError ? error.message : inspect(error)));\n }\n }\n}\n\nexport namespace CreateSubcommand {\n export interface Flags {\n config?: string;\n token?: string;\n default?: boolean;\n typescript?: boolean;\n packageManager?: PackageManagerName;\n install: boolean;\n build: boolean;\n }\n}\n"],"mappings":";;;;;;;;;;AASA,IAAqB,mBAArB,cAA8C,cAAc;CACxD,AAAO,aAAsB,IAAI,QAAQ,SAAS,CAC7C,YAAY,+BAA+B,CAC3C,SAAS,aAAa,qCAAqC,CAC3D,OAAO,uBAAuB,iCAAiC,CAC/D,OAAO,8BAA8B,6BAA6B,CAClE,OAAO,oBAAoB,iBAAiB,CAC5C,UAAU,IAAI,OAAO,gCAAgC,yCAAyC,CAC1F,QAAQ,gBAAgB,KAAI,OAAM,GAAG,KAAK,CAAC,CAC/C,CACA,OAAO,iBAAiB,2BAA2B,CACnD,OAAO,aAAa,qCAAqC,KAAK,CAC9D,OAAO,gBAAgB,2CAA2C,CAClE,OAAO,WAAW,oCAAoC,KAAK,CAC3D,OAAO,cAAc,0CAA0C,CAC/D,mBAAmB,KAAK;CAE7B,MAAa,UAAyB;EAClC,MAAM,QAAQ,KAAK,IAAI,SAAiC,SAAS;EACjE,MAAM,WAAW,IAAI,gBAAgB;GACjC,KAAK,KAAK;GACV,YAAY,OAAO;GACnB,gBAAgB,OAAO;GACvB,YAAY,OAAO;GACnB,OAAO,OAAO;GACjB,CAAC;AAEF,MAAI;AACA,SAAM,SAAS,MAAM;AACrB,SAAM,SAAS,gBAAgB,EAAE,WAAW,KAAK,WAAW,KAAK,IAAI,CAAC;AACtE,SAAM,SAAS,eAAe;AAC9B,SAAM,SAAS,cAAc;AAC7B,SAAM,SAAS,cAAc,EAAE,SAAS,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC;AAChE,SAAM,SAAS,gBAAgB;AAC/B,SAAM,SAAS,mBAAmB;AAClC,SAAM,SAAS,oBAAoB,EAAE,OAAO,OAAO,SAAS,CAAC;AAC7D,SAAM,SAAS,eAAe;AAC9B,SAAM,SAAS,MAAM,EAAE,WAAW,CAAC,OAAO,OAAO,CAAC;WAC7C,OAAO;AACZ,UAAO,OAAO,IAAI,iBAAiB,aAAa,MAAM,UAAU,QAAQ,MAAM,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"createModule.mjs","names":[],"sources":["../../../src/bin/commands/createModule.ts"],"sourcesContent":["import { Command } from 'commander';\nimport { CLISubcommand } from '../../classes/cli/CLISubcommand.js';\nimport { ConfigReader } from '../../classes/cli/ConfigReader.js';\nimport { ModuleTemplateBuilder } from '../../classes/templates/ModuleTemplateBuilder.js';\nimport { cancel } from '@clack/prompts';\nimport { colors } from '@prtty/prtty';\nimport { NotAnError } from '../../classes/NotAnError.js';\nimport { inspect } from 'node:util';\n\nexport default class CreateModuleSubcommand extends CLISubcommand {\n public subcommand: Command = new Command('create-module')\n .description('Creates new reciple module')\n .argument('[project]', 'The root directory of your project')\n .option('--template, -t <template>', 'Template source name')\n .option('--filename', 'The filename of the module')\n .option('-T, --typescript', 'Use TypeScript')\n .option('-D, --default', 'Use defaults for prompts')\n .enablePositionalOptions(true);\n\n public async execute(): Promise<void> {\n const flags = this.subcommand.opts<CreateModuleSubcommand.Flags>();\n\n await this.cli.setCurrentDirectory(this.subcommand.args[0]);\n\n const configReader = await new ConfigReader(\n await ConfigReader.find()\n ?? ConfigReader.createConfigFilename('js')\n ).read();\n\n const template = new ModuleTemplateBuilder({\n cli: this.cli,\n config: configReader,\n typescript: flags.typescript,\n filename: flags.filename,\n defaultAll: flags?.default\n });\n\n try {\n await template.init();\n await template.setupLanguage();\n await template.setupTemplate();\n await template.setupPlaceholders();\n await template.setupDirectory();\n await template.setupFilename();\n await template.build();\n } catch (error) {\n cancel(colors.red(error instanceof NotAnError ? error.message : inspect(error)));\n }\n }\n}\n\nexport namespace CreateModuleSubcommand {\n export interface Flags {\n template?: string;\n filename?: string;\n typescript?: boolean;\n default?: boolean;\n }\n}\n"],"mappings":";;;;;;;;;;AASA,IAAqB,yBAArB,cAAoD,cAAc;CAC9D,AAAO,aAAsB,IAAI,QAAQ,gBAAgB,CACpD,YAAY,6BAA6B,CACzC,SAAS,aAAa,qCAAqC,CAC3D,OAAO,6BAA6B,uBAAuB,CAC3D,OAAO,cAAc,6BAA6B,CAClD,OAAO,oBAAoB,iBAAiB,CAC5C,OAAO,iBAAiB,2BAA2B,CACnD,wBAAwB,KAAK;CAElC,MAAa,UAAyB;EAClC,MAAM,QAAQ,KAAK,WAAW,MAAoC;AAElE,QAAM,KAAK,IAAI,oBAAoB,KAAK,WAAW,KAAK,GAAG;EAE3D,MAAM,eAAe,MAAM,IAAI,aAC3B,MAAM,aAAa,MAAM,IACtB,aAAa,qBAAqB,KAAK,CAC7C,CAAC,MAAM;EAER,MAAM,WAAW,IAAI,sBAAsB;GACvC,KAAK,KAAK;GACV,QAAQ;GACR,YAAY,MAAM;GAClB,UAAU,MAAM;GAChB,YAAY,OAAO;GACtB,CAAC;AAEF,MAAI;AACA,SAAM,SAAS,MAAM;AACrB,SAAM,SAAS,eAAe;AAC9B,SAAM,SAAS,eAAe;AAC9B,SAAM,SAAS,mBAAmB;AAClC,SAAM,SAAS,gBAAgB;AAC/B,SAAM,SAAS,eAAe;AAC9B,SAAM,SAAS,OAAO;WACjB,OAAO;AACZ,UAAO,OAAO,IAAI,iBAAiB,aAAa,MAAM,UAAU,QAAQ,MAAM,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"start.mjs","names":["DiscordJsVersion"],"sources":["../../../src/bin/commands/start.ts"],"sourcesContent":["import { Command } from 'commander';\nimport { CLISubcommand } from '../../classes/cli/CLISubcommand.js';\nimport { ConfigReader } from '../../classes/cli/ConfigReader.js';\nimport { Logger } from '@prtty/print';\nimport { Format, resolveEnvProtocol } from '@reciple/utils';\nimport { Client, CommandType } from '@reciple/core';\nimport { ModuleLoader } from '../../classes/client/ModuleLoader.js';\nimport { ModuleManager } from '../../classes/managers/ModuleManager.js';\nimport { version as DiscordJsVersion } from 'discord.js';\nimport { EventListeners } from '../../classes/client/EventListeners.js';\nimport { RuntimeEnvironment } from '../../classes/cli/RuntimeEnvironment.js';\nimport { build } from 'tsdown';\nimport { CLI } from '../../classes/cli/CLI.js';\nimport { colors } from '@prtty/prtty';\n\nexport default class StartSubcommand extends CLISubcommand {\n public subcommand: Command = new Command('start')\n .description('Start the reciple client')\n .argument('[project]', 'The root directory of your project')\n .option('-t, --token <DiscordToken>', 'Set your Discord Bot token')\n .option('-b, --build', 'Build the modules before starting the client')\n .allowUnknownOption(true);\n\n public async execute(): Promise<void> {\n const flags = this.subcommand.opts<StartSubcommand.Flags>();\n\n await this.cli.setCurrentDirectory(this.subcommand.args[0]);\n\n const configReader = new ConfigReader(\n await ConfigReader.find()\n ?? ConfigReader.createConfigFilename('js')\n );\n\n const { client, config, build: buildConfig } = await configReader.read();\n\n const logger = config.logger instanceof Logger ? this.cli.logger = config.logger : this.cli.logger.clone(config.logger);\n\n let token = flags.token || config.token || '';\n token = resolveEnvProtocol(token) || token;\n\n function handleProcessError(err: unknown) {\n logger.error(err);\n process.exit(1);\n }\n\n process.once('uncaughtException', handleProcessError);\n process.once('unhandledRejection', handleProcessError);\n process.on('warning', warn => logger.warn(warn));\n\n logger.log(colors.magenta(`⚡ Initializing reciple!`));\n\n if (flags.build) {\n let plugins = buildConfig.plugins\n ? Array.isArray(buildConfig.plugins)\n ? buildConfig.plugins\n : [buildConfig.plugins]\n : [];\n\n plugins.push(CLI.createRolldownLogger());\n\n await build({\n ...buildConfig,\n logLevel: 'silent',\n plugins,\n });\n }\n\n Object.assign(client, {\n logger,\n cli: this.cli,\n config\n });\n\n Object.assign(client, {\n modules: new ModuleManager(client),\n moduleLoader: new ModuleLoader(client),\n eventListeners: new EventListeners()\n });\n\n Reflect.set(global, 'useClient', () => client);\n Reflect.set(global, 'useLogger', () => logger);\n\n EventListeners.registerLoggerEventListeners(client);\n\n logger.log(colors.green(`📦 Version Info:`));\n logger.log(` ├─ ${colors.cyan(`reciple`)}\\t\\t${colors.yellow(`${this.cli.version}`)}`);\n logger.log(` ├─ ${colors.cyan(`@reciple/core`)}\\t${colors.yellow(`${Client.version}`)}`);\n logger.log(` └─ ${colors.cyan(`discord.js`)}\\t${colors.yellow(`${DiscordJsVersion}`)}`);\n\n const modules = await client.moduleLoader.findModules();\n\n Object.assign(client, {\n _onBeforeLogin: async() => {\n const enabledModules = await client.modules.enableModules({ modules });\n\n client.once('clientReady', async() => {\n if (!client.isReady()) return;\n\n EventListeners.registerCommandsEventListeners(client);\n\n logger.debug(`Client is ready!`);\n process.removeListener('uncaughtException', handleProcessError);\n process.removeListener('unhandledRejection', handleProcessError);\n\n const notEnabledModules = modules.length - enabledModules.length;\n logger.log(colors.green(`✅ ${enabledModules.length} ${Format.plural(enabledModules.length, 'module')} ${Format.plural(enabledModules.length, 'is', 'are')} enabled.${notEnabledModules > 0 ? colors.red(` (${notEnabledModules} not enabled)`) : ''}`));\n\n const readyModules = await client.modules.readyModules();\n const notReadyModules = readyModules.length - enabledModules.length;\n\n logger.log(colors.green(`✅ ${readyModules.length} ${Format.plural(readyModules.length, 'module')} ${Format.plural(readyModules.length, 'is', 'are')} ready.${notReadyModules > 0 ? colors.red(` (${notReadyModules} not ready)`) : ''}`));\n\n await client.commands.registerApplicationCommands({\n ...config.applicationCommandsRegister,\n commands: client.commands.applicationCommands,\n });\n\n process.stdin.resume();\n\n const commands = {\n contextMenus: client.commands.cache.filter(c => c.type === CommandType.ContextMenu).size,\n message: client.commands.cache.filter(c => c.type === CommandType.Message).size,\n slash: client.commands.cache.filter(c => c.type === CommandType.Slash).size\n };\n\n logger.log(`🔑 Logged in as ${colors.bold(colors.cyan(client.user.displayName))} ${colors.magenta(`(${client.user.id})`)}`);\n logger.log(` ├─ Loaded ${colors.green(modules.length.toLocaleString())} ${Format.plural(modules.length, 'module')}.`);\n logger.log(` ├─ Loaded ${colors.green(commands.contextMenus.toLocaleString())} context menu ${Format.plural(commands.contextMenus, 'command')}.`);\n logger.log(` ├─ Loaded ${colors.green(commands.message.toLocaleString())} message ${Format.plural(commands.message, 'command')}.`);\n logger.log(` ├─ Loaded ${colors.green(commands.slash.toLocaleString())} slash ${Format.plural(commands.slash, 'command')}.`);\n logger.log(` ├─ Loaded ${colors.green(client.preconditions.cache.size.toLocaleString())} global ${Format.plural(client.preconditions.cache.size, 'precondition')}.`);\n logger.log(` └─ Loaded ${colors.green(client.postconditions.cache.size.toLocaleString())} global ${Format.plural(client.postconditions.cache.size, 'postcondition')}.`);\n\n if (commands.message && !client.options.intents.has(['GuildMessages', 'MessageContent'])) {\n const missingIntents = (\n [\n 'GuildMessages',\n 'MessageContent'\n ] as const\n ).filter(intent => !client.options.intents.has(intent));\n\n logger.warn(\n colors.yellow().bold(`Message commands are enabled, but the following intents are not enabled:\\n`) +\n `${missingIntents.map(s => ` • ${colors.redBright(s)}`).join('\\n')}`\n );\n }\n });\n\n client.eventListeners.registerProcessExitEvents(async signal => RuntimeEnvironment.handleExitSignal(client, signal));\n },\n _onBeforeDestroy: async (client: Client) => {\n await client.modules.disableModules();\n }\n })\n\n logger.debug(`Logging in...`);\n await client.login(token);\n }\n}\n\nexport namespace StartSubcommand {\n export interface Flags {\n token?: string;\n build?: boolean;\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"startSharding.mjs","names":[],"sources":["../../../src/bin/commands/startSharding.ts"],"sourcesContent":["import { Command } from 'commander';\nimport { CLISubcommand } from '../../classes/cli/CLISubcommand.js';\nimport { ConfigReader } from '../../classes/cli/ConfigReader.js';\nimport type { StartSubcommand } from './start.js';\nimport { Logger } from '@prtty/print';\nimport { resolveEnvProtocol } from '@reciple/utils';\nimport { colors } from '@prtty/prtty';\nimport { CLI } from '../../classes/cli/CLI.js';\nimport { build } from 'tsdown';\nimport { ShardingManager } from 'discord.js';\nimport { EventListeners } from '../../classes/client/EventListeners.js';\n\nexport default class StartShardingSubcommand extends CLISubcommand {\n public subcommand: Command = new Command('start-sharding')\n .description('Start the reciple client in sharding mode')\n .argument('[project]', 'The root directory of your project')\n .option('-t, --token <DiscordToken>', 'Set your Discord Bot token')\n .option('-b, --build', 'Build the modules before starting the client')\n .allowUnknownOption(true);\n\n public async execute(): Promise<void> {\n process.env.RECIPLE_SHARDING = 'true';\n process.env.RECIPLE_FIRST_SHARD = 'true';\n\n const recipleFlags = this.cli.getFlags();\n const flags = this.subcommand.opts<StartShardingSubcommand.Flags>();\n\n await this.cli.setCurrentDirectory(this.subcommand.args[0]);\n\n const shardArgs: string[] = [\n ...CLI.stringifyFlags(recipleFlags, this.cli.command),\n 'start',\n ...CLI.stringifyFlags(flags, this.command)\n ];\n\n const configReader = new ConfigReader(\n await ConfigReader.find()\n ?? ConfigReader.createConfigFilename('js')\n );\n\n const { config, build: buildConfig, sharding } = await configReader.read();\n const logger = config.logger instanceof Logger ? this.cli.logger = config.logger : this.cli.logger.clone(config.logger);\n\n logger.label = 'ShardingManager';\n\n let token = flags.token || config.token || '';\n token = resolveEnvProtocol(token) || token;\n\n logger.log(colors.magenta(`⚡ Initializing reciple sharding manager!`));\n\n const processErrorLogger = (err: any) => {\n logger?.error(err);\n process.exit(1);\n };\n\n process.once('uncaughtException', processErrorLogger);\n process.once('unhandledRejection', processErrorLogger);\n process.on('warning', warn => logger.warn(warn));\n\n if (flags.build) {\n let plugins = buildConfig.plugins\n ? Array.isArray(buildConfig.plugins)\n ? buildConfig.plugins\n : [buildConfig.plugins]\n : [];\n\n plugins.push(CLI.createRolldownLogger());\n\n await build({\n ...buildConfig,\n logLevel: 'silent',\n plugins,\n });\n }\n\n if (!sharding) {\n logger.error('Sharding is not enabled in the config file');\n process.exit(1);\n }\n\n Reflect.set(global, 'useLogger', () => logger);\n\n const eventListeners = new EventListeners();\n const manager = new ShardingManager(CLI.bin, {\n ...sharding,\n token: token,\n shardArgs\n });\n\n manager.on('shardCreate', shard => {\n logger.log(colors.magenta(`🚀 Launched shard ${colors.green(String(shard.id))}`));\n\n shard.on('ready', () => {\n logger.log(colors.magenta(`✅ Shard ${colors.green(String(shard.id))} is ready!`));\n\n if (process.env.RECIPLE_FIRST_SHARD === 'true') {\n process.env.RECIPLE_FIRST_SHARD = 'false';\n }\n });\n\n shard.on('reconnecting', () => {\n logger.log(colors.magenta(`🔄 Shard ${colors.green(String(shard.id))} is reconnecting...`));\n });\n\n shard.on('resume', () => {\n logger.log(colors.magenta(`✅ Shard ${colors.green(String(shard.id))} has resumed!`));\n });\n\n shard.on('disconnect', () => {\n logger.log(colors.magenta(`🛑 Shard ${colors.green(String(shard.id))} is disconnected!`));\n });\n\n shard.on('death', () => {\n logger.error(`🛑 Shard ${colors.green(String(shard.id))} has died!`);\n });\n\n shard.on('error', error => {\n logger.error(`❌ Shard ${colors.green(String(shard.id))} encountered an error:`, error);\n });\n\n shard.on('message', message => {\n // TODO: Handle shard messages\n });\n });\n\n eventListeners.registerProcessExitEvents(signal => this.destroyShardingManager(manager));\n process.stdin.resume();\n\n await manager.spawn();\n }\n\n public destroyShardingManager(manager: ShardingManager): void {\n const logger = useLogger();\n\n manager.shards.map(s => {\n logger.log(colors.magenta(`🚧 Destroying shard ${s.id}`));\n\n if (s.process) {\n s.process.kill();\n } else {\n s.kill();\n }\n\n logger.log(colors.magenta(`🛑 Destroyed shard ${s.id}`));\n });\n\n logger.log(colors.magenta(`🚨 Destroyed all shards`));\n setTimeout(() => process.exit(0), 500);\n }\n}\n\nexport namespace StartShardingSubcommand {\n export interface Flags extends StartSubcommand.Flags {}\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"reciple.mjs","names":[],"sources":["../../src/bin/reciple.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { cli } from '../helpers/constants.js';\n\nawait cli.parse();\n"],"mappings":";;;;AAGA,MAAM,IAAI,OAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NotAnError.mjs","names":[],"sources":["../../src/classes/NotAnError.ts"],"sourcesContent":["export class NotAnError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'NotAnError';\n }\n}\n"],"mappings":";AAAA,IAAa,aAAb,cAAgC,MAAM;CAClC,YAAY,SAAiB;AACzB,QAAM,QAAQ;AACd,OAAK,OAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CLI.mjs","names":[],"sources":["../../../src/classes/cli/CLI.ts"],"sourcesContent":["import { Command } from 'commander';\nimport { fileURLToPath } from 'node:url';\nimport path from 'node:path';\nimport { Format, isDebugging, recursiveDefaults } from '@reciple/utils';\nimport { logger, Logger, LogLevel } from '@prtty/print';\nimport { config as loadEnv } from '@dotenvx/dotenvx';\nimport { readdir, stat } from 'node:fs/promises';\nimport { CLISubcommand } from './CLISubcommand.js';\nimport { spinner, type SpinnerOptions } from '@clack/prompts';\nimport type { RolldownPlugin } from 'rolldown';\nimport { colors } from '@prtty/prtty';\n\nexport class CLI {\n public build: string;\n public version: string;\n public command: Command;\n public logger: Logger;\n\n get isDebugging(): boolean {\n return this.flags.debug;\n }\n\n get flags(): CLI.Flags {\n return this.command.opts();\n }\n\n constructor(public readonly options: CLI.Options) {\n this.build = options.build;\n this.version = String(this.build.split('-')[0]);\n\n this.command = new Command()\n .name(options.name)\n .description(options.description)\n .version(options.build, '-v, --version', 'Output the CLI version number')\n .option('-D, --debug', 'Enable debug mode', isDebugging())\n .option('--no-debug', 'Disabled debug mode')\n .option('--env <file>', 'Load environment variables from .env file', (v, p) => p.concat(v), [] as string[])\n .enablePositionalOptions(true)\n .hook('preAction', this.handlePreAction.bind(this))\n .showHelpAfterError();\n\n this.logger = options.logger instanceof Logger ? options.logger : new Logger(options.logger);\n\n if (this.flags.debug) {\n this.logger.logLevel = LogLevel.Debug;\n this.logger.writeLevel = LogLevel.Debug;\n }\n }\n\n public async parse(argv?: string[]): Promise<this> {\n await this.loadCommands();\n await this.command.parseAsync(argv);\n return this;\n }\n\n public async loadCommands(): Promise<void> {\n this.logger.debug(`Loading cli commands from ${this.options.subcommandsDir}`);\n\n const dirStat = await stat(this.options.subcommandsDir).catch(() => undefined);\n if (!dirStat?.isDirectory()) return;\n\n const files = (await readdir(this.options.subcommandsDir))\n .map(f => path.join(this.options.subcommandsDir, f))\n .filter(f => f.endsWith('.mjs'));\n\n const hasParent: CLISubcommand[] = [];\n\n for (const file of files) {\n const Subommand = recursiveDefaults<CLISubcommand.Constructor>(await import(path.isAbsolute(file) ? `file://${file}` : file));\n if (!Subommand || typeof Subommand !== 'function') continue;\n\n const instance = new Subommand({ cli: this, command: this.command });\n\n if (instance.parent) {\n hasParent.push(instance);\n continue;\n }\n\n CLISubcommand.registerSubcommand(instance);\n }\n\n for (const instance of hasParent) {\n CLISubcommand.registerSubcommand(instance);\n }\n }\n\n public async handlePreAction(cmd: Command, action: Command): Promise<void> {\n this.logger.debug(`Executing ${action.name()}`);\n this.logger.debug(`Debug mode is ${this.flags.debug ? 'enabled' : 'disabled'}`);\n process.env.NODE_ENV = this.flags.debug ? 'development' : process.env.NODE_ENV;\n\n loadEnv({\n path: this.flags.env.length ? this.flags.env : [path.join(process.cwd(), '.env')],\n debug: this.flags.debug,\n quiet: !this.flags.debug,\n ignore: ['MISSING_ENV_FILE']\n });\n\n this.logger.debug(`Loaded environment variables from ${this.flags.env.join(', ')}`);\n }\n\n public async setCurrentDirectory(cwd?: string): Promise<void> {\n cwd ??= process.cwd();\n\n if (!(await stat(cwd).then(s => s.isDirectory()).catch(() => false))) {\n console.log(colors.red('Please specify a valid project directory'));\n process.exit(1);\n }\n\n process.chdir(cwd);\n }\n\n public getFlags<Flags extends Record<string, any> = Record<string, any>>(command: Command|string, mergeDefault?: false): Flags|undefined;\n public getFlags<Flags extends Record<string, any> = Record<string, any>>(command: Command|string, mergeDefault: true): Flags & CLI.Flags|undefined;\n public getFlags(command?: undefined): CLI.Flags;\n public getFlags(command?: Command|string, mergeDefault: boolean = false): Record<string, any>|undefined {\n if (!command) return this.flags;\n\n command = typeof command === 'string' ? this.command.commands.find(c => c.name() === command) : command;\n const flags = command?.opts();\n\n return mergeDefault ? { ...this.flags, ...flags } : flags;\n }\n\n public getCommand(name: string): Command|undefined;\n public getCommand(name?: undefined): Command;\n public getCommand(name?: string): Command|undefined {\n if (!name) return this.command;\n\n return this.command.commands.find(c => c.name() === name);\n }\n}\n\nexport namespace CLI {\n export interface Options {\n name: string;\n description: string;\n build: string;\n subcommandsDir: string;\n logger?: Logger|Logger.Options;\n }\n\n export interface Flags {\n debug: boolean;\n env: string[];\n }\n\n export const root: string = path.join(path.dirname(fileURLToPath(import.meta.url)), '../../../');\n export const bin: string = path.join(CLI.root, 'dist/bin/reciple.mjs');\n export const version = process.env.__VERSION__;\n\n export function stringifyFlags(flags: Record<string, any>, command: Command, ignored: string[] = []): string[] {\n let arr: string[] = [];\n\n for (const [key, value] of Object.entries(flags)) {\n const option = command.options.find(o => o.name() === key || o.attributeName() === key);\n if (!option || ignored.includes(key)) continue;\n\n const flag = option.long ?? option.short ?? `--${option.name()}`;\n\n if (!option.flags.endsWith('>') && !option.flags.endsWith(']') && typeof value === 'boolean') {\n if (value) arr.push(flag);\n continue;\n }\n\n arr.push(flag, String(value));\n }\n\n return arr;\n }\n\n export interface SpinnerPromiseOptions<T> {\n indicator?: SpinnerOptions['indicator'];\n promise: Promise<T>;\n message?: string;\n successMessage?: string;\n errorMessage?: string;\n }\n\n export function createSpinnerPromise<T>(options: SpinnerPromiseOptions<T>): [Promise<T>, ReturnType<typeof spinner>] {\n const loader = spinner({ indicator: options.indicator });\n\n return [\n new Promise<T>((resolve, reject) => {\n loader.start(options.message);\n\n options.promise\n .then((value) => {\n loader.stop(options.successMessage);\n resolve(value);\n })\n .catch((error) => {\n loader.stop(options.errorMessage);\n reject(error);\n });\n }),\n loader\n ];\n }\n\n export function createRolldownLogger(_logger: Logger = logger): RolldownPlugin {\n let startedAt: number;\n\n return {\n name: 'reciple:log-build-completion',\n buildStart: () => {\n _logger.log(colors.green('🚀 Building reciple modules...'));\n startedAt = Date.now();\n },\n renderChunk: (code, info) => {\n const size = Format.bytes(Buffer.byteLength(code, 'utf8'));\n _logger.log(` ├─ ${colors.cyan(size)}\\t${colors.bold(info.fileName)}`);\n\n return { code };\n },\n buildEnd: error => {\n if (error) _logger.error(error)\n },\n closeBundle: () => {\n const time = Format.duration(Date.now() - startedAt);\n _logger.log(colors.green(`✅ Build success in `) + colors.yellow(`${time}`));\n }\n };\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CLISubcommand.mjs","names":[],"sources":["../../../src/classes/cli/CLISubcommand.ts"],"sourcesContent":["import type { Command } from 'commander';\nimport type { CLI } from './CLI.js';\n\nexport abstract class CLISubcommand<Flags extends Record<string, any> = Record<string, any>> {\n public cli: CLI;\n public command: Command;\n public parent?: string;\n public abstract subcommand: Command;\n\n get flags(): Flags {\n return this.cli.getFlags(this.subcommand) ?? {} as Flags;\n }\n\n constructor({ cli, command }: CLISubcommand.Options) {\n this.cli = cli;\n this.command = command;\n }\n\n public async execute(): Promise<void> {}\n\n public static registerSubcommand(instance: CLISubcommand): void {\n instance.subcommand.action(instance.execute.bind(instance));\n\n if (instance.parent) {\n instance.command.commands.find(c => c.name() === instance.parent)?.addCommand(instance.subcommand);\n } else {\n instance.command.addCommand(instance.subcommand);\n }\n }\n}\n\nexport namespace CLISubcommand {\n export type Constructor = new (options: Options) => CLISubcommand;\n export interface Options {\n cli: CLI;\n command: Command;\n }\n}\n"],"mappings":";AAGA,IAAsB,gBAAtB,MAA6F;CACzF,AAAO;CACP,AAAO;CACP,AAAO;CAGP,IAAI,QAAe;AACf,SAAO,KAAK,IAAI,SAAS,KAAK,WAAW,IAAI,EAAE;;CAGnD,YAAY,EAAE,KAAK,WAAkC;AACjD,OAAK,MAAM;AACX,OAAK,UAAU;;CAGnB,MAAa,UAAyB;CAEtC,OAAc,mBAAmB,UAA+B;AAC5D,WAAS,WAAW,OAAO,SAAS,QAAQ,KAAK,SAAS,CAAC;AAE3D,MAAI,SAAS,OACT,UAAS,QAAQ,SAAS,MAAK,MAAK,EAAE,MAAM,KAAK,SAAS,OAAO,EAAE,WAAW,SAAS,WAAW;MAElG,UAAS,QAAQ,WAAW,SAAS,WAAW"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConfigReader.mjs","names":[],"sources":["../../../src/classes/cli/ConfigReader.ts"],"sourcesContent":["import type { ModuleLoader } from '../client/ModuleLoader.js';\nimport type { ModuleManager } from '../managers/ModuleManager.js';\nimport type { EventListeners } from '../client/EventListeners.js';\nimport type { Logger } from '@prtty/print';\nimport { CLI } from './CLI.js';\nimport { Client, RecipleError, type Config } from '@reciple/core';\nimport type { BuildConfig } from '../../helpers/types.js';\nimport type { UserConfig as TsdownConfig } from 'tsdown';\nimport path from 'node:path';\nimport { mkdir, readdir, readFile, stat, writeFile } from 'node:fs/promises';\nimport { resolveTSConfig } from 'pkg-types';\nimport { colors } from '@prtty/prtty';\nimport type { ShardingManagerOptions } from 'discord.js';\nimport { createJiti, type JitiResolveOptions } from 'jiti';\nimport { RuntimeEnvironment } from './RuntimeEnvironment.js';\n\ndeclare module \"@reciple/core\" {\n interface Config {\n token?: string;\n modules?: ModuleLoader.Config;\n logger?: Logger|Logger.Options;\n }\n\n interface Client {\n readonly modules: ModuleManager;\n readonly moduleLoader: ModuleLoader;\n readonly eventListeners: EventListeners;\n readonly cli: CLI;\n logger: Logger;\n }\n}\n\nexport class ConfigReader {\n private _client: Client|null = null;\n private _config: Config|null = null;\n private _build: BuildConfig|null = null;\n private _sharding: ShardingManagerOptions|null = null;\n\n get client() {\n if (!this._client) throw new RecipleError('client is not yet loaded from config.');\n return this._client;\n }\n\n get config() {\n return this._config ?? {};\n }\n\n get build() {\n return ConfigReader.normalizeTsdownConfig({\n overrides: this._build ?? {}\n });\n }\n\n get sharding() {\n return this._sharding;\n }\n\n constructor(public readonly filepath: string) {}\n\n public async read(options?: JitiResolveOptions): Promise<ConfigReader> {\n let module: ConfigReader.ModuleData;\n\n const runtime = RuntimeEnvironment.get();\n switch (runtime) {\n case 'bun':\n module = await import(`file://${path.resolve(this.filepath)}`);\n break;\n case 'deno':\n case 'node':\n default:\n const jiti = createJiti(path.resolve(path.dirname(this.filepath)));\n module = await jiti.import<ConfigReader.ModuleData>(`./${path.basename(this.filepath)}`, {\n default: true,\n ...options\n });\n }\n\n if (!module || !module.client) {\n throw new RecipleError(`exported client is not an instance of ${colors.cyan('Client')} from ${colors.green('\"@reciple/core\"')}.`);\n }\n\n this._client = module.client;\n this._config = module.config ?? null;\n this._build = module.build ?? null;\n this._sharding = module.sharding ?? null;\n\n return this;\n }\n\n public async create(options: Omit<ConfigReader.CreateOptions, 'path'>): Promise<ConfigReader> {\n const exists = await ConfigReader.exists(this.filepath);\n\n if (exists && options.throwIfExists === true) {\n throw new RecipleError(`Config file already exists at ${colors.green(path.relative(process.cwd(), this.filepath))}.`);\n }\n\n if (!exists || exists && options.overwrite !== false) {\n await mkdir(path.dirname(this.filepath), { recursive: true });\n await writeFile(this.filepath, await ConfigReader.getDefaultContent(options.type));\n }\n\n return options.readOptions !== false ? this.read(options.readOptions) : this;\n }\n\n public static async exists(file: string): Promise<boolean> {\n return await stat(file).then(s => s.isFile()).catch(() => false);\n }\n\n public static async create(options: ConfigReader.CreateOptions): Promise<ConfigReader> {\n return new ConfigReader(options.path).create(options);\n }\n\n public static async find(options?: ConfigReader.FindOptions): Promise<string|null> {\n const filenames = ConfigReader.configFilenames.filter(f => !options?.lang || f.endsWith(options.lang));\n const directories = options?.directories ?? ['.', '.config'];\n\n for (const directory of directories) {\n const stats = await stat(directory).catch(() => undefined);\n\n if (!stats?.isDirectory()) continue;\n\n const file = (await readdir(directory)).find(f => filenames.includes(f));\n if (file) return path.join(directory, file);\n }\n\n return null;\n }\n}\n\nexport namespace ConfigReader {\n export interface ModuleData {\n client: Client;\n config?: Config;\n build?: BuildConfig;\n sharding?: ShardingManagerOptions;\n }\n\n export interface CreateOptions {\n path: string;\n overwrite?: boolean;\n throwIfExists?: boolean;\n type: LangType;\n readOptions?: JitiResolveOptions|false;\n }\n\n export interface FindOptions {\n lang?: LangType;\n directories?: string[];\n }\n\n export async function getProjectLang(cwd: string): Promise<LangType> {\n const hasTsConfig = !!await resolveTSConfig(cwd, { try: true });\n const configLangIsTypescript = !!(await ConfigReader.find({\n directories: [cwd, path.join(cwd, '.config')],\n lang: 'ts'\n }));\n\n return hasTsConfig || configLangIsTypescript ? 'ts' : 'js';\n }\n\n export type LangType = 'ts'|'js';\n\n export const defaultConfigPath = {\n ts: path.join(CLI.root, 'assets/config', `reciple.config.ts`),\n js: path.join(CLI.root, 'assets/config', `reciple.config.js`)\n };\n\n export async function getDefaultContent(type: LangType): Promise<string> {\n const filepath = ConfigReader.defaultConfigPath[type];\n const content = await readFile(filepath, 'utf-8');\n return content;\n }\n\n export const configFilenames = [\n 'reciple.config.ts',\n 'reciple.config.mts',\n 'reciple.config.js',\n 'reciple.config.mjs'\n ];\n\n export function createConfigFilename(type: LangType, esm: boolean = false): string {\n return `reciple.config.${esm ? 'm' : ''}${type}`;\n }\n\n export function normalizeTsdownConfig({ type, overrides }: { type?: LangType; overrides?: BuildConfig; } = {}): TsdownConfig {\n return {\n entry: [`./src/**/*.{ts,tsx,js,jsx}`],\n outDir: './modules',\n tsconfig: `./${type ?? 'ts'}config.json`,\n sourcemap: true,\n treeshake: true,\n clean: true,\n ...overrides,\n watch: false,\n platform: 'node',\n format: 'esm',\n unbundle: true,\n deps: {\n neverBundle: ['reciple', /^@reciple\\//],\n skipNodeModulesBundle: true\n },\n // Deprecated\n external: undefined,\n noExternal: undefined,\n skipNodeModulesBundle: undefined,\n };\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RuntimeEnvironment.mjs","names":[],"sources":["../../../src/classes/cli/RuntimeEnvironment.ts"],"sourcesContent":["import { colors } from '@prtty/prtty';\nimport type { Client } from '@reciple/core';\nimport { setTimeout } from 'node:timers/promises';\n\nexport namespace RuntimeEnvironment {\n let stopping = false;\n\n export type Type = 'node'|'deno'|'bun';\n\n export function get(): Type|null {\n if ('isBun' in process && process.isBun && process.versions.bun) return 'bun';\n if ('deno' in process.versions && process.versions.deno) return 'deno';\n if (process.versions.node) return 'node';\n\n return null;\n }\n\n export async function sleep(time: number): Promise<void> {\n return setTimeout(time);\n }\n\n export async function handleExitSignal(client: Client, signal: NodeJS.Signals) {\n if (stopping) return;\n\n stopping = true;\n\n client.logger?.warn(`Received exit signal: ${signal}`);\n\n await client.destroy();\n client.eventListeners.unregisterAll();\n\n const signalString = signal === 'SIGINT' ? 'keyboard interrupt' : signal === 'SIGTERM' ? 'terminate' : String(signal);\n\n await sleep(10);\n\n client.logger?.warn(`Process exited: ${colors.yellow(signalString)}`);\n client.logger?.closeFileWriteStream();\n process.exit(0);\n }\n}\n"],"mappings":";;;;AAIO;;CACH,IAAI,WAAW;CAIR,SAAS,MAAiB;AAC7B,MAAI,WAAW,WAAW,QAAQ,SAAS,QAAQ,SAAS,IAAK,QAAO;AACxE,MAAI,UAAU,QAAQ,YAAY,QAAQ,SAAS,KAAM,QAAO;AAChE,MAAI,QAAQ,SAAS,KAAM,QAAO;AAElC,SAAO;;;CAGJ,eAAe,MAAM,MAA6B;AACrD,SAAO,WAAW,KAAK;;;CAGpB,eAAe,iBAAiB,QAAgB,QAAwB;AAC3E,MAAI,SAAU;AAEd,aAAW;AAEX,SAAO,QAAQ,KAAK,yBAAyB,SAAS;AAEtD,QAAM,OAAO,SAAS;AACtB,SAAO,eAAe,eAAe;EAErC,MAAM,eAAe,WAAW,WAAW,uBAAuB,WAAW,YAAY,cAAc,OAAO,OAAO;AAErH,QAAM,MAAM,GAAG;AAEf,SAAO,QAAQ,KAAK,mBAAmB,OAAO,OAAO,aAAa,GAAG;AACrE,SAAO,QAAQ,sBAAsB;AACrC,UAAQ,KAAK,EAAE;;;mDAEtB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"EventListeners.mjs","names":[],"sources":["../../../src/classes/client/EventListeners.ts"],"sourcesContent":["import { CommandType, type Client, type CommandManager } from '@reciple/core';\nimport type { EventEmitter } from 'node:events';\nimport type { ModuleManager } from '../managers/ModuleManager.js';\nimport { BaseModule } from '../modules/BaseModule.js';\nimport { Format } from '@reciple/utils';\nimport type { ModuleLoader } from './ModuleLoader.js';\nimport { colors } from '@prtty/prtty';\n\nexport class EventListeners {\n public registeredEvents: EventListeners.RegisteredEvent[] = [];\n\n public register(event: EventListeners.RegisteredEvent): this {\n event.onEvent = event.onEvent.bind(event);\n\n if (event.once) {\n event.emitter.once(event.event, event.onEvent);\n } else {\n event.emitter.on(event.event, event.onEvent);\n }\n\n this.registeredEvents.push(event);\n return this;\n }\n\n public unregister(event: EventListeners.RegisteredEvent): this {\n event.emitter.removeListener(event.event, event.onEvent);\n this.registeredEvents = this.registeredEvents.filter(e => e !== event);\n return this;\n }\n\n public unregisterAll(): this {\n this.registeredEvents.forEach(event => this.unregister(event));\n this.registeredEvents = [];\n return this;\n }\n\n public registerProcessExitEvents(listener: (signal: NodeJS.Signals) => any): this {\n for (const event of EventListeners.processExitEvents) {\n this.register({ emitter: process, event, onEvent: listener });\n }\n\n return this;\n }\n\n public unregisterProcessExitEvents(listener: (signal: NodeJS.Signals) => any): this {\n for (const event of EventListeners.processExitEvents) {\n this.unregister({ emitter: process, event, onEvent: listener });\n }\n\n return this;\n }\n}\n\nexport namespace EventListeners {\n export const processExitEvents = [\n 'SIGHUP',\n 'SIGINT',\n 'SIGQUIT',\n 'SIGABRT',\n 'SIGALRM',\n 'SIGTERM',\n 'SIGBREAK',\n 'SIGUSR2',\n ];\n\n export interface RegisteredEvent {\n event: string|symbol;\n emitter: EventEmitter;\n once?: boolean;\n onEvent: (...args: any) => any;\n }\n\n export function registerLoggerEventListeners(client: Client) {\n const defineModuleManagerEvent = <E extends keyof ModuleManager.Events>(event: E, onEvent: (...args: ModuleManager.Events[E]) => any): RegisteredEvent => ({ emitter: client.modules, event, onEvent });\n const defineModuleLoaderEvent = <E extends keyof ModuleLoader.Events>(event: E, onEvent: (...args: ModuleLoader.Events[E]) => any): RegisteredEvent => ({ emitter: client.moduleLoader, event, onEvent });\n const defineClientEvent = <E extends keyof Client.Events>(event: E, onEvent: (...args: Client.Events[E]) => any): RegisteredEvent => ({ emitter: client, event, onEvent });\n\n const events: RegisteredEvent[] = [\n defineModuleManagerEvent('modulePreEnable', (module) => client.logger.log(`Enabling module ${colors.cyan(`\"${BaseModule.getFilepath(module) || module.id}\"`)}`)),\n defineModuleManagerEvent('moduleEnable', (module) => client.logger.log(`Enabled module ${colors.cyan(`\"${BaseModule.getFilepath(module) || module.id}\"`)}`)),\n defineModuleManagerEvent('modulePreReady', (module) => client.logger.log(`Preparing module ${colors.cyan(`\"${BaseModule.getFilepath(module) || module.id}\"`)}`)),\n defineModuleManagerEvent('moduleReady', (module) => client.logger.log(`Ready module ${colors.cyan(`\"${BaseModule.getFilepath(module) || module.id}\"`)}`)),\n defineModuleManagerEvent('modulePreDisable', (module) => client.logger.log(`Disabling module ${colors.cyan(`\"${BaseModule.getFilepath(module) || module.id}\"`)}`)),\n defineModuleManagerEvent('moduleDisable', (module) => client.logger.log(`Disabled module ${colors.cyan(`\"${BaseModule.getFilepath(module) || module.id}\"`)}`)),\n defineModuleManagerEvent('moduleEnableError', (module, error) => client.logger.error(`Failed to enable module ${colors.cyan(`\"${BaseModule.getFilepath(module) || module.id}\"`)}:`, error)),\n defineModuleManagerEvent('moduleReadyError', (module, error) => client.logger.error(`Failed to ready module ${colors.cyan(`\"${BaseModule.getFilepath(module) || module.id}\"`)}:`, error)),\n defineModuleManagerEvent('moduleDisableError', (module, error) => client.logger.error(`Failed to disable module ${colors.cyan(`\"${BaseModule.getFilepath(module) || module.id}\"`)}:`, error)),\n defineModuleLoaderEvent('modulesResolving', () => client.logger.log(colors.green('🔍 Resolving modules...'))),\n defineModuleLoaderEvent('modulesResolved', (modules) => client.logger.log(colors.green(`✅ Resolved ${modules.length} ${Format.plural(modules.length, 'module')}.`))),\n defineModuleLoaderEvent('moduleResolving', (filepath) => client.logger.debug(`Resolving module ${colors.cyan(`\"${filepath}\"`)}`)),\n defineModuleLoaderEvent('moduleResolved', (module) => client.logger.debug(`Resolved module ${colors.cyan(`\"${BaseModule.getFilepath(module) || module.id}\"`)}`)),\n defineModuleLoaderEvent('moduleResolveError', (error) => client.logger.error(`Failed to resolve module:`, error)),\n defineClientEvent('debug', (message) => client.logger.debug(message)),\n ];\n\n for (const event of events) {\n client.eventListeners.register(event);\n }\n }\n\n export function registerCommandsEventListeners(client: Client) {\n const defineCommandsEvent = <E extends keyof CommandManager.Events>(event: E, onEvent: (...args: CommandManager.Events[E]) => any): RegisteredEvent => ({ emitter: client.commands!, event, onEvent });\n\n const events: RegisteredEvent[] = [\n defineCommandsEvent('applicationCommandsRegister', (commands, guildId) => client.logger.log(colors.green(`📩 Registered ${colors.cyan(commands.size.toLocaleString())} application ${Format.plural(commands.size, 'command')}${guildId ? ` to guild ${colors.magenta(guildId)}` : colors.magenta(' globally')}.`))),\n defineCommandsEvent('commandExecute', (data) => client.logger.debug(`Executed ${CommandType[data.command.type].toLowerCase()} command ${colors.cyan(`\"${data.command.data.name}\"`)} ${colors.magenta(`(${data.command.id})`)}`)),\n ];\n\n for (const event of events) {\n client.eventListeners.register(event);\n }\n }\n}\n"],"mappings":"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"}