| 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 |