var isolate; (function(exports) { 'use strict'; class Capability extends core.Object { Capability() { return new _isolate_helper.CapabilityImpl(); } } class IsolateSpawnException extends core.Object { IsolateSpawnException(message) { this.message = message; } toString() { return `IsolateSpawnException: ${this.message}`; } } IsolateSpawnException[dart.implements] = () => [core.Exception]; let _currentIsolateCache = Symbol('_currentIsolateCache'); let _pause = Symbol('_pause'); class Isolate extends core.Object { Isolate(controlPort, opts) { let pauseCapability = opts && 'pauseCapability' in opts ? opts.pauseCapability : null; let terminateCapability = opts && 'terminateCapability' in opts ? opts.terminateCapability : null; this.controlPort = controlPort; this.pauseCapability = pauseCapability; this.terminateCapability = terminateCapability; } static get current() { return Isolate[_currentIsolateCache]; } static spawn(entryPoint, message, opts) { let paused = opts && 'paused' in opts ? opts.paused : false; try { return dart.as(_isolate_helper.IsolateNatives.spawnFunction(entryPoint, message, paused).then(dart.as((msg) => new Isolate(dart.as(dart.dindex(msg, 1), SendPort), {pauseCapability: dart.as(dart.dindex(msg, 2), Capability), terminateCapability: dart.as(dart.dindex(msg, 3), Capability)}), dart.throw_("Unimplemented type (List) → dynamic"))), async.Future$(Isolate)); } catch (e) { let st = dart.stackTrace(e); return new async.Future$(Isolate).error(e, st); } } static spawnUri(uri, args, message, opts) { let paused = opts && 'paused' in opts ? opts.paused : false; let packageRoot = opts && 'packageRoot' in opts ? opts.packageRoot : null; if (packageRoot != null) throw new core.UnimplementedError("packageRoot"); try { if (dart.is(args, core.List$(core.String))) { for (let i = 0; dart.notNull(i) < dart.notNull(args[core.$length]); i = dart.notNull(i) + 1) { if (!(typeof args[core.$get](i) == 'string')) { throw new core.ArgumentError(`Args must be a list of Strings ${args}`); } } } else if (args != null) { throw new core.ArgumentError(`Args must be a list of Strings ${args}`); } return dart.as(_isolate_helper.IsolateNatives.spawnUri(uri, args, message, paused).then(dart.as((msg) => new Isolate(dart.as(dart.dindex(msg, 1), SendPort), {pauseCapability: dart.as(dart.dindex(msg, 2), Capability), terminateCapability: dart.as(dart.dindex(msg, 3), Capability)}), dart.throw_("Unimplemented type (List) → dynamic"))), async.Future$(Isolate)); } catch (e) { let st = dart.stackTrace(e); return new async.Future$(Isolate).error(e, st); } } pause(resumeCapability) { if (resumeCapability === void 0) resumeCapability = null; if (resumeCapability == null) resumeCapability = new Capability(); this[_pause](resumeCapability); return resumeCapability; } [_pause](resumeCapability) { let message = new core.List(3); dart.dsetindex(message, 0, "pause"); dart.dsetindex(message, 1, this.pauseCapability); dart.dsetindex(message, 2, resumeCapability); this.controlPort.send(message); } resume(resumeCapability) { let message = new core.List(2); dart.dsetindex(message, 0, "resume"); dart.dsetindex(message, 1, resumeCapability); this.controlPort.send(message); } addOnExitListener(responsePort) { let message = new core.List(2); dart.dsetindex(message, 0, "add-ondone"); dart.dsetindex(message, 1, responsePort); this.controlPort.send(message); } removeOnExitListener(responsePort) { let message = new core.List(2); dart.dsetindex(message, 0, "remove-ondone"); dart.dsetindex(message, 1, responsePort); this.controlPort.send(message); } setErrorsFatal(errorsAreFatal) { let message = new core.List(3); dart.dsetindex(message, 0, "set-errors-fatal"); dart.dsetindex(message, 1, this.terminateCapability); dart.dsetindex(message, 2, errorsAreFatal); this.controlPort.send(message); } kill(priority) { if (priority === void 0) priority = Isolate.BEFORE_NEXT_EVENT; this.controlPort.send(new core.List.from(["kill", this.terminateCapability, priority])); } ping(responsePort, pingType) { if (pingType === void 0) pingType = Isolate.IMMEDIATE; let message = new core.List(3); dart.dsetindex(message, 0, "ping"); dart.dsetindex(message, 1, responsePort); dart.dsetindex(message, 2, pingType); this.controlPort.send(message); } addErrorListener(port) { let message = new core.List(2); dart.dsetindex(message, 0, "getErrors"); dart.dsetindex(message, 1, port); this.controlPort.send(message); } removeErrorListener(port) { let message = new core.List(2); dart.dsetindex(message, 0, "stopErrors"); dart.dsetindex(message, 1, port); this.controlPort.send(message); } get errors() { let controller = null; let port = null; // Function handleError: (dynamic) → void function handleError(message) { let errorDescription = dart.as(dart.dindex(message, 0), core.String); let stackDescription = dart.as(dart.dindex(message, 1), core.String); let error = new RemoteError(errorDescription, stackDescription); controller.addError(error, error.stackTrace); } controller = new async.StreamController.broadcast({ sync: true, onListen: (() => { port = new RawReceivePort(handleError); this.addErrorListener(port.sendPort); }).bind(this), onCancel: (() => { this.removeErrorListener(port.sendPort); port.close(); port = null; }).bind(this) }); return controller.stream; } } Isolate.IMMEDIATE = 0; Isolate.BEFORE_NEXT_EVENT = 1; Isolate.AS_EVENT = 2; dart.defineLazyProperties(Isolate, { get _currentIsolateCache() { return _isolate_helper.IsolateNatives.currentIsolate; } }); class SendPort extends core.Object {} SendPort[dart.implements] = () => [Capability]; class ReceivePort extends core.Object { ReceivePort() { return new _isolate_helper.ReceivePortImpl(); } fromRawReceivePort(rawPort) { return new _isolate_helper.ReceivePortImpl.fromRawReceivePort(rawPort); } } ReceivePort[dart.implements] = () => [async.Stream]; dart.defineNamedConstructor(ReceivePort, 'fromRawReceivePort'); class RawReceivePort extends core.Object { RawReceivePort(handler) { if (handler === void 0) handler = null; return new _isolate_helper.RawReceivePortImpl(handler); } } class _IsolateUnhandledException extends core.Object { _IsolateUnhandledException(message, source, stackTrace) { this.message = message; this.source = source; this.stackTrace = stackTrace; } toString() { return 'IsolateUnhandledException: exception while handling message: ' + `${this.message} \n ` + `${dart.dinvoke(dart.dinvoke(this.source, 'toString'), 'replaceAll', "\n", "\n ")}\n` + 'original stack trace:\n ' + `${this.stackTrace.toString().replaceAll("\n", "\n ")}`; } } _IsolateUnhandledException[dart.implements] = () => [core.Exception]; let _description = Symbol('_description'); class RemoteError extends core.Object { RemoteError(description, stackDescription) { this[_description] = description; this.stackTrace = new _RemoteStackTrace(stackDescription); } toString() { return this[_description]; } } RemoteError[dart.implements] = () => [core.Error]; let _trace = Symbol('_trace'); class _RemoteStackTrace extends core.Object { _RemoteStackTrace(trace) { this[_trace] = trace; } toString() { return this[_trace]; } } _RemoteStackTrace[dart.implements] = () => [core.StackTrace]; // Exports: exports.Capability = Capability; exports.IsolateSpawnException = IsolateSpawnException; exports.Isolate = Isolate; exports.SendPort = SendPort; exports.ReceivePort = ReceivePort; exports.RawReceivePort = RawReceivePort; exports.RemoteError = RemoteError; })(isolate || (isolate = {}));