(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.commandRequester = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o { this.disconnected.emit({ code: data.code, reason: data.reason }); }); this.assets = new Assets(this); this.config = new Config(this); this.display = new Display(this); this.expression = new Expression(this); this.listen = new Listen(this); this.media = new Media(this); this.perception = new Perception(this); this.session = new Session(this); this.disconnected = new Event_1.Event('Disconnected'); } connect(robotName, options) { this.robotName = robotName; console.log('CommandRequester : connect'); return this.connection.connect(robotName, options) .then(() => { console.log('CommandRequester : connected, start session'); const token = this.session.start(); return token.complete.then((result) => { console.log('CommandRequester : session started, result: ', result); this.robotVersion = result.ResponseBody.Version; this.sessionId = result.ResponseBody.SessionID; }); }); } disconnect() { this.connection.close(); } generateTransactionID() { return UUID_1.generateTransactionID(); } sendRequest(command) { const requestId = this.generateTransactionID(); const header = { TransactionID: requestId, SessionID: this.sessionId, Version: this.robotVersion, Credentials: null, AppID: this.AppID }; this.connection.sendTo(this.robotName, { ClientHeader: header, Command: command }); return requestId; } sendToken(token) { token.requestId = this.sendRequest(token.protocol); if (!token.isComplete) { this.inProgressTokens.set(token.requestId, token); } } onMessage(data) { const response = data.data; let id = null; let ack = null; let event = null; if (command_protocol_1.typeguards.isAcknowledgement(response)) { id = response.ResponseHeader.TransactionID; ack = response; } else if (command_protocol_1.typeguards.isEvent(response)) { id = response.EventHeader.TransactionID; event = response; } else { return; } if (this.inProgressTokens.has(id)) { const token = this.inProgressTokens.get(id); if (ack) { token.handleAck(ack); } else { token.handleEvent(event); } if (token.isComplete) { this.inProgressTokens.delete(id); } } } } exports.CommandRequester = CommandRequester; (function (CommandRequester) { let listen; (function (listen) { listen.HotWord = HotWord_1.HotWords; })(listen = CommandRequester.listen || (CommandRequester.listen = {})); let media; (function (media) { let Camera; (function (Camera) { Camera["left"] = "Left"; Camera["right"] = "Right"; })(Camera = media.Camera || (media.Camera = {})); let CameraResolution; (function (CameraResolution) { CameraResolution["high"] = "highRes"; CameraResolution["med"] = "medRes"; CameraResolution["low"] = "lowRes"; CameraResolution["micro"] = "microRes"; })(CameraResolution = media.CameraResolution || (media.CameraResolution = {})); let VideoType; (function (VideoType) { VideoType["normal"] = "NORMAL"; VideoType["debug"] = "DEBUG"; })(VideoType = media.VideoType || (media.VideoType = {})); })(media = CommandRequester.media || (CommandRequester.media = {})); let expression; (function (expression) { let AttentionMode; (function (AttentionMode) { AttentionMode["Off"] = "OFF"; AttentionMode["Idle"] = "IDLE"; AttentionMode["Disengage"] = "DISENGAGE"; AttentionMode["Engaged"] = "ENGAGED"; AttentionMode["Speaking"] = "SPEAKING"; AttentionMode["Fixated"] = "FIXATED"; AttentionMode["Attractable"] = "ATTRACTABLE"; AttentionMode["Menu"] = "MENU"; AttentionMode["Command"] = "COMMAND"; })(AttentionMode = expression.AttentionMode || (expression.AttentionMode = {})); })(expression = CommandRequester.expression || (CommandRequester.expression = {})); let display; (function (display) { let ScreenGestureType; (function (ScreenGestureType) { ScreenGestureType["Tap"] = "TAP"; ScreenGestureType["SwipeUp"] = "SWIPEUP"; ScreenGestureType["SwipeDown"] = "SWIPEDOWN"; ScreenGestureType["SwipeLeft"] = "SWIPELEFT"; ScreenGestureType["SwipeRight"] = "SWIPERIGHT"; })(ScreenGestureType = display.ScreenGestureType || (display.ScreenGestureType = {})); })(display = CommandRequester.display || (CommandRequester.display = {})); })(CommandRequester = exports.CommandRequester || (exports.CommandRequester = {})); },{"./UUID":3,"./connection/ConnectionManager":4,"./events/Event":5,"./requests":7,"./requests/v1/listen/requesters/HotWord":22,"@jibo/command-protocol":1}],3:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function generateTransactionID() { if (typeof process === 'object') { const crypto = require('crypto'); const hashSource = 'hi' + process.hrtime(); return crypto.createHash('md5').update(hashSource).digest('hex'); } return uuid.v4().split('-').join(''); } exports.generateTransactionID = generateTransactionID; },{"crypto":undefined}],4:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Event_1 = require("../events/Event"); const PORT = 8160; const NODE = typeof process === 'object'; class ConnectionManager { constructor() { this.onConnection = this.onConnection.bind(this); this.onClose = this.onClose.bind(this); this.namedConnections = {}; this.connected = new Event_1.Event('Connected'); this.disconnected = new Event_1.Event('Disconnected'); this.message = new Event_1.Event('Message Received'); } connect(robotName, options) { if (this.isConnected(robotName)) { return Promise.resolve({ robot: robotName }); } return new Promise((resolve, reject) => { this.connected.on(resolve); this.startWebSocket(Object.assign({ hostname: robotName }, options), (err) => { this.connected.off(resolve); reject(err); }); }); } close() { for (let robot in this.namedConnections) { this.namedConnections[robot].close(); } this.namedConnections = {}; } isConnected(name) { return name in this.namedConnections; } sendTo(name, command) { if (!this.isConnected(name)) { return; } if (NODE) { this.namedConnections[name].send(JSON.stringify(command)); } else { this.namedConnections[name].send(JSON.stringify(command)); } } startWebSocket(settings, onError) { const { hostname } = settings; const port = settings.port || PORT; const protocol = settings.cert ? 'wss' : 'ws'; const connectionString = `${protocol}://${hostname}:${port}`; const options = settings.cert ? { key: settings.key, cert: settings.cert, rejectUnauthorized: false, } : {}; if (this.namedConnections[hostname]) { try { this.namedConnections[hostname].close(); } catch (e) { } this.namedConnections[hostname] = null; } try { let websocket; if (NODE) { const WebSocket = require('ws'); websocket = this.namedConnections[hostname] = new WebSocket(connectionString, options); } else { websocket = this.namedConnections[hostname] = new WebSocket(connectionString); } const errorCallback = (e) => { if (onError) { onError(e); } websocket.onerror = () => { return; }; this.onClose(hostname, 0, 'Error in websocket'); if (NODE) { websocket.removeEventListener("error", errorCallback); } else { websocket.removeEventListener("error", errorCallback); } }; const onClose = (e) => this.onClose(hostname, e.code, e.reason); if (NODE) { websocket.addEventListener("error", errorCallback); websocket.addEventListener('open', () => { this.onConnection(hostname, websocket); }); websocket.addEventListener('close', onClose); } else { websocket.addEventListener("error", errorCallback); websocket.addEventListener('open', () => { this.onConnection(hostname, websocket); }); websocket.addEventListener('close', onClose); } } catch (err) { this.namedConnections[hostname] = null; } } onConnection(hostname, ws) { this.connected.emit({ robot: hostname }); this.namedConnections[hostname] = ws; const listener = (message) => { if (message.data) { message = message.data; } let msg = JSON.parse(message.toString()); this.message.emit({ robot: hostname, data: msg }); }; if (NODE) { ws.addEventListener('message', listener); } else { ws.addEventListener('message', listener); } } onClose(robot, code, reason) { if (this.namedConnections[robot]) { this.disconnected.emit({ robot, code, reason }); this.namedConnections[robot].close(); this.namedConnections[robot] = null; } } } exports.default = ConnectionManager; },{"../events/Event":5,"ws":undefined}],5:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var EmitterMode; (function (EmitterMode) { EmitterMode["ALL_HANDLERS"] = "ALL_HANDLERS"; EmitterMode["FIRST_HANDLER"] = "FIRST_HANDLER"; EmitterMode["LAST_HANDLER"] = "LAST_HANDLER"; })(EmitterMode = exports.EmitterMode || (exports.EmitterMode = {})); class Event { constructor(name) { this.name = name; this._onceEvents = new Map(); this._events = []; this._maxListeners = 10; this._emitterMode = EmitterMode.ALL_HANDLERS; } listeners() { return this._events.slice(); } setMaxListeners(n) { this._maxListeners = n; return this; } getMaxListeners() { return this._maxListeners; } once(handler) { let handlerWrapper = this._onceEvents.get(handler); if (!handlerWrapper) { handlerWrapper = (data) => { this._onceEvents.delete(handler); this.removeListener(handlerWrapper); handler(data); }; this._onceEvents.set(handler, handlerWrapper); } return this.on(handlerWrapper); } on(handler) { if (this._events.length >= this._maxListeners) { console.warn(`Event '${this.name}': Max listeners ${this._maxListeners} reached. `, new Error().stack); } this._events.push(handler); return this; } removeLastListener() { this._events.splice(this._events.length - 1, 1); } removeFirstListener() { this._events.splice(0, 1); } addListener(handler) { return this.on(handler); } removeListener(handler) { let index = this._events.indexOf(handler); while (index !== -1) { this._events.splice(index, 1); index = this._events.indexOf(handler, index); } const onceHandler = this._onceEvents.get(handler); if (onceHandler) { let index = this._events.indexOf(onceHandler); while (index !== -1) { this._events.splice(index, 1); index = this._events.indexOf(onceHandler, index); } this._onceEvents.delete(handler); } return this; } off(handler) { return this.removeListener(handler); } removeAllListeners() { this._events = []; this._onceEvents.clear(); return this; } emit(data) { if (this._emitterMode === EmitterMode.ALL_HANDLERS) { let copy = this.listeners(); for (let i = 0; i < copy.length; i++) { let handler = copy[i]; handler(data); } } else if (this._emitterMode === EmitterMode.LAST_HANDLER) { let handler = this._events[this._events.length - 1]; if (handler) { handler(data); } return !!handler; } else if (this._emitterMode === EmitterMode.FIRST_HANDLER) { let handler = this._events[0]; if (handler) { handler(data); } return !!handler; } return this._events.length > 0; } setMode(mode) { if (!EmitterMode[mode]) { throw new Error("Emitter mode of typed events must be ALL_HANDLERS, FIRST_HANDLER, or LAST_HANDLER"); } this._emitterMode = mode; } waitFor(timeoutMs = -1) { return new Promise((resolve, reject) => { let timeoutHandle; const eventHandler = data => { if (timeoutHandle) { clearTimeout(timeoutHandle); } resolve(data); }; if (timeoutMs > 0) { timeoutHandle = setTimeout(() => { this.removeListener(eventHandler); reject('TIMEOUT'); }, timeoutMs); } this.once(eventHandler); }); } listenerCount() { return this._events.length; } } exports.Event = Event; },{}],6:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class RequestAPI { constructor(owner) { this.owner = owner; } sendToken(token) { this.owner.sendToken(token); } } exports.default = RequestAPI; },{}],7:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const v1 = require("./v1"); exports.v1 = v1; const v2 = require("./v2"); exports.v2 = v2; },{"./v1":20,"./v2":37}],8:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const RequestToken_1 = require("../../tokens/RequestToken"); const RequestAPI_1 = require("../RequestAPI"); const command_protocol_1 = require("@jibo/command-protocol"); class SessionToken extends RequestToken_1.default { constructor(owner, protocol) { super(owner, protocol); } handleAck(ack) { if (ack.Response.ResponseCode >= 400) { this.isComplete = true; this._complete.reject(ack.Response); return; } if (ack.Response.ResponseCode === command_protocol_1.ResponseCode.OK) { this.isComplete = true; this._complete.resolve(ack.Response); return; } } handleEvent(event) { } } exports.SessionToken = SessionToken; class Session extends RequestAPI_1.default { static generateProtocol() { return { Type: command_protocol_1.CommandTypes.StartSession }; } start() { const protocol = Session.generateProtocol(); return this.generateToken(protocol, true); } generateToken(protocol, andSend = false) { const token = new SessionToken(this.owner, protocol); if (andSend) { super.sendToken(token); } return token; } } exports.Session = Session; },{"../../tokens/RequestToken":43,"../RequestAPI":6,"@jibo/command-protocol":1}],9:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Assets_1 = require("./requesters/Assets"); class Assets { constructor(requester) { this.assetsRequester = new Assets_1.Assets(requester); } load(uri, name) { const protocol = Assets_1.Assets.generateLoadProtocol(uri, name); return this.assetsRequester.generateToken(protocol, true); } unload(name) { const protocol = Assets_1.Assets.generateUnloadProtocol(name); return this.assetsRequester.generateToken(protocol, true); } } exports.Assets = Assets; },{"./requesters/Assets":10}],10:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const RequestToken_1 = require("../../../../tokens/RequestToken"); const RequestAPI_1 = require("../../../RequestAPI"); const command_protocol_1 = require("@jibo/command-protocol"); class FetchAssetToken extends RequestToken_1.default { constructor(owner, protocol) { super(owner, protocol); } handleAck(ack) { if (ack.Response.ResponseCode >= 400) { this.isComplete = true; this._complete.reject(ack.Response); return; } } handleEvent(event) { const message = event.EventBody; switch (message.Event) { case command_protocol_1.FetchAssetEvents.AssetReady: this.isComplete = true; this._complete.resolve(message); break; case command_protocol_1.FetchAssetEvents.AssetFailed: this.isComplete = true; this._complete.reject(message); break; } } } exports.FetchAssetToken = FetchAssetToken; class UnloadAssetToken extends RequestToken_1.default { constructor(owner, protocol) { super(owner, protocol); } handleAck(ack) { if (ack.Response.ResponseCode >= 400) { this.isComplete = true; this._complete.reject(ack.Response); return; } } handleEvent(event) { const message = event.EventBody; switch (message.Event) { case command_protocol_1.UnloadAssetEvents.UnloadAssetDone: this.isComplete = true; this._complete.resolve(message); break; case command_protocol_1.UnloadAssetEvents.UnloadAssetFailed: this.isComplete = true; this._complete.reject(message); break; } } } exports.UnloadAssetToken = UnloadAssetToken; class Assets extends RequestAPI_1.default { static generateLoadProtocol(uri, name) { return { Type: command_protocol_1.CommandTypes.FetchAsset, URI: uri, Name: name }; } static generateUnloadProtocol(name) { return { Type: command_protocol_1.CommandTypes.UnloadAsset, Name: name }; } generateToken(protocol, andSend = false) { let token; if (protocol.Type === command_protocol_1.CommandTypes.FetchAsset) { token = new FetchAssetToken(this.owner, protocol); } else if (protocol.Type === command_protocol_1.CommandTypes.UnloadAsset) { token = new UnloadAssetToken(this.owner, protocol); } if (andSend) { super.sendToken(token); } return token; } } exports.Assets = Assets; },{"../../../../tokens/RequestToken":43,"../../../RequestAPI":6,"@jibo/command-protocol":1}],11:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Config_1 = require("./requesters/Config"); class Config { constructor(requester) { this.configRequester = new Config_1.Config(requester); } get() { const protocol = Config_1.Config.generateProtocol(); return this.configRequester.generateToken(protocol, true); } set(options) { const protocol = Config_1.Config.generateProtocol({ Mixer: options.mixer, }); return this.configRequester.generateToken(protocol, true); } } exports.Config = Config; },{"./requesters/Config":12}],12:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const RequestToken_1 = require("../../../../tokens/RequestToken"); const RequestAPI_1 = require("../../../RequestAPI"); const command_protocol_1 = require("@jibo/command-protocol"); class SetConfigToken extends RequestToken_1.default { constructor(owner, protocol) { super(owner, protocol); } handleAck(ack) { if (ack.Response.ResponseCode >= 400) { this.isComplete = true; this._complete.reject(ack.Response); return; } } handleEvent(event) { switch (event.EventBody.Event) { case command_protocol_1.AsyncCommandEvent.Stop: this.isComplete = true; this._complete.resolve(); break; case command_protocol_1.AsyncCommandEvent.Error: this.isComplete = true; this._complete.reject(event.EventBody); break; } } } exports.SetConfigToken = SetConfigToken; class GetConfigToken extends RequestToken_1.default { constructor(owner, protocol) { super(owner, protocol); } handleAck(ack) { if (ack.Response.ResponseCode >= 400) { this.isComplete = true; this._complete.reject(ack.Response); return; } } handleEvent(event) { let message = event.EventBody; switch (message.Event) { case command_protocol_1.ConfigEvents.onConfig: this.isComplete = true; this._complete.resolve(message); break; } } } exports.GetConfigToken = GetConfigToken; class Config extends RequestAPI_1.default { static generateProtocol(options) { if (options) { return { Type: command_protocol_1.CommandTypes.SetConfig, Options: options }; } return { Type: command_protocol_1.CommandTypes.GetConfig }; } generateToken(protocol, andSend = false) { let token; if (protocol.Type === command_protocol_1.CommandTypes.GetConfig) { token = new GetConfigToken(this.owner, protocol); } else if (protocol.Type === command_protocol_1.CommandTypes.SetConfig) { token = new SetConfigToken(this.owner, protocol); } if (andSend) { super.sendToken(token); } return token; } sendToken(token) { this.owner.sendToken(token); } } exports.Config = Config; },{"../../../../tokens/RequestToken":43,"../../../RequestAPI":6,"@jibo/command-protocol":1}],13:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const CommandRequester_1 = require("../../../CommandRequester"); const command_protocol_1 = require("@jibo/command-protocol"); const Display_1 = require("./requesters/Display"); const Gesture_1 = require("./requesters/Gesture"); class Display { constructor(requester) { this.displayRequest = new Display_1.Display(requester); this.subscribe = new Subscriptions(requester); } EyeView(name) { return { Type: command_protocol_1.DisplayViewType.Eye, Name: name }; } ImageView(name, data) { return { Type: command_protocol_1.DisplayViewType.Image, Name: name, Image: data }; } TextView(name, text) { return { Type: command_protocol_1.DisplayViewType.Text, Name: name, Text: text }; } EmptyView(name) { return { Type: command_protocol_1.DisplayViewType.Empty, Name: name, }; } swap(view, openTransition, closeTransition) { const protocol = Display_1.Display.generateProtocol(view, openTransition, closeTransition); return this.displayRequest.generateToken(protocol, true); } } exports.Display = Display; class Subscriptions { constructor(requester) { this.gestureRequest = new Gesture_1.Gesture(requester); } gesture(filter = {}) { const filterType = filter ? CommandRequester_1.CommandRequester.display.ScreenGestureType[filter.type] : undefined; const protocol = Gesture_1.Gesture.generateProtocol({ Area: filter.area, Type: filterType, }); return this.gestureRequest.generateToken(protocol, true); } } exports.Subscriptions = Subscriptions; },{"../../../CommandRequester":2,"./requesters/Display":14,"./requesters/Gesture":15,"@jibo/command-protocol":1}],14:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const RequestToken_1 = require("../../../../tokens/RequestToken"); const RequestAPI_1 = require("../../../RequestAPI"); const Event_1 = require("../../../../events/Event"); const command_protocol_1 = require("@jibo/command-protocol"); class DisplayToken extends RequestToken_1.default { constructor(owner, protocol) { super(owner, protocol); this.opened = new Event_1.Event('Opened'); } handleAck(ack) { if (ack.Response.ResponseCode >= 400) { this.isComplete = true; this._complete.reject(ack.Response); return; } } handleEvent(event) { const eventData = event.EventBody; switch (eventData.Event) { case command_protocol_1.AsyncCommandEvent.Stop: this.isComplete = true; this._complete.resolve(); break; case command_protocol_1.AsyncCommandEvent.Error: this.isComplete = true; this._complete.reject(eventData); break; case command_protocol_1.DisplayEvents.ViewStateChange: switch (eventData.State) { case command_protocol_1.ViewStates.Opened: this.opened.emit(); break; } } } } exports.DisplayToken = DisplayToken; class Display extends RequestAPI_1.default { static generateProtocol(view, openTransition, closeTransition) { return { Type: command_protocol_1.CommandTypes.Display, View: view, OpenTransition: openTransition, CloseTransition: closeTransition }; } generateToken(protocol, andSend = false) { const token = new DisplayToken(this.owner, protocol); if (andSend) { super.sendToken(token); } return token; } } exports.Display = Display; },{"../../../../events/Event":5,"../../../../tokens/RequestToken":43,"../../../RequestAPI":6,"@jibo/command-protocol":1}],15:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const RequestToken_1 = require("../../../../tokens/RequestToken"); const RequestAPI_1 = require("../../../RequestAPI"); const Event_1 = require("../../../../events/Event"); const command_protocol_1 = require("@jibo/command-protocol"); class ScreenGestureToken extends RequestToken_1.default { constructor(owner, protocol) { super(owner, protocol); this.tap = new Event_1.Event(command_protocol_1.ScreenGestureEvents.Tap); this.swipe = new Event_1.Event(command_protocol_1.ScreenGestureEvents.Swipe); } handleAck(ack) { if (ack.Response.ResponseCode >= 400) { this.isComplete = true; this._complete.reject(ack.Response); return; } } handleEvent(event) { const eventData = event.EventBody; switch (eventData.Event) { case command_protocol_1.AsyncCommandEvent.Stop: this.isComplete = true; this._complete.resolve(); break; case command_protocol_1.AsyncCommandEvent.Error: this.isComplete = true; this._complete.reject(eventData); break; case command_protocol_1.ScreenGestureEvents.Tap: this.tap.emit(eventData.Coordinate); break; case command_protocol_1.ScreenGestureEvents.Swipe: this.swipe.emit(eventData.Direction); break; } } } exports.ScreenGestureToken = ScreenGestureToken; class Gesture extends RequestAPI_1.default { constructor(requester) { super(requester); } static generateProtocol(filter = {}) { return { Type: command_protocol_1.CommandTypes.Subscribe, StreamType: command_protocol_1.StreamTypes.ScreenGesture, StreamFilter: filter }; } generateToken(protocol, andSend = false) { const token = new ScreenGestureToken(this.owner, protocol); if (andSend) { super.sendToken(token); } return token; } } exports.Gesture = Gesture; },{"../../../../events/Event":5,"../../../../tokens/RequestToken":43,"../../../RequestAPI":6,"@jibo/command-protocol":1}],16:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Look_1 = require("./requesters/Look"); const Say_1 = require("./requesters/Say"); const Attention_1 = require("./requesters/Attention"); class Expression { constructor(requester) { this.attentionRequest = new Attention_1.Attention(requester); this.lookRequest = new Look_1.Look(requester); this.sayRequest = new Say_1.Say(requester); } look(lookAtTarget, shouldTrack, levelHead = true) { let protocol; switch (lookAtTarget.type) { case "ANGLE": const angle = [lookAtTarget.angle.theta, lookAtTarget.angle.psi]; protocol = Look_1.Look.generateProtocol(Look_1.TargetMode.Angle, angle, levelHead, false); break; case "POSITION": const position = [lookAtTarget.position.x, lookAtTarget.position.y, lookAtTarget.position.z]; protocol = Look_1.Look.generateProtocol(Look_1.TargetMode.Position, position, levelHead, false); break; case "ENTITY": const target = lookAtTarget.target; protocol = Look_1.Look.generateProtocol(Look_1.TargetMode.Entity, target, levelHead, false); break; case "CAMERA": const coords = [lookAtTarget.coords.x, lookAtTarget.coords.y]; protocol = Look_1.Look.generateProtocol(Look_1.TargetMode.ScreenCoords, coords, levelHead, shouldTrack); break; } return this.lookRequest.generateToken(protocol, true); } say(text, speakOptions, autoRuleConfig) { const protocol = Say_1.Say.generateProtocol(text, speakOptions, autoRuleConfig); return this.sayRequest.generateToken(protocol, true); } setAttention(mode) { const protocol = Attention_1.Attention.generateProtocol(mode); return this.attentionRequest.generateToken(protocol, true); } } exports.Expression = Expression; },{"./requesters/Attention":17,"./requesters/Look":18,"./requesters/Say":19}],17:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const RequestToken_1 = require("../../../../tokens/RequestToken"); const RequestAPI_1 = require("../../../RequestAPI"); const command_protocol_1 = require("@jibo/command-protocol"); class AttentionToken extends RequestToken_1.default { constructor(owner, protocol) { super(owner, protocol); } handleAck(ack) { if (ack.Response.ResponseCode >= 400) { this.isComplete = true; this._complete.reject(ack.Response); return; } } handleEvent(event) { switch (event.EventBody.Event) { case command_protocol_1.AsyncCommandEvent.Stop: this.isComplete = true; this._complete.resolve(); break; case command_protocol_1.AsyncCommandEvent.Error: this.isComplete = true; this._complete.reject(event.EventBody); break; } } } exports.AttentionToken = AttentionToken; class Attention extends RequestAPI_1.default { static generateProtocol(mode) { return { Type: command_protocol_1.CommandTypes.SetAttention, Mode: mode, }; } generateToken(protocol, andSend = false) { const token = new AttentionToken(this.owner, protocol); if (andSend) { super.sendToken(token); } return token; } } exports.Attention = Attention; },{"../../../../tokens/RequestToken":43,"../../../RequestAPI":6,"@jibo/command-protocol":1}],18:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const RequestToken_1 = require("../../../../tokens/RequestToken"); const RequestAPI_1 = require("../../../RequestAPI"); const command_protocol_1 = require("@jibo/command-protocol"); var TargetMode; (function (TargetMode) { TargetMode[TargetMode["Position"] = 0] = "Position"; TargetMode[TargetMode["Angle"] = 1] = "Angle"; TargetMode[TargetMode["Entity"] = 2] = "Entity"; TargetMode[TargetMode["ScreenCoords"] = 3] = "ScreenCoords"; })(TargetMode = exports.TargetMode || (exports.TargetMode = {})); class LookToken extends RequestToken_1.default { constructor(owner, protocol) { super(owner, protocol); } handleAck(ack) { if (ack.Response.ResponseCode >= 400) { this.isComplete = true; this._complete.reject(ack.Response); return; } } handleEvent(event) { const eventData = event.EventBody; switch (eventData.Event) { case command_protocol_1.AsyncCommandEvent.Stop: this.isComplete = true; this._complete.resolve(); break; case command_protocol_1.AsyncCommandEvent.Error: this.isComplete = true; this._complete.reject(eventData); break; case command_protocol_1.LookAtEvents.LookAtAchieved: this.isComplete = true; this._complete.resolve(eventData); break; case command_protocol_1.LookAtEvents.TrackEntityLost: this.isComplete = true; this._complete.resolve(eventData); break; } } } exports.LookToken = LookToken; class Look extends RequestAPI_1.default { static generateProtocol(targetMode, target, levelHead, shouldTrack = false) { let lookAtTarget; switch (targetMode) { case TargetMode.Position: lookAtTarget = { Position: target }; break; case TargetMode.Angle: lookAtTarget = { Angle: target }; break; case TargetMode.Entity: lookAtTarget = { Entity: target }; break; case TargetMode.ScreenCoords: lookAtTarget = { ScreenCoords: target }; break; } return { Type: command_protocol_1.CommandTypes.LookAt, LookAtTarget: lookAtTarget, TrackFlag: shouldTrack, LevelHeadFlag: levelHead }; } generateToken(protocol, andSend = false) { const token = new LookToken(this.owner, protocol); if (andSend) { super.sendToken(token); } return token; } } exports.Look = Look; },{"../../../../tokens/RequestToken":43,"../../../RequestAPI":6,"@jibo/command-protocol":1}],19:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const RequestToken_1 = require("../../../../tokens/RequestToken"); const RequestAPI_1 = require("../../../RequestAPI"); const command_protocol_1 = require("@jibo/command-protocol"); class SayToken extends RequestToken_1.default { constructor(owner, protocol) { super(owner, protocol); } handleAck(ack) { if (ack.Response.ResponseCode >= 400) { this.isComplete = true; this._complete.reject(ack.Response); return; } } handleEvent(event) { switch (event.EventBody.Event) { case command_protocol_1.AsyncCommandEvent.Stop: this.isComplete = true; this._complete.resolve(); break; case command_protocol_1.AsyncCommandEvent.Error: this.isComplete = true; this._complete.reject(event.EventBody); break; } } } exports.SayToken = SayToken; class Say extends RequestAPI_1.default { static generateProtocol(esmlUri, speakOptions, autoRuleConfig) { return { Type: command_protocol_1.CommandTypes.Say, ESML: esmlUri, SpeakOptions: speakOptions, AutoRuleConfig: autoRuleConfig }; } generateToken(protocol, andSend = false) { const token = new SayToken(this.owner, protocol); if (andSend) { super.sendToken(token); } return token; } } exports.Say = Say; },{"../../../../tokens/RequestToken":43,"../../../RequestAPI":6,"@jibo/command-protocol":1}],20:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const assets = require("./assets/Assets"); exports.assets = assets; const config = require("./config/Config"); exports.config = config; const display = require("./display/Display"); exports.display = display; const expression = require("./expression/Expression"); exports.expression = expression; const listen = require("./listen/Listen"); exports.listen = listen; const media = require("./media/Media"); exports.media = media; const session = require("./Session"); exports.session = session; const perception = require("./perception/Perception"); exports.perception = perception; },{"./Session":8,"./assets/Assets":9,"./config/Config":11,"./display/Display":13,"./expression/Expression":16,"./listen/Listen":21,"./media/Media":24,"./perception/Perception":27}],21:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Listen_1 = require("./requesters/Listen"); const HotWord_1 = require("./requesters/HotWord"); class Listen { constructor(requester) { this.listenRequest = new Listen_1.Listen(requester); this.subscribe = new Subscriptions(requester); } start(maxSpeechTimeout = 15, maxNoSpeechTimeout = 15, languageCode = 'en-US') { const protocol = Listen_1.Listen.generateProtocol(maxSpeechTimeout, maxNoSpeechTimeout, languageCode); return this.listenRequest.generateToken(protocol, true); } } exports.Listen = Listen; class Subscriptions { constructor(requester) { this.hotWordRequest = new HotWord_1.HotWord(requester); } hotword(listen = false, hotword = HotWord_1.HotWords.HEY_JIBO) { const protocol = HotWord_1.HotWord.generateProtocol(listen, hotword); return this.hotWordRequest.generateToken(protocol, true); } } exports.Subscriptions = Subscriptions; },{"./requesters/HotWord":22,"./requesters/Listen":23}],22:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const RequestToken_1 = require("../../../../tokens/RequestToken"); const Event_1 = require("../../../../events/Event"); const RequestAPI_1 = require("../../../RequestAPI"); const command_protocol_1 = require("@jibo/command-protocol"); var HotWords; (function (HotWords) { HotWords["HEY_JIBO"] = "hey jibo"; })(HotWords = exports.HotWords || (exports.HotWords = {})); class HotWordToken extends RequestToken_1.default { constructor(owner, protocol) { super(owner, protocol); this.hotWordHeard = new Event_1.Event('Heard hot word'); this.listenResult = new Event_1.Event('Listen complete'); } handleAck(ack) { if (ack.Response.ResponseCode >= 400) { this.isComplete = true; this._complete.reject(ack.Response); return; } } handleEvent(event) { const message = event.EventBody; switch (message.Event) { case command_protocol_1.HotWordEvents.HotWordHeard: this.hotWordHeard.emit(message); break; } } } exports.HotWordToken = HotWordToken; class HotWord extends RequestAPI_1.default { constructor(requester) { super(requester); } static generateProtocol(listen = false, hotWord = HotWords.HEY_JIBO) { return { Type: command_protocol_1.CommandTypes.Subscribe, StreamType: command_protocol_1.StreamTypes.HotWord, StreamFilter: {}, Listen: listen }; } generateToken(protocol, andSend = false) { const token = new HotWordToken(this.owner, protocol); if (andSend) { super.sendToken(token); } return token; } sendToken(token) { this.owner.sendToken(token); } } exports.HotWord = HotWord; },{"../../../../events/Event":5,"../../../../tokens/RequestToken":43,"../../../RequestAPI":6,"@jibo/command-protocol":1}],23:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const RequestToken_1 = require("../../../../tokens/RequestToken"); const Event_1 = require("../../../../events/Event"); const RequestAPI_1 = require("../../../RequestAPI"); const command_protocol_1 = require("@jibo/command-protocol"); class ListenToken extends RequestToken_1.default { constructor(owner, protocol) { super(owner, protocol); this.update = new Event_1.Event('Update of listen status'); } handleAck(ack) { if (ack.Response.ResponseCode >= 400) { this.isComplete = true; this._complete.reject(ack.Response); return; } } handleEvent(event) { const eventData = event.EventBody; switch (eventData.Event) { case command_protocol_1.AsyncCommandEvent.Stop: this.isComplete = true; this._complete.reject(eventData); break; case command_protocol_1.ListenEvents.ListenResult: this.isComplete = true; this._complete.resolve(eventData); this.update.emit(eventData); break; case command_protocol_1.AsyncCommandEvent.Error: this.isComplete = true; this._complete.reject(eventData); break; } } } exports.ListenToken = ListenToken; class Listen extends RequestAPI_1.default { static generateProtocol(maxSpeechTimeout = 15, maxNoSpeechTimeout = 15, languageCode = 'en-US') { return { Type: command_protocol_1.CommandTypes.Listen, MaxSpeechTimeout: maxSpeechTimeout, MaxNoSpeechTimeout: maxNoSpeechTimeout, LanguageCode: languageCode }; } generateToken(protocol, andSend = false) { const token = new ListenToken(this.owner, protocol); if (andSend) { super.sendToken(token); } return token; } } exports.Listen = Listen; },{"../../../../events/Event":5,"../../../../tokens/RequestToken":43,"../../../RequestAPI":6,"@jibo/command-protocol":1}],24:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Photo_1 = require("./requesters/Photo"); const Video_1 = require("./requesters/Video"); const CommandRequester_1 = require("../../../CommandRequester"); class Media { constructor(requester) { this.capture = new Capture(requester); } } exports.Media = Media; class Capture { constructor(requester) { this.photoRequest = new Photo_1.Photo(requester); this.videoRequest = new Video_1.Video(requester); } photo(camera = CommandRequester_1.CommandRequester.media.Camera.left, resolution = CommandRequester_1.CommandRequester.media.CameraResolution.low, distortion = true) { const cameraType = CommandRequester_1.CommandRequester.media.Camera[camera]; const protocol = Photo_1.Photo.generateProtocol(cameraType, resolution, distortion); return this.photoRequest.generateToken(protocol, true); } video(videoType = CommandRequester_1.CommandRequester.media.VideoType.normal, duration = 0) { const protocol = Video_1.Video.generateProtocol(videoType, duration); return this.videoRequest.generateToken(protocol, true); } } exports.Capture = Capture; },{"../../../CommandRequester":2,"./requesters/Photo":25,"./requesters/Video":26}],25:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const RequestToken_1 = require("../../../../tokens/RequestToken"); const RequestAPI_1 = require("../../../RequestAPI"); const command_protocol_1 = require("@jibo/command-protocol"); class PhotoToken extends RequestToken_1.default { constructor(owner, protocol) { super(owner, protocol); } handleAck(ack) { if (ack.Response.ResponseCode >= command_protocol_1.ResponseCode.BadRequest) { this.isComplete = true; this._complete.reject(ack.Response); return; } } handleEvent(event) { const message = event.EventBody; if (message.Event === command_protocol_1.PhotoEvents.TakePhoto) { this.isComplete = true; this._complete.resolve(message); } } } exports.PhotoToken = PhotoToken; class Photo extends RequestAPI_1.default { static generateProtocol(camera = 'left', resolution = 'lowRes', removeDistortion = true) { return { Type: command_protocol_1.CommandTypes.TakePhoto, Resolution: resolution, Camera: camera, Distortion: removeDistortion }; } generateToken(protocol, andSend = false) { const token = new PhotoToken(this.owner, protocol); if (andSend) { super.sendToken(token); } return token; } } exports.Photo = Photo; },{"../../../../tokens/RequestToken":43,"../../../RequestAPI":6,"@jibo/command-protocol":1}],26:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const RequestToken_1 = require("../../../../tokens/RequestToken"); const RequestAPI_1 = require("../../../RequestAPI"); const Event_1 = require("../../../../events/Event"); const command_protocol_1 = require("@jibo/command-protocol"); class VideoToken extends RequestToken_1.default { constructor(owner, protocol) { super(owner, protocol); this.streamReady = new Event_1.Event('Video ready for streaming'); } handleAck(ack) { if (ack.Response.ResponseCode >= command_protocol_1.ResponseCode.BadRequest) { this.isComplete = true; this._complete.reject(ack.Response); return; } } handleEvent(event) { const eventData = event.EventBody; if (eventData.Event === command_protocol_1.VideoEvents.VideoReady) { this.streamReady.emit(eventData.URI); } } } exports.VideoToken = VideoToken; class Video extends RequestAPI_1.default { static generateProtocol(type = 'NORMAL', duration = 0) { return { Type: command_protocol_1.CommandTypes.Video, Duration: duration, VideoType: type }; } generateToken(protocol, andSend = false) { const token = new VideoToken(this.owner, protocol); if (andSend) { super.sendToken(token); } return token; } } exports.Video = Video; },{"../../../../events/Event":5,"../../../../tokens/RequestToken":43,"../../../RequestAPI":6,"@jibo/command-protocol":1}],27:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Motion_1 = require("./requesters/Motion"); const HeadTouch_1 = require("./requesters/HeadTouch"); const FaceTrack_1 = require("./requesters/FaceTrack"); class Perception { constructor(requester) { this.subscribe = new Subscriptions(requester); } } exports.Perception = Perception; class Subscriptions { constructor(requester) { this.motionRequest = new Motion_1.Motion(requester); this.headTouchRequest = new HeadTouch_1.HeadTouch(requester); this.faceTrackRequest = new FaceTrack_1.FaceTrack(requester); } headTouch() { const protocol = HeadTouch_1.HeadTouch.generateProtocol(); return this.headTouchRequest.generateToken(protocol, true); } motion() { const protocol = Motion_1.Motion.generateProtocol(); return this.motionRequest.generateToken(protocol, true); } face() { const protocol = FaceTrack_1.FaceTrack.generateProtocol(); return this.faceTrackRequest.generateToken(protocol, true); } } exports.Subscriptions = Subscriptions; },{"./requesters/FaceTrack":28,"./requesters/HeadTouch":29,"./requesters/Motion":30}],28:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const RequestToken_1 = require("../../../../tokens/RequestToken"); const RequestAPI_1 = require("../../../RequestAPI"); const Event_1 = require("../../../../events/Event"); const command_protocol_1 = require("@jibo/command-protocol"); class FaceTrackToken extends RequestToken_1.default { constructor(owner, protocol) { super(owner, protocol); this.update = new Event_1.Event('Update of tracked entities'); this.gained = new Event_1.Event('Entity found'); this.lost = new Event_1.Event('Entity lost'); } handleAck(ack) { if (ack.Response.ResponseCode >= 400) { this.isComplete = true; this._complete.reject(ack.Response); return; } } handleEvent(event) { const message = event.EventBody; switch (message.Event) { case command_protocol_1.EntityTrackEvents.TrackGained: this.gained.emit(message.Tracks); break; case command_protocol_1.EntityTrackEvents.TrackUpdate: this.update.emit(message.Tracks); break; case command_protocol_1.EntityTrackEvents.TrackLost: this.lost.emit(message.Tracks); break; } } } exports.FaceTrackToken = FaceTrackToken; class FaceTrack extends RequestAPI_1.default { static generateProtocol() { return { Type: command_protocol_1.CommandTypes.Subscribe, StreamType: command_protocol_1.StreamTypes.Entity, StreamFilter: {} }; } generateToken(protocol, andSend = false) { const token = new FaceTrackToken(this.owner, protocol); if (andSend) { super.sendToken(token); } return token; } } exports.FaceTrack = FaceTrack; },{"../../../../events/Event":5,"../../../../tokens/RequestToken":43,"../../../RequestAPI":6,"@jibo/command-protocol":1}],29:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const RequestToken_1 = require("../../../../tokens/RequestToken"); const RequestAPI_1 = require("../../../RequestAPI"); const Event_1 = require("../../../../events/Event"); const command_protocol_1 = require("@jibo/command-protocol"); class HeadTouchToken extends RequestToken_1.default { constructor(owner, protocol) { super(owner, protocol); this.update = new Event_1.Event('Update of head touch status'); } handleAck(ack) { if (ack.Response.ResponseCode >= 400) { this.isComplete = true; this._complete.reject(ack.Response); return; } } handleEvent(event) { const message = event.EventBody; switch (message.Event) { case command_protocol_1.AsyncCommandEvent.Stop: this.isComplete = true; this._complete.resolve(); break; case command_protocol_1.AsyncCommandEvent.Error: this.isComplete = true; this._complete.reject(); break; case command_protocol_1.HeadTouchEvents.HeadTouched: this.update.emit(message.Pads); break; } } } exports.HeadTouchToken = HeadTouchToken; class HeadTouch extends RequestAPI_1.default { static generateProtocol() { return { Type: command_protocol_1.CommandTypes.Subscribe, StreamType: command_protocol_1.StreamTypes.HeadTouch, StreamFilter: {}, }; } generateToken(protocol, andSend = false) { const token = new HeadTouchToken(this.owner, protocol); if (andSend) { super.sendToken(token); } return token; } } exports.HeadTouch = HeadTouch; },{"../../../../events/Event":5,"../../../../tokens/RequestToken":43,"../../../RequestAPI":6,"@jibo/command-protocol":1}],30:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const RequestAPI_1 = require("../../../RequestAPI"); const RequestToken_1 = require("../../../../tokens/RequestToken"); const Event_1 = require("../../../../events/Event"); const command_protocol_1 = require("@jibo/command-protocol"); class MotionToken extends RequestToken_1.default { constructor(owner, protocol) { super(owner, protocol); this.update = new Event_1.Event('Update of motion entities'); } handleAck(ack) { if (ack.Response.ResponseCode >= 400) { this.isComplete = true; this._complete.reject(ack.Response); return; } } handleEvent(event) { const message = event.EventBody; switch (message.Event) { case command_protocol_1.MotionEvents.MotionDetected: this.update.emit(message.Motions); break; } } } exports.MotionToken = MotionToken; class Motion extends RequestAPI_1.default { static generateProtocol() { return { Type: command_protocol_1.CommandTypes.Subscribe, StreamType: command_protocol_1.StreamTypes.Motion, StreamFilter: {} }; } generateToken(protocol, andSend = false) { const token = new MotionToken(this.owner, protocol); if (andSend) { super.sendToken(token); } return token; } } exports.Motion = Motion; },{"../../../../events/Event":5,"../../../../tokens/RequestToken":43,"../../../RequestAPI":6,"@jibo/command-protocol":1}],31:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const UUID_1 = require("../../UUID"); class Display { static generateProtocol(name, view, layer, visible, keepDisplay, onCancel, overlay) { return { id: UUID_1.generateTransactionID(), type: "DISPLAY", name, view, layer, overlay, visible, keepDisplay, onCancel }; } } exports.Display = Display; },{"../../UUID":3}],32:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const UUID_1 = require("../../UUID"); class Listen { static generateProtocol(rules, intents) { const contexts = Array.isArray(rules) ? rules : [rules]; return { id: UUID_1.generateTransactionID(), type: "LISTEN", contexts, intents }; } } exports.Listen = Listen; },{"../../UUID":3}],33:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const UUID_1 = require("../../UUID"); class Play { static generateProtocol(esml, config, options) { return { id: UUID_1.generateTransactionID(), type: "PLAY", autoRuleConfig: config, speakOptions: options, esml }; } } exports.Play = Play; },{"../../UUID":3}],34:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const UUID_1 = require("../../UUID"); class SLIM { static generateProtocol(config, options) { return { id: UUID_1.generateTransactionID(), type: "SLIM", config, options }; } } exports.SLIM = SLIM; },{"../../UUID":3}],35:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const UUID_1 = require("../../../UUID"); class ImpactEmotion { static generateProtocol(valence, confidence) { return { id: UUID_1.generateTransactionID(), type: "IMPACT_EMOTION", valence, confidence }; } } exports.ImpactEmotion = ImpactEmotion; },{"../../../UUID":3}],36:[function(require,module,exports){ "use strict"; function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } Object.defineProperty(exports, "__esModule", { value: true }); __export(require("./ImpactEmotion")); },{"./ImpactEmotion":35}],37:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const structural = require("./structural"); exports.structural = structural; const emotion = require("./emotion"); exports.emotion = emotion; const perception = require("./perception"); exports.perception = perception; const play = require("./Play"); exports.play = play; const listen = require("./Listen"); exports.listen = listen; const display = require("./Display"); exports.display = display; const slim = require("./SLIM"); exports.slim = slim; },{"./Display":31,"./Listen":32,"./Play":33,"./SLIM":34,"./emotion":36,"./perception":39,"./structural":42}],38:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const UUID_1 = require("../../../UUID"); class SetPresentPerson { static generateProtocol(looperId, source, confidence) { return { id: UUID_1.generateTransactionID(), type: "SET_PRESENT_PERSON", looperId, source, confidence }; } } exports.SetPresentPerson = SetPresentPerson; },{"../../../UUID":3}],39:[function(require,module,exports){ "use strict"; function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } Object.defineProperty(exports, "__esModule", { value: true }); __export(require("./SetPresentPerson")); },{"./SetPresentPerson":38}],40:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const UUID_1 = require("../../../UUID"); class Parallel { static generateProtocol(behaviors, succeedOnFirst = false) { return { id: UUID_1.generateTransactionID(), type: "PARALLEL", children: behaviors, succeedOnFirst }; } } exports.Parallel = Parallel; },{"../../../UUID":3}],41:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const UUID_1 = require("../../../UUID"); class Sequence { static generateProtocol(behaviors) { return { id: UUID_1.generateTransactionID(), type: "SEQUENCE", children: behaviors }; } } exports.Sequence = Sequence; },{"../../../UUID":3}],42:[function(require,module,exports){ "use strict"; function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } Object.defineProperty(exports, "__esModule", { value: true }); __export(require("./Parallel")); __export(require("./Sequence")); },{"./Parallel":40,"./Sequence":41}],43:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ExternalPromise_1 = require("../utils/ExternalPromise"); class RequestToken { constructor(owner, protocol) { this.owner = owner; this.protocol = protocol; this.isComplete = false; this._complete = new ExternalPromise_1.default(); } get complete() { return this._complete.promise; } cancel() { if (this.isComplete) { return; } this.isComplete = true; this._complete.reject(); const cancel = { Type: "Cancel", ID: this.requestId }; this.owner.sendRequest(cancel); } } exports.default = RequestToken; },{"../utils/ExternalPromise":44}],44:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class ExternalPromise { constructor() { this.promise = new Promise((res, rej) => { this.resolve = res; this.reject = rej; }); } } exports.default = ExternalPromise; },{}],45:[function(require,module,exports){ "use strict"; function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } Object.defineProperty(exports, "__esModule", { value: true }); var CommandRequester_1 = require("./CommandRequester"); exports.CommandRequester = CommandRequester_1.CommandRequester; __export(require("./requests")); const enums = require("@jibo/command-protocol"); exports.enums = enums; var Event_1 = require("./events/Event"); exports.Event = Event_1.Event; },{"./CommandRequester":2,"./events/Event":5,"./requests":7,"@jibo/command-protocol":1}]},{},[45])(45) }); //# sourceMappingURL=command-requester.js.map