meocord 2.1.0 → 2.1.1

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.
@@ -152,23 +152,16 @@ function isValueProvider(p) {
152
152
  * fn(2) // → 99
153
153
  * fn.mock.calls // → [[2], [2]]
154
154
  */ function createMockFn(impl) {
155
+ // One persistent implementation and one queue of single-use ones, which is how
156
+ // jest and vitest model this. mockReturnValue, mockResolvedValue,
157
+ // mockRejectedValue and mockImplementation all write the same slot, so the last
158
+ // call wins; the four `*Once` variants all push onto the same queue, so they are
159
+ // consumed in the order they were declared regardless of which kind they are.
160
+ // Keeping a slot per kind instead gave a fixed precedence, where a stored
161
+ // resolved value beat a later mockRejectedValue and the override was silently
162
+ // dropped.
155
163
  let currentImpl = impl;
156
- let returnOnce = [];
157
- let returnValue = {
158
- set: false,
159
- value: undefined
160
- };
161
- let resolvedOnce = [];
162
- let resolvedValue = {
163
- set: false,
164
- value: undefined
165
- };
166
- let rejectedOnce = [];
167
- let rejectedValue = {
168
- set: false,
169
- value: undefined
170
- };
171
- const implOnce = [];
164
+ let onceQueue = [];
172
165
  let name = 'vi.fn';
173
166
  const calls = [];
174
167
  const results = [];
@@ -179,20 +172,8 @@ function isValueProvider(p) {
179
172
  let type = 'return';
180
173
  let value;
181
174
  try {
182
- if (implOnce.length > 0) {
183
- value = implOnce.shift().apply(this, args);
184
- } else if (returnOnce.length > 0) {
185
- value = returnOnce.shift();
186
- } else if (returnValue.set) {
187
- value = returnValue.value;
188
- } else if (resolvedOnce.length > 0) {
189
- value = Promise.resolve(resolvedOnce.shift());
190
- } else if (resolvedValue.set) {
191
- value = Promise.resolve(resolvedValue.value);
192
- } else if (rejectedOnce.length > 0) {
193
- value = Promise.reject(rejectedOnce.shift());
194
- } else if (rejectedValue.set) {
195
- value = Promise.reject(rejectedValue.value);
175
+ if (onceQueue.length > 0) {
176
+ value = onceQueue.shift().apply(this, args);
196
177
  } else if (currentImpl !== undefined) {
197
178
  value = currentImpl.apply(this, args);
198
179
  } else {
@@ -234,36 +215,27 @@ function isValueProvider(p) {
234
215
  enumerable: false
235
216
  });
236
217
  mockFn.mockReturnValue = (v)=>{
237
- returnValue = {
238
- set: true,
239
- value: v
240
- };
218
+ currentImpl = ()=>v;
241
219
  return mockFn;
242
220
  };
243
221
  mockFn.mockReturnValueOnce = (v)=>{
244
- returnOnce.push(v);
222
+ onceQueue.push(()=>v);
245
223
  return mockFn;
246
224
  };
247
225
  mockFn.mockResolvedValue = (v)=>{
248
- resolvedValue = {
249
- set: true,
250
- value: v
251
- };
226
+ currentImpl = ()=>Promise.resolve(v);
252
227
  return mockFn;
253
228
  };
254
229
  mockFn.mockResolvedValueOnce = (v)=>{
255
- resolvedOnce.push(v);
230
+ onceQueue.push(()=>Promise.resolve(v));
256
231
  return mockFn;
257
232
  };
258
233
  mockFn.mockRejectedValue = (v)=>{
259
- rejectedValue = {
260
- set: true,
261
- value: v
262
- };
234
+ currentImpl = ()=>Promise.reject(v);
263
235
  return mockFn;
264
236
  };
265
237
  mockFn.mockRejectedValueOnce = (v)=>{
266
- rejectedOnce.push(v);
238
+ onceQueue.push(()=>Promise.reject(v));
267
239
  return mockFn;
268
240
  };
269
241
  mockFn.mockImplementation = (fn)=>{
@@ -271,7 +243,7 @@ function isValueProvider(p) {
271
243
  return mockFn;
272
244
  };
273
245
  mockFn.mockImplementationOnce = (fn)=>{
274
- implOnce.push(fn);
246
+ onceQueue.push(fn);
275
247
  return mockFn;
276
248
  };
277
249
  mockFn.mockClear = ()=>{
@@ -284,22 +256,7 @@ function isValueProvider(p) {
284
256
  calls.length = 0;
285
257
  results.length = 0;
286
258
  instances.length = 0;
287
- returnOnce = [];
288
- returnValue = {
289
- set: false,
290
- value: undefined
291
- };
292
- resolvedOnce = [];
293
- resolvedValue = {
294
- set: false,
295
- value: undefined
296
- };
297
- rejectedOnce = [];
298
- rejectedValue = {
299
- set: false,
300
- value: undefined
301
- };
302
- implOnce.length = 0;
259
+ onceQueue = [];
303
260
  currentImpl = impl;
304
261
  return mockFn;
305
262
  };
@@ -30,23 +30,16 @@
30
30
  * fn(2) // → 99
31
31
  * fn.mock.calls // → [[2], [2]]
32
32
  */ function createMockFn(impl) {
33
+ // One persistent implementation and one queue of single-use ones, which is how
34
+ // jest and vitest model this. mockReturnValue, mockResolvedValue,
35
+ // mockRejectedValue and mockImplementation all write the same slot, so the last
36
+ // call wins; the four `*Once` variants all push onto the same queue, so they are
37
+ // consumed in the order they were declared regardless of which kind they are.
38
+ // Keeping a slot per kind instead gave a fixed precedence, where a stored
39
+ // resolved value beat a later mockRejectedValue and the override was silently
40
+ // dropped.
33
41
  let currentImpl = impl;
34
- let returnOnce = [];
35
- let returnValue = {
36
- set: false,
37
- value: undefined
38
- };
39
- let resolvedOnce = [];
40
- let resolvedValue = {
41
- set: false,
42
- value: undefined
43
- };
44
- let rejectedOnce = [];
45
- let rejectedValue = {
46
- set: false,
47
- value: undefined
48
- };
49
- const implOnce = [];
42
+ let onceQueue = [];
50
43
  let name = 'vi.fn';
51
44
  const calls = [];
52
45
  const results = [];
@@ -57,20 +50,8 @@
57
50
  let type = 'return';
58
51
  let value;
59
52
  try {
60
- if (implOnce.length > 0) {
61
- value = implOnce.shift().apply(this, args);
62
- } else if (returnOnce.length > 0) {
63
- value = returnOnce.shift();
64
- } else if (returnValue.set) {
65
- value = returnValue.value;
66
- } else if (resolvedOnce.length > 0) {
67
- value = Promise.resolve(resolvedOnce.shift());
68
- } else if (resolvedValue.set) {
69
- value = Promise.resolve(resolvedValue.value);
70
- } else if (rejectedOnce.length > 0) {
71
- value = Promise.reject(rejectedOnce.shift());
72
- } else if (rejectedValue.set) {
73
- value = Promise.reject(rejectedValue.value);
53
+ if (onceQueue.length > 0) {
54
+ value = onceQueue.shift().apply(this, args);
74
55
  } else if (currentImpl !== undefined) {
75
56
  value = currentImpl.apply(this, args);
76
57
  } else {
@@ -112,36 +93,27 @@
112
93
  enumerable: false
113
94
  });
114
95
  mockFn.mockReturnValue = (v)=>{
115
- returnValue = {
116
- set: true,
117
- value: v
118
- };
96
+ currentImpl = ()=>v;
119
97
  return mockFn;
120
98
  };
121
99
  mockFn.mockReturnValueOnce = (v)=>{
122
- returnOnce.push(v);
100
+ onceQueue.push(()=>v);
123
101
  return mockFn;
124
102
  };
125
103
  mockFn.mockResolvedValue = (v)=>{
126
- resolvedValue = {
127
- set: true,
128
- value: v
129
- };
104
+ currentImpl = ()=>Promise.resolve(v);
130
105
  return mockFn;
131
106
  };
132
107
  mockFn.mockResolvedValueOnce = (v)=>{
133
- resolvedOnce.push(v);
108
+ onceQueue.push(()=>Promise.resolve(v));
134
109
  return mockFn;
135
110
  };
136
111
  mockFn.mockRejectedValue = (v)=>{
137
- rejectedValue = {
138
- set: true,
139
- value: v
140
- };
112
+ currentImpl = ()=>Promise.reject(v);
141
113
  return mockFn;
142
114
  };
143
115
  mockFn.mockRejectedValueOnce = (v)=>{
144
- rejectedOnce.push(v);
116
+ onceQueue.push(()=>Promise.reject(v));
145
117
  return mockFn;
146
118
  };
147
119
  mockFn.mockImplementation = (fn)=>{
@@ -149,7 +121,7 @@
149
121
  return mockFn;
150
122
  };
151
123
  mockFn.mockImplementationOnce = (fn)=>{
152
- implOnce.push(fn);
124
+ onceQueue.push(fn);
153
125
  return mockFn;
154
126
  };
155
127
  mockFn.mockClear = ()=>{
@@ -162,22 +134,7 @@
162
134
  calls.length = 0;
163
135
  results.length = 0;
164
136
  instances.length = 0;
165
- returnOnce = [];
166
- returnValue = {
167
- set: false,
168
- value: undefined
169
- };
170
- resolvedOnce = [];
171
- resolvedValue = {
172
- set: false,
173
- value: undefined
174
- };
175
- rejectedOnce = [];
176
- rejectedValue = {
177
- set: false,
178
- value: undefined
179
- };
180
- implOnce.length = 0;
137
+ onceQueue = [];
181
138
  currentImpl = impl;
182
139
  return mockFn;
183
140
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "meocord",
3
3
  "description": "Decorator-based Discord bot framework built on discord.js. Brings NestJS-style controllers, dependency injection, guards, and testing utilities to bot development — with a full CLI and TypeScript-first design.",
4
- "version": "2.1.0",
4
+ "version": "2.1.1",
5
5
  "type": "module",
6
6
  "engines": {
7
7
  "node": ">=22"