firefly-compiler 0.4.40 → 0.4.48

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 (109) hide show
  1. package/.hintrc +4 -4
  2. package/.vscode/settings.json +4 -4
  3. package/bin/Release.ff +136 -71
  4. package/bin/firefly.mjs +1 -1
  5. package/compiler/Builder.ff +257 -257
  6. package/compiler/Compiler.ff +227 -227
  7. package/compiler/Dependencies.ff +186 -186
  8. package/compiler/DependencyLock.ff +17 -17
  9. package/compiler/JsEmitter.ff +946 -946
  10. package/compiler/LspHook.ff +202 -202
  11. package/compiler/ModuleCache.ff +178 -178
  12. package/compiler/Workspace.ff +88 -88
  13. package/core/.firefly/include/package-lock.json +394 -394
  14. package/core/.firefly/include/package.json +5 -5
  15. package/core/.firefly/include/prepare.sh +1 -1
  16. package/core/.firefly/package.ff +2 -2
  17. package/core/Array.ff +265 -265
  18. package/core/Atomic.ff +64 -64
  19. package/core/Box.ff +7 -7
  20. package/core/BrowserSystem.ff +40 -40
  21. package/core/BuildSystem.ff +148 -148
  22. package/core/Crypto.ff +96 -102
  23. package/core/Equal.ff +36 -36
  24. package/core/HttpClient.ff +87 -87
  25. package/core/JsSystem.ff +69 -69
  26. package/core/Json.ff +434 -434
  27. package/core/List.ff +486 -415
  28. package/core/Lock.ff +144 -144
  29. package/core/NodeSystem.ff +189 -189
  30. package/core/Ordering.ff +161 -161
  31. package/core/Path.ff +401 -401
  32. package/core/Random.ff +134 -134
  33. package/core/RbMap.ff +216 -216
  34. package/core/Show.ff +43 -43
  35. package/core/SourceLocation.ff +68 -68
  36. package/core/Task.ff +141 -141
  37. package/experimental/benchmarks/ListGrab.ff +23 -23
  38. package/experimental/benchmarks/ListGrab.java +55 -55
  39. package/experimental/benchmarks/Pyrotek45.ff +30 -30
  40. package/experimental/benchmarks/Pyrotek45.java +64 -64
  41. package/experimental/bidirectional/Bidi.ff +88 -88
  42. package/experimental/random/Index.ff +53 -53
  43. package/experimental/random/Process.ff +120 -120
  44. package/experimental/random/Scrape.ff +51 -51
  45. package/experimental/random/Symbols.ff +73 -73
  46. package/experimental/random/Tensor.ff +52 -52
  47. package/experimental/random/Units.ff +36 -36
  48. package/experimental/s3/S3TestAuthorizationHeader.ff +38 -38
  49. package/experimental/s3/S3TestPut.ff +15 -15
  50. package/experimental/tests/TestJson.ff +26 -26
  51. package/firefly.sh +0 -0
  52. package/fireflysite/Main.ff +13 -13
  53. package/lsp/.firefly/package.ff +1 -1
  54. package/lsp/CompletionHandler.ff +808 -811
  55. package/lsp/Handler.ff +714 -714
  56. package/lsp/HoverHandler.ff +79 -79
  57. package/lsp/LanguageServer.ff +272 -272
  58. package/lsp/SignatureHelpHandler.ff +55 -55
  59. package/lsp/SymbolHandler.ff +181 -181
  60. package/lsp/TestReferences.ff +16 -16
  61. package/lsp/TestReferencesCase.ff +7 -7
  62. package/lsp/stderr.txt +1 -1
  63. package/lsp/stdin.txt +10 -10
  64. package/lsp/stdout.txt +40 -40
  65. package/lux/.firefly/package.ff +1 -1
  66. package/lux/Css.ff +648 -648
  67. package/lux/CssTest.ff +48 -48
  68. package/lux/Lux.ff +487 -487
  69. package/lux/LuxEvent.ff +116 -116
  70. package/lux/Main.ff +128 -128
  71. package/lux/Main2.ff +144 -144
  72. package/output/js/ff/compiler/Builder.mjs +43 -43
  73. package/output/js/ff/compiler/Dependencies.mjs +3 -3
  74. package/output/js/ff/core/Array.mjs +59 -59
  75. package/output/js/ff/core/Atomic.mjs +36 -36
  76. package/output/js/ff/core/BrowserSystem.mjs +11 -11
  77. package/output/js/ff/core/BuildSystem.mjs +30 -30
  78. package/output/js/ff/core/Crypto.mjs +58 -62
  79. package/output/js/ff/core/HttpClient.mjs +24 -24
  80. package/output/js/ff/core/Json.mjs +147 -147
  81. package/output/js/ff/core/List.mjs +196 -50
  82. package/output/js/ff/core/Lock.mjs +97 -97
  83. package/output/js/ff/core/NodeSystem.mjs +77 -77
  84. package/output/js/ff/core/Ordering.mjs +8 -8
  85. package/output/js/ff/core/Path.mjs +231 -231
  86. package/output/js/ff/core/Random.mjs +56 -56
  87. package/output/js/ff/core/Task.mjs +31 -31
  88. package/package.json +29 -29
  89. package/rpc/.firefly/package.ff +1 -1
  90. package/rpc/Rpc.ff +69 -69
  91. package/s3/.firefly/package.ff +1 -1
  92. package/s3/S3.ff +93 -93
  93. package/unsafejs/UnsafeJs.ff +19 -19
  94. package/vscode/LICENSE.txt +21 -21
  95. package/vscode/Prepublish.ff +15 -15
  96. package/vscode/README.md +16 -16
  97. package/vscode/client/package.json +22 -22
  98. package/vscode/client/src/extension.ts +104 -104
  99. package/vscode/icons/firefly-icon.svg +10 -10
  100. package/vscode/language-configuration.json +61 -61
  101. package/vscode/package-lock.json +3623 -3623
  102. package/vscode/package.json +160 -160
  103. package/vscode/snippets.json +241 -241
  104. package/webserver/.firefly/include/package-lock.json +16 -16
  105. package/webserver/.firefly/include/package.json +5 -5
  106. package/webserver/.firefly/package.ff +2 -2
  107. package/webserver/WebServer.ff +685 -685
  108. package/websocket/.firefly/package.ff +1 -1
  109. package/websocket/WebSocket.ff +131 -131
@@ -96,26 +96,26 @@ import * as ff_core_Unit from "../../ff/core/Unit.mjs"
96
96
 
97
97
 
98
98
  export function new_() {
99
-
100
- return [];
99
+
100
+ return [];
101
101
 
102
102
  }
103
103
 
104
104
  export function fill_(size_, value_) {
105
-
106
- return new Array(size_).fill(value_);
105
+
106
+ return new Array(size_).fill(value_);
107
107
 
108
108
  }
109
109
 
110
110
  export function fillBy_(size_, body_) {
111
-
112
- return Array.from({length: size_}, (_, i) => body_(i));
111
+
112
+ return Array.from({length: size_}, (_, i) => body_(i));
113
113
 
114
114
  }
115
115
 
116
116
  export function range_(size_) {
117
-
118
- return Array.from({length: size_}, (_, i) => i);
117
+
118
+ return Array.from({length: size_}, (_, i) => i);
119
119
 
120
120
  }
121
121
 
@@ -124,8 +124,8 @@ return left_ === right_
124
124
  }
125
125
 
126
126
  export function internalGrab_(self_, index_) {
127
-
128
- return index_ < 0 || index_ >= self_.length ? ff_core_Try.internalThrowGrabException_() : self_[index_];
127
+
128
+ return index_ < 0 || index_ >= self_.length ? ff_core_Try.internalThrowGrabException_() : self_[index_];
129
129
 
130
130
  }
131
131
 
@@ -138,12 +138,12 @@ throw new Error('Function fill is missing on this target in async context.');
138
138
  }
139
139
 
140
140
  export async function fillBy_$(size_, body_, $task) {
141
-
142
- const array = new Array(size_);
143
- for(let i = 0; i < size_; i++) {
144
- array[i] = await(body_(_i));
145
- }
146
- return array;
141
+
142
+ const array = new Array(size_);
143
+ for(let i = 0; i < size_; i++) {
144
+ array[i] = await(body_(_i));
145
+ }
146
+ return array;
147
147
 
148
148
  }
149
149
 
@@ -172,16 +172,16 @@ return self_.length
172
172
  }
173
173
 
174
174
  export function List_get(self_, index_) {
175
-
176
- return index_ >= 0 && index_ < self_.length
177
- ? ff_core_Option.Some(self_[index_])
178
- : ff_core_Option.None()
175
+
176
+ return index_ >= 0 && index_ < self_.length
177
+ ? ff_core_Option.Some(self_[index_])
178
+ : ff_core_Option.None()
179
179
 
180
180
  }
181
181
 
182
182
  export function List_grab(self_, index_) {
183
-
184
- return self_[index_] ?? internalGrab_(self_, index_);
183
+
184
+ return self_[index_] ?? internalGrab_(self_, index_);
185
185
 
186
186
  }
187
187
 
@@ -217,6 +217,64 @@ export function List_dropLast(self_, count_ = 1) {
217
217
  return self_.slice(0, self_.length - count_)
218
218
  }
219
219
 
220
+ export function List_count(self_, body_) {
221
+ let result_ = 0;
222
+ let i_ = 0;
223
+ while((i_ < ff_core_List.List_size(self_))) {
224
+ if(body_((self_[i_] ?? ff_core_List.internalGrab_(self_, i_)))) {
225
+ result_ += 1
226
+ };
227
+ i_ += 1
228
+ };
229
+ return result_
230
+ }
231
+
232
+ export function List_countWhile(self_, body_) {
233
+ let i_ = 0;
234
+ while(((i_ < ff_core_List.List_size(self_)) && body_((self_[i_] ?? ff_core_List.internalGrab_(self_, i_))))) {
235
+ i_ += 1
236
+ };
237
+ return i_
238
+ }
239
+
240
+ export function List_takeWhile(self_, body_) {
241
+ const result_ = ff_core_Array.new_();
242
+ let i_ = 0;
243
+ while(((i_ < ff_core_List.List_size(self_)) && body_((self_[i_] ?? ff_core_List.internalGrab_(self_, i_))))) {
244
+ ff_core_Array.Array_push(result_, (self_[i_] ?? ff_core_List.internalGrab_(self_, i_)));
245
+ i_ += 1
246
+ };
247
+ return ff_core_Array.Array_drain(result_)
248
+ }
249
+
250
+ export function List_dropWhile(self_, body_) {
251
+ const result_ = ff_core_Array.new_();
252
+ let i_ = 0;
253
+ while(((i_ < ff_core_List.List_size(self_)) && body_((self_[i_] ?? ff_core_List.internalGrab_(self_, i_))))) {
254
+ i_ += 1
255
+ };
256
+ while((i_ < ff_core_List.List_size(self_))) {
257
+ ff_core_Array.Array_push(result_, (self_[i_] ?? ff_core_List.internalGrab_(self_, i_)));
258
+ i_ += 1
259
+ };
260
+ return ff_core_Array.Array_drain(result_)
261
+ }
262
+
263
+ export function List_partitionWhile(self_, body_) {
264
+ const first_ = ff_core_Array.new_();
265
+ const second_ = ff_core_Array.new_();
266
+ let i_ = 0;
267
+ while(((i_ < ff_core_List.List_size(self_)) && body_((self_[i_] ?? ff_core_List.internalGrab_(self_, i_))))) {
268
+ ff_core_Array.Array_push(first_, (self_[i_] ?? ff_core_List.internalGrab_(self_, i_)));
269
+ i_ += 1
270
+ };
271
+ while((i_ < ff_core_List.List_size(self_))) {
272
+ ff_core_Array.Array_push(second_, (self_[i_] ?? ff_core_List.internalGrab_(self_, i_)));
273
+ i_ += 1
274
+ };
275
+ return ff_core_Pair.Pair(ff_core_Array.Array_drain(first_), ff_core_Array.Array_drain(second_))
276
+ }
277
+
220
278
  export function List_pairs(self_) {
221
279
  let i_ = 0;
222
280
  return ff_core_List.List_map(self_, ((x_) => {
@@ -245,13 +303,13 @@ return value_
245
303
  }
246
304
 
247
305
  export function List_modify(self_, index_, body_) {
248
-
249
- if(index_ < 0 || index_ >= self_.length) {
250
- ff_core_Try.internalThrowGrabException_()
251
- }
252
- let result = self_.slice();
253
- result[index_] = body_(result[index_]);
254
- return result;
306
+
307
+ if(index_ < 0 || index_ >= self_.length) {
308
+ ff_core_Try.internalThrowGrabException_()
309
+ }
310
+ let result = self_.slice();
311
+ result[index_] = body_(result[index_]);
312
+ return result;
255
313
 
256
314
  }
257
315
 
@@ -316,8 +374,8 @@ return {array: self_.slice()}
316
374
  }
317
375
 
318
376
  export function List_each(self_, body_) {
319
-
320
- return self_.forEach(body_);
377
+
378
+ return self_.forEach(body_);
321
379
 
322
380
  }
323
381
 
@@ -343,6 +401,21 @@ return (!result_)
343
401
  return result_
344
402
  }
345
403
 
404
+ export function List_indexWhere(self_, body_) {
405
+ let result_ = ff_core_Option.None();
406
+ let i_ = 0;
407
+ ff_core_List.List_eachWhile(self_, ((x_) => {
408
+ if(body_(x_)) {
409
+ result_ = ff_core_Option.Some(i_);
410
+ return false
411
+ } else {
412
+ i_ += 1;
413
+ return true
414
+ }
415
+ }));
416
+ return result_
417
+ }
418
+
346
419
  export function List_find(self_, body_) {
347
420
  let result_ = ff_core_Option.None();
348
421
  ff_core_List.List_eachWhile(self_, ((x_) => {
@@ -373,8 +446,8 @@ return (!body_(_w1))
373
446
  }
374
447
 
375
448
  export function List_map(self_, body_) {
376
-
377
- return self_.map(body_)
449
+
450
+ return self_.map(body_)
378
451
 
379
452
  }
380
453
 
@@ -500,6 +573,64 @@ export async function List_dropLast$(self_, count_ = 1, $task) {
500
573
  throw new Error('Function List_dropLast is missing on this target in async context.');
501
574
  }
502
575
 
576
+ export async function List_count$(self_, body_, $task) {
577
+ let result_ = 0;
578
+ let i_ = 0;
579
+ while((i_ < ff_core_List.List_size(self_))) {
580
+ if((await body_((self_[i_] ?? ff_core_List.internalGrab_(self_, i_)), $task))) {
581
+ result_ += 1
582
+ };
583
+ i_ += 1
584
+ };
585
+ return result_
586
+ }
587
+
588
+ export async function List_countWhile$(self_, body_, $task) {
589
+ let i_ = 0;
590
+ while(((i_ < ff_core_List.List_size(self_)) && (await body_((self_[i_] ?? ff_core_List.internalGrab_(self_, i_)), $task)))) {
591
+ i_ += 1
592
+ };
593
+ return i_
594
+ }
595
+
596
+ export async function List_takeWhile$(self_, body_, $task) {
597
+ const result_ = ff_core_Array.new_();
598
+ let i_ = 0;
599
+ while(((i_ < ff_core_List.List_size(self_)) && (await body_((self_[i_] ?? ff_core_List.internalGrab_(self_, i_)), $task)))) {
600
+ ff_core_Array.Array_push(result_, (self_[i_] ?? ff_core_List.internalGrab_(self_, i_)));
601
+ i_ += 1
602
+ };
603
+ return ff_core_Array.Array_drain(result_)
604
+ }
605
+
606
+ export async function List_dropWhile$(self_, body_, $task) {
607
+ const result_ = ff_core_Array.new_();
608
+ let i_ = 0;
609
+ while(((i_ < ff_core_List.List_size(self_)) && (await body_((self_[i_] ?? ff_core_List.internalGrab_(self_, i_)), $task)))) {
610
+ i_ += 1
611
+ };
612
+ while((i_ < ff_core_List.List_size(self_))) {
613
+ ff_core_Array.Array_push(result_, (self_[i_] ?? ff_core_List.internalGrab_(self_, i_)));
614
+ i_ += 1
615
+ };
616
+ return ff_core_Array.Array_drain(result_)
617
+ }
618
+
619
+ export async function List_partitionWhile$(self_, body_, $task) {
620
+ const first_ = ff_core_Array.new_();
621
+ const second_ = ff_core_Array.new_();
622
+ let i_ = 0;
623
+ while(((i_ < ff_core_List.List_size(self_)) && (await body_((self_[i_] ?? ff_core_List.internalGrab_(self_, i_)), $task)))) {
624
+ ff_core_Array.Array_push(first_, (self_[i_] ?? ff_core_List.internalGrab_(self_, i_)));
625
+ i_ += 1
626
+ };
627
+ while((i_ < ff_core_List.List_size(self_))) {
628
+ ff_core_Array.Array_push(second_, (self_[i_] ?? ff_core_List.internalGrab_(self_, i_)));
629
+ i_ += 1
630
+ };
631
+ return ff_core_Pair.Pair(ff_core_Array.Array_drain(first_), ff_core_Array.Array_drain(second_))
632
+ }
633
+
503
634
  export async function List_pairs$(self_, $task) {
504
635
  let i_ = 0;
505
636
  return ff_core_List.List_map(self_, ((x_) => {
@@ -528,13 +659,13 @@ return value_
528
659
  }
529
660
 
530
661
  export async function List_modify$(self_, index_, body_, $task) {
531
-
532
- if(index_ < 0 || index_ >= self_.length) {
533
- ff_core_Try.internalThrowGrabException_()
534
- }
535
- let result = self_.slice();
536
- result[index_] = await body_(result[index_], $task);
537
- return result;
662
+
663
+ if(index_ < 0 || index_ >= self_.length) {
664
+ ff_core_Try.internalThrowGrabException_()
665
+ }
666
+ let result = self_.slice();
667
+ result[index_] = await body_(result[index_], $task);
668
+ return result;
538
669
 
539
670
  }
540
671
 
@@ -599,10 +730,10 @@ throw new Error('Function List_toArray is missing on this target in async contex
599
730
  }
600
731
 
601
732
  export async function List_each$(self_, body_, $task) {
602
-
603
- for(let i = 0; i < self_.length; i++) {
604
- await body_(self_[i], $task)
605
- }
733
+
734
+ for(let i = 0; i < self_.length; i++) {
735
+ await body_(self_[i], $task)
736
+ }
606
737
 
607
738
  }
608
739
 
@@ -628,6 +759,21 @@ return (!result_)
628
759
  return result_
629
760
  }
630
761
 
762
+ export async function List_indexWhere$(self_, body_, $task) {
763
+ let result_ = ff_core_Option.None();
764
+ let i_ = 0;
765
+ (await ff_core_List.List_eachWhile$(self_, (async (x_, $task) => {
766
+ if((await body_(x_, $task))) {
767
+ result_ = ff_core_Option.Some(i_);
768
+ return false
769
+ } else {
770
+ i_ += 1;
771
+ return true
772
+ }
773
+ }), $task));
774
+ return result_
775
+ }
776
+
631
777
  export async function List_find$(self_, body_, $task) {
632
778
  let result_ = ff_core_Option.None();
633
779
  (await ff_core_List.List_eachWhile$(self_, (async (x_, $task) => {
@@ -658,12 +804,12 @@ return (!(await body_(_w1, $task)))
658
804
  }
659
805
 
660
806
  export async function List_map$(self_, body_, $task) {
661
-
662
- let result = [];
663
- for(let i = 0; i < self_.length; i++) {
664
- result.push(await body_(self_[i], $task));
665
- }
666
- return result;
807
+
808
+ let result = [];
809
+ for(let i = 0; i < self_.length; i++) {
810
+ result.push(await body_(self_[i], $task));
811
+ }
812
+ return result;
667
813
 
668
814
  }
669
815
 
@@ -124,58 +124,58 @@ ff_core_Lock.Lock_release(self_)
124
124
  }
125
125
 
126
126
  export async function Lock_condition$(self_, $task) {
127
-
128
- return {lock: self_, stack: [], queue: []}
127
+
128
+ return {lock: self_, stack: [], queue: []}
129
129
 
130
130
  }
131
131
 
132
132
  export async function Lock_acquire$(self_, reentrant_, $task) {
133
-
134
- if(self_.level === 0) {
135
- self_.owner = $task
136
- self_.level += 1
137
- } else {
138
- if(self_.owner !== $task || !reentrant_) {
139
- try {
140
- await new Promise((resolve, reject) => {
141
- $task.controller.signal.addEventListener('abort', reject)
142
- try {
143
- self_.queue.push({owner: $task, resolve: resolve})
144
- } finally {
145
- $task.controller.signal.removeEventListener('abort', reject)
146
- }
147
- })
148
- } finally {
149
- if($task.controller.signal.aborted) $task.controller = new AbortController()
150
- }
151
- } else {
152
- self_.level += 1
153
- }
154
- }
133
+
134
+ if(self_.level === 0) {
135
+ self_.owner = $task
136
+ self_.level += 1
137
+ } else {
138
+ if(self_.owner !== $task || !reentrant_) {
139
+ try {
140
+ await new Promise((resolve, reject) => {
141
+ $task.controller.signal.addEventListener('abort', reject)
142
+ try {
143
+ self_.queue.push({owner: $task, resolve: resolve})
144
+ } finally {
145
+ $task.controller.signal.removeEventListener('abort', reject)
146
+ }
147
+ })
148
+ } finally {
149
+ if($task.controller.signal.aborted) $task.controller = new AbortController()
150
+ }
151
+ } else {
152
+ self_.level += 1
153
+ }
154
+ }
155
155
 
156
156
  }
157
157
 
158
158
  export async function Lock_release$(self_, $task) {
159
-
160
- if(self_.owner !== $task) {
161
- throw new Error("Tried to release a lock without acquiring it first.")
162
- } else if(self_.level > 1) {
163
- self_.level -= 1
164
- } else {
165
- self_.owner = null
166
- self_.level = 0
167
- if(self_.stack.length === 0) {
168
- const empty = self_.stack
169
- self_.stack = self_.queue.reverse()
170
- self_.queue = empty
171
- }
172
- if(self_.stack.length !== 0) {
173
- const pending = self_.stack.pop()
174
- self_.owner = pending.owner
175
- self_.level = 1
176
- pending.resolve()
177
- }
178
- }
159
+
160
+ if(self_.owner !== $task) {
161
+ throw new Error("Tried to release a lock without acquiring it first.")
162
+ } else if(self_.level > 1) {
163
+ self_.level -= 1
164
+ } else {
165
+ self_.owner = null
166
+ self_.level = 0
167
+ if(self_.stack.length === 0) {
168
+ const empty = self_.stack
169
+ self_.stack = self_.queue.reverse()
170
+ self_.queue = empty
171
+ }
172
+ if(self_.stack.length !== 0) {
173
+ const pending = self_.stack.pop()
174
+ self_.owner = pending.owner
175
+ self_.level = 1
176
+ pending.resolve()
177
+ }
178
+ }
179
179
 
180
180
  }
181
181
 
@@ -225,37 +225,37 @@ throw new Error('Function LockCondition_wakeAll is missing on this target in syn
225
225
  }
226
226
 
227
227
  export async function LockCondition_sleep$(self_, $task) {
228
-
229
- if(self_.lock.owner !== $task) {
230
- throw new Error("Tried to sleep on a condition without acquiring it first.")
231
- }
232
- const level = self_.lock.level
233
- self_.lock.level = 1
234
- await ff_core_Lock.Lock_release$(self_.lock)
235
- try {
236
- await new Promise((resolve, reject) => {
237
- $task.controller.signal.addEventListener('abort', reject)
238
- try {
239
- self_.queue.push(resolve)
240
- } finally {
241
- $task.controller.signal.removeEventListener('abort', reject)
242
- if($task.controller.signal.aborted) $task.controller = new AbortController()
243
- }
244
- })
245
- } finally {
246
- let exception = null
247
- let acquired = false
248
- while(!acquired) {
249
- try {
250
- await ff_core_Lock.Lock_acquire$(self_.lock)
251
- self_.lock.level = level
252
- acquired = true
253
- } catch(e) {
254
- exception = e
255
- }
256
- }
257
- if(e !== null) throw e;
258
- }
228
+
229
+ if(self_.lock.owner !== $task) {
230
+ throw new Error("Tried to sleep on a condition without acquiring it first.")
231
+ }
232
+ const level = self_.lock.level
233
+ self_.lock.level = 1
234
+ await ff_core_Lock.Lock_release$(self_.lock)
235
+ try {
236
+ await new Promise((resolve, reject) => {
237
+ $task.controller.signal.addEventListener('abort', reject)
238
+ try {
239
+ self_.queue.push(resolve)
240
+ } finally {
241
+ $task.controller.signal.removeEventListener('abort', reject)
242
+ if($task.controller.signal.aborted) $task.controller = new AbortController()
243
+ }
244
+ })
245
+ } finally {
246
+ let exception = null
247
+ let acquired = false
248
+ while(!acquired) {
249
+ try {
250
+ await ff_core_Lock.Lock_acquire$(self_.lock)
251
+ self_.lock.level = level
252
+ acquired = true
253
+ } catch(e) {
254
+ exception = e
255
+ }
256
+ }
257
+ if(e !== null) throw e;
258
+ }
259
259
 
260
260
  }
261
261
 
@@ -284,32 +284,32 @@ return
284
284
  }
285
285
 
286
286
  export async function LockCondition_wakeOne$(self_, $task) {
287
-
288
- if(self_.stack.length === 0) {
289
- const empty = self_.stack
290
- self_.stack = self_.queue.reverse()
291
- self_.queue = empty
292
- }
293
- if(self_.stack.length !== 0) {
294
- const resolve = self_.stack.pop()
295
- resolve()
296
- }
287
+
288
+ if(self_.stack.length === 0) {
289
+ const empty = self_.stack
290
+ self_.stack = self_.queue.reverse()
291
+ self_.queue = empty
292
+ }
293
+ if(self_.stack.length !== 0) {
294
+ const resolve = self_.stack.pop()
295
+ resolve()
296
+ }
297
297
 
298
298
  }
299
299
 
300
300
  export async function LockCondition_wakeAll$(self_, $task) {
301
-
302
- while(self_.stack.length !== 0) {
303
- const resolve = self_.stack.pop()
304
- resolve()
305
- }
306
- const empty = self_.stack
307
- self_.stack = self_.queue.reverse()
308
- self_.queue = empty
309
- while(self_.stack.length !== 0) {
310
- const resolve = self_.stack.pop()
311
- resolve()
312
- }
301
+
302
+ while(self_.stack.length !== 0) {
303
+ const resolve = self_.stack.pop()
304
+ resolve()
305
+ }
306
+ const empty = self_.stack
307
+ self_.stack = self_.queue.reverse()
308
+ self_.queue = empty
309
+ while(self_.stack.length !== 0) {
310
+ const resolve = self_.stack.pop()
311
+ resolve()
312
+ }
313
313
 
314
314
  }
315
315