@peter.naydenov/cuts 2.1.3 → 2.1.5
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/Changelog.md +28 -0
- package/README.md +1 -1
- package/coverage/lcov-report/index.html +29 -29
- package/coverage/lcov-report/src/findInstructions.js.html +27 -27
- package/coverage/lcov-report/src/index.html +25 -25
- package/coverage/lcov-report/src/main.js.html +129 -51
- package/coverage/lcov-report/src/methods/hide.js.html +127 -67
- package/coverage/lcov-report/src/methods/index.html +38 -38
- package/coverage/lcov-report/src/methods/jump.js.html +27 -12
- package/coverage/lcov-report/src/methods/jumpBack.js.html +10 -10
- package/coverage/lcov-report/src/methods/jumpsReset.js.html +3 -3
- package/coverage/lcov-report/src/methods/listShortcuts.js.html +5 -5
- package/coverage/lcov-report/src/methods/setScenes.js.html +16 -16
- package/coverage/lcov-report/src/methods/show.js.html +154 -76
- package/coverage/lcov-report/src/setInstruction.js.html +23 -11
- package/coverage/lcov.info +362 -314
- package/dist/cuts.cjs +1 -1
- package/dist/cuts.esm.mjs +1 -1
- package/dist/cuts.umd.js +1 -1
- package/package.json +2 -2
- package/src/main.js +28 -9
- package/src/methods/hide.js +46 -39
- package/src/methods/jump.js +7 -2
- package/src/methods/jumpBack.js +2 -2
- package/src/methods/jumpsReset.js +1 -1
- package/src/methods/setScenes.js +1 -1
- package/src/methods/show.js +23 -6
- package/src/setInstruction.js +5 -1
- package/test/02-cuts.test.js +339 -1
- package/types/main.d.ts +42 -6
- package/types/main.d.ts.map +1 -1
- package/types/methods/hide.d.ts +1 -1
- package/types/methods/hide.d.ts.map +1 -1
- package/types/methods/jump.d.ts.map +1 -1
- package/types/methods/setScenes.d.ts +2 -2
- package/types/methods/show.d.ts.map +1 -1
- package/types/setInstruction.d.ts.map +1 -1
- package/vitest.config.js +1 -1
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">97.14% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>68/70</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">95.23% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>40/42</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">77.77% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>7/
|
|
42
|
+
<span class='fraction'>7/9</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">98.41% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>62/63</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -190,7 +190,33 @@
|
|
|
190
190
|
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
191
|
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
192
|
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
-
<a name='L128'></a><a href='#L128'>128</a
|
|
193
|
+
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
+
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
+
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
+
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
+
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
+
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
+
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
+
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
+
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
+
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
+
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
+
<a name='L154'></a><a href='#L154'>154</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
194
220
|
<span class="cline-any cline-neutral"> </span>
|
|
195
221
|
<span class="cline-any cline-neutral"> </span>
|
|
196
222
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -207,62 +233,79 @@
|
|
|
207
233
|
<span class="cline-any cline-neutral"> </span>
|
|
208
234
|
<span class="cline-any cline-neutral"> </span>
|
|
209
235
|
<span class="cline-any cline-neutral"> </span>
|
|
210
|
-
<span class="cline-any cline-yes">
|
|
211
|
-
<span class="cline-any cline-yes">
|
|
212
|
-
<span class="cline-any cline-yes">
|
|
213
|
-
<span class="cline-any cline-yes">
|
|
214
|
-
<span class="cline-any cline-yes">
|
|
236
|
+
<span class="cline-any cline-yes">61x</span>
|
|
237
|
+
<span class="cline-any cline-yes">61x</span>
|
|
238
|
+
<span class="cline-any cline-yes">61x</span>
|
|
239
|
+
<span class="cline-any cline-yes">61x</span>
|
|
240
|
+
<span class="cline-any cline-yes">61x</span>
|
|
215
241
|
<span class="cline-any cline-neutral"> </span>
|
|
216
242
|
<span class="cline-any cline-neutral"> </span>
|
|
217
|
-
<span class="cline-any cline-yes">
|
|
218
|
-
<span class="cline-any cline-yes">
|
|
243
|
+
<span class="cline-any cline-yes">61x</span>
|
|
244
|
+
<span class="cline-any cline-yes">5x</span>
|
|
245
|
+
<span class="cline-any cline-yes">5x</span>
|
|
246
|
+
<span class="cline-any cline-yes">5x</span>
|
|
219
247
|
<span class="cline-any cline-neutral"> </span>
|
|
220
248
|
<span class="cline-any cline-neutral"> </span>
|
|
221
|
-
<span class="cline-any cline-yes">
|
|
249
|
+
<span class="cline-any cline-yes">5x</span>
|
|
250
|
+
<span class="cline-any cline-yes">2x</span>
|
|
222
251
|
<span class="cline-any cline-neutral"> </span>
|
|
223
|
-
<span class="cline-any cline-yes">21x</span>
|
|
224
252
|
<span class="cline-any cline-neutral"> </span>
|
|
253
|
+
<span class="cline-any cline-no"> </span>
|
|
225
254
|
<span class="cline-any cline-neutral"> </span>
|
|
226
|
-
<span class="cline-any cline-yes">22x</span>
|
|
227
|
-
<span class="cline-any cline-yes">22x</span>
|
|
228
255
|
<span class="cline-any cline-neutral"> </span>
|
|
256
|
+
<span class="cline-any cline-yes">56x</span>
|
|
229
257
|
<span class="cline-any cline-neutral"> </span>
|
|
230
|
-
<span class="cline-any cline-yes">1x</span>
|
|
231
|
-
<span class="cline-any cline-yes">1x</span>
|
|
232
258
|
<span class="cline-any cline-neutral"> </span>
|
|
259
|
+
<span class="cline-any cline-yes">61x</span>
|
|
260
|
+
<span class="cline-any cline-yes">61x</span>
|
|
233
261
|
<span class="cline-any cline-neutral"> </span>
|
|
234
|
-
<span class="cline-any cline-yes">21x</span>
|
|
235
|
-
<span class="cline-any cline-yes">1x</span>
|
|
236
262
|
<span class="cline-any cline-neutral"> </span>
|
|
263
|
+
<span class="cline-any cline-yes">3x</span>
|
|
264
|
+
<span class="cline-any cline-yes">3x</span>
|
|
237
265
|
<span class="cline-any cline-neutral"> </span>
|
|
238
266
|
<span class="cline-any cline-neutral"> </span>
|
|
267
|
+
<span class="cline-any cline-yes">58x</span>
|
|
268
|
+
<span class="cline-any cline-yes">3x</span>
|
|
239
269
|
<span class="cline-any cline-neutral"> </span>
|
|
240
|
-
<span class="cline-any cline-yes">1x</span>
|
|
241
|
-
<span class="cline-any cline-yes">1x</span>
|
|
242
270
|
<span class="cline-any cline-neutral"> </span>
|
|
243
271
|
<span class="cline-any cline-neutral"> </span>
|
|
244
|
-
<span class="cline-any cline-yes">20x</span>
|
|
245
272
|
<span class="cline-any cline-neutral"> </span>
|
|
246
|
-
<span class="cline-any cline-yes">
|
|
247
|
-
<span class="cline-any cline-yes">
|
|
248
|
-
<span class="cline-any cline-yes">1x</span>
|
|
249
|
-
<span class="cline-any cline-yes">1x</span>
|
|
250
|
-
<span class="cline-any cline-yes">1x</span>
|
|
273
|
+
<span class="cline-any cline-yes">3x</span>
|
|
274
|
+
<span class="cline-any cline-yes">3x</span>
|
|
251
275
|
<span class="cline-any cline-neutral"> </span>
|
|
252
276
|
<span class="cline-any cline-neutral"> </span>
|
|
253
|
-
<span class="cline-any cline-yes">
|
|
277
|
+
<span class="cline-any cline-yes">55x</span>
|
|
278
|
+
<span class="cline-any cline-neutral"> </span>
|
|
279
|
+
<span class="cline-any cline-yes">2x</span>
|
|
280
|
+
<span class="cline-any cline-yes">2x</span>
|
|
281
|
+
<span class="cline-any cline-neutral"> </span>
|
|
282
|
+
<span class="cline-any cline-neutral"> </span>
|
|
283
|
+
<span class="cline-any cline-yes">2x</span>
|
|
284
|
+
<span class="cline-any cline-yes">2x</span>
|
|
285
|
+
<span class="cline-any cline-yes">2x</span>
|
|
286
|
+
<span class="cline-any cline-yes">2x</span>
|
|
287
|
+
<span class="cline-any cline-neutral"> </span>
|
|
288
|
+
<span class="cline-any cline-neutral"> </span>
|
|
289
|
+
<span class="cline-any cline-yes">53x</span>
|
|
290
|
+
<span class="cline-any cline-neutral"> </span>
|
|
291
|
+
<span class="cline-any cline-yes">53x</span>
|
|
292
|
+
<span class="cline-any cline-neutral"> </span>
|
|
293
|
+
<span class="cline-any cline-yes">53x</span>
|
|
294
|
+
<span class="cline-any cline-yes">9x</span>
|
|
295
|
+
<span class="cline-any cline-yes">9x</span>
|
|
254
296
|
<span class="cline-any cline-neutral"> </span>
|
|
255
|
-
<span class="cline-any cline-yes">19x</span>
|
|
256
|
-
<span class="cline-any cline-yes">1x</span>
|
|
257
|
-
<span class="cline-any cline-yes">1x</span>
|
|
258
|
-
<span class="cline-any cline-yes">1x</span>
|
|
259
|
-
<span class="cline-any cline-yes">1x</span>
|
|
260
|
-
<span class="cline-any cline-yes">1x</span>
|
|
261
297
|
<span class="cline-any cline-neutral"> </span>
|
|
262
298
|
<span class="cline-any cline-neutral"> </span>
|
|
263
|
-
<span class="cline-any cline-yes">18x</span>
|
|
264
299
|
<span class="cline-any cline-neutral"> </span>
|
|
265
|
-
<span class="cline-any cline-yes">
|
|
300
|
+
<span class="cline-any cline-yes">9x</span>
|
|
301
|
+
<span class="cline-any cline-yes">9x</span>
|
|
302
|
+
<span class="cline-any cline-yes">9x</span>
|
|
303
|
+
<span class="cline-any cline-yes">9x</span>
|
|
304
|
+
<span class="cline-any cline-neutral"> </span>
|
|
305
|
+
<span class="cline-any cline-neutral"> </span>
|
|
306
|
+
<span class="cline-any cline-yes">44x</span>
|
|
307
|
+
<span class="cline-any cline-neutral"> </span>
|
|
308
|
+
<span class="cline-any cline-yes">61x</span>
|
|
266
309
|
<span class="cline-any cline-yes">1x</span>
|
|
267
310
|
<span class="cline-any cline-neutral"> </span>
|
|
268
311
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -273,43 +316,52 @@
|
|
|
273
316
|
<span class="cline-any cline-neutral"> </span>
|
|
274
317
|
<span class="cline-any cline-neutral"> </span>
|
|
275
318
|
<span class="cline-any cline-neutral"> </span>
|
|
276
|
-
<span class="cline-any cline-yes">
|
|
277
|
-
<span class="cline-any cline-yes">
|
|
278
|
-
<span class="cline-any cline-yes">
|
|
319
|
+
<span class="cline-any cline-yes">66x</span>
|
|
320
|
+
<span class="cline-any cline-yes">47x</span>
|
|
321
|
+
<span class="cline-any cline-yes">47x</span>
|
|
279
322
|
<span class="cline-any cline-neutral"> </span>
|
|
280
323
|
<span class="cline-any cline-neutral"> </span>
|
|
281
|
-
<span class="cline-any cline-yes">9x</span>
|
|
282
|
-
<span class="cline-any cline-yes">9x</span>
|
|
283
324
|
<span class="cline-any cline-neutral"> </span>
|
|
284
|
-
<span class="cline-any cline-
|
|
325
|
+
<span class="cline-any cline-neutral"> </span>
|
|
326
|
+
<span class="cline-any cline-yes">19x</span>
|
|
327
|
+
<span class="cline-any cline-neutral"> </span>
|
|
328
|
+
<span class="cline-any cline-neutral"> </span>
|
|
329
|
+
<span class="cline-any cline-neutral"> </span>
|
|
330
|
+
<span class="cline-any cline-yes">19x</span>
|
|
331
|
+
<span class="cline-any cline-neutral"> </span>
|
|
332
|
+
<span class="cline-any cline-yes">66x</span>
|
|
333
|
+
<span class="cline-any cline-neutral"> </span>
|
|
334
|
+
<span class="cline-any cline-neutral"> </span>
|
|
285
335
|
<span class="cline-any cline-neutral"> </span>
|
|
286
336
|
<span class="cline-any cline-neutral"> </span>
|
|
287
|
-
<span class="cline-any cline-yes">17x</span>
|
|
288
337
|
<span class="cline-any cline-neutral"> </span>
|
|
289
|
-
<span class="cline-any cline-yes">17x</span>
|
|
290
|
-
<span class="cline-any cline-yes">17x</span>
|
|
291
338
|
<span class="cline-any cline-neutral"> </span>
|
|
339
|
+
<span class="cline-any cline-yes">43x</span>
|
|
340
|
+
<span class="cline-any cline-yes">43x</span>
|
|
292
341
|
<span class="cline-any cline-neutral"> </span>
|
|
293
|
-
<span class="cline-any cline-yes">17x</span>
|
|
294
|
-
<span class="cline-any cline-yes">27x</span>
|
|
295
|
-
<span class="cline-any cline-yes">27x</span>
|
|
296
342
|
<span class="cline-any cline-neutral"> </span>
|
|
343
|
+
<span class="cline-any cline-yes">43x</span>
|
|
344
|
+
<span class="cline-any cline-yes">66x</span>
|
|
345
|
+
<span class="cline-any cline-yes">66x</span>
|
|
297
346
|
<span class="cline-any cline-neutral"> </span>
|
|
298
347
|
<span class="cline-any cline-neutral"> </span>
|
|
299
|
-
<span class="cline-any cline-yes">17x</span>
|
|
300
348
|
<span class="cline-any cline-neutral"> </span>
|
|
301
|
-
<span class="cline-any cline-yes">
|
|
302
|
-
<span class="cline-any cline-yes">17x</span>
|
|
303
|
-
<span class="cline-any cline-yes">17x</span>
|
|
304
|
-
<span class="cline-any cline-yes">17x</span>
|
|
305
|
-
<span class="cline-any cline-yes">17x</span>
|
|
306
|
-
<span class="cline-any cline-yes">17x</span>
|
|
307
|
-
<span class="cline-any cline-yes">17x</span>
|
|
349
|
+
<span class="cline-any cline-yes">43x</span>
|
|
308
350
|
<span class="cline-any cline-neutral"> </span>
|
|
351
|
+
<span class="cline-any cline-yes">43x</span>
|
|
352
|
+
<span class="cline-any cline-yes">43x</span>
|
|
353
|
+
<span class="cline-any cline-yes">43x</span>
|
|
309
354
|
<span class="cline-any cline-neutral"> </span>
|
|
310
|
-
<span class="cline-any cline-yes">22x</span>
|
|
311
355
|
<span class="cline-any cline-neutral"> </span>
|
|
312
|
-
<span class="cline-any cline-yes">
|
|
356
|
+
<span class="cline-any cline-yes">43x</span>
|
|
357
|
+
<span class="cline-any cline-yes">43x</span>
|
|
358
|
+
<span class="cline-any cline-yes">43x</span>
|
|
359
|
+
<span class="cline-any cline-yes">43x</span>
|
|
360
|
+
<span class="cline-any cline-neutral"> </span>
|
|
361
|
+
<span class="cline-any cline-neutral"> </span>
|
|
362
|
+
<span class="cline-any cline-yes">61x</span>
|
|
363
|
+
<span class="cline-any cline-neutral"> </span>
|
|
364
|
+
<span class="cline-any cline-yes">35x</span>
|
|
313
365
|
<span class="cline-any cline-neutral"> </span>
|
|
314
366
|
<span class="cline-any cline-neutral"> </span>
|
|
315
367
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -341,11 +393,18 @@ function show ( dependencies, state ) {
|
|
|
341
393
|
, hasBeforeHide = currentScene && (typeof scenes[currentScene].beforeHide === 'function')
|
|
342
394
|
;
|
|
343
395
|
|
|
344
|
-
if ( hasBeforeHide ) { // Execute '
|
|
396
|
+
if ( hasBeforeHide ) { // Execute 'beforeHide' function if exists
|
|
345
397
|
const closingFn = scenes[currentScene].beforeHide;
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
398
|
+
try {
|
|
399
|
+
const result = closingFn ({ done:unloadTask.done, dependencies: shortcutMngr.getDependencies() });
|
|
400
|
+
// If beforeHide returns a Promise, resolve it and pass the result to unloadTask.done
|
|
401
|
+
// so async blocking logic works correctly (e.g. confirm dialog → done(false)).
|
|
402
|
+
if ( result != null && typeof result.then === 'function' ) {
|
|
403
|
+
result.then ( unloadTask.done ).catch ( <span class="fstat-no" title="function not covered" >()</span> => <span class="cstat-no" title="statement not covered" >unloadTask.done ( false ) </span>);
|
|
404
|
+
}
|
|
405
|
+
} catch ( err ) {
|
|
406
|
+
<span class="cstat-no" title="statement not covered" > unloadTask.done ( false );</span>
|
|
407
|
+
}
|
|
349
408
|
} // if currentScene
|
|
350
409
|
else unloadTask.done ( true )
|
|
351
410
|
|
|
@@ -372,18 +431,28 @@ function show ( dependencies, state ) {
|
|
|
372
431
|
// Executes only once when the scene manager is started
|
|
373
432
|
state.opened = true
|
|
374
433
|
state.currentScene = requestedScene
|
|
434
|
+
// The server-rendered scene's ancestors are assumed already rendered too -
|
|
435
|
+
// record them, or navigating away later won't know to hide them.
|
|
436
|
+
state.currentParents = scenes[requestedScene].parents ? [ ...scenes[requestedScene].parents ] : <span class="branch-1 cbranch-no" title="branch not covered" >[]</span>
|
|
375
437
|
shortcutMngr.changeContext ( requestedScene )
|
|
376
438
|
showTask.done ()
|
|
377
439
|
return showTask.promise
|
|
378
440
|
}
|
|
379
441
|
|
|
380
442
|
const { show, parents=[] } = scenes[requestedScene];
|
|
381
|
-
|
|
443
|
+
|
|
444
|
+
if ( !state.currentParents ) state.currentParents = []
|
|
445
|
+
|
|
382
446
|
if ( parents[0] === '*' ) {
|
|
383
447
|
const overlayTask = setInstruction(show, ...args)()
|
|
384
448
|
overlayTask.then ( () => showTask.done () )
|
|
385
|
-
|
|
449
|
+
// Only remember a real underlying scene - pushing 'null' as a placeholder
|
|
450
|
+
// makes later navigation treat it as a scene name to hide, and crash.
|
|
451
|
+
// Re-showing the SAME overlay that's already current must not push it onto
|
|
452
|
+
// its own ancestor chain either, or hide() later climbs back onto itself.
|
|
453
|
+
if ( state.currentScene && state.currentScene !== requestedScene ) state.currentParents.push ( state.currentScene )
|
|
386
454
|
state.currentScene = requestedScene
|
|
455
|
+
shortcutMngr.changeContext ( requestedScene ) // Activate the overlay scene's own shortcuts
|
|
387
456
|
return showTask.promise
|
|
388
457
|
}
|
|
389
458
|
|
|
@@ -405,15 +474,22 @@ function show ( dependencies, state ) {
|
|
|
405
474
|
state.currentScene = name
|
|
406
475
|
}
|
|
407
476
|
else {
|
|
408
|
-
|
|
477
|
+
// Wildcard overlays aren't climbing their own declared parents ('*' isn't a
|
|
478
|
+
// real scene) - they climb back to whatever scene they were shown on top of.
|
|
479
|
+
let el = ( scenes[name].parents[0] === '*' )
|
|
480
|
+
? state.currentParents.pop ()
|
|
481
|
+
: scenes[name].parents.at ( -1 )
|
|
482
|
+
;
|
|
409
483
|
state.currentScene = el
|
|
410
484
|
}
|
|
411
485
|
return scenes[name][action]
|
|
412
486
|
} // getStep func.
|
|
413
487
|
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
488
|
+
const
|
|
489
|
+
// Snapshot - findInstructions is a lazy generator, and getStep (in the loop below)
|
|
490
|
+
// mutates state.currentParents in place; without a copy, that mutation corrupts
|
|
491
|
+
// the generator's still-pending reads of the very array it was given.
|
|
492
|
+
g = findInstructions ( state.currentScene, [ ...state.currentParents ], requestedScene, parents )
|
|
417
493
|
, instructions = []
|
|
418
494
|
;
|
|
419
495
|
|
|
@@ -428,9 +504,11 @@ function show ( dependencies, state ) {
|
|
|
428
504
|
goingTask.onComplete ( () => {
|
|
429
505
|
state.opened = true
|
|
430
506
|
state.currentScene = requestedScene
|
|
431
|
-
|
|
507
|
+
// Copy - never alias state.currentParents to a scene's own 'parents' array,
|
|
508
|
+
// or later mutations (eg. the wildcard-overlay push above) corrupt the scene definition.
|
|
509
|
+
state.currentParents = scenes[requestedScene].parents ? [...scenes[requestedScene].parents] : <span class="branch-1 cbranch-no" title="branch not covered" >null</span>
|
|
432
510
|
shortcutMngr.changeContext ( requestedScene )
|
|
433
|
-
|
|
511
|
+
if ( typeof scenes[requestedScene].afterShow === 'function' ) scenes[requestedScene].afterShow ({ dependencies: shortcutMngr.getDependencies(), done: <span class="fstat-no" title="function not covered" >()</span> => {} })
|
|
434
512
|
showTask.done ()
|
|
435
513
|
})
|
|
436
514
|
}) // unloadTask onComplete
|
|
@@ -451,7 +529,7 @@ export default show
|
|
|
451
529
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
452
530
|
Code coverage generated by
|
|
453
531
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
454
|
-
at 2026-
|
|
532
|
+
at 2026-07-09T15:42:10.120Z
|
|
455
533
|
</div>
|
|
456
534
|
<script src="../../prettify.js"></script>
|
|
457
535
|
<script>
|
|
@@ -37,9 +37,9 @@
|
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">75% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>3/
|
|
42
|
+
<span class='fraction'>3/4</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
@@ -87,22 +87,30 @@
|
|
|
87
87
|
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
88
|
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
89
|
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
-
<a name='L25'></a><a href='#L25'>25</a
|
|
90
|
+
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
+
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
+
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
+
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
+
<a name='L29'></a><a href='#L29'>29</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
95
|
+
<span class="cline-any cline-neutral"> </span>
|
|
96
|
+
<span class="cline-any cline-neutral"> </span>
|
|
97
|
+
<span class="cline-any cline-neutral"> </span>
|
|
98
|
+
<span class="cline-any cline-neutral"> </span>
|
|
91
99
|
<span class="cline-any cline-neutral"> </span>
|
|
92
100
|
<span class="cline-any cline-neutral"> </span>
|
|
93
101
|
<span class="cline-any cline-neutral"> </span>
|
|
94
102
|
<span class="cline-any cline-neutral"> </span>
|
|
95
103
|
<span class="cline-any cline-neutral"> </span>
|
|
104
|
+
<span class="cline-any cline-yes">35x</span>
|
|
105
|
+
<span class="cline-any cline-yes">84x</span>
|
|
106
|
+
<span class="cline-any cline-yes">84x</span>
|
|
107
|
+
<span class="cline-any cline-yes">84x</span>
|
|
108
|
+
<span class="cline-any cline-yes">84x</span>
|
|
96
109
|
<span class="cline-any cline-neutral"> </span>
|
|
97
110
|
<span class="cline-any cline-neutral"> </span>
|
|
98
111
|
<span class="cline-any cline-neutral"> </span>
|
|
99
112
|
<span class="cline-any cline-neutral"> </span>
|
|
100
|
-
<span class="cline-any cline-yes">
|
|
101
|
-
<span class="cline-any cline-yes">28x</span>
|
|
102
|
-
<span class="cline-any cline-yes">28x</span>
|
|
103
|
-
<span class="cline-any cline-yes">28x</span>
|
|
104
|
-
<span class="cline-any cline-yes">28x</span>
|
|
105
|
-
<span class="cline-any cline-yes">28x</span>
|
|
113
|
+
<span class="cline-any cline-yes">84x</span>
|
|
106
114
|
<span class="cline-any cline-neutral"> </span>
|
|
107
115
|
<span class="cline-any cline-neutral"> </span>
|
|
108
116
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -126,7 +134,11 @@ return function setInstruction ( fn, ...args ) {
|
|
|
126
134
|
return function applyInstruction () {
|
|
127
135
|
const task = askForPromise ();
|
|
128
136
|
fn ({ task, dependencies:deps() }, ...args )
|
|
129
|
-
|
|
137
|
+
// Swallow unhandled rejections from scene functions — the promise resolves
|
|
138
|
+
// as normal (via task.done() inside the scene), but if the scene throws or
|
|
139
|
+
// returns a rejected promise without catching, this prevents an unhandled
|
|
140
|
+
// rejection at the process level.
|
|
141
|
+
return task.promise.catch ( <span class="fstat-no" title="function not covered" >()</span> => {} )
|
|
130
142
|
} // applyInstruction func.
|
|
131
143
|
}} // setInstruction func.
|
|
132
144
|
|
|
@@ -142,7 +154,7 @@ export default setInstruction
|
|
|
142
154
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
143
155
|
Code coverage generated by
|
|
144
156
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
145
|
-
at 2026-
|
|
157
|
+
at 2026-07-09T15:42:10.120Z
|
|
146
158
|
</div>
|
|
147
159
|
<script src="../prettify.js"></script>
|
|
148
160
|
<script>
|