UNPKG

bucklescript-tea

Version:
1,498 lines (1,478 loc) 42.7 kB
// Generated by BUCKLESCRIPT, PLEASE EDIT WITH CARE 'use strict'; var List = require("bs-platform/lib/js/list.js"); var Block = require("bs-platform/lib/js/block.js"); var Curry = require("bs-platform/lib/js/curry.js"); var Tea_json = require("./tea_json.js"); var Caml_option = require("bs-platform/lib/js/caml_option.js"); var Caml_primitive = require("bs-platform/lib/js/caml_primitive.js"); var Web_xmlhttprequest = require("./web_xmlhttprequest.js"); var Caml_builtin_exceptions = require("bs-platform/lib/js/caml_builtin_exceptions.js"); function string_of_error(param) { if (typeof param === "number") { switch (param) { case /* Timeout */0 : return "Timeout"; case /* NetworkError */1 : return "Unknown network error"; case /* Aborted */2 : return "Request aborted"; } } else { switch (param.tag | 0) { case /* BadUrl */0 : return "Bad Url: " + param[0]; case /* BadStatus */1 : return "Bad Status: " + param[0].url; case /* BadPayload */2 : return "Bad Payload: " + param[1].url; } } } var emptyRequestEvents = { onreadystatechange: undefined, onprogress: undefined }; function expectStringResponse(func) { return /* Expect */[ /* TextResponseType */5, (function (param) { var body = param.body; if (typeof body === "number" || body.tag !== /* TextResponse */5) { return /* Error */Block.__(1, ["Non-text response returned"]); } else { return Curry._1(func, body[0]); } }) ]; } var expectString = expectStringResponse((function (resString) { return /* Ok */Block.__(0, [resString]); })); function request(rawRequest) { return /* Request */[ rawRequest, undefined ]; } function getString(url) { return /* Request */[ { "method'": "GET", headers: /* [] */0, url: url, body: /* EmptyBody */0, expect: expectString, timeout: undefined, withCredentials: false }, undefined ]; } function toTask(param) { var request = param[0]; var height = function (param) { if (param) { return param[/* h */4]; } else { return 0; } }; var create = function (l, x, d, r) { var hl = height(l); var hr = height(r); return /* Node */[ /* l */l, /* v */x, /* d */d, /* r */r, /* h */hl >= hr ? hl + 1 | 0 : hr + 1 | 0 ]; }; var singleton = function (x, d) { return /* Node */[ /* l : Empty */0, /* v */x, /* d */d, /* r : Empty */0, /* h */1 ]; }; var bal = function (l, x, d, r) { var hl = l ? l[/* h */4] : 0; var hr = r ? r[/* h */4] : 0; if (hl > (hr + 2 | 0)) { if (l) { var lr = l[/* r */3]; var ld = l[/* d */2]; var lv = l[/* v */1]; var ll = l[/* l */0]; if (height(ll) >= height(lr)) { return create(ll, lv, ld, create(lr, x, d, r)); } else if (lr) { return create(create(ll, lv, ld, lr[/* l */0]), lr[/* v */1], lr[/* d */2], create(lr[/* r */3], x, d, r)); } else { throw [ Caml_builtin_exceptions.invalid_argument, "Map.bal" ]; } } else { throw [ Caml_builtin_exceptions.invalid_argument, "Map.bal" ]; } } else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[/* r */3]; var rd = r[/* d */2]; var rv = r[/* v */1]; var rl = r[/* l */0]; if (height(rr) >= height(rl)) { return create(create(l, x, d, rl), rv, rd, rr); } else if (rl) { return create(create(l, x, d, rl[/* l */0]), rl[/* v */1], rl[/* d */2], create(rl[/* r */3], rv, rd, rr)); } else { throw [ Caml_builtin_exceptions.invalid_argument, "Map.bal" ]; } } else { throw [ Caml_builtin_exceptions.invalid_argument, "Map.bal" ]; } } else { return /* Node */[ /* l */l, /* v */x, /* d */d, /* r */r, /* h */hl >= hr ? hl + 1 | 0 : hr + 1 | 0 ]; } }; var add = function (x, data, m) { if (m) { var r = m[/* r */3]; var d = m[/* d */2]; var v = m[/* v */1]; var l = m[/* l */0]; var c = Caml_primitive.caml_string_compare(x, v); if (c === 0) { if (d === data) { return m; } else { return /* Node */[ /* l */l, /* v */x, /* d */data, /* r */r, /* h */m[/* h */4] ]; } } else if (c < 0) { var ll = add(x, data, l); if (l === ll) { return m; } else { return bal(ll, v, d, r); } } else { var rr = add(x, data, r); if (r === rr) { return m; } else { return bal(l, v, d, rr); } } } else { return /* Node */[ /* l : Empty */0, /* v */x, /* d */data, /* r : Empty */0, /* h */1 ]; } }; var min_binding = function (_param) { while(true) { var param = _param; if (param) { var l = param[/* l */0]; if (l) { _param = l; continue ; } else { return /* tuple */[ param[/* v */1], param[/* d */2] ]; } } else { throw Caml_builtin_exceptions.not_found; } }; }; var remove_min_binding = function (param) { if (param) { var l = param[/* l */0]; if (l) { return bal(remove_min_binding(l), param[/* v */1], param[/* d */2], param[/* r */3]); } else { return param[/* r */3]; } } else { throw [ Caml_builtin_exceptions.invalid_argument, "Map.remove_min_elt" ]; } }; var merge = function (t1, t2) { if (t1) { if (t2) { var match = min_binding(t2); return bal(t1, match[0], match[1], remove_min_binding(t2)); } else { return t1; } } else { return t2; } }; var remove = function (x, m) { if (m) { var r = m[/* r */3]; var d = m[/* d */2]; var v = m[/* v */1]; var l = m[/* l */0]; var c = Caml_primitive.caml_string_compare(x, v); if (c === 0) { return merge(l, r); } else if (c < 0) { var ll = remove(x, l); if (l === ll) { return m; } else { return bal(ll, v, d, r); } } else { var rr = remove(x, r); if (r === rr) { return m; } else { return bal(l, v, d, rr); } } } else { return /* Empty */0; } }; var update = function (x, f, m) { if (m) { var r = m[/* r */3]; var d = m[/* d */2]; var v = m[/* v */1]; var l = m[/* l */0]; var c = Caml_primitive.caml_string_compare(x, v); if (c === 0) { var match = Curry._1(f, Caml_option.some(d)); if (match !== undefined) { var data = Caml_option.valFromOption(match); if (d === data) { return m; } else { return /* Node */[ /* l */l, /* v */x, /* d */data, /* r */r, /* h */m[/* h */4] ]; } } else { return merge(l, r); } } else if (c < 0) { var ll = update(x, f, l); if (l === ll) { return m; } else { return bal(ll, v, d, r); } } else { var rr = update(x, f, r); if (r === rr) { return m; } else { return bal(l, v, d, rr); } } } else { var match$1 = Curry._1(f, undefined); if (match$1 !== undefined) { return /* Node */[ /* l : Empty */0, /* v */x, /* d */Caml_option.valFromOption(match$1), /* r : Empty */0, /* h */1 ]; } else { return /* Empty */0; } } }; var iter = function (f, _param) { while(true) { var param = _param; if (param) { iter(f, param[/* l */0]); Curry._2(f, param[/* v */1], param[/* d */2]); _param = param[/* r */3]; continue ; } else { return /* () */0; } }; }; var map = function (f, param) { if (param) { var l$prime = map(f, param[/* l */0]); var d$prime = Curry._1(f, param[/* d */2]); var r$prime = map(f, param[/* r */3]); return /* Node */[ /* l */l$prime, /* v */param[/* v */1], /* d */d$prime, /* r */r$prime, /* h */param[/* h */4] ]; } else { return /* Empty */0; } }; var mapi = function (f, param) { if (param) { var v = param[/* v */1]; var l$prime = mapi(f, param[/* l */0]); var d$prime = Curry._2(f, v, param[/* d */2]); var r$prime = mapi(f, param[/* r */3]); return /* Node */[ /* l */l$prime, /* v */v, /* d */d$prime, /* r */r$prime, /* h */param[/* h */4] ]; } else { return /* Empty */0; } }; var fold = function (f, _m, _accu) { while(true) { var accu = _accu; var m = _m; if (m) { _accu = Curry._3(f, m[/* v */1], m[/* d */2], fold(f, m[/* l */0], accu)); _m = m[/* r */3]; continue ; } else { return accu; } }; }; var for_all = function (p, _param) { while(true) { var param = _param; if (param) { if (Curry._2(p, param[/* v */1], param[/* d */2]) && for_all(p, param[/* l */0])) { _param = param[/* r */3]; continue ; } else { return false; } } else { return true; } }; }; var exists = function (p, _param) { while(true) { var param = _param; if (param) { if (Curry._2(p, param[/* v */1], param[/* d */2]) || exists(p, param[/* l */0])) { return true; } else { _param = param[/* r */3]; continue ; } } else { return false; } }; }; var add_min_binding = function (k, x, param) { if (param) { return bal(add_min_binding(k, x, param[/* l */0]), param[/* v */1], param[/* d */2], param[/* r */3]); } else { return singleton(k, x); } }; var add_max_binding = function (k, x, param) { if (param) { return bal(param[/* l */0], param[/* v */1], param[/* d */2], add_max_binding(k, x, param[/* r */3])); } else { return singleton(k, x); } }; var join = function (l, v, d, r) { if (l) { if (r) { var rh = r[/* h */4]; var lh = l[/* h */4]; if (lh > (rh + 2 | 0)) { return bal(l[/* l */0], l[/* v */1], l[/* d */2], join(l[/* r */3], v, d, r)); } else if (rh > (lh + 2 | 0)) { return bal(join(l, v, d, r[/* l */0]), r[/* v */1], r[/* d */2], r[/* r */3]); } else { return create(l, v, d, r); } } else { return add_max_binding(v, d, l); } } else { return add_min_binding(v, d, r); } }; var concat = function (t1, t2) { if (t1) { if (t2) { var match = min_binding(t2); return join(t1, match[0], match[1], remove_min_binding(t2)); } else { return t1; } } else { return t2; } }; var concat_or_join = function (t1, v, d, t2) { if (d !== undefined) { return join(t1, v, Caml_option.valFromOption(d), t2); } else { return concat(t1, t2); } }; var split = function (x, param) { if (param) { var r = param[/* r */3]; var d = param[/* d */2]; var v = param[/* v */1]; var l = param[/* l */0]; var c = Caml_primitive.caml_string_compare(x, v); if (c === 0) { return /* tuple */[ l, Caml_option.some(d), r ]; } else if (c < 0) { var match = split(x, l); return /* tuple */[ match[0], match[1], join(match[2], v, d, r) ]; } else { var match$1 = split(x, r); return /* tuple */[ join(l, v, d, match$1[0]), match$1[1], match$1[2] ]; } } else { return /* tuple */[ /* Empty */0, undefined, /* Empty */0 ]; } }; var merge$1 = function (f, s1, s2) { if (s1) { var v1 = s1[/* v */1]; if (s1[/* h */4] >= height(s2)) { var match = split(v1, s2); return concat_or_join(merge$1(f, s1[/* l */0], match[0]), v1, Curry._3(f, v1, Caml_option.some(s1[/* d */2]), match[1]), merge$1(f, s1[/* r */3], match[2])); } } else if (!s2) { return /* Empty */0; } if (s2) { var v2 = s2[/* v */1]; var match$1 = split(v2, s1); return concat_or_join(merge$1(f, match$1[0], s2[/* l */0]), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2[/* d */2])), merge$1(f, match$1[2], s2[/* r */3])); } else { throw [ Caml_builtin_exceptions.assert_failure, /* tuple */[ "map.ml", 393, 10 ] ]; } }; var union = function (f, s1, s2) { if (s1) { if (s2) { var d2 = s2[/* d */2]; var v2 = s2[/* v */1]; var d1 = s1[/* d */2]; var v1 = s1[/* v */1]; if (s1[/* h */4] >= s2[/* h */4]) { var match = split(v1, s2); var d2$1 = match[1]; var l = union(f, s1[/* l */0], match[0]); var r = union(f, s1[/* r */3], match[2]); if (d2$1 !== undefined) { return concat_or_join(l, v1, Curry._3(f, v1, d1, Caml_option.valFromOption(d2$1)), r); } else { return join(l, v1, d1, r); } } else { var match$1 = split(v2, s1); var d1$1 = match$1[1]; var l$1 = union(f, match$1[0], s2[/* l */0]); var r$1 = union(f, match$1[2], s2[/* r */3]); if (d1$1 !== undefined) { return concat_or_join(l$1, v2, Curry._3(f, v2, Caml_option.valFromOption(d1$1), d2), r$1); } else { return join(l$1, v2, d2, r$1); } } } else { return s1; } } else { return s2; } }; var filter = function (p, m) { if (m) { var r = m[/* r */3]; var d = m[/* d */2]; var v = m[/* v */1]; var l = m[/* l */0]; var l$prime = filter(p, l); var pvd = Curry._2(p, v, d); var r$prime = filter(p, r); if (pvd) { if (l === l$prime && r === r$prime) { return m; } else { return join(l$prime, v, d, r$prime); } } else { return concat(l$prime, r$prime); } } else { return /* Empty */0; } }; var partition = function (p, param) { if (param) { var d = param[/* d */2]; var v = param[/* v */1]; var match = partition(p, param[/* l */0]); var lf = match[1]; var lt = match[0]; var pvd = Curry._2(p, v, d); var match$1 = partition(p, param[/* r */3]); var rf = match$1[1]; var rt = match$1[0]; if (pvd) { return /* tuple */[ join(lt, v, d, rt), concat(lf, rf) ]; } else { return /* tuple */[ concat(lt, rt), join(lf, v, d, rf) ]; } } else { return /* tuple */[ /* Empty */0, /* Empty */0 ]; } }; var cardinal = function (param) { if (param) { return (cardinal(param[/* l */0]) + 1 | 0) + cardinal(param[/* r */3]) | 0; } else { return 0; } }; var bindings_aux = function (_accu, _param) { while(true) { var param = _param; var accu = _accu; if (param) { _param = param[/* l */0]; _accu = /* :: */[ /* tuple */[ param[/* v */1], param[/* d */2] ], bindings_aux(accu, param[/* r */3]) ]; continue ; } else { return accu; } }; }; var expect = request.expect; var responseToResult = expect[1]; var typ = expect[0]; var withCredentials = request.withCredentials; var timeout = request.timeout; var body = request.body; var url = request.url; var headers = request.headers; var method$prime = request["method'"]; return /* Task */[(function (cb) { var enqResError = function (result) { var partial_arg = /* Error */Block.__(1, [result]); return (function (param) { return Curry._1(cb, partial_arg); }); }; var enqResOk = function (result) { var partial_arg = /* Ok */Block.__(0, [result]); return (function (param) { return Curry._1(cb, partial_arg); }); }; var xhr = new XMLHttpRequest(); var partial_arg = /* Error */Block.__(1, [/* NetworkError */1]); var cb$1 = function (param) { return Curry._1(cb, partial_arg); }; xhr.onerror = cb$1; var partial_arg$1 = /* Error */Block.__(1, [/* Timeout */0]); var cb$2 = function (param) { return Curry._1(cb, partial_arg$1); }; xhr.ontimeout = cb$2; var partial_arg$2 = /* Error */Block.__(1, [/* Aborted */2]); var cb$3 = function (param) { return Curry._1(cb, partial_arg$2); }; xhr.onabort = cb$3; var cb$4 = function (_ev) { var match = Web_xmlhttprequest.getAllResponseHeadersAsDict(xhr); var headers; headers = match.tag ? /* Empty */0 : match[0]; var response_url = xhr.responseURL; var response_status = { code: xhr.status, message: xhr.statusText }; var response_body = Web_xmlhttprequest.get_response(xhr); var response = { url: response_url, status: response_status, headers: headers, body: response_body }; if (response_status.code < 200 || 300 <= response_status.code) { return enqResError(/* BadStatus */Block.__(1, [response]))(/* () */0); } else { var match$1 = Curry._1(responseToResult, response); if (match$1.tag) { return enqResError(/* BadPayload */Block.__(2, [ match$1[0], response ]))(/* () */0); } else { return enqResOk(match$1[0])(/* () */0); } } }; xhr.onload = cb$4; try { Web_xmlhttprequest.open_(method$prime, url, undefined, undefined, undefined, xhr); } catch (exn){ enqResError(/* BadUrl */Block.__(0, [url]))(/* () */0); } var setHeader = function (param) { return Web_xmlhttprequest.setRequestHeader(param[0], param[1], xhr); }; List.iter(setHeader, headers); Web_xmlhttprequest.set_responseType(typ, xhr); if (timeout !== undefined) { xhr.timeout = timeout; } xhr.withCredentials = withCredentials; Web_xmlhttprequest.send(body, xhr); return /* () */0; })]; } function send(resultToMessage, param) { var maybeEvents = param[1]; var request = param[0]; var height = function (param) { if (param) { return param[/* h */4]; } else { return 0; } }; var create = function (l, x, d, r) { var hl = height(l); var hr = height(r); return /* Node */[ /* l */l, /* v */x, /* d */d, /* r */r, /* h */hl >= hr ? hl + 1 | 0 : hr + 1 | 0 ]; }; var singleton = function (x, d) { return /* Node */[ /* l : Empty */0, /* v */x, /* d */d, /* r : Empty */0, /* h */1 ]; }; var bal = function (l, x, d, r) { var hl = l ? l[/* h */4] : 0; var hr = r ? r[/* h */4] : 0; if (hl > (hr + 2 | 0)) { if (l) { var lr = l[/* r */3]; var ld = l[/* d */2]; var lv = l[/* v */1]; var ll = l[/* l */0]; if (height(ll) >= height(lr)) { return create(ll, lv, ld, create(lr, x, d, r)); } else if (lr) { return create(create(ll, lv, ld, lr[/* l */0]), lr[/* v */1], lr[/* d */2], create(lr[/* r */3], x, d, r)); } else { throw [ Caml_builtin_exceptions.invalid_argument, "Map.bal" ]; } } else { throw [ Caml_builtin_exceptions.invalid_argument, "Map.bal" ]; } } else if (hr > (hl + 2 | 0)) { if (r) { var rr = r[/* r */3]; var rd = r[/* d */2]; var rv = r[/* v */1]; var rl = r[/* l */0]; if (height(rr) >= height(rl)) { return create(create(l, x, d, rl), rv, rd, rr); } else if (rl) { return create(create(l, x, d, rl[/* l */0]), rl[/* v */1], rl[/* d */2], create(rl[/* r */3], rv, rd, rr)); } else { throw [ Caml_builtin_exceptions.invalid_argument, "Map.bal" ]; } } else { throw [ Caml_builtin_exceptions.invalid_argument, "Map.bal" ]; } } else { return /* Node */[ /* l */l, /* v */x, /* d */d, /* r */r, /* h */hl >= hr ? hl + 1 | 0 : hr + 1 | 0 ]; } }; var add = function (x, data, m) { if (m) { var r = m[/* r */3]; var d = m[/* d */2]; var v = m[/* v */1]; var l = m[/* l */0]; var c = Caml_primitive.caml_string_compare(x, v); if (c === 0) { if (d === data) { return m; } else { return /* Node */[ /* l */l, /* v */x, /* d */data, /* r */r, /* h */m[/* h */4] ]; } } else if (c < 0) { var ll = add(x, data, l); if (l === ll) { return m; } else { return bal(ll, v, d, r); } } else { var rr = add(x, data, r); if (r === rr) { return m; } else { return bal(l, v, d, rr); } } } else { return /* Node */[ /* l : Empty */0, /* v */x, /* d */data, /* r : Empty */0, /* h */1 ]; } }; var min_binding = function (_param) { while(true) { var param = _param; if (param) { var l = param[/* l */0]; if (l) { _param = l; continue ; } else { return /* tuple */[ param[/* v */1], param[/* d */2] ]; } } else { throw Caml_builtin_exceptions.not_found; } }; }; var remove_min_binding = function (param) { if (param) { var l = param[/* l */0]; if (l) { return bal(remove_min_binding(l), param[/* v */1], param[/* d */2], param[/* r */3]); } else { return param[/* r */3]; } } else { throw [ Caml_builtin_exceptions.invalid_argument, "Map.remove_min_elt" ]; } }; var merge = function (t1, t2) { if (t1) { if (t2) { var match = min_binding(t2); return bal(t1, match[0], match[1], remove_min_binding(t2)); } else { return t1; } } else { return t2; } }; var remove = function (x, m) { if (m) { var r = m[/* r */3]; var d = m[/* d */2]; var v = m[/* v */1]; var l = m[/* l */0]; var c = Caml_primitive.caml_string_compare(x, v); if (c === 0) { return merge(l, r); } else if (c < 0) { var ll = remove(x, l); if (l === ll) { return m; } else { return bal(ll, v, d, r); } } else { var rr = remove(x, r); if (r === rr) { return m; } else { return bal(l, v, d, rr); } } } else { return /* Empty */0; } }; var update = function (x, f, m) { if (m) { var r = m[/* r */3]; var d = m[/* d */2]; var v = m[/* v */1]; var l = m[/* l */0]; var c = Caml_primitive.caml_string_compare(x, v); if (c === 0) { var match = Curry._1(f, Caml_option.some(d)); if (match !== undefined) { var data = Caml_option.valFromOption(match); if (d === data) { return m; } else { return /* Node */[ /* l */l, /* v */x, /* d */data, /* r */r, /* h */m[/* h */4] ]; } } else { return merge(l, r); } } else if (c < 0) { var ll = update(x, f, l); if (l === ll) { return m; } else { return bal(ll, v, d, r); } } else { var rr = update(x, f, r); if (r === rr) { return m; } else { return bal(l, v, d, rr); } } } else { var match$1 = Curry._1(f, undefined); if (match$1 !== undefined) { return /* Node */[ /* l : Empty */0, /* v */x, /* d */Caml_option.valFromOption(match$1), /* r : Empty */0, /* h */1 ]; } else { return /* Empty */0; } } }; var iter = function (f, _param) { while(true) { var param = _param; if (param) { iter(f, param[/* l */0]); Curry._2(f, param[/* v */1], param[/* d */2]); _param = param[/* r */3]; continue ; } else { return /* () */0; } }; }; var map = function (f, param) { if (param) { var l$prime = map(f, param[/* l */0]); var d$prime = Curry._1(f, param[/* d */2]); var r$prime = map(f, param[/* r */3]); return /* Node */[ /* l */l$prime, /* v */param[/* v */1], /* d */d$prime, /* r */r$prime, /* h */param[/* h */4] ]; } else { return /* Empty */0; } }; var mapi = function (f, param) { if (param) { var v = param[/* v */1]; var l$prime = mapi(f, param[/* l */0]); var d$prime = Curry._2(f, v, param[/* d */2]); var r$prime = mapi(f, param[/* r */3]); return /* Node */[ /* l */l$prime, /* v */v, /* d */d$prime, /* r */r$prime, /* h */param[/* h */4] ]; } else { return /* Empty */0; } }; var fold = function (f, _m, _accu) { while(true) { var accu = _accu; var m = _m; if (m) { _accu = Curry._3(f, m[/* v */1], m[/* d */2], fold(f, m[/* l */0], accu)); _m = m[/* r */3]; continue ; } else { return accu; } }; }; var for_all = function (p, _param) { while(true) { var param = _param; if (param) { if (Curry._2(p, param[/* v */1], param[/* d */2]) && for_all(p, param[/* l */0])) { _param = param[/* r */3]; continue ; } else { return false; } } else { return true; } }; }; var exists = function (p, _param) { while(true) { var param = _param; if (param) { if (Curry._2(p, param[/* v */1], param[/* d */2]) || exists(p, param[/* l */0])) { return true; } else { _param = param[/* r */3]; continue ; } } else { return false; } }; }; var add_min_binding = function (k, x, param) { if (param) { return bal(add_min_binding(k, x, param[/* l */0]), param[/* v */1], param[/* d */2], param[/* r */3]); } else { return singleton(k, x); } }; var add_max_binding = function (k, x, param) { if (param) { return bal(param[/* l */0], param[/* v */1], param[/* d */2], add_max_binding(k, x, param[/* r */3])); } else { return singleton(k, x); } }; var join = function (l, v, d, r) { if (l) { if (r) { var rh = r[/* h */4]; var lh = l[/* h */4]; if (lh > (rh + 2 | 0)) { return bal(l[/* l */0], l[/* v */1], l[/* d */2], join(l[/* r */3], v, d, r)); } else if (rh > (lh + 2 | 0)) { return bal(join(l, v, d, r[/* l */0]), r[/* v */1], r[/* d */2], r[/* r */3]); } else { return create(l, v, d, r); } } else { return add_max_binding(v, d, l); } } else { return add_min_binding(v, d, r); } }; var concat = function (t1, t2) { if (t1) { if (t2) { var match = min_binding(t2); return join(t1, match[0], match[1], remove_min_binding(t2)); } else { return t1; } } else { return t2; } }; var concat_or_join = function (t1, v, d, t2) { if (d !== undefined) { return join(t1, v, Caml_option.valFromOption(d), t2); } else { return concat(t1, t2); } }; var split = function (x, param) { if (param) { var r = param[/* r */3]; var d = param[/* d */2]; var v = param[/* v */1]; var l = param[/* l */0]; var c = Caml_primitive.caml_string_compare(x, v); if (c === 0) { return /* tuple */[ l, Caml_option.some(d), r ]; } else if (c < 0) { var match = split(x, l); return /* tuple */[ match[0], match[1], join(match[2], v, d, r) ]; } else { var match$1 = split(x, r); return /* tuple */[ join(l, v, d, match$1[0]), match$1[1], match$1[2] ]; } } else { return /* tuple */[ /* Empty */0, undefined, /* Empty */0 ]; } }; var merge$1 = function (f, s1, s2) { if (s1) { var v1 = s1[/* v */1]; if (s1[/* h */4] >= height(s2)) { var match = split(v1, s2); return concat_or_join(merge$1(f, s1[/* l */0], match[0]), v1, Curry._3(f, v1, Caml_option.some(s1[/* d */2]), match[1]), merge$1(f, s1[/* r */3], match[2])); } } else if (!s2) { return /* Empty */0; } if (s2) { var v2 = s2[/* v */1]; var match$1 = split(v2, s1); return concat_or_join(merge$1(f, match$1[0], s2[/* l */0]), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2[/* d */2])), merge$1(f, match$1[2], s2[/* r */3])); } else { throw [ Caml_builtin_exceptions.assert_failure, /* tuple */[ "map.ml", 393, 10 ] ]; } }; var union = function (f, s1, s2) { if (s1) { if (s2) { var d2 = s2[/* d */2]; var v2 = s2[/* v */1]; var d1 = s1[/* d */2]; var v1 = s1[/* v */1]; if (s1[/* h */4] >= s2[/* h */4]) { var match = split(v1, s2); var d2$1 = match[1]; var l = union(f, s1[/* l */0], match[0]); var r = union(f, s1[/* r */3], match[2]); if (d2$1 !== undefined) { return concat_or_join(l, v1, Curry._3(f, v1, d1, Caml_option.valFromOption(d2$1)), r); } else { return join(l, v1, d1, r); } } else { var match$1 = split(v2, s1); var d1$1 = match$1[1]; var l$1 = union(f, match$1[0], s2[/* l */0]); var r$1 = union(f, match$1[2], s2[/* r */3]); if (d1$1 !== undefined) { return concat_or_join(l$1, v2, Curry._3(f, v2, Caml_option.valFromOption(d1$1), d2), r$1); } else { return join(l$1, v2, d2, r$1); } } } else { return s1; } } else { return s2; } }; var filter = function (p, m) { if (m) { var r = m[/* r */3]; var d = m[/* d */2]; var v = m[/* v */1]; var l = m[/* l */0]; var l$prime = filter(p, l); var pvd = Curry._2(p, v, d); var r$prime = filter(p, r); if (pvd) { if (l === l$prime && r === r$prime) { return m; } else { return join(l$prime, v, d, r$prime); } } else { return concat(l$prime, r$prime); } } else { return /* Empty */0; } }; var partition = function (p, param) { if (param) { var d = param[/* d */2]; var v = param[/* v */1]; var match = partition(p, param[/* l */0]); var lf = match[1]; var lt = match[0]; var pvd = Curry._2(p, v, d); var match$1 = partition(p, param[/* r */3]); var rf = match$1[1]; var rt = match$1[0]; if (pvd) { return /* tuple */[ join(lt, v, d, rt), concat(lf, rf) ]; } else { return /* tuple */[ concat(lt, rt), join(lf, v, d, rf) ]; } } else { return /* tuple */[ /* Empty */0, /* Empty */0 ]; } }; var cardinal = function (param) { if (param) { return (cardinal(param[/* l */0]) + 1 | 0) + cardinal(param[/* r */3]) | 0; } else { return 0; } }; var bindings_aux = function (_accu, _param) { while(true) { var param = _param; var accu = _accu; if (param) { _param = param[/* l */0]; _accu = /* :: */[ /* tuple */[ param[/* v */1], param[/* d */2] ], bindings_aux(accu, param[/* r */3]) ]; continue ; } else { return accu; } }; }; var expect = request.expect; var responseToResult = expect[1]; var typ = expect[0]; var withCredentials = request.withCredentials; var timeout = request.timeout; var body = request.body; var url = request.url; var headers = request.headers; var method$prime = request["method'"]; return /* EnqueueCall */Block.__(2, [(function (callbacks) { var enqRes = function (result, _ev) { return Curry._1(callbacks.contents.enqueue, Curry._1(resultToMessage, result)); }; var enqResError = function (result) { var partial_arg = /* Error */Block.__(1, [result]); return (function (param) { return enqRes(partial_arg, param); }); }; var enqResOk = function (result) { var partial_arg = /* Ok */Block.__(0, [result]); return (function (param) { return enqRes(partial_arg, param); }); }; var xhr = new XMLHttpRequest(); if (maybeEvents !== undefined) { var match = maybeEvents; var mayCB = function (thenDo, param) { if (param !== undefined) { return Curry._1(thenDo, Curry._1(param, callbacks)); } else { return /* () */0; } }; mayCB((function (param) { xhr.onreadystatechange = param; return /* () */0; }), match.onreadystatechange); mayCB((function (param) { xhr.onprogress = param; return /* () */0; }), match.onprogress); } var partial_arg = /* Error */Block.__(1, [/* NetworkError */1]); var cb = function (param) { return enqRes(partial_arg, param); }; xhr.onerror = cb; var partial_arg$1 = /* Error */Block.__(1, [/* Timeout */0]); var cb$1 = function (param) { return enqRes(partial_arg$1, param); }; xhr.ontimeout = cb$1; var partial_arg$2 = /* Error */Block.__(1, [/* Aborted */2]); var cb$2 = function (param) { return enqRes(partial_arg$2, param); }; xhr.onabort = cb$2; var cb$3 = function (_ev) { var match = Web_xmlhttprequest.getAllResponseHeadersAsDict(xhr); var headers; headers = match.tag ? /* Empty */0 : match[0]; var response_url = xhr.responseURL; var response_status = { code: xhr.status, message: xhr.statusText }; var response_body = Web_xmlhttprequest.get_response(xhr); var response = { url: response_url, status: response_status, headers: headers, body: response_body }; if (response_status.code < 200 || 300 <= response_status.code) { return enqResError(/* BadStatus */Block.__(1, [response]))(/* () */0); } else { var match$1 = Curry._1(responseToResult, response); if (match$1.tag) { return enqResError(/* BadPayload */Block.__(2, [ match$1[0], response ]))(/* () */0); } else { return enqResOk(match$1[0])(/* () */0); } } }; xhr.onload = cb$3; try { Web_xmlhttprequest.open_(method$prime, url, undefined, undefined, undefined, xhr); } catch (exn){ enqResError(/* BadUrl */Block.__(0, [url]))(/* () */0); } var setHeader = function (param) { return Web_xmlhttprequest.setRequestHeader(param[0], param[1], xhr); }; List.iter(setHeader, headers); Web_xmlhttprequest.set_responseType(typ, xhr); if (timeout !== undefined) { xhr.timeout = timeout; } xhr.withCredentials = withCredentials; Web_xmlhttprequest.send(body, xhr); return /* () */0; })]); } function encodeUri(str) { return encodeURIComponent(str); } function decodeUri(str) { try { return decodeURIComponent(str); } catch (exn){ return ; } } function track(toMessage, param) { var events = param[1]; var onprogress = (function (callbacks, ev) { var match = Tea_json.Decoder.decodeValue(Tea_json.Decoder.field("lengthComputable", Tea_json.Decoder.bool), ev); var lengthComputable; lengthComputable = match.tag ? false : match[0]; if (lengthComputable) { var decoder = Tea_json.Decoder.map2((function (bytes, bytesExpected) { return { bytes: bytes, bytesExpected: bytesExpected }; }), Tea_json.Decoder.field("loaded", Tea_json.Decoder.$$int), Tea_json.Decoder.field("total", Tea_json.Decoder.$$int)); var match$1 = Tea_json.Decoder.decodeValue(decoder, ev); if (match$1.tag) { return /* () */0; } else { return Curry._1(callbacks.contents.enqueue, Curry._1(toMessage, match$1[0])); } } else { return 0; } }); var events$1 = events !== undefined ? events : emptyRequestEvents; return /* Request */[ param[0], { onreadystatechange: events$1.onreadystatechange, onprogress: onprogress } ]; } var Progress_emptyProgress = { bytes: 0, bytesExpected: 0 }; var Progress = { emptyProgress: Progress_emptyProgress, track: track }; exports.string_of_error = string_of_error; exports.emptyRequestEvents = emptyRequestEvents; exports.expectStringResponse = expectStringResponse; exports.expectString = expectString; exports.request = request; exports.getString = getString; exports.toTask = toTask; exports.send = send; exports.encodeUri = encodeUri; exports.decodeUri = decodeUri; exports.Progress = Progress; /* expectString Not a pure module */