(parser)
| 97 | runtime.assignToNamespace(target, this.nameSpace, this.socketName, this.socketObject); |
| 98 | } |
| 99 | static parse(parser) { |
| 100 | if (!parser.matchToken("socket")) return; |
| 101 | var name = parser.requireElement("dotOrColonPath"); |
| 102 | var qualifiedName = name.evalStatically(); |
| 103 | var nameSpace = qualifiedName.split("."); |
| 104 | var socketName = nameSpace.pop(); |
| 105 | var promises = {}; |
| 106 | var url = parser.parseURLOrExpression(); |
| 107 | var defaultTimeout = 1e4; |
| 108 | if (parser.matchToken("with")) { |
| 109 | parser.requireToken("timeout"); |
| 110 | defaultTimeout = parser.requireElement("expression").evalStatically(); |
| 111 | } |
| 112 | var jsonMessages = false; |
| 113 | var messageHandler = null; |
| 114 | if (parser.matchToken("on")) { |
| 115 | parser.requireToken("message"); |
| 116 | if (parser.matchToken("as")) { |
| 117 | if (!parser.matchToken("JSON")) parser.requireToken("json"); |
| 118 | jsonMessages = true; |
| 119 | } |
| 120 | messageHandler = parser.requireElement("commandList"); |
| 121 | parser.ensureTerminated(messageHandler); |
| 122 | } |
| 123 | var socket = new WebSocket(parseUrl(url.evalStatically())); |
| 124 | function getProxy(timeout) { |
| 125 | return new Proxy( |
| 126 | {}, |
| 127 | { |
| 128 | get: function(obj, property) { |
| 129 | if (PROXY_BLACKLIST.includes(property)) { |
| 130 | return null; |
| 131 | } else if (property === "noTimeout") { |
| 132 | return getProxy(-1); |
| 133 | } else if (property === "timeout") { |
| 134 | return function(i) { |
| 135 | return getProxy(parseInt(i)); |
| 136 | }; |
| 137 | } else { |
| 138 | return function() { |
| 139 | var uuid = genUUID(); |
| 140 | var args = []; |
| 141 | for (var i = 0; i < arguments.length; i++) { |
| 142 | args.push(arguments[i]); |
| 143 | } |
| 144 | var rpcInfo = { |
| 145 | iid: uuid, |
| 146 | function: property, |
| 147 | args |
| 148 | }; |
| 149 | socket = socket ? socket : new WebSocket(parseUrl(url.evalStatically())); |
| 150 | socket.send(JSON.stringify(rpcInfo)); |
| 151 | var promise = new Promise(function(resolve, reject) { |
| 152 | promises[uuid] = { |
| 153 | resolve, |
| 154 | reject |
| 155 | }; |
| 156 | }); |
nothing calls this directly
no test coverage detected