From 02dd1363739b28eca4830476aab70f7090a9dc4b Mon Sep 17 00:00:00 2001 From: Thomas Coopman Date: Tue, 20 Mar 2018 08:04:31 +0100 Subject: [PATCH 1/7] update packages --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index f9a355d..b0ddf1b 100644 --- a/package.json +++ b/package.json @@ -36,9 +36,9 @@ "bs-platform": "^2.2.2" }, "devDependencies": { - "browserify": "^14.0.0", - "bs-platform": "^2.2.2", - "npm-run-all": "4.0.2", - "watchify": "3.9.0" + "browserify": "^16.1.1", + "bs-platform": "^2.2.3", + "npm-run-all": "^4.1.2", + "watchify": "^3.11.0" } } From 057b4f1a2e0a6e04a679cb8954676481cb106e0a Mon Sep 17 00:00:00 2001 From: Thomas Coopman Date: Tue, 20 Mar 2018 08:11:14 +0100 Subject: [PATCH 2/7] recompiled with 2.2.3 --- lib/js/src/tea.js | 2 +- lib/js/src/tea_animationframe.js | 2 +- lib/js/src/tea_app.js | 2 +- lib/js/src/tea_cmd.js | 2 +- lib/js/src/tea_ex.js | 2 +- lib/js/src/tea_html.js | 2 +- lib/js/src/tea_html_cmds.js | 2 +- lib/js/src/tea_http.js | 80 ++++++------ lib/js/src/tea_json.js | 174 ++++++++------------------ lib/js/src/tea_mouse.js | 2 +- lib/js/src/tea_navigation.js | 2 +- lib/js/src/tea_program.js | 2 +- lib/js/src/tea_random.js | 10 +- lib/js/src/tea_result.js | 14 +-- lib/js/src/tea_sub.js | 24 ++-- lib/js/src/tea_svg.js | 2 +- lib/js/src/tea_svg_attributes.js | 2 +- lib/js/src/tea_svg_events.js | 2 +- lib/js/src/tea_task.js | 20 ++- lib/js/src/tea_time.js | 2 +- lib/js/src/vdom.js | 130 ++++++++----------- lib/js/src/web.js | 2 +- lib/js/src/web_date.js | 2 +- lib/js/src/web_document.js | 2 +- lib/js/src/web_event.js | 2 +- lib/js/src/web_formdata.js | 2 +- lib/js/src/web_json.js | 2 +- lib/js/src/web_location.js | 32 +++-- lib/js/src/web_node.js | 5 +- lib/js/src/web_window.js | 2 +- lib/js/src/web_window_history.js | 2 +- lib/js/src/web_window_localstorage.js | 2 +- lib/js/src/web_xmlhttprequest.js | 133 ++++++++++---------- 33 files changed, 282 insertions(+), 386 deletions(-) diff --git a/lib/js/src/tea.js b/lib/js/src/tea.js index 24d97bc..172eac9 100644 --- a/lib/js/src/tea.js +++ b/lib/js/src/tea.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; diff --git a/lib/js/src/tea_animationframe.js b/lib/js/src/tea_animationframe.js index 8f46a43..d0a3e70 100644 --- a/lib/js/src/tea_animationframe.js +++ b/lib/js/src/tea_animationframe.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; var Curry = require("bs-platform/lib/js/curry.js"); diff --git a/lib/js/src/tea_app.js b/lib/js/src/tea_app.js index c55931d..cd66f88 100644 --- a/lib/js/src/tea_app.js +++ b/lib/js/src/tea_app.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; var Web = require("./web.js"); diff --git a/lib/js/src/tea_cmd.js b/lib/js/src/tea_cmd.js index ec98c0a..b252fa7 100644 --- a/lib/js/src/tea_cmd.js +++ b/lib/js/src/tea_cmd.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; var List = require("bs-platform/lib/js/list.js"); diff --git a/lib/js/src/tea_ex.js b/lib/js/src/tea_ex.js index 9fc6cb5..0b24aef 100644 --- a/lib/js/src/tea_ex.js +++ b/lib/js/src/tea_ex.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; var Block = require("bs-platform/lib/js/block.js"); diff --git a/lib/js/src/tea_html.js b/lib/js/src/tea_html.js index fc43eae..c7a25a6 100644 --- a/lib/js/src/tea_html.js +++ b/lib/js/src/tea_html.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; var List = require("bs-platform/lib/js/list.js"); diff --git a/lib/js/src/tea_html_cmds.js b/lib/js/src/tea_html_cmds.js index da237a6..61d045e 100644 --- a/lib/js/src/tea_html_cmds.js +++ b/lib/js/src/tea_html_cmds.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; var Block = require("bs-platform/lib/js/block.js"); diff --git a/lib/js/src/tea_http.js b/lib/js/src/tea_http.js index b44813b..be80d7e 100644 --- a/lib/js/src/tea_http.js +++ b/lib/js/src/tea_http.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; var List = require("bs-platform/lib/js/list.js"); @@ -174,13 +174,7 @@ function send(resultToMessage, param) { var v = param[1]; var l = param[0]; var c = Caml_primitive.caml_string_compare(x, v); - if (c) { - if (c < 0) { - return bal(add(x, data, l), v, d, r); - } else { - return bal(l, v, d, add(x, data, r)); - } - } else { + if (c === 0) { return /* Node */[ l, x, @@ -188,6 +182,10 @@ function send(resultToMessage, param) { r, param[4] ]; + } else if (c < 0) { + return bal(add(x, data, l), v, d, r); + } else { + return bal(l, v, d, add(x, data, r)); } } else { return /* Node */[ @@ -241,13 +239,7 @@ function send(resultToMessage, param) { var v = param[1]; var l = param[0]; var c = Caml_primitive.caml_string_compare(x, v); - if (c) { - if (c < 0) { - return bal(remove(x, l), v, d, r); - } else { - return bal(l, v, d, remove(x, r)); - } - } else { + if (c === 0) { var t1 = l; var t2 = r; if (t1) { @@ -260,6 +252,10 @@ function send(resultToMessage, param) { } else { return t2; } + } else if (c < 0) { + return bal(remove(x, l), v, d, r); + } else { + return bal(l, v, d, remove(x, r)); } } else { return /* Empty */0; @@ -330,14 +326,10 @@ function send(resultToMessage, param) { while(true) { var param = _param; if (param) { - if (Curry._2(p, param[1], param[2])) { - if (for_all(p, param[0])) { - _param = param[3]; - continue ; - - } else { - return /* false */0; - } + if (Curry._2(p, param[1], param[2]) && for_all(p, param[0])) { + _param = param[3]; + continue ; + } else { return /* false */0; } @@ -350,9 +342,7 @@ function send(resultToMessage, param) { while(true) { var param = _param; if (param) { - if (Curry._2(p, param[1], param[2])) { - return /* true */1; - } else if (exists(p, param[0])) { + if (Curry._2(p, param[1], param[2]) || exists(p, param[0])) { return /* true */1; } else { _param = param[3]; @@ -423,28 +413,26 @@ function send(resultToMessage, param) { var v = param[1]; var l = param[0]; var c = Caml_primitive.caml_string_compare(x, v); - if (c) { - 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 { + if (c === 0) { return /* tuple */[ l, /* 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 */[ @@ -583,10 +571,12 @@ function send(resultToMessage, param) { } }; mayCB((function (param) { - return xhr.onreadystatechange = param; + xhr.onreadystatechange = param; + return /* () */0; }), match[/* onreadystatechange */0]); mayCB((function (param) { - return xhr.onprogress = param; + xhr.onprogress = param; + return /* () */0; }), match[/* onprogress */1]); } var partial_arg = /* Error */Block.__(1, [/* NetworkError */1]); diff --git a/lib/js/src/tea_json.js b/lib/js/src/tea_json.js index 9b52ff5..27a9d39 100644 --- a/lib/js/src/tea_json.js +++ b/lib/js/src/tea_json.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; var List = require("bs-platform/lib/js/list.js"); @@ -117,13 +117,7 @@ function add(x, data, param) { var v = param[1]; var l = param[0]; var c = Caml_primitive.caml_string_compare(x, v); - if (c) { - if (c < 0) { - return bal(add(x, data, l), v, d, r); - } else { - return bal(l, v, d, add(x, data, r)); - } - } else { + if (c === 0) { return /* Node */[ l, x, @@ -131,6 +125,10 @@ function add(x, data, param) { r, param[4] ]; + } else if (c < 0) { + return bal(add(x, data, l), v, d, r); + } else { + return bal(l, v, d, add(x, data, r)); } } else { return /* Node */[ @@ -148,12 +146,12 @@ function find(x, _param) { var param = _param; if (param) { var c = Caml_primitive.caml_string_compare(x, param[1]); - if (c) { + if (c === 0) { + return param[2]; + } else { _param = c < 0 ? param[0] : param[3]; continue ; - } else { - return param[2]; } } else { throw Caml_builtin_exceptions.not_found; @@ -166,12 +164,12 @@ function mem(x, _param) { var param = _param; if (param) { var c = Caml_primitive.caml_string_compare(x, param[1]); - if (c) { + if (c === 0) { + return /* true */1; + } else { _param = c < 0 ? param[0] : param[3]; continue ; - } else { - return /* true */1; } } else { return /* false */0; @@ -244,13 +242,7 @@ function remove(x, param) { var v = param[1]; var l = param[0]; var c = Caml_primitive.caml_string_compare(x, v); - if (c) { - if (c < 0) { - return bal(remove(x, l), v, d, r); - } else { - return bal(l, v, d, remove(x, r)); - } - } else { + if (c === 0) { var t1 = l; var t2 = r; if (t1) { @@ -263,6 +255,10 @@ function remove(x, param) { } else { return t2; } + } else if (c < 0) { + return bal(remove(x, l), v, d, r); + } else { + return bal(l, v, d, remove(x, r)); } } else { return /* Empty */0; @@ -338,14 +334,10 @@ function for_all(p, _param) { while(true) { var param = _param; if (param) { - if (Curry._2(p, param[1], param[2])) { - if (for_all(p, param[0])) { - _param = param[3]; - continue ; - - } else { - return /* false */0; - } + if (Curry._2(p, param[1], param[2]) && for_all(p, param[0])) { + _param = param[3]; + continue ; + } else { return /* false */0; } @@ -359,9 +351,7 @@ function exists(p, _param) { while(true) { var param = _param; if (param) { - if (Curry._2(p, param[1], param[2])) { - return /* true */1; - } else if (exists(p, param[0])) { + if (Curry._2(p, param[1], param[2]) || exists(p, param[0])) { return /* true */1; } else { _param = param[3]; @@ -438,28 +428,26 @@ function split(x, param) { var v = param[1]; var l = param[0]; var c = Caml_primitive.caml_string_compare(x, v); - if (c) { - 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 { + if (c === 0) { return /* tuple */[ l, /* 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 */[ @@ -611,17 +599,11 @@ function equal(cmp, m1, m2) { var e2 = _e2; var e1 = _e1; if (e1) { - if (e2) { - if (Caml_primitive.caml_string_compare(e1[0], e2[0])) { - return /* false */0; - } else if (Curry._2(cmp, e1[1], e2[1])) { - _e2 = cons_enum(e2[2], e2[3]); - _e1 = cons_enum(e1[2], e1[3]); - continue ; - - } else { - return /* false */0; - } + if (e2 && Caml_primitive.caml_string_compare(e1[0], e2[0]) === 0 && Curry._2(cmp, e1[1], e2[1])) { + _e2 = cons_enum(e2[2], e2[3]); + _e1 = cons_enum(e1[2], e1[3]); + continue ; + } else { return /* false */0; } @@ -968,7 +950,7 @@ function index(idx, param) { } else if (match.tag === 3) { var a = match[0]; if (idx < 0 || idx > a.length) { - return /* Error */Block.__(1, ["Array index out of range: " + idx]); + return /* Error */Block.__(1, ["Array index out of range: " + String(idx)]); } else { return Curry._1(decoder, Caml_array.caml_array_get(a, idx)); } @@ -1038,9 +1020,7 @@ function map2(mapper, param, param$1) { var match = Curry._1(decoder1, value); var match$1 = Curry._1(decoder2, value); var exit = 0; - if (match.tag) { - exit = 1; - } else if (match$1.tag) { + if (match.tag || match$1.tag) { exit = 1; } else { return /* Ok */Block.__(0, [Curry._2(mapper, match[0], match$1[0])]); @@ -1069,11 +1049,7 @@ function map3(mapper, param, param$1, param$2) { var match$1 = Curry._1(decoder2, value); var match$2 = Curry._1(decoder3, value); var exit = 0; - if (match.tag) { - exit = 1; - } else if (match$1.tag) { - exit = 1; - } else if (match$2.tag) { + if (match.tag || match$1.tag || match$2.tag) { exit = 1; } else { return /* Ok */Block.__(0, [Curry._3(mapper, match[0], match$1[0], match$2[0])]); @@ -1104,13 +1080,7 @@ function map4(mapper, param, param$1, param$2, param$3) { var match$2 = Curry._1(decoder3, value); var match$3 = Curry._1(decoder4, value); var exit = 0; - if (match.tag) { - exit = 1; - } else if (match$1.tag) { - exit = 1; - } else if (match$2.tag) { - exit = 1; - } else if (match$3.tag) { + if (match.tag || match$1.tag || match$2.tag || match$3.tag) { exit = 1; } else { return /* Ok */Block.__(0, [Curry._4(mapper, match[0], match$1[0], match$2[0], match$3[0])]); @@ -1143,15 +1113,7 @@ function map5(mapper, param, param$1, param$2, param$3, param$4) { var match$3 = Curry._1(decoder4, value); var match$4 = Curry._1(decoder5, value); var exit = 0; - if (match.tag) { - exit = 1; - } else if (match$1.tag) { - exit = 1; - } else if (match$2.tag) { - exit = 1; - } else if (match$3.tag) { - exit = 1; - } else if (match$4.tag) { + if (match.tag || match$1.tag || match$2.tag || match$3.tag || match$4.tag) { exit = 1; } else { return /* Ok */Block.__(0, [Curry._5(mapper, match[0], match$1[0], match$2[0], match$3[0], match$4[0])]); @@ -1186,17 +1148,7 @@ function map6(mapper, param, param$1, param$2, param$3, param$4, param$5) { var match$4 = Curry._1(decoder5, value); var match$5 = Curry._1(decoder6, value); var exit = 0; - if (match.tag) { - exit = 1; - } else if (match$1.tag) { - exit = 1; - } else if (match$2.tag) { - exit = 1; - } else if (match$3.tag) { - exit = 1; - } else if (match$4.tag) { - exit = 1; - } else if (match$5.tag) { + if (match.tag || match$1.tag || match$2.tag || match$3.tag || match$4.tag || match$5.tag) { exit = 1; } else { return /* Ok */Block.__(0, [Curry._6(mapper, match[0], match$1[0], match$2[0], match$3[0], match$4[0], match$5[0])]); @@ -1233,19 +1185,7 @@ function map7(mapper, param, param$1, param$2, param$3, param$4, param$5, param$ var match$5 = Curry._1(decoder6, value); var match$6 = Curry._1(decoder7, value); var exit = 0; - if (match.tag) { - exit = 1; - } else if (match$1.tag) { - exit = 1; - } else if (match$2.tag) { - exit = 1; - } else if (match$3.tag) { - exit = 1; - } else if (match$4.tag) { - exit = 1; - } else if (match$5.tag) { - exit = 1; - } else if (match$6.tag) { + if (match.tag || match$1.tag || match$2.tag || match$3.tag || match$4.tag || match$5.tag || match$6.tag) { exit = 1; } else { return /* Ok */Block.__(0, [Curry._7(mapper, match[0], match$1[0], match$2[0], match$3[0], match$4[0], match$5[0], match$6[0])]); @@ -1284,21 +1224,7 @@ function map8(mapper, param, param$1, param$2, param$3, param$4, param$5, param$ var match$6 = Curry._1(decoder7, value); var match$7 = Curry._1(decoder8, value); var exit = 0; - if (match.tag) { - exit = 1; - } else if (match$1.tag) { - exit = 1; - } else if (match$2.tag) { - exit = 1; - } else if (match$3.tag) { - exit = 1; - } else if (match$4.tag) { - exit = 1; - } else if (match$5.tag) { - exit = 1; - } else if (match$6.tag) { - exit = 1; - } else if (match$7.tag) { + if (match.tag || match$1.tag || match$2.tag || match$3.tag || match$4.tag || match$5.tag || match$6.tag || match$7.tag) { exit = 1; } else { return /* Ok */Block.__(0, [Curry._8(mapper, match[0], match$1[0], match$2[0], match$3[0], match$4[0], match$5[0], match$6[0], match$7[0])]); diff --git a/lib/js/src/tea_mouse.js b/lib/js/src/tea_mouse.js index 0228b36..64b3245 100644 --- a/lib/js/src/tea_mouse.js +++ b/lib/js/src/tea_mouse.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; var Vdom = require("./vdom.js"); diff --git a/lib/js/src/tea_navigation.js b/lib/js/src/tea_navigation.js index 42b0e95..7c507d5 100644 --- a/lib/js/src/tea_navigation.js +++ b/lib/js/src/tea_navigation.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; var Block = require("bs-platform/lib/js/block.js"); diff --git a/lib/js/src/tea_program.js b/lib/js/src/tea_program.js index f88b52e..7f4dc0c 100644 --- a/lib/js/src/tea_program.js +++ b/lib/js/src/tea_program.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; var Curry = require("bs-platform/lib/js/curry.js"); diff --git a/lib/js/src/tea_random.js b/lib/js/src/tea_random.js index 23906b3..47f3c2e 100644 --- a/lib/js/src/tea_random.js +++ b/lib/js/src/tea_random.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; var Block = require("bs-platform/lib/js/block.js"); @@ -8,6 +8,10 @@ var Pervasives = require("bs-platform/lib/js/pervasives.js"); Random.self_init(/* () */0); +var minFloat = Number.MIN_VALUE; + +var maxFloat = Number.MAX_VALUE; + var bool = /* Generator */[(function (state) { return Random.State[/* bool */9](state); })]; @@ -151,10 +155,6 @@ var minInt = Pervasives.min_int; var maxInt = Pervasives.max_int; -var minFloat = Pervasives.min_float; - -var maxFloat = Pervasives.max_float; - exports.minInt = minInt; exports.maxInt = maxInt; exports.minFloat = minFloat; diff --git a/lib/js/src/tea_result.js b/lib/js/src/tea_result.js index cc09796..3d17f78 100644 --- a/lib/js/src/tea_result.js +++ b/lib/js/src/tea_result.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; var Block = require("bs-platform/lib/js/block.js"); @@ -42,14 +42,10 @@ function last_of(_param) { if (param) { var tl = param[1]; var last = param[0]; - if (tl) { - if (last.tag) { - return last; - } else { - _param = tl; - continue ; - - } + if (tl && !last.tag) { + _param = tl; + continue ; + } else { return last; } diff --git a/lib/js/src/tea_sub.js b/lib/js/src/tea_sub.js index 0d8ed6c..1167fe1 100644 --- a/lib/js/src/tea_sub.js +++ b/lib/js/src/tea_sub.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; var List = require("bs-platform/lib/js/list.js"); @@ -119,9 +119,7 @@ function run(oldCallbacks, newCallbacks, oldSub, newSub) { } else { switch (oldSub.tag | 0) { case 0 : - if (typeof newSub === "number") { - exit = 1; - } else if (newSub.tag) { + if (typeof newSub === "number" || newSub.tag) { exit = 1; } else { var aux = function (_oldList, _newList) { @@ -160,29 +158,21 @@ function run(oldCallbacks, newCallbacks, oldSub, newSub) { } break; case 1 : - if (typeof newSub === "number") { + if (typeof newSub === "number" || !(newSub.tag === 1 && oldSub[0] === newSub[0])) { exit = 1; - } else if (newSub.tag === 1) { - if (oldSub[0] === newSub[0]) { - newSub[2][0] = oldSub[2][0]; - return newSub; - } else { - exit = 1; - } } else { - exit = 1; + newSub[2][0] = oldSub[2][0]; + return newSub; } break; case 2 : - if (typeof newSub === "number") { + if (typeof newSub === "number" || newSub.tag !== 2) { exit = 1; - } else if (newSub.tag === 2) { + } else { var olderCallbacks = Curry._1(oldSub[0], oldCallbacks); var newerCallbacks = Curry._1(newSub[0], newCallbacks); run(olderCallbacks, newerCallbacks, oldSub[1], newSub[1]); return newSub; - } else { - exit = 1; } break; diff --git a/lib/js/src/tea_svg.js b/lib/js/src/tea_svg.js index a24631d..266fc84 100644 --- a/lib/js/src/tea_svg.js +++ b/lib/js/src/tea_svg.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; var Vdom = require("./vdom.js"); diff --git a/lib/js/src/tea_svg_attributes.js b/lib/js/src/tea_svg_attributes.js index 002be87..ed9212a 100644 --- a/lib/js/src/tea_svg_attributes.js +++ b/lib/js/src/tea_svg_attributes.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; var Block = require("bs-platform/lib/js/block.js"); diff --git a/lib/js/src/tea_svg_events.js b/lib/js/src/tea_svg_events.js index 3adeee6..8767a68 100644 --- a/lib/js/src/tea_svg_events.js +++ b/lib/js/src/tea_svg_events.js @@ -1,2 +1,2 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE /* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/lib/js/src/tea_task.js b/lib/js/src/tea_task.js index b5cd0e9..406c1e7 100644 --- a/lib/js/src/tea_task.js +++ b/lib/js/src/tea_task.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; var Block = require("bs-platform/lib/js/block.js"); @@ -261,7 +261,7 @@ function testing() { })]); doTest(/* Ok */Block.__(0, [4]), a1); var a2 = andThen((function (n) { - var value = "" + n; + var value = String(n); return /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [value])); })]; @@ -283,7 +283,9 @@ function testing() { return Curry._1(cb, /* Ok */Block.__(0, [3])); })]); doTest(/* Ok */Block.__(0, [12]), m2); - var m3 = map(Pervasives.string_of_int, /* Task */[(function (cb) { + var m3 = map((function (prim) { + return String(prim); + }), /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [9])); })]); doTest(/* Ok */Block.__(0, ["9"]), m3); @@ -337,7 +339,9 @@ function testing() { })]); doTest(/* Error */Block.__(1, [42]), e1); var n0 = sequence(/* :: */[ - mapError(Pervasives.string_of_int, /* Task */[(function (cb) { + mapError((function (prim) { + return String(prim); + }), /* Task */[(function (cb) { return Curry._1(cb, /* Error */Block.__(1, [42])); })]), /* :: */[ @@ -349,7 +353,9 @@ function testing() { ]); doTest(/* Error */Block.__(1, ["42"]), n0); var n1 = sequence(/* :: */[ - mapError(Pervasives.string_of_int, /* Task */[(function (cb) { + mapError((function (prim) { + return String(prim); + }), /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [1])); })]), /* :: */[ @@ -361,7 +367,9 @@ function testing() { ]); doTest(/* Error */Block.__(1, ["3.14"]), n1); var n2 = sequence(/* :: */[ - mapError(Pervasives.string_of_int, /* Task */[(function (cb) { + mapError((function (prim) { + return String(prim); + }), /* Task */[(function (cb) { return Curry._1(cb, /* Ok */Block.__(0, [1])); })]), /* :: */[ diff --git a/lib/js/src/tea_time.js b/lib/js/src/tea_time.js index 621f78e..4d12699 100644 --- a/lib/js/src/tea_time.js +++ b/lib/js/src/tea_time.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; var Block = require("bs-platform/lib/js/block.js"); diff --git a/lib/js/src/vdom.js b/lib/js/src/vdom.js index ea7e38a..1ed2652 100644 --- a/lib/js/src/vdom.js +++ b/lib/js/src/vdom.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; var List = require("bs-platform/lib/js/list.js"); @@ -455,7 +455,6 @@ function patchVNodesOnElems_PropertiesApply_Mutate(_, elem, _$1, oldProp, _newPr "Passed a non-Style to a new Style as a Mutations while the old Style is not actually a style!" ]; } - break; } } @@ -484,9 +483,7 @@ function patchVNodesOnElems_PropertiesApply(callbacks, elem, _idx, _oldPropertie switch (_oldProp.tag | 0) { case 0 : var newProp = newProperties[0]; - if (typeof newProp === "number") { - exit = 1; - } else if (newProp.tag) { + if (typeof newProp === "number" || newProp.tag) { exit = 1; } else { if (!(_oldProp[0] === newProp[0] && _oldProp[1] === newProp[1])) { @@ -501,9 +498,9 @@ function patchVNodesOnElems_PropertiesApply(callbacks, elem, _idx, _oldPropertie break; case 1 : var newProp$1 = newProperties[0]; - if (typeof newProp$1 === "number") { + if (typeof newProp$1 === "number" || newProp$1.tag !== 1) { exit = 1; - } else if (newProp$1.tag === 1) { + } else { if (!(_oldProp[0] === newProp$1[0] && _oldProp[1] === newProp$1[1] && _oldProp[2] === newProp$1[2])) { patchVNodesOnElems_PropertiesApply_Mutate(callbacks, elem, idx, _oldProp, newProp$1); } @@ -512,15 +509,13 @@ function patchVNodesOnElems_PropertiesApply(callbacks, elem, _idx, _oldPropertie _idx = idx + 1 | 0; continue ; - } else { - exit = 1; } break; case 2 : var newProp$2 = newProperties[0]; - if (typeof newProp$2 === "number") { + if (typeof newProp$2 === "number" || newProp$2.tag !== 2) { exit = 1; - } else if (newProp$2.tag === 2) { + } else { if (!(_oldProp[0] === newProp$2[0] && _oldProp[1] === newProp$2[1])) { patchVNodesOnElems_PropertiesApply_Mutate(callbacks, elem, idx, _oldProp, newProp$2); } @@ -529,30 +524,26 @@ function patchVNodesOnElems_PropertiesApply(callbacks, elem, _idx, _oldPropertie _idx = idx + 1 | 0; continue ; - } else { - exit = 1; } break; case 3 : var _newProp = newProperties[0]; - if (typeof _newProp === "number") { + if (typeof _newProp === "number" || _newProp.tag !== 3) { exit = 1; - } else if (_newProp.tag === 3) { + } else { eventHandler_Mutate(callbacks, elem, _oldProp[0], _newProp[0], _oldProp[1], _newProp[1], _oldProp[2], _newProp[2]); _newProperties = newProperties[1]; _oldProperties = oldProperties[1]; _idx = idx + 1 | 0; continue ; - } else { - exit = 1; } break; case 4 : var newProp$3 = newProperties[0]; - if (typeof newProp$3 === "number") { + if (typeof newProp$3 === "number" || newProp$3.tag !== 4) { exit = 1; - } else if (newProp$3.tag === 4) { + } else { if (!Caml_obj.caml_equal(_oldProp[0], newProp$3[0])) { patchVNodesOnElems_PropertiesApply_Mutate(callbacks, elem, idx, _oldProp, newProp$3); } @@ -561,8 +552,6 @@ function patchVNodesOnElems_PropertiesApply(callbacks, elem, _idx, _oldPropertie _idx = idx + 1 | 0; continue ; - } else { - exit = 1; } break; @@ -681,7 +670,6 @@ function patchVNodesOnElems_CreateElement(_callbacks, _param) { ] ]; } - break; case 3 : var vdom = Curry._1(param[1], /* () */0); param[2][0] = vdom; @@ -736,16 +724,14 @@ function patchVNodesOnElems(callbacks, elem, elems, _idx, _oldVNodes, _newVNodes case 0 : if (newVNodes) { var match = newVNodes[0]; - if (match.tag) { + if (match.tag || oldNode[0] !== match[0]) { exit = 1; - } else if (oldNode[0] === match[0]) { + } else { _newVNodes = newVNodes[1]; _oldVNodes = oldVNodes[1]; _idx = idx + 1 | 0; continue ; - } else { - exit = 1; } } else { exit = 1; @@ -810,20 +796,16 @@ function patchVNodesOnElems(callbacks, elem, elems, _idx, _oldVNodes, _newVNodes var exit$3 = 0; if (newRest) { var match$3 = newRest[0]; - if (match$3.tag === 2) { - if (olderNamespace === newNamespace && olderTagName === newTagName && olderKey === newKey && oldNamespace === match$3[0] && oldTagName === match$3[1] && oldKey === match$3[2]) { - var firstChild = Caml_array.caml_array_get(elems, idx); - var secondChild = Caml_array.caml_array_get(elems, idx + 1 | 0); - elem.removeChild(secondChild); - Web_node.insertBefore(elem, secondChild, firstChild); - _newVNodes = newRest[1]; - _oldVNodes = olderRest; - _idx = idx + 2 | 0; - continue ; - - } else { - exit$3 = 4; - } + if (match$3.tag === 2 && olderNamespace === newNamespace && olderTagName === newTagName && olderKey === newKey && oldNamespace === match$3[0] && oldTagName === match$3[1] && oldKey === match$3[2]) { + var firstChild = Caml_array.caml_array_get(elems, idx); + var secondChild = Caml_array.caml_array_get(elems, idx + 1 | 0); + elem.removeChild(secondChild); + Web_node.insertBefore(elem, secondChild, firstChild); + _newVNodes = newRest[1]; + _oldVNodes = olderRest; + _idx = idx + 2 | 0; + continue ; + } else { exit$3 = 4; } @@ -853,18 +835,14 @@ function patchVNodesOnElems(callbacks, elem, elems, _idx, _oldVNodes, _newVNodes if (exit$2 === 3) { if (newRest) { var match$4 = newRest[0]; - if (match$4.tag === 2) { - if (oldNamespace === match$4[0] && oldTagName === match$4[1] && oldKey === match$4[2]) { - var oldChild$1 = Caml_array.caml_array_get(elems, idx); - var newChild = patchVNodesOnElems_CreateElement(callbacks, newNode); - Web_node.insertBefore(elem, newChild, oldChild$1); - _newVNodes = newRest; - _idx = idx + 1 | 0; - continue ; - - } else { - exit$1 = 2; - } + if (match$4.tag === 2 && oldNamespace === match$4[0] && oldTagName === match$4[1] && oldKey === match$4[2]) { + var oldChild$1 = Caml_array.caml_array_get(elems, idx); + var newChild = patchVNodesOnElems_CreateElement(callbacks, newNode); + Web_node.insertBefore(elem, newChild, oldChild$1); + _newVNodes = newRest; + _idx = idx + 1 | 0; + continue ; + } else { exit$1 = 2; } @@ -918,20 +896,16 @@ function patchVNodesOnElems(callbacks, elem, elems, _idx, _oldVNodes, _newVNodes var exit$6 = 0; if (newRest$1) { var match$7 = newRest$1[0]; - if (match$7.tag === 3) { - if (olderKey$1 === newKey$1 && oldKey$1 === match$7[0]) { - var firstChild$1 = Caml_array.caml_array_get(elems, idx); - var secondChild$1 = Caml_array.caml_array_get(elems, idx + 1 | 0); - elem.removeChild(secondChild$1); - Web_node.insertBefore(elem, secondChild$1, firstChild$1); - _newVNodes = newRest$1[1]; - _oldVNodes = olderRest$1; - _idx = idx + 2 | 0; - continue ; - - } else { - exit$6 = 4; - } + if (match$7.tag === 3 && olderKey$1 === newKey$1 && oldKey$1 === match$7[0]) { + var firstChild$1 = Caml_array.caml_array_get(elems, idx); + var secondChild$1 = Caml_array.caml_array_get(elems, idx + 1 | 0); + elem.removeChild(secondChild$1); + Web_node.insertBefore(elem, secondChild$1, firstChild$1); + _newVNodes = newRest$1[1]; + _oldVNodes = olderRest$1; + _idx = idx + 2 | 0; + continue ; + } else { exit$6 = 4; } @@ -963,20 +937,16 @@ function patchVNodesOnElems(callbacks, elem, elems, _idx, _oldVNodes, _newVNodes if (exit$5 === 3) { if (newRest$1) { var match$8 = newRest$1[0]; - if (match$8.tag === 3) { - if (match$8[0] === oldKey$1) { - var oldChild$3 = Caml_array.caml_array_get(elems, idx); - var newVdom = Curry._1(newGen, /* () */0); - newCache[0] = newVdom; - var newChild$1 = patchVNodesOnElems_CreateElement(callbacks, newVdom); - Web_node.insertBefore(elem, newChild$1, oldChild$3); - _newVNodes = newRest$1; - _idx = idx + 1 | 0; - continue ; - - } else { - exit$4 = 2; - } + if (match$8.tag === 3 && match$8[0] === oldKey$1) { + var oldChild$3 = Caml_array.caml_array_get(elems, idx); + var newVdom = Curry._1(newGen, /* () */0); + newCache[0] = newVdom; + var newChild$1 = patchVNodesOnElems_CreateElement(callbacks, newVdom); + Web_node.insertBefore(elem, newChild$1, oldChild$3); + _newVNodes = newRest$1; + _idx = idx + 1 | 0; + continue ; + } else { exit$4 = 2; } diff --git a/lib/js/src/web.js b/lib/js/src/web.js index 6b76110..5e7a467 100644 --- a/lib/js/src/web.js +++ b/lib/js/src/web.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; diff --git a/lib/js/src/web_date.js b/lib/js/src/web_date.js index 2e6e380..343b257 100644 --- a/lib/js/src/web_date.js +++ b/lib/js/src/web_date.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; diff --git a/lib/js/src/web_document.js b/lib/js/src/web_document.js index 8d00a5b..6d52410 100644 --- a/lib/js/src/web_document.js +++ b/lib/js/src/web_document.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; diff --git a/lib/js/src/web_event.js b/lib/js/src/web_event.js index 3adeee6..8767a68 100644 --- a/lib/js/src/web_event.js +++ b/lib/js/src/web_event.js @@ -1,2 +1,2 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE /* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/lib/js/src/web_formdata.js b/lib/js/src/web_formdata.js index 1bded58..e1873a5 100644 --- a/lib/js/src/web_formdata.js +++ b/lib/js/src/web_formdata.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; diff --git a/lib/js/src/web_json.js b/lib/js/src/web_json.js index dcb3f73..1a90573 100644 --- a/lib/js/src/web_json.js +++ b/lib/js/src/web_json.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; var Js_json = require("bs-platform/lib/js/js_json.js"); diff --git a/lib/js/src/web_location.js b/lib/js/src/web_location.js index 370882f..144164c 100644 --- a/lib/js/src/web_location.js +++ b/lib/js/src/web_location.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; @@ -7,7 +7,8 @@ function getHref($$location) { } function setHref($$location, value) { - return $$location.href = value; + $$location.href = value; + return /* () */0; } function getProtocol($$location) { @@ -15,7 +16,8 @@ function getProtocol($$location) { } function setProtocol($$location, value) { - return $$location.protocol = value; + $$location.protocol = value; + return /* () */0; } function getHost($$location) { @@ -23,7 +25,8 @@ function getHost($$location) { } function setHost($$location, value) { - return $$location.host = value; + $$location.host = value; + return /* () */0; } function getHostname($$location) { @@ -31,7 +34,8 @@ function getHostname($$location) { } function setHostname($$location, value) { - return $$location.hostname = value; + $$location.hostname = value; + return /* () */0; } function getPort($$location) { @@ -39,7 +43,8 @@ function getPort($$location) { } function setPort($$location, value) { - return $$location.port = value; + $$location.port = value; + return /* () */0; } function getPathname($$location) { @@ -47,7 +52,8 @@ function getPathname($$location) { } function setPathname($$location, value) { - return $$location.pathname = value; + $$location.pathname = value; + return /* () */0; } function getSearch($$location) { @@ -55,7 +61,8 @@ function getSearch($$location) { } function setSearch($$location, value) { - return $$location.search = value; + $$location.search = value; + return /* () */0; } function getHash($$location) { @@ -63,7 +70,8 @@ function getHash($$location) { } function setHash($$location, value) { - return $$location.hash = value; + $$location.hash = value; + return /* () */0; } function getUsername($$location) { @@ -71,7 +79,8 @@ function getUsername($$location) { } function setUsername($$location, value) { - return $$location.username = value; + $$location.username = value; + return /* () */0; } function getPassword($$location) { @@ -79,7 +88,8 @@ function getPassword($$location) { } function setPassword($$location, value) { - return $$location.password = value; + $$location.password = value; + return /* () */0; } function getOrigin($$location) { diff --git a/lib/js/src/web_node.js b/lib/js/src/web_node.js index 6d16b99..f05dae6 100644 --- a/lib/js/src/web_node.js +++ b/lib/js/src/web_node.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; @@ -95,7 +95,8 @@ function focus(n) { } function set_nodeValue(n, text) { - return n.nodeValue = text; + n.nodeValue = text; + return /* () */0; } function get_nodeValue(n) { diff --git a/lib/js/src/web_window.js b/lib/js/src/web_window.js index f819143..5e130f8 100644 --- a/lib/js/src/web_window.js +++ b/lib/js/src/web_window.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; diff --git a/lib/js/src/web_window_history.js b/lib/js/src/web_window_history.js index 30c04ca..2c9fb76 100644 --- a/lib/js/src/web_window_history.js +++ b/lib/js/src/web_window_history.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; diff --git a/lib/js/src/web_window_localstorage.js b/lib/js/src/web_window_localstorage.js index 317222f..384c87f 100644 --- a/lib/js/src/web_window_localstorage.js +++ b/lib/js/src/web_window_localstorage.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; diff --git a/lib/js/src/web_xmlhttprequest.js b/lib/js/src/web_xmlhttprequest.js index 1be7c00..ee5ca61 100644 --- a/lib/js/src/web_xmlhttprequest.js +++ b/lib/js/src/web_xmlhttprequest.js @@ -1,4 +1,4 @@ -// Generated by BUCKLESCRIPT VERSION 2.2.2, PLEASE EDIT WITH CARE +// Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; var List = require("bs-platform/lib/js/list.js"); @@ -146,13 +146,7 @@ function getAllResponseHeadersAsDict(x) { var v = param[1]; var l = param[0]; var c = Caml_primitive.caml_string_compare(x, v); - if (c) { - if (c < 0) { - return bal(add(x, data, l), v, d, r); - } else { - return bal(l, v, d, add(x, data, r)); - } - } else { + if (c === 0) { return /* Node */[ l, x, @@ -160,6 +154,10 @@ function getAllResponseHeadersAsDict(x) { r, param[4] ]; + } else if (c < 0) { + return bal(add(x, data, l), v, d, r); + } else { + return bal(l, v, d, add(x, data, r)); } } else { return /* Node */[ @@ -213,13 +211,7 @@ function getAllResponseHeadersAsDict(x) { var v = param[1]; var l = param[0]; var c = Caml_primitive.caml_string_compare(x, v); - if (c) { - if (c < 0) { - return bal(remove(x, l), v, d, r); - } else { - return bal(l, v, d, remove(x, r)); - } - } else { + if (c === 0) { var t1 = l; var t2 = r; if (t1) { @@ -232,6 +224,10 @@ function getAllResponseHeadersAsDict(x) { } else { return t2; } + } else if (c < 0) { + return bal(remove(x, l), v, d, r); + } else { + return bal(l, v, d, remove(x, r)); } } else { return /* Empty */0; @@ -302,14 +298,10 @@ function getAllResponseHeadersAsDict(x) { while(true) { var param = _param; if (param) { - if (Curry._2(p, param[1], param[2])) { - if (for_all(p, param[0])) { - _param = param[3]; - continue ; - - } else { - return /* false */0; - } + if (Curry._2(p, param[1], param[2]) && for_all(p, param[0])) { + _param = param[3]; + continue ; + } else { return /* false */0; } @@ -322,9 +314,7 @@ function getAllResponseHeadersAsDict(x) { while(true) { var param = _param; if (param) { - if (Curry._2(p, param[1], param[2])) { - return /* true */1; - } else if (exists(p, param[0])) { + if (Curry._2(p, param[1], param[2]) || exists(p, param[0])) { return /* true */1; } else { _param = param[3]; @@ -395,28 +385,26 @@ function getAllResponseHeadersAsDict(x) { var v = param[1]; var l = param[0]; var c = Caml_primitive.caml_string_compare(x, v); - if (c) { - 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 { + if (c === 0) { return /* tuple */[ l, /* 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 */[ @@ -559,10 +547,10 @@ function overrideMimeType(mimetype, x) { function send(body, x) { if (typeof body === "number") { - if (body) { - return x.send(null); - } else { + if (body === 0) { return x.send(); + } else { + return x.send(null); } } else { switch (body.tag | 0) { @@ -588,7 +576,8 @@ function setRequestHeader(header, value, x) { } function set_onreadystatechange(cb, x) { - return x.onreadystatechange = cb; + x.onreadystatechange = cb; + return /* () */0; } function get_onreadystatechange(x) { @@ -598,7 +587,7 @@ function get_onreadystatechange(x) { function readyState(x) { var i = x.readystate; if (i > 4 || i < 0) { - var s = "Invalid return from 'readystate' of: " + i; + var s = "Invalid return from 'readystate' of: " + String(i); throw [ Caml_builtin_exceptions.failure, s @@ -612,21 +601,28 @@ function set_responseType(typ, x) { if (typeof typ === "number") { switch (typ) { case 0 : - return x.responseType = ""; + x.responseType = ""; + return /* () */0; case 1 : - return x.responseType = "arraybuffer"; + x.responseType = "arraybuffer"; + return /* () */0; case 2 : - return x.responseType = "blob"; + x.responseType = "blob"; + return /* () */0; case 3 : - return x.responseType = "document"; + x.responseType = "document"; + return /* () */0; case 4 : - return x.responseType = "json"; + x.responseType = "json"; + return /* () */0; case 5 : - return x.responseType = "text"; + x.responseType = "text"; + return /* () */0; } } else { - return x.responseType = typ[0]; + x.responseType = typ[0]; + return /* () */0; } } @@ -702,7 +698,8 @@ function get_statusText(x) { } function set_timeout(t, x) { - return x.timeout = t; + x.timeout = t; + return /* () */0; } function get_timeout(x) { @@ -710,7 +707,8 @@ function get_timeout(x) { } function set_withCredentials(b, x) { - return x.withCredentials = b; + x.withCredentials = b; + return /* () */0; } function get_withCredentials(x) { @@ -718,7 +716,8 @@ function get_withCredentials(x) { } function set_onabort(cb, x) { - return x.onabort = cb; + x.onabort = cb; + return /* () */0; } function get_onabort(x) { @@ -726,7 +725,8 @@ function get_onabort(x) { } function set_onerror(cb, x) { - return x.onerror = cb; + x.onerror = cb; + return /* () */0; } function get_onerror(x) { @@ -734,7 +734,8 @@ function get_onerror(x) { } function set_onload(cb, x) { - return x.onload = cb; + x.onload = cb; + return /* () */0; } function get_onload(x) { @@ -742,7 +743,8 @@ function get_onload(x) { } function set_onloadstart(cb, x) { - return x.onloadstart = cb; + x.onloadstart = cb; + return /* () */0; } function get_onloadstart(x) { @@ -750,7 +752,8 @@ function get_onloadstart(x) { } function set_onprogress(cb, x) { - return x.onprogress = cb; + x.onprogress = cb; + return /* () */0; } function get_onprogress(x) { @@ -758,7 +761,8 @@ function get_onprogress(x) { } function set_ontimeout(cb, x) { - return x.ontimeout = cb; + x.ontimeout = cb; + return /* () */0; } function get_ontimeout(x) { @@ -766,7 +770,8 @@ function get_ontimeout(x) { } function set_onloadend(cb, x) { - return x.onloadend = cb; + x.onloadend = cb; + return /* () */0; } function get_onloadend(x) { From 6ba3fccd0664290f10517ca4e7bb608ce9815e4a Mon Sep 17 00:00:00 2001 From: Thomas Coopman Date: Tue, 20 Mar 2018 08:26:51 +0100 Subject: [PATCH 3/7] replace Array with Belt.Array when possible --- lib/js/src/tea_json.js | 14 ++++++++------ lib/js/src/web_xmlhttprequest.js | 5 +++-- src/tea_app.ml | 2 +- src/tea_json.ml | 14 +++++++------- src/web_xmlhttprequest.ml | 4 ++-- 5 files changed, 21 insertions(+), 18 deletions(-) diff --git a/lib/js/src/tea_json.js b/lib/js/src/tea_json.js index 27a9d39..e29dbde 100644 --- a/lib/js/src/tea_json.js +++ b/lib/js/src/tea_json.js @@ -7,6 +7,8 @@ var Block = require("bs-platform/lib/js/block.js"); var Curry = require("bs-platform/lib/js/curry.js"); var Js_exn = require("bs-platform/lib/js/js_exn.js"); var Web_json = require("./web_json.js"); +var Belt_List = require("bs-platform/lib/js/belt_List.js"); +var Belt_Array = require("bs-platform/lib/js/belt_Array.js"); var Caml_array = require("bs-platform/lib/js/caml_array.js"); var Pervasives = require("bs-platform/lib/js/pervasives.js"); var Tea_result = require("./tea_result.js"); @@ -766,7 +768,7 @@ function list(param) { } }; try { - return /* Ok */Block.__(0, [List.map(parse, $$Array.to_list(match[0]))]); + return /* Ok */Block.__(0, [Belt_List.map($$Array.to_list(match[0]), parse)]); } catch (raw_exn){ var exn = Js_exn.internalToOCamlException(raw_exn); @@ -801,7 +803,7 @@ function array(param) { } }; try { - return /* Ok */Block.__(0, [$$Array.map(parse, match[0])]); + return /* Ok */Block.__(0, [Belt_Array.map(match[0], parse)]); } catch (raw_exn){ var exn = Js_exn.internalToOCamlException(raw_exn); @@ -826,7 +828,7 @@ function keyValuePairs(param) { } else if (match.tag === 2) { var o = match[0]; var keys = Object.keys(o); - var parse = function (k, l) { + var parse = function (l, k) { var match = o[k]; if (match !== undefined) { var match$1 = Curry._1(decoder, match); @@ -852,7 +854,7 @@ function keyValuePairs(param) { } }; try { - return /* Ok */Block.__(0, [$$Array.fold_right(parse, keys, /* [] */0)]); + return /* Ok */Block.__(0, [Belt_Array.reduceReverse(keys, /* [] */0, parse)]); } catch (raw_exn){ var exn = Js_exn.internalToOCamlException(raw_exn); @@ -877,7 +879,7 @@ function dict(param) { } else if (match.tag === 2) { var o = match[0]; var keys = Object.keys(o); - var parse = function (k, d) { + var parse = function (d, k) { var match = o[k]; if (match !== undefined) { var match$1 = Curry._1(decoder, match); @@ -897,7 +899,7 @@ function dict(param) { } }; try { - return /* Ok */Block.__(0, [$$Array.fold_right(parse, keys, /* Empty */0)]); + return /* Ok */Block.__(0, [Belt_Array.reduceReverse(keys, /* Empty */0, parse)]); } catch (raw_exn){ var exn = Js_exn.internalToOCamlException(raw_exn); diff --git a/lib/js/src/web_xmlhttprequest.js b/lib/js/src/web_xmlhttprequest.js index ee5ca61..6c0d2c9 100644 --- a/lib/js/src/web_xmlhttprequest.js +++ b/lib/js/src/web_xmlhttprequest.js @@ -5,6 +5,7 @@ var List = require("bs-platform/lib/js/list.js"); var $$Array = require("bs-platform/lib/js/array.js"); var Block = require("bs-platform/lib/js/block.js"); var Curry = require("bs-platform/lib/js/curry.js"); +var Belt_Array = require("bs-platform/lib/js/belt_Array.js"); var Js_primitive = require("bs-platform/lib/js/js_primitive.js"); var Web_formdata = require("./web_formdata.js"); var Caml_primitive = require("bs-platform/lib/js/caml_primitive.js"); @@ -48,9 +49,9 @@ function getAllResponseHeadersAsList(x) { } }), List.filter((function (a) { return +(a.length === 2); - }))($$Array.to_list($$Array.map((function (param) { + }))($$Array.to_list(Belt_Array.map(err[0].split("\r\n"), (function (param) { return param.split(": ", 2); - }), err[0].split("\r\n")))))]); + })))))]); } } diff --git a/src/tea_app.ml b/src/tea_app.ml index db50c65..12caa3f 100644 --- a/src/tea_app.ml +++ b/src/tea_app.ml @@ -194,7 +194,7 @@ let programLoop update view subscriptions initModel initCmd = function (* let () = Js.log (Vdom.createVNodeIntoElement callbacks !lastVdom parentNode) in *) (* We own the passed in node, clear it out TODO: Clear it out properly *) (* let () = Js.log ("Blah", Web.Node.firstChild parentNode, Js.Null.test (Web.Node.firstChild parentNode), false, true) in *) - let clearPnode () = while (Js.Array.length (Web.Node.childNodes parentNode)) > 0 do + let clearPnode () = while (Belt.Array.length (Web.Node.childNodes parentNode)) > 0 do match Js.Null.toOption (Web.Node.firstChild parentNode) with | None -> () | Some firstChild -> let _removedChild = Web.Node.removeChild parentNode firstChild in () diff --git a/src/tea_json.ml b/src/tea_json.ml index f6ca0b8..6b4e66e 100644 --- a/src/tea_json.ml +++ b/src/tea_json.ml @@ -85,7 +85,7 @@ module Decoder = struct | Tea_result.Ok r -> r | Tea_result.Error e -> raise (ParseFail e) ) in - try Tea_result.Ok (Array.to_list a |> List.map parse) + try Tea_result.Ok (Array.to_list a |. Belt.List.map parse) with ParseFail e -> Tea_result.Error ("list -> " ^ e) ) | _ -> Tea_result.Error "Non-list value" @@ -102,7 +102,7 @@ module Decoder = struct | Tea_result.Ok r -> r | Tea_result.Error e -> raise (ParseFail e) ) in - try Tea_result.Ok (Array.map parse a) + try Tea_result.Ok (Belt.Array.map a parse) with ParseFail e -> Tea_result.Error ("array -> " ^ e) ) | _ -> Tea_result.Error "Non-array value" @@ -115,7 +115,7 @@ module Decoder = struct match classify value with | JSONObject o -> ( let keys = Js.Dict.keys o in - let parse k l = + let parse l k = ( match Js.Dict.get o k with | None -> raise (ParseFail ("Key is undefined: " ^ k)) | Some v -> @@ -123,7 +123,7 @@ module Decoder = struct | Tea_result.Ok r -> (k, r) :: l | Tea_result.Error e -> raise (ParseFail e) ) in - try Tea_result.Ok (Array.fold_right parse keys []) + try Tea_result.Ok (Belt.Array.reduceReverse keys [] parse) with ParseFail e -> Tea_result.Error ("Invalid keyValuePair parsing: " ^ e) ) | _ -> Tea_result.Error "Non-keyValuePair value" @@ -136,7 +136,7 @@ module Decoder = struct match classify value with | JSONObject o -> ( let keys = Js.Dict.keys o in - let parse k d = + let parse d k = ( match Js.Dict.get o k with | None -> raise (ParseFail ("Key is undefined: " ^ k)) | Some v -> @@ -145,7 +145,7 @@ module Decoder = struct | Tea_result.Error e -> raise (ParseFail e) ) in let emptyDict = ObjectDict.empty in - try Tea_result.Ok (Array.fold_right parse keys emptyDict) + try Tea_result.Ok (Belt.Array.reduceReverse keys emptyDict parse) with ParseFail e -> Tea_result.Error ("Invalid dict parsing: " ^ e) ) | _ -> Tea_result.Error "Non-dict value" @@ -176,7 +176,7 @@ module Decoder = struct let open Web.Json in match classify value with | JSONArray a -> - if idx < 0 || idx > (Array.length a) + if idx < 0 || idx > (Belt.Array.length a) then Tea_result.Error ("Array index out of range: " ^ (string_of_int idx)) else decoder a.(idx) | _ -> Tea_result.Error "Non-array value" diff --git a/src/web_xmlhttprequest.ml b/src/web_xmlhttprequest.ml index 9ff6dc0..5e2afed 100644 --- a/src/web_xmlhttprequest.ml +++ b/src/web_xmlhttprequest.ml @@ -86,9 +86,9 @@ let getAllResponseHeadersAsList x = | Ok s -> Ok ( s |> Js.String.split "\r\n" - |> Array.map (Js.String.splitAtMost ": " ~limit:2) + |. Belt.Array.map (Js.String.splitAtMost ": " ~limit:2) |> Array.to_list - |> List.filter (fun a -> Array.length a == 2) + |> List.filter (fun a -> Belt.Array.length a == 2) |> List.map ( function | [|key; value|] -> (key, value) From 9a6c511056fc23ad850ed913f55c2f5a5273189b Mon Sep 17 00:00:00 2001 From: Thomas Coopman Date: Tue, 20 Mar 2018 08:49:35 +0100 Subject: [PATCH 4/7] replace `List` with `Belt.List` --- lib/js/src/tea_app.js | 4 +-- lib/js/src/tea_cmd.js | 6 ++--- lib/js/src/tea_html.js | 10 ++++---- lib/js/src/tea_http.js | 8 +++--- lib/js/src/tea_json.js | 9 +++---- lib/js/src/tea_mouse.js | 2 +- lib/js/src/tea_sub.js | 10 ++++---- lib/js/src/vdom.js | 36 +++++++++++++-------------- lib/js/src/web_xmlhttprequest.js | 21 ++++++++-------- src/tea_app.ml | 2 +- src/tea_cmd.ml | 2 +- src/tea_html.ml | 4 +-- src/tea_http.ml | 8 +++--- src/tea_json.ml | 8 +++--- src/tea_mouse.ml | 4 +-- src/tea_sub.ml | 4 +-- src/tea_task.ml | 2 +- src/vdom.ml | 16 ++++++------ src/web_xmlhttprequest.ml | 15 +++++------ test/test_client_attribute_removal.ml | 2 +- 20 files changed, 86 insertions(+), 87 deletions(-) diff --git a/lib/js/src/tea_app.js b/lib/js/src/tea_app.js index cd66f88..284b41c 100644 --- a/lib/js/src/tea_app.js +++ b/lib/js/src/tea_app.js @@ -2,11 +2,11 @@ 'use strict'; var Web = require("./web.js"); -var List = require("bs-platform/lib/js/list.js"); var Vdom = require("./vdom.js"); var Curry = require("bs-platform/lib/js/curry.js"); var Tea_cmd = require("./tea_cmd.js"); var Tea_sub = require("./tea_sub.js"); +var Belt_List = require("bs-platform/lib/js/belt_List.js"); var Caml_builtin_exceptions = require("bs-platform/lib/js/caml_builtin_exceptions.js"); function programStateWrapper(initModel, pump, shutdown) { @@ -34,7 +34,7 @@ function programStateWrapper(initModel, pump, shutdown) { var msgs = match$1[0]; if (msgs) { pending[0] = /* None */0; - return List.iter(handler, List.rev(msgs)); + return Belt_List.forEach(Belt_List.reverse(msgs), handler); } else { pending[0] = /* None */0; return /* () */0; diff --git a/lib/js/src/tea_cmd.js b/lib/js/src/tea_cmd.js index b252fa7..0418df9 100644 --- a/lib/js/src/tea_cmd.js +++ b/lib/js/src/tea_cmd.js @@ -1,10 +1,10 @@ // Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; -var List = require("bs-platform/lib/js/list.js"); var Vdom = require("./vdom.js"); var Block = require("bs-platform/lib/js/block.js"); var Curry = require("bs-platform/lib/js/curry.js"); +var Belt_List = require("bs-platform/lib/js/belt_List.js"); function batch(cmds) { return /* Batch */Block.__(1, [cmds]); @@ -32,9 +32,9 @@ function run(callbacks, param) { } else { switch (param.tag | 0) { case 1 : - return List.fold_left((function (_, cmd) { + return Belt_List.reduceU(param[0], /* () */0, (function (_, cmd) { return run(callbacks, cmd); - }), /* () */0, param[0]); + })); case 0 : case 2 : return Curry._1(param[0], callbacks); diff --git a/lib/js/src/tea_html.js b/lib/js/src/tea_html.js index c7a25a6..9c5f45c 100644 --- a/lib/js/src/tea_html.js +++ b/lib/js/src/tea_html.js @@ -1,11 +1,11 @@ // Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; -var List = require("bs-platform/lib/js/list.js"); var Vdom = require("./vdom.js"); var Block = require("bs-platform/lib/js/block.js"); var Curry = require("bs-platform/lib/js/curry.js"); var $$String = require("bs-platform/lib/js/string.js"); +var Belt_List = require("bs-platform/lib/js/belt_List.js"); function text(str) { return /* Text */Block.__(1, [str]); @@ -613,11 +613,11 @@ function class$prime(name) { } function classList(classes) { - var name = $$String.concat(" ", List.map((function (param) { + var name = $$String.concat(" ", Belt_List.map(Belt_List.keep(classes, (function (param) { + return param[1]; + })), (function (param) { return param[0]; - }), List.filter((function (param) { - return param[1]; - }))(classes))); + }))); return /* RawProp */Block.__(0, [ "className", name diff --git a/lib/js/src/tea_http.js b/lib/js/src/tea_http.js index be80d7e..e3bdd92 100644 --- a/lib/js/src/tea_http.js +++ b/lib/js/src/tea_http.js @@ -1,10 +1,10 @@ // Generated by BUCKLESCRIPT VERSION 2.2.3, 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 Belt_List = require("bs-platform/lib/js/belt_List.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"); @@ -646,7 +646,7 @@ function send(resultToMessage, param) { var setHeader = function (param) { return Web_xmlhttprequest.setRequestHeader(param[0], param[1], xhr); }; - List.iter(setHeader, headers); + Belt_List.forEach(headers, setHeader); Web_xmlhttprequest.set_responseType(typ, xhr); if (timeout) { xhr.timeout = timeout[0]; @@ -673,7 +673,7 @@ function decodeUri(str) { function track(toMessage, param) { var events = param[1]; var onprogress = /* Some */[(function (callbacks, ev) { - var match = Tea_json.Decoder[/* decodeValue */30](Tea_json.Decoder[/* field */11]("lengthComputable", Tea_json.Decoder[/* bool */5]), ev); + var match = Tea_json.Decoder[/* decodeValue */30](Tea_json.Decoder[/* field */11](Tea_json.Decoder[/* bool */5], "lengthComputable"), ev); var lengthComputable; lengthComputable = match.tag ? /* false */0 : match[0]; if (lengthComputable) { @@ -682,7 +682,7 @@ function track(toMessage, param) { /* bytes */bytes, /* bytesExpected */bytesExpected ]; - }), Tea_json.Decoder[/* field */11]("loaded", Tea_json.Decoder[/* int */3]), Tea_json.Decoder[/* field */11]("total", Tea_json.Decoder[/* int */3])); + }), Tea_json.Decoder[/* field */11](Tea_json.Decoder[/* int */3], "loaded"), Tea_json.Decoder[/* field */11](Tea_json.Decoder[/* int */3], "total")); var match$1 = Tea_json.Decoder[/* decodeValue */30](decoder, ev); if (match$1.tag) { return /* () */0; diff --git a/lib/js/src/tea_json.js b/lib/js/src/tea_json.js index e29dbde..64ccd1b 100644 --- a/lib/js/src/tea_json.js +++ b/lib/js/src/tea_json.js @@ -1,7 +1,6 @@ // Generated by BUCKLESCRIPT VERSION 2.2.3, PLEASE EDIT WITH CARE 'use strict'; -var List = require("bs-platform/lib/js/list.js"); var $$Array = require("bs-platform/lib/js/array.js"); var Block = require("bs-platform/lib/js/block.js"); var Curry = require("bs-platform/lib/js/curry.js"); @@ -768,7 +767,7 @@ function list(param) { } }; try { - return /* Ok */Block.__(0, [Belt_List.map($$Array.to_list(match[0]), parse)]); + return /* Ok */Block.__(0, [Belt_List.map(Belt_List.fromArray(match[0]), parse)]); } catch (raw_exn){ var exn = Js_exn.internalToOCamlException(raw_exn); @@ -915,7 +914,7 @@ function dict(param) { })]; } -function field(key, param) { +function field(param, key) { var decoder = param[0]; return /* Decoder */[(function (value) { var match = Web_json.classify(value); @@ -940,7 +939,7 @@ function field(key, param) { } function at(fields, dec) { - return List.fold_right(field, fields, dec); + return Belt_List.reduceReverse(fields, dec, field); } function index(idx, param) { @@ -1396,7 +1395,7 @@ function object_(v) { o[param[0]] = param[1]; return o; }; - return List.fold_left(aux, { }, v); + return Belt_List.reduce(v, { }, aux); } function array$1(v) { diff --git a/lib/js/src/tea_mouse.js b/lib/js/src/tea_mouse.js index 64b3245..f51df9c 100644 --- a/lib/js/src/tea_mouse.js +++ b/lib/js/src/tea_mouse.js @@ -12,7 +12,7 @@ var position = Tea_json.Decoder[/* map2 */17]((function (x, y) { /* x */x, /* y */y ]; - }), Tea_json.Decoder[/* field */11]("pageX", Tea_json.Decoder[/* int */3]), Tea_json.Decoder[/* field */11]("pageY", Tea_json.Decoder[/* int */3])); + }), Tea_json.Decoder[/* field */11](Tea_json.Decoder[/* int */3], "pageX"), Tea_json.Decoder[/* field */11](Tea_json.Decoder[/* int */3], "pageY")); function registerGlobal(name, key, tagger) { var enableCall = function (callbacks_base) { diff --git a/lib/js/src/tea_sub.js b/lib/js/src/tea_sub.js index 1167fe1..22827fc 100644 --- a/lib/js/src/tea_sub.js +++ b/lib/js/src/tea_sub.js @@ -1,9 +1,9 @@ // Generated by BUCKLESCRIPT VERSION 2.2.3, 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 Belt_List = require("bs-platform/lib/js/belt_List.js"); function batch(subs) { return /* Batch */Block.__(0, [subs]); @@ -50,11 +50,11 @@ function run(oldCallbacks, newCallbacks, oldSub, newSub) { case 0 : var subs = param[0]; if (subs) { - return List.iter((function(callbacks){ + return Belt_List.forEach(subs, (function(callbacks){ return function (param) { return enable(callbacks, param); } - }(callbacks)), subs); + }(callbacks))); } else { return /* () */0; } @@ -82,11 +82,11 @@ function run(oldCallbacks, newCallbacks, oldSub, newSub) { case 0 : var subs = param[0]; if (subs) { - return List.iter((function(callbacks){ + return Belt_List.forEach(subs, (function(callbacks){ return function (param) { return disable(callbacks, param); } - }(callbacks)), subs); + }(callbacks))); } else { return /* () */0; } diff --git a/lib/js/src/vdom.js b/lib/js/src/vdom.js index 1ed2652..c71f6ff 100644 --- a/lib/js/src/vdom.js +++ b/lib/js/src/vdom.js @@ -1,12 +1,12 @@ // Generated by BUCKLESCRIPT VERSION 2.2.3, 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 $$String = require("bs-platform/lib/js/string.js"); var Caml_obj = require("bs-platform/lib/js/caml_obj.js"); var Web_node = require("./web_node.js"); +var Belt_List = require("bs-platform/lib/js/belt_List.js"); var Caml_array = require("bs-platform/lib/js/caml_array.js"); var Web_document = require("./web_document.js"); var Caml_builtin_exceptions = require("bs-platform/lib/js/caml_builtin_exceptions.js"); @@ -122,7 +122,7 @@ function renderToHtmlString(_param) { /* :: */[ tagName, /* :: */[ - $$String.concat("", List.map((function (p) { + $$String.concat("", Belt_List.mapU(param[4], (function (p) { var param = p; if (typeof param === "number") { return ""; @@ -185,7 +185,7 @@ function renderToHtmlString(_param) { return $$String.concat("", /* :: */[ " style=\"", /* :: */[ - $$String.concat(";", List.map((function (param) { + $$String.concat(";", Belt_List.mapU(param[0], (function (param) { return $$String.concat("", /* :: */[ param[0], /* :: */[ @@ -199,7 +199,7 @@ function renderToHtmlString(_param) { ] ] ]); - }), param[0])), + }))), /* :: */[ "\"", /* [] */0 @@ -209,11 +209,11 @@ function renderToHtmlString(_param) { } } - }), param[4])), + }))), /* :: */[ ">", /* :: */[ - $$String.concat("", List.map(renderToHtmlString, param[5])), + $$String.concat("", Belt_List.mapU(param[5], renderToHtmlString)), /* :: */[ " pending := None | Some msgs -> let () = pending := None in - List.iter handler (List.rev msgs) + Belt.List.forEach (Belt.List.reverse msgs) handler ) | Some msgs -> pending := Some (msg :: msgs) in let finalizedCBs : 'msg Vdom.applicationCallbacks = { diff --git a/src/tea_cmd.ml b/src/tea_cmd.ml index fe93fb6..7cb0373 100644 --- a/src/tea_cmd.ml +++ b/src/tea_cmd.ml @@ -35,7 +35,7 @@ let rec run callbacks = function | NoCmd -> () | Tagger tagger -> tagger callbacks - | Batch cmds -> List.fold_left (fun () cmd -> run callbacks cmd) () cmds + | Batch cmds -> Belt.List.reduceU cmds () (fun [@bs] () cmd -> run callbacks cmd) | EnqueueCall cb -> (* let () = Js.log ("Cmd.run", "enqueue", cb) in *) cb callbacks diff --git a/src/tea_html.ml b/src/tea_html.ml index 26bb402..3238c4d 100644 --- a/src/tea_html.ml +++ b/src/tea_html.ml @@ -224,8 +224,8 @@ let class' name = prop "className" name let classList classes = classes - |> List.filter (fun (_fst, snd) -> snd) - |> List.map (fun (fst, _snd) -> fst) + |. Belt.List.keep (fun (_fst, snd) -> snd) + |. Belt.List.map (fun (fst, _snd) -> fst) |> String.concat " " |> class' diff --git a/src/tea_http.ml b/src/tea_http.ml index d0b90e1..9450e62 100644 --- a/src/tea_http.ml +++ b/src/tea_http.ml @@ -141,7 +141,7 @@ let send resultToMessage (Request (request, maybeEvents)) = with _ -> enqResError (BadUrl url) () in let () = let setHeader (Header (k, v)) = Web.XMLHttpRequest.setRequestHeader k v xhr in - let () = List.iter setHeader headers in + let () = Belt.List.forEach headers setHeader in let () = Web.XMLHttpRequest.set_responseType typ xhr in let () = match timeout with @@ -207,7 +207,7 @@ module Progress = struct let lengthComputable = let open Tea_json.Decoder in let open Tea_result in - match decodeValue (field "lengthComputable" bool) ev with + match decodeValue (field bool "lengthComputable") ev with | Error _e -> false | Ok v -> v in if lengthComputable then @@ -215,8 +215,8 @@ module Progress = struct let open Tea_result in let decoder = map2 (fun bytes bytesExpected -> {bytes; bytesExpected}) - (field "loaded" int) - (field "total" int) + (field int "loaded") + (field int "total") in match decodeValue decoder ev with | Error _e -> () diff --git a/src/tea_json.ml b/src/tea_json.ml index 6b4e66e..5da3d8a 100644 --- a/src/tea_json.ml +++ b/src/tea_json.ml @@ -85,7 +85,7 @@ module Decoder = struct | Tea_result.Ok r -> r | Tea_result.Error e -> raise (ParseFail e) ) in - try Tea_result.Ok (Array.to_list a |. Belt.List.map parse) + try Tea_result.Ok (Belt.List.fromArray a |. Belt.List.map parse) with ParseFail e -> Tea_result.Error ("list -> " ^ e) ) | _ -> Tea_result.Error "Non-list value" @@ -151,7 +151,7 @@ module Decoder = struct | _ -> Tea_result.Error "Non-dict value" ) - let field key (Decoder decoder) = + let field (Decoder decoder) key = Decoder ( fun value -> let open Web.Json in @@ -168,7 +168,7 @@ module Decoder = struct ) let at fields dec = - List.fold_right field fields dec + Belt.List.reduceReverse fields dec field let index idx (Decoder decoder) = Decoder @@ -540,7 +540,7 @@ module Encoder = struct let aux o (k, v) = let () = Js.Dict.set o k v in o in - let o = List.fold_left aux (Js.Dict.empty ()) v in + let o = Belt.List.reduce v (Js.Dict.empty ()) aux in Json.of_type Json.Object o let array (v : 't array) = Json.of_type Json.Array v diff --git a/src/tea_mouse.ml b/src/tea_mouse.ml index 9bdc5f3..77828bb 100644 --- a/src/tea_mouse.ml +++ b/src/tea_mouse.ml @@ -8,8 +8,8 @@ type position = { let position = let open Tea_json.Decoder in map2 (fun x y -> {x; y}) - (field "pageX" int) - (field "pageY" int) + (field int "pageX") + (field int "pageY") let registerGlobal name key tagger = diff --git a/src/tea_sub.ml b/src/tea_sub.ml index 8d84ba7..0bdd4dc 100644 --- a/src/tea_sub.ml +++ b/src/tea_sub.ml @@ -38,7 +38,7 @@ let rec run : type msgOld msgNew . msgOld Vdom.applicationCallbacks ref -> msgNe let rec enable : type msg . msg Vdom.applicationCallbacks ref -> msg t -> unit = fun callbacks -> function | NoSub -> () | Batch [] -> () - | Batch subs -> List.iter (enable callbacks) subs + | Batch subs -> Belt.List.forEach subs (enable callbacks) | Mapper (mapper, sub) -> let subCallbacks = mapper callbacks in enable subCallbacks sub @@ -47,7 +47,7 @@ let rec run : type msgOld msgNew . msgOld Vdom.applicationCallbacks ref -> msgNe let rec disable : type msg . msg Vdom.applicationCallbacks ref -> msg t -> unit = fun callbacks -> function | NoSub -> () | Batch [] -> () - | Batch subs -> List.iter (disable callbacks) subs + | Batch subs -> Belt.List.forEach subs (disable callbacks) | Mapper (mapper, sub) -> let subCallbacks = mapper callbacks in disable subCallbacks sub diff --git a/src/tea_task.ml b/src/tea_task.ml index 24fd929..51ee539 100644 --- a/src/tea_task.ml +++ b/src/tea_task.ml @@ -141,7 +141,7 @@ let map6 func task1 task2 task3 task4 task5 task6 = let rec sequence = function | [] -> succeed [] | task :: remainingTasks -> - map2 (fun l r -> l :: r (* TODO: Replace with `List.cons` when updated to version 4.03 *)) task (sequence remainingTasks) + map2 (fun l r -> Belt.List.add r l) task (sequence remainingTasks) diff --git a/src/vdom.ml b/src/vdom.ml index 65289ff..e408477 100644 --- a/src/vdom.ml +++ b/src/vdom.ml @@ -115,16 +115,16 @@ let rec renderToHtmlString = function | Attribute (_namespace, k, v) -> String.concat "" [" "; k; "=\""; v; "\""] | Data (k, v) -> String.concat "" [" data-"; k; "=\""; v; "\""] | Event (_, _, _) -> "" - | Style s -> String.concat "" [" style=\""; String.concat ";" (List.map (fun (k, v) -> String.concat "" [k;":";v;";"]) s); "\""] + | Style s -> String.concat "" [" style=\""; String.concat ";" (Belt.List.mapU s (fun [@bs] (k, v) -> String.concat "" [k;":";v;";"])); "\""] in String.concat "" [ "<" ; namespace ; if namespace = "" then "" else ":" ; tagName - ; String.concat "" (List.map (fun p -> renderProp p) props) + ; String.concat "" (Belt.List.mapU props (fun [@bs] p -> renderProp p)) ; ">" - ; String.concat "" (List.map (fun v -> renderToHtmlString v) vdoms) + ; String.concat "" (Belt.List.mapU vdoms (fun [@bs] v -> renderToHtmlString v)) ; "" @@ -202,7 +202,7 @@ let patchVNodesOnElems_PropertiesApply_Add callbacks elem _idx = function | Attribute (namespace, k, v) -> Web.Node.setAttributeNsOptional elem namespace k v | Data (k, v) -> Js.log ("TODO: Add Data Unhandled", k, v); failwith "TODO: Add Data Unhandled" | Event (name, handlerType, cache) -> cache := eventHandler_Register callbacks elem name handlerType - | Style s -> List.fold_left (fun () (k, v) -> Web.Node.setStyleProperty elem k (Js.Null.return v)) () s + | Style s -> Belt.List.reduceU s () (fun [@bs] () (k, v) -> Web.Node.setStyleProperty elem k (Js.Null.return v)) let patchVNodesOnElems_PropertiesApply_Remove _callbacks elem _idx = function @@ -211,7 +211,7 @@ let patchVNodesOnElems_PropertiesApply_Remove _callbacks elem _idx = function | Attribute (namespace, k, _v) -> Web.Node.removeAttributeNsOptional elem namespace k | Data (k, v) -> Js.log ("TODO: Remove Data Unhandled", k, v); failwith "TODO: Remove Data Unhandled" | Event (name, _, cache) -> cache := eventHandler_Unregister elem name !cache - | Style s -> List.fold_left (fun () (k, _v) -> Web.Node.setStyleProperty elem k Js.Null.empty) () s + | Style s -> Belt.List.reduceU s () (fun [@bs] () (k, _v) -> Web.Node.setStyleProperty elem k Js.Null.empty) let patchVNodesOnElems_PropertiesApply_RemoveAdd callbacks elem idx oldProp newProp = let () = patchVNodesOnElems_PropertiesApply_Remove callbacks elem idx oldProp in @@ -232,7 +232,7 @@ let patchVNodesOnElems_PropertiesApply_Mutate _callbacks elem _idx oldProp = fun (* let () = Js.log ("Mutating Style", elem, oldProp, _newProp) in *) match [@ocaml.warning "-4"] oldProp with | Style oldS -> - List.fold_left2 (fun () (ok, ov) (nk, nv) -> + Belt.List.reduce2U oldS s () (fun [@bs] () (ok, ov) (nk, nv) -> if ok = nk then if ov = nv then () @@ -241,7 +241,7 @@ let patchVNodesOnElems_PropertiesApply_Mutate _callbacks elem _idx oldProp = fun else let () = Web.Node.setStyleProperty elem ok Js.Null.empty in Web.Node.setStyleProperty elem nk (Js.Null.return nv) - ) () oldS s + ) | _ -> failwith "Passed a non-Style to a new Style as a Mutations while the old Style is not actually a style!" let rec patchVNodesOnElems_PropertiesApply callbacks elem idx oldProperties newProperties = @@ -309,7 +309,7 @@ let genEmptyProps length = | len -> aux (noProp :: lst) (len - 1) in aux [] length -let mapEmptyProps props = List.map (fun _ -> noProp) props +let mapEmptyProps props = Belt.List.mapU props (fun [@bs] _ -> noProp) let rec patchVNodesOnElems_ReplaceNode callbacks elem elems idx = function [@ocaml.warning "-4"] diff --git a/src/web_xmlhttprequest.ml b/src/web_xmlhttprequest.ml index 5e2afed..ded1ca6 100644 --- a/src/web_xmlhttprequest.ml +++ b/src/web_xmlhttprequest.ml @@ -87,9 +87,9 @@ let getAllResponseHeadersAsList x = ( s |> Js.String.split "\r\n" |. Belt.Array.map (Js.String.splitAtMost ": " ~limit:2) - |> Array.to_list - |> List.filter (fun a -> Belt.Array.length a == 2) - |> List.map + |> Belt.List.fromArray + |. Belt.List.keep (fun a -> Belt.Array.length a == 2) + |. Belt.List.map ( function | [|key; value|] -> (key, value) | _ -> failwith "Cannot happen, already checked length" @@ -102,7 +102,7 @@ let getAllResponseHeadersAsDict x = | Tea_result.Error _ as err -> err | Tea_result.Ok l -> let insert d (k, v) = StringMap.add k v d in - Tea_result.Ok (List.fold_left insert StringMap.empty l) + Tea_result.Ok (Belt.List.reduce l StringMap.empty insert) let getResponseHeader key x = Js.Null.toOption (x##getResponse key) @@ -119,10 +119,11 @@ let send body x = | FormDataBody f -> x##send__formdata f | FormListBody l -> let form = - List.fold_left - (fun f (key, value) -> let () = Web_formdata.append key value f in f) + Belt.List.reduce + l (Web_formdata.create ()) - l in + (fun f (key, value) -> let () = Web_formdata.append key value f in f) + in x##send__formdata form | DocumentBody d -> x##send__document d (* | BlobBody b -> x##send_blob b *) diff --git a/test/test_client_attribute_removal.ml b/test/test_client_attribute_removal.ml index 917fb2b..a23701a 100644 --- a/test/test_client_attribute_removal.ml +++ b/test/test_client_attribute_removal.ml @@ -39,7 +39,7 @@ let render_languages selected languages = | Some l -> language == l | None -> false in - let rendered = List.map (fun l -> lang l (is_selected selected l)) languages in + let rendered = Belt.List.mapU languages (fun [@bs] l -> lang l (is_selected selected l)) in ul [] rendered let update state = function From 9aad34fbcaab1ea77800312d0c5d1da370990562 Mon Sep 17 00:00:00 2001 From: Thomas Coopman Date: Tue, 20 Mar 2018 16:54:55 +0100 Subject: [PATCH 5/7] use Belt.Array in stead of Ocaml array --- src/tea_json.ml | 2 +- src/vdom.ml | 46 +++++++++++++++++++++++----------------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/tea_json.ml b/src/tea_json.ml index 5da3d8a..9ed7a49 100644 --- a/src/tea_json.ml +++ b/src/tea_json.ml @@ -178,7 +178,7 @@ module Decoder = struct | JSONArray a -> if idx < 0 || idx > (Belt.Array.length a) then Tea_result.Error ("Array index out of range: " ^ (string_of_int idx)) - else decoder a.(idx) + else decoder (Belt.Array.getUnsafe a idx) | _ -> Tea_result.Error "Non-array value" ) diff --git a/src/vdom.ml b/src/vdom.ml index e408477..aa861eb 100644 --- a/src/vdom.ml +++ b/src/vdom.ml @@ -314,7 +314,7 @@ let mapEmptyProps props = Belt.List.mapU props (fun [@bs] _ -> noProp) let rec patchVNodesOnElems_ReplaceNode callbacks elem elems idx = function [@ocaml.warning "-4"] | (Node (newNamespace, newTagName, _newKey, _newUnique, newProperties, newChildren)) -> - let oldChild = elems.(idx) in + let oldChild = Belt.Array.getUnsafe elems idx in let newChild = Web.Document.createElementNsOptional newNamespace newTagName in let [@ocaml.warning "-8"] true = patchVNodesOnElems_Properties callbacks newChild (mapEmptyProps newProperties) newProperties in let childChildren = Web.Node.childNodes newChild in @@ -348,11 +348,11 @@ and patchVNodesOnElems_MutateNode callbacks elem elems idx oldNode newNode = (Node (_newNamespace, newTagName, _newKey, newUnique, newProperties, newChildren) as newNode)) -> (* We are being ordered to mutate the node, the key's are already handled *) if oldUnique <> newUnique || oldTagName <> newTagName then - (* let () = Js.log ("Node test", "unique swap", elem, elems.(idx), newNode) in *) + (* let () = Js.log ("Node test", "unique swap", elem, Belt.Array.getUnsafe elems idx, newNode) in *) patchVNodesOnElems_ReplaceNode callbacks elem elems idx newNode else (* Same node type, just mutate things *) - (* let () = Js.log ("Node test", "non-unique mutate", elem, elems.(idx), newNode) in *) - let child = elems.(idx) in + (* let () = Js.log ("Node test", "non-unique mutate", elem, Belt.Array.getUnsafe elems idx, newNode) in *) + let child = Belt.Array.getUnsafe elems idx in let childChildren = Web.Node.childNodes child in let () = if patchVNodesOnElems_Properties callbacks child oldProperties newProperties then () else (* Properties mutation failed, full swap and log *) @@ -378,13 +378,13 @@ and patchVNodesOnElems callbacks elem elems idx oldVNodes newVNodes = let _attachedChild = Web.Node.appendChild elem newChild in patchVNodesOnElems callbacks elem elems (idx + 1) [] newRest | _oldVnode :: oldRest, [] -> - let child = elems.(idx) in + let child = Belt.Array.getUnsafe elems idx in let _removedChild = Web.Node.removeChild elem child in patchVNodesOnElems callbacks elem elems idx oldRest [] (* Not changing idx so we can delete the rest too *) | CommentNode oldS :: oldRest, CommentNode newS :: newRest when oldS = newS -> patchVNodesOnElems callbacks elem elems (idx+1) oldRest newRest | Text oldText :: oldRest, Text newText :: newRest -> let () = if oldText = newText then () else - let child = elems.(idx) in + let child = Belt.Array.getUnsafe elems idx in Web.Node.set_nodeValue child newText in patchVNodesOnElems callbacks elem elems (idx+1) oldRest newRest | LazyGen (oldKey, _oldGen, oldCache) :: oldRest, LazyGen (newKey, newGen, newCache) :: newRest -> @@ -396,30 +396,30 @@ and patchVNodesOnElems callbacks elem elems idx oldVNodes newVNodes = ( match oldRest, newRest with | LazyGen (olderKey, _olderGen, _olderCache) :: olderRest, LazyGen (newerKey, _newerGen, _newerCache) :: newerRest when olderKey = newKey && oldKey = newerKey -> - (* let () = Js.log ("Lazy older newer swap", olderKey, oldKey, newKey, newerKey, elem, elems.(idx)) in *) + (* let () = Js.log ("Lazy older newer swap", olderKey, oldKey, newKey, newerKey, elem, Belt.Array.getUnsafe elems idx) in *) (* TODO: Test this branch, it is untested thus far *) - let firstChild = elems.(idx) in - let secondChild = elems.(idx+1) in + let firstChild = Belt.Array.getUnsafe elems idx in + let secondChild = Belt.Array.getUnsafe elems (idx+1) in let _removedChild = Web.Node.removeChild elem secondChild in let _attachedChild = Web.Node.insertBefore elem secondChild firstChild in patchVNodesOnElems callbacks elem elems (idx+2) olderRest newerRest | LazyGen (olderKey, _olderGen, olderCache) :: olderRest, _ when olderKey = newKey -> - (* let () = Js.log ("Lazy older match", olderKey, oldKey, newKey, elem, elems.(idx)) in *) - let oldChild = elems.(idx) in + (* let () = Js.log ("Lazy older match", olderKey, oldKey, newKey, elem, Belt.Array.getUnsafe elems idx) in *) + let oldChild = Belt.Array.getUnsafe elems idx in let _removedChild = Web.Node.removeChild elem oldChild in let oldVdom = !olderCache in let () = newCache := oldVdom in (* Don't forget to pass the cache along... *) patchVNodesOnElems callbacks elem elems (idx+1) olderRest newRest | _, LazyGen (newerKey, _newerGen, _newerCache) :: _newerRest when newerKey = oldKey -> - (* let () = Js.log ("Lazy newer match", "parse", oldKey, newKey, newerKey, elem, elems.(idx)) in *) - let oldChild = elems.(idx) in + (* let () = Js.log ("Lazy newer match", "parse", oldKey, newKey, newerKey, elem, Belt.Array.getUnsafe elems idx) in *) + let oldChild = Belt.Array.getUnsafe elems idx in let newVdom = newGen () in let () = newCache := newVdom in (* Don't forget to pass the cache along... *) let newChild = patchVNodesOnElems_CreateElement callbacks newVdom in let _attachedChild = Web.Node.insertBefore elem newChild oldChild in patchVNodesOnElems callbacks elem elems (idx+1) oldVNodes newRest | _ -> - (* let () = Js.log ("Lazy nomatch", oldKey, newKey, elem, elems.(idx)) in *) + (* let () = Js.log ("Lazy nomatch", oldKey, newKey, elem, Belt.Array.getUnsafe elems idx) in *) let oldVdom = !oldCache in let newVdom = newGen () in let () = newCache := newVdom in (* Don't forget to pass the cache along... *) @@ -428,7 +428,7 @@ and patchVNodesOnElems callbacks elem elems idx oldVNodes newVNodes = | (Node (oldNamespace, oldTagName, oldKey, _oldUnique, _oldProperties, _oldChildren) as oldNode) :: oldRest, (Node (newNamespace, newTagName, newKey, _newUnique, _newProperties, _newChildren) as newNode) :: newRest -> if oldKey = newKey && oldKey <> "" then (* Do nothing, they are keyed identically *) - (* let () = Js.log ("Node test", "match", elem, elems.(idx), newNode) in *) + (* let () = Js.log ("Node test", "match", elem, Belt.Array.getUnsafe elems idx, newNode) in *) patchVNodesOnElems callbacks elem elems (idx+1) oldRest newRest else if oldKey = "" || newKey = "" then let () = patchVNodesOnElems_MutateNode callbacks elem elems idx oldNode newNode in @@ -439,23 +439,23 @@ and patchVNodesOnElems callbacks elem elems idx oldVNodes newVNodes = Node (newerNamespace, newerTagName, newerKey, _newerUnique, _newerProperties, _newerChildren) :: newerRest when olderNamespace = newNamespace && olderTagName = newTagName && olderKey = newKey && oldNamespace = newerNamespace && oldTagName = newerTagName && oldKey = newerKey -> - (* let () = Js.log ("Node test", "older newer swap", elem, elems.(idx), newNode) in *) + (* let () = Js.log ("Node test", "older newer swap", elem, Belt.Array.getUnsafe elems idx, newNode) in *) (* TODO: Test this branch, it is untested thus far *) - let firstChild = elems.(idx) in - let secondChild = elems.(idx+1) in + let firstChild = Belt.Array.getUnsafe elems idx in + let secondChild = Belt.Array.getUnsafe elems (idx+1) in let _removedChild = Web.Node.removeChild elem secondChild in let _attachedChild = Web.Node.insertBefore elem secondChild firstChild in patchVNodesOnElems callbacks elem elems (idx+2) olderRest newerRest | Node (olderNamespace, olderTagName, olderKey, _olderUnique, _olderProperties, _olderChildren) :: olderRest, _ when olderNamespace = newNamespace && olderTagName = newTagName && olderKey = newKey -> - (* let () = Js.log ("Node test", "older match", elem, elems.(idx), newNode) in *) - let oldChild = elems.(idx) in + (* let () = Js.log ("Node test", "older match", elem, Belt.Array.getUnsafe elems idx, newNode) in *) + let oldChild = Belt.Array.getUnsafe elems idx in let _removedChild = Web.Node.removeChild elem oldChild in patchVNodesOnElems callbacks elem elems (idx+1) olderRest newRest | _, Node (newerNamespace, newerTagName, newerKey, _newerUnique, _newerProperties, _newerChildren) :: _newerRest when oldNamespace = newerNamespace && oldTagName = newerTagName && oldKey = newerKey -> - (* let () = Js.log ("Node test", "newer match", elem, elems.(idx), newNode) in *) - let oldChild = elems.(idx) in + (* let () = Js.log ("Node test", "newer match", elem, Belt.Array.getUnsafe elems idx, newNode) in *) + let oldChild = Belt.Array.getUnsafe elems idx in let newChild = patchVNodesOnElems_CreateElement callbacks newNode in let _attachedChild = Web.Node.insertBefore elem newChild oldChild in patchVNodesOnElems callbacks elem elems (idx+1) oldVNodes newRest @@ -464,7 +464,7 @@ and patchVNodesOnElems callbacks elem elems idx oldVNodes newVNodes = patchVNodesOnElems callbacks elem elems (idx+1) oldRest newRest ) | _oldVnode :: oldRest, newNode :: newRest -> - let oldChild = elems.(idx) in + let oldChild = Belt.Array.getUnsafe elems idx in let newChild = patchVNodesOnElems_CreateElement callbacks newNode in let _attachedChild = Web.Node.insertBefore elem newChild oldChild in let _removedChild = Web.Node.removeChild elem oldChild in From fff9016ea1c5f9f83471bb73b1a954cfb768e93e Mon Sep 17 00:00:00 2001 From: Thomas Coopman Date: Tue, 20 Mar 2018 16:59:02 +0100 Subject: [PATCH 6/7] reverse field change --- lib/js/src/tea_http.js | 4 ++-- lib/js/src/tea_json.js | 9 +++++---- lib/js/src/tea_mouse.js | 2 +- lib/js/src/vdom.js | 27 +++++++++++++-------------- src/tea_http.ml | 6 +++--- src/tea_json.ml | 4 ++-- src/tea_mouse.ml | 4 ++-- 7 files changed, 28 insertions(+), 28 deletions(-) diff --git a/lib/js/src/tea_http.js b/lib/js/src/tea_http.js index e3bdd92..88358f2 100644 --- a/lib/js/src/tea_http.js +++ b/lib/js/src/tea_http.js @@ -673,7 +673,7 @@ function decodeUri(str) { function track(toMessage, param) { var events = param[1]; var onprogress = /* Some */[(function (callbacks, ev) { - var match = Tea_json.Decoder[/* decodeValue */30](Tea_json.Decoder[/* field */11](Tea_json.Decoder[/* bool */5], "lengthComputable"), ev); + var match = Tea_json.Decoder[/* decodeValue */30](Tea_json.Decoder[/* field */11]("lengthComputable", Tea_json.Decoder[/* bool */5]), ev); var lengthComputable; lengthComputable = match.tag ? /* false */0 : match[0]; if (lengthComputable) { @@ -682,7 +682,7 @@ function track(toMessage, param) { /* bytes */bytes, /* bytesExpected */bytesExpected ]; - }), Tea_json.Decoder[/* field */11](Tea_json.Decoder[/* int */3], "loaded"), Tea_json.Decoder[/* field */11](Tea_json.Decoder[/* int */3], "total")); + }), Tea_json.Decoder[/* field */11]("loaded", Tea_json.Decoder[/* int */3]), Tea_json.Decoder[/* field */11]("total", Tea_json.Decoder[/* int */3])); var match$1 = Tea_json.Decoder[/* decodeValue */30](decoder, ev); if (match$1.tag) { return /* () */0; diff --git a/lib/js/src/tea_json.js b/lib/js/src/tea_json.js index 64ccd1b..a483d91 100644 --- a/lib/js/src/tea_json.js +++ b/lib/js/src/tea_json.js @@ -8,7 +8,6 @@ var Js_exn = require("bs-platform/lib/js/js_exn.js"); var Web_json = require("./web_json.js"); var Belt_List = require("bs-platform/lib/js/belt_List.js"); var Belt_Array = require("bs-platform/lib/js/belt_Array.js"); -var Caml_array = require("bs-platform/lib/js/caml_array.js"); var Pervasives = require("bs-platform/lib/js/pervasives.js"); var Tea_result = require("./tea_result.js"); var Caml_primitive = require("bs-platform/lib/js/caml_primitive.js"); @@ -914,7 +913,7 @@ function dict(param) { })]; } -function field(param, key) { +function field(key, param) { var decoder = param[0]; return /* Decoder */[(function (value) { var match = Web_json.classify(value); @@ -939,7 +938,9 @@ function field(param, key) { } function at(fields, dec) { - return Belt_List.reduceReverse(fields, dec, field); + return Belt_List.reduceReverseU(fields, dec, (function (d, k) { + return field(k, d); + })); } function index(idx, param) { @@ -953,7 +954,7 @@ function index(idx, param) { if (idx < 0 || idx > a.length) { return /* Error */Block.__(1, ["Array index out of range: " + String(idx)]); } else { - return Curry._1(decoder, Caml_array.caml_array_get(a, idx)); + return Curry._1(decoder, a[idx]); } } else { return /* Error */Block.__(1, ["Non-array value"]); diff --git a/lib/js/src/tea_mouse.js b/lib/js/src/tea_mouse.js index f51df9c..64b3245 100644 --- a/lib/js/src/tea_mouse.js +++ b/lib/js/src/tea_mouse.js @@ -12,7 +12,7 @@ var position = Tea_json.Decoder[/* map2 */17]((function (x, y) { /* x */x, /* y */y ]; - }), Tea_json.Decoder[/* field */11](Tea_json.Decoder[/* int */3], "pageX"), Tea_json.Decoder[/* field */11](Tea_json.Decoder[/* int */3], "pageY")); + }), Tea_json.Decoder[/* field */11]("pageX", Tea_json.Decoder[/* int */3]), Tea_json.Decoder[/* field */11]("pageY", Tea_json.Decoder[/* int */3])); function registerGlobal(name, key, tagger) { var enableCall = function (callbacks_base) { diff --git a/lib/js/src/vdom.js b/lib/js/src/vdom.js index c71f6ff..8becdb9 100644 --- a/lib/js/src/vdom.js +++ b/lib/js/src/vdom.js @@ -7,7 +7,6 @@ var $$String = require("bs-platform/lib/js/string.js"); var Caml_obj = require("bs-platform/lib/js/caml_obj.js"); var Web_node = require("./web_node.js"); var Belt_List = require("bs-platform/lib/js/belt_List.js"); -var Caml_array = require("bs-platform/lib/js/caml_array.js"); var Web_document = require("./web_document.js"); var Caml_builtin_exceptions = require("bs-platform/lib/js/caml_builtin_exceptions.js"); @@ -610,7 +609,7 @@ function mapEmptyProps(props) { function patchVNodesOnElems_ReplaceNode(callbacks, elem, elems, idx, param) { if (param.tag === 2) { var newProperties = param[4]; - var oldChild = Caml_array.caml_array_get(elems, idx); + var oldChild = elems[idx]; var newChild = Web_document.createElementNsOptional(param[0], param[1]); var match = patchVNodesOnElems_Properties(callbacks, newChild, Belt_List.mapU(newProperties, (function () { return /* NoProp */0; @@ -690,7 +689,7 @@ function patchVNodesOnElems_MutateNode(callbacks, elem, elems, idx, oldNode, new if (oldNode[3] !== newNode[3] || oldNode[1] !== newNode[1]) { return patchVNodesOnElems_ReplaceNode(callbacks, elem, elems, idx, newNode); } else { - var child = Caml_array.caml_array_get(elems, idx); + var child = elems[idx]; var childChildren = child.childNodes; if (!patchVNodesOnElems_Properties(callbacks, child, oldNode[4], newNode[4])) { console.log("VDom: Failed swapping properties because the property list length changed, use `noProp` to swap properties instead, not by altering the list structure. This is a massive inefficiency until this issue is resolved."); @@ -743,7 +742,7 @@ function patchVNodesOnElems(callbacks, elem, elems, _idx, _oldVNodes, _newVNodes if (match$1.tag === 1) { var newText = match$1[0]; if (oldNode[0] !== newText) { - var child = Caml_array.caml_array_get(elems, idx); + var child = elems[idx]; child.nodeValue = newText; } _newVNodes = newVNodes[1]; @@ -797,8 +796,8 @@ function patchVNodesOnElems(callbacks, elem, elems, _idx, _oldVNodes, _newVNodes if (newRest) { var match$3 = newRest[0]; if (match$3.tag === 2 && olderNamespace === newNamespace && olderTagName === newTagName && olderKey === newKey && oldNamespace === match$3[0] && oldTagName === match$3[1] && oldKey === match$3[2]) { - var firstChild = Caml_array.caml_array_get(elems, idx); - var secondChild = Caml_array.caml_array_get(elems, idx + 1 | 0); + var firstChild = elems[idx]; + var secondChild = elems[idx + 1 | 0]; elem.removeChild(secondChild); Web_node.insertBefore(elem, secondChild, firstChild); _newVNodes = newRest[1]; @@ -814,7 +813,7 @@ function patchVNodesOnElems(callbacks, elem, elems, _idx, _oldVNodes, _newVNodes } if (exit$3 === 4) { if (olderNamespace === newNamespace && olderTagName === newTagName && olderKey === newKey) { - var oldChild = Caml_array.caml_array_get(elems, idx); + var oldChild = elems[idx]; elem.removeChild(oldChild); _newVNodes = newRest; _oldVNodes = olderRest; @@ -836,7 +835,7 @@ function patchVNodesOnElems(callbacks, elem, elems, _idx, _oldVNodes, _newVNodes if (newRest) { var match$4 = newRest[0]; if (match$4.tag === 2 && oldNamespace === match$4[0] && oldTagName === match$4[1] && oldKey === match$4[2]) { - var oldChild$1 = Caml_array.caml_array_get(elems, idx); + var oldChild$1 = elems[idx]; var newChild = patchVNodesOnElems_CreateElement(callbacks, newNode); Web_node.insertBefore(elem, newChild, oldChild$1); _newVNodes = newRest; @@ -897,8 +896,8 @@ function patchVNodesOnElems(callbacks, elem, elems, _idx, _oldVNodes, _newVNodes if (newRest$1) { var match$7 = newRest$1[0]; if (match$7.tag === 3 && olderKey$1 === newKey$1 && oldKey$1 === match$7[0]) { - var firstChild$1 = Caml_array.caml_array_get(elems, idx); - var secondChild$1 = Caml_array.caml_array_get(elems, idx + 1 | 0); + var firstChild$1 = elems[idx]; + var secondChild$1 = elems[idx + 1 | 0]; elem.removeChild(secondChild$1); Web_node.insertBefore(elem, secondChild$1, firstChild$1); _newVNodes = newRest$1[1]; @@ -914,7 +913,7 @@ function patchVNodesOnElems(callbacks, elem, elems, _idx, _oldVNodes, _newVNodes } if (exit$6 === 4) { if (olderKey$1 === newKey$1) { - var oldChild$2 = Caml_array.caml_array_get(elems, idx); + var oldChild$2 = elems[idx]; elem.removeChild(oldChild$2); var oldVdom = match$6[2][0]; newCache[0] = oldVdom; @@ -938,7 +937,7 @@ function patchVNodesOnElems(callbacks, elem, elems, _idx, _oldVNodes, _newVNodes if (newRest$1) { var match$8 = newRest$1[0]; if (match$8.tag === 3 && match$8[0] === oldKey$1) { - var oldChild$3 = Caml_array.caml_array_get(elems, idx); + var oldChild$3 = elems[idx]; var newVdom = Curry._1(newGen, /* () */0); newCache[0] = newVdom; var newChild$1 = patchVNodesOnElems_CreateElement(callbacks, newVdom); @@ -1004,7 +1003,7 @@ function patchVNodesOnElems(callbacks, elem, elems, _idx, _oldVNodes, _newVNodes continue ; } else { - var oldChild$4 = Caml_array.caml_array_get(elems, idx); + var oldChild$4 = elems[idx]; var newChild$2 = patchVNodesOnElems_CreateElement(callbacks, newNode$1); Web_node.insertBefore(elem, newChild$2, oldChild$4); elem.removeChild(oldChild$4); @@ -1015,7 +1014,7 @@ function patchVNodesOnElems(callbacks, elem, elems, _idx, _oldVNodes, _newVNodes } } else { - var child$1 = Caml_array.caml_array_get(elems, idx); + var child$1 = elems[idx]; elem.removeChild(child$1); _newVNodes = /* [] */0; _oldVNodes = oldRest$2; diff --git a/src/tea_http.ml b/src/tea_http.ml index 9450e62..cb49ad4 100644 --- a/src/tea_http.ml +++ b/src/tea_http.ml @@ -207,7 +207,7 @@ module Progress = struct let lengthComputable = let open Tea_json.Decoder in let open Tea_result in - match decodeValue (field bool "lengthComputable") ev with + match decodeValue (field "lengthComputable" bool) ev with | Error _e -> false | Ok v -> v in if lengthComputable then @@ -215,8 +215,8 @@ module Progress = struct let open Tea_result in let decoder = map2 (fun bytes bytesExpected -> {bytes; bytesExpected}) - (field int "loaded") - (field int "total") + (field "loaded" int) + (field "total" int) in match decodeValue decoder ev with | Error _e -> () diff --git a/src/tea_json.ml b/src/tea_json.ml index 9ed7a49..83d3327 100644 --- a/src/tea_json.ml +++ b/src/tea_json.ml @@ -151,7 +151,7 @@ module Decoder = struct | _ -> Tea_result.Error "Non-dict value" ) - let field (Decoder decoder) key = + let field key (Decoder decoder) = Decoder ( fun value -> let open Web.Json in @@ -168,7 +168,7 @@ module Decoder = struct ) let at fields dec = - Belt.List.reduceReverse fields dec field + Belt.List.reduceReverseU fields dec (fun [@bs] d k -> field k d) let index idx (Decoder decoder) = Decoder diff --git a/src/tea_mouse.ml b/src/tea_mouse.ml index 77828bb..9bdc5f3 100644 --- a/src/tea_mouse.ml +++ b/src/tea_mouse.ml @@ -8,8 +8,8 @@ type position = { let position = let open Tea_json.Decoder in map2 (fun x y -> {x; y}) - (field int "pageX") - (field int "pageY") + (field "pageX" int) + (field "pageY" int) let registerGlobal name key tagger = From 8aca9b9b8482378477932f767bb1f39f4430d2ab Mon Sep 17 00:00:00 2001 From: Thomas Coopman Date: Wed, 21 Mar 2018 14:10:40 +0100 Subject: [PATCH 7/7] replace Map.Make by Belt map --- lib/js/src/tea_http.js | 469 +-------------------- lib/js/src/tea_json.js | 675 +------------------------------ lib/js/src/web_xmlhttprequest.js | 471 +-------------------- src/tea_http.ml | 4 +- src/tea_json.ml | 4 +- src/web_xmlhttprequest.ml | 4 +- 6 files changed, 18 insertions(+), 1609 deletions(-) diff --git a/lib/js/src/tea_http.js b/lib/js/src/tea_http.js index 88358f2..1984a50 100644 --- a/lib/js/src/tea_http.js +++ b/lib/js/src/tea_http.js @@ -5,9 +5,8 @@ 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 Belt_List = require("bs-platform/lib/js/belt_List.js"); -var Caml_primitive = require("bs-platform/lib/js/caml_primitive.js"); +var Belt_MapString = require("bs-platform/lib/js/belt_MapString.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") { @@ -83,470 +82,6 @@ function getString(url) { function send(resultToMessage, param) { var maybeEvents = param[1]; var request = param[0]; - var height = function (param) { - if (param) { - return param[4]; - } else { - return 0; - } - }; - var create = function (l, x, d, r) { - var hl = height(l); - var hr = height(r); - return /* Node */[ - l, - x, - d, - r, - hl >= hr ? hl + 1 | 0 : hr + 1 | 0 - ]; - }; - var singleton = function (x, d) { - return /* Node */[ - /* Empty */0, - x, - d, - /* Empty */0, - 1 - ]; - }; - var bal = function (l, x, d, r) { - var hl = l ? l[4] : 0; - var hr = r ? r[4] : 0; - if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l[3]; - var ld = l[2]; - var lv = l[1]; - var ll = 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[0]), lr[1], lr[2], create(lr[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[3]; - var rd = r[2]; - var rv = r[1]; - var rl = r[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[0]), rl[1], rl[2], create(rl[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, - x, - d, - r, - hl >= hr ? hl + 1 | 0 : hr + 1 | 0 - ]; - } - }; - var add = function (x, data, param) { - if (param) { - var r = param[3]; - var d = param[2]; - var v = param[1]; - var l = param[0]; - var c = Caml_primitive.caml_string_compare(x, v); - if (c === 0) { - return /* Node */[ - l, - x, - data, - r, - param[4] - ]; - } else if (c < 0) { - return bal(add(x, data, l), v, d, r); - } else { - return bal(l, v, d, add(x, data, r)); - } - } else { - return /* Node */[ - /* Empty */0, - x, - data, - /* Empty */0, - 1 - ]; - } - }; - var min_binding = function (_param) { - while(true) { - var param = _param; - if (param) { - var l = param[0]; - if (l) { - _param = l; - continue ; - - } else { - return /* tuple */[ - param[1], - param[2] - ]; - } - } else { - throw Caml_builtin_exceptions.not_found; - } - }; - }; - var remove_min_binding = function (param) { - if (param) { - var l = param[0]; - if (l) { - return bal(remove_min_binding(l), param[1], param[2], param[3]); - } else { - return param[3]; - } - } else { - throw [ - Caml_builtin_exceptions.invalid_argument, - "Map.remove_min_elt" - ]; - } - }; - var remove = function (x, param) { - if (param) { - var r = param[3]; - var d = param[2]; - var v = param[1]; - var l = param[0]; - var c = Caml_primitive.caml_string_compare(x, v); - if (c === 0) { - var t1 = l; - var t2 = r; - 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; - } - } else if (c < 0) { - return bal(remove(x, l), v, d, r); - } else { - return bal(l, v, d, remove(x, r)); - } - } else { - return /* Empty */0; - } - }; - var iter = function (f, _param) { - while(true) { - var param = _param; - if (param) { - iter(f, param[0]); - Curry._2(f, param[1], param[2]); - _param = param[3]; - continue ; - - } else { - return /* () */0; - } - }; - }; - var map = function (f, param) { - if (param) { - var l$prime = map(f, param[0]); - var d$prime = Curry._1(f, param[2]); - var r$prime = map(f, param[3]); - return /* Node */[ - l$prime, - param[1], - d$prime, - r$prime, - param[4] - ]; - } else { - return /* Empty */0; - } - }; - var mapi = function (f, param) { - if (param) { - var v = param[1]; - var l$prime = mapi(f, param[0]); - var d$prime = Curry._2(f, v, param[2]); - var r$prime = mapi(f, param[3]); - return /* Node */[ - l$prime, - v, - d$prime, - r$prime, - param[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[1], m[2], fold(f, m[0], accu)); - _m = m[3]; - continue ; - - } else { - return accu; - } - }; - }; - var for_all = function (p, _param) { - while(true) { - var param = _param; - if (param) { - if (Curry._2(p, param[1], param[2]) && for_all(p, param[0])) { - _param = param[3]; - continue ; - - } else { - return /* false */0; - } - } else { - return /* true */1; - } - }; - }; - var exists = function (p, _param) { - while(true) { - var param = _param; - if (param) { - if (Curry._2(p, param[1], param[2]) || exists(p, param[0])) { - return /* true */1; - } else { - _param = param[3]; - continue ; - - } - } else { - return /* false */0; - } - }; - }; - var add_min_binding = function (k, v, param) { - if (param) { - return bal(add_min_binding(k, v, param[0]), param[1], param[2], param[3]); - } else { - return singleton(k, v); - } - }; - var add_max_binding = function (k, v, param) { - if (param) { - return bal(param[0], param[1], param[2], add_max_binding(k, v, param[3])); - } else { - return singleton(k, v); - } - }; - var join = function (l, v, d, r) { - if (l) { - if (r) { - var rh = r[4]; - var lh = l[4]; - if (lh > (rh + 2 | 0)) { - return bal(l[0], l[1], l[2], join(l[3], v, d, r)); - } else if (rh > (lh + 2 | 0)) { - return bal(join(l, v, d, r[0]), r[1], r[2], 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) { - return join(t1, v, d[0], t2); - } else { - return concat(t1, t2); - } - }; - var split = function (x, param) { - if (param) { - var r = param[3]; - var d = param[2]; - var v = param[1]; - var l = param[0]; - var c = Caml_primitive.caml_string_compare(x, v); - if (c === 0) { - return /* tuple */[ - l, - /* 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, - /* None */0, - /* Empty */0 - ]; - } - }; - var merge = function (f, s1, s2) { - var exit = 0; - if (s1) { - var v1 = s1[1]; - if (s1[4] >= height(s2)) { - var match = split(v1, s2); - return concat_or_join(merge(f, s1[0], match[0]), v1, Curry._3(f, v1, /* Some */[s1[2]], match[1]), merge(f, s1[3], match[2])); - } else { - exit = 1; - } - } else if (s2) { - exit = 1; - } else { - return /* Empty */0; - } - if (exit === 1) { - if (s2) { - var v2 = s2[1]; - var match$1 = split(v2, s1); - return concat_or_join(merge(f, match$1[0], s2[0]), v2, Curry._3(f, v2, match$1[1], /* Some */[s2[2]]), merge(f, match$1[2], s2[3])); - } else { - throw [ - Caml_builtin_exceptions.assert_failure, - [ - "map.ml", - 270, - 10 - ] - ]; - } - } - - }; - var filter = function (p, param) { - if (param) { - var d = param[2]; - var v = param[1]; - var l$prime = filter(p, param[0]); - var pvd = Curry._2(p, v, d); - var r$prime = filter(p, param[3]); - if (pvd) { - 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[2]; - var v = param[1]; - var match = partition(p, param[0]); - var lf = match[1]; - var lt = match[0]; - var pvd = Curry._2(p, v, d); - var match$1 = partition(p, param[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[0]) + 1 | 0) + cardinal(param[3]) | 0; - } else { - return 0; - } - }; - var bindings_aux = function (_accu, _param) { - while(true) { - var param = _param; - var accu = _accu; - if (param) { - _param = param[0]; - _accu = /* :: */[ - /* tuple */[ - param[1], - param[2] - ], - bindings_aux(accu, param[3]) - ]; - continue ; - - } else { - return accu; - } - }; - }; var expect = request[/* expect */4]; var responseToResult = expect[1]; var typ = expect[0]; @@ -597,7 +132,7 @@ function send(resultToMessage, param) { var cb$3 = function () { var match = Web_xmlhttprequest.getAllResponseHeadersAsDict(xhr); var headers; - headers = match.tag ? /* Empty */0 : match[0]; + headers = match.tag ? Belt_MapString.empty : match[0]; var response_000 = /* url */xhr.responseURL; var response_001 = /* status : record */[ /* code */xhr.status, diff --git a/lib/js/src/tea_json.js b/lib/js/src/tea_json.js index a483d91..6f7339b 100644 --- a/lib/js/src/tea_json.js +++ b/lib/js/src/tea_json.js @@ -10,671 +10,10 @@ var Belt_List = require("bs-platform/lib/js/belt_List.js"); var Belt_Array = require("bs-platform/lib/js/belt_Array.js"); var Pervasives = require("bs-platform/lib/js/pervasives.js"); var Tea_result = require("./tea_result.js"); -var Caml_primitive = require("bs-platform/lib/js/caml_primitive.js"); +var Belt_MapString = require("bs-platform/lib/js/belt_MapString.js"); var Caml_exceptions = require("bs-platform/lib/js/caml_exceptions.js"); var Caml_builtin_exceptions = require("bs-platform/lib/js/caml_builtin_exceptions.js"); -function height(param) { - if (param) { - return param[4]; - } else { - return 0; - } -} - -function create(l, x, d, r) { - var hl = height(l); - var hr = height(r); - return /* Node */[ - l, - x, - d, - r, - hl >= hr ? hl + 1 | 0 : hr + 1 | 0 - ]; -} - -function singleton(x, d) { - return /* Node */[ - /* Empty */0, - x, - d, - /* Empty */0, - 1 - ]; -} - -function bal(l, x, d, r) { - var hl = l ? l[4] : 0; - var hr = r ? r[4] : 0; - if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l[3]; - var ld = l[2]; - var lv = l[1]; - var ll = 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[0]), lr[1], lr[2], create(lr[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[3]; - var rd = r[2]; - var rv = r[1]; - var rl = r[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[0]), rl[1], rl[2], create(rl[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, - x, - d, - r, - hl >= hr ? hl + 1 | 0 : hr + 1 | 0 - ]; - } -} - -function is_empty(param) { - if (param) { - return /* false */0; - } else { - return /* true */1; - } -} - -function add(x, data, param) { - if (param) { - var r = param[3]; - var d = param[2]; - var v = param[1]; - var l = param[0]; - var c = Caml_primitive.caml_string_compare(x, v); - if (c === 0) { - return /* Node */[ - l, - x, - data, - r, - param[4] - ]; - } else if (c < 0) { - return bal(add(x, data, l), v, d, r); - } else { - return bal(l, v, d, add(x, data, r)); - } - } else { - return /* Node */[ - /* Empty */0, - x, - data, - /* Empty */0, - 1 - ]; - } -} - -function find(x, _param) { - while(true) { - var param = _param; - if (param) { - var c = Caml_primitive.caml_string_compare(x, param[1]); - if (c === 0) { - return param[2]; - } else { - _param = c < 0 ? param[0] : param[3]; - continue ; - - } - } else { - throw Caml_builtin_exceptions.not_found; - } - }; -} - -function mem(x, _param) { - while(true) { - var param = _param; - if (param) { - var c = Caml_primitive.caml_string_compare(x, param[1]); - if (c === 0) { - return /* true */1; - } else { - _param = c < 0 ? param[0] : param[3]; - continue ; - - } - } else { - return /* false */0; - } - }; -} - -function min_binding(_param) { - while(true) { - var param = _param; - if (param) { - var l = param[0]; - if (l) { - _param = l; - continue ; - - } else { - return /* tuple */[ - param[1], - param[2] - ]; - } - } else { - throw Caml_builtin_exceptions.not_found; - } - }; -} - -function max_binding(_param) { - while(true) { - var param = _param; - if (param) { - var r = param[3]; - if (r) { - _param = r; - continue ; - - } else { - return /* tuple */[ - param[1], - param[2] - ]; - } - } else { - throw Caml_builtin_exceptions.not_found; - } - }; -} - -function remove_min_binding(param) { - if (param) { - var l = param[0]; - if (l) { - return bal(remove_min_binding(l), param[1], param[2], param[3]); - } else { - return param[3]; - } - } else { - throw [ - Caml_builtin_exceptions.invalid_argument, - "Map.remove_min_elt" - ]; - } -} - -function remove(x, param) { - if (param) { - var r = param[3]; - var d = param[2]; - var v = param[1]; - var l = param[0]; - var c = Caml_primitive.caml_string_compare(x, v); - if (c === 0) { - var t1 = l; - var t2 = r; - 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; - } - } else if (c < 0) { - return bal(remove(x, l), v, d, r); - } else { - return bal(l, v, d, remove(x, r)); - } - } else { - return /* Empty */0; - } -} - -function iter(f, _param) { - while(true) { - var param = _param; - if (param) { - iter(f, param[0]); - Curry._2(f, param[1], param[2]); - _param = param[3]; - continue ; - - } else { - return /* () */0; - } - }; -} - -function map(f, param) { - if (param) { - var l$prime = map(f, param[0]); - var d$prime = Curry._1(f, param[2]); - var r$prime = map(f, param[3]); - return /* Node */[ - l$prime, - param[1], - d$prime, - r$prime, - param[4] - ]; - } else { - return /* Empty */0; - } -} - -function mapi(f, param) { - if (param) { - var v = param[1]; - var l$prime = mapi(f, param[0]); - var d$prime = Curry._2(f, v, param[2]); - var r$prime = mapi(f, param[3]); - return /* Node */[ - l$prime, - v, - d$prime, - r$prime, - param[4] - ]; - } else { - return /* Empty */0; - } -} - -function fold(f, _m, _accu) { - while(true) { - var accu = _accu; - var m = _m; - if (m) { - _accu = Curry._3(f, m[1], m[2], fold(f, m[0], accu)); - _m = m[3]; - continue ; - - } else { - return accu; - } - }; -} - -function for_all(p, _param) { - while(true) { - var param = _param; - if (param) { - if (Curry._2(p, param[1], param[2]) && for_all(p, param[0])) { - _param = param[3]; - continue ; - - } else { - return /* false */0; - } - } else { - return /* true */1; - } - }; -} - -function exists(p, _param) { - while(true) { - var param = _param; - if (param) { - if (Curry._2(p, param[1], param[2]) || exists(p, param[0])) { - return /* true */1; - } else { - _param = param[3]; - continue ; - - } - } else { - return /* false */0; - } - }; -} - -function add_min_binding(k, v, param) { - if (param) { - return bal(add_min_binding(k, v, param[0]), param[1], param[2], param[3]); - } else { - return singleton(k, v); - } -} - -function add_max_binding(k, v, param) { - if (param) { - return bal(param[0], param[1], param[2], add_max_binding(k, v, param[3])); - } else { - return singleton(k, v); - } -} - -function join(l, v, d, r) { - if (l) { - if (r) { - var rh = r[4]; - var lh = l[4]; - if (lh > (rh + 2 | 0)) { - return bal(l[0], l[1], l[2], join(l[3], v, d, r)); - } else if (rh > (lh + 2 | 0)) { - return bal(join(l, v, d, r[0]), r[1], r[2], 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); - } -} - -function concat(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; - } -} - -function concat_or_join(t1, v, d, t2) { - if (d) { - return join(t1, v, d[0], t2); - } else { - return concat(t1, t2); - } -} - -function split(x, param) { - if (param) { - var r = param[3]; - var d = param[2]; - var v = param[1]; - var l = param[0]; - var c = Caml_primitive.caml_string_compare(x, v); - if (c === 0) { - return /* tuple */[ - l, - /* 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, - /* None */0, - /* Empty */0 - ]; - } -} - -function merge(f, s1, s2) { - var exit = 0; - if (s1) { - var v1 = s1[1]; - if (s1[4] >= height(s2)) { - var match = split(v1, s2); - return concat_or_join(merge(f, s1[0], match[0]), v1, Curry._3(f, v1, /* Some */[s1[2]], match[1]), merge(f, s1[3], match[2])); - } else { - exit = 1; - } - } else if (s2) { - exit = 1; - } else { - return /* Empty */0; - } - if (exit === 1) { - if (s2) { - var v2 = s2[1]; - var match$1 = split(v2, s1); - return concat_or_join(merge(f, match$1[0], s2[0]), v2, Curry._3(f, v2, match$1[1], /* Some */[s2[2]]), merge(f, match$1[2], s2[3])); - } else { - throw [ - Caml_builtin_exceptions.assert_failure, - [ - "map.ml", - 270, - 10 - ] - ]; - } - } - -} - -function filter(p, param) { - if (param) { - var d = param[2]; - var v = param[1]; - var l$prime = filter(p, param[0]); - var pvd = Curry._2(p, v, d); - var r$prime = filter(p, param[3]); - if (pvd) { - return join(l$prime, v, d, r$prime); - } else { - return concat(l$prime, r$prime); - } - } else { - return /* Empty */0; - } -} - -function partition(p, param) { - if (param) { - var d = param[2]; - var v = param[1]; - var match = partition(p, param[0]); - var lf = match[1]; - var lt = match[0]; - var pvd = Curry._2(p, v, d); - var match$1 = partition(p, param[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 - ]; - } -} - -function cons_enum(_m, _e) { - while(true) { - var e = _e; - var m = _m; - if (m) { - _e = /* More */[ - m[1], - m[2], - m[3], - e - ]; - _m = m[0]; - continue ; - - } else { - return e; - } - }; -} - -function compare(cmp, m1, m2) { - var _e1 = cons_enum(m1, /* End */0); - var _e2 = cons_enum(m2, /* End */0); - while(true) { - var e2 = _e2; - var e1 = _e1; - if (e1) { - if (e2) { - var c = Caml_primitive.caml_string_compare(e1[0], e2[0]); - if (c !== 0) { - return c; - } else { - var c$1 = Curry._2(cmp, e1[1], e2[1]); - if (c$1 !== 0) { - return c$1; - } else { - _e2 = cons_enum(e2[2], e2[3]); - _e1 = cons_enum(e1[2], e1[3]); - continue ; - - } - } - } else { - return 1; - } - } else if (e2) { - return -1; - } else { - return 0; - } - }; -} - -function equal(cmp, m1, m2) { - var _e1 = cons_enum(m1, /* End */0); - var _e2 = cons_enum(m2, /* End */0); - while(true) { - var e2 = _e2; - var e1 = _e1; - if (e1) { - if (e2 && Caml_primitive.caml_string_compare(e1[0], e2[0]) === 0 && Curry._2(cmp, e1[1], e2[1])) { - _e2 = cons_enum(e2[2], e2[3]); - _e1 = cons_enum(e1[2], e1[3]); - continue ; - - } else { - return /* false */0; - } - } else if (e2) { - return /* false */0; - } else { - return /* true */1; - } - }; -} - -function cardinal(param) { - if (param) { - return (cardinal(param[0]) + 1 | 0) + cardinal(param[3]) | 0; - } else { - return 0; - } -} - -function bindings_aux(_accu, _param) { - while(true) { - var param = _param; - var accu = _accu; - if (param) { - _param = param[0]; - _accu = /* :: */[ - /* tuple */[ - param[1], - param[2] - ], - bindings_aux(accu, param[3]) - ]; - continue ; - - } else { - return accu; - } - }; -} - -function bindings(s) { - return bindings_aux(/* [] */0, s); -} - -var ObjectDict = [ - /* Empty */0, - is_empty, - mem, - add, - singleton, - remove, - merge, - compare, - equal, - iter, - fold, - for_all, - exists, - filter, - partition, - cardinal, - bindings, - min_binding, - max_binding, - min_binding, - split, - find, - map, - mapi -]; - var ParseFail = Caml_exceptions.create("Tea_json.Decoder.ParseFail"); var string = /* Decoder */[(function (value) { @@ -887,7 +226,7 @@ function dict(param) { match$1[0] ]; } else { - return add(k, match$1[0], d); + return Belt_MapString.set(d, k, match$1[0]); } } else { throw [ @@ -897,7 +236,7 @@ function dict(param) { } }; try { - return /* Ok */Block.__(0, [Belt_Array.reduceReverse(keys, /* Empty */0, parse)]); + return /* Ok */Block.__(0, [Belt_Array.reduceReverse(keys, Belt_MapString.empty, parse)]); } catch (raw_exn){ var exn = Js_exn.internalToOCamlException(raw_exn); @@ -1003,7 +342,7 @@ function oneOf(decoders) { })]; } -function map$1(mapper, param) { +function map(mapper, param) { var decoder1 = param[0]; return /* Decoder */[(function (value) { var match = Curry._1(decoder1, value); @@ -1285,7 +624,7 @@ function nullable(decoder) { return oneOf(/* :: */[ $$null(/* None */0), /* :: */[ - map$1((function (v) { + map((function (v) { return /* Some */[v]; }), decoder), /* [] */0 @@ -1332,7 +671,7 @@ function decodeString(decoder, string) { } var Decoder = /* module */[ - /* ObjectDict */ObjectDict, + /* ObjectDict */0, /* ParseFail */ParseFail, /* string */string, /* int */$$int, @@ -1348,7 +687,7 @@ var Decoder = /* module */[ /* index */index, /* maybe */maybe, /* oneOf */oneOf, - /* map */map$1, + /* map */map, /* map2 */map2, /* map3 */map3, /* map4 */map4, diff --git a/lib/js/src/web_xmlhttprequest.js b/lib/js/src/web_xmlhttprequest.js index 569c9c5..01b0cbd 100644 --- a/lib/js/src/web_xmlhttprequest.js +++ b/lib/js/src/web_xmlhttprequest.js @@ -2,12 +2,11 @@ 'use strict'; var Block = require("bs-platform/lib/js/block.js"); -var Curry = require("bs-platform/lib/js/curry.js"); var Belt_List = require("bs-platform/lib/js/belt_List.js"); var Belt_Array = require("bs-platform/lib/js/belt_Array.js"); var Js_primitive = require("bs-platform/lib/js/js_primitive.js"); var Web_formdata = require("./web_formdata.js"); -var Caml_primitive = require("bs-platform/lib/js/caml_primitive.js"); +var Belt_MapString = require("bs-platform/lib/js/belt_MapString.js"); var Caml_builtin_exceptions = require("bs-platform/lib/js/caml_builtin_exceptions.js"); function abort(x) { @@ -55,478 +54,14 @@ function getAllResponseHeadersAsList(x) { } function getAllResponseHeadersAsDict(x) { - var height = function (param) { - if (param) { - return param[4]; - } else { - return 0; - } - }; - var create = function (l, x, d, r) { - var hl = height(l); - var hr = height(r); - return /* Node */[ - l, - x, - d, - r, - hl >= hr ? hl + 1 | 0 : hr + 1 | 0 - ]; - }; - var singleton = function (x, d) { - return /* Node */[ - /* Empty */0, - x, - d, - /* Empty */0, - 1 - ]; - }; - var bal = function (l, x, d, r) { - var hl = l ? l[4] : 0; - var hr = r ? r[4] : 0; - if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l[3]; - var ld = l[2]; - var lv = l[1]; - var ll = 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[0]), lr[1], lr[2], create(lr[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[3]; - var rd = r[2]; - var rv = r[1]; - var rl = r[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[0]), rl[1], rl[2], create(rl[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, - x, - d, - r, - hl >= hr ? hl + 1 | 0 : hr + 1 | 0 - ]; - } - }; - var add = function (x, data, param) { - if (param) { - var r = param[3]; - var d = param[2]; - var v = param[1]; - var l = param[0]; - var c = Caml_primitive.caml_string_compare(x, v); - if (c === 0) { - return /* Node */[ - l, - x, - data, - r, - param[4] - ]; - } else if (c < 0) { - return bal(add(x, data, l), v, d, r); - } else { - return bal(l, v, d, add(x, data, r)); - } - } else { - return /* Node */[ - /* Empty */0, - x, - data, - /* Empty */0, - 1 - ]; - } - }; - var min_binding = function (_param) { - while(true) { - var param = _param; - if (param) { - var l = param[0]; - if (l) { - _param = l; - continue ; - - } else { - return /* tuple */[ - param[1], - param[2] - ]; - } - } else { - throw Caml_builtin_exceptions.not_found; - } - }; - }; - var remove_min_binding = function (param) { - if (param) { - var l = param[0]; - if (l) { - return bal(remove_min_binding(l), param[1], param[2], param[3]); - } else { - return param[3]; - } - } else { - throw [ - Caml_builtin_exceptions.invalid_argument, - "Map.remove_min_elt" - ]; - } - }; - var remove = function (x, param) { - if (param) { - var r = param[3]; - var d = param[2]; - var v = param[1]; - var l = param[0]; - var c = Caml_primitive.caml_string_compare(x, v); - if (c === 0) { - var t1 = l; - var t2 = r; - 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; - } - } else if (c < 0) { - return bal(remove(x, l), v, d, r); - } else { - return bal(l, v, d, remove(x, r)); - } - } else { - return /* Empty */0; - } - }; - var iter = function (f, _param) { - while(true) { - var param = _param; - if (param) { - iter(f, param[0]); - Curry._2(f, param[1], param[2]); - _param = param[3]; - continue ; - - } else { - return /* () */0; - } - }; - }; - var map = function (f, param) { - if (param) { - var l$prime = map(f, param[0]); - var d$prime = Curry._1(f, param[2]); - var r$prime = map(f, param[3]); - return /* Node */[ - l$prime, - param[1], - d$prime, - r$prime, - param[4] - ]; - } else { - return /* Empty */0; - } - }; - var mapi = function (f, param) { - if (param) { - var v = param[1]; - var l$prime = mapi(f, param[0]); - var d$prime = Curry._2(f, v, param[2]); - var r$prime = mapi(f, param[3]); - return /* Node */[ - l$prime, - v, - d$prime, - r$prime, - param[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[1], m[2], fold(f, m[0], accu)); - _m = m[3]; - continue ; - - } else { - return accu; - } - }; - }; - var for_all = function (p, _param) { - while(true) { - var param = _param; - if (param) { - if (Curry._2(p, param[1], param[2]) && for_all(p, param[0])) { - _param = param[3]; - continue ; - - } else { - return /* false */0; - } - } else { - return /* true */1; - } - }; - }; - var exists = function (p, _param) { - while(true) { - var param = _param; - if (param) { - if (Curry._2(p, param[1], param[2]) || exists(p, param[0])) { - return /* true */1; - } else { - _param = param[3]; - continue ; - - } - } else { - return /* false */0; - } - }; - }; - var add_min_binding = function (k, v, param) { - if (param) { - return bal(add_min_binding(k, v, param[0]), param[1], param[2], param[3]); - } else { - return singleton(k, v); - } - }; - var add_max_binding = function (k, v, param) { - if (param) { - return bal(param[0], param[1], param[2], add_max_binding(k, v, param[3])); - } else { - return singleton(k, v); - } - }; - var join = function (l, v, d, r) { - if (l) { - if (r) { - var rh = r[4]; - var lh = l[4]; - if (lh > (rh + 2 | 0)) { - return bal(l[0], l[1], l[2], join(l[3], v, d, r)); - } else if (rh > (lh + 2 | 0)) { - return bal(join(l, v, d, r[0]), r[1], r[2], 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) { - return join(t1, v, d[0], t2); - } else { - return concat(t1, t2); - } - }; - var split = function (x, param) { - if (param) { - var r = param[3]; - var d = param[2]; - var v = param[1]; - var l = param[0]; - var c = Caml_primitive.caml_string_compare(x, v); - if (c === 0) { - return /* tuple */[ - l, - /* 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, - /* None */0, - /* Empty */0 - ]; - } - }; - var merge = function (f, s1, s2) { - var exit = 0; - if (s1) { - var v1 = s1[1]; - if (s1[4] >= height(s2)) { - var match = split(v1, s2); - return concat_or_join(merge(f, s1[0], match[0]), v1, Curry._3(f, v1, /* Some */[s1[2]], match[1]), merge(f, s1[3], match[2])); - } else { - exit = 1; - } - } else if (s2) { - exit = 1; - } else { - return /* Empty */0; - } - if (exit === 1) { - if (s2) { - var v2 = s2[1]; - var match$1 = split(v2, s1); - return concat_or_join(merge(f, match$1[0], s2[0]), v2, Curry._3(f, v2, match$1[1], /* Some */[s2[2]]), merge(f, match$1[2], s2[3])); - } else { - throw [ - Caml_builtin_exceptions.assert_failure, - [ - "map.ml", - 270, - 10 - ] - ]; - } - } - - }; - var filter = function (p, param) { - if (param) { - var d = param[2]; - var v = param[1]; - var l$prime = filter(p, param[0]); - var pvd = Curry._2(p, v, d); - var r$prime = filter(p, param[3]); - if (pvd) { - 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[2]; - var v = param[1]; - var match = partition(p, param[0]); - var lf = match[1]; - var lt = match[0]; - var pvd = Curry._2(p, v, d); - var match$1 = partition(p, param[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[0]) + 1 | 0) + cardinal(param[3]) | 0; - } else { - return 0; - } - }; - var bindings_aux = function (_accu, _param) { - while(true) { - var param = _param; - var accu = _accu; - if (param) { - _param = param[0]; - _accu = /* :: */[ - /* tuple */[ - param[1], - param[2] - ], - bindings_aux(accu, param[3]) - ]; - continue ; - - } else { - return accu; - } - }; - }; var err = getAllResponseHeadersAsList(x); if (err.tag) { return err; } else { var insert = function (d, param) { - return add(param[0], param[1], d); + return Belt_MapString.set(d, param[0], param[1]); }; - return /* Ok */Block.__(0, [Belt_List.reduce(err[0], /* Empty */0, insert)]); + return /* Ok */Block.__(0, [Belt_List.reduce(err[0], Belt_MapString.empty, insert)]); } } diff --git a/src/tea_http.ml b/src/tea_http.ml index cb49ad4..2c81416 100644 --- a/src/tea_http.ml +++ b/src/tea_http.ml @@ -12,7 +12,7 @@ type responseBody = Web.XMLHttpRequest.responseBody type response = { url : string ; status : response_status - ; headers : string Map.Make(String).t + ; headers : string Belt.Map.String.t ; body : responseBody } @@ -93,7 +93,7 @@ let getString url = let send resultToMessage (Request (request, maybeEvents)) = - let module StringMap = Map.Make(String) in + let module StringMap = Belt.Map.String in let {method'; headers; url; body; expect; timeout; withCredentials } = request in let (Expect (typ, responseToResult)) = expect in Tea_cmd.call (fun callbacks -> diff --git a/src/tea_json.ml b/src/tea_json.ml index 83d3327..6d8c2af 100644 --- a/src/tea_json.ml +++ b/src/tea_json.ml @@ -3,7 +3,7 @@ module Decoder = struct type error = String.t - module ObjectDict = Map.Make(String) + module ObjectDict = Belt.Map.String type ('input, 'result) t = Decoder of ('input -> ('result, error) Tea_result.t) @@ -141,7 +141,7 @@ module Decoder = struct | None -> raise (ParseFail ("Key is undefined: " ^ k)) | Some v -> match decoder v with - | Tea_result.Ok r -> ObjectDict.add k r d + | Tea_result.Ok r -> ObjectDict.set d k r | Tea_result.Error e -> raise (ParseFail e) ) in let emptyDict = ObjectDict.empty in diff --git a/src/web_xmlhttprequest.ml b/src/web_xmlhttprequest.ml index ded1ca6..3d3f327 100644 --- a/src/web_xmlhttprequest.ml +++ b/src/web_xmlhttprequest.ml @@ -97,11 +97,11 @@ let getAllResponseHeadersAsList x = ) let getAllResponseHeadersAsDict x = - let module StringMap = Map.Make(String) in + let module StringMap = Belt.Map.String in match getAllResponseHeadersAsList x with | Tea_result.Error _ as err -> err | Tea_result.Ok l -> - let insert d (k, v) = StringMap.add k v d in + let insert d (k, v) = StringMap.set d k v in Tea_result.Ok (Belt.List.reduce l StringMap.empty insert) let getResponseHeader key x = Js.Null.toOption (x##getResponse key)