@ragemp-mango/client 2.0.6-beta.0
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.
- package/LICENSE +21 -0
- package/README.md +20 -0
- package/dist/guard.interface-DzGLAoda.d.ts +15 -0
- package/dist/index.d.ts +327 -0
- package/dist/index.js +8739 -0
- package/dist/utils/index.d.ts +209 -0
- package/dist/utils/index.js +259 -0
- package/package.json +57 -0
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { G as Guard, E as ExecutionContext, M as MangoRequest, a as MangoResponse } from '../guard.interface-DzGLAoda.js';
|
|
2
|
+
import '@ragemp-mango/core/app';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Windows Virtual Key codes for use with mp.keys.bind().
|
|
6
|
+
* Based on: https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
|
|
7
|
+
*
|
|
8
|
+
* Note: The @ragempcommunity/types-client package does not include a key code enum,
|
|
9
|
+
* so we provide this enum for developer convenience.
|
|
10
|
+
*/
|
|
11
|
+
declare enum KeyCode {
|
|
12
|
+
Backspace = 8,
|
|
13
|
+
Tab = 9,
|
|
14
|
+
Enter = 13,
|
|
15
|
+
Shift = 16,
|
|
16
|
+
Ctrl = 17,
|
|
17
|
+
Alt = 18,
|
|
18
|
+
Pause = 19,
|
|
19
|
+
CapsLock = 20,
|
|
20
|
+
Escape = 27,
|
|
21
|
+
Space = 32,
|
|
22
|
+
PageUp = 33,
|
|
23
|
+
PageDown = 34,
|
|
24
|
+
End = 35,
|
|
25
|
+
Home = 36,
|
|
26
|
+
Left = 37,
|
|
27
|
+
Up = 38,
|
|
28
|
+
Right = 39,
|
|
29
|
+
Down = 40,
|
|
30
|
+
Insert = 45,
|
|
31
|
+
Delete = 46,
|
|
32
|
+
Key0 = 48,
|
|
33
|
+
Key1 = 49,
|
|
34
|
+
Key2 = 50,
|
|
35
|
+
Key3 = 51,
|
|
36
|
+
Key4 = 52,
|
|
37
|
+
Key5 = 53,
|
|
38
|
+
Key6 = 54,
|
|
39
|
+
Key7 = 55,
|
|
40
|
+
Key8 = 56,
|
|
41
|
+
Key9 = 57,
|
|
42
|
+
A = 65,
|
|
43
|
+
B = 66,
|
|
44
|
+
C = 67,
|
|
45
|
+
D = 68,
|
|
46
|
+
E = 69,
|
|
47
|
+
F = 70,
|
|
48
|
+
G = 71,
|
|
49
|
+
H = 72,
|
|
50
|
+
I = 73,
|
|
51
|
+
J = 74,
|
|
52
|
+
K = 75,
|
|
53
|
+
L = 76,
|
|
54
|
+
M = 77,
|
|
55
|
+
N = 78,
|
|
56
|
+
O = 79,
|
|
57
|
+
P = 80,
|
|
58
|
+
Q = 81,
|
|
59
|
+
R = 82,
|
|
60
|
+
S = 83,
|
|
61
|
+
T = 84,
|
|
62
|
+
U = 85,
|
|
63
|
+
V = 86,
|
|
64
|
+
W = 87,
|
|
65
|
+
X = 88,
|
|
66
|
+
Y = 89,
|
|
67
|
+
Z = 90,
|
|
68
|
+
Numpad0 = 96,
|
|
69
|
+
Numpad1 = 97,
|
|
70
|
+
Numpad2 = 98,
|
|
71
|
+
Numpad3 = 99,
|
|
72
|
+
Numpad4 = 100,
|
|
73
|
+
Numpad5 = 101,
|
|
74
|
+
Numpad6 = 102,
|
|
75
|
+
Numpad7 = 103,
|
|
76
|
+
Numpad8 = 104,
|
|
77
|
+
Numpad9 = 105,
|
|
78
|
+
NumpadMultiply = 106,
|
|
79
|
+
NumpadAdd = 107,
|
|
80
|
+
NumpadSubtract = 109,
|
|
81
|
+
NumpadDecimal = 110,
|
|
82
|
+
NumpadDivide = 111,
|
|
83
|
+
F1 = 112,
|
|
84
|
+
F2 = 113,
|
|
85
|
+
F3 = 114,
|
|
86
|
+
F4 = 115,
|
|
87
|
+
F5 = 116,
|
|
88
|
+
F6 = 117,
|
|
89
|
+
F7 = 118,
|
|
90
|
+
F8 = 119,
|
|
91
|
+
F9 = 120,
|
|
92
|
+
F10 = 121,
|
|
93
|
+
F11 = 122,
|
|
94
|
+
F12 = 123,
|
|
95
|
+
NumLock = 144,
|
|
96
|
+
ScrollLock = 145,
|
|
97
|
+
Semicolon = 186,
|
|
98
|
+
Equal = 187,
|
|
99
|
+
Comma = 188,
|
|
100
|
+
Minus = 189,
|
|
101
|
+
Period = 190,
|
|
102
|
+
Slash = 191,
|
|
103
|
+
Backquote = 192,
|
|
104
|
+
BracketLeft = 219,
|
|
105
|
+
Backslash = 220,
|
|
106
|
+
BracketRight = 221,
|
|
107
|
+
Quote = 222
|
|
108
|
+
}
|
|
109
|
+
interface KeyEventParameters {
|
|
110
|
+
key: number;
|
|
111
|
+
}
|
|
112
|
+
declare class KeyGuard implements Guard {
|
|
113
|
+
private readonly key;
|
|
114
|
+
constructor(key: KeyCode);
|
|
115
|
+
canActivate(context: ExecutionContext<MangoRequest<KeyEventParameters>, MangoResponse>): boolean;
|
|
116
|
+
}
|
|
117
|
+
type KeyHandler = () => void;
|
|
118
|
+
/**
|
|
119
|
+
* Decorator that binds a method to be called when a key is released (keyup).
|
|
120
|
+
* Uses mp.keys.bind internally with keydown=false.
|
|
121
|
+
*
|
|
122
|
+
* @param key - The key code to bind to
|
|
123
|
+
* @example
|
|
124
|
+
* ```typescript
|
|
125
|
+
* @OnKeyUp(KeyCode.F2)
|
|
126
|
+
* onF2Released() {
|
|
127
|
+
* mp.gui.chat.push("F2 was released");
|
|
128
|
+
* }
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
declare function OnKeyUp(key: KeyCode): MethodDecorator;
|
|
132
|
+
/**
|
|
133
|
+
* Decorator that binds a method to be called once when a key is released, then unbinds.
|
|
134
|
+
*
|
|
135
|
+
* @param key - The key code to bind to
|
|
136
|
+
* @example
|
|
137
|
+
* ```typescript
|
|
138
|
+
* @OnceKeyUp(KeyCode.F3)
|
|
139
|
+
* onF3ReleasedOnce() {
|
|
140
|
+
* mp.gui.chat.push("F3 was released (only fires once)");
|
|
141
|
+
* }
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
declare function OnceKeyUp(key: KeyCode): MethodDecorator;
|
|
145
|
+
/**
|
|
146
|
+
* Decorator that binds a method to be called when a key is pressed down (keydown).
|
|
147
|
+
* Uses mp.keys.bind internally with keydown=true.
|
|
148
|
+
*
|
|
149
|
+
* @param key - The key code to bind to
|
|
150
|
+
* @example
|
|
151
|
+
* ```typescript
|
|
152
|
+
* @OnKeyDown(KeyCode.F2)
|
|
153
|
+
* onF2Pressed() {
|
|
154
|
+
* mp.gui.chat.push("F2 was pressed");
|
|
155
|
+
* }
|
|
156
|
+
* ```
|
|
157
|
+
*/
|
|
158
|
+
declare function OnKeyDown(key: KeyCode): MethodDecorator;
|
|
159
|
+
/**
|
|
160
|
+
* Decorator that binds a method to be called once when a key is pressed, then unbinds.
|
|
161
|
+
*
|
|
162
|
+
* @param key - The key code to bind to
|
|
163
|
+
* @example
|
|
164
|
+
* ```typescript
|
|
165
|
+
* @OnceKeyDown(KeyCode.F4)
|
|
166
|
+
* onF4PressedOnce() {
|
|
167
|
+
* mp.gui.chat.push("F4 was pressed (only fires once)");
|
|
168
|
+
* }
|
|
169
|
+
* ```
|
|
170
|
+
*/
|
|
171
|
+
declare function OnceKeyDown(key: KeyCode): MethodDecorator;
|
|
172
|
+
/**
|
|
173
|
+
* Utility function to check if a key is currently pressed down.
|
|
174
|
+
* Wraps mp.keys.isDown.
|
|
175
|
+
*
|
|
176
|
+
* @param key - The key code to check
|
|
177
|
+
* @returns true if the key is pressed, false otherwise
|
|
178
|
+
*/
|
|
179
|
+
declare function isKeyDown(key: KeyCode): boolean;
|
|
180
|
+
/**
|
|
181
|
+
* Utility function to check if a key is currently released.
|
|
182
|
+
* Wraps mp.keys.isUp.
|
|
183
|
+
*
|
|
184
|
+
* @param key - The key code to check
|
|
185
|
+
* @returns true if the key is released, false otherwise
|
|
186
|
+
*/
|
|
187
|
+
declare function isKeyUp(key: KeyCode): boolean;
|
|
188
|
+
/**
|
|
189
|
+
* Manually bind a key handler.
|
|
190
|
+
*
|
|
191
|
+
* @param key - The key code to bind
|
|
192
|
+
* @param keydown - true for keydown, false for keyup
|
|
193
|
+
* @param handler - The function to call
|
|
194
|
+
*/
|
|
195
|
+
declare function bindKey(key: KeyCode, keydown: boolean, handler: KeyHandler): void;
|
|
196
|
+
/**
|
|
197
|
+
* Manually unbind a key handler.
|
|
198
|
+
*
|
|
199
|
+
* @param key - The key code to unbind
|
|
200
|
+
* @param keydown - true for keydown, false for keyup
|
|
201
|
+
* @param handler - Optional specific handler to unbind
|
|
202
|
+
*/
|
|
203
|
+
declare function unbindKey(key: KeyCode, keydown: boolean, handler?: KeyHandler): void;
|
|
204
|
+
/**
|
|
205
|
+
* Unbind all key bindings created by decorators.
|
|
206
|
+
*/
|
|
207
|
+
declare function unbindAllKeys(): void;
|
|
208
|
+
|
|
209
|
+
export { KeyCode, KeyGuard, OnKeyDown, OnKeyUp, OnceKeyDown, OnceKeyUp, bindKey, isKeyDown, isKeyUp, unbindAllKeys, unbindKey };
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
|
|
4
|
+
// src/utils/keyboard-decorators.ts
|
|
5
|
+
var KeyCode = /* @__PURE__ */ (function(KeyCode2) {
|
|
6
|
+
KeyCode2[KeyCode2["Backspace"] = 8] = "Backspace";
|
|
7
|
+
KeyCode2[KeyCode2["Tab"] = 9] = "Tab";
|
|
8
|
+
KeyCode2[KeyCode2["Enter"] = 13] = "Enter";
|
|
9
|
+
KeyCode2[KeyCode2["Shift"] = 16] = "Shift";
|
|
10
|
+
KeyCode2[KeyCode2["Ctrl"] = 17] = "Ctrl";
|
|
11
|
+
KeyCode2[KeyCode2["Alt"] = 18] = "Alt";
|
|
12
|
+
KeyCode2[KeyCode2["Pause"] = 19] = "Pause";
|
|
13
|
+
KeyCode2[KeyCode2["CapsLock"] = 20] = "CapsLock";
|
|
14
|
+
KeyCode2[KeyCode2["Escape"] = 27] = "Escape";
|
|
15
|
+
KeyCode2[KeyCode2["Space"] = 32] = "Space";
|
|
16
|
+
KeyCode2[KeyCode2["PageUp"] = 33] = "PageUp";
|
|
17
|
+
KeyCode2[KeyCode2["PageDown"] = 34] = "PageDown";
|
|
18
|
+
KeyCode2[KeyCode2["End"] = 35] = "End";
|
|
19
|
+
KeyCode2[KeyCode2["Home"] = 36] = "Home";
|
|
20
|
+
KeyCode2[KeyCode2["Left"] = 37] = "Left";
|
|
21
|
+
KeyCode2[KeyCode2["Up"] = 38] = "Up";
|
|
22
|
+
KeyCode2[KeyCode2["Right"] = 39] = "Right";
|
|
23
|
+
KeyCode2[KeyCode2["Down"] = 40] = "Down";
|
|
24
|
+
KeyCode2[KeyCode2["Insert"] = 45] = "Insert";
|
|
25
|
+
KeyCode2[KeyCode2["Delete"] = 46] = "Delete";
|
|
26
|
+
KeyCode2[KeyCode2["Key0"] = 48] = "Key0";
|
|
27
|
+
KeyCode2[KeyCode2["Key1"] = 49] = "Key1";
|
|
28
|
+
KeyCode2[KeyCode2["Key2"] = 50] = "Key2";
|
|
29
|
+
KeyCode2[KeyCode2["Key3"] = 51] = "Key3";
|
|
30
|
+
KeyCode2[KeyCode2["Key4"] = 52] = "Key4";
|
|
31
|
+
KeyCode2[KeyCode2["Key5"] = 53] = "Key5";
|
|
32
|
+
KeyCode2[KeyCode2["Key6"] = 54] = "Key6";
|
|
33
|
+
KeyCode2[KeyCode2["Key7"] = 55] = "Key7";
|
|
34
|
+
KeyCode2[KeyCode2["Key8"] = 56] = "Key8";
|
|
35
|
+
KeyCode2[KeyCode2["Key9"] = 57] = "Key9";
|
|
36
|
+
KeyCode2[KeyCode2["A"] = 65] = "A";
|
|
37
|
+
KeyCode2[KeyCode2["B"] = 66] = "B";
|
|
38
|
+
KeyCode2[KeyCode2["C"] = 67] = "C";
|
|
39
|
+
KeyCode2[KeyCode2["D"] = 68] = "D";
|
|
40
|
+
KeyCode2[KeyCode2["E"] = 69] = "E";
|
|
41
|
+
KeyCode2[KeyCode2["F"] = 70] = "F";
|
|
42
|
+
KeyCode2[KeyCode2["G"] = 71] = "G";
|
|
43
|
+
KeyCode2[KeyCode2["H"] = 72] = "H";
|
|
44
|
+
KeyCode2[KeyCode2["I"] = 73] = "I";
|
|
45
|
+
KeyCode2[KeyCode2["J"] = 74] = "J";
|
|
46
|
+
KeyCode2[KeyCode2["K"] = 75] = "K";
|
|
47
|
+
KeyCode2[KeyCode2["L"] = 76] = "L";
|
|
48
|
+
KeyCode2[KeyCode2["M"] = 77] = "M";
|
|
49
|
+
KeyCode2[KeyCode2["N"] = 78] = "N";
|
|
50
|
+
KeyCode2[KeyCode2["O"] = 79] = "O";
|
|
51
|
+
KeyCode2[KeyCode2["P"] = 80] = "P";
|
|
52
|
+
KeyCode2[KeyCode2["Q"] = 81] = "Q";
|
|
53
|
+
KeyCode2[KeyCode2["R"] = 82] = "R";
|
|
54
|
+
KeyCode2[KeyCode2["S"] = 83] = "S";
|
|
55
|
+
KeyCode2[KeyCode2["T"] = 84] = "T";
|
|
56
|
+
KeyCode2[KeyCode2["U"] = 85] = "U";
|
|
57
|
+
KeyCode2[KeyCode2["V"] = 86] = "V";
|
|
58
|
+
KeyCode2[KeyCode2["W"] = 87] = "W";
|
|
59
|
+
KeyCode2[KeyCode2["X"] = 88] = "X";
|
|
60
|
+
KeyCode2[KeyCode2["Y"] = 89] = "Y";
|
|
61
|
+
KeyCode2[KeyCode2["Z"] = 90] = "Z";
|
|
62
|
+
KeyCode2[KeyCode2["Numpad0"] = 96] = "Numpad0";
|
|
63
|
+
KeyCode2[KeyCode2["Numpad1"] = 97] = "Numpad1";
|
|
64
|
+
KeyCode2[KeyCode2["Numpad2"] = 98] = "Numpad2";
|
|
65
|
+
KeyCode2[KeyCode2["Numpad3"] = 99] = "Numpad3";
|
|
66
|
+
KeyCode2[KeyCode2["Numpad4"] = 100] = "Numpad4";
|
|
67
|
+
KeyCode2[KeyCode2["Numpad5"] = 101] = "Numpad5";
|
|
68
|
+
KeyCode2[KeyCode2["Numpad6"] = 102] = "Numpad6";
|
|
69
|
+
KeyCode2[KeyCode2["Numpad7"] = 103] = "Numpad7";
|
|
70
|
+
KeyCode2[KeyCode2["Numpad8"] = 104] = "Numpad8";
|
|
71
|
+
KeyCode2[KeyCode2["Numpad9"] = 105] = "Numpad9";
|
|
72
|
+
KeyCode2[KeyCode2["NumpadMultiply"] = 106] = "NumpadMultiply";
|
|
73
|
+
KeyCode2[KeyCode2["NumpadAdd"] = 107] = "NumpadAdd";
|
|
74
|
+
KeyCode2[KeyCode2["NumpadSubtract"] = 109] = "NumpadSubtract";
|
|
75
|
+
KeyCode2[KeyCode2["NumpadDecimal"] = 110] = "NumpadDecimal";
|
|
76
|
+
KeyCode2[KeyCode2["NumpadDivide"] = 111] = "NumpadDivide";
|
|
77
|
+
KeyCode2[KeyCode2["F1"] = 112] = "F1";
|
|
78
|
+
KeyCode2[KeyCode2["F2"] = 113] = "F2";
|
|
79
|
+
KeyCode2[KeyCode2["F3"] = 114] = "F3";
|
|
80
|
+
KeyCode2[KeyCode2["F4"] = 115] = "F4";
|
|
81
|
+
KeyCode2[KeyCode2["F5"] = 116] = "F5";
|
|
82
|
+
KeyCode2[KeyCode2["F6"] = 117] = "F6";
|
|
83
|
+
KeyCode2[KeyCode2["F7"] = 118] = "F7";
|
|
84
|
+
KeyCode2[KeyCode2["F8"] = 119] = "F8";
|
|
85
|
+
KeyCode2[KeyCode2["F9"] = 120] = "F9";
|
|
86
|
+
KeyCode2[KeyCode2["F10"] = 121] = "F10";
|
|
87
|
+
KeyCode2[KeyCode2["F11"] = 122] = "F11";
|
|
88
|
+
KeyCode2[KeyCode2["F12"] = 123] = "F12";
|
|
89
|
+
KeyCode2[KeyCode2["NumLock"] = 144] = "NumLock";
|
|
90
|
+
KeyCode2[KeyCode2["ScrollLock"] = 145] = "ScrollLock";
|
|
91
|
+
KeyCode2[KeyCode2["Semicolon"] = 186] = "Semicolon";
|
|
92
|
+
KeyCode2[KeyCode2["Equal"] = 187] = "Equal";
|
|
93
|
+
KeyCode2[KeyCode2["Comma"] = 188] = "Comma";
|
|
94
|
+
KeyCode2[KeyCode2["Minus"] = 189] = "Minus";
|
|
95
|
+
KeyCode2[KeyCode2["Period"] = 190] = "Period";
|
|
96
|
+
KeyCode2[KeyCode2["Slash"] = 191] = "Slash";
|
|
97
|
+
KeyCode2[KeyCode2["Backquote"] = 192] = "Backquote";
|
|
98
|
+
KeyCode2[KeyCode2["BracketLeft"] = 219] = "BracketLeft";
|
|
99
|
+
KeyCode2[KeyCode2["Backslash"] = 220] = "Backslash";
|
|
100
|
+
KeyCode2[KeyCode2["BracketRight"] = 221] = "BracketRight";
|
|
101
|
+
KeyCode2[KeyCode2["Quote"] = 222] = "Quote";
|
|
102
|
+
return KeyCode2;
|
|
103
|
+
})({});
|
|
104
|
+
var KeyGuard = class {
|
|
105
|
+
static {
|
|
106
|
+
__name(this, "KeyGuard");
|
|
107
|
+
}
|
|
108
|
+
key;
|
|
109
|
+
constructor(key) {
|
|
110
|
+
this.key = key;
|
|
111
|
+
}
|
|
112
|
+
canActivate(context) {
|
|
113
|
+
const eventKey = context.request.body.key;
|
|
114
|
+
return eventKey === this.key;
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
var keyBindings = /* @__PURE__ */ new Map();
|
|
118
|
+
function OnKeyUp(key) {
|
|
119
|
+
return (target, propertyKey, descriptor) => {
|
|
120
|
+
const originalMethod = descriptor.value;
|
|
121
|
+
const bindingKey = `${target.constructor.name}_${String(propertyKey)}_keyup_${key}`;
|
|
122
|
+
Reflect.defineMetadata("mango:keyup", {
|
|
123
|
+
key,
|
|
124
|
+
bindingKey
|
|
125
|
+
}, target, propertyKey);
|
|
126
|
+
const handler = /* @__PURE__ */ __name(function() {
|
|
127
|
+
return originalMethod.apply(this, arguments);
|
|
128
|
+
}, "handler");
|
|
129
|
+
keyBindings.set(bindingKey, handler);
|
|
130
|
+
if (typeof mp !== "undefined" && mp.keys) {
|
|
131
|
+
mp.keys.bind(key, false, handler);
|
|
132
|
+
}
|
|
133
|
+
return descriptor;
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
__name(OnKeyUp, "OnKeyUp");
|
|
137
|
+
function OnceKeyUp(key) {
|
|
138
|
+
return (target, propertyKey, descriptor) => {
|
|
139
|
+
const originalMethod = descriptor.value;
|
|
140
|
+
const bindingKey = `${target.constructor.name}_${String(propertyKey)}_oncekeyup_${key}`;
|
|
141
|
+
Reflect.defineMetadata("mango:oncekeyup", {
|
|
142
|
+
key,
|
|
143
|
+
bindingKey
|
|
144
|
+
}, target, propertyKey);
|
|
145
|
+
const handler = /* @__PURE__ */ __name(function() {
|
|
146
|
+
if (typeof mp !== "undefined" && mp.keys) {
|
|
147
|
+
mp.keys.unbind(key, false, handler);
|
|
148
|
+
}
|
|
149
|
+
keyBindings.delete(bindingKey);
|
|
150
|
+
return originalMethod.apply(this, arguments);
|
|
151
|
+
}, "handler");
|
|
152
|
+
keyBindings.set(bindingKey, handler);
|
|
153
|
+
if (typeof mp !== "undefined" && mp.keys) {
|
|
154
|
+
mp.keys.bind(key, false, handler);
|
|
155
|
+
}
|
|
156
|
+
return descriptor;
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
__name(OnceKeyUp, "OnceKeyUp");
|
|
160
|
+
function OnKeyDown(key) {
|
|
161
|
+
return (target, propertyKey, descriptor) => {
|
|
162
|
+
const originalMethod = descriptor.value;
|
|
163
|
+
const bindingKey = `${target.constructor.name}_${String(propertyKey)}_keydown_${key}`;
|
|
164
|
+
Reflect.defineMetadata("mango:keydown", {
|
|
165
|
+
key,
|
|
166
|
+
bindingKey
|
|
167
|
+
}, target, propertyKey);
|
|
168
|
+
const handler = /* @__PURE__ */ __name(function() {
|
|
169
|
+
return originalMethod.apply(this, arguments);
|
|
170
|
+
}, "handler");
|
|
171
|
+
keyBindings.set(bindingKey, handler);
|
|
172
|
+
if (typeof mp !== "undefined" && mp.keys) {
|
|
173
|
+
mp.keys.bind(key, true, handler);
|
|
174
|
+
}
|
|
175
|
+
return descriptor;
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
__name(OnKeyDown, "OnKeyDown");
|
|
179
|
+
function OnceKeyDown(key) {
|
|
180
|
+
return (target, propertyKey, descriptor) => {
|
|
181
|
+
const originalMethod = descriptor.value;
|
|
182
|
+
const bindingKey = `${target.constructor.name}_${String(propertyKey)}_oncekeydown_${key}`;
|
|
183
|
+
Reflect.defineMetadata("mango:oncekeydown", {
|
|
184
|
+
key,
|
|
185
|
+
bindingKey
|
|
186
|
+
}, target, propertyKey);
|
|
187
|
+
const handler = /* @__PURE__ */ __name(function() {
|
|
188
|
+
if (typeof mp !== "undefined" && mp.keys) {
|
|
189
|
+
mp.keys.unbind(key, true, handler);
|
|
190
|
+
}
|
|
191
|
+
keyBindings.delete(bindingKey);
|
|
192
|
+
return originalMethod.apply(this, arguments);
|
|
193
|
+
}, "handler");
|
|
194
|
+
keyBindings.set(bindingKey, handler);
|
|
195
|
+
if (typeof mp !== "undefined" && mp.keys) {
|
|
196
|
+
mp.keys.bind(key, true, handler);
|
|
197
|
+
}
|
|
198
|
+
return descriptor;
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
__name(OnceKeyDown, "OnceKeyDown");
|
|
202
|
+
function isKeyDown(key) {
|
|
203
|
+
if (typeof mp !== "undefined" && mp.keys) {
|
|
204
|
+
return mp.keys.isDown(key);
|
|
205
|
+
}
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
208
|
+
__name(isKeyDown, "isKeyDown");
|
|
209
|
+
function isKeyUp(key) {
|
|
210
|
+
if (typeof mp !== "undefined" && mp.keys) {
|
|
211
|
+
return mp.keys.isUp(key);
|
|
212
|
+
}
|
|
213
|
+
return true;
|
|
214
|
+
}
|
|
215
|
+
__name(isKeyUp, "isKeyUp");
|
|
216
|
+
function bindKey(key, keydown, handler) {
|
|
217
|
+
if (typeof mp !== "undefined" && mp.keys) {
|
|
218
|
+
mp.keys.bind(key, keydown, handler);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
__name(bindKey, "bindKey");
|
|
222
|
+
function unbindKey(key, keydown, handler) {
|
|
223
|
+
if (typeof mp !== "undefined" && mp.keys) {
|
|
224
|
+
if (handler) {
|
|
225
|
+
mp.keys.unbind(key, keydown, handler);
|
|
226
|
+
} else {
|
|
227
|
+
mp.keys.unbind(key, keydown);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
__name(unbindKey, "unbindKey");
|
|
232
|
+
function unbindAllKeys() {
|
|
233
|
+
if (typeof mp !== "undefined" && mp.keys) {
|
|
234
|
+
keyBindings.forEach((handler, bindingKey) => {
|
|
235
|
+
const parts = bindingKey.split("_");
|
|
236
|
+
const keyStr = parts.pop();
|
|
237
|
+
if (!keyStr) return;
|
|
238
|
+
const isKeydown = bindingKey.includes("keydown");
|
|
239
|
+
const key = parseInt(keyStr, 10);
|
|
240
|
+
mp.keys.unbind(key, isKeydown, handler);
|
|
241
|
+
});
|
|
242
|
+
keyBindings.clear();
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
__name(unbindAllKeys, "unbindAllKeys");
|
|
246
|
+
export {
|
|
247
|
+
KeyCode,
|
|
248
|
+
KeyGuard,
|
|
249
|
+
OnKeyDown,
|
|
250
|
+
OnKeyUp,
|
|
251
|
+
OnceKeyDown,
|
|
252
|
+
OnceKeyUp,
|
|
253
|
+
bindKey,
|
|
254
|
+
isKeyDown,
|
|
255
|
+
isKeyUp,
|
|
256
|
+
unbindAllKeys,
|
|
257
|
+
unbindKey
|
|
258
|
+
};
|
|
259
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2tleWJvYXJkLWRlY29yYXRvcnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB0eXBlIHsgRXhlY3V0aW9uQ29udGV4dCwgR3VhcmQsIE1hbmdvUmVxdWVzdCwgTWFuZ29SZXNwb25zZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG4vKipcbiAqIFdpbmRvd3MgVmlydHVhbCBLZXkgY29kZXMgZm9yIHVzZSB3aXRoIG1wLmtleXMuYmluZCgpLlxuICogQmFzZWQgb246IGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3dpbmRvd3Mvd2luMzIvaW5wdXRkZXYvdmlydHVhbC1rZXktY29kZXNcbiAqXG4gKiBOb3RlOiBUaGUgQHJhZ2VtcGNvbW11bml0eS90eXBlcy1jbGllbnQgcGFja2FnZSBkb2VzIG5vdCBpbmNsdWRlIGEga2V5IGNvZGUgZW51bSxcbiAqIHNvIHdlIHByb3ZpZGUgdGhpcyBlbnVtIGZvciBkZXZlbG9wZXIgY29udmVuaWVuY2UuXG4gKi9cbmV4cG9ydCBlbnVtIEtleUNvZGUge1xuICAgIEJhY2tzcGFjZSA9IDB4MDgsXG4gICAgVGFiID0gMHgwOSxcbiAgICBFbnRlciA9IDB4MEQsXG4gICAgU2hpZnQgPSAweDEwLFxuICAgIEN0cmwgPSAweDExLFxuICAgIEFsdCA9IDB4MTIsXG4gICAgUGF1c2UgPSAweDEzLFxuICAgIENhcHNMb2NrID0gMHgxNCxcbiAgICBFc2NhcGUgPSAweDFCLFxuICAgIFNwYWNlID0gMHgyMCxcbiAgICBQYWdlVXAgPSAweDIxLFxuICAgIFBhZ2VEb3duID0gMHgyMixcbiAgICBFbmQgPSAweDIzLFxuICAgIEhvbWUgPSAweDI0LFxuICAgIExlZnQgPSAweDI1LFxuICAgIFVwID0gMHgyNixcbiAgICBSaWdodCA9IDB4MjcsXG4gICAgRG93biA9IDB4MjgsXG4gICAgSW5zZXJ0ID0gMHgyRCxcbiAgICBEZWxldGUgPSAweDJFLFxuICAgIEtleTAgPSAweDMwLFxuICAgIEtleTEgPSAweDMxLFxuICAgIEtleTIgPSAweDMyLFxuICAgIEtleTMgPSAweDMzLFxuICAgIEtleTQgPSAweDM0LFxuICAgIEtleTUgPSAweDM1LFxuICAgIEtleTYgPSAweDM2LFxuICAgIEtleTcgPSAweDM3LFxuICAgIEtleTggPSAweDM4LFxuICAgIEtleTkgPSAweDM5LFxuICAgIEEgPSAweDQxLFxuICAgIEIgPSAweDQyLFxuICAgIEMgPSAweDQzLFxuICAgIEQgPSAweDQ0LFxuICAgIEUgPSAweDQ1LFxuICAgIEYgPSAweDQ2LFxuICAgIEcgPSAweDQ3LFxuICAgIEggPSAweDQ4LFxuICAgIEkgPSAweDQ5LFxuICAgIEogPSAweDRBLFxuICAgIEsgPSAweDRCLFxuICAgIEwgPSAweDRDLFxuICAgIE0gPSAweDRELFxuICAgIE4gPSAweDRFLFxuICAgIE8gPSAweDRGLFxuICAgIFAgPSAweDUwLFxuICAgIFEgPSAweDUxLFxuICAgIFIgPSAweDUyLFxuICAgIFMgPSAweDUzLFxuICAgIFQgPSAweDU0LFxuICAgIFUgPSAweDU1LFxuICAgIFYgPSAweDU2LFxuICAgIFcgPSAweDU3LFxuICAgIFggPSAweDU4LFxuICAgIFkgPSAweDU5LFxuICAgIFogPSAweDVBLFxuICAgIE51bXBhZDAgPSAweDYwLFxuICAgIE51bXBhZDEgPSAweDYxLFxuICAgIE51bXBhZDIgPSAweDYyLFxuICAgIE51bXBhZDMgPSAweDYzLFxuICAgIE51bXBhZDQgPSAweDY0LFxuICAgIE51bXBhZDUgPSAweDY1LFxuICAgIE51bXBhZDYgPSAweDY2LFxuICAgIE51bXBhZDcgPSAweDY3LFxuICAgIE51bXBhZDggPSAweDY4LFxuICAgIE51bXBhZDkgPSAweDY5LFxuICAgIE51bXBhZE11bHRpcGx5ID0gMHg2QSxcbiAgICBOdW1wYWRBZGQgPSAweDZCLFxuICAgIE51bXBhZFN1YnRyYWN0ID0gMHg2RCxcbiAgICBOdW1wYWREZWNpbWFsID0gMHg2RSxcbiAgICBOdW1wYWREaXZpZGUgPSAweDZGLFxuICAgIEYxID0gMHg3MCxcbiAgICBGMiA9IDB4NzEsXG4gICAgRjMgPSAweDcyLFxuICAgIEY0ID0gMHg3MyxcbiAgICBGNSA9IDB4NzQsXG4gICAgRjYgPSAweDc1LFxuICAgIEY3ID0gMHg3NixcbiAgICBGOCA9IDB4NzcsXG4gICAgRjkgPSAweDc4LFxuICAgIEYxMCA9IDB4NzksXG4gICAgRjExID0gMHg3QSxcbiAgICBGMTIgPSAweDdCLFxuICAgIE51bUxvY2sgPSAweDkwLFxuICAgIFNjcm9sbExvY2sgPSAweDkxLFxuICAgIFNlbWljb2xvbiA9IDB4QkEsXG4gICAgRXF1YWwgPSAweEJCLFxuICAgIENvbW1hID0gMHhCQyxcbiAgICBNaW51cyA9IDB4QkQsXG4gICAgUGVyaW9kID0gMHhCRSxcbiAgICBTbGFzaCA9IDB4QkYsXG4gICAgQmFja3F1b3RlID0gMHhDMCxcbiAgICBCcmFja2V0TGVmdCA9IDB4REIsXG4gICAgQmFja3NsYXNoID0gMHhEQyxcbiAgICBCcmFja2V0UmlnaHQgPSAweERELFxuICAgIFF1b3RlID0gMHhERSxcbn1cblxuaW50ZXJmYWNlIEtleUV2ZW50UGFyYW1ldGVycyB7XG4gICAga2V5OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBLZXlHdWFyZCBpbXBsZW1lbnRzIEd1YXJkIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBrZXk6IEtleUNvZGUpIHt9XG5cbiAgICBwdWJsaWMgY2FuQWN0aXZhdGUoXG4gICAgICAgIGNvbnRleHQ6IEV4ZWN1dGlvbkNvbnRleHQ8TWFuZ29SZXF1ZXN0PEtleUV2ZW50UGFyYW1ldGVycz4sIE1hbmdvUmVzcG9uc2U+LFxuICAgICkge1xuICAgICAgICBjb25zdCBldmVudEtleSA9IGNvbnRleHQucmVxdWVzdC5ib2R5LmtleTtcbiAgICAgICAgcmV0dXJuIGV2ZW50S2V5ID09PSB0aGlzLmtleTtcbiAgICB9XG59XG5cbi8vIFN0b3JhZ2UgZm9yIGtleSBiaW5kaW5ncyB0byBhbGxvdyB1bmJpbmRpbmdcbnR5cGUgS2V5SGFuZGxlciA9ICgpID0+IHZvaWQ7XG5jb25zdCBrZXlCaW5kaW5ncyA9IG5ldyBNYXA8c3RyaW5nLCBLZXlIYW5kbGVyPigpO1xuXG4vKipcbiAqIERlY29yYXRvciB0aGF0IGJpbmRzIGEgbWV0aG9kIHRvIGJlIGNhbGxlZCB3aGVuIGEga2V5IGlzIHJlbGVhc2VkIChrZXl1cCkuXG4gKiBVc2VzIG1wLmtleXMuYmluZCBpbnRlcm5hbGx5IHdpdGgga2V5ZG93bj1mYWxzZS5cbiAqXG4gKiBAcGFyYW0ga2V5IC0gVGhlIGtleSBjb2RlIHRvIGJpbmQgdG9cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAT25LZXlVcChLZXlDb2RlLkYyKVxuICogb25GMlJlbGVhc2VkKCkge1xuICogICAgIG1wLmd1aS5jaGF0LnB1c2goXCJGMiB3YXMgcmVsZWFzZWRcIik7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE9uS2V5VXAoa2V5OiBLZXlDb2RlKTogTWV0aG9kRGVjb3JhdG9yIHtcbiAgICByZXR1cm4gKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nIHwgc3ltYm9sLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgICAgICBjb25zdCBiaW5kaW5nS2V5ID0gYCR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9XyR7U3RyaW5nKHByb3BlcnR5S2V5KX1fa2V5dXBfJHtrZXl9YDtcblxuICAgICAgICAvLyBTdG9yZSBvcmlnaW5hbCBtZXRob2QgZm9yIGxhdGVyIGJpbmRpbmdcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnbWFuZ286a2V5dXAnLCB7IGtleSwgYmluZGluZ0tleSB9LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcblxuICAgICAgICAvLyBUaGUgYWN0dWFsIGJpbmRpbmcgaGFwcGVucyB3aGVuIHRoZSBjb250cm9sbGVyIGlzIGluaXRpYWxpemVkXG4gICAgICAgIGNvbnN0IGhhbmRsZXI6IEtleUhhbmRsZXIgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGtleUJpbmRpbmdzLnNldChiaW5kaW5nS2V5LCBoYW5kbGVyKTtcblxuICAgICAgICAvLyBCaW5kIHRoZSBrZXkgb24gc2NyaXB0IGxvYWRcbiAgICAgICAgaWYgKHR5cGVvZiBtcCAhPT0gJ3VuZGVmaW5lZCcgJiYgbXAua2V5cykge1xuICAgICAgICAgICAgbXAua2V5cy5iaW5kKGtleSwgZmFsc2UsIGhhbmRsZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfTtcbn1cblxuLyoqXG4gKiBEZWNvcmF0b3IgdGhhdCBiaW5kcyBhIG1ldGhvZCB0byBiZSBjYWxsZWQgb25jZSB3aGVuIGEga2V5IGlzIHJlbGVhc2VkLCB0aGVuIHVuYmluZHMuXG4gKlxuICogQHBhcmFtIGtleSAtIFRoZSBrZXkgY29kZSB0byBiaW5kIHRvXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogQE9uY2VLZXlVcChLZXlDb2RlLkYzKVxuICogb25GM1JlbGVhc2VkT25jZSgpIHtcbiAqICAgICBtcC5ndWkuY2hhdC5wdXNoKFwiRjMgd2FzIHJlbGVhc2VkIChvbmx5IGZpcmVzIG9uY2UpXCIpO1xuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBPbmNlS2V5VXAoa2V5OiBLZXlDb2RlKTogTWV0aG9kRGVjb3JhdG9yIHtcbiAgICByZXR1cm4gKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nIHwgc3ltYm9sLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgICAgICBjb25zdCBiaW5kaW5nS2V5ID0gYCR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9XyR7U3RyaW5nKHByb3BlcnR5S2V5KX1fb25jZWtleXVwXyR7a2V5fWA7XG5cbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnbWFuZ286b25jZWtleXVwJywgeyBrZXksIGJpbmRpbmdLZXkgfSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG5cbiAgICAgICAgY29uc3QgaGFuZGxlcjogS2V5SGFuZGxlciA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgICAgICAgLy8gVW5iaW5kIGFmdGVyIGZpcnN0IGNhbGxcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbXAgIT09ICd1bmRlZmluZWQnICYmIG1wLmtleXMpIHtcbiAgICAgICAgICAgICAgICBtcC5rZXlzLnVuYmluZChrZXksIGZhbHNlLCBoYW5kbGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGtleUJpbmRpbmdzLmRlbGV0ZShiaW5kaW5nS2V5KTtcbiAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGtleUJpbmRpbmdzLnNldChiaW5kaW5nS2V5LCBoYW5kbGVyKTtcblxuICAgICAgICBpZiAodHlwZW9mIG1wICE9PSAndW5kZWZpbmVkJyAmJiBtcC5rZXlzKSB7XG4gICAgICAgICAgICBtcC5rZXlzLmJpbmQoa2V5LCBmYWxzZSwgaGFuZGxlcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9O1xufVxuXG4vKipcbiAqIERlY29yYXRvciB0aGF0IGJpbmRzIGEgbWV0aG9kIHRvIGJlIGNhbGxlZCB3aGVuIGEga2V5IGlzIHByZXNzZWQgZG93biAoa2V5ZG93bikuXG4gKiBVc2VzIG1wLmtleXMuYmluZCBpbnRlcm5hbGx5IHdpdGgga2V5ZG93bj10cnVlLlxuICpcbiAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IGNvZGUgdG8gYmluZCB0b1xuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBPbktleURvd24oS2V5Q29kZS5GMilcbiAqIG9uRjJQcmVzc2VkKCkge1xuICogICAgIG1wLmd1aS5jaGF0LnB1c2goXCJGMiB3YXMgcHJlc3NlZFwiKTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gT25LZXlEb3duKGtleTogS2V5Q29kZSk6IE1ldGhvZERlY29yYXRvciB7XG4gICAgcmV0dXJuICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZyB8IHN5bWJvbCwgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSA9PiB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gZGVzY3JpcHRvci52YWx1ZTtcbiAgICAgICAgY29uc3QgYmluZGluZ0tleSA9IGAke3RhcmdldC5jb25zdHJ1Y3Rvci5uYW1lfV8ke1N0cmluZyhwcm9wZXJ0eUtleSl9X2tleWRvd25fJHtrZXl9YDtcblxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdtYW5nbzprZXlkb3duJywgeyBrZXksIGJpbmRpbmdLZXkgfSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG5cbiAgICAgICAgY29uc3QgaGFuZGxlcjogS2V5SGFuZGxlciA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG5cbiAgICAgICAga2V5QmluZGluZ3Muc2V0KGJpbmRpbmdLZXksIGhhbmRsZXIpO1xuXG4gICAgICAgIGlmICh0eXBlb2YgbXAgIT09ICd1bmRlZmluZWQnICYmIG1wLmtleXMpIHtcbiAgICAgICAgICAgIG1wLmtleXMuYmluZChrZXksIHRydWUsIGhhbmRsZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfTtcbn1cblxuLyoqXG4gKiBEZWNvcmF0b3IgdGhhdCBiaW5kcyBhIG1ldGhvZCB0byBiZSBjYWxsZWQgb25jZSB3aGVuIGEga2V5IGlzIHByZXNzZWQsIHRoZW4gdW5iaW5kcy5cbiAqXG4gKiBAcGFyYW0ga2V5IC0gVGhlIGtleSBjb2RlIHRvIGJpbmQgdG9cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAT25jZUtleURvd24oS2V5Q29kZS5GNClcbiAqIG9uRjRQcmVzc2VkT25jZSgpIHtcbiAqICAgICBtcC5ndWkuY2hhdC5wdXNoKFwiRjQgd2FzIHByZXNzZWQgKG9ubHkgZmlyZXMgb25jZSlcIik7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE9uY2VLZXlEb3duKGtleTogS2V5Q29kZSk6IE1ldGhvZERlY29yYXRvciB7XG4gICAgcmV0dXJuICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZyB8IHN5bWJvbCwgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSA9PiB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gZGVzY3JpcHRvci52YWx1ZTtcbiAgICAgICAgY29uc3QgYmluZGluZ0tleSA9IGAke3RhcmdldC5jb25zdHJ1Y3Rvci5uYW1lfV8ke1N0cmluZyhwcm9wZXJ0eUtleSl9X29uY2VrZXlkb3duXyR7a2V5fWA7XG5cbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnbWFuZ286b25jZWtleWRvd24nLCB7IGtleSwgYmluZGluZ0tleSB9LCB0YXJnZXQsIHByb3BlcnR5S2V5KTtcblxuICAgICAgICBjb25zdCBoYW5kbGVyOiBLZXlIYW5kbGVyID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICAgICAgICAvLyBVbmJpbmQgYWZ0ZXIgZmlyc3QgY2FsbFxuICAgICAgICAgICAgaWYgKHR5cGVvZiBtcCAhPT0gJ3VuZGVmaW5lZCcgJiYgbXAua2V5cykge1xuICAgICAgICAgICAgICAgIG1wLmtleXMudW5iaW5kKGtleSwgdHJ1ZSwgaGFuZGxlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBrZXlCaW5kaW5ncy5kZWxldGUoYmluZGluZ0tleSk7XG4gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfTtcblxuICAgICAgICBrZXlCaW5kaW5ncy5zZXQoYmluZGluZ0tleSwgaGFuZGxlcik7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBtcCAhPT0gJ3VuZGVmaW5lZCcgJiYgbXAua2V5cykge1xuICAgICAgICAgICAgbXAua2V5cy5iaW5kKGtleSwgdHJ1ZSwgaGFuZGxlcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9O1xufVxuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gdG8gY2hlY2sgaWYgYSBrZXkgaXMgY3VycmVudGx5IHByZXNzZWQgZG93bi5cbiAqIFdyYXBzIG1wLmtleXMuaXNEb3duLlxuICpcbiAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IGNvZGUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGtleSBpcyBwcmVzc2VkLCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzS2V5RG93bihrZXk6IEtleUNvZGUpOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIG1wICE9PSAndW5kZWZpbmVkJyAmJiBtcC5rZXlzKSB7XG4gICAgICAgIHJldHVybiBtcC5rZXlzLmlzRG93bihrZXkpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiB0byBjaGVjayBpZiBhIGtleSBpcyBjdXJyZW50bHkgcmVsZWFzZWQuXG4gKiBXcmFwcyBtcC5rZXlzLmlzVXAuXG4gKlxuICogQHBhcmFtIGtleSAtIFRoZSBrZXkgY29kZSB0byBjaGVja1xuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUga2V5IGlzIHJlbGVhc2VkLCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzS2V5VXAoa2V5OiBLZXlDb2RlKTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiBtcCAhPT0gJ3VuZGVmaW5lZCcgJiYgbXAua2V5cykge1xuICAgICAgICByZXR1cm4gbXAua2V5cy5pc1VwKGtleSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIE1hbnVhbGx5IGJpbmQgYSBrZXkgaGFuZGxlci5cbiAqXG4gKiBAcGFyYW0ga2V5IC0gVGhlIGtleSBjb2RlIHRvIGJpbmRcbiAqIEBwYXJhbSBrZXlkb3duIC0gdHJ1ZSBmb3Iga2V5ZG93biwgZmFsc2UgZm9yIGtleXVwXG4gKiBAcGFyYW0gaGFuZGxlciAtIFRoZSBmdW5jdGlvbiB0byBjYWxsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaW5kS2V5KGtleTogS2V5Q29kZSwga2V5ZG93bjogYm9vbGVhbiwgaGFuZGxlcjogS2V5SGFuZGxlcik6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgbXAgIT09ICd1bmRlZmluZWQnICYmIG1wLmtleXMpIHtcbiAgICAgICAgbXAua2V5cy5iaW5kKGtleSwga2V5ZG93biwgaGFuZGxlcik7XG4gICAgfVxufVxuXG4vKipcbiAqIE1hbnVhbGx5IHVuYmluZCBhIGtleSBoYW5kbGVyLlxuICpcbiAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IGNvZGUgdG8gdW5iaW5kXG4gKiBAcGFyYW0ga2V5ZG93biAtIHRydWUgZm9yIGtleWRvd24sIGZhbHNlIGZvciBrZXl1cFxuICogQHBhcmFtIGhhbmRsZXIgLSBPcHRpb25hbCBzcGVjaWZpYyBoYW5kbGVyIHRvIHVuYmluZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5iaW5kS2V5KGtleTogS2V5Q29kZSwga2V5ZG93bjogYm9vbGVhbiwgaGFuZGxlcj86IEtleUhhbmRsZXIpOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIG1wICE9PSAndW5kZWZpbmVkJyAmJiBtcC5rZXlzKSB7XG4gICAgICAgIGlmIChoYW5kbGVyKSB7XG4gICAgICAgICAgICBtcC5rZXlzLnVuYmluZChrZXksIGtleWRvd24sIGhhbmRsZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbXAua2V5cy51bmJpbmQoa2V5LCBrZXlkb3duKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBVbmJpbmQgYWxsIGtleSBiaW5kaW5ncyBjcmVhdGVkIGJ5IGRlY29yYXRvcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmJpbmRBbGxLZXlzKCk6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgbXAgIT09ICd1bmRlZmluZWQnICYmIG1wLmtleXMpIHtcbiAgICAgICAga2V5QmluZGluZ3MuZm9yRWFjaCgoaGFuZGxlciwgYmluZGluZ0tleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFydHMgPSBiaW5kaW5nS2V5LnNwbGl0KCdfJyk7XG4gICAgICAgICAgICBjb25zdCBrZXlTdHIgPSBwYXJ0cy5wb3AoKTtcbiAgICAgICAgICAgIGlmICgha2V5U3RyKSByZXR1cm47XG4gICAgICAgICAgICBjb25zdCBpc0tleWRvd24gPSBiaW5kaW5nS2V5LmluY2x1ZGVzKCdrZXlkb3duJyk7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBwYXJzZUludChrZXlTdHIsIDEwKTtcbiAgICAgICAgICAgIG1wLmtleXMudW5iaW5kKGtleSwgaXNLZXlkb3duLCBoYW5kbGVyKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGtleUJpbmRpbmdzLmNsZWFyKCk7XG4gICAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7OztBQVNPLElBQUtBLFVBQUFBLDBCQUFBQSxVQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQUFBQTs7QUF1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Q1RJLFNBQUdDLEtBQUtHLE9BQU8zQixLQUFLb0MsU0FBU2pCLE9BQUFBO0lBQ2pDLE9BQU87QUFDSEksU0FBR0MsS0FBS0csT0FBTzNCLEtBQUtvQyxPQUFBQTtJQUN4QjtFQUNKO0FBQ0o7QUFSZ0JDO0FBYVQsU0FBU0MsZ0JBQUFBO0FBQ1osTUFBSSxPQUFPZixPQUFPLGVBQWVBLEdBQUdDLE1BQU07QUFDdENsQixnQkFBWWlDLFFBQVEsQ0FBQ3BCLFNBQVNMLGVBQUFBO0FBQzFCLFlBQU0wQixRQUFRMUIsV0FBVzJCLE1BQU0sR0FBQTtBQUMvQixZQUFNQyxTQUFTRixNQUFNRyxJQUFHO0FBQ3hCLFVBQUksQ0FBQ0QsT0FBUTtBQUNiLFlBQU1FLFlBQVk5QixXQUFXK0IsU0FBUyxTQUFBO0FBQ3RDLFlBQU03QyxNQUFNOEMsU0FBU0osUUFBUSxFQUFBO0FBQzdCbkIsU0FBR0MsS0FBS0csT0FBTzNCLEtBQUs0QyxXQUFXekIsT0FBQUE7SUFDbkMsQ0FBQTtBQUNBYixnQkFBWXlDLE1BQUs7RUFDckI7QUFDSjtBQVpnQlQ7IiwKICAibmFtZXMiOiBbIktleUNvZGUiLCAiS2V5R3VhcmQiLCAia2V5IiwgImNhbkFjdGl2YXRlIiwgImNvbnRleHQiLCAiZXZlbnRLZXkiLCAicmVxdWVzdCIsICJib2R5IiwgImtleUJpbmRpbmdzIiwgIk1hcCIsICJPbktleVVwIiwgInRhcmdldCIsICJwcm9wZXJ0eUtleSIsICJkZXNjcmlwdG9yIiwgIm9yaWdpbmFsTWV0aG9kIiwgInZhbHVlIiwgImJpbmRpbmdLZXkiLCAibmFtZSIsICJTdHJpbmciLCAiUmVmbGVjdCIsICJkZWZpbmVNZXRhZGF0YSIsICJoYW5kbGVyIiwgImFwcGx5IiwgImFyZ3VtZW50cyIsICJzZXQiLCAibXAiLCAia2V5cyIsICJiaW5kIiwgIk9uY2VLZXlVcCIsICJ1bmJpbmQiLCAiZGVsZXRlIiwgIk9uS2V5RG93biIsICJPbmNlS2V5RG93biIsICJpc0tleURvd24iLCAiaXNEb3duIiwgImlzS2V5VXAiLCAiaXNVcCIsICJiaW5kS2V5IiwgImtleWRvd24iLCAidW5iaW5kS2V5IiwgInVuYmluZEFsbEtleXMiLCAiZm9yRWFjaCIsICJwYXJ0cyIsICJzcGxpdCIsICJrZXlTdHIiLCAicG9wIiwgImlzS2V5ZG93biIsICJpbmNsdWRlcyIsICJwYXJzZUludCIsICJjbGVhciJdCn0K
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ragemp-mango/client",
|
|
3
|
+
"version": "2.0.6-beta.0",
|
|
4
|
+
"homepage": "https://github.com/kkwlkk/ragemp-mango",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/kkwlkk/ragemp-mango",
|
|
8
|
+
"directory": "packages/client"
|
|
9
|
+
},
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"author": "5exyGuy (Aurėjus Remeika), wlk (https://github.com/kkwlkk)",
|
|
12
|
+
"description": "Client-side package for the RageMP Mango Framework - a decorator-driven TypeScript framework for RageMP servers.",
|
|
13
|
+
"type": "module",
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"default": "./dist/index.js"
|
|
18
|
+
},
|
|
19
|
+
"./utils": {
|
|
20
|
+
"types": "./dist/utils/index.d.ts",
|
|
21
|
+
"default": "./dist/utils/index.js"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"main": "dist/index.js",
|
|
25
|
+
"types": "dist/index.d.ts",
|
|
26
|
+
"files": [
|
|
27
|
+
"dist"
|
|
28
|
+
],
|
|
29
|
+
"dependencies": {},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@abraham/reflection": "^0.12.0",
|
|
32
|
+
"@rollup/plugin-commonjs": "^25.0.7",
|
|
33
|
+
"@rollup/plugin-node-resolve": "^15.2.3",
|
|
34
|
+
"@types/node": "^20.12.11",
|
|
35
|
+
"esbuild": "^0.21.1",
|
|
36
|
+
"rollup": "^4.17.2",
|
|
37
|
+
"rollup-plugin-esbuild": "^6.1.1",
|
|
38
|
+
"tsup": "^8.0.2",
|
|
39
|
+
"typescript": "^5.4.5",
|
|
40
|
+
"@ragemp-mango/core": "^2.0.6-beta.0"
|
|
41
|
+
},
|
|
42
|
+
"peerDependencies": {
|
|
43
|
+
"@ragempcommunity/types-client": "^2.1.8",
|
|
44
|
+
"inversify": "^6.0.2",
|
|
45
|
+
"@ragemp-mango/core": "^2.0.6-beta.0"
|
|
46
|
+
},
|
|
47
|
+
"publishConfig": {
|
|
48
|
+
"access": "public",
|
|
49
|
+
"registry": "https://registry.npmjs.org/"
|
|
50
|
+
},
|
|
51
|
+
"scripts": {
|
|
52
|
+
"build": "tsup",
|
|
53
|
+
"dev": "tsup --watch",
|
|
54
|
+
"typecheck": "tsc --noEmit",
|
|
55
|
+
"types": "tsup --dts-only"
|
|
56
|
+
}
|
|
57
|
+
}
|