MCPcopy Create free account
hub / github.com/bigskysoftware/_hyperscript / parse

Method parse

www/js/ext/socket.js:99–221  ·  view source on GitHub ↗
(parser)

Source from the content-addressed store, hash-verified

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 });

Callers

nothing calls this directly

Calls 11

parseUrlFunction · 0.70
matchTokenMethod · 0.45
requireElementMethod · 0.45
evalStaticallyMethod · 0.45
parseURLOrExpressionMethod · 0.45
requireTokenMethod · 0.45
ensureTerminatedMethod · 0.45
resolveMethod · 0.45
makeContextMethod · 0.45
executeMethod · 0.45
setParentMethod · 0.45

Tested by

no test coverage detected