OLD | NEW |
1 var async; | 1 var async; |
2 (function(exports) { | 2 (function(exports) { |
3 'use strict'; | 3 'use strict'; |
4 // Function _invokeErrorHandler: (Function, Object, StackTrace) → dynamic | 4 // Function _invokeErrorHandler: (Function, Object, StackTrace) → dynamic |
5 function _invokeErrorHandler(errorHandler, error, stackTrace) { | 5 function _invokeErrorHandler(errorHandler, error, stackTrace) { |
6 if (dart.is(errorHandler, ZoneBinaryCallback)) { | 6 if (dart.is(errorHandler, ZoneBinaryCallback)) { |
7 return dart.dinvokef(errorHandler, error, stackTrace); | 7 return dart.dinvokef(errorHandler, error, stackTrace); |
8 } else { | 8 } else { |
9 return dart.dinvokef(errorHandler, error); | 9 return dart.dinvokef(errorHandler, error); |
10 } | 10 } |
11 } | 11 } |
12 // Function _registerErrorHandler: (Function, Zone) → Function | 12 // Function _registerErrorHandler: (Function, Zone) → Function |
13 function _registerErrorHandler(errorHandler, zone) { | 13 function _registerErrorHandler(errorHandler, zone) { |
14 if (dart.is(errorHandler, ZoneBinaryCallback)) { | 14 if (dart.is(errorHandler, ZoneBinaryCallback)) { |
15 return zone.registerBinaryCallback(errorHandler); | 15 return zone.registerBinaryCallback(errorHandler); |
16 } else { | 16 } else { |
17 return zone.registerUnaryCallback(dart.as(errorHandler, dart.throw_("Unimp
lemented type (dynamic) → dynamic"))); | 17 return zone.registerUnaryCallback(dart.as(errorHandler, dart.throw_("Unimp
lemented type (dynamic) → dynamic"))); |
18 } | 18 } |
19 } | 19 } |
20 let _getBestStackTrace = Symbol('_getBestStackTrace'); | 20 let _getBestStackTrace = Symbol('_getBestStackTrace'); |
| 21 class AsyncError extends core.Object { |
| 22 AsyncError(error, stackTrace) { |
| 23 this.error = error; |
| 24 this.stackTrace = stackTrace; |
| 25 } |
| 26 toString() { |
| 27 return dart.as(dart.dinvoke(this.error, 'toString'), core.String); |
| 28 } |
| 29 } |
21 class _UncaughtAsyncError extends AsyncError { | 30 class _UncaughtAsyncError extends AsyncError { |
22 _UncaughtAsyncError(error, stackTrace) { | 31 _UncaughtAsyncError(error, stackTrace) { |
23 super.AsyncError(error, _getBestStackTrace(error, stackTrace)); | 32 super.AsyncError(error, _getBestStackTrace(error, stackTrace)); |
24 } | 33 } |
25 static [_getBestStackTrace](error, stackTrace) { | 34 static [_getBestStackTrace](error, stackTrace) { |
26 if (stackTrace !== null) | 35 if (stackTrace !== null) |
27 return stackTrace; | 36 return stackTrace; |
28 if (dart.is(error, core.Error)) { | 37 if (dart.is(error, core.Error)) { |
29 return dart.as(dart.dload(error, 'stackTrace'), core.StackTrace); | 38 return dart.as(dart.dload(error, 'stackTrace'), core.StackTrace); |
30 } | 39 } |
31 return null; | 40 return null; |
32 } | 41 } |
33 toString() { | 42 toString() { |
34 let result = `Uncaught Error: ${this.error}`; | 43 let result = `Uncaught Error: ${this.error}`; |
35 if (this.stackTrace !== null) { | 44 if (this.stackTrace !== null) { |
36 result = `\nStack Trace:\n${this.stackTrace}`; | 45 result = `\nStack Trace:\n${this.stackTrace}`; |
37 } | 46 } |
38 return result; | 47 return result; |
39 } | 48 } |
40 } | 49 } |
| 50 let _controller = Symbol('_controller'); |
| 51 let _createSubscription = Symbol('_createSubscription'); |
| 52 let _onListen = Symbol('_onListen'); |
| 53 let _addError = Symbol('_addError'); |
| 54 let _completeError = Symbol('_completeError'); |
| 55 let _complete = Symbol('_complete'); |
| 56 let _sink = Symbol('_sink'); |
| 57 let Stream$ = dart.generic(function(T) { |
| 58 class Stream extends core.Object { |
| 59 Stream() { |
| 60 } |
| 61 Stream$fromFuture(future) { |
| 62 let controller = dart.as(new StreamController({sync: true}), _StreamCont
roller$(T)); |
| 63 future.then(((value) => { |
| 64 controller._add(dart.as(value, T)); |
| 65 controller._closeUnchecked(); |
| 66 }).bind(this), {onError: ((error, stackTrace) => { |
| 67 controller._addError(error, dart.as(stackTrace, core.StackTrace)); |
| 68 controller._closeUnchecked(); |
| 69 }).bind(this)}); |
| 70 return controller.stream; |
| 71 } |
| 72 Stream$fromIterable(data) { |
| 73 return new _GeneratedStreamImpl(() => new _IterablePendingEvents(data)); |
| 74 } |
| 75 Stream$periodic(period, computation) { |
| 76 if (computation === void 0) |
| 77 computation = null; |
| 78 if (computation === null) |
| 79 computation = (i) => null; |
| 80 let timer = null; |
| 81 let computationCount = 0; |
| 82 let controller = null; |
| 83 let watch = new core.Stopwatch(); |
| 84 // Function sendEvent: () → void |
| 85 function sendEvent() { |
| 86 watch.reset(); |
| 87 let data = computation((($tmp) => computationCount = dart.notNull($tmp
) + 1, $tmp)(computationCount)); |
| 88 controller.add(data); |
| 89 } |
| 90 // Function startPeriodicTimer: () → void |
| 91 function startPeriodicTimer() { |
| 92 dart.assert(timer === null); |
| 93 timer = new Timer.periodic(period, (timer) => { |
| 94 sendEvent(); |
| 95 }); |
| 96 } |
| 97 controller = new StreamController({sync: true, onListen: (() => { |
| 98 watch.start(); |
| 99 startPeriodicTimer(); |
| 100 }).bind(this), onPause: (() => { |
| 101 timer.cancel(); |
| 102 timer = null; |
| 103 watch.stop(); |
| 104 }).bind(this), onResume: (() => { |
| 105 dart.assert(timer === null); |
| 106 let elapsed = watch.elapsed; |
| 107 watch.start(); |
| 108 timer = new Timer(period['-'](elapsed), () => { |
| 109 timer = null; |
| 110 startPeriodicTimer(); |
| 111 sendEvent(); |
| 112 }); |
| 113 }).bind(this), onCancel: (() => { |
| 114 if (timer !== null) |
| 115 timer.cancel(); |
| 116 timer = null; |
| 117 }).bind(this)}); |
| 118 return controller.stream; |
| 119 } |
| 120 Stream$eventTransformed(source, mapSink) { |
| 121 return dart.as(new _BoundSinkStream(source, dart.as(mapSink, _SinkMapper
)), Stream$(T)); |
| 122 } |
| 123 get isBroadcast() { |
| 124 return false; |
| 125 } |
| 126 asBroadcastStream(opt$) { |
| 127 let onListen = opt$.onListen === void 0 ? null : opt$.onListen; |
| 128 let onCancel = opt$.onCancel === void 0 ? null : opt$.onCancel; |
| 129 return new _AsBroadcastStream(this, dart.as(onListen, dart.throw_("Unimp
lemented type (StreamSubscription<dynamic>) → void")), dart.as(onCancel, dart.th
row_("Unimplemented type (StreamSubscription<dynamic>) → void"))); |
| 130 } |
| 131 where(test) { |
| 132 return new _WhereStream(this, test); |
| 133 } |
| 134 map(convert) { |
| 135 return new _MapStream(this, convert); |
| 136 } |
| 137 asyncMap(convert) { |
| 138 let controller = null; |
| 139 let subscription = null; |
| 140 // Function onListen: () → void |
| 141 function onListen() { |
| 142 let add = controller.add; |
| 143 dart.assert(dart.notNull(dart.is(controller, _StreamController)) || da
rt.notNull(dart.is(controller, _BroadcastStreamController))); |
| 144 let eventSink = controller; |
| 145 let addError = eventSink[_addError]; |
| 146 subscription = this.listen(((event) => { |
| 147 let newValue = null; |
| 148 try { |
| 149 newValue = convert(event); |
| 150 } catch (e) { |
| 151 let s = dart.stackTrace(e); |
| 152 controller.addError(e, s); |
| 153 return; |
| 154 } |
| 155 |
| 156 if (dart.is(newValue, Future)) { |
| 157 subscription.pause(); |
| 158 dart.dinvoke(dart.dinvoke(newValue, 'then', add, {onError: addErro
r}), 'whenComplete', subscription.resume); |
| 159 } else { |
| 160 controller.add(newValue); |
| 161 } |
| 162 }).bind(this), {onError: dart.as(addError, core.Function), onDone: con
troller.close}); |
| 163 } |
| 164 if (this.isBroadcast) { |
| 165 controller = new StreamController.broadcast({onListen: onListen, onCan
cel: (() => { |
| 166 subscription.cancel(); |
| 167 }).bind(this), sync: true}); |
| 168 } else { |
| 169 controller = new StreamController({onListen: onListen, onPause: (() =>
{ |
| 170 subscription.pause(); |
| 171 }).bind(this), onResume: (() => { |
| 172 subscription.resume(); |
| 173 }).bind(this), onCancel: (() => { |
| 174 subscription.cancel(); |
| 175 }).bind(this), sync: true}); |
| 176 } |
| 177 return controller.stream; |
| 178 } |
| 179 asyncExpand(convert) { |
| 180 let controller = null; |
| 181 let subscription = null; |
| 182 // Function onListen: () → void |
| 183 function onListen() { |
| 184 dart.assert(dart.notNull(dart.is(controller, _StreamController)) || da
rt.notNull(dart.is(controller, _BroadcastStreamController))); |
| 185 let eventSink = controller; |
| 186 subscription = this.listen(((event) => { |
| 187 let newStream = null; |
| 188 try { |
| 189 newStream = convert(event); |
| 190 } catch (e) { |
| 191 let s = dart.stackTrace(e); |
| 192 controller.addError(e, s); |
| 193 return; |
| 194 } |
| 195 |
| 196 if (newStream !== null) { |
| 197 subscription.pause(); |
| 198 controller.addStream(newStream).whenComplete(subscription.resume); |
| 199 } |
| 200 }).bind(this), {onError: dart.as(eventSink[_addError], core.Function),
onDone: controller.close}); |
| 201 } |
| 202 if (this.isBroadcast) { |
| 203 controller = new StreamController.broadcast({onListen: onListen, onCan
cel: (() => { |
| 204 subscription.cancel(); |
| 205 }).bind(this), sync: true}); |
| 206 } else { |
| 207 controller = new StreamController({onListen: onListen, onPause: (() =>
{ |
| 208 subscription.pause(); |
| 209 }).bind(this), onResume: (() => { |
| 210 subscription.resume(); |
| 211 }).bind(this), onCancel: (() => { |
| 212 subscription.cancel(); |
| 213 }).bind(this), sync: true}); |
| 214 } |
| 215 return controller.stream; |
| 216 } |
| 217 handleError(onError, opt$) { |
| 218 let test = opt$.test === void 0 ? null : opt$.test; |
| 219 return new _HandleErrorStream(this, onError, test); |
| 220 } |
| 221 expand(convert) { |
| 222 return new _ExpandStream(this, convert); |
| 223 } |
| 224 pipe(streamConsumer) { |
| 225 return streamConsumer.addStream(this).then(((_) => streamConsumer.close(
)).bind(this)); |
| 226 } |
| 227 transform(streamTransformer) { |
| 228 return streamTransformer.bind(this); |
| 229 } |
| 230 reduce(combine) { |
| 231 let result = new _Future(); |
| 232 let seenFirst = false; |
| 233 let value = null; |
| 234 let subscription = null; |
| 235 subscription = this.listen((element) => { |
| 236 if (seenFirst) { |
| 237 _runUserCode(() => combine(value, element), dart.as((newValue) => { |
| 238 value = newValue; |
| 239 }, dart.throw_("Unimplemented type (dynamic) → dynamic")), dart.as(_
cancelAndErrorClosure(subscription, result), dart.throw_("Unimplemented type (dy
namic, StackTrace) → dynamic"))); |
| 240 } else { |
| 241 value = element; |
| 242 seenFirst = true; |
| 243 } |
| 244 }, {onError: result[_completeError], onDone: (() => { |
| 245 if (!dart.notNull(seenFirst)) { |
| 246 try { |
| 247 throw _internal.IterableElementError.noElement(); |
| 248 } catch (e) { |
| 249 let s = dart.stackTrace(e); |
| 250 _completeWithErrorCallback(result, e, s); |
| 251 } |
| 252 |
| 253 } else { |
| 254 result._complete(value); |
| 255 } |
| 256 }).bind(this), cancelOnError: true}); |
| 257 return result; |
| 258 } |
| 259 fold(initialValue, combine) { |
| 260 let result = new _Future(); |
| 261 let value = initialValue; |
| 262 let subscription = null; |
| 263 subscription = this.listen((element) => { |
| 264 _runUserCode(() => combine(value, element), (newValue) => { |
| 265 value = newValue; |
| 266 }, dart.as(_cancelAndErrorClosure(subscription, result), dart.throw_("
Unimplemented type (dynamic, StackTrace) → dynamic"))); |
| 267 }, {onError: ((e, st) => { |
| 268 result._completeError(e, dart.as(st, core.StackTrace)); |
| 269 }).bind(this), onDone: (() => { |
| 270 result._complete(value); |
| 271 }).bind(this), cancelOnError: true}); |
| 272 return result; |
| 273 } |
| 274 join(separator) { |
| 275 if (separator === void 0) |
| 276 separator = ""; |
| 277 let result = new _Future(); |
| 278 let buffer = new core.StringBuffer(); |
| 279 let subscription = null; |
| 280 let first = true; |
| 281 subscription = this.listen(((element) => { |
| 282 if (!dart.notNull(first)) { |
| 283 buffer.write(separator); |
| 284 } |
| 285 first = false; |
| 286 try { |
| 287 buffer.write(element); |
| 288 } catch (e) { |
| 289 let s = dart.stackTrace(e); |
| 290 _cancelAndErrorWithReplacement(subscription, result, e, s); |
| 291 } |
| 292 |
| 293 }).bind(this), {onError: ((e) => { |
| 294 result._completeError(e); |
| 295 }).bind(this), onDone: (() => { |
| 296 result._complete(buffer.toString()); |
| 297 }).bind(this), cancelOnError: true}); |
| 298 return result; |
| 299 } |
| 300 contains(needle) { |
| 301 let future = new _Future(); |
| 302 let subscription = null; |
| 303 subscription = this.listen((element) => { |
| 304 _runUserCode(() => dart.equals(element, needle), dart.as((isMatch) =>
{ |
| 305 if (isMatch) { |
| 306 _cancelAndValue(subscription, future, true); |
| 307 } |
| 308 }, dart.throw_("Unimplemented type (dynamic) → dynamic")), dart.as(_ca
ncelAndErrorClosure(subscription, future), dart.throw_("Unimplemented type (dyna
mic, StackTrace) → dynamic"))); |
| 309 }, {onError: future[_completeError], onDone: (() => { |
| 310 future._complete(false); |
| 311 }).bind(this), cancelOnError: true}); |
| 312 return future; |
| 313 } |
| 314 forEach(action) { |
| 315 let future = new _Future(); |
| 316 let subscription = null; |
| 317 subscription = this.listen((element) => { |
| 318 _runUserCode(() => action(element), (_) => { |
| 319 }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_("
Unimplemented type (dynamic, StackTrace) → dynamic"))); |
| 320 }, {onError: future[_completeError], onDone: (() => { |
| 321 future._complete(null); |
| 322 }).bind(this), cancelOnError: true}); |
| 323 return future; |
| 324 } |
| 325 every(test) { |
| 326 let future = new _Future(); |
| 327 let subscription = null; |
| 328 subscription = this.listen((element) => { |
| 329 _runUserCode(() => test(element), dart.as((isMatch) => { |
| 330 if (!dart.notNull(isMatch)) { |
| 331 _cancelAndValue(subscription, future, false); |
| 332 } |
| 333 }, dart.throw_("Unimplemented type (dynamic) → dynamic")), dart.as(_ca
ncelAndErrorClosure(subscription, future), dart.throw_("Unimplemented type (dyna
mic, StackTrace) → dynamic"))); |
| 334 }, {onError: future[_completeError], onDone: (() => { |
| 335 future._complete(true); |
| 336 }).bind(this), cancelOnError: true}); |
| 337 return future; |
| 338 } |
| 339 any(test) { |
| 340 let future = new _Future(); |
| 341 let subscription = null; |
| 342 subscription = this.listen((element) => { |
| 343 _runUserCode(() => test(element), dart.as((isMatch) => { |
| 344 if (isMatch) { |
| 345 _cancelAndValue(subscription, future, true); |
| 346 } |
| 347 }, dart.throw_("Unimplemented type (dynamic) → dynamic")), dart.as(_ca
ncelAndErrorClosure(subscription, future), dart.throw_("Unimplemented type (dyna
mic, StackTrace) → dynamic"))); |
| 348 }, {onError: future[_completeError], onDone: (() => { |
| 349 future._complete(false); |
| 350 }).bind(this), cancelOnError: true}); |
| 351 return future; |
| 352 } |
| 353 get length() { |
| 354 let future = new _Future(); |
| 355 let count = 0; |
| 356 this.listen((_) => { |
| 357 count = dart.notNull(count) + 1; |
| 358 }, {onError: future[_completeError], onDone: (() => { |
| 359 future._complete(count); |
| 360 }).bind(this), cancelOnError: true}); |
| 361 return future; |
| 362 } |
| 363 get isEmpty() { |
| 364 let future = new _Future(); |
| 365 let subscription = null; |
| 366 subscription = this.listen((_) => { |
| 367 _cancelAndValue(subscription, future, false); |
| 368 }, {onError: future[_completeError], onDone: (() => { |
| 369 future._complete(true); |
| 370 }).bind(this), cancelOnError: true}); |
| 371 return future; |
| 372 } |
| 373 toList() { |
| 374 let result = new List.from([]); |
| 375 let future = new _Future(); |
| 376 this.listen(((data) => { |
| 377 result.add(data); |
| 378 }).bind(this), {onError: future[_completeError], onDone: (() => { |
| 379 future._complete(result); |
| 380 }).bind(this), cancelOnError: true}); |
| 381 return future; |
| 382 } |
| 383 toSet() { |
| 384 let result = new core.Set(); |
| 385 let future = new _Future(); |
| 386 this.listen(((data) => { |
| 387 result.add(data); |
| 388 }).bind(this), {onError: future[_completeError], onDone: (() => { |
| 389 future._complete(result); |
| 390 }).bind(this), cancelOnError: true}); |
| 391 return future; |
| 392 } |
| 393 drain(futureValue) { |
| 394 if (futureValue === void 0) |
| 395 futureValue = null; |
| 396 return this.listen(null, {cancelOnError: true}).asFuture(futureValue); |
| 397 } |
| 398 take(count) { |
| 399 return dart.as(new _TakeStream(this, count), Stream$(T)); |
| 400 } |
| 401 takeWhile(test) { |
| 402 return dart.as(new _TakeWhileStream(this, dart.as(test, dart.throw_("Uni
mplemented type (dynamic) → bool"))), Stream$(T)); |
| 403 } |
| 404 skip(count) { |
| 405 return dart.as(new _SkipStream(this, count), Stream$(T)); |
| 406 } |
| 407 skipWhile(test) { |
| 408 return dart.as(new _SkipWhileStream(this, dart.as(test, dart.throw_("Uni
mplemented type (dynamic) → bool"))), Stream$(T)); |
| 409 } |
| 410 distinct(equals) { |
| 411 if (equals === void 0) |
| 412 equals = null; |
| 413 return dart.as(new _DistinctStream(this, dart.as(equals, dart.throw_("Un
implemented type (dynamic, dynamic) → bool"))), Stream$(T)); |
| 414 } |
| 415 get first() { |
| 416 let future = new _Future(); |
| 417 let subscription = null; |
| 418 subscription = this.listen((value) => { |
| 419 _cancelAndValue(subscription, future, value); |
| 420 }, { |
| 421 onError: future[_completeError], |
| 422 onDone: () => { |
| 423 try { |
| 424 throw _internal.IterableElementError.noElement(); |
| 425 } catch (e) { |
| 426 let s = dart.stackTrace(e); |
| 427 _completeWithErrorCallback(future, e, s); |
| 428 } |
| 429 |
| 430 }, |
| 431 cancelOnError: true |
| 432 }); |
| 433 return future; |
| 434 } |
| 435 get last() { |
| 436 let future = new _Future(); |
| 437 let result = null; |
| 438 let foundResult = false; |
| 439 let subscription = null; |
| 440 subscription = this.listen((value) => { |
| 441 foundResult = true; |
| 442 result = value; |
| 443 }, {onError: future[_completeError], onDone: (() => { |
| 444 if (foundResult) { |
| 445 future._complete(result); |
| 446 return; |
| 447 } |
| 448 try { |
| 449 throw _internal.IterableElementError.noElement(); |
| 450 } catch (e) { |
| 451 let s = dart.stackTrace(e); |
| 452 _completeWithErrorCallback(future, e, s); |
| 453 } |
| 454 |
| 455 }).bind(this), cancelOnError: true}); |
| 456 return future; |
| 457 } |
| 458 get single() { |
| 459 let future = new _Future(); |
| 460 let result = null; |
| 461 let foundResult = false; |
| 462 let subscription = null; |
| 463 subscription = this.listen((value) => { |
| 464 if (foundResult) { |
| 465 try { |
| 466 throw _internal.IterableElementError.tooMany(); |
| 467 } catch (e) { |
| 468 let s = dart.stackTrace(e); |
| 469 _cancelAndErrorWithReplacement(subscription, future, e, s); |
| 470 } |
| 471 |
| 472 return; |
| 473 } |
| 474 foundResult = true; |
| 475 result = value; |
| 476 }, {onError: future[_completeError], onDone: (() => { |
| 477 if (foundResult) { |
| 478 future._complete(result); |
| 479 return; |
| 480 } |
| 481 try { |
| 482 throw _internal.IterableElementError.noElement(); |
| 483 } catch (e) { |
| 484 let s = dart.stackTrace(e); |
| 485 _completeWithErrorCallback(future, e, s); |
| 486 } |
| 487 |
| 488 }).bind(this), cancelOnError: true}); |
| 489 return future; |
| 490 } |
| 491 firstWhere(test, opt$) { |
| 492 let defaultValue = opt$.defaultValue === void 0 ? null : opt$.defaultVal
ue; |
| 493 let future = new _Future(); |
| 494 let subscription = null; |
| 495 subscription = this.listen((value) => { |
| 496 _runUserCode(() => test(value), dart.as((isMatch) => { |
| 497 if (isMatch) { |
| 498 _cancelAndValue(subscription, future, value); |
| 499 } |
| 500 }, dart.throw_("Unimplemented type (dynamic) → dynamic")), dart.as(_ca
ncelAndErrorClosure(subscription, future), dart.throw_("Unimplemented type (dyna
mic, StackTrace) → dynamic"))); |
| 501 }, {onError: future[_completeError], onDone: (() => { |
| 502 if (defaultValue !== null) { |
| 503 _runUserCode(defaultValue, future[_complete], future[_completeErro
r]); |
| 504 return; |
| 505 } |
| 506 try { |
| 507 throw _internal.IterableElementError.noElement(); |
| 508 } catch (e) { |
| 509 let s = dart.stackTrace(e); |
| 510 _completeWithErrorCallback(future, e, s); |
| 511 } |
| 512 |
| 513 }).bind(this), cancelOnError: true}); |
| 514 return future; |
| 515 } |
| 516 lastWhere(test, opt$) { |
| 517 let defaultValue = opt$.defaultValue === void 0 ? null : opt$.defaultVal
ue; |
| 518 let future = new _Future(); |
| 519 let result = null; |
| 520 let foundResult = false; |
| 521 let subscription = null; |
| 522 subscription = this.listen((value) => { |
| 523 _runUserCode(() => true === test(value), dart.as((isMatch) => { |
| 524 if (isMatch) { |
| 525 foundResult = true; |
| 526 result = value; |
| 527 } |
| 528 }, dart.throw_("Unimplemented type (dynamic) → dynamic")), dart.as(_ca
ncelAndErrorClosure(subscription, future), dart.throw_("Unimplemented type (dyna
mic, StackTrace) → dynamic"))); |
| 529 }, {onError: future[_completeError], onDone: (() => { |
| 530 if (foundResult) { |
| 531 future._complete(result); |
| 532 return; |
| 533 } |
| 534 if (defaultValue !== null) { |
| 535 _runUserCode(defaultValue, future[_complete], future[_completeErro
r]); |
| 536 return; |
| 537 } |
| 538 try { |
| 539 throw _internal.IterableElementError.noElement(); |
| 540 } catch (e) { |
| 541 let s = dart.stackTrace(e); |
| 542 _completeWithErrorCallback(future, e, s); |
| 543 } |
| 544 |
| 545 }).bind(this), cancelOnError: true}); |
| 546 return future; |
| 547 } |
| 548 singleWhere(test) { |
| 549 let future = new _Future(); |
| 550 let result = null; |
| 551 let foundResult = false; |
| 552 let subscription = null; |
| 553 subscription = this.listen((value) => { |
| 554 _runUserCode(() => true === test(value), dart.as((isMatch) => { |
| 555 if (isMatch) { |
| 556 if (foundResult) { |
| 557 try { |
| 558 throw _internal.IterableElementError.tooMany(); |
| 559 } catch (e) { |
| 560 let s = dart.stackTrace(e); |
| 561 _cancelAndErrorWithReplacement(subscription, future, e, s); |
| 562 } |
| 563 |
| 564 return; |
| 565 } |
| 566 foundResult = true; |
| 567 result = value; |
| 568 } |
| 569 }, dart.throw_("Unimplemented type (dynamic) → dynamic")), dart.as(_ca
ncelAndErrorClosure(subscription, future), dart.throw_("Unimplemented type (dyna
mic, StackTrace) → dynamic"))); |
| 570 }, {onError: future[_completeError], onDone: (() => { |
| 571 if (foundResult) { |
| 572 future._complete(result); |
| 573 return; |
| 574 } |
| 575 try { |
| 576 throw _internal.IterableElementError.noElement(); |
| 577 } catch (e) { |
| 578 let s = dart.stackTrace(e); |
| 579 _completeWithErrorCallback(future, e, s); |
| 580 } |
| 581 |
| 582 }).bind(this), cancelOnError: true}); |
| 583 return future; |
| 584 } |
| 585 elementAt(index) { |
| 586 if (dart.notNull(!(typeof index == number)) || dart.notNull(index) < 0) |
| 587 throw new core.ArgumentError(index); |
| 588 let future = new _Future(); |
| 589 let subscription = null; |
| 590 let elementIndex = 0; |
| 591 subscription = this.listen((value) => { |
| 592 if (index === elementIndex) { |
| 593 _cancelAndValue(subscription, future, value); |
| 594 return; |
| 595 } |
| 596 elementIndex = 1; |
| 597 }, {onError: future[_completeError], onDone: (() => { |
| 598 future._completeError(new core.RangeError.index(index, this, "index"
, null, elementIndex)); |
| 599 }).bind(this), cancelOnError: true}); |
| 600 return future; |
| 601 } |
| 602 timeout(timeLimit, opt$) { |
| 603 let onTimeout = opt$.onTimeout === void 0 ? null : opt$.onTimeout; |
| 604 let controller = null; |
| 605 let subscription = null; |
| 606 let timer = null; |
| 607 let zone = null; |
| 608 let timeout = null; |
| 609 // Function onData: (T) → void |
| 610 function onData(event) { |
| 611 timer.cancel(); |
| 612 controller.add(event); |
| 613 timer = zone.createTimer(timeLimit, dart.as(timeout, dart.throw_("Unim
plemented type () → void"))); |
| 614 } |
| 615 // Function onError: (dynamic, StackTrace) → void |
| 616 function onError(error, stackTrace) { |
| 617 timer.cancel(); |
| 618 dart.assert(dart.notNull(dart.is(controller, _StreamController)) || da
rt.notNull(dart.is(controller, _BroadcastStreamController))); |
| 619 let eventSink = controller; |
| 620 dart.dinvoke(eventSink, '_addError', error, stackTrace); |
| 621 timer = zone.createTimer(timeLimit, dart.as(timeout, dart.throw_("Unim
plemented type () → void"))); |
| 622 } |
| 623 // Function onDone: () → void |
| 624 function onDone() { |
| 625 timer.cancel(); |
| 626 controller.close(); |
| 627 } |
| 628 // Function onListen: () → void |
| 629 function onListen() { |
| 630 zone = Zone.current; |
| 631 if (onTimeout === null) { |
| 632 timeout = (() => { |
| 633 controller.addError(new TimeoutException("No stream event", timeLi
mit), null); |
| 634 }).bind(this); |
| 635 } else { |
| 636 onTimeout = zone.registerUnaryCallback(dart.as(onTimeout, dart.throw
_("Unimplemented type (dynamic) → dynamic"))); |
| 637 let wrapper = new _ControllerEventSinkWrapper(null); |
| 638 timeout = (() => { |
| 639 wrapper[_sink] = controller; |
| 640 zone.runUnaryGuarded(dart.as(onTimeout, dart.throw_("Unimplemented
type (dynamic) → dynamic")), wrapper); |
| 641 wrapper[_sink] = null; |
| 642 }).bind(this); |
| 643 } |
| 644 subscription = this.listen(onData, {onError: onError, onDone: onDone})
; |
| 645 timer = zone.createTimer(timeLimit, dart.as(timeout, dart.throw_("Unim
plemented type () → void"))); |
| 646 } |
| 647 // Function onCancel: () → Future<dynamic> |
| 648 function onCancel() { |
| 649 timer.cancel(); |
| 650 let result = subscription.cancel(); |
| 651 subscription = null; |
| 652 return result; |
| 653 } |
| 654 controller = this.isBroadcast ? new _SyncBroadcastStreamController(onLis
ten, onCancel) : new _SyncStreamController(onListen, (() => { |
| 655 timer.cancel(); |
| 656 subscription.pause(); |
| 657 }).bind(this), (() => { |
| 658 subscription.resume(); |
| 659 timer = zone.createTimer(timeLimit, dart.as(timeout, dart.throw_("Unim
plemented type () → void"))); |
| 660 }).bind(this), onCancel); |
| 661 return controller.stream; |
| 662 } |
| 663 } |
| 664 dart.defineNamedConstructor(Stream, 'fromFuture'); |
| 665 dart.defineNamedConstructor(Stream, 'fromIterable'); |
| 666 dart.defineNamedConstructor(Stream, 'periodic'); |
| 667 dart.defineNamedConstructor(Stream, 'eventTransformed'); |
| 668 return Stream; |
| 669 }); |
| 670 let Stream = Stream$(dart.dynamic); |
| 671 let _StreamImpl$ = dart.generic(function(T) { |
| 672 class _StreamImpl extends Stream$(T) { |
| 673 listen(onData, opt$) { |
| 674 let onError = opt$.onError === void 0 ? null : opt$.onError; |
| 675 let onDone = opt$.onDone === void 0 ? null : opt$.onDone; |
| 676 let cancelOnError = opt$.cancelOnError === void 0 ? null : opt$.cancelOn
Error; |
| 677 cancelOnError = core.identical(true, cancelOnError); |
| 678 let subscription = this[_createSubscription](onData, onError, onDone, ca
ncelOnError); |
| 679 this[_onListen](subscription); |
| 680 return dart.as(subscription, StreamSubscription$(T)); |
| 681 } |
| 682 [_createSubscription](onData, onError, onDone, cancelOnError) { |
| 683 return new _BufferingStreamSubscription(onData, onError, onDone, cancelO
nError); |
| 684 } |
| 685 [_onListen](subscription) {} |
| 686 } |
| 687 return _StreamImpl; |
| 688 }); |
| 689 let _StreamImpl = _StreamImpl$(dart.dynamic); |
| 690 let _ControllerStream$ = dart.generic(function(T) { |
| 691 class _ControllerStream extends _StreamImpl$(T) { |
| 692 _ControllerStream($_controller) { |
| 693 this[_controller] = $_controller; |
| 694 super._StreamImpl(); |
| 695 } |
| 696 [_createSubscription](onData, onError, onDone, cancelOnError) { |
| 697 return this[_controller]._subscribe(onData, onError, onDone, cancelOnErr
or); |
| 698 } |
| 699 get hashCode() { |
| 700 return dart.notNull(this[_controller].hashCode) ^ 892482866; |
| 701 } |
| 702 ['=='](other) { |
| 703 if (core.identical(this, other)) |
| 704 return true; |
| 705 if (!dart.is(other, _ControllerStream)) |
| 706 return false; |
| 707 let otherStream = dart.as(other, _ControllerStream); |
| 708 return core.identical(otherStream[_controller], this[_controller]); |
| 709 } |
| 710 } |
| 711 return _ControllerStream; |
| 712 }); |
| 713 let _ControllerStream = _ControllerStream$(dart.dynamic); |
41 let _BroadcastStream$ = dart.generic(function(T) { | 714 let _BroadcastStream$ = dart.generic(function(T) { |
42 class _BroadcastStream extends _ControllerStream$(T) { | 715 class _BroadcastStream extends _ControllerStream$(T) { |
43 _BroadcastStream(controller) { | 716 _BroadcastStream(controller) { |
44 super._ControllerStream(dart.as(controller, _StreamControllerLifecycle$(
T))); | 717 super._ControllerStream(dart.as(controller, _StreamControllerLifecycle$(
T))); |
45 } | 718 } |
46 get isBroadcast() { | 719 get isBroadcast() { |
47 return true; | 720 return true; |
48 } | 721 } |
49 } | 722 } |
50 return _BroadcastStream; | 723 return _BroadcastStream; |
51 }); | 724 }); |
52 let _BroadcastStream = _BroadcastStream$(dart.dynamic); | 725 let _BroadcastStream = _BroadcastStream$(dart.dynamic); |
53 let _next = Symbol('_next'); | 726 let _next = Symbol('_next'); |
54 let _previous = Symbol('_previous'); | 727 let _previous = Symbol('_previous'); |
55 class _BroadcastSubscriptionLink extends core.Object { | 728 class _BroadcastSubscriptionLink extends core.Object { |
56 _BroadcastSubscriptionLink() { | 729 _BroadcastSubscriptionLink() { |
57 this[_next] = null; | 730 this[_next] = null; |
58 this[_previous] = null; | 731 this[_previous] = null; |
59 } | 732 } |
60 } | 733 } |
61 let _eventState = Symbol('_eventState'); | 734 let _eventState = Symbol('_eventState'); |
62 let _controller = Symbol('_controller'); | |
63 let _expectsEvent = Symbol('_expectsEvent'); | 735 let _expectsEvent = Symbol('_expectsEvent'); |
64 let _toggleEventId = Symbol('_toggleEventId'); | 736 let _toggleEventId = Symbol('_toggleEventId'); |
65 let _isFiring = Symbol('_isFiring'); | 737 let _isFiring = Symbol('_isFiring'); |
66 let _setRemoveAfterFiring = Symbol('_setRemoveAfterFiring'); | 738 let _setRemoveAfterFiring = Symbol('_setRemoveAfterFiring'); |
67 let _removeAfterFiring = Symbol('_removeAfterFiring'); | 739 let _removeAfterFiring = Symbol('_removeAfterFiring'); |
68 let _onPause = Symbol('_onPause'); | 740 let _onPause = Symbol('_onPause'); |
69 let _onResume = Symbol('_onResume'); | 741 let _onResume = Symbol('_onResume'); |
| 742 let _onCancel = Symbol('_onCancel'); |
| 743 let _zone = Symbol('_zone'); |
| 744 let _state = Symbol('_state'); |
| 745 let _onData = Symbol('_onData'); |
| 746 let _onError = Symbol('_onError'); |
| 747 let _onDone = Symbol('_onDone'); |
| 748 let _cancelFuture = Symbol('_cancelFuture'); |
| 749 let _pending = Symbol('_pending'); |
| 750 let _setPendingEvents = Symbol('_setPendingEvents'); |
| 751 let _extractPending = Symbol('_extractPending'); |
| 752 let _isCanceled = Symbol('_isCanceled'); |
| 753 let _isPaused = Symbol('_isPaused'); |
| 754 let _isInputPaused = Symbol('_isInputPaused'); |
| 755 let _inCallback = Symbol('_inCallback'); |
| 756 let _guardCallback = Symbol('_guardCallback'); |
| 757 let _decrementPauseCount = Symbol('_decrementPauseCount'); |
| 758 let _hasPending = Symbol('_hasPending'); |
| 759 let _mayResumeInput = Symbol('_mayResumeInput'); |
| 760 let _cancel = Symbol('_cancel'); |
| 761 let _isClosed = Symbol('_isClosed'); |
| 762 let _waitsForCancel = Symbol('_waitsForCancel'); |
| 763 let _canFire = Symbol('_canFire'); |
| 764 let _cancelOnError = Symbol('_cancelOnError'); |
| 765 let _incrementPauseCount = Symbol('_incrementPauseCount'); |
| 766 let _add = Symbol('_add'); |
| 767 let _sendData = Symbol('_sendData'); |
| 768 let _addPending = Symbol('_addPending'); |
| 769 let _sendError = Symbol('_sendError'); |
| 770 let _close = Symbol('_close'); |
| 771 let _sendDone = Symbol('_sendDone'); |
| 772 let _checkState = Symbol('_checkState'); |
| 773 let _BufferingStreamSubscription$ = dart.generic(function(T) { |
| 774 class _BufferingStreamSubscription extends core.Object { |
| 775 _BufferingStreamSubscription(onData, onError, onDone, cancelOnError) { |
| 776 this[_zone] = Zone.current; |
| 777 this[_state] = cancelOnError ? _BufferingStreamSubscription._STATE_CANCE
L_ON_ERROR : 0; |
| 778 this[_onData] = null; |
| 779 this[_onError] = null; |
| 780 this[_onDone] = null; |
| 781 this[_cancelFuture] = null; |
| 782 this[_pending] = null; |
| 783 this.onData(onData); |
| 784 this.onError(onError); |
| 785 this.onDone(onDone); |
| 786 } |
| 787 [_setPendingEvents](pendingEvents) { |
| 788 dart.assert(this[_pending] === null); |
| 789 if (pendingEvents === null) |
| 790 return; |
| 791 this[_pending] = pendingEvents; |
| 792 if (!dart.notNull(pendingEvents.isEmpty)) { |
| 793 this[_state] = _BufferingStreamSubscription._STATE_HAS_PENDING; |
| 794 this[_pending].schedule(this); |
| 795 } |
| 796 } |
| 797 [_extractPending]() { |
| 798 dart.assert(this[_isCanceled]); |
| 799 let events = this[_pending]; |
| 800 this[_pending] = null; |
| 801 return events; |
| 802 } |
| 803 onData(handleData) { |
| 804 if (handleData === null) |
| 805 handleData = _nullDataHandler; |
| 806 this[_onData] = this[_zone].registerUnaryCallback(dart.as(handleData, da
rt.throw_("Unimplemented type (dynamic) → dynamic"))); |
| 807 } |
| 808 onError(handleError) { |
| 809 if (handleError === null) |
| 810 handleError = _nullErrorHandler; |
| 811 this[_onError] = _registerErrorHandler(handleError, this[_zone]); |
| 812 } |
| 813 onDone(handleDone) { |
| 814 if (handleDone === null) |
| 815 handleDone = _nullDoneHandler; |
| 816 this[_onDone] = this[_zone].registerCallback(handleDone); |
| 817 } |
| 818 pause(resumeSignal) { |
| 819 if (resumeSignal === void 0) |
| 820 resumeSignal = null; |
| 821 if (this[_isCanceled]) |
| 822 return; |
| 823 let wasPaused = this[_isPaused]; |
| 824 let wasInputPaused = this[_isInputPaused]; |
| 825 this[_state] = dart.notNull(this[_state]) + dart.notNull(_BufferingStrea
mSubscription._STATE_PAUSE_COUNT) | dart.notNull(_BufferingStreamSubscription._S
TATE_INPUT_PAUSED); |
| 826 if (resumeSignal !== null) |
| 827 resumeSignal.whenComplete(this.resume); |
| 828 if (!dart.notNull(wasPaused) && dart.notNull(this[_pending] !== null)) |
| 829 this[_pending].cancelSchedule(); |
| 830 if (!dart.notNull(wasInputPaused) && !dart.notNull(this[_inCallback])) |
| 831 this[_guardCallback](this[_onPause]); |
| 832 } |
| 833 resume() { |
| 834 if (this[_isCanceled]) |
| 835 return; |
| 836 if (this[_isPaused]) { |
| 837 this[_decrementPauseCount](); |
| 838 if (!dart.notNull(this[_isPaused])) { |
| 839 if (dart.notNull(this[_hasPending]) && !dart.notNull(this[_pending].
isEmpty)) { |
| 840 this[_pending].schedule(this); |
| 841 } else { |
| 842 dart.assert(this[_mayResumeInput]); |
| 843 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_I
NPUT_PAUSED); |
| 844 if (!dart.notNull(this[_inCallback])) |
| 845 this[_guardCallback](this[_onResume]); |
| 846 } |
| 847 } |
| 848 } |
| 849 } |
| 850 cancel() { |
| 851 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_WAIT_FO
R_CANCEL); |
| 852 if (this[_isCanceled]) |
| 853 return this[_cancelFuture]; |
| 854 this[_cancel](); |
| 855 return this[_cancelFuture]; |
| 856 } |
| 857 asFuture(futureValue) { |
| 858 if (futureValue === void 0) |
| 859 futureValue = null; |
| 860 let result = new _Future(); |
| 861 this[_onDone] = (() => { |
| 862 result._complete(futureValue); |
| 863 }).bind(this); |
| 864 this[_onError] = ((error, stackTrace) => { |
| 865 this.cancel(); |
| 866 result._completeError(error, dart.as(stackTrace, core.StackTrace)); |
| 867 }).bind(this); |
| 868 return result; |
| 869 } |
| 870 get [_isInputPaused]() { |
| 871 return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscr
iption._STATE_INPUT_PAUSED)) !== 0; |
| 872 } |
| 873 get [_isClosed]() { |
| 874 return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscr
iption._STATE_CLOSED)) !== 0; |
| 875 } |
| 876 get [_isCanceled]() { |
| 877 return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscr
iption._STATE_CANCELED)) !== 0; |
| 878 } |
| 879 get [_waitsForCancel]() { |
| 880 return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscr
iption._STATE_WAIT_FOR_CANCEL)) !== 0; |
| 881 } |
| 882 get [_inCallback]() { |
| 883 return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscr
iption._STATE_IN_CALLBACK)) !== 0; |
| 884 } |
| 885 get [_hasPending]() { |
| 886 return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscr
iption._STATE_HAS_PENDING)) !== 0; |
| 887 } |
| 888 get [_isPaused]() { |
| 889 return dart.notNull(this[_state]) >= dart.notNull(_BufferingStreamSubscr
iption._STATE_PAUSE_COUNT); |
| 890 } |
| 891 get [_canFire]() { |
| 892 return dart.notNull(this[_state]) < dart.notNull(_BufferingStreamSubscri
ption._STATE_IN_CALLBACK); |
| 893 } |
| 894 get [_mayResumeInput]() { |
| 895 return !dart.notNull(this[_isPaused]) && (dart.notNull(this[_pending] ==
= null) || dart.notNull(this[_pending].isEmpty)); |
| 896 } |
| 897 get [_cancelOnError]() { |
| 898 return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscr
iption._STATE_CANCEL_ON_ERROR)) !== 0; |
| 899 } |
| 900 get isPaused() { |
| 901 return this[_isPaused]; |
| 902 } |
| 903 [_cancel]() { |
| 904 this[_state] = _BufferingStreamSubscription._STATE_CANCELED; |
| 905 if (this[_hasPending]) { |
| 906 this[_pending].cancelSchedule(); |
| 907 } |
| 908 if (!dart.notNull(this[_inCallback])) |
| 909 this[_pending] = null; |
| 910 this[_cancelFuture] = this[_onCancel](); |
| 911 } |
| 912 [_incrementPauseCount]() { |
| 913 this[_state] = dart.notNull(this[_state]) + dart.notNull(_BufferingStrea
mSubscription._STATE_PAUSE_COUNT) | dart.notNull(_BufferingStreamSubscription._S
TATE_INPUT_PAUSED); |
| 914 } |
| 915 [_decrementPauseCount]() { |
| 916 dart.assert(this[_isPaused]); |
| 917 this[_state] = _BufferingStreamSubscription._STATE_PAUSE_COUNT; |
| 918 } |
| 919 [_add](data) { |
| 920 dart.assert(!dart.notNull(this[_isClosed])); |
| 921 if (this[_isCanceled]) |
| 922 return; |
| 923 if (this[_canFire]) { |
| 924 this[_sendData](data); |
| 925 } else { |
| 926 this[_addPending](new _DelayedData(data)); |
| 927 } |
| 928 } |
| 929 [_addError](error, stackTrace) { |
| 930 if (this[_isCanceled]) |
| 931 return; |
| 932 if (this[_canFire]) { |
| 933 this[_sendError](error, stackTrace); |
| 934 } else { |
| 935 this[_addPending](new _DelayedError(error, stackTrace)); |
| 936 } |
| 937 } |
| 938 [_close]() { |
| 939 dart.assert(!dart.notNull(this[_isClosed])); |
| 940 if (this[_isCanceled]) |
| 941 return; |
| 942 this[_state] = _BufferingStreamSubscription._STATE_CLOSED; |
| 943 if (this[_canFire]) { |
| 944 this[_sendDone](); |
| 945 } else { |
| 946 this[_addPending](new _DelayedDone()); |
| 947 } |
| 948 } |
| 949 [_onPause]() { |
| 950 dart.assert(this[_isInputPaused]); |
| 951 } |
| 952 [_onResume]() { |
| 953 dart.assert(!dart.notNull(this[_isInputPaused])); |
| 954 } |
| 955 [_onCancel]() { |
| 956 dart.assert(this[_isCanceled]); |
| 957 return null; |
| 958 } |
| 959 [_addPending](event) { |
| 960 let pending = dart.as(this[_pending], _StreamImplEvents); |
| 961 if (this[_pending] === null) |
| 962 pending = this[_pending] = new _StreamImplEvents(); |
| 963 pending.add(event); |
| 964 if (!dart.notNull(this[_hasPending])) { |
| 965 this[_state] = _BufferingStreamSubscription._STATE_HAS_PENDING; |
| 966 if (!dart.notNull(this[_isPaused])) { |
| 967 this[_pending].schedule(this); |
| 968 } |
| 969 } |
| 970 } |
| 971 [_sendData](data) { |
| 972 dart.assert(!dart.notNull(this[_isCanceled])); |
| 973 dart.assert(!dart.notNull(this[_isPaused])); |
| 974 dart.assert(!dart.notNull(this[_inCallback])); |
| 975 let wasInputPaused = this[_isInputPaused]; |
| 976 this[_state] = _BufferingStreamSubscription._STATE_IN_CALLBACK; |
| 977 this[_zone].runUnaryGuarded(dart.as(this[_onData], dart.throw_("Unimplem
ented type (dynamic) → dynamic")), data); |
| 978 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_IN_CALL
BACK); |
| 979 this[_checkState](wasInputPaused); |
| 980 } |
| 981 [_sendError](error, stackTrace) { |
| 982 dart.assert(!dart.notNull(this[_isCanceled])); |
| 983 dart.assert(!dart.notNull(this[_isPaused])); |
| 984 dart.assert(!dart.notNull(this[_inCallback])); |
| 985 let wasInputPaused = this[_isInputPaused]; |
| 986 // Function sendError: () → void |
| 987 function sendError() { |
| 988 if (dart.notNull(this[_isCanceled]) && !dart.notNull(this[_waitsForCan
cel])) |
| 989 return; |
| 990 this[_state] = _BufferingStreamSubscription._STATE_IN_CALLBACK; |
| 991 if (dart.is(this[_onError], ZoneBinaryCallback)) { |
| 992 this[_zone].runBinaryGuarded(dart.as(this[_onError], dart.throw_("Un
implemented type (dynamic, dynamic) → dynamic")), error, stackTrace); |
| 993 } else { |
| 994 this[_zone].runUnaryGuarded(dart.as(this[_onError], dart.throw_("Uni
mplemented type (dynamic) → dynamic")), error); |
| 995 } |
| 996 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_IN_CA
LLBACK); |
| 997 } |
| 998 if (this[_cancelOnError]) { |
| 999 this[_state] = _BufferingStreamSubscription._STATE_WAIT_FOR_CANCEL; |
| 1000 this[_cancel](); |
| 1001 if (dart.is(this[_cancelFuture], Future)) { |
| 1002 this[_cancelFuture].whenComplete(sendError); |
| 1003 } else { |
| 1004 sendError(); |
| 1005 } |
| 1006 } else { |
| 1007 sendError(); |
| 1008 this[_checkState](wasInputPaused); |
| 1009 } |
| 1010 } |
| 1011 [_sendDone]() { |
| 1012 dart.assert(!dart.notNull(this[_isCanceled])); |
| 1013 dart.assert(!dart.notNull(this[_isPaused])); |
| 1014 dart.assert(!dart.notNull(this[_inCallback])); |
| 1015 // Function sendDone: () → void |
| 1016 function sendDone() { |
| 1017 if (!dart.notNull(this[_waitsForCancel])) |
| 1018 return; |
| 1019 this[_state] = dart.notNull(_BufferingStreamSubscription._STATE_CANCEL
ED) | dart.notNull(_BufferingStreamSubscription._STATE_CLOSED) | dart.notNull(_B
ufferingStreamSubscription._STATE_IN_CALLBACK); |
| 1020 this[_zone].runGuarded(this[_onDone]); |
| 1021 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_IN_CA
LLBACK); |
| 1022 } |
| 1023 this[_cancel](); |
| 1024 this[_state] = _BufferingStreamSubscription._STATE_WAIT_FOR_CANCEL; |
| 1025 if (dart.is(this[_cancelFuture], Future)) { |
| 1026 this[_cancelFuture].whenComplete(sendDone); |
| 1027 } else { |
| 1028 sendDone(); |
| 1029 } |
| 1030 } |
| 1031 [_guardCallback](callback) { |
| 1032 dart.assert(!dart.notNull(this[_inCallback])); |
| 1033 let wasInputPaused = this[_isInputPaused]; |
| 1034 this[_state] = _BufferingStreamSubscription._STATE_IN_CALLBACK; |
| 1035 dart.dinvokef(callback); |
| 1036 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_IN_CALL
BACK); |
| 1037 this[_checkState](wasInputPaused); |
| 1038 } |
| 1039 [_checkState](wasInputPaused) { |
| 1040 dart.assert(!dart.notNull(this[_inCallback])); |
| 1041 if (dart.notNull(this[_hasPending]) && dart.notNull(this[_pending].isEmp
ty)) { |
| 1042 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_HAS_P
ENDING); |
| 1043 if (dart.notNull(this[_isInputPaused]) && dart.notNull(this[_mayResume
Input])) { |
| 1044 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_INP
UT_PAUSED); |
| 1045 } |
| 1046 } |
| 1047 while (true) { |
| 1048 if (this[_isCanceled]) { |
| 1049 this[_pending] = null; |
| 1050 return; |
| 1051 } |
| 1052 let isInputPaused = this[_isInputPaused]; |
| 1053 if (wasInputPaused === isInputPaused) |
| 1054 break; |
| 1055 this[_state] = _BufferingStreamSubscription._STATE_IN_CALLBACK; |
| 1056 if (isInputPaused) { |
| 1057 this[_onPause](); |
| 1058 } else { |
| 1059 this[_onResume](); |
| 1060 } |
| 1061 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_IN_CA
LLBACK); |
| 1062 wasInputPaused = isInputPaused; |
| 1063 } |
| 1064 if (dart.notNull(this[_hasPending]) && !dart.notNull(this[_isPaused])) { |
| 1065 this[_pending].schedule(this); |
| 1066 } |
| 1067 } |
| 1068 } |
| 1069 _BufferingStreamSubscription._STATE_CANCEL_ON_ERROR = 1; |
| 1070 _BufferingStreamSubscription._STATE_CLOSED = 2; |
| 1071 _BufferingStreamSubscription._STATE_INPUT_PAUSED = 4; |
| 1072 _BufferingStreamSubscription._STATE_CANCELED = 8; |
| 1073 _BufferingStreamSubscription._STATE_WAIT_FOR_CANCEL = 16; |
| 1074 _BufferingStreamSubscription._STATE_IN_CALLBACK = 32; |
| 1075 _BufferingStreamSubscription._STATE_HAS_PENDING = 64; |
| 1076 _BufferingStreamSubscription._STATE_PAUSE_COUNT = 128; |
| 1077 _BufferingStreamSubscription._STATE_PAUSE_COUNT_SHIFT = 7; |
| 1078 return _BufferingStreamSubscription; |
| 1079 }); |
| 1080 let _BufferingStreamSubscription = _BufferingStreamSubscription$(dart.dynamic)
; |
| 1081 let _ControllerSubscription$ = dart.generic(function(T) { |
| 1082 class _ControllerSubscription extends _BufferingStreamSubscription$(T) { |
| 1083 _ControllerSubscription($_controller, onData, onError, onDone, cancelOnErr
or) { |
| 1084 this[_controller] = $_controller; |
| 1085 super._BufferingStreamSubscription(onData, onError, onDone, cancelOnErro
r); |
| 1086 } |
| 1087 [_onCancel]() { |
| 1088 return this[_controller]._recordCancel(this); |
| 1089 } |
| 1090 [_onPause]() { |
| 1091 this[_controller]._recordPause(this); |
| 1092 } |
| 1093 [_onResume]() { |
| 1094 this[_controller]._recordResume(this); |
| 1095 } |
| 1096 } |
| 1097 return _ControllerSubscription; |
| 1098 }); |
| 1099 let _ControllerSubscription = _ControllerSubscription$(dart.dynamic); |
70 let _BroadcastSubscription$ = dart.generic(function(T) { | 1100 let _BroadcastSubscription$ = dart.generic(function(T) { |
71 class _BroadcastSubscription extends _ControllerSubscription$(T) { | 1101 class _BroadcastSubscription extends _ControllerSubscription$(T) { |
72 _BroadcastSubscription(controller, onData, onError, onDone, cancelOnError)
{ | 1102 _BroadcastSubscription(controller, onData, onError, onDone, cancelOnError)
{ |
73 this[_eventState] = null; | 1103 this[_eventState] = null; |
74 this[_next] = null; | 1104 this[_next] = null; |
75 this[_previous] = null; | 1105 this[_previous] = null; |
76 super._ControllerSubscription(dart.as(controller, _StreamControllerLifec
ycle$(T)), onData, onError, onDone, cancelOnError); | 1106 super._ControllerSubscription(dart.as(controller, _StreamControllerLifec
ycle$(T)), onData, onError, onDone, cancelOnError); |
77 this[_next] = this[_previous] = this; | 1107 this[_next] = this[_previous] = this; |
78 } | 1108 } |
79 get [_controller]() { | 1109 get [_controller]() { |
(...skipping 17 matching lines...) Expand all Loading... |
97 } | 1127 } |
98 [_onPause]() {} | 1128 [_onPause]() {} |
99 [_onResume]() {} | 1129 [_onResume]() {} |
100 } | 1130 } |
101 _BroadcastSubscription._STATE_EVENT_ID = 1; | 1131 _BroadcastSubscription._STATE_EVENT_ID = 1; |
102 _BroadcastSubscription._STATE_FIRING = 2; | 1132 _BroadcastSubscription._STATE_FIRING = 2; |
103 _BroadcastSubscription._STATE_REMOVE_AFTER_FIRING = 4; | 1133 _BroadcastSubscription._STATE_REMOVE_AFTER_FIRING = 4; |
104 return _BroadcastSubscription; | 1134 return _BroadcastSubscription; |
105 }); | 1135 }); |
106 let _BroadcastSubscription = _BroadcastSubscription$(dart.dynamic); | 1136 let _BroadcastSubscription = _BroadcastSubscription$(dart.dynamic); |
107 let _onListen = Symbol('_onListen'); | |
108 let _onCancel = Symbol('_onCancel'); | |
109 let _state = Symbol('_state'); | |
110 let _addStreamState = Symbol('_addStreamState'); | 1137 let _addStreamState = Symbol('_addStreamState'); |
111 let _doneFuture = Symbol('_doneFuture'); | 1138 let _doneFuture = Symbol('_doneFuture'); |
112 let _isEmpty = Symbol('_isEmpty'); | 1139 let _isEmpty = Symbol('_isEmpty'); |
113 let _hasOneListener = Symbol('_hasOneListener'); | 1140 let _hasOneListener = Symbol('_hasOneListener'); |
114 let _isAddingStream = Symbol('_isAddingStream'); | 1141 let _isAddingStream = Symbol('_isAddingStream'); |
115 let _mayAddEvent = Symbol('_mayAddEvent'); | 1142 let _mayAddEvent = Symbol('_mayAddEvent'); |
116 let _ensureDoneFuture = Symbol('_ensureDoneFuture'); | 1143 let _ensureDoneFuture = Symbol('_ensureDoneFuture'); |
117 let _addListener = Symbol('_addListener'); | 1144 let _addListener = Symbol('_addListener'); |
118 let _removeListener = Symbol('_removeListener'); | 1145 let _removeListener = Symbol('_removeListener'); |
119 let _subscribe = Symbol('_subscribe'); | 1146 let _subscribe = Symbol('_subscribe'); |
120 let _recordCancel = Symbol('_recordCancel'); | 1147 let _recordCancel = Symbol('_recordCancel'); |
121 let _callOnCancel = Symbol('_callOnCancel'); | 1148 let _callOnCancel = Symbol('_callOnCancel'); |
122 let _recordPause = Symbol('_recordPause'); | 1149 let _recordPause = Symbol('_recordPause'); |
123 let _recordResume = Symbol('_recordResume'); | 1150 let _recordResume = Symbol('_recordResume'); |
124 let _addEventError = Symbol('_addEventError'); | 1151 let _addEventError = Symbol('_addEventError'); |
125 let _sendData = Symbol('_sendData'); | |
126 let _sendError = Symbol('_sendError'); | |
127 let _sendDone = Symbol('_sendDone'); | |
128 let _add = Symbol('_add'); | |
129 let _addError = Symbol('_addError'); | |
130 let _close = Symbol('_close'); | |
131 let _forEachListener = Symbol('_forEachListener'); | 1152 let _forEachListener = Symbol('_forEachListener'); |
132 let _STATE_FIRING = Symbol('_STATE_FIRING'); | 1153 let _STATE_FIRING = Symbol('_STATE_FIRING'); |
133 let _mayComplete = Symbol('_mayComplete'); | 1154 let _mayComplete = Symbol('_mayComplete'); |
134 let _BroadcastStreamController$ = dart.generic(function(T) { | 1155 let _BroadcastStreamController$ = dart.generic(function(T) { |
135 class _BroadcastStreamController extends core.Object { | 1156 class _BroadcastStreamController extends core.Object { |
136 _BroadcastStreamController($_onListen, $_onCancel) { | 1157 _BroadcastStreamController($_onListen, $_onCancel) { |
137 this[_onListen] = $_onListen; | 1158 this[_onListen] = $_onListen; |
138 this[_onCancel] = $_onCancel; | 1159 this[_onCancel] = $_onCancel; |
139 this[_state] = _BroadcastStreamController._STATE_INITIAL; | 1160 this[_state] = _BroadcastStreamController._STATE_INITIAL; |
140 this[_next] = null; | 1161 this[_next] = null; |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
402 } else { | 1423 } else { |
403 dart.assert(this[_doneFuture] !== null); | 1424 dart.assert(this[_doneFuture] !== null); |
404 dart.assert(this[_doneFuture][_mayComplete]); | 1425 dart.assert(this[_doneFuture][_mayComplete]); |
405 this[_doneFuture]._asyncComplete(null); | 1426 this[_doneFuture]._asyncComplete(null); |
406 } | 1427 } |
407 } | 1428 } |
408 } | 1429 } |
409 return _AsyncBroadcastStreamController; | 1430 return _AsyncBroadcastStreamController; |
410 }); | 1431 }); |
411 let _AsyncBroadcastStreamController = _AsyncBroadcastStreamController$(dart.dy
namic); | 1432 let _AsyncBroadcastStreamController = _AsyncBroadcastStreamController$(dart.dy
namic); |
412 let _pending = Symbol('_pending'); | |
413 let _hasPending = Symbol('_hasPending'); | |
414 let _addPendingEvent = Symbol('_addPendingEvent'); | 1433 let _addPendingEvent = Symbol('_addPendingEvent'); |
415 let _STATE_CLOSED = Symbol('_STATE_CLOSED'); | 1434 let _STATE_CLOSED = Symbol('_STATE_CLOSED'); |
416 let _AsBroadcastStreamController$ = dart.generic(function(T) { | 1435 let _AsBroadcastStreamController$ = dart.generic(function(T) { |
417 class _AsBroadcastStreamController extends _SyncBroadcastStreamController$(T
) { | 1436 class _AsBroadcastStreamController extends _SyncBroadcastStreamController$(T
) { |
418 _AsBroadcastStreamController(onListen, onCancel) { | 1437 _AsBroadcastStreamController(onListen, onCancel) { |
419 this[_pending] = null; | 1438 this[_pending] = null; |
420 super._SyncBroadcastStreamController(onListen, onCancel); | 1439 super._SyncBroadcastStreamController(onListen, onCancel); |
421 } | 1440 } |
422 get [_hasPending]() { | 1441 get [_hasPending]() { |
423 return dart.notNull(this[_pending] !== null) && !dart.notNull(this[_pend
ing].isEmpty); | 1442 return dart.notNull(this[_pending] !== null) && !dart.notNull(this[_pend
ing].isEmpty); |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
524 } | 1543 } |
525 let _s = Symbol('_s'); | 1544 let _s = Symbol('_s'); |
526 class DeferredLoadException extends core.Object { | 1545 class DeferredLoadException extends core.Object { |
527 DeferredLoadException($_s) { | 1546 DeferredLoadException($_s) { |
528 this[_s] = $_s; | 1547 this[_s] = $_s; |
529 } | 1548 } |
530 toString() { | 1549 toString() { |
531 return `DeferredLoadException: '${this[_s]}'`; | 1550 return `DeferredLoadException: '${this[_s]}'`; |
532 } | 1551 } |
533 } | 1552 } |
534 let _completeError = Symbol('_completeError'); | |
535 let Future$ = dart.generic(function(T) { | 1553 let Future$ = dart.generic(function(T) { |
536 class Future extends core.Object { | 1554 class Future extends core.Object { |
537 Future(computation) { | 1555 Future(computation) { |
538 let result = new _Future(); | 1556 let result = new _Future(); |
539 Timer.run((() => { | 1557 Timer.run((() => { |
540 try { | 1558 try { |
541 result._complete(computation()); | 1559 result._complete(computation()); |
542 } catch (e) { | 1560 } catch (e) { |
543 let s = dart.stackTrace(e); | 1561 let s = dart.stackTrace(e); |
544 _completeWithErrorCallback(result, e, s); | 1562 _completeWithErrorCallback(result, e, s); |
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
790 this.future._complete(value); | 1808 this.future._complete(value); |
791 } | 1809 } |
792 [_completeError](error, stackTrace) { | 1810 [_completeError](error, stackTrace) { |
793 this.future._completeError(error, stackTrace); | 1811 this.future._completeError(error, stackTrace); |
794 } | 1812 } |
795 } | 1813 } |
796 return _SyncCompleter; | 1814 return _SyncCompleter; |
797 }); | 1815 }); |
798 let _SyncCompleter = _SyncCompleter$(dart.dynamic); | 1816 let _SyncCompleter = _SyncCompleter$(dart.dynamic); |
799 let _nextListener = Symbol('_nextListener'); | 1817 let _nextListener = Symbol('_nextListener'); |
800 let _zone = Symbol('_zone'); | |
801 let _onValue = Symbol('_onValue'); | 1818 let _onValue = Symbol('_onValue'); |
802 let _onError = Symbol('_onError'); | |
803 let _errorTest = Symbol('_errorTest'); | 1819 let _errorTest = Symbol('_errorTest'); |
804 let _whenCompleteAction = Symbol('_whenCompleteAction'); | 1820 let _whenCompleteAction = Symbol('_whenCompleteAction'); |
805 class _FutureListener extends core.Object { | 1821 class _FutureListener extends core.Object { |
806 _FutureListener$then(result, onValue, errorCallback) { | 1822 _FutureListener$then(result, onValue, errorCallback) { |
807 this.result = result; | 1823 this.result = result; |
808 this.callback = onValue; | 1824 this.callback = onValue; |
809 this.errorCallback = errorCallback; | 1825 this.errorCallback = errorCallback; |
810 this.state = errorCallback === null ? _FutureListener.STATE_THEN : _Future
Listener.STATE_THEN_ONERROR; | 1826 this.state = errorCallback === null ? _FutureListener.STATE_THEN : _Future
Listener.STATE_THEN_ONERROR; |
811 this[_nextListener] = null; | 1827 this[_nextListener] = null; |
812 } | 1828 } |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
885 let _hasError = Symbol('_hasError'); | 1901 let _hasError = Symbol('_hasError'); |
886 let _markPendingCompletion = Symbol('_markPendingCompletion'); | 1902 let _markPendingCompletion = Symbol('_markPendingCompletion'); |
887 let _value = Symbol('_value'); | 1903 let _value = Symbol('_value'); |
888 let _error = Symbol('_error'); | 1904 let _error = Symbol('_error'); |
889 let _setValue = Symbol('_setValue'); | 1905 let _setValue = Symbol('_setValue'); |
890 let _setErrorObject = Symbol('_setErrorObject'); | 1906 let _setErrorObject = Symbol('_setErrorObject'); |
891 let _setError = Symbol('_setError'); | 1907 let _setError = Symbol('_setError'); |
892 let _removeListeners = Symbol('_removeListeners'); | 1908 let _removeListeners = Symbol('_removeListeners'); |
893 let _chainForeignFuture = Symbol('_chainForeignFuture'); | 1909 let _chainForeignFuture = Symbol('_chainForeignFuture'); |
894 let _chainCoreFuture = Symbol('_chainCoreFuture'); | 1910 let _chainCoreFuture = Symbol('_chainCoreFuture'); |
895 let _complete = Symbol('_complete'); | |
896 let _completeWithValue = Symbol('_completeWithValue'); | 1911 let _completeWithValue = Symbol('_completeWithValue'); |
897 let _propagateToListeners = Symbol('_propagateToListeners'); | 1912 let _propagateToListeners = Symbol('_propagateToListeners'); |
898 let _Future$ = dart.generic(function(T) { | 1913 let _Future$ = dart.generic(function(T) { |
899 class _Future extends core.Object { | 1914 class _Future extends core.Object { |
900 _Future() { | 1915 _Future() { |
901 this[_zone] = Zone.current; | 1916 this[_zone] = Zone.current; |
902 this[_state] = _Future._INCOMPLETE; | 1917 this[_state] = _Future._INCOMPLETE; |
903 this[_resultOrListeners] = null; | 1918 this[_resultOrListeners] = null; |
904 } | 1919 } |
905 _Future$immediate(value) { | 1920 _Future$immediate(value) { |
(...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1452 } | 2467 } |
1453 static [_scheduleImmediateWithTimer](callback) { | 2468 static [_scheduleImmediateWithTimer](callback) { |
1454 Timer._createTimer(core.Duration.ZERO, callback); | 2469 Timer._createTimer(core.Duration.ZERO, callback); |
1455 } | 2470 } |
1456 } | 2471 } |
1457 dart.defineLazyProperties(_AsyncRun, { | 2472 dart.defineLazyProperties(_AsyncRun, { |
1458 get scheduleImmediateClosure() { | 2473 get scheduleImmediateClosure() { |
1459 return _initializeScheduleImmediate(); | 2474 return _initializeScheduleImmediate(); |
1460 } | 2475 } |
1461 }); | 2476 }); |
1462 let _sink = Symbol('_sink'); | |
1463 let Stream$ = dart.generic(function(T) { | |
1464 class Stream extends core.Object { | |
1465 Stream() { | |
1466 } | |
1467 Stream$fromFuture(future) { | |
1468 let controller = dart.as(new StreamController({sync: true}), _StreamCont
roller$(T)); | |
1469 future.then(((value) => { | |
1470 controller._add(dart.as(value, T)); | |
1471 controller._closeUnchecked(); | |
1472 }).bind(this), {onError: ((error, stackTrace) => { | |
1473 controller._addError(error, dart.as(stackTrace, core.StackTrace)); | |
1474 controller._closeUnchecked(); | |
1475 }).bind(this)}); | |
1476 return controller.stream; | |
1477 } | |
1478 Stream$fromIterable(data) { | |
1479 return new _GeneratedStreamImpl(() => new _IterablePendingEvents(data)); | |
1480 } | |
1481 Stream$periodic(period, computation) { | |
1482 if (computation === void 0) | |
1483 computation = null; | |
1484 if (computation === null) | |
1485 computation = (i) => null; | |
1486 let timer = null; | |
1487 let computationCount = 0; | |
1488 let controller = null; | |
1489 let watch = new core.Stopwatch(); | |
1490 // Function sendEvent: () → void | |
1491 function sendEvent() { | |
1492 watch.reset(); | |
1493 let data = computation((($tmp) => computationCount = dart.notNull($tmp
) + 1, $tmp)(computationCount)); | |
1494 controller.add(data); | |
1495 } | |
1496 // Function startPeriodicTimer: () → void | |
1497 function startPeriodicTimer() { | |
1498 dart.assert(timer === null); | |
1499 timer = new Timer.periodic(period, (timer) => { | |
1500 sendEvent(); | |
1501 }); | |
1502 } | |
1503 controller = new StreamController({sync: true, onListen: (() => { | |
1504 watch.start(); | |
1505 startPeriodicTimer(); | |
1506 }).bind(this), onPause: (() => { | |
1507 timer.cancel(); | |
1508 timer = null; | |
1509 watch.stop(); | |
1510 }).bind(this), onResume: (() => { | |
1511 dart.assert(timer === null); | |
1512 let elapsed = watch.elapsed; | |
1513 watch.start(); | |
1514 timer = new Timer(period['-'](elapsed), () => { | |
1515 timer = null; | |
1516 startPeriodicTimer(); | |
1517 sendEvent(); | |
1518 }); | |
1519 }).bind(this), onCancel: (() => { | |
1520 if (timer !== null) | |
1521 timer.cancel(); | |
1522 timer = null; | |
1523 }).bind(this)}); | |
1524 return controller.stream; | |
1525 } | |
1526 Stream$eventTransformed(source, mapSink) { | |
1527 return dart.as(new _BoundSinkStream(source, dart.as(mapSink, _SinkMapper
)), Stream$(T)); | |
1528 } | |
1529 get isBroadcast() { | |
1530 return false; | |
1531 } | |
1532 asBroadcastStream(opt$) { | |
1533 let onListen = opt$.onListen === void 0 ? null : opt$.onListen; | |
1534 let onCancel = opt$.onCancel === void 0 ? null : opt$.onCancel; | |
1535 return new _AsBroadcastStream(this, dart.as(onListen, dart.throw_("Unimp
lemented type (StreamSubscription<dynamic>) → void")), dart.as(onCancel, dart.th
row_("Unimplemented type (StreamSubscription<dynamic>) → void"))); | |
1536 } | |
1537 where(test) { | |
1538 return new _WhereStream(this, test); | |
1539 } | |
1540 map(convert) { | |
1541 return new _MapStream(this, convert); | |
1542 } | |
1543 asyncMap(convert) { | |
1544 let controller = null; | |
1545 let subscription = null; | |
1546 // Function onListen: () → void | |
1547 function onListen() { | |
1548 let add = controller.add; | |
1549 dart.assert(dart.notNull(dart.is(controller, _StreamController)) || da
rt.notNull(dart.is(controller, _BroadcastStreamController))); | |
1550 let eventSink = controller; | |
1551 let addError = eventSink[_addError]; | |
1552 subscription = this.listen(((event) => { | |
1553 let newValue = null; | |
1554 try { | |
1555 newValue = convert(event); | |
1556 } catch (e) { | |
1557 let s = dart.stackTrace(e); | |
1558 controller.addError(e, s); | |
1559 return; | |
1560 } | |
1561 | |
1562 if (dart.is(newValue, Future)) { | |
1563 subscription.pause(); | |
1564 dart.dinvoke(dart.dinvoke(newValue, 'then', add, {onError: addErro
r}), 'whenComplete', subscription.resume); | |
1565 } else { | |
1566 controller.add(newValue); | |
1567 } | |
1568 }).bind(this), {onError: dart.as(addError, core.Function), onDone: con
troller.close}); | |
1569 } | |
1570 if (this.isBroadcast) { | |
1571 controller = new StreamController.broadcast({onListen: onListen, onCan
cel: (() => { | |
1572 subscription.cancel(); | |
1573 }).bind(this), sync: true}); | |
1574 } else { | |
1575 controller = new StreamController({onListen: onListen, onPause: (() =>
{ | |
1576 subscription.pause(); | |
1577 }).bind(this), onResume: (() => { | |
1578 subscription.resume(); | |
1579 }).bind(this), onCancel: (() => { | |
1580 subscription.cancel(); | |
1581 }).bind(this), sync: true}); | |
1582 } | |
1583 return controller.stream; | |
1584 } | |
1585 asyncExpand(convert) { | |
1586 let controller = null; | |
1587 let subscription = null; | |
1588 // Function onListen: () → void | |
1589 function onListen() { | |
1590 dart.assert(dart.notNull(dart.is(controller, _StreamController)) || da
rt.notNull(dart.is(controller, _BroadcastStreamController))); | |
1591 let eventSink = controller; | |
1592 subscription = this.listen(((event) => { | |
1593 let newStream = null; | |
1594 try { | |
1595 newStream = convert(event); | |
1596 } catch (e) { | |
1597 let s = dart.stackTrace(e); | |
1598 controller.addError(e, s); | |
1599 return; | |
1600 } | |
1601 | |
1602 if (newStream !== null) { | |
1603 subscription.pause(); | |
1604 controller.addStream(newStream).whenComplete(subscription.resume); | |
1605 } | |
1606 }).bind(this), {onError: dart.as(eventSink[_addError], core.Function),
onDone: controller.close}); | |
1607 } | |
1608 if (this.isBroadcast) { | |
1609 controller = new StreamController.broadcast({onListen: onListen, onCan
cel: (() => { | |
1610 subscription.cancel(); | |
1611 }).bind(this), sync: true}); | |
1612 } else { | |
1613 controller = new StreamController({onListen: onListen, onPause: (() =>
{ | |
1614 subscription.pause(); | |
1615 }).bind(this), onResume: (() => { | |
1616 subscription.resume(); | |
1617 }).bind(this), onCancel: (() => { | |
1618 subscription.cancel(); | |
1619 }).bind(this), sync: true}); | |
1620 } | |
1621 return controller.stream; | |
1622 } | |
1623 handleError(onError, opt$) { | |
1624 let test = opt$.test === void 0 ? null : opt$.test; | |
1625 return new _HandleErrorStream(this, onError, test); | |
1626 } | |
1627 expand(convert) { | |
1628 return new _ExpandStream(this, convert); | |
1629 } | |
1630 pipe(streamConsumer) { | |
1631 return streamConsumer.addStream(this).then(((_) => streamConsumer.close(
)).bind(this)); | |
1632 } | |
1633 transform(streamTransformer) { | |
1634 return streamTransformer.bind(this); | |
1635 } | |
1636 reduce(combine) { | |
1637 let result = new _Future(); | |
1638 let seenFirst = false; | |
1639 let value = null; | |
1640 let subscription = null; | |
1641 subscription = this.listen((element) => { | |
1642 if (seenFirst) { | |
1643 _runUserCode(() => combine(value, element), dart.as((newValue) => { | |
1644 value = newValue; | |
1645 }, dart.throw_("Unimplemented type (dynamic) → dynamic")), dart.as(_
cancelAndErrorClosure(subscription, result), dart.throw_("Unimplemented type (dy
namic, StackTrace) → dynamic"))); | |
1646 } else { | |
1647 value = element; | |
1648 seenFirst = true; | |
1649 } | |
1650 }, {onError: result[_completeError], onDone: (() => { | |
1651 if (!dart.notNull(seenFirst)) { | |
1652 try { | |
1653 throw _internal.IterableElementError.noElement(); | |
1654 } catch (e) { | |
1655 let s = dart.stackTrace(e); | |
1656 _completeWithErrorCallback(result, e, s); | |
1657 } | |
1658 | |
1659 } else { | |
1660 result._complete(value); | |
1661 } | |
1662 }).bind(this), cancelOnError: true}); | |
1663 return result; | |
1664 } | |
1665 fold(initialValue, combine) { | |
1666 let result = new _Future(); | |
1667 let value = initialValue; | |
1668 let subscription = null; | |
1669 subscription = this.listen((element) => { | |
1670 _runUserCode(() => combine(value, element), (newValue) => { | |
1671 value = newValue; | |
1672 }, dart.as(_cancelAndErrorClosure(subscription, result), dart.throw_("
Unimplemented type (dynamic, StackTrace) → dynamic"))); | |
1673 }, {onError: ((e, st) => { | |
1674 result._completeError(e, dart.as(st, core.StackTrace)); | |
1675 }).bind(this), onDone: (() => { | |
1676 result._complete(value); | |
1677 }).bind(this), cancelOnError: true}); | |
1678 return result; | |
1679 } | |
1680 join(separator) { | |
1681 if (separator === void 0) | |
1682 separator = ""; | |
1683 let result = new _Future(); | |
1684 let buffer = new core.StringBuffer(); | |
1685 let subscription = null; | |
1686 let first = true; | |
1687 subscription = this.listen(((element) => { | |
1688 if (!dart.notNull(first)) { | |
1689 buffer.write(separator); | |
1690 } | |
1691 first = false; | |
1692 try { | |
1693 buffer.write(element); | |
1694 } catch (e) { | |
1695 let s = dart.stackTrace(e); | |
1696 _cancelAndErrorWithReplacement(subscription, result, e, s); | |
1697 } | |
1698 | |
1699 }).bind(this), {onError: ((e) => { | |
1700 result._completeError(e); | |
1701 }).bind(this), onDone: (() => { | |
1702 result._complete(buffer.toString()); | |
1703 }).bind(this), cancelOnError: true}); | |
1704 return result; | |
1705 } | |
1706 contains(needle) { | |
1707 let future = new _Future(); | |
1708 let subscription = null; | |
1709 subscription = this.listen((element) => { | |
1710 _runUserCode(() => dart.equals(element, needle), dart.as((isMatch) =>
{ | |
1711 if (isMatch) { | |
1712 _cancelAndValue(subscription, future, true); | |
1713 } | |
1714 }, dart.throw_("Unimplemented type (dynamic) → dynamic")), dart.as(_ca
ncelAndErrorClosure(subscription, future), dart.throw_("Unimplemented type (dyna
mic, StackTrace) → dynamic"))); | |
1715 }, {onError: future[_completeError], onDone: (() => { | |
1716 future._complete(false); | |
1717 }).bind(this), cancelOnError: true}); | |
1718 return future; | |
1719 } | |
1720 forEach(action) { | |
1721 let future = new _Future(); | |
1722 let subscription = null; | |
1723 subscription = this.listen((element) => { | |
1724 _runUserCode(() => action(element), (_) => { | |
1725 }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_("
Unimplemented type (dynamic, StackTrace) → dynamic"))); | |
1726 }, {onError: future[_completeError], onDone: (() => { | |
1727 future._complete(null); | |
1728 }).bind(this), cancelOnError: true}); | |
1729 return future; | |
1730 } | |
1731 every(test) { | |
1732 let future = new _Future(); | |
1733 let subscription = null; | |
1734 subscription = this.listen((element) => { | |
1735 _runUserCode(() => test(element), dart.as((isMatch) => { | |
1736 if (!dart.notNull(isMatch)) { | |
1737 _cancelAndValue(subscription, future, false); | |
1738 } | |
1739 }, dart.throw_("Unimplemented type (dynamic) → dynamic")), dart.as(_ca
ncelAndErrorClosure(subscription, future), dart.throw_("Unimplemented type (dyna
mic, StackTrace) → dynamic"))); | |
1740 }, {onError: future[_completeError], onDone: (() => { | |
1741 future._complete(true); | |
1742 }).bind(this), cancelOnError: true}); | |
1743 return future; | |
1744 } | |
1745 any(test) { | |
1746 let future = new _Future(); | |
1747 let subscription = null; | |
1748 subscription = this.listen((element) => { | |
1749 _runUserCode(() => test(element), dart.as((isMatch) => { | |
1750 if (isMatch) { | |
1751 _cancelAndValue(subscription, future, true); | |
1752 } | |
1753 }, dart.throw_("Unimplemented type (dynamic) → dynamic")), dart.as(_ca
ncelAndErrorClosure(subscription, future), dart.throw_("Unimplemented type (dyna
mic, StackTrace) → dynamic"))); | |
1754 }, {onError: future[_completeError], onDone: (() => { | |
1755 future._complete(false); | |
1756 }).bind(this), cancelOnError: true}); | |
1757 return future; | |
1758 } | |
1759 get length() { | |
1760 let future = new _Future(); | |
1761 let count = 0; | |
1762 this.listen((_) => { | |
1763 count = dart.notNull(count) + 1; | |
1764 }, {onError: future[_completeError], onDone: (() => { | |
1765 future._complete(count); | |
1766 }).bind(this), cancelOnError: true}); | |
1767 return future; | |
1768 } | |
1769 get isEmpty() { | |
1770 let future = new _Future(); | |
1771 let subscription = null; | |
1772 subscription = this.listen((_) => { | |
1773 _cancelAndValue(subscription, future, false); | |
1774 }, {onError: future[_completeError], onDone: (() => { | |
1775 future._complete(true); | |
1776 }).bind(this), cancelOnError: true}); | |
1777 return future; | |
1778 } | |
1779 toList() { | |
1780 let result = new List.from([]); | |
1781 let future = new _Future(); | |
1782 this.listen(((data) => { | |
1783 result.add(data); | |
1784 }).bind(this), {onError: future[_completeError], onDone: (() => { | |
1785 future._complete(result); | |
1786 }).bind(this), cancelOnError: true}); | |
1787 return future; | |
1788 } | |
1789 toSet() { | |
1790 let result = new core.Set(); | |
1791 let future = new _Future(); | |
1792 this.listen(((data) => { | |
1793 result.add(data); | |
1794 }).bind(this), {onError: future[_completeError], onDone: (() => { | |
1795 future._complete(result); | |
1796 }).bind(this), cancelOnError: true}); | |
1797 return future; | |
1798 } | |
1799 drain(futureValue) { | |
1800 if (futureValue === void 0) | |
1801 futureValue = null; | |
1802 return this.listen(null, {cancelOnError: true}).asFuture(futureValue); | |
1803 } | |
1804 take(count) { | |
1805 return dart.as(new _TakeStream(this, count), Stream$(T)); | |
1806 } | |
1807 takeWhile(test) { | |
1808 return dart.as(new _TakeWhileStream(this, dart.as(test, dart.throw_("Uni
mplemented type (dynamic) → bool"))), Stream$(T)); | |
1809 } | |
1810 skip(count) { | |
1811 return dart.as(new _SkipStream(this, count), Stream$(T)); | |
1812 } | |
1813 skipWhile(test) { | |
1814 return dart.as(new _SkipWhileStream(this, dart.as(test, dart.throw_("Uni
mplemented type (dynamic) → bool"))), Stream$(T)); | |
1815 } | |
1816 distinct(equals) { | |
1817 if (equals === void 0) | |
1818 equals = null; | |
1819 return dart.as(new _DistinctStream(this, dart.as(equals, dart.throw_("Un
implemented type (dynamic, dynamic) → bool"))), Stream$(T)); | |
1820 } | |
1821 get first() { | |
1822 let future = new _Future(); | |
1823 let subscription = null; | |
1824 subscription = this.listen((value) => { | |
1825 _cancelAndValue(subscription, future, value); | |
1826 }, { | |
1827 onError: future[_completeError], | |
1828 onDone: () => { | |
1829 try { | |
1830 throw _internal.IterableElementError.noElement(); | |
1831 } catch (e) { | |
1832 let s = dart.stackTrace(e); | |
1833 _completeWithErrorCallback(future, e, s); | |
1834 } | |
1835 | |
1836 }, | |
1837 cancelOnError: true | |
1838 }); | |
1839 return future; | |
1840 } | |
1841 get last() { | |
1842 let future = new _Future(); | |
1843 let result = null; | |
1844 let foundResult = false; | |
1845 let subscription = null; | |
1846 subscription = this.listen((value) => { | |
1847 foundResult = true; | |
1848 result = value; | |
1849 }, {onError: future[_completeError], onDone: (() => { | |
1850 if (foundResult) { | |
1851 future._complete(result); | |
1852 return; | |
1853 } | |
1854 try { | |
1855 throw _internal.IterableElementError.noElement(); | |
1856 } catch (e) { | |
1857 let s = dart.stackTrace(e); | |
1858 _completeWithErrorCallback(future, e, s); | |
1859 } | |
1860 | |
1861 }).bind(this), cancelOnError: true}); | |
1862 return future; | |
1863 } | |
1864 get single() { | |
1865 let future = new _Future(); | |
1866 let result = null; | |
1867 let foundResult = false; | |
1868 let subscription = null; | |
1869 subscription = this.listen((value) => { | |
1870 if (foundResult) { | |
1871 try { | |
1872 throw _internal.IterableElementError.tooMany(); | |
1873 } catch (e) { | |
1874 let s = dart.stackTrace(e); | |
1875 _cancelAndErrorWithReplacement(subscription, future, e, s); | |
1876 } | |
1877 | |
1878 return; | |
1879 } | |
1880 foundResult = true; | |
1881 result = value; | |
1882 }, {onError: future[_completeError], onDone: (() => { | |
1883 if (foundResult) { | |
1884 future._complete(result); | |
1885 return; | |
1886 } | |
1887 try { | |
1888 throw _internal.IterableElementError.noElement(); | |
1889 } catch (e) { | |
1890 let s = dart.stackTrace(e); | |
1891 _completeWithErrorCallback(future, e, s); | |
1892 } | |
1893 | |
1894 }).bind(this), cancelOnError: true}); | |
1895 return future; | |
1896 } | |
1897 firstWhere(test, opt$) { | |
1898 let defaultValue = opt$.defaultValue === void 0 ? null : opt$.defaultVal
ue; | |
1899 let future = new _Future(); | |
1900 let subscription = null; | |
1901 subscription = this.listen((value) => { | |
1902 _runUserCode(() => test(value), dart.as((isMatch) => { | |
1903 if (isMatch) { | |
1904 _cancelAndValue(subscription, future, value); | |
1905 } | |
1906 }, dart.throw_("Unimplemented type (dynamic) → dynamic")), dart.as(_ca
ncelAndErrorClosure(subscription, future), dart.throw_("Unimplemented type (dyna
mic, StackTrace) → dynamic"))); | |
1907 }, {onError: future[_completeError], onDone: (() => { | |
1908 if (defaultValue !== null) { | |
1909 _runUserCode(defaultValue, future[_complete], future[_completeErro
r]); | |
1910 return; | |
1911 } | |
1912 try { | |
1913 throw _internal.IterableElementError.noElement(); | |
1914 } catch (e) { | |
1915 let s = dart.stackTrace(e); | |
1916 _completeWithErrorCallback(future, e, s); | |
1917 } | |
1918 | |
1919 }).bind(this), cancelOnError: true}); | |
1920 return future; | |
1921 } | |
1922 lastWhere(test, opt$) { | |
1923 let defaultValue = opt$.defaultValue === void 0 ? null : opt$.defaultVal
ue; | |
1924 let future = new _Future(); | |
1925 let result = null; | |
1926 let foundResult = false; | |
1927 let subscription = null; | |
1928 subscription = this.listen((value) => { | |
1929 _runUserCode(() => true === test(value), dart.as((isMatch) => { | |
1930 if (isMatch) { | |
1931 foundResult = true; | |
1932 result = value; | |
1933 } | |
1934 }, dart.throw_("Unimplemented type (dynamic) → dynamic")), dart.as(_ca
ncelAndErrorClosure(subscription, future), dart.throw_("Unimplemented type (dyna
mic, StackTrace) → dynamic"))); | |
1935 }, {onError: future[_completeError], onDone: (() => { | |
1936 if (foundResult) { | |
1937 future._complete(result); | |
1938 return; | |
1939 } | |
1940 if (defaultValue !== null) { | |
1941 _runUserCode(defaultValue, future[_complete], future[_completeErro
r]); | |
1942 return; | |
1943 } | |
1944 try { | |
1945 throw _internal.IterableElementError.noElement(); | |
1946 } catch (e) { | |
1947 let s = dart.stackTrace(e); | |
1948 _completeWithErrorCallback(future, e, s); | |
1949 } | |
1950 | |
1951 }).bind(this), cancelOnError: true}); | |
1952 return future; | |
1953 } | |
1954 singleWhere(test) { | |
1955 let future = new _Future(); | |
1956 let result = null; | |
1957 let foundResult = false; | |
1958 let subscription = null; | |
1959 subscription = this.listen((value) => { | |
1960 _runUserCode(() => true === test(value), dart.as((isMatch) => { | |
1961 if (isMatch) { | |
1962 if (foundResult) { | |
1963 try { | |
1964 throw _internal.IterableElementError.tooMany(); | |
1965 } catch (e) { | |
1966 let s = dart.stackTrace(e); | |
1967 _cancelAndErrorWithReplacement(subscription, future, e, s); | |
1968 } | |
1969 | |
1970 return; | |
1971 } | |
1972 foundResult = true; | |
1973 result = value; | |
1974 } | |
1975 }, dart.throw_("Unimplemented type (dynamic) → dynamic")), dart.as(_ca
ncelAndErrorClosure(subscription, future), dart.throw_("Unimplemented type (dyna
mic, StackTrace) → dynamic"))); | |
1976 }, {onError: future[_completeError], onDone: (() => { | |
1977 if (foundResult) { | |
1978 future._complete(result); | |
1979 return; | |
1980 } | |
1981 try { | |
1982 throw _internal.IterableElementError.noElement(); | |
1983 } catch (e) { | |
1984 let s = dart.stackTrace(e); | |
1985 _completeWithErrorCallback(future, e, s); | |
1986 } | |
1987 | |
1988 }).bind(this), cancelOnError: true}); | |
1989 return future; | |
1990 } | |
1991 elementAt(index) { | |
1992 if (dart.notNull(!(typeof index == number)) || dart.notNull(index) < 0) | |
1993 throw new core.ArgumentError(index); | |
1994 let future = new _Future(); | |
1995 let subscription = null; | |
1996 let elementIndex = 0; | |
1997 subscription = this.listen((value) => { | |
1998 if (index === elementIndex) { | |
1999 _cancelAndValue(subscription, future, value); | |
2000 return; | |
2001 } | |
2002 elementIndex = 1; | |
2003 }, {onError: future[_completeError], onDone: (() => { | |
2004 future._completeError(new core.RangeError.index(index, this, "index"
, null, elementIndex)); | |
2005 }).bind(this), cancelOnError: true}); | |
2006 return future; | |
2007 } | |
2008 timeout(timeLimit, opt$) { | |
2009 let onTimeout = opt$.onTimeout === void 0 ? null : opt$.onTimeout; | |
2010 let controller = null; | |
2011 let subscription = null; | |
2012 let timer = null; | |
2013 let zone = null; | |
2014 let timeout = null; | |
2015 // Function onData: (T) → void | |
2016 function onData(event) { | |
2017 timer.cancel(); | |
2018 controller.add(event); | |
2019 timer = zone.createTimer(timeLimit, dart.as(timeout, dart.throw_("Unim
plemented type () → void"))); | |
2020 } | |
2021 // Function onError: (dynamic, StackTrace) → void | |
2022 function onError(error, stackTrace) { | |
2023 timer.cancel(); | |
2024 dart.assert(dart.notNull(dart.is(controller, _StreamController)) || da
rt.notNull(dart.is(controller, _BroadcastStreamController))); | |
2025 let eventSink = controller; | |
2026 dart.dinvoke(eventSink, '_addError', error, stackTrace); | |
2027 timer = zone.createTimer(timeLimit, dart.as(timeout, dart.throw_("Unim
plemented type () → void"))); | |
2028 } | |
2029 // Function onDone: () → void | |
2030 function onDone() { | |
2031 timer.cancel(); | |
2032 controller.close(); | |
2033 } | |
2034 // Function onListen: () → void | |
2035 function onListen() { | |
2036 zone = Zone.current; | |
2037 if (onTimeout === null) { | |
2038 timeout = (() => { | |
2039 controller.addError(new TimeoutException("No stream event", timeLi
mit), null); | |
2040 }).bind(this); | |
2041 } else { | |
2042 onTimeout = zone.registerUnaryCallback(dart.as(onTimeout, dart.throw
_("Unimplemented type (dynamic) → dynamic"))); | |
2043 let wrapper = new _ControllerEventSinkWrapper(null); | |
2044 timeout = (() => { | |
2045 wrapper[_sink] = controller; | |
2046 zone.runUnaryGuarded(dart.as(onTimeout, dart.throw_("Unimplemented
type (dynamic) → dynamic")), wrapper); | |
2047 wrapper[_sink] = null; | |
2048 }).bind(this); | |
2049 } | |
2050 subscription = this.listen(onData, {onError: onError, onDone: onDone})
; | |
2051 timer = zone.createTimer(timeLimit, dart.as(timeout, dart.throw_("Unim
plemented type () → void"))); | |
2052 } | |
2053 // Function onCancel: () → Future<dynamic> | |
2054 function onCancel() { | |
2055 timer.cancel(); | |
2056 let result = subscription.cancel(); | |
2057 subscription = null; | |
2058 return result; | |
2059 } | |
2060 controller = this.isBroadcast ? new _SyncBroadcastStreamController(onLis
ten, onCancel) : new _SyncStreamController(onListen, (() => { | |
2061 timer.cancel(); | |
2062 subscription.pause(); | |
2063 }).bind(this), (() => { | |
2064 subscription.resume(); | |
2065 timer = zone.createTimer(timeLimit, dart.as(timeout, dart.throw_("Unim
plemented type () → void"))); | |
2066 }).bind(this), onCancel); | |
2067 return controller.stream; | |
2068 } | |
2069 } | |
2070 dart.defineNamedConstructor(Stream, 'fromFuture'); | |
2071 dart.defineNamedConstructor(Stream, 'fromIterable'); | |
2072 dart.defineNamedConstructor(Stream, 'periodic'); | |
2073 dart.defineNamedConstructor(Stream, 'eventTransformed'); | |
2074 return Stream; | |
2075 }); | |
2076 let Stream = Stream$(dart.dynamic); | |
2077 let StreamSubscription$ = dart.generic(function(T) { | 2477 let StreamSubscription$ = dart.generic(function(T) { |
2078 class StreamSubscription extends core.Object { | 2478 class StreamSubscription extends core.Object { |
2079 } | 2479 } |
2080 return StreamSubscription; | 2480 return StreamSubscription; |
2081 }); | 2481 }); |
2082 let StreamSubscription = StreamSubscription$(dart.dynamic); | 2482 let StreamSubscription = StreamSubscription$(dart.dynamic); |
2083 let EventSink$ = dart.generic(function(T) { | 2483 let EventSink$ = dart.generic(function(T) { |
2084 class EventSink extends core.Object { | 2484 class EventSink extends core.Object { |
2085 } | 2485 } |
2086 return EventSink; | 2486 return EventSink; |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2194 [_recordPause](subscription) {} | 2594 [_recordPause](subscription) {} |
2195 [_recordResume](subscription) {} | 2595 [_recordResume](subscription) {} |
2196 [_recordCancel](subscription) { | 2596 [_recordCancel](subscription) { |
2197 return null; | 2597 return null; |
2198 } | 2598 } |
2199 } | 2599 } |
2200 return _StreamControllerLifecycle; | 2600 return _StreamControllerLifecycle; |
2201 }); | 2601 }); |
2202 let _StreamControllerLifecycle = _StreamControllerLifecycle$(dart.dynamic); | 2602 let _StreamControllerLifecycle = _StreamControllerLifecycle$(dart.dynamic); |
2203 let _varData = Symbol('_varData'); | 2603 let _varData = Symbol('_varData'); |
2204 let _isCanceled = Symbol('_isCanceled'); | |
2205 let _isInitialState = Symbol('_isInitialState'); | 2604 let _isInitialState = Symbol('_isInitialState'); |
2206 let _subscription = Symbol('_subscription'); | 2605 let _subscription = Symbol('_subscription'); |
2207 let _isInputPaused = Symbol('_isInputPaused'); | |
2208 let _pendingEvents = Symbol('_pendingEvents'); | 2606 let _pendingEvents = Symbol('_pendingEvents'); |
2209 let _ensurePendingEvents = Symbol('_ensurePendingEvents'); | 2607 let _ensurePendingEvents = Symbol('_ensurePendingEvents'); |
2210 let _badEventState = Symbol('_badEventState'); | 2608 let _badEventState = Symbol('_badEventState'); |
2211 let _nullFuture = Symbol('_nullFuture'); | 2609 let _nullFuture = Symbol('_nullFuture'); |
2212 let _closeUnchecked = Symbol('_closeUnchecked'); | 2610 let _closeUnchecked = Symbol('_closeUnchecked'); |
2213 let _StreamController$ = dart.generic(function(T) { | 2611 let _StreamController$ = dart.generic(function(T) { |
2214 class _StreamController extends core.Object { | 2612 class _StreamController extends core.Object { |
2215 _StreamController() { | 2613 _StreamController() { |
2216 this[_varData] = null; | 2614 this[_varData] = null; |
2217 this[_state] = _StreamController._STATE_INITIAL; | 2615 this[_state] = _StreamController._STATE_INITIAL; |
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2518 let result = notificationHandler(); | 2916 let result = notificationHandler(); |
2519 if (dart.is(result, Future)) | 2917 if (dart.is(result, Future)) |
2520 return dart.as(result, Future); | 2918 return dart.as(result, Future); |
2521 return null; | 2919 return null; |
2522 } catch (e) { | 2920 } catch (e) { |
2523 let s = dart.stackTrace(e); | 2921 let s = dart.stackTrace(e); |
2524 Zone.current.handleUncaughtError(e, s); | 2922 Zone.current.handleUncaughtError(e, s); |
2525 } | 2923 } |
2526 | 2924 |
2527 } | 2925 } |
2528 let _createSubscription = Symbol('_createSubscription'); | |
2529 let _ControllerStream$ = dart.generic(function(T) { | |
2530 class _ControllerStream extends _StreamImpl$(T) { | |
2531 _ControllerStream($_controller) { | |
2532 this[_controller] = $_controller; | |
2533 super._StreamImpl(); | |
2534 } | |
2535 [_createSubscription](onData, onError, onDone, cancelOnError) { | |
2536 return this[_controller]._subscribe(onData, onError, onDone, cancelOnErr
or); | |
2537 } | |
2538 get hashCode() { | |
2539 return dart.notNull(this[_controller].hashCode) ^ 892482866; | |
2540 } | |
2541 ['=='](other) { | |
2542 if (core.identical(this, other)) | |
2543 return true; | |
2544 if (!dart.is(other, _ControllerStream)) | |
2545 return false; | |
2546 let otherStream = dart.as(other, _ControllerStream); | |
2547 return core.identical(otherStream[_controller], this[_controller]); | |
2548 } | |
2549 } | |
2550 return _ControllerStream; | |
2551 }); | |
2552 let _ControllerStream = _ControllerStream$(dart.dynamic); | |
2553 let _ControllerSubscription$ = dart.generic(function(T) { | |
2554 class _ControllerSubscription extends _BufferingStreamSubscription$(T) { | |
2555 _ControllerSubscription($_controller, onData, onError, onDone, cancelOnErr
or) { | |
2556 this[_controller] = $_controller; | |
2557 super._BufferingStreamSubscription(onData, onError, onDone, cancelOnErro
r); | |
2558 } | |
2559 [_onCancel]() { | |
2560 return this[_controller]._recordCancel(this); | |
2561 } | |
2562 [_onPause]() { | |
2563 this[_controller]._recordPause(this); | |
2564 } | |
2565 [_onResume]() { | |
2566 this[_controller]._recordResume(this); | |
2567 } | |
2568 } | |
2569 return _ControllerSubscription; | |
2570 }); | |
2571 let _ControllerSubscription = _ControllerSubscription$(dart.dynamic); | |
2572 let _target = Symbol('_target'); | 2926 let _target = Symbol('_target'); |
2573 let _StreamSinkWrapper$ = dart.generic(function(T) { | 2927 let _StreamSinkWrapper$ = dart.generic(function(T) { |
2574 class _StreamSinkWrapper extends core.Object { | 2928 class _StreamSinkWrapper extends core.Object { |
2575 _StreamSinkWrapper($_target) { | 2929 _StreamSinkWrapper($_target) { |
2576 this[_target] = $_target; | 2930 this[_target] = $_target; |
2577 } | 2931 } |
2578 add(data) { | 2932 add(data) { |
2579 this[_target].add(data); | 2933 this[_target].add(data); |
2580 } | 2934 } |
2581 addError(error, stackTrace) { | 2935 addError(error, stackTrace) { |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2650 } | 3004 } |
2651 return _EventSink; | 3005 return _EventSink; |
2652 }); | 3006 }); |
2653 let _EventSink = _EventSink$(dart.dynamic); | 3007 let _EventSink = _EventSink$(dart.dynamic); |
2654 let _EventDispatch$ = dart.generic(function(T) { | 3008 let _EventDispatch$ = dart.generic(function(T) { |
2655 class _EventDispatch extends core.Object { | 3009 class _EventDispatch extends core.Object { |
2656 } | 3010 } |
2657 return _EventDispatch; | 3011 return _EventDispatch; |
2658 }); | 3012 }); |
2659 let _EventDispatch = _EventDispatch$(dart.dynamic); | 3013 let _EventDispatch = _EventDispatch$(dart.dynamic); |
2660 let _onData = Symbol('_onData'); | |
2661 let _onDone = Symbol('_onDone'); | |
2662 let _cancelFuture = Symbol('_cancelFuture'); | |
2663 let _setPendingEvents = Symbol('_setPendingEvents'); | |
2664 let _extractPending = Symbol('_extractPending'); | |
2665 let _isPaused = Symbol('_isPaused'); | |
2666 let _inCallback = Symbol('_inCallback'); | |
2667 let _guardCallback = Symbol('_guardCallback'); | |
2668 let _decrementPauseCount = Symbol('_decrementPauseCount'); | |
2669 let _mayResumeInput = Symbol('_mayResumeInput'); | |
2670 let _cancel = Symbol('_cancel'); | |
2671 let _isClosed = Symbol('_isClosed'); | |
2672 let _waitsForCancel = Symbol('_waitsForCancel'); | |
2673 let _canFire = Symbol('_canFire'); | |
2674 let _cancelOnError = Symbol('_cancelOnError'); | |
2675 let _incrementPauseCount = Symbol('_incrementPauseCount'); | |
2676 let _addPending = Symbol('_addPending'); | |
2677 let _checkState = Symbol('_checkState'); | |
2678 let _BufferingStreamSubscription$ = dart.generic(function(T) { | |
2679 class _BufferingStreamSubscription extends core.Object { | |
2680 _BufferingStreamSubscription(onData, onError, onDone, cancelOnError) { | |
2681 this[_zone] = Zone.current; | |
2682 this[_state] = cancelOnError ? _BufferingStreamSubscription._STATE_CANCE
L_ON_ERROR : 0; | |
2683 this[_onData] = null; | |
2684 this[_onError] = null; | |
2685 this[_onDone] = null; | |
2686 this[_cancelFuture] = null; | |
2687 this[_pending] = null; | |
2688 this.onData(onData); | |
2689 this.onError(onError); | |
2690 this.onDone(onDone); | |
2691 } | |
2692 [_setPendingEvents](pendingEvents) { | |
2693 dart.assert(this[_pending] === null); | |
2694 if (pendingEvents === null) | |
2695 return; | |
2696 this[_pending] = pendingEvents; | |
2697 if (!dart.notNull(pendingEvents.isEmpty)) { | |
2698 this[_state] = _BufferingStreamSubscription._STATE_HAS_PENDING; | |
2699 this[_pending].schedule(this); | |
2700 } | |
2701 } | |
2702 [_extractPending]() { | |
2703 dart.assert(this[_isCanceled]); | |
2704 let events = this[_pending]; | |
2705 this[_pending] = null; | |
2706 return events; | |
2707 } | |
2708 onData(handleData) { | |
2709 if (handleData === null) | |
2710 handleData = _nullDataHandler; | |
2711 this[_onData] = this[_zone].registerUnaryCallback(dart.as(handleData, da
rt.throw_("Unimplemented type (dynamic) → dynamic"))); | |
2712 } | |
2713 onError(handleError) { | |
2714 if (handleError === null) | |
2715 handleError = _nullErrorHandler; | |
2716 this[_onError] = _registerErrorHandler(handleError, this[_zone]); | |
2717 } | |
2718 onDone(handleDone) { | |
2719 if (handleDone === null) | |
2720 handleDone = _nullDoneHandler; | |
2721 this[_onDone] = this[_zone].registerCallback(handleDone); | |
2722 } | |
2723 pause(resumeSignal) { | |
2724 if (resumeSignal === void 0) | |
2725 resumeSignal = null; | |
2726 if (this[_isCanceled]) | |
2727 return; | |
2728 let wasPaused = this[_isPaused]; | |
2729 let wasInputPaused = this[_isInputPaused]; | |
2730 this[_state] = dart.notNull(this[_state]) + dart.notNull(_BufferingStrea
mSubscription._STATE_PAUSE_COUNT) | dart.notNull(_BufferingStreamSubscription._S
TATE_INPUT_PAUSED); | |
2731 if (resumeSignal !== null) | |
2732 resumeSignal.whenComplete(this.resume); | |
2733 if (!dart.notNull(wasPaused) && dart.notNull(this[_pending] !== null)) | |
2734 this[_pending].cancelSchedule(); | |
2735 if (!dart.notNull(wasInputPaused) && !dart.notNull(this[_inCallback])) | |
2736 this[_guardCallback](this[_onPause]); | |
2737 } | |
2738 resume() { | |
2739 if (this[_isCanceled]) | |
2740 return; | |
2741 if (this[_isPaused]) { | |
2742 this[_decrementPauseCount](); | |
2743 if (!dart.notNull(this[_isPaused])) { | |
2744 if (dart.notNull(this[_hasPending]) && !dart.notNull(this[_pending].
isEmpty)) { | |
2745 this[_pending].schedule(this); | |
2746 } else { | |
2747 dart.assert(this[_mayResumeInput]); | |
2748 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_I
NPUT_PAUSED); | |
2749 if (!dart.notNull(this[_inCallback])) | |
2750 this[_guardCallback](this[_onResume]); | |
2751 } | |
2752 } | |
2753 } | |
2754 } | |
2755 cancel() { | |
2756 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_WAIT_FO
R_CANCEL); | |
2757 if (this[_isCanceled]) | |
2758 return this[_cancelFuture]; | |
2759 this[_cancel](); | |
2760 return this[_cancelFuture]; | |
2761 } | |
2762 asFuture(futureValue) { | |
2763 if (futureValue === void 0) | |
2764 futureValue = null; | |
2765 let result = new _Future(); | |
2766 this[_onDone] = (() => { | |
2767 result._complete(futureValue); | |
2768 }).bind(this); | |
2769 this[_onError] = ((error, stackTrace) => { | |
2770 this.cancel(); | |
2771 result._completeError(error, dart.as(stackTrace, core.StackTrace)); | |
2772 }).bind(this); | |
2773 return result; | |
2774 } | |
2775 get [_isInputPaused]() { | |
2776 return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscr
iption._STATE_INPUT_PAUSED)) !== 0; | |
2777 } | |
2778 get [_isClosed]() { | |
2779 return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscr
iption._STATE_CLOSED)) !== 0; | |
2780 } | |
2781 get [_isCanceled]() { | |
2782 return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscr
iption._STATE_CANCELED)) !== 0; | |
2783 } | |
2784 get [_waitsForCancel]() { | |
2785 return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscr
iption._STATE_WAIT_FOR_CANCEL)) !== 0; | |
2786 } | |
2787 get [_inCallback]() { | |
2788 return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscr
iption._STATE_IN_CALLBACK)) !== 0; | |
2789 } | |
2790 get [_hasPending]() { | |
2791 return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscr
iption._STATE_HAS_PENDING)) !== 0; | |
2792 } | |
2793 get [_isPaused]() { | |
2794 return dart.notNull(this[_state]) >= dart.notNull(_BufferingStreamSubscr
iption._STATE_PAUSE_COUNT); | |
2795 } | |
2796 get [_canFire]() { | |
2797 return dart.notNull(this[_state]) < dart.notNull(_BufferingStreamSubscri
ption._STATE_IN_CALLBACK); | |
2798 } | |
2799 get [_mayResumeInput]() { | |
2800 return !dart.notNull(this[_isPaused]) && (dart.notNull(this[_pending] ==
= null) || dart.notNull(this[_pending].isEmpty)); | |
2801 } | |
2802 get [_cancelOnError]() { | |
2803 return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscr
iption._STATE_CANCEL_ON_ERROR)) !== 0; | |
2804 } | |
2805 get isPaused() { | |
2806 return this[_isPaused]; | |
2807 } | |
2808 [_cancel]() { | |
2809 this[_state] = _BufferingStreamSubscription._STATE_CANCELED; | |
2810 if (this[_hasPending]) { | |
2811 this[_pending].cancelSchedule(); | |
2812 } | |
2813 if (!dart.notNull(this[_inCallback])) | |
2814 this[_pending] = null; | |
2815 this[_cancelFuture] = this[_onCancel](); | |
2816 } | |
2817 [_incrementPauseCount]() { | |
2818 this[_state] = dart.notNull(this[_state]) + dart.notNull(_BufferingStrea
mSubscription._STATE_PAUSE_COUNT) | dart.notNull(_BufferingStreamSubscription._S
TATE_INPUT_PAUSED); | |
2819 } | |
2820 [_decrementPauseCount]() { | |
2821 dart.assert(this[_isPaused]); | |
2822 this[_state] = _BufferingStreamSubscription._STATE_PAUSE_COUNT; | |
2823 } | |
2824 [_add](data) { | |
2825 dart.assert(!dart.notNull(this[_isClosed])); | |
2826 if (this[_isCanceled]) | |
2827 return; | |
2828 if (this[_canFire]) { | |
2829 this[_sendData](data); | |
2830 } else { | |
2831 this[_addPending](new _DelayedData(data)); | |
2832 } | |
2833 } | |
2834 [_addError](error, stackTrace) { | |
2835 if (this[_isCanceled]) | |
2836 return; | |
2837 if (this[_canFire]) { | |
2838 this[_sendError](error, stackTrace); | |
2839 } else { | |
2840 this[_addPending](new _DelayedError(error, stackTrace)); | |
2841 } | |
2842 } | |
2843 [_close]() { | |
2844 dart.assert(!dart.notNull(this[_isClosed])); | |
2845 if (this[_isCanceled]) | |
2846 return; | |
2847 this[_state] = _BufferingStreamSubscription._STATE_CLOSED; | |
2848 if (this[_canFire]) { | |
2849 this[_sendDone](); | |
2850 } else { | |
2851 this[_addPending](new _DelayedDone()); | |
2852 } | |
2853 } | |
2854 [_onPause]() { | |
2855 dart.assert(this[_isInputPaused]); | |
2856 } | |
2857 [_onResume]() { | |
2858 dart.assert(!dart.notNull(this[_isInputPaused])); | |
2859 } | |
2860 [_onCancel]() { | |
2861 dart.assert(this[_isCanceled]); | |
2862 return null; | |
2863 } | |
2864 [_addPending](event) { | |
2865 let pending = dart.as(this[_pending], _StreamImplEvents); | |
2866 if (this[_pending] === null) | |
2867 pending = this[_pending] = new _StreamImplEvents(); | |
2868 pending.add(event); | |
2869 if (!dart.notNull(this[_hasPending])) { | |
2870 this[_state] = _BufferingStreamSubscription._STATE_HAS_PENDING; | |
2871 if (!dart.notNull(this[_isPaused])) { | |
2872 this[_pending].schedule(this); | |
2873 } | |
2874 } | |
2875 } | |
2876 [_sendData](data) { | |
2877 dart.assert(!dart.notNull(this[_isCanceled])); | |
2878 dart.assert(!dart.notNull(this[_isPaused])); | |
2879 dart.assert(!dart.notNull(this[_inCallback])); | |
2880 let wasInputPaused = this[_isInputPaused]; | |
2881 this[_state] = _BufferingStreamSubscription._STATE_IN_CALLBACK; | |
2882 this[_zone].runUnaryGuarded(dart.as(this[_onData], dart.throw_("Unimplem
ented type (dynamic) → dynamic")), data); | |
2883 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_IN_CALL
BACK); | |
2884 this[_checkState](wasInputPaused); | |
2885 } | |
2886 [_sendError](error, stackTrace) { | |
2887 dart.assert(!dart.notNull(this[_isCanceled])); | |
2888 dart.assert(!dart.notNull(this[_isPaused])); | |
2889 dart.assert(!dart.notNull(this[_inCallback])); | |
2890 let wasInputPaused = this[_isInputPaused]; | |
2891 // Function sendError: () → void | |
2892 function sendError() { | |
2893 if (dart.notNull(this[_isCanceled]) && !dart.notNull(this[_waitsForCan
cel])) | |
2894 return; | |
2895 this[_state] = _BufferingStreamSubscription._STATE_IN_CALLBACK; | |
2896 if (dart.is(this[_onError], ZoneBinaryCallback)) { | |
2897 this[_zone].runBinaryGuarded(dart.as(this[_onError], dart.throw_("Un
implemented type (dynamic, dynamic) → dynamic")), error, stackTrace); | |
2898 } else { | |
2899 this[_zone].runUnaryGuarded(dart.as(this[_onError], dart.throw_("Uni
mplemented type (dynamic) → dynamic")), error); | |
2900 } | |
2901 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_IN_CA
LLBACK); | |
2902 } | |
2903 if (this[_cancelOnError]) { | |
2904 this[_state] = _BufferingStreamSubscription._STATE_WAIT_FOR_CANCEL; | |
2905 this[_cancel](); | |
2906 if (dart.is(this[_cancelFuture], Future)) { | |
2907 this[_cancelFuture].whenComplete(sendError); | |
2908 } else { | |
2909 sendError(); | |
2910 } | |
2911 } else { | |
2912 sendError(); | |
2913 this[_checkState](wasInputPaused); | |
2914 } | |
2915 } | |
2916 [_sendDone]() { | |
2917 dart.assert(!dart.notNull(this[_isCanceled])); | |
2918 dart.assert(!dart.notNull(this[_isPaused])); | |
2919 dart.assert(!dart.notNull(this[_inCallback])); | |
2920 // Function sendDone: () → void | |
2921 function sendDone() { | |
2922 if (!dart.notNull(this[_waitsForCancel])) | |
2923 return; | |
2924 this[_state] = dart.notNull(_BufferingStreamSubscription._STATE_CANCEL
ED) | dart.notNull(_BufferingStreamSubscription._STATE_CLOSED) | dart.notNull(_B
ufferingStreamSubscription._STATE_IN_CALLBACK); | |
2925 this[_zone].runGuarded(this[_onDone]); | |
2926 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_IN_CA
LLBACK); | |
2927 } | |
2928 this[_cancel](); | |
2929 this[_state] = _BufferingStreamSubscription._STATE_WAIT_FOR_CANCEL; | |
2930 if (dart.is(this[_cancelFuture], Future)) { | |
2931 this[_cancelFuture].whenComplete(sendDone); | |
2932 } else { | |
2933 sendDone(); | |
2934 } | |
2935 } | |
2936 [_guardCallback](callback) { | |
2937 dart.assert(!dart.notNull(this[_inCallback])); | |
2938 let wasInputPaused = this[_isInputPaused]; | |
2939 this[_state] = _BufferingStreamSubscription._STATE_IN_CALLBACK; | |
2940 dart.dinvokef(callback); | |
2941 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_IN_CALL
BACK); | |
2942 this[_checkState](wasInputPaused); | |
2943 } | |
2944 [_checkState](wasInputPaused) { | |
2945 dart.assert(!dart.notNull(this[_inCallback])); | |
2946 if (dart.notNull(this[_hasPending]) && dart.notNull(this[_pending].isEmp
ty)) { | |
2947 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_HAS_P
ENDING); | |
2948 if (dart.notNull(this[_isInputPaused]) && dart.notNull(this[_mayResume
Input])) { | |
2949 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_INP
UT_PAUSED); | |
2950 } | |
2951 } | |
2952 while (true) { | |
2953 if (this[_isCanceled]) { | |
2954 this[_pending] = null; | |
2955 return; | |
2956 } | |
2957 let isInputPaused = this[_isInputPaused]; | |
2958 if (wasInputPaused === isInputPaused) | |
2959 break; | |
2960 this[_state] = _BufferingStreamSubscription._STATE_IN_CALLBACK; | |
2961 if (isInputPaused) { | |
2962 this[_onPause](); | |
2963 } else { | |
2964 this[_onResume](); | |
2965 } | |
2966 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_IN_CA
LLBACK); | |
2967 wasInputPaused = isInputPaused; | |
2968 } | |
2969 if (dart.notNull(this[_hasPending]) && !dart.notNull(this[_isPaused])) { | |
2970 this[_pending].schedule(this); | |
2971 } | |
2972 } | |
2973 } | |
2974 _BufferingStreamSubscription._STATE_CANCEL_ON_ERROR = 1; | |
2975 _BufferingStreamSubscription._STATE_CLOSED = 2; | |
2976 _BufferingStreamSubscription._STATE_INPUT_PAUSED = 4; | |
2977 _BufferingStreamSubscription._STATE_CANCELED = 8; | |
2978 _BufferingStreamSubscription._STATE_WAIT_FOR_CANCEL = 16; | |
2979 _BufferingStreamSubscription._STATE_IN_CALLBACK = 32; | |
2980 _BufferingStreamSubscription._STATE_HAS_PENDING = 64; | |
2981 _BufferingStreamSubscription._STATE_PAUSE_COUNT = 128; | |
2982 _BufferingStreamSubscription._STATE_PAUSE_COUNT_SHIFT = 7; | |
2983 return _BufferingStreamSubscription; | |
2984 }); | |
2985 let _BufferingStreamSubscription = _BufferingStreamSubscription$(dart.dynamic)
; | |
2986 let _StreamImpl$ = dart.generic(function(T) { | |
2987 class _StreamImpl extends Stream$(T) { | |
2988 listen(onData, opt$) { | |
2989 let onError = opt$.onError === void 0 ? null : opt$.onError; | |
2990 let onDone = opt$.onDone === void 0 ? null : opt$.onDone; | |
2991 let cancelOnError = opt$.cancelOnError === void 0 ? null : opt$.cancelOn
Error; | |
2992 cancelOnError = core.identical(true, cancelOnError); | |
2993 let subscription = this[_createSubscription](onData, onError, onDone, ca
ncelOnError); | |
2994 this[_onListen](subscription); | |
2995 return dart.as(subscription, StreamSubscription$(T)); | |
2996 } | |
2997 [_createSubscription](onData, onError, onDone, cancelOnError) { | |
2998 return new _BufferingStreamSubscription(onData, onError, onDone, cancelO
nError); | |
2999 } | |
3000 [_onListen](subscription) {} | |
3001 } | |
3002 return _StreamImpl; | |
3003 }); | |
3004 let _StreamImpl = _StreamImpl$(dart.dynamic); | |
3005 let _isUsed = Symbol('_isUsed'); | 3014 let _isUsed = Symbol('_isUsed'); |
3006 let _GeneratedStreamImpl$ = dart.generic(function(T) { | 3015 let _GeneratedStreamImpl$ = dart.generic(function(T) { |
3007 class _GeneratedStreamImpl extends _StreamImpl$(T) { | 3016 class _GeneratedStreamImpl extends _StreamImpl$(T) { |
3008 _GeneratedStreamImpl($_pending) { | 3017 _GeneratedStreamImpl($_pending) { |
3009 this[_pending] = $_pending; | 3018 this[_pending] = $_pending; |
3010 this[_isUsed] = false; | 3019 this[_isUsed] = false; |
3011 super._StreamImpl(); | 3020 super._StreamImpl(); |
3012 } | 3021 } |
3013 [_createSubscription](onData, onError, onDone, cancelOnError) { | 3022 [_createSubscription](onData, onError, onDone, cancelOnError) { |
3014 if (this[_isUsed]) | 3023 if (this[_isUsed]) |
3015 throw new core.StateError("Stream has already been listened to."); | 3024 throw new core.StateError("Stream has already been listened to."); |
3016 this[_isUsed] = true; | 3025 this[_isUsed] = true; |
3017 return ((_) => { | 3026 return ((_) => { |
3018 _._setPendingEvents(this[_pending]()); | 3027 _._setPendingEvents(this[_pending]()); |
3019 return _; | 3028 return _; |
3020 }).bind(this)(new _BufferingStreamSubscription(dart.as(onData, dart.thro
w_("Unimplemented type (dynamic) → void")), onError, onDone, cancelOnError)); | 3029 }).bind(this)(new _BufferingStreamSubscription(dart.as(onData, dart.thro
w_("Unimplemented type (dynamic) → void")), onError, onDone, cancelOnError)); |
3021 } | 3030 } |
3022 } | 3031 } |
3023 return _GeneratedStreamImpl; | 3032 return _GeneratedStreamImpl; |
3024 }); | 3033 }); |
3025 let _GeneratedStreamImpl = _GeneratedStreamImpl$(dart.dynamic); | 3034 let _GeneratedStreamImpl = _GeneratedStreamImpl$(dart.dynamic); |
3026 let _iterator = Symbol('_iterator'); | 3035 let _iterator = Symbol('_iterator'); |
| 3036 let _eventScheduled = Symbol('_eventScheduled'); |
| 3037 class _PendingEvents extends core.Object { |
| 3038 _PendingEvents() { |
| 3039 this[_state] = _PendingEvents._STATE_UNSCHEDULED; |
| 3040 } |
| 3041 get isScheduled() { |
| 3042 return this[_state] === _PendingEvents._STATE_SCHEDULED; |
| 3043 } |
| 3044 get [_eventScheduled]() { |
| 3045 return dart.notNull(this[_state]) >= dart.notNull(_PendingEvents._STATE_SC
HEDULED); |
| 3046 } |
| 3047 schedule(dispatch) { |
| 3048 if (this.isScheduled) |
| 3049 return; |
| 3050 dart.assert(!dart.notNull(this.isEmpty)); |
| 3051 if (this[_eventScheduled]) { |
| 3052 dart.assert(this[_state] === _PendingEvents._STATE_CANCELED); |
| 3053 this[_state] = _PendingEvents._STATE_SCHEDULED; |
| 3054 return; |
| 3055 } |
| 3056 scheduleMicrotask((() => { |
| 3057 let oldState = this[_state]; |
| 3058 this[_state] = _PendingEvents._STATE_UNSCHEDULED; |
| 3059 if (oldState === _PendingEvents._STATE_CANCELED) |
| 3060 return; |
| 3061 this.handleNext(dispatch); |
| 3062 }).bind(this)); |
| 3063 this[_state] = _PendingEvents._STATE_SCHEDULED; |
| 3064 } |
| 3065 cancelSchedule() { |
| 3066 if (this.isScheduled) |
| 3067 this[_state] = _PendingEvents._STATE_CANCELED; |
| 3068 } |
| 3069 } |
| 3070 _PendingEvents._STATE_UNSCHEDULED = 0; |
| 3071 _PendingEvents._STATE_SCHEDULED = 1; |
| 3072 _PendingEvents._STATE_CANCELED = 3; |
3027 let _IterablePendingEvents$ = dart.generic(function(T) { | 3073 let _IterablePendingEvents$ = dart.generic(function(T) { |
3028 class _IterablePendingEvents extends _PendingEvents { | 3074 class _IterablePendingEvents extends _PendingEvents { |
3029 _IterablePendingEvents(data) { | 3075 _IterablePendingEvents(data) { |
3030 this[_iterator] = data.iterator; | 3076 this[_iterator] = data.iterator; |
3031 super._PendingEvents(); | 3077 super._PendingEvents(); |
3032 } | 3078 } |
3033 get isEmpty() { | 3079 get isEmpty() { |
3034 return this[_iterator] === null; | 3080 return this[_iterator] === null; |
3035 } | 3081 } |
3036 handleNext(dispatch) { | 3082 handleNext(dispatch) { |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3109 perform(dispatch) { | 3155 perform(dispatch) { |
3110 dispatch._sendDone(); | 3156 dispatch._sendDone(); |
3111 } | 3157 } |
3112 get next() { | 3158 get next() { |
3113 return null; | 3159 return null; |
3114 } | 3160 } |
3115 set next(_) { | 3161 set next(_) { |
3116 throw new core.StateError("No events after a done."); | 3162 throw new core.StateError("No events after a done."); |
3117 } | 3163 } |
3118 } | 3164 } |
3119 let _eventScheduled = Symbol('_eventScheduled'); | |
3120 class _PendingEvents extends core.Object { | |
3121 _PendingEvents() { | |
3122 this[_state] = _PendingEvents._STATE_UNSCHEDULED; | |
3123 } | |
3124 get isScheduled() { | |
3125 return this[_state] === _PendingEvents._STATE_SCHEDULED; | |
3126 } | |
3127 get [_eventScheduled]() { | |
3128 return dart.notNull(this[_state]) >= dart.notNull(_PendingEvents._STATE_SC
HEDULED); | |
3129 } | |
3130 schedule(dispatch) { | |
3131 if (this.isScheduled) | |
3132 return; | |
3133 dart.assert(!dart.notNull(this.isEmpty)); | |
3134 if (this[_eventScheduled]) { | |
3135 dart.assert(this[_state] === _PendingEvents._STATE_CANCELED); | |
3136 this[_state] = _PendingEvents._STATE_SCHEDULED; | |
3137 return; | |
3138 } | |
3139 scheduleMicrotask((() => { | |
3140 let oldState = this[_state]; | |
3141 this[_state] = _PendingEvents._STATE_UNSCHEDULED; | |
3142 if (oldState === _PendingEvents._STATE_CANCELED) | |
3143 return; | |
3144 this.handleNext(dispatch); | |
3145 }).bind(this)); | |
3146 this[_state] = _PendingEvents._STATE_SCHEDULED; | |
3147 } | |
3148 cancelSchedule() { | |
3149 if (this.isScheduled) | |
3150 this[_state] = _PendingEvents._STATE_CANCELED; | |
3151 } | |
3152 } | |
3153 _PendingEvents._STATE_UNSCHEDULED = 0; | |
3154 _PendingEvents._STATE_SCHEDULED = 1; | |
3155 _PendingEvents._STATE_CANCELED = 3; | |
3156 class _StreamImplEvents extends _PendingEvents { | 3165 class _StreamImplEvents extends _PendingEvents { |
3157 _StreamImplEvents() { | 3166 _StreamImplEvents() { |
3158 this.firstPendingEvent = null; | 3167 this.firstPendingEvent = null; |
3159 this.lastPendingEvent = null; | 3168 this.lastPendingEvent = null; |
3160 super._PendingEvents(); | 3169 super._PendingEvents(); |
3161 } | 3170 } |
3162 get isEmpty() { | 3171 get isEmpty() { |
3163 return this.lastPendingEvent === null; | 3172 return this.lastPendingEvent === null; |
3164 } | 3173 } |
3165 add(event) { | 3174 add(event) { |
(...skipping 994 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4160 return new _isolate_helper.TimerImpl(milliseconds, callback); | 4169 return new _isolate_helper.TimerImpl(milliseconds, callback); |
4161 } | 4170 } |
4162 static [_createPeriodicTimer](duration, callback) { | 4171 static [_createPeriodicTimer](duration, callback) { |
4163 let milliseconds = duration.inMilliseconds; | 4172 let milliseconds = duration.inMilliseconds; |
4164 if (dart.notNull(milliseconds) < 0) | 4173 if (dart.notNull(milliseconds) < 0) |
4165 milliseconds = 0; | 4174 milliseconds = 0; |
4166 return new _isolate_helper.TimerImpl.periodic(milliseconds, callback); | 4175 return new _isolate_helper.TimerImpl.periodic(milliseconds, callback); |
4167 } | 4176 } |
4168 } | 4177 } |
4169 dart.defineNamedConstructor(Timer, 'periodic'); | 4178 dart.defineNamedConstructor(Timer, 'periodic'); |
4170 class AsyncError extends core.Object { | |
4171 AsyncError(error, stackTrace) { | |
4172 this.error = error; | |
4173 this.stackTrace = stackTrace; | |
4174 } | |
4175 toString() { | |
4176 return dart.as(dart.dinvoke(this.error, 'toString'), core.String); | |
4177 } | |
4178 } | |
4179 class _ZoneFunction extends core.Object { | 4179 class _ZoneFunction extends core.Object { |
4180 _ZoneFunction(zone, function) { | 4180 _ZoneFunction(zone, function) { |
4181 this.zone = zone; | 4181 this.zone = zone; |
4182 this['function'] = function; | 4182 this['function'] = function; |
4183 } | 4183 } |
4184 } | 4184 } |
4185 class ZoneSpecification extends core.Object { | 4185 class ZoneSpecification extends core.Object { |
4186 ZoneSpecification(opt$) { | 4186 ZoneSpecification(opt$) { |
4187 return new _ZoneSpecification(opt$); | 4187 return new _ZoneSpecification(opt$); |
4188 } | 4188 } |
(...skipping 721 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4910 } else { | 4910 } else { |
4911 return zone.run(body); | 4911 return zone.run(body); |
4912 } | 4912 } |
4913 } | 4913 } |
4914 dart.copyProperties(exports, { | 4914 dart.copyProperties(exports, { |
4915 get _hasDocument() { | 4915 get _hasDocument() { |
4916 return dart.equals(typeof document, 'object'); | 4916 return dart.equals(typeof document, 'object'); |
4917 } | 4917 } |
4918 }); | 4918 }); |
4919 // Exports: | 4919 // Exports: |
| 4920 exports.AsyncError = AsyncError; |
| 4921 exports.Stream = Stream; |
| 4922 exports.Stream$ = Stream$; |
4920 exports.DeferredLibrary = DeferredLibrary; | 4923 exports.DeferredLibrary = DeferredLibrary; |
4921 exports.DeferredLoadException = DeferredLoadException; | 4924 exports.DeferredLoadException = DeferredLoadException; |
4922 exports.Future = Future; | 4925 exports.Future = Future; |
4923 exports.Future$ = Future$; | 4926 exports.Future$ = Future$; |
4924 exports.TimeoutException = TimeoutException; | 4927 exports.TimeoutException = TimeoutException; |
4925 exports.Completer = Completer; | 4928 exports.Completer = Completer; |
4926 exports.Completer$ = Completer$; | 4929 exports.Completer$ = Completer$; |
4927 exports.scheduleMicrotask = scheduleMicrotask; | 4930 exports.scheduleMicrotask = scheduleMicrotask; |
4928 exports.Stream = Stream; | |
4929 exports.Stream$ = Stream$; | |
4930 exports.StreamSubscription = StreamSubscription; | 4931 exports.StreamSubscription = StreamSubscription; |
4931 exports.StreamSubscription$ = StreamSubscription$; | 4932 exports.StreamSubscription$ = StreamSubscription$; |
4932 exports.EventSink = EventSink; | 4933 exports.EventSink = EventSink; |
4933 exports.EventSink$ = EventSink$; | 4934 exports.EventSink$ = EventSink$; |
4934 exports.StreamView = StreamView; | 4935 exports.StreamView = StreamView; |
4935 exports.StreamView$ = StreamView$; | 4936 exports.StreamView$ = StreamView$; |
4936 exports.StreamConsumer = StreamConsumer; | 4937 exports.StreamConsumer = StreamConsumer; |
4937 exports.StreamConsumer$ = StreamConsumer$; | 4938 exports.StreamConsumer$ = StreamConsumer$; |
4938 exports.StreamSink = StreamSink; | 4939 exports.StreamSink = StreamSink; |
4939 exports.StreamSink$ = StreamSink$; | 4940 exports.StreamSink$ = StreamSink$; |
4940 exports.StreamTransformer = StreamTransformer; | 4941 exports.StreamTransformer = StreamTransformer; |
4941 exports.StreamTransformer$ = StreamTransformer$; | 4942 exports.StreamTransformer$ = StreamTransformer$; |
4942 exports.StreamIterator = StreamIterator; | 4943 exports.StreamIterator = StreamIterator; |
4943 exports.StreamIterator$ = StreamIterator$; | 4944 exports.StreamIterator$ = StreamIterator$; |
4944 exports.StreamController = StreamController; | 4945 exports.StreamController = StreamController; |
4945 exports.StreamController$ = StreamController$; | 4946 exports.StreamController$ = StreamController$; |
4946 exports.Timer = Timer; | 4947 exports.Timer = Timer; |
4947 exports.AsyncError = AsyncError; | |
4948 exports.ZoneSpecification = ZoneSpecification; | 4948 exports.ZoneSpecification = ZoneSpecification; |
4949 exports.ZoneDelegate = ZoneDelegate; | 4949 exports.ZoneDelegate = ZoneDelegate; |
4950 exports.Zone = Zone; | 4950 exports.Zone = Zone; |
4951 exports.runZoned = runZoned; | 4951 exports.runZoned = runZoned; |
4952 })(async || (async = {})); | 4952 })(async || (async = {})); |
OLD | NEW |