From 594fcc9fb90b74ef3bc7d0534d0b7c5064f30fc2 Mon Sep 17 00:00:00 2001 From: Julius Marozas Date: Fri, 28 Oct 2022 16:55:12 +0200 Subject: [PATCH 001/109] Update package(-lock).json --- package-lock.json | 4 ++-- package.json | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index c1ddd216..28480fd9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "agda-mode", - "version": "0.3.10", + "version": "0.3.11", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "agda-mode", - "version": "0.3.10", + "version": "0.3.11", "dependencies": { "@datastructures-js/binary-search-tree": "^4.3.0", "@glennsl/bs-json": "github:banacorn/bs-json#0c900d3", diff --git a/package.json b/package.json index 05f21ebc..c5b3215d 100644 --- a/package.json +++ b/package.json @@ -72,14 +72,6 @@ "configuration": "./language-configuration.json" } ], - "grammars": [ - { - "language": "agda", - "scopeName": "text.html.markdown", - "path": "./syntaxes/markdown.tmLanguage.json", - "injectTo": ["source.agda"] - } - ], "commands": [ { "command": "agda-mode.load", @@ -854,7 +846,7 @@ } }, "grammars": [ - { + { "language": "agda", "scopeName": "source.agda", "path": "./syntaxes/agda.tmLanguage.json", @@ -862,7 +854,15 @@ "meta.embedded.block.haskell": "haskell", "meta.embedded.block.javascript": "javascript" } - } + }, + { + "language": "agda", + "scopeName": "text.html.markdown", + "path": "./syntaxes/markdown.tmLanguage.json", + "injectTo": [ + "source.agda" + ] + } ] }, "__metadata": { From 1f02efd08c1aec66257fb7f18e9b9f934bc98d1a Mon Sep 17 00:00:00 2001 From: Julius Marozas Date: Sat, 29 Oct 2022 13:30:27 +0200 Subject: [PATCH 002/109] Update language-server-mule to 0.2.4 --- package-lock.json | 384 +++++++++++++++++++++++++--------------------- package.json | 2 +- 2 files changed, 209 insertions(+), 177 deletions(-) diff --git a/package-lock.json b/package-lock.json index 28480fd9..98cd84df 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "compare-versions": "^3.5.1", "eventemitter3": ">=4.0.0", "getos": "^3.2.1", - "language-server-mule": "github:banacorn/language-server-mule#v0.2.3", + "language-server-mule": "github:banacorn/language-server-mule#731475993ee538218cb12c501b12b0ef21e0c821", "react": "^16.9.0", "react-dom": "^16.9.0", "reason-nodejs": "github:banacorn/reason-nodejs#temp", @@ -116,13 +116,13 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "node_modules/@nodelib/fs.scandir": { @@ -202,9 +202,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", - "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", + "version": "8.4.8", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.8.tgz", + "integrity": "sha512-zUCKQI1bUCTi+0kQs5ZQzQ/XILWRLIlh15FXWNykJ+NG3TMKMVvwwC6GP3DR1Ylga15fB7iAExSzc4PNlR5i3w==", "dev": true, "dependencies": { "@types/estree": "*", @@ -234,9 +234,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.6.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.4.tgz", - "integrity": "sha512-I4BD3L+6AWiUobfxZ49DlU43gtI+FTHSv9pE2Zekg6KjMpre4ByusaljW3vYSLJrvQ1ck1hUaeVu8HVlY3vzHg==", + "version": "18.11.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.7.tgz", + "integrity": "sha512-LhFTglglr63mNXUSRYD8A+ZAIu5sFqNJ4Y2fPuY7UlrySJH87rRRlhtVmMHplmfk5WkoJGmDjE9oiTfyX94CpQ==", "dev": true }, "node_modules/@webassemblyjs/ast": { @@ -434,9 +434,9 @@ "dev": true }, "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -697,9 +697,9 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", - "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", "dev": true, "funding": [ { @@ -712,10 +712,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001370", - "electron-to-chromium": "^1.4.202", + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.5" + "update-browserslist-db": "^1.0.9" }, "bin": { "browserslist": "cli.js" @@ -935,9 +935,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001374", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001374.tgz", - "integrity": "sha512-mWvzatRx3w+j5wx/mpFN5v5twlPrabG8NqX2c6e45LCpymdoGqNvRkRutFUqpRTXKFQFNQJasvK0YT7suW6/Hw==", + "version": "1.0.30001426", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001426.tgz", + "integrity": "sha512-n7cosrHLl8AWt0wwZw/PJZgUg3lV0gk9LMI7ikGJwhyhgsd2Nb65vKvmSexCqq/J7rbH3mFG6yZZiPR5dLPW5A==", "dev": true, "funding": [ { @@ -1287,9 +1287,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.211", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.211.tgz", - "integrity": "sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A==", + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", "dev": true }, "node_modules/emoji-regex": { @@ -1346,31 +1346,32 @@ } }, "node_modules/es-abstract": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", - "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", + "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.1", + "get-intrinsic": "^1.1.3", "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-symbols": "^1.0.3", "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", + "is-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", + "object-inspect": "^1.12.2", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", + "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", "string.prototype.trimend": "^1.0.5", "string.prototype.trimstart": "^1.0.5", "unbox-primitive": "^1.0.2" @@ -1383,9 +1384,9 @@ } }, "node_modules/es-abstract/node_modules/object.assign": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.3.tgz", - "integrity": "sha512-ZFJnX3zltyjcYJL0RoCJuzb+11zWGyaDbjgxZbdV7rFEcHQuYxrZqhow67aA7xpes6LhojyFDaBKAFfogQrikA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", @@ -1530,9 +1531,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -1733,9 +1734,9 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "dev": true, "dependencies": { "function-bind": "^1.1.1", @@ -2181,9 +2182,9 @@ } }, "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "engines": { "node": ">= 0.4" @@ -2193,9 +2194,9 @@ } }, "node_modules/is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -2493,13 +2494,14 @@ }, "node_modules/language-server-mule": { "version": "0.2.3", - "resolved": "git+ssh://git@github.com/banacorn/language-server-mule.git#2caa861918e2bceda9f6c004a8a01b69c9dc8cce", + "resolved": "git+ssh://git@github.com/banacorn/language-server-mule.git#731475993ee538218cb12c501b12b0ef21e0c821", + "integrity": "sha512-ICXzKYmErCGMIZqISPI2p/p7HL8LYKnsZEAxub17IaSeACifYtx9tFPzN9bYUpcBCglOw5m1E9OuHP2iNpRUzw==", "license": "MIT", "dependencies": { "@glennsl/bs-json": "github:banacorn/bs-json#0c900d3", "eventemitter3": "^4.0.7", "unzipper": "^0.10.11", - "vscode-languageclient": "^8.0.0-next.1" + "vscode-languageclient": "^7.0.0" } }, "node_modules/less": { @@ -2606,9 +2608,9 @@ } }, "node_modules/loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz", + "integrity": "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==", "dev": true, "dependencies": { "big.js": "^5.2.2", @@ -2779,9 +2781,12 @@ } }, "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/minipass": { "version": "3.3.4", @@ -3612,6 +3617,20 @@ } ] }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -3654,9 +3673,9 @@ } }, "node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -3929,9 +3948,9 @@ } }, "node_modules/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", + "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.2", @@ -3947,16 +3966,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.14", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" + "terser": "^5.14.1" }, "engines": { "node": ">= 10.13.0" @@ -4080,9 +4099,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", - "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "dev": true, "funding": [ { @@ -4126,39 +4145,39 @@ "deprecated": "This package is deprecated, please use @vscode/codicons https://www.npmjs.com/package/@vscode/codicons" }, "node_modules/vscode-jsonrpc": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.0.2.tgz", - "integrity": "sha512-RY7HwI/ydoC1Wwg4gJ3y6LpU9FJRZAUnTYMXthqhFXXu77ErDd/xkREpGuk4MyYkk4a+XDWAMqe0S3KkelYQEQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", + "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==", "engines": { - "node": ">=14.0.0" + "node": ">=8.0.0 || >=10.0.0" } }, "node_modules/vscode-languageclient": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.0.2.tgz", - "integrity": "sha512-lHlthJtphG9gibGb/y72CKqQUxwPsMXijJVpHEC2bvbFqxmkj9LwQ3aGU9dwjBLqsX1S4KjShYppLvg1UJDF/Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-7.0.0.tgz", + "integrity": "sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==", "dependencies": { "minimatch": "^3.0.4", - "semver": "^7.3.5", - "vscode-languageserver-protocol": "3.17.2" + "semver": "^7.3.4", + "vscode-languageserver-protocol": "3.16.0" }, "engines": { - "vscode": "^1.67.0" + "vscode": "^1.52.0" } }, "node_modules/vscode-languageserver-protocol": { - "version": "3.17.2", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.2.tgz", - "integrity": "sha512-8kYisQ3z/SQ2kyjlNeQxbkkTNmVFoQCqkmGrzLH6A9ecPlgTbp3wDTnUNqaUxYr4vlAcloxx8zwy7G5WdguYNg==", + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz", + "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==", "dependencies": { - "vscode-jsonrpc": "8.0.2", - "vscode-languageserver-types": "3.17.2" + "vscode-jsonrpc": "6.0.0", + "vscode-languageserver-types": "3.16.0" } }, "node_modules/vscode-languageserver-types": { - "version": "3.17.2", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2.tgz", - "integrity": "sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==" + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", + "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==" }, "node_modules/vscode-test": { "version": "1.6.1", @@ -4611,13 +4630,13 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "@nodelib/fs.scandir": { @@ -4679,9 +4698,9 @@ "dev": true }, "@types/eslint": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", - "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", + "version": "8.4.8", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.8.tgz", + "integrity": "sha512-zUCKQI1bUCTi+0kQs5ZQzQ/XILWRLIlh15FXWNykJ+NG3TMKMVvwwC6GP3DR1Ylga15fB7iAExSzc4PNlR5i3w==", "dev": true, "requires": { "@types/estree": "*", @@ -4711,9 +4730,9 @@ "dev": true }, "@types/node": { - "version": "18.6.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.4.tgz", - "integrity": "sha512-I4BD3L+6AWiUobfxZ49DlU43gtI+FTHSv9pE2Zekg6KjMpre4ByusaljW3vYSLJrvQ1ck1hUaeVu8HVlY3vzHg==", + "version": "18.11.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.7.tgz", + "integrity": "sha512-LhFTglglr63mNXUSRYD8A+ZAIu5sFqNJ4Y2fPuY7UlrySJH87rRRlhtVmMHplmfk5WkoJGmDjE9oiTfyX94CpQ==", "dev": true }, "@webassemblyjs/ast": { @@ -4898,9 +4917,9 @@ "dev": true }, "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", "dev": true }, "acorn-import-assertions": { @@ -5096,15 +5115,15 @@ "dev": true }, "browserslist": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", - "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001370", - "electron-to-chromium": "^1.4.202", + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.5" + "update-browserslist-db": "^1.0.9" } }, "bs-mocha": { @@ -5275,9 +5294,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001374", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001374.tgz", - "integrity": "sha512-mWvzatRx3w+j5wx/mpFN5v5twlPrabG8NqX2c6e45LCpymdoGqNvRkRutFUqpRTXKFQFNQJasvK0YT7suW6/Hw==", + "version": "1.0.30001426", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001426.tgz", + "integrity": "sha512-n7cosrHLl8AWt0wwZw/PJZgUg3lV0gk9LMI7ikGJwhyhgsd2Nb65vKvmSexCqq/J7rbH3mFG6yZZiPR5dLPW5A==", "dev": true }, "chainsaw": { @@ -5547,9 +5566,9 @@ } }, "electron-to-chromium": { - "version": "1.4.211", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.211.tgz", - "integrity": "sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A==", + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", "dev": true }, "emoji-regex": { @@ -5591,40 +5610,41 @@ } }, "es-abstract": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", - "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", + "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.1", + "get-intrinsic": "^1.1.3", "get-symbol-description": "^1.0.0", "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-symbols": "^1.0.3", "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", + "is-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", + "object-inspect": "^1.12.2", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", + "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", "string.prototype.trimend": "^1.0.5", "string.prototype.trimstart": "^1.0.5", "unbox-primitive": "^1.0.2" }, "dependencies": { "object.assign": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.3.tgz", - "integrity": "sha512-ZFJnX3zltyjcYJL0RoCJuzb+11zWGyaDbjgxZbdV7rFEcHQuYxrZqhow67aA7xpes6LhojyFDaBKAFfogQrikA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -5733,9 +5753,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -5885,9 +5905,9 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -6199,15 +6219,15 @@ "dev": true }, "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true }, "is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "requires": { "has": "^1.0.3" @@ -6416,13 +6436,14 @@ "dev": true }, "language-server-mule": { - "version": "git+ssh://git@github.com/banacorn/language-server-mule.git#2caa861918e2bceda9f6c004a8a01b69c9dc8cce", - "from": "language-server-mule@github:banacorn/language-server-mule#v0.2.3", + "version": "git+ssh://git@github.com/banacorn/language-server-mule.git#731475993ee538218cb12c501b12b0ef21e0c821", + "integrity": "sha512-ICXzKYmErCGMIZqISPI2p/p7HL8LYKnsZEAxub17IaSeACifYtx9tFPzN9bYUpcBCglOw5m1E9OuHP2iNpRUzw==", + "from": "language-server-mule@github:banacorn/language-server-mule#731475993ee538218cb12c501b12b0ef21e0c821", "requires": { "@glennsl/bs-json": "github:banacorn/bs-json#0c900d3", "eventemitter3": "^4.0.7", "unzipper": "^0.10.11", - "vscode-languageclient": "^8.0.0-next.1" + "vscode-languageclient": "^7.0.0" } }, "less": { @@ -6500,9 +6521,9 @@ "dev": true }, "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz", + "integrity": "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -6630,9 +6651,9 @@ } }, "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" }, "minipass": { "version": "3.3.4", @@ -7233,6 +7254,17 @@ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -7268,9 +7300,9 @@ } }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "requires": { "lru-cache": "^6.0.0" } @@ -7482,9 +7514,9 @@ } }, "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", + "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", "dev": true, "requires": { "@jridgewell/source-map": "^0.3.2", @@ -7502,16 +7534,16 @@ } }, "terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.14", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" + "terser": "^5.14.1" }, "dependencies": { "serialize-javascript": { @@ -7598,9 +7630,9 @@ } }, "update-browserslist-db": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", - "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "dev": true, "requires": { "escalade": "^3.1.1", @@ -7627,33 +7659,33 @@ "integrity": "sha512-xqYypi4Ihth3bZgoE6961FYJBrmFErC+YouSC5Tn0pHqv0QSrP0PK++EIVNBi0I9Ted1OetZ3aWlNUWq1QaMBA==" }, "vscode-jsonrpc": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.0.2.tgz", - "integrity": "sha512-RY7HwI/ydoC1Wwg4gJ3y6LpU9FJRZAUnTYMXthqhFXXu77ErDd/xkREpGuk4MyYkk4a+XDWAMqe0S3KkelYQEQ==" + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", + "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==" }, "vscode-languageclient": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.0.2.tgz", - "integrity": "sha512-lHlthJtphG9gibGb/y72CKqQUxwPsMXijJVpHEC2bvbFqxmkj9LwQ3aGU9dwjBLqsX1S4KjShYppLvg1UJDF/Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-7.0.0.tgz", + "integrity": "sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==", "requires": { "minimatch": "^3.0.4", - "semver": "^7.3.5", - "vscode-languageserver-protocol": "3.17.2" + "semver": "^7.3.4", + "vscode-languageserver-protocol": "3.16.0" } }, "vscode-languageserver-protocol": { - "version": "3.17.2", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.2.tgz", - "integrity": "sha512-8kYisQ3z/SQ2kyjlNeQxbkkTNmVFoQCqkmGrzLH6A9ecPlgTbp3wDTnUNqaUxYr4vlAcloxx8zwy7G5WdguYNg==", + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz", + "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==", "requires": { - "vscode-jsonrpc": "8.0.2", - "vscode-languageserver-types": "3.17.2" + "vscode-jsonrpc": "6.0.0", + "vscode-languageserver-types": "3.16.0" } }, "vscode-languageserver-types": { - "version": "3.17.2", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2.tgz", - "integrity": "sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==" + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", + "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==" }, "vscode-test": { "version": "1.6.1", diff --git a/package.json b/package.json index c5b3215d..f20b01d3 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "compare-versions": "^3.5.1", "eventemitter3": ">=4.0.0", "getos": "^3.2.1", - "language-server-mule": "github:banacorn/language-server-mule#v0.2.3", + "language-server-mule": "github:banacorn/language-server-mule#731475993ee538218cb12c501b12b0ef21e0c821", "react": "^16.9.0", "react-dom": "^16.9.0", "reason-nodejs": "github:banacorn/reason-nodejs#temp", From 5bb619f62d1c62b308699619fd6e4bb8b235ed86 Mon Sep 17 00:00:00 2001 From: ZYShih <46051434+vic0103520@users.noreply.github.com> Date: Fri, 17 Nov 2023 15:56:04 +0800 Subject: [PATCH 003/109] Improve debug buffer: Not printing modules checked and verbosity now (#166) --- lib/js/src/State/State__Response.bs.js | 19 +++++-------------- lib/js/src/State/State__View.bs.js | 26 ++++++++++---------------- src/State/State__Response.res | 5 +---- src/State/State__View.res | 12 ++++-------- 4 files changed, 20 insertions(+), 42 deletions(-) diff --git a/lib/js/src/State/State__Response.bs.js b/lib/js/src/State/State__Response.bs.js index a76fc20b..070e6113 100644 --- a/lib/js/src/State/State__Response.bs.js +++ b/lib/js/src/State/State__Response.bs.js @@ -459,20 +459,11 @@ function handle$1(state, dispatchCommand, response) { })); } else { var message$1 = removeNewlines(response._1); - state.runningInfoLog.push([ - 1, - message$1 - ]); - handleResponse = $$Promise.map($$Promise.flatMap(State__View$AgdaModeVscode.Panel.displayInAppendMode(state, { - TAG: 0, - _0: "Type-checking", - [Symbol.for("name")]: "Plain" - }, [Item$AgdaModeVscode.plainText(message$1)]), (function (param) { - return State__View$AgdaModeVscode.DebugBuffer.displayInAppendMode([[ - 1, - message$1 - ]]); - })), (function (param) { + handleResponse = $$Promise.map(State__View$AgdaModeVscode.Panel.displayInAppendMode(state, { + TAG: 0, + _0: "Type-checking", + [Symbol.for("name")]: "Plain" + }, [Item$AgdaModeVscode.plainText(message$1)]), (function (param) { return { TAG: 0, _0: undefined, diff --git a/lib/js/src/State/State__View.bs.js b/lib/js/src/State/State__View.bs.js index 3f866b93..36db839a 100644 --- a/lib/js/src/State/State__View.bs.js +++ b/lib/js/src/State/State__View.bs.js @@ -186,16 +186,13 @@ function sendEvent$1($$event) { function display$1(msgs) { var body = Belt_Array.map(msgs, (function (param) { - var verbosity = String(param[0]); var body = RichText$AgdaModeVscode.string(param[1]); return { - TAG: 0, - _0: verbosity, - _1: "", - _2: body, - _3: undefined, - _4: undefined, - [Symbol.for("name")]: "Labeled" + TAG: 1, + _0: body, + _1: undefined, + _2: undefined, + [Symbol.for("name")]: "Unlabeled" }; })); return sendEvent$1({ @@ -212,16 +209,13 @@ function display$1(msgs) { function displayInAppendMode$1(msgs) { var body = Belt_Array.map(msgs, (function (param) { - var verbosity = String(param[0]); var body = RichText$AgdaModeVscode.string(param[1]); return { - TAG: 0, - _0: verbosity, - _1: "", - _2: body, - _3: undefined, - _4: undefined, - [Symbol.for("name")]: "Labeled" + TAG: 1, + _0: body, + _1: undefined, + _2: undefined, + [Symbol.for("name")]: "Unlabeled" }; })); return sendEvent$1({ diff --git a/src/State/State__Response.res b/src/State/State__Response.res index 5ef0bbc8..58bf39fb 100644 --- a/src/State/State__Response.res +++ b/src/State/State__Response.res @@ -205,10 +205,7 @@ let rec handle = ( | DisplayInfo(info) => DisplayInfo.handle(state, info)->Promise.map(() => Ok()) | RunningInfo(1, message) => let message = removeNewlines(message) - state.runningInfoLog->Js.Array2.push((1, message))->ignore - State.View.Panel.displayInAppendMode(state, Plain("Type-checking"), [Item.plainText(message)]) - ->Promise.flatMap(() => State.View.DebugBuffer.displayInAppendMode([(1, message)])) - ->Promise.map(() => Ok()) + State.View.Panel.displayInAppendMode(state, Plain("Type-checking"), [Item.plainText(message)])->Promise.map(() => Ok()) | RunningInfo(verbosity, message) => let message = removeNewlines(message) state.runningInfoLog->Js.Array2.push((verbosity, message))->ignore diff --git a/src/State/State__View.res b/src/State/State__View.res index a0cd23da..ff85eec5 100644 --- a/src/State/State__View.res +++ b/src/State/State__View.res @@ -138,21 +138,17 @@ module DebugBuffer: DebugBuffer = { let display = msgs => { let header = View.Header.Plain("Agda Debug Buffer") - let body = msgs->Array.map(((verbosity, msg)) => { - let verbosity = string_of_int(verbosity) - let style = "" + let body = msgs->Array.map(((_, msg)) => { let body = RichText.string(msg) - Item.Labeled(verbosity, style, body, None, None) + Item.Unlabeled(body, None, None) }) sendEvent(Display(header, body)) } let displayInAppendMode = msgs => { let header = View.Header.Plain("Agda Debug Buffer") - let body = msgs->Array.map(((verbosity, msg)) => { - let verbosity = string_of_int(verbosity) - let style = "" + let body = msgs->Array.map(((_, msg)) => { let body = RichText.string(msg) - Item.Labeled(verbosity, style, body, None, None) + Item.Unlabeled(body, None, None) }) sendEvent(Append(header, body)) } From 92eb2c771a8c1b173c7a9985b6cd4f98aa3f21a5 Mon Sep 17 00:00:00 2001 From: Liang-Ting Chen Date: Mon, 20 Nov 2023 23:41:23 +0800 Subject: [PATCH 004/109] Update CHANGELOG --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d4306c6a..614f1f66 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html) +## v0.4.2 - 2023-11-20 +- #167: Make the font size of Agda buffer the same as editors +- #166: Improve debug buffer: Not printing modules checked and verbosity now + ## v0.4.1 - 2023-09-04 ### Changed From c43d09ba1f98725ca159ae62f6b27d37369f8745 Mon Sep 17 00:00:00 2001 From: Liang-Ting Chen Date: Mon, 20 Nov 2023 23:49:43 +0800 Subject: [PATCH 005/109] 0.4.2 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 626e899b..002e6e9a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "agda-mode", - "version": "0.4.1", + "version": "0.4.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "agda-mode", - "version": "0.4.1", + "version": "0.4.2", "dependencies": { "@datastructures-js/binary-search-tree": "^4.3.0", "@glennsl/bs-json": "github:banacorn/bs-json#0c900d3", diff --git a/package.json b/package.json index 5abe7f4b..167b71a0 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "agda-mode on vscode", "icon": "asset/logo.png", "publisher": "banacorn", - "version": "0.4.1", + "version": "0.4.2", "engines": { "vscode": "^1.41.0" }, From ecc60f59a014af28ca1ff82422933f7fbac594bd Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Thu, 23 Nov 2023 17:47:42 +0800 Subject: [PATCH 006/109] [ dep ] Upgrade ReScript to v10.1.4 and language-server-mule to v0.3 --- bsconfig.json | 3 +- lib/js/src/Agda.bs.js | 24 +- lib/js/src/Config.bs.js | 9 +- lib/js/src/Connection/Connection.bs.js | 24 +- lib/js/src/Connection/Connection__Probe.bs.js | 4 +- .../Connection/Connection__Scheduler.bs.js | 39 +- .../Connection/Emacs/Connection__Emacs.bs.js | 31 +- .../src/Connection/LSP/Connection__LSP.bs.js | 26 +- .../LSP/Connection__LSP__Error.bs.js | 3 +- lib/js/src/Editor.bs.js | 24 +- lib/js/src/Goal.bs.js | 6 +- lib/js/src/Highlighting.bs.js | 21 +- .../Highlighting__Decoration.bs.js | 8 +- .../Highlighting__SemanticToken.bs.js | 5 +- lib/js/src/InputMethod/Buffer.bs.js | 17 +- lib/js/src/InputMethod/IM.bs.js | 46 +- lib/js/src/InputMethod/Translator.bs.js | 7 +- lib/js/src/Main.bs.js | 30 +- lib/js/src/Parser/Parser.bs.js | 43 +- lib/js/src/Parser/SourceFile.bs.js | 67 +- lib/js/src/Registry.bs.js | 7 +- lib/js/src/Request.bs.js | 79 +- lib/js/src/Response.bs.js | 14 +- lib/js/src/State.bs.js | 1 - lib/js/src/State/State__Command.bs.js | 19 +- lib/js/src/State/State__Goal.bs.js | 79 +- lib/js/src/State/State__InputMethod.bs.js | 18 +- lib/js/src/State/State__Response.bs.js | 5 +- lib/js/src/State/State__Type.bs.js | 10 +- lib/js/src/State/State__View.bs.js | 6 +- lib/js/src/Tokens.bs.js | 94 +- lib/js/src/Util/AVLTree.bs.js | 4 +- lib/js/src/Util/Chan.bs.js | 218 +- lib/js/src/Util/Util.bs.js | 37 +- lib/js/src/View/Common.bs.js | 6 +- lib/js/src/View/Component/Item.bs.js | 6 +- lib/js/src/View/Component/RichText.bs.js | 39 +- lib/js/src/View/Hook.bs.js | 15 +- lib/js/src/View/Panel/CandidateSymbols.bs.js | 2 +- .../src/View/Panel/Emacs/Emacs__Parser.bs.js | 22 +- .../src/View/Panel/Emacs/Emacs__Parser2.bs.js | 192 +- lib/js/src/View/Panel/Keyboard.bs.js | 10 +- lib/js/src/View/Panel/Panel.bs.js | 69 +- lib/js/src/View/Panel/Prompt.bs.js | 59 +- lib/js/src/View/Root.bs.js | 3 - lib/js/src/View/Singleton.bs.js | 4 - lib/js/src/View/WebviewPanel.bs.js | 65 +- lib/js/test/RunTestFromCLI.bs.js | 17 +- lib/js/test/TestSuiteAdapter.bs.js | 2 - .../tests/Parser/Test__Parser__Response.bs.js | 25 +- .../Parser/Test__Parser__SExpression.bs.js | 80 +- .../Parser/Test__Parser__SourceFile.bs.js | 98 +- lib/js/test/tests/Test__CaseSplit.bs.js | 180 +- lib/js/test/tests/Test__Connection.bs.js | 22 +- lib/js/test/tests/Test__EditorIM.bs.js | 1307 +-- lib/js/test/tests/Test__Tokens.bs.js | 94 +- lib/js/test/tests/Test__Util.bs.js | 143 +- .../tests/TextEditor/Test__AgdaOffset.bs.js | 374 +- .../tests/TextEditor/Test__LineEnding.bs.js | 80 +- package-lock.json | 7955 ----------------- package.json | 7 +- src/Connection/Connection.res | 19 +- src/Connection/Emacs/Connection__Emacs.res | 3 +- src/Connection/LSP/Connection__LSP.res | 13 +- src/Parser/SourceFile.res | 26 +- src/Registry.res | 2 +- src/State/State__Command.res | 42 +- src/Util/Util.res | 46 +- 68 files changed, 2173 insertions(+), 9882 deletions(-) delete mode 100644 package-lock.json diff --git a/bsconfig.json b/bsconfig.json index cee9cca3..7d1abd9e 100644 --- a/bsconfig.json +++ b/bsconfig.json @@ -26,11 +26,10 @@ "@glennsl/bs-json", "rescript-vscode", "rescript-webapi", - "bs-nd", "language-server-mule", "reason-promise", "@rescript/react", - "reason-nodejs" + "rescript-nodejs" ], "bs-dev-dependencies": [ "bs-mocha", diff --git a/lib/js/src/Agda.bs.js b/lib/js/src/Agda.bs.js index 23ec1157..592d9aaf 100644 --- a/lib/js/src/Agda.bs.js +++ b/lib/js/src/Agda.bs.js @@ -2,6 +2,8 @@ 'use strict'; var Curry = require("rescript/lib/js/curry.js"); +var Js_array = require("rescript/lib/js/js_array.js"); +var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Pervasives = require("rescript/lib/js/pervasives.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); @@ -26,7 +28,7 @@ var Term = { function parse(raw) { var __x = raw.trim(); - return Belt_Array.keepMap(Belt_Array.mapWithIndex(__x.split(/(\?\d+)|(\_\d+[^\}\)\s]*)/), (function (i, token) { + return Belt_Array.keepMap(Belt_Array.mapWithIndex(Js_string.splitByRe(/(\\?\\d+)|(\\_\\d+[^\\}\\)\\s]*)/, __x), (function (i, token) { var match = i % 3; if (match !== 1) { if (match !== 2) { @@ -48,7 +50,7 @@ function parse(raw) { } } else { return Belt_Option.map(Belt_Option.flatMap(Belt_Option.map(token, (function (param) { - return param.slice(1); + return Js_string.sliceToEnd(1, param); })), Pervasives.int_of_string_opt), (function (x) { return { TAG: 1, @@ -71,7 +73,7 @@ var Expr = { render: render$1 }; -var partial_arg = /^([^\:]*) \: ((?:\n|.)+)/; +var partial_arg = /^([^\\:]*) \\: ((?:\\n|.)+)/; function parseOfType(param) { return Emacs__Parser$AgdaModeVscode.captures(partial_arg, (function (captured) { @@ -88,7 +90,7 @@ function parseOfType(param) { }), param); } -var partial_arg$1 = /^Type ((?:\n|.)+)/; +var partial_arg$1 = /^Type ((?:\\n|.)+)/; function parseJustType(param) { return Emacs__Parser$AgdaModeVscode.captures(partial_arg$1, (function (captured) { @@ -102,7 +104,7 @@ function parseJustType(param) { }), param); } -var partial_arg$2 = /^Sort ((?:\n|.)+)/; +var partial_arg$2 = /^Sort ((?:\\n|.)+)/; function parseJustSort(param) { return Emacs__Parser$AgdaModeVscode.captures(partial_arg$2, (function (captured) { @@ -188,7 +190,7 @@ function parseOutputWithoutLocation(raw) { })); } -var partial_arg$4 = /((?:\n|.)*\S+)\s*\[ at ([^\]]+) \]/; +var partial_arg$4 = /((?:\\n|.)*\\S+)\\s*\\[ at ([^\\]]+) \\]/; function parseOutputWithLocation(param) { return Emacs__Parser$AgdaModeVscode.captures(partial_arg$4, (function (captured) { @@ -208,7 +210,7 @@ function parseOutputWithLocation(param) { } function parse$2(raw) { - var locRe = /\[ at (\S+\:(?:\d+\,\d+\-\d+\,\d+|\d+\,\d+\-\d+)) \]$/; + var locRe = /\\[ at (\\S+\\:(?:\\d+\\,\\d+\\-\\d+\\,\\d+|\\d+\\,\\d+\\-\\d+)) \\]$/; var hasLocation = locRe.test(raw); if (hasLocation) { return Curry._1(parseOutputWithLocation, raw); @@ -292,12 +294,12 @@ function computeUTF16SurrogatePairIndices(text) { var lengthInCodeUnits = text.length; var i = 0; while(i < lengthInCodeUnits) { - var charCode = text.charCodeAt(i) | 0; + var charCode = Js_string.charCodeAt(i, text) | 0; var notFinal = (i + 1 | 0) < lengthInCodeUnits; if (charCode >= 55296 && charCode <= 56319 && notFinal) { - var nextCharCode = text.charCodeAt(i + 1 | 0) | 0; + var nextCharCode = Js_string.charCodeAt(i + 1 | 0, text) | 0; if (nextCharCode >= 56320 && charCode <= 57343) { - surrogatePairs.push(i); + Js_array.push(i, surrogatePairs); } i = i + 2 | 0; } else { @@ -308,7 +310,7 @@ function computeUTF16SurrogatePairIndices(text) { } function computeCRLFIndices(text) { - var regexp = /\r\n/g; + var regexp = /\\r\\n/g; var matchAll = (function (regexp, string) { let match; let result = []; diff --git a/lib/js/src/Config.bs.js b/lib/js/src/Config.bs.js index fd39290f..abf4f1a7 100644 --- a/lib/js/src/Config.bs.js +++ b/lib/js/src/Config.bs.js @@ -3,6 +3,7 @@ var Vscode = require("vscode"); var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); +var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); @@ -70,7 +71,7 @@ function getAgdaPath(param) { function getCommandLineOptions(param) { return Belt_Array.keep(Belt_Option.mapWithDefault(Vscode.workspace.getConfiguration("agdaMode", undefined).get("connection.commandLineOptions"), [], (function (s) { - return s.trim().split(" "); + return Js_string.split(" ", s.trim()); })), (function (s) { return s.trim() !== ""; })); @@ -108,7 +109,7 @@ function getAgdaLanguageServerPort(param) { function getAgdaLanguageServerCommandLineOptions(param) { return Belt_Array.keep(Belt_Option.mapWithDefault(Vscode.workspace.getConfiguration("agdaMode", undefined).get("connection.agdaLanguageServerOptions"), [], (function (s) { - return s.trim().split(" "); + return Js_string.split(" ", s.trim()); })), (function (s) { return s.trim() !== ""; })); @@ -149,7 +150,7 @@ var View = { function getLibraryPath(param) { var raw = Belt_Option.getWithDefault(Vscode.workspace.getConfiguration("agdaMode", undefined).get("libraryPath"), ""); - return Belt_Array.map(Belt_Array.keep(raw.split(","), (function (x) { + return Belt_Array.map(Belt_Array.keep(Js_string.split(",", raw), (function (x) { return x !== ""; })), Parser$AgdaModeVscode.filepath); } @@ -208,7 +209,7 @@ function getActivationKey(param) { if (raw === undefined) { return "\\"; } - var key = Caml_option.valFromOption(raw).substr(0, 1); + var key = Js_string.substrAtMost(0, 1, Caml_option.valFromOption(raw)); if (key === "") { return "\\"; } else { diff --git a/lib/js/src/Connection/Connection.bs.js b/lib/js/src/Connection/Connection.bs.js index b585e415..7e1525e6 100644 --- a/lib/js/src/Connection/Connection.bs.js +++ b/lib/js/src/Connection/Connection.bs.js @@ -81,7 +81,7 @@ function start(globalStoragePath, useLSP, onDownload) { }); } })), (function (method) { - return $$Promise.mapError($$Promise.flatMapOk($$Promise.mapError(Client__LSP$LanguageServerMule.make("agda", "Agda Language Server", method, getFromConfig(undefined)), (function (e) { + return $$Promise.mapError($$Promise.flatMapOk($$Promise.mapError(Util$AgdaModeVscode.P.toPromise(Client__LSP$LanguageServerMule.make("agda", "Agda Language Server", method, getFromConfig(undefined))), (function (e) { return { TAG: 0, _0: e, @@ -158,14 +158,30 @@ function start(globalStoragePath, useLSP, onDownload) { function stop(param) { var match = singleton.contents; if (match === undefined) { - return $$Promise.resolved(undefined); + return $$Promise.resolved({ + TAG: 0, + _0: undefined, + [Symbol.for("name")]: "Ok" + }); } if (match.TAG === /* Emacs */0) { singleton.contents = undefined; - return Connection__Emacs$AgdaModeVscode.destroy(match._0); + return $$Promise.map(Connection__Emacs$AgdaModeVscode.destroy(match._0), (function (param) { + return { + TAG: 0, + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + })); } singleton.contents = undefined; - return Connection__LSP$AgdaModeVscode.destroy(match._0); + return $$Promise.mapError(Connection__LSP$AgdaModeVscode.destroy(match._0), (function (err) { + return { + TAG: 1, + _0: err, + [Symbol.for("name")]: "LSP" + }; + })); } function sendRequest(globalStoragePath, onDownload, useLSP, $$document, request, handler) { diff --git a/lib/js/src/Connection/Connection__Probe.bs.js b/lib/js/src/Connection/Connection__Probe.bs.js index 307b2c1f..4f00afcb 100644 --- a/lib/js/src/Connection/Connection__Probe.bs.js +++ b/lib/js/src/Connection/Connection__Probe.bs.js @@ -7,6 +7,7 @@ var Getos = require("getos"); var Js_dict = require("rescript/lib/js/js_dict.js"); var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Process = require("process"); +var Js_array = require("rescript/lib/js/js_array.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); @@ -84,7 +85,7 @@ function chooseFromReleases(platform, releases) { } }; - var sorted = matched.sort(compare); + var sorted = Js_array.sortInPlaceWith(compare, matched); return Belt_Array.get(sorted, 0); }; var chooseAsset = function (release) { @@ -178,7 +179,6 @@ function probeLSP(globalStoragePath, onDownload) { cacheInvalidateExpirationSecs: 86400, log: (function (prim) { console.log(prim); - }) }, [Symbol.for("name")]: "FromGitHub" diff --git a/lib/js/src/Connection/Connection__Scheduler.bs.js b/lib/js/src/Connection/Connection__Scheduler.bs.js index 2b6e9c0e..16159a4d 100644 --- a/lib/js/src/Connection/Connection__Scheduler.bs.js +++ b/lib/js/src/Connection/Connection__Scheduler.bs.js @@ -4,6 +4,7 @@ var Caml = require("rescript/lib/js/caml.js"); var Curry = require("rescript/lib/js/curry.js"); var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); +var Js_array = require("rescript/lib/js/js_array.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Chan$AgdaModeVscode = require("../Util/Chan.bs.js"); var Util$AgdaModeVscode = require("../Util/Util.bs.js"); @@ -18,21 +19,20 @@ function make(param) { function runNonLast(self, handler, response) { self.tally = self.tally + 1 | 0; - return $$Promise.get(Curry._1(handler, response), (function (param) { - self.tally = self.tally - 1 | 0; - if (self.tally === 0) { - return Chan$AgdaModeVscode.emit(self.allDone, undefined); - } - - })); + $$Promise.get(Curry._1(handler, response), (function (param) { + self.tally = self.tally - 1 | 0; + if (self.tally === 0) { + return Chan$AgdaModeVscode.emit(self.allDone, undefined); + } + + })); } function addLast(self, priority, response) { - self.deferredLastResponses.push([ + Js_array.push([ priority, response - ]); - + ], self.deferredLastResponses); } function onceDone(self) { @@ -44,16 +44,15 @@ function onceDone(self) { } function runLast(self, handler) { - return $$Promise.get(onceDone(self), (function (param) { - var deferredLastResponses = Belt_Array.map(self.deferredLastResponses.sort(function (x, y) { - return Caml.caml_int_compare(x[0], y[0]); - }), (function (prim) { - return prim[1]; - })); - deferredLastResponses.unshift(/* CompleteHighlightingAndMakePromptReappear */4); - Util$AgdaModeVscode.oneByOne(Belt_Array.map(deferredLastResponses, Curry.__1(handler))); - - })); + $$Promise.get(onceDone(self), (function (param) { + var deferredLastResponses = Belt_Array.map(Js_array.sortInPlaceWith((function (x, y) { + return Caml.int_compare(x[0], y[0]); + }), self.deferredLastResponses), (function (prim) { + return prim[1]; + })); + Js_array.unshift(/* CompleteHighlightingAndMakePromptReappear */4, deferredLastResponses); + Util$AgdaModeVscode.oneByOne(Belt_Array.map(deferredLastResponses, Curry.__1(handler))); + })); } var Module = { diff --git a/lib/js/src/Connection/Emacs/Connection__Emacs.bs.js b/lib/js/src/Connection/Emacs/Connection__Emacs.bs.js index 7bf5b86c..1e501759 100644 --- a/lib/js/src/Connection/Emacs/Connection__Emacs.bs.js +++ b/lib/js/src/Connection/Emacs/Connection__Emacs.bs.js @@ -4,9 +4,12 @@ var Os = require("os"); var Curry = require("rescript/lib/js/curry.js"); var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); +var Js_array = require("rescript/lib/js/js_array.js"); +var Js_string = require("rescript/lib/js/js_string.js"); var Untildify = require("untildify"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); +var Caml_option = require("rescript/lib/js/caml_option.js"); var Chan$AgdaModeVscode = require("../../Util/Chan.bs.js"); var Util$AgdaModeVscode = require("../../Util/Util.bs.js"); var Config$AgdaModeVscode = require("../../Config.bs.js"); @@ -23,15 +26,23 @@ function make(path, args) { var handle = Client__Process$LanguageServerMule.onOutput($$process, (function (output) { switch (output.TAG | 0) { case /* Stdout */0 : - var match_ = output._0.match(/Agda version (.*)/); - if (match_ === null) { + var match_ = Js_string.match_(/Agda version (.*)/, output._0); + if (match_ === undefined) { return Curry._1(resolve, { TAG: 1, _0: "Cannot read Agda version", [Symbol.for("name")]: "Error" }); } - var version = Belt_Array.get(match_, 1); + var match = Belt_Array.get(match_, 1); + if (match === undefined) { + return Curry._1(resolve, { + TAG: 1, + _0: "Cannot read Agda version", + [Symbol.for("name")]: "Error" + }); + } + var version = Caml_option.valFromOption(match); if (version !== undefined) { return Curry._1(resolve, { TAG: 0, @@ -65,7 +76,7 @@ function make(path, args) { } })); return $$Promise.mapError($$Promise.tap(match[0], (function (param) { - return Curry._1(handle, undefined); + Curry._1(handle, undefined); })), (function (e) { return { TAG: 0, @@ -163,7 +174,7 @@ function wire(self) { switch (x.TAG | 0) { case /* Stdout */0 : var rawText = x._0; - if (rawText.startsWith("Error:")) { + if (Js_string.startsWith("Error:", rawText)) { return Chan$AgdaModeVscode.emit(self.chan, { TAG: 1, _0: { @@ -193,7 +204,6 @@ function wire(self) { } })); - } function make$1(method) { @@ -204,7 +214,7 @@ function make$1(method) { [Symbol.for("name")]: "Error" }); } - var args = ["--interaction"].concat(Config$AgdaModeVscode.Connection.getCommandLineOptions(undefined)); + var args = Js_array.concat(Config$AgdaModeVscode.Connection.getCommandLineOptions(undefined), ["--interaction"]); return $$Promise.tapOk($$Promise.mapOk(make(method._0, args), (function (procInfo) { return { procInfo: procInfo, @@ -260,16 +270,15 @@ function onResponse(conn, callback) { _0: error, [Symbol.for("name")]: "Error" }); - }; var listenerHandle = { contents: undefined }; listenerHandle.contents = Chan$AgdaModeVscode.on(conn.chan, listener); return $$Promise.tap(match[0], (function (param) { - return Belt_Option.forEach(listenerHandle.contents, (function (destroyListener) { - return Curry._1(destroyListener, undefined); - })); + Belt_Option.forEach(listenerHandle.contents, (function (destroyListener) { + Curry._1(destroyListener, undefined); + })); })); } diff --git a/lib/js/src/Connection/LSP/Connection__LSP.bs.js b/lib/js/src/Connection/LSP/Connection__LSP.bs.js index c078782d..65d9b140 100644 --- a/lib/js/src/Connection/LSP/Connection__LSP.bs.js +++ b/lib/js/src/Connection/LSP/Connection__LSP.bs.js @@ -752,7 +752,7 @@ function decodeResponse(json) { } function sendRequestPrim(client, request) { - return $$Promise.flatMapOk($$Promise.mapError(Client__LSP$LanguageServerMule.sendRequest(client, encode(request)), (function (exn) { + return $$Promise.flatMapOk($$Promise.mapError(Util$AgdaModeVscode.P.toPromise(Client__LSP$LanguageServerMule.sendRequest(client, encode(request))), (function (exn) { return { TAG: 0, _0: exn, @@ -786,7 +786,13 @@ function make(client) { } function destroy(self) { - return Client__LSP$LanguageServerMule.destroy(self.client); + return $$Promise.mapError(Util$AgdaModeVscode.P.toPromise(Client__LSP$LanguageServerMule.destroy(self.client)), (function (e) { + return { + TAG: 0, + _0: e, + [Symbol.for("name")]: "ConnectionError" + }; + })); } function sendRequest(self, request, handler) { @@ -801,7 +807,7 @@ function sendRequest(self, request, handler) { var match = $$Promise.pending(undefined); var resolve = match[1]; var waitForResponseEnd = match[0]; - var stopListeningForNotifications = Client__LSP$LanguageServerMule.onRequest(self.client, (function (json) { + var stopListeningForNotifications = Client__LSP$LanguageServerMule.onRequest(self.client, (async function (json) { var error = decodeResponse(json); if (error.TAG === /* Ok */0) { var responese = error._0; @@ -840,11 +846,11 @@ function sendRequest(self, request, handler) { [Symbol.for("name")]: "Error" }); } - return $$Promise.resolved({ - TAG: 0, - _0: null, - [Symbol.for("name")]: "Ok" - }); + return { + TAG: 0, + _0: null, + [Symbol.for("name")]: "Ok" + }; })); return $$Promise.tap($$Promise.tap($$Promise.flatMapOk(sendRequestPrim(self.client, { _0: request, @@ -872,9 +878,9 @@ function sendRequest(self, request, handler) { return waitForResponseEnd; } })), (function (param) { - return stopListeningForNotifications.dispose(); + stopListeningForNotifications.dispose(); })), (function (param) { - return Connection__Scheduler$AgdaModeVscode.runLast(scheduler, handler$1); + Connection__Scheduler$AgdaModeVscode.runLast(scheduler, handler$1); })); } diff --git a/lib/js/src/Connection/LSP/Connection__LSP__Error.bs.js b/lib/js/src/Connection/LSP/Connection__LSP__Error.bs.js index 9170fec4..29388a2f 100644 --- a/lib/js/src/Connection/LSP/Connection__LSP__Error.bs.js +++ b/lib/js/src/Connection/LSP/Connection__LSP__Error.bs.js @@ -2,6 +2,7 @@ 'use strict'; var Json = require("@glennsl/bs-json/lib/js/src/Json.bs.js"); +var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Json_decode = require("@glennsl/bs-json/lib/js/src/Json_decode.bs.js"); var Util$AgdaModeVscode = require("../../Util/Util.bs.js"); @@ -70,7 +71,7 @@ function toString$1(error) { case /* ConnectionError */0 : var exn = error._0; var isECONNREFUSED = Belt_Option.mapWithDefault(exn.message, false, (function (param) { - return param.startsWith("connect ECONNREFUSED"); + return Js_string.startsWith("connect ECONNREFUSED", param); })); if (isECONNREFUSED) { return [ diff --git a/lib/js/src/Editor.bs.js b/lib/js/src/Editor.bs.js index 55fca7c7..37d8ac34 100644 --- a/lib/js/src/Editor.bs.js +++ b/lib/js/src/Editor.bs.js @@ -65,7 +65,6 @@ var $$Range = { function decorate(editor, decoration, ranges) { editor.setDecorations(decoration, ranges); - } function highlightBackgroundPrim(editor, backgroundColor, ranges) { @@ -140,7 +139,6 @@ function underlineText(editor, range) { function destroy(prim) { prim.dispose(); - } var Decoration = { @@ -161,7 +159,6 @@ var Decoration = { function set(editor, point) { var selection = new Vscode.Selection(point, point); editor.selection = selection; - } function setMany(editor, points) { @@ -169,7 +166,6 @@ function setMany(editor, points) { return new Vscode.Selection(point, point); })); editor.selections = selections; - } function get(editor) { @@ -192,7 +188,6 @@ var Cursor = { function set$1(editor, range) { var selection = new Vscode.Selection(range.start, range.end); editor.selection = selection; - } function setMany$1(editor, ranges) { @@ -200,7 +195,6 @@ function setMany$1(editor, ranges) { return new Vscode.Selection(range.start, range.end); })); editor.selections = selections; - } function get$1(editor) { @@ -239,17 +233,15 @@ function batchReplace($$document, replacements) { var workspaceEdit = new Vscode.WorkspaceEdit(); Belt_Array.forEach(replacements, (function (param) { workspaceEdit.replace($$document.uri, param[0], param[1], undefined); - })); return Vscode.workspace.applyEdit(workspaceEdit); } function batchReplace$p(editor, replacements) { return editor.edit((function (editBuilder) { - return Belt_Array.forEach(replacements, (function (param) { - editBuilder.replace(param[0], param[1]); - - })); + Belt_Array.forEach(replacements, (function (param) { + editBuilder.replace(param[0], param[1]); + })); }), undefined); } @@ -270,10 +262,9 @@ function batchInsert($$document, points, text) { function batchInsert$p(editor, points, text) { return editor.edit((function (editBuilder) { - return Belt_Array.forEach(points, (function (point) { - editBuilder.insert(point, text); - - })); + Belt_Array.forEach(points, (function (point) { + editBuilder.insert(point, text); + })); }), undefined); } @@ -297,11 +288,10 @@ var $$Text = { function focus($$document) { Vscode.window.showTextDocument($$document, /* Beside */1, undefined); - } function reveal(editor, range) { - return VSCode.TextEditor.revealRange(editor, range, /* InCenterIfOutsideViewport */3); + VSCode.TextEditor.revealRange(editor, range, /* InCenterIfOutsideViewport */3); } var documentSelector = [VSCode.StringOr.string("agda")]; diff --git a/lib/js/src/Goal.bs.js b/lib/js/src/Goal.bs.js index 57acdca9..994bd9a5 100644 --- a/lib/js/src/Goal.bs.js +++ b/lib/js/src/Goal.bs.js @@ -77,7 +77,7 @@ function setCursor(self, editor) { var position = Editor$AgdaModeVscode.Position.fromOffset($$document, match[0] + 3 | 0); Editor$AgdaModeVscode.Cursor.set(editor, position); var range = Editor$AgdaModeVscode.$$Range.fromInterval($$document, self.interval); - return VSCode.TextEditor.revealRange(editor, range, undefined); + VSCode.TextEditor.revealRange(editor, range, undefined); } function buildHaskellRange(self, $$document, version, filepath) { @@ -105,12 +105,12 @@ function refreshDecoration(self, editor) { var range = getOuterRange(self, editor.document); Editor$AgdaModeVscode.Decoration.decorate(editor, self.decorationBackground, [range]); var range$1 = new Vscode.Range(range.start, range.end.translate(0, -2)); - return Editor$AgdaModeVscode.Decoration.decorate(editor, self.decorationIndex, [range$1]); + Editor$AgdaModeVscode.Decoration.decorate(editor, self.decorationIndex, [range$1]); } function destroy(self) { Editor$AgdaModeVscode.Decoration.destroy(self.decorationBackground); - return Editor$AgdaModeVscode.Decoration.destroy(self.decorationIndex); + Editor$AgdaModeVscode.Decoration.destroy(self.decorationIndex); } var Module = { diff --git a/lib/js/src/Highlighting.bs.js b/lib/js/src/Highlighting.bs.js index 90d93ee4..cc8620ef 100644 --- a/lib/js/src/Highlighting.bs.js +++ b/lib/js/src/Highlighting.bs.js @@ -4,6 +4,7 @@ var Curry = require("rescript/lib/js/curry.js"); var Vscode = require("vscode"); var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); +var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Pervasives = require("rescript/lib/js/pervasives.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); @@ -40,24 +41,23 @@ function make(param) { function clear(self) { Belt_Array.forEach(self.decorations, (function (param) { - return Editor$AgdaModeVscode.Decoration.destroy(param[0]); + Editor$AgdaModeVscode.Decoration.destroy(param[0]); })); self.decorations = []; - } var destroy = clear; function redecorate(self, editor) { - return Belt_Array.forEach(self.decorations, (function (param) { - return Editor$AgdaModeVscode.Decoration.decorate(editor, param[0], param[1]); - })); + Belt_Array.forEach(self.decorations, (function (param) { + Editor$AgdaModeVscode.Decoration.decorate(editor, param[0], param[1]); + })); } function classify(change, token) { var removedRange = change.range; - var regex = /\r\n|\r|\n/; - var lines = change.text.split(regex); + var regex = /\\r\\n|\\r|\\n/; + var lines = Js_string.splitByRe(regex, change.text); var lineDetalOfRemovedRange = removedRange.end.line - removedRange.start.line | 0; var lineDelta = (lines.length - 1 | 0) - lineDetalOfRemovedRange | 0; var match; @@ -147,10 +147,9 @@ function updateSemanticHighlighting(self, $$event) { }]; }))); }; - return Belt_Array.forEach(changes, (function (change) { - self.semanticTokens = applyChange(self.semanticTokens, change); - - })); + Belt_Array.forEach(changes, (function (change) { + self.semanticTokens = applyChange(self.semanticTokens, change); + })); } function getSemanticTokens(self) { diff --git a/lib/js/src/Highlighting/Highlighting__Decoration.bs.js b/lib/js/src/Highlighting/Highlighting__Decoration.bs.js index 7ba399ec..152a5514 100644 --- a/lib/js/src/Highlighting/Highlighting__Decoration.bs.js +++ b/lib/js/src/Highlighting/Highlighting__Decoration.bs.js @@ -4,6 +4,7 @@ var VSCode = require("rescript-vscode/lib/js/src/VSCode.bs.js"); var Vscode = require("vscode"); var Js_dict = require("rescript/lib/js/js_dict.js"); +var Js_array = require("rescript/lib/js/js_array.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Editor$AgdaModeVscode = require("../Editor.bs.js"); @@ -15,7 +16,7 @@ function toVSCodeDecorations(input, editor) { var color = face._0; var ranges = Js_dict.get(backgroundColorDict, color); if (ranges !== undefined) { - ranges.push(range); + Js_array.push(range, ranges); } else { backgroundColorDict[color] = [range]; } @@ -24,11 +25,10 @@ function toVSCodeDecorations(input, editor) { var color$1 = face._0; var ranges$1 = Js_dict.get(foregroundColorDict, color$1); if (ranges$1 !== undefined) { - ranges$1.push(range); + Js_array.push(range, ranges$1); } else { foregroundColorDict[color$1] = [range]; } - }; Belt_Array.forEach(input, (function (param) { var range = param[1]; @@ -54,7 +54,7 @@ function toVSCodeDecorations(input, editor) { ranges ]; })); - return foregroundDecorations.concat(backgroundDecorations); + return Js_array.concat(backgroundDecorations, foregroundDecorations); } exports.toVSCodeDecorations = toVSCodeDecorations; diff --git a/lib/js/src/Highlighting/Highlighting__SemanticToken.bs.js b/lib/js/src/Highlighting/Highlighting__SemanticToken.bs.js index 4b98fc0f..f5d711b4 100644 --- a/lib/js/src/Highlighting/Highlighting__SemanticToken.bs.js +++ b/lib/js/src/Highlighting/Highlighting__SemanticToken.bs.js @@ -2,6 +2,7 @@ 'use strict'; var Vscode = require("vscode"); +var Js_array = require("rescript/lib/js/js_array.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Util$AgdaModeVscode = require("../Util/Util.bs.js"); @@ -151,13 +152,13 @@ function splitRange(doc, range) { var offset = doc.offsetAt(new Vscode.Position(i + 1 | 0, 0)) - 1 | 0; endingPoint = doc.positionAt(offset); } - ranges.push({ + Js_array.push({ line: startingPoint.line, column: [ startingPoint.character, endingPoint.character ] - }); + }, ranges); } return ranges; } diff --git a/lib/js/src/InputMethod/Buffer.bs.js b/lib/js/src/InputMethod/Buffer.bs.js index fc54f7ed..7ca2e4e7 100644 --- a/lib/js/src/InputMethod/Buffer.bs.js +++ b/lib/js/src/InputMethod/Buffer.bs.js @@ -2,6 +2,7 @@ 'use strict'; var Caml = require("rescript/lib/js/caml.js"); +var Js_string = require("rescript/lib/js/js_string.js"); var Translator$AgdaModeVscode = require("./Translator.bs.js"); function make(param) { @@ -48,7 +49,7 @@ function moveUp(self) { symbol: self.symbol, tail: self.tail, translation: self.translation, - candidateIndex: Caml.caml_int_max(0, self.candidateIndex - 10 | 0) + candidateIndex: Caml.int_max(0, self.candidateIndex - 10 | 0) }; } @@ -57,7 +58,7 @@ function moveRight(self) { symbol: self.symbol, tail: self.tail, translation: self.translation, - candidateIndex: Caml.caml_int_min(self.translation.candidateSymbols.length - 1 | 0, self.candidateIndex + 1 | 0) + candidateIndex: Caml.int_min(self.translation.candidateSymbols.length - 1 | 0, self.candidateIndex + 1 | 0) }; } @@ -66,7 +67,7 @@ function moveDown(self) { symbol: self.symbol, tail: self.tail, translation: self.translation, - candidateIndex: Caml.caml_int_min(self.translation.candidateSymbols.length - 1 | 0, self.candidateIndex + 10 | 0) + candidateIndex: Caml.int_min(self.translation.candidateSymbols.length - 1 | 0, self.candidateIndex + 10 | 0) }; } @@ -75,7 +76,7 @@ function moveLeft(self) { symbol: self.symbol, tail: self.tail, translation: self.translation, - candidateIndex: Caml.caml_int_max(0, self.candidateIndex - 1 | 0) + candidateIndex: Caml.int_max(0, self.candidateIndex - 1 | 0) }; } @@ -85,8 +86,8 @@ function update(self, start, change) { var match = self.symbol; var insertStart = match !== undefined ? (insertStartInTextEditor + match[1].length | 0) - match[0].length | 0 : insertStartInTextEditor; var insertEnd = insertStart + change.replacedTextLength | 0; - var beforeInsertedText = sequence.substring(0, insertStart); - var afterInsertedText = sequence.substring(insertEnd); + var beforeInsertedText = Js_string.substring(0, insertStart, sequence); + var afterInsertedText = Js_string.substringToEnd(insertEnd, sequence); var newSequence = beforeInsertedText + (change.insertedText + afterInsertedText); var translation = Translator$AgdaModeVscode.translate(newSequence); var symbol = translation.symbol; @@ -108,8 +109,8 @@ function update(self, start, change) { ]; } if (translation.further) { - if (newSequence.includes(sequence)) { - var diff = newSequence.substring(sequence.length); + if (Js_string.includes(sequence, newSequence)) { + var diff = Js_string.substringToEnd(sequence.length, newSequence); var buffer_symbol$1 = self.symbol; var buffer_tail = self.tail + diff; var buffer_candidateIndex$1 = self.candidateIndex; diff --git a/lib/js/src/InputMethod/IM.bs.js b/lib/js/src/InputMethod/IM.bs.js index bea85bf0..8fc15647 100644 --- a/lib/js/src/InputMethod/IM.bs.js +++ b/lib/js/src/InputMethod/IM.bs.js @@ -5,6 +5,7 @@ var Caml = require("rescript/lib/js/caml.js"); var Curry = require("rescript/lib/js/curry.js"); var Vscode = require("vscode"); var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); +var Js_array = require("rescript/lib/js/js_array.js"); var Belt_List = require("rescript/lib/js/belt_List.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); @@ -65,7 +66,7 @@ function withIn(instance, offset) { } function destroy(instance) { - return Belt_Option.forEach(instance.decoration, Editor$AgdaModeVscode.Decoration.destroy); + Belt_Option.forEach(instance.decoration, Editor$AgdaModeVscode.Decoration.destroy); } function logOutput(self, output) { @@ -129,9 +130,9 @@ function toRewrites(instances, modify) { } function groupChangeWithInstances(instances, changes) { - var changes$1 = changes.sort(function (x, y) { - return Caml.caml_int_compare(x.offset, y.offset); - }); + var changes$1 = Js_array.sortInPlaceWith((function (x, y) { + return Caml.int_compare(x.offset, y.offset); + }), changes); var go = function (_accum, _x) { while(true) { var x = _x; @@ -244,16 +245,15 @@ function updateInstances(instances, changes) { start + accum.contents | 0, (end_ + accum.contents | 0) + delta | 0 ]; - rewrites.push({ + Js_array.push({ interval: [ start, end_ ], text: text, instance: buffer.translation.further ? instance : undefined - }); + }, rewrites); accum.contents = accum.contents + delta | 0; - })); var intervalLengthIs0 = instance.interval[0] === instance.interval[1]; var numberOfCandidateSymbols = buffer.translation.candidateSymbols.length; @@ -280,7 +280,6 @@ function deactivate(self) { Belt_Array.forEach(self.instances, destroy); self.instances = []; self.activated = false; - } function applyRewrites(self, editor, rewrites) { @@ -295,21 +294,20 @@ function applyRewrites(self, editor, rewrites) { var resolve = match[1]; $$Promise.get(match[0], (function (param) { Belt_Array.forEach(rewrites, (function (rewrite) { - return Belt_Option.forEach(rewrite.instance, (function (instance) { - return Belt_Option.forEach(editor, (function (param) { - Belt_Option.forEach(instance.decoration, Editor$AgdaModeVscode.Decoration.destroy); - var $$document = param.document; - var match = instance.interval; - var start = $$document.positionAt(match[0]); - var end_ = $$document.positionAt(match[1]); - var range = new Vscode.Range(start, end_); - instance.decoration = Caml_option.some(Editor$AgdaModeVscode.Decoration.underlineText(param, range)); - - })); - })); + Belt_Option.forEach(rewrite.instance, (function (instance) { + Belt_Option.forEach(editor, (function (param) { + Belt_Option.forEach(instance.decoration, Editor$AgdaModeVscode.Decoration.destroy); + var $$document = param.document; + var match = instance.interval; + var start = $$document.positionAt(match[0]); + var end_ = $$document.positionAt(match[1]); + var range = new Vscode.Range(start, end_); + instance.decoration = Caml_option.some(Editor$AgdaModeVscode.Decoration.underlineText(param, range)); + })); + })); })); self.semaphore = false; - return Chan$AgdaModeVscode.emit(self.chanLog, [/* RewriteApplied */1]); + Chan$AgdaModeVscode.emit(self.chanLog, [/* RewriteApplied */1]); })); var instance = Belt_Array.get(self.instances, 0); if (instance !== undefined) { @@ -351,9 +349,9 @@ function run(self, editor, input) { switch (input.TAG | 0) { case /* Activate */0 : self.activated = true; - self.instances = Belt_Array.map(input._0.sort(function (x, y) { - return Caml.caml_int_compare(x[0], y[0]); - }), (function (param) { + self.instances = Belt_Array.map(Js_array.sortInPlaceWith((function (x, y) { + return Caml.int_compare(x[0], y[0]); + }), input._0), (function (param) { if (editor === undefined) { return { interval: param, diff --git a/lib/js/src/InputMethod/Translator.bs.js b/lib/js/src/InputMethod/Translator.bs.js index d86bc82f..88fbc8e0 100644 --- a/lib/js/src/InputMethod/Translator.bs.js +++ b/lib/js/src/InputMethod/Translator.bs.js @@ -2,6 +2,7 @@ 'use strict'; var Js_dict = require("rescript/lib/js/js_dict.js"); +var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Json_decode = require("@glennsl/bs-json/lib/js/src/Json_decode.bs.js"); @@ -49,8 +50,8 @@ function isInKeymap(input) { if (n === 0) { return trie; } - var key = input$1.substr(0, 1); - var rest = input$1.substr(1, n - 1 | 0); + var key = Js_string.substrAtMost(0, 1, input$1); + var rest = Js_string.substrAtMost(1, n - 1 | 0, input$1); var trie$p = Js_dict.get(trie.subTrie, key); if (trie$p === undefined) { return ; @@ -125,7 +126,7 @@ function translate(input) { var initialTranslation = translate(""); function lookup(symbol) { - return Belt_Option.flatMap(Belt_Option.map(symbol.codePointAt(0), (function (prim) { + return Belt_Option.flatMap(Belt_Option.map(Js_string.codePointAt(0, symbol), (function (prim) { return String(prim); })), (function (param) { return Js_dict.get(rawTable, param); diff --git a/lib/js/src/Main.bs.js b/lib/js/src/Main.bs.js index 3da8f2b4..d0ea1b49 100644 --- a/lib/js/src/Main.bs.js +++ b/lib/js/src/Main.bs.js @@ -4,10 +4,10 @@ var Curry = require("rescript/lib/js/curry.js"); var Vscode = require("vscode"); var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); +var Js_array = require("rescript/lib/js/js_array.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); -var Caml_splice_call = require("rescript/lib/js/caml_splice_call.js"); var IM$AgdaModeVscode = require("./InputMethod/IM.bs.js"); var Chan$AgdaModeVscode = require("./Util/Chan.bs.js"); var State$AgdaModeVscode = require("./State.bs.js"); @@ -27,13 +27,13 @@ var Highlighting__SemanticToken$AgdaModeVscode = require("./Highlighting/Highlig function isAgda(fileName) { var fileName$1 = Parser$AgdaModeVscode.filepath(fileName); - return /\.agda$|\.lagda/i.test(fileName$1); + return /\\.agda$|\\.lagda/i.test(fileName$1); } function onOpenEditor(callback) { Belt_Option.forEach(Vscode.window.activeTextEditor, callback); return Vscode.window.onDidChangeActiveTextEditor(function (next) { - return Belt_Option.forEach(next, callback); + Belt_Option.forEach(next, callback); }); } @@ -70,15 +70,13 @@ function initialize(debugChan, extensionPath, globalStoragePath, editor, fileNam var panel = Singleton$AgdaModeVscode.Panel.make(extensionPath); $$Promise.get(WebviewPanel$AgdaModeVscode.onceDestroyed(panel), (function (param) { Registry$AgdaModeVscode.removeAndDestroyAll(undefined); - })); var state = State$AgdaModeVscode.make(debugChan, globalStoragePath, extensionPath, editor); $$Promise.get(Chan$AgdaModeVscode.once(state.onRemoveFromRegistry), (function (param) { - return Registry$AgdaModeVscode.remove(fileName); + Registry$AgdaModeVscode.remove(fileName); })); var subscribe = function (disposable) { - state.subscriptions.push(disposable); - + Js_array.push(disposable, state.subscriptions); }; var getCurrentEditor = function (param) { var editor = Vscode.window.activeTextEditor; @@ -113,12 +111,10 @@ function initialize(debugChan, extensionPath, globalStoragePath, editor, fileNam ]; })); State__InputMethod$AgdaModeVscode.select(state, intervals); - })); subscribe(Vscode.workspace.onDidChangeTextDocument(function ($$event) { var changes = IM$AgdaModeVscode.Input.fromTextDocumentChangeEvent(editor, $$event); State__InputMethod$AgdaModeVscode.keyUpdateEditorIM(state, changes); - })); subscribe(Editor$AgdaModeVscode.Provider.registerDefinitionProvider(function (fileName, position) { var currentFileName = Parser$AgdaModeVscode.filepath(state.document.fileName); @@ -146,7 +142,6 @@ function registerDocumentSemanticTokensProvider(param) { builder.push(Curry._1(Highlighting__SemanticToken$AgdaModeVscode.Module.SingleLineRange.toVsCodeRange, param.range), Highlighting__SemanticToken$AgdaModeVscode.TokenType.toString(param.type_), Belt_Option.map(param.modifiers, (function (xs) { return Belt_Array.map(xs, Highlighting__SemanticToken$AgdaModeVscode.TokenModifier.toString); }))); - })); return builder.build(); }))); @@ -185,23 +180,22 @@ function activateWithoutContext(subscriptions, extensionPath, globalStoragePath) state.editor = editor; state.document = editor.document; State__Command$AgdaModeVscode.dispatchCommand(state, /* Refresh */3); - })); } }); - subscriptions.push(x); + Js_array.push(x, subscriptions); var x$1 = Vscode.workspace.onDidChangeTextDocument(function ($$event) { var $$document = $$event.document; var fileName = Parser$AgdaModeVscode.filepath($$document.fileName); if (isAgda(fileName)) { return Belt_Option.forEach(Registry$AgdaModeVscode.get(fileName), (function (state) { - return Highlighting$AgdaModeVscode.updateSemanticHighlighting(state.highlighting, $$event); + Highlighting$AgdaModeVscode.updateSemanticHighlighting(state.highlighting, $$event); })); } }); - subscriptions.push(x$1); + Js_array.push(x$1, subscriptions); var x$2 = Vscode.workspace.onDidCloseTextDocument(function ($$document) { var fileName = Parser$AgdaModeVscode.filepath($$document.fileName); if (isAgda(fileName)) { @@ -211,7 +205,7 @@ function activateWithoutContext(subscriptions, extensionPath, globalStoragePath) } }); - subscriptions.push(x$2); + Js_array.push(x$2, subscriptions); var xs = onTriggerCommand(function (command, editor) { var fileName = Parser$AgdaModeVscode.filepath(editor.document.fileName); var tmp; @@ -258,7 +252,7 @@ function activateWithoutContext(subscriptions, extensionPath, globalStoragePath) return ; } var state = initialize(channels, extensionPath, globalStoragePath, editor, fileName); - return Registry$AgdaModeVscode.add(fileName, state); + Registry$AgdaModeVscode.add(fileName, state); })), (function (param) { var state = Registry$AgdaModeVscode.get(fileName); if (state !== undefined) { @@ -282,9 +276,9 @@ function activateWithoutContext(subscriptions, extensionPath, globalStoragePath) } })); }); - Caml_splice_call.spliceObjApply(subscriptions, "push", [xs]); + Js_array.pushMany(xs, subscriptions); var x$3 = registerDocumentSemanticTokensProvider(undefined); - subscriptions.push(x$3); + Js_array.push(x$3, subscriptions); return channels; } diff --git a/lib/js/src/Parser/Parser.bs.js b/lib/js/src/Parser/Parser.bs.js index 81759b4e..1d4f4e92 100644 --- a/lib/js/src/Parser/Parser.bs.js +++ b/lib/js/src/Parser/Parser.bs.js @@ -3,11 +3,13 @@ var Path = require("path"); var Curry = require("rescript/lib/js/curry.js"); +var Js_array = require("rescript/lib/js/js_array.js"); +var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); function split(s) { - return Belt_Array.keepMap(Belt_Array.map(s.split(/\r\n|\n/), (function (x) { + return Belt_Array.keepMap(Belt_Array.map(Js_string.splitByRe(/\\r\\n|\\n/, s), (function (x) { if (x !== undefined && x !== "") { return x; } @@ -96,7 +98,7 @@ function feed(self, input) { } function stop(self) { - return Curry._1(self.callback, /* Stop */0); + Curry._1(self.callback, /* Stop */0); } var Incr = { @@ -110,15 +112,15 @@ function toString(x) { if (x.TAG === /* A */0) { return "\"" + (x._0 + "\""); } else { - return "[" + (Belt_Array.map(x._0, toString).join(", ") + "]"); + return "[" + (Js_array.joinWith(", ", Belt_Array.map(x._0, toString)) + "]"); } } function preprocess(string) { - if (string.substring(0, 13) === "cannot read: ") { + if (Js_string.substring(0, 13, string) === "cannot read: ") { return { TAG: 1, - _0: string.slice(12), + _0: Js_string.sliceToEnd(12, string), [Symbol.for("name")]: "Error" }; } else { @@ -162,27 +164,26 @@ function parseWithContinuation(string) { }; return ; } - xs._0.push(elem); - + Js_array.push(elem, xs._0); }; var totalLength = string.length; for(var i = 0; i < totalLength; ++i){ - var $$char = string.charAt(i); + var $$char = Js_string.charAt(i, string); if (escaped.contents) { if ($$char === "n") { word.contents = word.contents + "\\"; } word.contents = word.contents + $$char; escaped.contents = false; - } else if (!($$char === "'" && !in_str.contents)) { + } else if (!($$char === "\'" && !in_str.contents)) { if ($$char === "(" && !in_str.contents) { - stack.push({ + Js_array.push({ contents: { TAG: 1, _0: [], [Symbol.for("name")]: "L" } - }); + }, stack); } else if ($$char === ")" && !in_str.contents) { if (word.contents !== "") { pushToTheTop({ @@ -323,21 +324,21 @@ function parse(input) { var err = Curry._1($$continue, line); switch (err.TAG | 0) { case /* Error */0 : - resultAccum.contents.push({ + Js_array.push({ TAG: 1, _0: err._0, [Symbol.for("name")]: "Error" - }); + }, resultAccum.contents); return ; case /* Continue */1 : continuation.contents = err._0; return ; case /* Done */2 : - resultAccum.contents.push({ + Js_array.push({ TAG: 0, _0: err._0, [Symbol.for("name")]: "Ok" - }); + }, resultAccum.contents); continuation.contents = undefined; return ; @@ -372,23 +373,23 @@ var $$Error = { }; function userInput(s) { - return s.replace(/\\/g, "\\\\").replace(/\"/g, "\\\"").replace(/\n/g, "\\n").trim(); + return Js_string.replaceByRe(/\\n/g, "\\n", Js_string.replaceByRe(/\\\"/g, "\\\"", Js_string.replaceByRe(/\\\\/g, "\\\\", s))).trim(); } function filepath(s) { - var removedBidi = s.charCodeAt(0) === 8234.0 ? s.slice(1) : s; + var removedBidi = Js_string.charCodeAt(0, s) === 8234.0 ? Js_string.sliceToEnd(1, s) : s; var normalized = Path.normalize(removedBidi); - return normalized.replace(/\\/g, "/"); + return Js_string.replaceByRe(/\\\\/g, "/", normalized); } -var partial_arg = /\\n/g; +var partial_arg = /\\\\n/g; function agdaOutput(param) { - return param.replace(partial_arg, "\n"); + return Js_string.replaceByRe(partial_arg, "\n", param); } function commandLineArgs(s) { - return s.replace(/\s+/g, " ").split(" "); + return Js_string.split(" ", Js_string.replaceByRe(/\\s+/g, " ", s)); } exports.split = split; diff --git a/lib/js/src/Parser/SourceFile.bs.js b/lib/js/src/Parser/SourceFile.bs.js index d7c12ab3..60f5b5e2 100644 --- a/lib/js/src/Parser/SourceFile.bs.js +++ b/lib/js/src/Parser/SourceFile.bs.js @@ -2,19 +2,20 @@ 'use strict'; var Curry = require("rescript/lib/js/curry.js"); +var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); var Parser$AgdaModeVscode = require("./Parser.bs.js"); function parse(filepath) { - if (/\.lagda\.rst$/i.test(Parser$AgdaModeVscode.filepath(filepath))) { + if (/\\.lagda\\.rst$/i.test(Parser$AgdaModeVscode.filepath(filepath))) { return /* LiterateRST */2; - } else if (/\.lagda\.md$/i.test(Parser$AgdaModeVscode.filepath(filepath))) { + } else if (/\\.lagda\\.md$/i.test(Parser$AgdaModeVscode.filepath(filepath))) { return /* LiterateMarkdown */3; - } else if (/\.lagda\.tex$|\.lagda$/i.test(Parser$AgdaModeVscode.filepath(filepath))) { + } else if (/\\.lagda\\.tex$|\\.lagda$/i.test(Parser$AgdaModeVscode.filepath(filepath))) { return /* LiterateTeX */1; - } else if (/\.lagda\.org$/i.test(Parser$AgdaModeVscode.filepath(filepath))) { + } else if (/\\.lagda\\.org$/i.test(Parser$AgdaModeVscode.filepath(filepath))) { return /* LiterateOrg */4; } else { return /* Agda */0; @@ -57,7 +58,7 @@ function lex(regex, source, target, tokens) { var cursor = { contents: token.range[0] }; - return Belt_Array.map(Belt_Array.keepMap(token.content.split(regex), (function (x) { + return Belt_Array.map(Belt_Array.keepMap(Js_string.splitByRe(regex, token.content), (function (x) { return x; })), (function (content) { var kind = regex.test(content) ? target : source; @@ -117,29 +118,29 @@ var Lexer = { mapOnly: mapOnly }; -var texBegin = /\\begin\{code\}.*/; +var texBegin = /\\\\begin\\{code\\}.*/; -var texEnd = /\\end\{code\}.*/; +var texEnd = /\\\\end\\{code\\}.*/; -var markdown = /\`\`\`(agda)?/; +var markdown = /\\`\\`\\`(agda)?/; -var rstBegin = /\:\:/; +var rstBegin = /\\:\\:/; -var rstEnd = /^[^\s]/; +var rstEnd = /^[^\\s]/; -var orgBegin = /\#\+begin\_src agda2/i; +var orgBegin = /\\#\\+begin\\_src agda2/i; -var orgEnd = /\#\+end\_src/i; +var orgEnd = /\\#\\+end\\_src/i; -var comment = /((?<=^|[\s"\_\;\.\(\)\{\}\@])--[^\r\n]*(?:\r|\n|$))|(\{-(?:[^-]|[\r\n]|(?:-+(?:[^-\}]|[\r\n])))*-+\})/; +var comment = /((?<=^|[\\s\"\\_\\;\\.\\(\\)\\{\\}\\@])--[^\\r\\n]*(?:\\r|\\n|$))|(\\{-(?:[^-]|[\\r\\n]|(?:-+(?:[^-\\}]|[\\r\\n])))*-+\\})/; -var goalBracket = /(\{\!(?:(?!\!\})(?:.|\s))*\!\})/; +var goalBracket = /(\\{\\!(?:(?!\\!\\})(?:.|\\s))*\\!\\})/; -var goalQuestionMarkRaw = /([\s\(\{\_\;\.\"@]|^)(\?)([\s\)\}\_\;\.\"@]|$)/gm; +var goalQuestionMarkRaw = /([\\s\\(\\{\\_\\;\\.\\\"@]|^)(\\?)([\\s\\)\\}\\_\\;\\.\\\"@]|$)/gm; -var goalQuestionMark = /(\?)/; +var goalQuestionMark = /(\\?)/; -var goalBracketContent = /\{\!((?:(?!\!\})(?:.|\s))*)\!\}/; +var goalBracketContent = /\\{\\!((?:(?!\\!\\})(?:.|\\s))*)\\!\\}/; var Regex = { texBegin: texBegin, @@ -160,14 +161,20 @@ function toTokens(raw) { var cursor = { contents: 0 }; - return Belt_Option.mapWithDefault(Caml_option.null_to_opt(raw.match(/(.*(?:\r\n|[\n\v\f\r\x85\u2028\u2029])?)/g)), [], (function (lines) { - return Belt_Array.map(Belt_Array.keep(lines, (function (x) { - return x !== ""; + return Belt_Option.mapWithDefault(Js_string.match_(/(.*(?:\\r\\n|[\\n\\v\\f\\r\\x85\\u2028\\u2029])?)/g, raw), [], (function (lines) { + return Belt_Array.map(Belt_Array.keep(Belt_Array.map(lines, (function (x) { + if (x !== undefined) { + return x; + } else { + return ""; + } + })), (function (s) { + return s !== ""; })), (function (line) { var cursorOld = cursor.contents; cursor.contents = cursor.contents + line.length | 0; return { - content: raw.substring(cursorOld, cursor.contents), + content: Js_string.substring(cursorOld, cursor.contents, raw), range: [ cursorOld, cursor.contents @@ -285,15 +292,21 @@ function parse$1(indices, filepath, raw) { return x; })); })), ""); - var actualSpaces = Belt_Option.getWithDefault(Belt_Option.flatMap(Caml_option.null_to_opt(content.match(/\s*$/)), (function (matches) { - return Belt_Option.map(Belt_Array.get(matches, 0), (function (prim) { - return prim.length; - })); + var actualSpaces = Belt_Option.getWithDefault(Belt_Option.flatMap(Js_string.match_(/\\s*$/, content), (function (matches) { + var match = Belt_Array.get(matches, 0); + if (match === undefined) { + return ; + } + var s = Caml_option.valFromOption(match); + if (s !== undefined) { + return s.length; + } + })), 0); var newContent; if (actualSpaces < requiredSpaces) { - var padding = "".repeat(requiredSpaces - actualSpaces | 0); - newContent = token.content.replace(/\{!.*!\}/, "{!" + content + padding + "!}"); + var padding = Js_string.repeat(requiredSpaces - actualSpaces | 0, ""); + newContent = Js_string.replaceByRe(/\\{!.*!\\}/, "{!" + content + padding + "!}", token.content); } else { newContent = token.content; } diff --git a/lib/js/src/Registry.bs.js b/lib/js/src/Registry.bs.js index c4cf27a4..bb28f065 100644 --- a/lib/js/src/Registry.bs.js +++ b/lib/js/src/Registry.bs.js @@ -43,12 +43,11 @@ function add(fileName, state) { _0: state, [Symbol.for("name")]: "Initialized" }; - } function remove(fileName) { var delete_ = (function (dict, key) {delete dict[key]}); - return delete_(dict, fileName); + delete_(dict, fileName); } function removeAndDestroy(fileName) { @@ -62,7 +61,9 @@ function removeAndDestroy(fileName) { return $$Promise.resolved(undefined); } remove(fileName); - return State$AgdaModeVscode.destroy(match._0, false); + return $$Promise.map(State$AgdaModeVscode.destroy(match._0, false), (function (param) { + + })); } function removeAndDestroyAll(param) { diff --git a/lib/js/src/Request.bs.js b/lib/js/src/Request.bs.js index d6a70207..4afe5b69 100644 --- a/lib/js/src/Request.bs.js +++ b/lib/js/src/Request.bs.js @@ -1,6 +1,7 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; +var Js_array = require("rescript/lib/js/js_array.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Pervasives = require("rescript/lib/js/pervasives.js"); var Goal$AgdaModeVscode = require("./Goal.bs.js"); @@ -77,10 +78,10 @@ function toString(x) { } function encode($$document, version, filepath, backend, libraryPath, highlightingMethod, request) { - libraryPath.unshift("."); - var libraryPath$1 = Belt_Array.map(libraryPath, (function (x) { - return "\"" + (Parser$AgdaModeVscode.filepath(x) + "\""); - })).join(", "); + Js_array.unshift(".", libraryPath); + var libraryPath$1 = Js_array.joinWith(", ", Belt_Array.map(libraryPath, (function (x) { + return "\"" + (Parser$AgdaModeVscode.filepath(x) + "\""); + }))); var highlightingMethod$1 = highlightingMethod ? "Direct" : "Indirect"; var commonPart = function (level) { var level$1; @@ -105,22 +106,22 @@ function encode($$document, version, filepath, backend, libraryPath, highlightin switch (request) { case /* Load */0 : if (Util$AgdaModeVscode.Version.gte(version, "2.5.0")) { - return commonPart(/* NonInteractive */1) + ("( Cmd_load \"" + filepath + "\" [] )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_load \"" + filepath + "\" [] )"); } else { - return commonPart(/* NonInteractive */1) + ("( Cmd_load \"" + filepath + "\" [" + libraryPath$1 + "] )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_load \"" + filepath + "\" [" + libraryPath$1 + "] )"); } case /* Compile */1 : if (Util$AgdaModeVscode.Version.gte(version, "2.5.0")) { - return commonPart(/* NonInteractive */1) + ("( Cmd_compile " + backend + " \"" + filepath + "\" [] )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_compile " + backend + " \"" + filepath + "\" [] )"); } else { - return commonPart(/* NonInteractive */1) + ("( Cmd_compile " + backend + " \"" + filepath + "\" [" + libraryPath$1 + "] )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_compile " + backend + " \"" + filepath + "\" [" + libraryPath$1 + "] )"); } case /* ToggleDisplayOfImplicitArguments */2 : - return commonPart(/* NonInteractive */1) + "( ToggleImplicitArgs )"; + return "" + commonPart(/* NonInteractive */1) + "( ToggleImplicitArgs )"; case /* ToggleDisplayOfIrrelevantArguments */3 : - return commonPart(/* NonInteractive */1) + "( ToggleIrrelevantArgs )"; + return "" + commonPart(/* NonInteractive */1) + "( ToggleIrrelevantArgs )"; case /* ShowConstraints */4 : - return commonPart(/* NonInteractive */1) + "( Cmd_constraints )"; + return "" + commonPart(/* NonInteractive */1) + "( Cmd_constraints )"; } } else { @@ -128,103 +129,103 @@ function encode($$document, version, filepath, backend, libraryPath, highlightin case /* SolveConstraints */0 : var normalization = Command$AgdaModeVscode.Normalization.encode(request._0); var index = String(request._1.index); - return commonPart(/* NonInteractive */1) + ("( Cmd_solveOne " + normalization + " " + index + " noRange \"\" )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_solveOne " + normalization + " " + index + " noRange \"\" )"); case /* SolveConstraintsGlobal */1 : var normalization$1 = Command$AgdaModeVscode.Normalization.encode(request._0); - return commonPart(/* NonInteractive */1) + ("( Cmd_solveAll " + normalization$1 + " )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_solveAll " + normalization$1 + " )"); case /* ShowGoals */2 : var normalization$2 = Command$AgdaModeVscode.Normalization.encode(request._0); if (Util$AgdaModeVscode.Version.gte(version, "2.6.2")) { - return commonPart(/* NonInteractive */1) + ("( Cmd_metas " + normalization$2 + " )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_metas " + normalization$2 + " )"); } else { - return commonPart(/* NonInteractive */1) + "( Cmd_metas )"; + return "" + commonPart(/* NonInteractive */1) + "( Cmd_metas )"; } case /* SearchAbout */3 : var normalization$3 = Command$AgdaModeVscode.Normalization.encode(request._0); var content = Parser$AgdaModeVscode.userInput(request._1); - return commonPart(/* NonInteractive */1) + ("( Cmd_search_about_toplevel " + normalization$3 + " \"" + content + "\" )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_search_about_toplevel " + normalization$3 + " \"" + content + "\" )"); case /* Give */4 : var goal = request._0; var index$1 = String(goal.index); var content$1 = Parser$AgdaModeVscode.userInput(Goal$AgdaModeVscode.getContent(goal, $$document)); var range = buildRange(goal); if (Util$AgdaModeVscode.Version.gte(version, "2.5.3")) { - return commonPart(/* NonInteractive */1) + ("( Cmd_give WithoutForce " + index$1 + " " + range + " \"" + content$1 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_give WithoutForce " + index$1 + " " + range + " \"" + content$1 + "\" )"); } else { - return commonPart(/* NonInteractive */1) + ("( Cmd_give " + index$1 + " " + range + " \"" + content$1 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_give " + index$1 + " " + range + " \"" + content$1 + "\" )"); } case /* Refine */5 : var goal$1 = request._0; var index$2 = String(goal$1.index); var content$2 = Parser$AgdaModeVscode.userInput(Goal$AgdaModeVscode.getContent(goal$1, $$document)); var range$1 = buildRange(goal$1); - return commonPart(/* NonInteractive */1) + ("( Cmd_refine_or_intro False " + index$2 + " " + range$1 + " \"" + content$2 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_refine_or_intro False " + index$2 + " " + range$1 + " \"" + content$2 + "\" )"); case /* ElaborateAndGive */6 : var index$3 = String(request._2.index); var normalization$4 = Command$AgdaModeVscode.Normalization.encode(request._0); var content$3 = Parser$AgdaModeVscode.userInput(request._1); - return commonPart(/* NonInteractive */1) + ("( Cmd_elaborate_give " + normalization$4 + " " + index$3 + " noRange \"" + content$3 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_elaborate_give " + normalization$4 + " " + index$3 + " noRange \"" + content$3 + "\" )"); case /* Auto */7 : var goal$2 = request._0; var index$4 = String(goal$2.index); var content$4 = Parser$AgdaModeVscode.userInput(Goal$AgdaModeVscode.getContent(goal$2, $$document)); var range$2 = buildRange(goal$2); if (Util$AgdaModeVscode.Version.gte(version, "2.6.0.1")) { - return commonPart(/* NonInteractive */1) + ("( Cmd_autoOne " + index$4 + " " + range$2 + " \"" + content$4 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_autoOne " + index$4 + " " + range$2 + " \"" + content$4 + "\" )"); } else { - return commonPart(/* NonInteractive */1) + ("( Cmd_auto " + index$4 + " " + range$2 + " \"" + content$4 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_auto " + index$4 + " " + range$2 + " \"" + content$4 + "\" )"); } case /* Case */8 : var goal$3 = request._0; var index$5 = String(goal$3.index); var content$5 = Parser$AgdaModeVscode.userInput(Goal$AgdaModeVscode.getContent(goal$3, $$document)); var range$3 = buildRange(goal$3); - return commonPart(/* NonInteractive */1) + ("( Cmd_make_case " + index$5 + " " + range$3 + " \"" + content$5 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_make_case " + index$5 + " " + range$3 + " \"" + content$5 + "\" )"); case /* HelperFunctionType */9 : var index$6 = String(request._2.index); var normalization$5 = Command$AgdaModeVscode.Normalization.encode(request._0); var content$6 = Parser$AgdaModeVscode.userInput(request._1); - return commonPart(/* NonInteractive */1) + ("( Cmd_helper_function " + normalization$5 + " " + index$6 + " noRange \"" + content$6 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_helper_function " + normalization$5 + " " + index$6 + " noRange \"" + content$6 + "\" )"); case /* InferType */10 : var index$7 = String(request._2.index); var normalization$6 = Command$AgdaModeVscode.Normalization.encode(request._0); var content$7 = Parser$AgdaModeVscode.userInput(request._1); - return commonPart(/* NonInteractive */1) + ("( Cmd_infer " + normalization$6 + " " + index$7 + " noRange \"" + content$7 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_infer " + normalization$6 + " " + index$7 + " noRange \"" + content$7 + "\" )"); case /* InferTypeGlobal */11 : var normalization$7 = Command$AgdaModeVscode.Normalization.encode(request._0); var content$8 = Parser$AgdaModeVscode.userInput(request._1); - return commonPart(/* None */0) + ("( Cmd_infer_toplevel " + normalization$7 + " \"" + content$8 + "\" )"); + return "" + commonPart(/* None */0) + ("( Cmd_infer_toplevel " + normalization$7 + " \"" + content$8 + "\" )"); case /* Context */12 : var index$8 = String(request._1.index); var normalization$8 = Command$AgdaModeVscode.Normalization.encode(request._0); - return commonPart(/* NonInteractive */1) + ("( Cmd_context " + normalization$8 + " " + index$8 + " noRange \"\" )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_context " + normalization$8 + " " + index$8 + " noRange \"\" )"); case /* GoalType */13 : var index$9 = String(request._1.index); var normalization$9 = Command$AgdaModeVscode.Normalization.encode(request._0); - return commonPart(/* NonInteractive */1) + ("( Cmd_goal_type " + normalization$9 + " " + index$9 + " noRange \"\" )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_goal_type " + normalization$9 + " " + index$9 + " noRange \"\" )"); case /* GoalTypeAndContext */14 : var index$10 = String(request._1.index); var normalization$10 = Command$AgdaModeVscode.Normalization.encode(request._0); - return commonPart(/* NonInteractive */1) + ("( Cmd_goal_type_context " + normalization$10 + " " + index$10 + " noRange \"\" )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_goal_type_context " + normalization$10 + " " + index$10 + " noRange \"\" )"); case /* GoalTypeContextAndInferredType */15 : var index$11 = String(request._2.index); var normalization$11 = Command$AgdaModeVscode.Normalization.encode(request._0); var content$9 = Parser$AgdaModeVscode.userInput(request._1); - return commonPart(/* NonInteractive */1) + ("( Cmd_goal_type_context_infer " + normalization$11 + " " + index$11 + " noRange \"" + content$9 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_goal_type_context_infer " + normalization$11 + " " + index$11 + " noRange \"" + content$9 + "\" )"); case /* GoalTypeContextAndCheckedType */16 : var index$12 = String(request._2.index); var normalization$12 = Command$AgdaModeVscode.Normalization.encode(request._0); var content$10 = Parser$AgdaModeVscode.userInput(request._1); - return commonPart(/* NonInteractive */1) + ("( Cmd_goal_type_context_check " + normalization$12 + " " + index$12 + " noRange \"" + content$10 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_goal_type_context_check " + normalization$12 + " " + index$12 + " noRange \"" + content$10 + "\" )"); case /* ModuleContents */17 : var index$13 = String(request._2.index); var normalization$13 = Command$AgdaModeVscode.Normalization.encode(request._0); var content$11 = Parser$AgdaModeVscode.userInput(request._1); - return commonPart(/* NonInteractive */1) + ("( Cmd_show_module_contents " + normalization$13 + " " + index$13 + " noRange \"" + content$11 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_show_module_contents " + normalization$13 + " " + index$13 + " noRange \"" + content$11 + "\" )"); case /* ModuleContentsGlobal */18 : var normalization$14 = Command$AgdaModeVscode.Normalization.encode(request._0); var content$12 = Parser$AgdaModeVscode.userInput(request._1); - return commonPart(/* None */0) + ("( Cmd_show_module_contents_toplevel " + normalization$14 + " \"" + content$12 + "\" )"); + return "" + commonPart(/* None */0) + ("( Cmd_show_module_contents_toplevel " + normalization$14 + " \"" + content$12 + "\" )"); case /* ComputeNormalForm */19 : var computeMode = request._0; var index$14 = String(request._2.index); @@ -232,9 +233,9 @@ function encode($$document, version, filepath, backend, libraryPath, highlightin var computeMode$1 = Command$AgdaModeVscode.ComputeMode.encode(computeMode); var content$13 = Parser$AgdaModeVscode.userInput(request._1); if (Util$AgdaModeVscode.Version.gte(version, "2.5.2")) { - return commonPart(/* NonInteractive */1) + ("( Cmd_compute " + computeMode$1 + " " + index$14 + " noRange \"" + content$13 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_compute " + computeMode$1 + " " + index$14 + " noRange \"" + content$13 + "\" )"); } else { - return commonPart(/* NonInteractive */1) + ("( Cmd_compute " + ignoreAbstract + " " + index$14 + " noRange \"" + content$13 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_compute " + ignoreAbstract + " " + index$14 + " noRange \"" + content$13 + "\" )"); } case /* ComputeNormalFormGlobal */20 : var computeMode$2 = request._0; @@ -242,17 +243,17 @@ function encode($$document, version, filepath, backend, libraryPath, highlightin var computeMode$3 = Command$AgdaModeVscode.ComputeMode.encode(computeMode$2); var content$14 = Parser$AgdaModeVscode.userInput(request._1); if (Util$AgdaModeVscode.Version.gte(version, "2.5.2")) { - return commonPart(/* NonInteractive */1) + ("( Cmd_compute_toplevel " + computeMode$3 + " \"" + content$14 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_compute_toplevel " + computeMode$3 + " \"" + content$14 + "\" )"); } else { - return commonPart(/* NonInteractive */1) + ("( Cmd_compute_toplevel " + ignoreAbstract$1 + " \"" + content$14 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_compute_toplevel " + ignoreAbstract$1 + " \"" + content$14 + "\" )"); } case /* WhyInScope */21 : var index$15 = String(request._1.index); var content$15 = Parser$AgdaModeVscode.userInput(request._0); - return commonPart(/* NonInteractive */1) + ("( Cmd_why_in_scope " + index$15 + " noRange \"" + content$15 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + ("( Cmd_why_in_scope " + index$15 + " noRange \"" + content$15 + "\" )"); case /* WhyInScopeGlobal */22 : var content$16 = Parser$AgdaModeVscode.userInput(request._0); - return commonPart(/* None */0) + ("( Cmd_why_in_scope_toplevel \"" + content$16 + "\" )"); + return "" + commonPart(/* None */0) + ("( Cmd_why_in_scope_toplevel \"" + content$16 + "\" )"); } } diff --git a/lib/js/src/Response.bs.js b/lib/js/src/Response.bs.js index eba012c4..5f19942d 100644 --- a/lib/js/src/Response.bs.js +++ b/lib/js/src/Response.bs.js @@ -1,6 +1,8 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; +var Js_array = require("rescript/lib/js/js_array.js"); +var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Pervasives = require("rescript/lib/js/pervasives.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); @@ -114,7 +116,7 @@ function parse(xs) { if (match.TAG !== /* A */0) { return ; } - var payload = match._0.replace(/\\r\\n|\\n/g, "\n"); + var payload = Js_string.replaceByRe(/\\\\r\\\\n|\\\\n/g, "\n", match._0); var match$1 = Belt_Array.get(xs, 0); if (match$1 === undefined) { return ; @@ -758,13 +760,13 @@ function parse$1(tokens) { [Symbol.for("name")]: "Ok" }; } - var pulp = match$6._0.split(","); + var pulp = Js_string.split(",", match$6._0); return { TAG: 0, _0: { TAG: 3, - _0: pulp.includes("ShowImplicit"), - _1: pulp.includes("Checked"), + _0: Js_array.includes("ShowImplicit", pulp), + _1: Js_array.includes("Checked", pulp), [Symbol.for("name")]: "Status" }, [Symbol.for("name")]: "Ok" @@ -863,7 +865,7 @@ function parse$1(tokens) { exit$1 = 2; } if (exit$1 === 2) { - var info = parse(xs.slice(1)); + var info = parse(Js_array.sliceFrom(1, xs)); if (info !== undefined) { return { TAG: 0, @@ -921,7 +923,7 @@ function parse$2(tokens) { return Belt_Result.map(parse$1(xs), (function (response) { return { TAG: 1, - _0: Caml_format.caml_int_of_string(priority$1), + _0: Caml_format.int_of_string(priority$1), _1: response, [Symbol.for("name")]: "Last" }; diff --git a/lib/js/src/State.bs.js b/lib/js/src/State.bs.js index 43814240..03fd3356 100644 --- a/lib/js/src/State.bs.js +++ b/lib/js/src/State.bs.js @@ -27,7 +27,6 @@ function onDownload(state, $$event) { var accum = $$event._0; var message = total > 10485760 ? "Downloading ( " + String(accum / 1048576 | 0) + " MB / " + String(total / 1048576 | 0) + " MB )" : "Downloading ( " + String(accum / 1024 | 0) + " KB / " + String(total / 1024 | 0) + " MB )"; State__View$AgdaModeVscode.Panel.displayStatus(state, message); - } function sendRequest(state, handleResponse, request) { diff --git a/lib/js/src/State/State__Command.bs.js b/lib/js/src/State/State__Command.bs.js index 5924da6f..6700cd0a 100644 --- a/lib/js/src/State/State__Command.bs.js +++ b/lib/js/src/State/State__Command.bs.js @@ -6,6 +6,8 @@ var Curry = require("rescript/lib/js/curry.js"); var VSCode = require("rescript-vscode/lib/js/src/VSCode.bs.js"); var Vscode = require("vscode"); var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); +var Js_array = require("rescript/lib/js/js_array.js"); +var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var IM$AgdaModeVscode = require("../InputMethod/IM.bs.js"); @@ -722,13 +724,7 @@ function dispatchCommand(state, _command) { [Symbol.for("name")]: "Ok" }); } else { - return $$Promise.map(State$AgdaModeVscode.destroy(state, true), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); + return State$AgdaModeVscode.destroy(state, true); } } switch ($$event.TAG | 0) { @@ -847,7 +843,7 @@ function dispatchCommand(state, _command) { var removeRoot = function (path) { var obj = Path.parse(path); var rootLength = obj.root.length; - var newDir = obj.dir.slice(rootLength); + var newDir = Js_string.sliceToEnd(rootLength, obj.dir); return Path.format({ root: "", dir: newDir, @@ -860,7 +856,7 @@ function dispatchCommand(state, _command) { var ranges = Belt_Array.map(match$13._1, Editor$AgdaModeVscode.$$Range.fromAgdaInterval); Editor$AgdaModeVscode.$$Selection.setMany(state.editor, ranges); Belt_Option.forEach(Belt_Array.get(ranges, 0), (function (range) { - return VSCode.TextEditor.revealRange(state.editor, range, undefined); + VSCode.TextEditor.revealRange(state.editor, range, undefined); })); } return $$Promise.resolved({ @@ -870,11 +866,11 @@ function dispatchCommand(state, _command) { }); } var index = link._0; - var goal$6 = state.goals.find((function(index){ + var goal$6 = Js_array.find((function(index){ return function (goal) { return goal.index === index; } - }(index))); + }(index)), state.goals); if (goal$6 !== undefined) { Goal$AgdaModeVscode.setCursor(goal$6, state.editor); } @@ -1104,7 +1100,6 @@ function dispatchCommand(state, _command) { Belt_Array.forEach(Editor$AgdaModeVscode.Cursor.getMany(state.editor), (function(activationKey){ return function (point) { Editor$AgdaModeVscode.$$Text.insert(state.document, point, activationKey); - } }(activationKey))); return $$Promise.resolved({ diff --git a/lib/js/src/State/State__Goal.bs.js b/lib/js/src/State/State__Goal.bs.js index 39f9b35d..d9a78484 100644 --- a/lib/js/src/State/State__Goal.bs.js +++ b/lib/js/src/State/State__Goal.bs.js @@ -6,6 +6,8 @@ var Curry = require("rescript/lib/js/curry.js"); var $$String = require("rescript/lib/js/string.js"); var Vscode = require("vscode"); var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); +var Js_array = require("rescript/lib/js/js_array.js"); +var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Goal$AgdaModeVscode = require("../Goal.bs.js"); @@ -18,7 +20,7 @@ function getOffsets(state) { return Belt_Array.map(state.goals, (function (goal) { var match = goal.interval; var from = match[0]; - return from + Caml.caml_int_min(3, (match[1] - from | 0) / 2 | 0) | 0; + return from + Caml.int_min(3, (match[1] - from | 0) / 2 | 0) | 0; })); } @@ -35,10 +37,10 @@ function caseSplitAux($$document, goal) { var n = 0; var i = start; while(i < string.length && !$$break) { - var $$char = string.charAt(i); + var $$char = Js_string.charAt(i, string); switch ($$char) { - case "\t" : - case "\f" : + case " " : + case " " : case " " : n = n + 1 | 0; break; @@ -54,7 +56,7 @@ function caseSplitAux($$document, goal) { while(i >= 0 && bracketCount >= 0) { var i$p = i; if (i$p !== 0) { - var match = textBeforeGoal.charAt(i$p - 1 | 0); + var match = Js_string.charAt(i$p - 1 | 0, textBeforeGoal); switch (match) { case "{" : bracketCount = bracketCount - 1 | 0; @@ -69,17 +71,17 @@ function caseSplitAux($$document, goal) { i = i - 1 | 0; }; var lastOpenCurlyBracketOffset = i + 1 | 0; - var n = textBeforeGoal.lastIndexOf(";"); + var n = Js_string.lastIndexOf(";", textBeforeGoal); var lastSemicolonOffset = ( n !== -1 ? n : 0 ) + 1 | 0; - var n$1 = textBeforeGoal.lastIndexOf("where"); + var n$1 = Js_string.lastIndexOf("where", textBeforeGoal); var lastWhereTokenOffset = ( n$1 !== -1 ? n$1 : 0 ) + 5 | 0; - var lastLineBreakOffset = Caml.caml_int_max(0, Caml.caml_int_max(textBeforeGoal.lastIndexOf("\r"), textBeforeGoal.lastIndexOf("\n"))) + 1 | 0; + var lastLineBreakOffset = Caml.int_max(0, Caml.int_max(Js_string.lastIndexOf("\r", textBeforeGoal), Js_string.lastIndexOf("\n", textBeforeGoal))) + 1 | 0; var inWhereClause = lastWhereTokenOffset > lastOpenCurlyBracketOffset; - var offset = Caml.caml_int_max(lastLineBreakOffset > lastSemicolonOffset ? lastLineBreakOffset : lastSemicolonOffset, lastWhereTokenOffset > lastOpenCurlyBracketOffset ? lastWhereTokenOffset : lastOpenCurlyBracketOffset); + var offset = Caml.int_max(lastLineBreakOffset > lastSemicolonOffset ? lastLineBreakOffset : lastSemicolonOffset, lastWhereTokenOffset > lastOpenCurlyBracketOffset ? lastWhereTokenOffset : lastOpenCurlyBracketOffset); var caseStart = nextWordBoundary(offset, textBeforeGoal); var caseEnd = goal.interval[1]; var range$1 = [ @@ -101,13 +103,13 @@ function indentationWidth($$document, goal) { var indentedBy = function (s) { var n = 0; for(var i = 0 ,i_finish = s.length; i < i_finish; ++i){ - var match = s.charAt(i); + var match = Js_string.charAt(i, s); var exit = 0; switch (match) { - case "\t" : - case "\n" : - case "\f" : + case " " : + case " " : case " " : + case "\n" : exit = 1; break; default: @@ -130,7 +132,7 @@ function indentationWidth($$document, goal) { function jumpToOffset(state, offset) { var point = state.document.positionAt(offset); var range = new Vscode.Range(point, point); - return Editor$AgdaModeVscode.reveal(state.editor, range); + Editor$AgdaModeVscode.reveal(state.editor, range); } function updateIntervals(state) { @@ -138,14 +140,14 @@ function updateIntervals(state) { return goal.index; })); var diffs = Goal$AgdaModeVscode.generateDiffs(state.document, indices); - return Belt_Array.forEachWithIndex(diffs, (function (i, diff) { - var goal = Belt_Array.get(state.goals, i); - if (goal !== undefined) { - goal.interval = diff.modifiedInterval; - return ; - } - - })); + Belt_Array.forEachWithIndex(diffs, (function (i, diff) { + var goal = Belt_Array.get(state.goals, i); + if (goal !== undefined) { + goal.interval = diff.modifiedInterval; + return ; + } + + })); } function modify(state, goal, f) { @@ -236,7 +238,6 @@ function instantiate(state, indices) { })); state.goals = goals; - })); } @@ -256,22 +257,22 @@ function pointed(state) { } function placeCursorAtFirstNewGoal(state, rewriteText, rewriteRange) { - var splittedLines = rewriteText.split("\n"); - return Belt_Option.forEach(Belt_Array.get(splittedLines, 0), (function (line) { - var col = line.length - 1 | 0; - var lastChar = line.charAt(col); - if (lastChar !== "?") { - return ; - } - var position = rewriteRange.start.translate(0, col); - return Editor$AgdaModeVscode.Cursor.set(state.editor, position); - })); + var splittedLines = Js_string.split("\n", rewriteText); + Belt_Option.forEach(Belt_Array.get(splittedLines, 0), (function (line) { + var col = line.length - 1 | 0; + var lastChar = Js_string.charAt(col, line); + if (lastChar !== "?") { + return ; + } + var position = rewriteRange.start.translate(0, col); + Editor$AgdaModeVscode.Cursor.set(state.editor, position); + })); } function replaceWithLambda(state, goal, lines) { var match = caseSplitAux(state.document, goal); var indentWidth = match[1]; - var rewriteText = match[0] ? lines.join("\n" + " ".repeat(indentWidth)) : lines.join("\n" + (" ".repeat(indentWidth - 2 | 0) + "; ")); + var rewriteText = match[0] ? Js_array.joinWith("\n" + Js_string.repeat(indentWidth, " "), lines) : Js_array.joinWith("\n" + (Js_string.repeat(indentWidth - 2 | 0, " ") + "; "), lines); var rewriteRange = Editor$AgdaModeVscode.$$Range.fromInterval(state.document, match[2]); return $$Promise.flatMap(Editor$AgdaModeVscode.$$Text.replace(state.document, rewriteRange, rewriteText), (function (x) { if (x) { @@ -290,8 +291,8 @@ function replaceWithLambda(state, goal, lines) { function replaceWithLines(state, goal, lines) { var match = indentationWidth(state.document, goal); - var indentation = " ".repeat(match[0]); - var indentedLines = indentation + lines.join("\n" + indentation); + var indentation = Js_string.repeat(match[0], " "); + var indentedLines = indentation + Js_array.joinWith("\n" + indentation, lines); var start = Editor$AgdaModeVscode.Position.fromOffset(state.document, goal.interval[0]); var startLineNo = start.line; var startLineRange = state.document.lineAt(startLineNo).range; @@ -334,9 +335,9 @@ function removeBoundaryAndDestroy(state, goal) { function redecorate(state) { updateIntervals(state); - return Belt_Array.forEach(state.goals, (function (goal) { - return Goal$AgdaModeVscode.refreshDecoration(goal, state.editor); - })); + Belt_Array.forEach(state.goals, (function (goal) { + Goal$AgdaModeVscode.refreshDecoration(goal, state.editor); + })); } var Module = { diff --git a/lib/js/src/State/State__InputMethod.bs.js b/lib/js/src/State/State__InputMethod.bs.js index 2e06979f..2f5bc720 100644 --- a/lib/js/src/State/State__InputMethod.bs.js +++ b/lib/js/src/State/State__InputMethod.bs.js @@ -3,6 +3,7 @@ var Curry = require("rescript/lib/js/curry.js"); var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); +var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); var IM$AgdaModeVscode = require("../InputMethod/IM.bs.js"); @@ -40,7 +41,6 @@ function handle(state, output) { })); return $$Promise.map(Editor$AgdaModeVscode.$$Text.batchReplace(state.document, replacements), (function (param) { Curry._1(resolve, undefined); - })); } }; @@ -102,7 +102,6 @@ function handle$1(state, output) { var start = match[0]; replaced.contents = replaced.contents.slice(0, delta.contents + start | 0) + t + replaced.contents.slice(delta.contents + end_ | 0); delta.contents = (delta.contents + t.length | 0) - (end_ - start | 0) | 0; - }; Belt_Array.forEach(kind._0, replace); previous.contents = replaced.contents; @@ -121,10 +120,10 @@ function keyUpdate(state, next) { var deviseChange = function (previous, next) { var inputLength = next.length; var init = function (s) { - return s.substring(0, s.length - 1 | 0); + return Js_string.substring(0, s.length - 1 | 0, s); }; var last = function (s) { - return s.substring(s.length - 1 | 0); + return Js_string.substringToEnd(s.length - 1 | 0, s); }; if (init(next) === previous) { return { @@ -158,7 +157,7 @@ function keyUpdate(state, next) { function activate$1(state, input) { var cursorOffset = input.length - 1 | 0; - var input$1 = input.substring(0, cursorOffset); + var input$1 = Js_string.substring(0, cursorOffset, input); previous.contents = input$1; return runAndHandle$1(state, { TAG: 0, @@ -201,7 +200,6 @@ function activateEditorIM(state) { case /* Editor */0 : Belt_Array.forEach(Editor$AgdaModeVscode.Cursor.getMany(state.editor), (function (point) { Editor$AgdaModeVscode.$$Text.insert(state.document, point, activationKey); - })); return runAndHandle(state, /* Deactivate */0); case /* Prompt */1 : @@ -218,7 +216,7 @@ function keyUpdatePromptIM(state, input) { var match = isActivated(state); switch (match) { case /* Editor */0 : - if (input.endsWith(activationKey)) { + if (Js_string.endsWith(activationKey, input)) { return $$Promise.flatMap(runAndHandle(state, /* Deactivate */0), (function (param) { return activate$1(state, input); })); @@ -228,7 +226,7 @@ function keyUpdatePromptIM(state, input) { case /* Prompt */1 : return keyUpdate(state, input); case /* None */2 : - if (input.endsWith(activationKey)) { + if (Js_string.endsWith(activationKey, input)) { return activate$1(state, input); } else { return State__View$AgdaModeVscode.Panel.updatePromptIM(state, input); @@ -306,10 +304,10 @@ function insertChar(state, $$char) { var match = isActivated(state); switch (match) { case /* Editor */0 : - var $$char$1 = $$char.charAt(0); + var $$char$1 = Js_string.charAt(0, $$char); var positions = Editor$AgdaModeVscode.Cursor.getMany(state.editor); return $$Promise.map(Editor$AgdaModeVscode.$$Text.batchInsert(state.document, positions, $$char$1), (function (param) { - return Editor$AgdaModeVscode.focus(state.document); + Editor$AgdaModeVscode.focus(state.document); })); case /* Prompt */1 : return keyUpdate(state, previous.contents + $$char); diff --git a/lib/js/src/State/State__Response.bs.js b/lib/js/src/State/State__Response.bs.js index a76fc20b..eb1f845c 100644 --- a/lib/js/src/State/State__Response.bs.js +++ b/lib/js/src/State/State__Response.bs.js @@ -4,6 +4,7 @@ var Curry = require("rescript/lib/js/curry.js"); var Vscode = require("vscode"); var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); +var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Chan$AgdaModeVscode = require("../Util/Chan.bs.js"); var Item$AgdaModeVscode = require("../View/Component/Item.bs.js"); @@ -334,7 +335,7 @@ function handle$1(state, dispatchCommand, response) { } else { var content = give._0; handleResponse = $$Promise.map($$Promise.flatMap(State__Goal$AgdaModeVscode.modify(state, goal, (function (param) { - return content.replace(/\\n/g, "\n"); + return Js_string.replaceByRe(/\\\\n/g, "\n", content); })), (function (param) { return State__Goal$AgdaModeVscode.removeBoundaryAndDestroy(state, goal); })), (function (param) { @@ -485,7 +486,7 @@ function handle$1(state, dispatchCommand, response) { } } return $$Promise.tapOk(handleResponse, (function (param) { - return Chan$AgdaModeVscode.emit(state.channels.responseHandled, response); + Chan$AgdaModeVscode.emit(state.channels.responseHandled, response); })); } diff --git a/lib/js/src/State/State__Type.bs.js b/lib/js/src/State/State__Type.bs.js index 44ea81df..71278cde 100644 --- a/lib/js/src/State/State__Type.bs.js +++ b/lib/js/src/State/State__Type.bs.js @@ -4,6 +4,7 @@ var Curry = require("rescript/lib/js/curry.js"); var Vscode = require("vscode"); var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); +var Js_array = require("rescript/lib/js/js_array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var WebviewPanel$AgdaModeVscode = require("../View/WebviewPanel.bs.js"); @@ -23,7 +24,7 @@ function kickStart(self) { self.busy = true; return $$Promise.get(Curry._1(thunk, undefined), (function (param) { self.busy = false; - return kickStart(self); + kickStart(self); })); } @@ -35,7 +36,7 @@ function push(self, sendRequestAndHandleResponses, request) { var thunk = function (param) { return $$Promise.tap(Curry._1(sendRequestAndHandleResponses, request), resolve); }; - self.queue.push(thunk); + Js_array.push(thunk, self.queue); kickStart(self); return match[0]; } @@ -70,12 +71,10 @@ function cacheRequest(self, $$event, callback) { $$event._1, callback ]; - } function clearPrompt(self) { self.prompt = undefined; - } function restore(self, view) { @@ -95,7 +94,6 @@ function restore(self, view) { _1: param[1], [Symbol.for("name")]: "Display" }); - })); } } @@ -110,12 +108,10 @@ var ViewCache = { function setPrompt(value) { Vscode.commands.executeCommand("setContext", "agdaModePrompting", value); - } function setIM(value) { Vscode.commands.executeCommand("setContext", "agdaModeTyping", value); - } var Context = { diff --git a/lib/js/src/State/State__View.bs.js b/lib/js/src/State/State__View.bs.js index 3f866b93..a2fa6dee 100644 --- a/lib/js/src/State/State__View.bs.js +++ b/lib/js/src/State/State__View.bs.js @@ -23,7 +23,7 @@ function sendEvent(state, $$event) { } function restore(state) { - return State__Type$AgdaModeVscode.ViewCache.restore(state.panelCache, Singleton$AgdaModeVscode.Panel.make(state.extensionPath)); + State__Type$AgdaModeVscode.ViewCache.restore(state.panelCache, Singleton$AgdaModeVscode.Panel.make(state.extensionPath)); } function display(state, header, body) { @@ -130,7 +130,7 @@ function prompt(state, header, prompt$1, callbackOnPromptSuccess) { return $$Promise.map(Curry._1(callbackOnPromptSuccess, response._0), (function (param) { State__Type$AgdaModeVscode.Context.setPrompt(false); Editor$AgdaModeVscode.focus(state.document); - return State__Type$AgdaModeVscode.ViewCache.clearPrompt(state.panelCache); + State__Type$AgdaModeVscode.ViewCache.clearPrompt(state.panelCache); })); } else { State__Type$AgdaModeVscode.Context.setPrompt(false); @@ -149,7 +149,7 @@ function interruptPrompt(state) { State__Type$AgdaModeVscode.Context.setPrompt(false); Editor$AgdaModeVscode.focus(state.document); State__Type$AgdaModeVscode.ViewCache.clearPrompt(state.panelCache); - return State__Type$AgdaModeVscode.ViewCache.restore(state.panelCache, Singleton$AgdaModeVscode.Panel.make(state.extensionPath)); + State__Type$AgdaModeVscode.ViewCache.restore(state.panelCache, Singleton$AgdaModeVscode.Panel.make(state.extensionPath)); })); } diff --git a/lib/js/src/Tokens.bs.js b/lib/js/src/Tokens.bs.js index bed61c7c..3055bf14 100644 --- a/lib/js/src/Tokens.bs.js +++ b/lib/js/src/Tokens.bs.js @@ -7,6 +7,7 @@ var Curry = require("rescript/lib/js/curry.js"); var Vscode = require("vscode"); var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Caml_obj = require("rescript/lib/js/caml_obj.js"); +var Js_array = require("rescript/lib/js/js_array.js"); var Belt_List = require("rescript/lib/js/belt_List.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Pervasives = require("rescript/lib/js/pervasives.js"); @@ -141,7 +142,7 @@ function parse(x) { } function parseDirectHighlightings(tokens) { - return Belt_Array.keepMap(Belt_Array.map(tokens.slice(2), parse), (function (x) { + return Belt_Array.keepMap(Belt_Array.map(Js_array.sliceFrom(2, tokens), parse), (function (x) { return x; })); } @@ -193,7 +194,6 @@ var Token = { function readAndParse(format) { return $$Promise.map($$Promise.Js.toResult($$Promise.Js.fromBsPromise(Util.promisify(function (prim0, prim1) { Fs.readFile(prim0, prim1); - })(format._0))), (function (x) { if (x.TAG !== /* Ok */0) { return [ @@ -217,7 +217,7 @@ function readAndParse(format) { } var match$1 = Belt_Array.get(tokens, 0); var removeTokenBasedHighlighting = match$1 !== undefined && match$1.TAG === /* A */0 && match$1._0 === "remove" ? true : false; - var tokens$1 = Belt_Array.keepMap(tokens.slice(1), parse); + var tokens$1 = Belt_Array.keepMap(Js_array.sliceFrom(1, tokens), parse); return [ removeTokenBasedHighlighting, tokens$1 @@ -246,62 +246,59 @@ function make(param) { } function insert(self, editor, tokens) { - return Belt_Array.forEach(tokens, (function (info) { - var $$document = editor.document; - var text = Editor$AgdaModeVscode.$$Text.getAll($$document); - var offsetConverter = Agda$AgdaModeVscode.OffsetConverter.make(text); - var startOffset = Agda$AgdaModeVscode.OffsetConverter.convert(offsetConverter, info.start); - var existing = AVLTree$AgdaModeVscode.find(self.tokens, startOffset); - if (existing !== undefined) { - var old = existing[0]; - self.tokens.remove(startOffset); - var newAspects = Caml_obj.caml_equal(old.aspects, info.aspects) ? old.aspects : Belt_Array.concat(old.aspects, info.aspects); - var new_start = old.start; - var new_end_ = old.end_; - var new_isTokenBased = old.isTokenBased; - var new_note = old.note; - var new_source = old.source; - var $$new = { - start: new_start, - end_: new_end_, - aspects: newAspects, - isTokenBased: new_isTokenBased, - note: new_note, - source: new_source - }; - self.tokens.insert(startOffset, [ - $$new, - existing[1] - ]); - return ; - } - var start = Editor$AgdaModeVscode.Position.fromOffset($$document, startOffset); - var end_ = Editor$AgdaModeVscode.Position.fromOffset($$document, Agda$AgdaModeVscode.OffsetConverter.convert(offsetConverter, info.end_)); - var range = new Vscode.Range(start, end_); - self.tokens.insert(startOffset, [ - info, - range - ]); - - })); + Belt_Array.forEach(tokens, (function (info) { + var $$document = editor.document; + var text = Editor$AgdaModeVscode.$$Text.getAll($$document); + var offsetConverter = Agda$AgdaModeVscode.OffsetConverter.make(text); + var startOffset = Agda$AgdaModeVscode.OffsetConverter.convert(offsetConverter, info.start); + var existing = AVLTree$AgdaModeVscode.find(self.tokens, startOffset); + if (existing !== undefined) { + var old = existing[0]; + self.tokens.remove(startOffset); + var newAspects = Caml_obj.equal(old.aspects, info.aspects) ? old.aspects : Belt_Array.concat(old.aspects, info.aspects); + var new_start = old.start; + var new_end_ = old.end_; + var new_isTokenBased = old.isTokenBased; + var new_note = old.note; + var new_source = old.source; + var $$new = { + start: new_start, + end_: new_end_, + aspects: newAspects, + isTokenBased: new_isTokenBased, + note: new_note, + source: new_source + }; + self.tokens.insert(startOffset, [ + $$new, + existing[1] + ]); + return ; + } + var start = Editor$AgdaModeVscode.Position.fromOffset($$document, startOffset); + var end_ = Editor$AgdaModeVscode.Position.fromOffset($$document, Agda$AgdaModeVscode.OffsetConverter.convert(offsetConverter, info.end_)); + var range = new Vscode.Range(start, end_); + self.tokens.insert(startOffset, [ + info, + range + ]); + })); } function addEmacsFilePath(self, filepath) { - self.tempFiles.push({ + Js_array.push({ TAG: 0, _0: filepath, [Symbol.for("name")]: "Emacs" - }); - + }, self.tempFiles); } function addJSONFilePath(self, filepath) { - self.tempFiles.push({ + Js_array.push({ TAG: 1, _0: filepath, [Symbol.for("name")]: "JSON" - }); - + }, self.tempFiles); } function readTempFiles(self, editor) { @@ -312,7 +309,6 @@ function readTempFiles(self, editor) { })), (function (tokens) { insert(self, editor, tokens); self.tempFiles = []; - })); } @@ -321,10 +317,8 @@ function clear(self) { Fs.unlink(format._0, (function (param) { })); - })); self.tokens = new BinarySearchTree.BinarySearchTree(); - } function toArray(self) { diff --git a/lib/js/src/Util/AVLTree.bs.js b/lib/js/src/Util/AVLTree.bs.js index ec96a625..a22f8e5c 100644 --- a/lib/js/src/Util/AVLTree.bs.js +++ b/lib/js/src/Util/AVLTree.bs.js @@ -1,6 +1,7 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; +var Js_array = require("rescript/lib/js/js_array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); @@ -52,8 +53,7 @@ function toArray(self) { var accum = []; self.traverseInOrder(function (node) { var value = node.getValue(); - accum.push(value); - + Js_array.push(value, accum); }); return accum; } diff --git a/lib/js/src/Util/Chan.bs.js b/lib/js/src/Util/Chan.bs.js index beb1edd2..2c39e09c 100644 --- a/lib/js/src/Util/Chan.bs.js +++ b/lib/js/src/Util/Chan.bs.js @@ -4,57 +4,216 @@ var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Eventemitter3 = require("eventemitter3"); -function on(prim0, prim1, prim2) { - return prim2.addListener(prim0, prim1); +function onNewListener(arg1, obj) { + return obj.on("newListener", arg1); } -function on2(prim0, prim1, prim2) { - return prim2.addListener(prim0, prim1); +function onNewListener2(arg1, obj) { + return obj.on("newListener", arg1); } -function on3(prim0, prim1, prim2) { - return prim2.addListener(prim0, prim1); +function onNewListener3(arg1, obj) { + return obj.on("newListener", arg1); } -function removeListener(prim0, prim1, prim2) { - return prim2.off(prim0, prim1); +function onceNewListener(arg1, obj) { + return obj.once("newListener", arg1); } -function removeListener2(prim0, prim1, prim2) { - return prim2.off(prim0, prim1); +function onceNewListener2(arg1, obj) { + return obj.once("newListener", arg1); } -function removeListener3(prim0, prim1, prim2) { - return prim2.off(prim0, prim1); +function onceNewListener3(arg1, obj) { + return obj.once("newListener", arg1); +} + +function onRemoveListener(arg1, obj) { + return obj.on("removeListener", arg1); +} + +function onceRemoveListener(arg1, obj) { + return obj.once("removeListener", arg1); +} + +function addListener(arg1, arg2, obj) { + return obj.addListener(arg1, arg2); +} + +function addListener2(arg1, arg2, obj) { + return obj.addListener(arg1, arg2); +} + +function addListener3(arg1, arg2, obj) { + return obj.addListener(arg1, arg2); +} + +function emit0(arg1, obj) { + return obj.emit(arg1); +} + +function emit(arg1, arg2, obj) { + return obj.emit(arg1, arg2); +} + +function emit2(arg1, arg2, arg3, obj) { + return obj.emit(arg1, arg2, arg3); +} + +function emit3(arg1, arg2, arg3, arg4, obj) { + return obj.emit(arg1, arg2, arg3, arg4); +} + +function eventNames(arg1, obj) { + return obj.eventNames(arg1); +} + +function listenerCount(arg1, obj) { + return obj.listenerCount(arg1); +} + +function listeners(arg1, obj) { + return obj.listeners(arg1); +} + +function listeners2(arg1, obj) { + return obj.listeners(arg1); +} + +function listeners3(arg1, obj) { + return obj.listeners(arg1); +} + +function off(arg1, arg2, obj) { + return obj.off(arg1, arg2); +} + +function off2(arg1, arg2, obj) { + return obj.off(arg1, arg2); +} + +function off3(arg1, arg2, obj) { + return obj.off(arg1, arg2); +} + +function once(arg1, arg2, obj) { + return obj.once(arg1, arg2); +} + +function once2(arg1, arg2, obj) { + return obj.once(arg1, arg2); +} + +function once3(arg1, arg2, obj) { + return obj.once(arg1, arg2); +} + +function prependListener(arg1, arg2, obj) { + return obj.prependListener(arg1, arg2); +} + +function prependListener2(arg1, arg2, obj) { + return obj.prependListener(arg1, arg2); +} + +function prependListener3(arg1, arg2, obj) { + return obj.prependListener(arg1, arg2); +} + +function prependOnceListener(arg1, arg2, obj) { + return obj.prependOnceListener(arg1, arg2); +} + +function prependOnceListener2(arg1, arg2, obj) { + return obj.prependOnceListener(arg1, arg2); +} + +function prependOnceListener3(arg1, arg2, obj) { + return obj.prependOnceListener(arg1, arg2); +} + +function removeAllListeners_(arg1, obj) { + return obj.removeAllListeners(arg1); +} + +function setMaxListeners(arg1, obj) { + return obj.setMaxListeners(arg1); +} + +function rawListeners(arg1, obj) { + return obj.rawListeners(arg1); +} + +function rawListeners2(arg1, obj) { + return obj.rawListeners(arg1); +} + +function rawListeners3(arg1, obj) { + return obj.rawListeners(arg1); } var EventEmitter3 = { - on: on, - on2: on2, - on3: on3, - removeListener: removeListener, - removeListener2: removeListener2, - removeListener3: removeListener3 + onNewListener: onNewListener, + onNewListener2: onNewListener2, + onNewListener3: onNewListener3, + onceNewListener: onceNewListener, + onceNewListener2: onceNewListener2, + onceNewListener3: onceNewListener3, + onRemoveListener: onRemoveListener, + onceRemoveListener: onceRemoveListener, + addListener: addListener, + addListener2: addListener2, + addListener3: addListener3, + emit0: emit0, + emit: emit, + emit2: emit2, + emit3: emit3, + eventNames: eventNames, + listenerCount: listenerCount, + listeners: listeners, + listeners2: listeners2, + listeners3: listeners3, + off: off, + off2: off2, + off3: off3, + on: addListener, + on2: addListener2, + on3: addListener3, + once: once, + once2: once2, + once3: once3, + prependListener: prependListener, + prependListener2: prependListener2, + prependListener3: prependListener3, + prependOnceListener: prependOnceListener, + prependOnceListener2: prependOnceListener2, + prependOnceListener3: prependOnceListener3, + removeAllListeners_: removeAllListeners_, + removeListener: off, + removeListener2: off2, + removeListener3: off3, + setMaxListeners: setMaxListeners, + rawListeners: rawListeners, + rawListeners2: rawListeners2, + rawListeners3: rawListeners3 }; function make(prim) { return new Eventemitter3.EventEmitter(); } -function emit(self, x) { +function emit$1(self, x) { self.emit("data", x); - } -function on$1(self, callback) { +function on(self, callback) { self.addListener("data", callback); return function (param) { self.off("data", callback); - }; } -function once(self) { +function once$1(self) { var match = $$Promise.pending(undefined); self.once("data", match[1]); return match[0]; @@ -62,22 +221,21 @@ function once(self) { function destroy(self) { self.removeAllListeners(); - } var Module = { make: make, - emit: emit, - on: on$1, - once: once, + emit: emit$1, + on: on, + once: once$1, destroy: destroy }; exports.EventEmitter3 = EventEmitter3; exports.Module = Module; exports.make = make; -exports.emit = emit; -exports.on = on$1; -exports.once = once; +exports.emit = emit$1; +exports.on = on; +exports.once = once$1; exports.destroy = destroy; /* Promise Not a pure module */ diff --git a/lib/js/src/Util/Util.bs.js b/lib/js/src/Util/Util.bs.js index da24a4d4..46cb0905 100644 --- a/lib/js/src/Util/Util.bs.js +++ b/lib/js/src/Util/Util.bs.js @@ -4,7 +4,9 @@ var Curry = require("rescript/lib/js/curry.js"); var React = require("react"); var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); +var Js_array = require("rescript/lib/js/js_array.js"); var Belt_List = require("rescript/lib/js/belt_List.js"); +var Js_string = require("rescript/lib/js/js_string.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); var Json_decode = require("@glennsl/bs-json/lib/js/src/Json_decode.bs.js"); var Caml_exceptions = require("rescript/lib/js/caml_exceptions.js"); @@ -247,7 +249,7 @@ var React$1 = { var partial_arg = /-.*/; function trim(param) { - return param.replace(partial_arg, ""); + return Js_string.replaceByRe(partial_arg, "", param); } function compare(a, b) { @@ -275,7 +277,7 @@ var Version = { }; function array(xs) { - return "[" + (xs.join(", ") + "]"); + return "[" + (Js_array.joinWith(", ", xs) + "]"); } function list(xs) { @@ -363,6 +365,36 @@ var List = { dropWhile: dropWhile }; +function toPromise(p) { + return $$Promise.map($$Promise.Js.toResult($$Promise.Js.fromBsPromise(p)), (function (x) { + if (x.TAG !== /* Ok */0) { + return { + TAG: 1, + _0: x._0, + [Symbol.for("name")]: "Error" + }; + } + var x$1 = x._0; + if (x$1.TAG === /* Ok */0) { + return { + TAG: 0, + _0: x$1._0, + [Symbol.for("name")]: "Ok" + }; + } else { + return { + TAG: 1, + _0: x$1._0, + [Symbol.for("name")]: "Error" + }; + } + })); +} + +var P = { + toPromise: toPromise +}; + var React$p; exports.Result = Result; @@ -377,4 +409,5 @@ exports.oneByOne$p = oneByOne$p; exports.oneByOne = oneByOne; exports.JsError = JsError; exports.List = List; +exports.P = P; /* react Not a pure module */ diff --git a/lib/js/src/View/Common.bs.js b/lib/js/src/View/Common.bs.js index e16f3342..fd381743 100644 --- a/lib/js/src/View/Common.bs.js +++ b/lib/js/src/View/Common.bs.js @@ -84,7 +84,7 @@ var AgdaInterval = { encode: encode$1 }; -var partial_arg = /^(\S+)\:(?:(\d+)\,(\d+)\-(\d+)\,(\d+)|(\d+)\,(\d+)\-(\d+))$/; +var partial_arg = /^(\\S+)\\:(?:(\\d+)\\,(\\d+)\\-(\\d+)\\,(\\d+)|(\\d+)\\,(\\d+)\\-(\\d+))$/; function parse(param) { return Emacs__Parser$AgdaModeVscode.captures(partial_arg, (function (captured) { @@ -373,8 +373,8 @@ var AgdaRange = { }; function contains(interval, offset) { - if (Caml_obj.caml_lessequal(interval[0], offset)) { - return Caml_obj.caml_lessequal(offset, interval[1]); + if (Caml_obj.lessequal(interval[0], offset)) { + return Caml_obj.lessequal(offset, interval[1]); } else { return false; } diff --git a/lib/js/src/View/Component/Item.bs.js b/lib/js/src/View/Component/Item.bs.js index 003c25cd..2d876775 100644 --- a/lib/js/src/View/Component/Item.bs.js +++ b/lib/js/src/View/Component/Item.bs.js @@ -52,9 +52,9 @@ function Item(Props) { var setRevealRaw = match[1]; var revealRaw = match[0]; var onClickRevealRaw = function (param) { - return Curry._1(setRevealRaw, (function (state) { - return !state; - })); + Curry._1(setRevealRaw, (function (state) { + return !state; + })); }; var content = function (value, raw) { if (raw !== undefined) { diff --git a/lib/js/src/View/Component/RichText.bs.js b/lib/js/src/View/Component/RichText.bs.js index fecee416..5afb59c4 100644 --- a/lib/js/src/View/Component/RichText.bs.js +++ b/lib/js/src/View/Component/RichText.bs.js @@ -5,6 +5,7 @@ var Curry = require("rescript/lib/js/curry.js"); var React = require("react"); var $$String = require("rescript/lib/js/string.js"); var Belt_List = require("rescript/lib/js/belt_List.js"); +var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Json_decode = require("@glennsl/bs-json/lib/js/src/Json_decode.bs.js"); @@ -25,19 +26,19 @@ function RichText$Parens(Props) { var setContracted = match$1[1]; var className = match[0] ? "component-parentheses activated" : "component-parentheses"; var onMouseOver = function (param) { - return Curry._1(setActivated, (function (param) { - return true; - })); + Curry._1(setActivated, (function (param) { + return true; + })); }; var onMouseOut = function (param) { - return Curry._1(setActivated, (function (param) { - return false; - })); + Curry._1(setActivated, (function (param) { + return false; + })); }; var onClick = function (param) { - return Curry._1(setContracted, (function (x) { - return !x; - })); + Curry._1(setContracted, (function (x) { + return !x; + })); }; return React.createElement(React.Fragment, undefined, React.createElement("span", { className: className, @@ -68,19 +69,19 @@ function RichText$Parens2(Props) { }); var setContracted = match$1[1]; var onMouseOver = function (param) { - return Curry._1(setActivated, (function (param) { - return true; - })); + Curry._1(setActivated, (function (param) { + return true; + })); }; var onMouseOut = function (param) { - return Curry._1(setActivated, (function (param) { - return false; - })); + Curry._1(setActivated, (function (param) { + return false; + })); }; var onClick = function (param) { - return Curry._1(setContracted, (function (x) { - return !x; - })); + Curry._1(setContracted, (function (x) { + return !x; + })); }; var openParenClassName = "component-horz-item component-parentheses" + ( activated ? " activated" : "" @@ -515,7 +516,7 @@ function concatMany(xs) { } function parse(raw) { - return concatMany(Belt_Array.mapWithIndex(Belt_Array.keepMap(raw.split(/([^\(\)\s]+\:(?:\d+\,\d+\-\d+\,\d+|\d+\,\d+\-\d+))/), (function (x) { + return concatMany(Belt_Array.mapWithIndex(Belt_Array.keepMap(Js_string.splitByRe(/([^\\(\\)\\s]+\\:(?:\\d+\\,\\d+\\-\\d+\\,\\d+|\\d+\\,\\d+\\-\\d+))/, raw), (function (x) { return x; })), (function (i, token) { var match = i % 2; diff --git a/lib/js/src/View/Hook.bs.js b/lib/js/src/View/Hook.bs.js index 807ead0b..f2396412 100644 --- a/lib/js/src/View/Hook.bs.js +++ b/lib/js/src/View/Hook.bs.js @@ -12,28 +12,25 @@ var Webapi__Dom__Element = require("rescript-webapi/lib/js/src/Webapi/Dom/Webapi function recv(reqChan, resChan, handler) { React.useEffect((function () { return Chan$AgdaModeVscode.on(reqChan, (function (req) { - return $$Promise.get(Curry._1(handler, req), (function (param) { - return Chan$AgdaModeVscode.emit(resChan, param); - })); + $$Promise.get(Curry._1(handler, req), (function (param) { + return Chan$AgdaModeVscode.emit(resChan, param); + })); })); }), []); - } function on(chan, handler) { React.useEffect((function () { return Chan$AgdaModeVscode.on(chan, handler); }), []); - } function useFocus(param) { var htmlElRef = React.useRef(null); var setFocus = function (param) { - return Belt_Option.forEach(Belt_Option.flatMap(Caml_option.nullable_to_opt(htmlElRef.current), Webapi__Dom__Element.asHtmlElement), (function (prim) { - prim.focus(); - - })); + Belt_Option.forEach(Belt_Option.flatMap(Caml_option.nullable_to_opt(htmlElRef.current), Webapi__Dom__Element.asHtmlElement), (function (prim) { + prim.focus(); + })); }; return [ htmlElRef, diff --git a/lib/js/src/View/Panel/CandidateSymbols.bs.js b/lib/js/src/View/Panel/CandidateSymbols.bs.js index b67ee0b7..03173d48 100644 --- a/lib/js/src/View/Panel/CandidateSymbols.bs.js +++ b/lib/js/src/View/Panel/CandidateSymbols.bs.js @@ -22,7 +22,7 @@ function CandidateSymbols(Props) { isSelected ? "selected" : "" ), onClick: (function (param) { - return Curry._1(onChooseSymbol, key); + Curry._1(onChooseSymbol, key); }) }, key); })) : React.createElement(React.Fragment, undefined)); diff --git a/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js b/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js index ca875c7a..3862eb88 100644 --- a/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js +++ b/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js @@ -3,6 +3,7 @@ var Curry = require("rescript/lib/js/curry.js"); var Js_dict = require("rescript/lib/js/js_dict.js"); +var Js_array = require("rescript/lib/js/js_array.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); @@ -46,7 +47,7 @@ function partite(xs, tagEntry) { return Js_dict.fromArray(Belt_Array.map(intervals, (function (param) { return [ param[0], - xs.slice(param[1], param[2]) + Js_array.slice(param[1], param[2], xs) ]; }))); } @@ -56,7 +57,6 @@ function split(dict, key, splitter) { if (value !== undefined) { Belt_Array.forEach(Js_dict.entries(Curry._1(splitter, value)), (function (param) { dict[param[0]] = param[1]; - })); return dict; } else { @@ -112,7 +112,7 @@ function partite$1(xs, p) { } })); return Belt_Array.map(intervals, (function (param) { - return xs.slice(param[0], param[1]); + return Js_array.slice(param[0], param[1], xs); })); } @@ -147,11 +147,11 @@ function unindent(lines) { })), (function (param) { var line = param[0]; var nextLine = param[1]; - var sort = /^Sort \S*/; - var delimeter = /^\u2014{4}/g; - var completeJudgement = /^(?:(?:[^\(\{\s]+\s+\:=?)|Have\:|Goal\:)\s* \S*/; - var reallyLongTermIdentifier = /^\S+$/; - var restOfTheJudgement = /^\s*\:=?\s* \S*/; + var sort = /^Sort \\S*/; + var delimeter = /^\\u2014{4}/g; + var completeJudgement = /^(?:(?:[^\\(\\{\\s]+\\s+\\:=?)|Have\\:|Goal\\:)\\s* \\S*/; + var reallyLongTermIdentifier = /^\\S+$/; + var restOfTheJudgement = /^\\s*\\:=?\\s* \\S*/; if (sort.test(line) || delimeter.test(line) || reallyLongTermIdentifier.test(line) && Belt_Option.mapWithDefault(nextLine, false, (function (line) { return restOfTheJudgement.test(line); }))) { @@ -176,7 +176,7 @@ function unindent(lines) { ]; } })), (function (param) { - return lines.slice(param[0], param[1]).join("\n"); + return Js_array.joinWith("\n", Js_array.slice(param[0], param[1], lines)); })); } @@ -193,13 +193,13 @@ function captures(regex, handler, raw) { } function choice(res, raw) { - return res.reduce((function (result, parse) { + return Js_array.reduce((function (result, parse) { if (result !== undefined) { return Caml_option.some(Caml_option.valFromOption(result)); } else { return Curry._1(parse, raw); } - }), undefined); + }), undefined, res); } function at(captured, i, parser) { diff --git a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js index 9f590c95..13565026 100644 --- a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js +++ b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js @@ -3,10 +3,10 @@ var Curry = require("rescript/lib/js/curry.js"); var Js_dict = require("rescript/lib/js/js_dict.js"); +var Js_array = require("rescript/lib/js/js_array.js"); +var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); -var Caml_option = require("rescript/lib/js/caml_option.js"); -var Caml_splice_call = require("rescript/lib/js/caml_splice_call.js"); var Agda$AgdaModeVscode = require("../../../Agda.bs.js"); var Item$AgdaModeVscode = require("../../Component/Item.bs.js"); var Common$AgdaModeVscode = require("../../Common.bs.js"); @@ -40,28 +40,28 @@ function partiteMetas(xs) { function partiteWarningsOrErrors(xs, key) { return Emacs__Parser$AgdaModeVscode.Dict.update(xs, key, (function (raw) { - var partial_arg = /^\u2014{4}/; + var partial_arg = /^\\u2014{4}/; var hasDelimeter = Belt_Option.isSome(Belt_Option.flatMap(Belt_Array.get(raw, 0), (function (param) { - return Caml_option.null_to_opt(param.match(partial_arg)); + return Js_string.match_(partial_arg, param); }))); - var lines = hasDelimeter ? raw.slice(1) : raw; + var lines = hasDelimeter ? Js_array.sliceFrom(1, raw) : raw; var markWarningStart = function (line) { return Belt_Option.isSome(Curry._1(Common$AgdaModeVscode.AgdaRange.parse, line)); }; var glueBack = function (xs) { var partial_arg = /at$/; return Belt_Option.isSome(Belt_Option.flatMap(Belt_Array.get(xs, xs.length - 1 | 0), (function (param) { - return Caml_option.null_to_opt(param.match(partial_arg)); + return Js_string.match_(partial_arg, param); }))); }; return Belt_Array.map(Emacs__Parser$AgdaModeVscode.Array_.mergeWithNext(Emacs__Parser$AgdaModeVscode.Array_.partite(lines, markWarningStart), glueBack), (function (param) { - return param.join("\n"); + return Js_array.joinWith("\n", param); })); })); } function parseError(raw) { - var lines = raw.split("\n"); + var lines = Js_string.split("\n", raw); return Belt_Option.mapWithDefault(Js_dict.get(partiteWarningsOrErrors(Emacs__Parser$AgdaModeVscode.Dict.partite(lines, (function (param) { if (param[1] === 0) { return "errors"; @@ -76,17 +76,17 @@ function parseError(raw) { function parseGoalType(raw) { var markGoal = function (param) { - return Belt_Option.map(Caml_option.null_to_opt(param[0].match(/^Goal:/)), (function (param) { + return Belt_Option.map(Js_string.match_(/^Goal:/, param[0]), (function (param) { return "goal"; })); }; var markHave = function (param) { - return Belt_Option.map(Caml_option.null_to_opt(param[0].match(/^Have:/)), (function (param) { + return Belt_Option.map(Js_string.match_(/^Have:/, param[0]), (function (param) { return "have"; })); }; var markMetas = function (param) { - return Belt_Option.map(Caml_option.null_to_opt(param[0].match(/\u2014{60}/g)), (function (param) { + return Belt_Option.map(Js_string.match_(/\\u2014{60}/g, param[0]), (function (param) { return "metas"; })); }; @@ -109,62 +109,62 @@ function parseGoalType(raw) { }; var removeDelimeter = function (xs) { return Emacs__Parser$AgdaModeVscode.Dict.update(xs, "metas", (function (param) { - return param.slice(1); + return Js_array.sliceFrom(1, param); })); }; - var lines = raw.split("\n"); + var lines = Js_string.split("\n", raw); var dictionary = partiteMetas(removeDelimeter(partiteGoalTypeContext(lines))); - return Caml_splice_call.spliceObjApply([], "concat", [Belt_Array.map(Js_dict.entries(dictionary), (function (param) { - var lines = param[1]; - switch (param[0]) { - case "goal" : - return Belt_Option.mapWithDefault(Agda$AgdaModeVscode.Expr.parse(lines.join("\n").slice(5)), [], (function (expr) { - return [{ - TAG: 0, - _0: "Goal", - _1: "special", - _2: Agda$AgdaModeVscode.Expr.render(expr), - _3: undefined, - _4: undefined, - [Symbol.for("name")]: "Labeled" - }]; - })); - case "have" : - return Belt_Option.mapWithDefault(Agda$AgdaModeVscode.Expr.parse(lines.join("\n").slice(5)), [], (function (expr) { - return [{ - TAG: 0, - _0: "Have", - _1: "special", - _2: Agda$AgdaModeVscode.Expr.render(expr), - _3: undefined, - _4: undefined, - [Symbol.for("name")]: "Labeled" - }]; - })); - case "hiddenMetas" : - return Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(lines, Agda$AgdaModeVscode.Output.parseOutputWithLocation), (function (x) { - return x; - })), (function (output) { - return Agda$AgdaModeVscode.Output.renderItem(output); - })); - case "interactionMetas" : - return Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(lines, Agda$AgdaModeVscode.Output.parseOutputWithoutLocation), (function (x) { - return x; - })), (function (output) { - return Agda$AgdaModeVscode.Output.renderItem(output); - })); - default: - return []; - } - }))]); + return Js_array.concatMany(Belt_Array.map(Js_dict.entries(dictionary), (function (param) { + var lines = param[1]; + switch (param[0]) { + case "goal" : + return Belt_Option.mapWithDefault(Agda$AgdaModeVscode.Expr.parse(Js_string.sliceToEnd(5, Js_array.joinWith("\n", lines))), [], (function (expr) { + return [{ + TAG: 0, + _0: "Goal", + _1: "special", + _2: Agda$AgdaModeVscode.Expr.render(expr), + _3: undefined, + _4: undefined, + [Symbol.for("name")]: "Labeled" + }]; + })); + case "have" : + return Belt_Option.mapWithDefault(Agda$AgdaModeVscode.Expr.parse(Js_string.sliceToEnd(5, Js_array.joinWith("\n", lines))), [], (function (expr) { + return [{ + TAG: 0, + _0: "Have", + _1: "special", + _2: Agda$AgdaModeVscode.Expr.render(expr), + _3: undefined, + _4: undefined, + [Symbol.for("name")]: "Labeled" + }]; + })); + case "hiddenMetas" : + return Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(lines, Agda$AgdaModeVscode.Output.parseOutputWithLocation), (function (x) { + return x; + })), (function (output) { + return Agda$AgdaModeVscode.Output.renderItem(output); + })); + case "interactionMetas" : + return Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(lines, Agda$AgdaModeVscode.Output.parseOutputWithoutLocation), (function (x) { + return x; + })), (function (output) { + return Agda$AgdaModeVscode.Output.renderItem(output); + })); + default: + return []; + } + })), []); } function parseAllGoalsWarnings(title, body) { var partiteAllGoalsWarnings = function (title, body) { - var lines = body.split("\n"); - var hasMetas = Belt_Option.isSome(Caml_option.null_to_opt(title.match(/Goals/))); - var hasWarnings = Belt_Option.isSome(Caml_option.null_to_opt(title.match(/Warnings/))); - var hasErrors = Belt_Option.isSome(Caml_option.null_to_opt(title.match(/Errors/))); + var lines = Js_string.split("\n", body); + var hasMetas = Belt_Option.isSome(Js_string.match_(/Goals/, title)); + var hasWarnings = Belt_Option.isSome(Js_string.match_(/Warnings/, title)); + var hasErrors = Belt_Option.isSome(Js_string.match_(/Errors/, title)); var markMetas = function (param) { if (hasMetas && param[1] === 0) { return "metas"; @@ -182,8 +182,8 @@ function parseAllGoalsWarnings(title, body) { return ; } } - var __x = param[0].slice(5, 13); - return Belt_Option.map(Caml_option.null_to_opt(__x.match(/Warnings/)), (function (param) { + var __x = Js_string.slice(5, 13, param[0]); + return Belt_Option.map(Js_string.match_(/Warnings/, __x), (function (param) { return "warnings"; })); }; @@ -198,8 +198,8 @@ function parseAllGoalsWarnings(title, body) { return ; } } - var __x = param[0].slice(5, 11); - return Belt_Option.map(Caml_option.null_to_opt(__x.match(/Errors/)), (function (param) { + var __x = Js_string.slice(5, 11, param[0]); + return Belt_Option.map(Js_string.match_(/Errors/, __x), (function (param) { return "errors"; })); }; @@ -220,37 +220,37 @@ function parseAllGoalsWarnings(title, body) { })); }; var dictionary = partiteWarningsOrErrors(partiteWarningsOrErrors(partiteMetas(partiteAllGoalsWarnings(title, body)), "warnings"), "errors"); - return Caml_splice_call.spliceObjApply([], "concat", [Belt_Array.map(Js_dict.entries(dictionary), (function (param) { - var lines = param[1]; - switch (param[0]) { - case "errors" : - return Belt_Array.map(lines, (function (line) { - return Item$AgdaModeVscode.error(RichText$AgdaModeVscode.parse(line), undefined); - })); - case "hiddenMetas" : - return Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(lines, Agda$AgdaModeVscode.Output.parseOutputWithLocation), (function (x) { - return x; - })), (function (output) { - return Agda$AgdaModeVscode.Output.renderItem(output); - })); - case "interactionMetas" : - return Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(lines, Agda$AgdaModeVscode.Output.parseOutputWithoutLocation), (function (x) { - return x; - })), (function (output) { - return Agda$AgdaModeVscode.Output.renderItem(output); - })); - case "warnings" : - return Belt_Array.map(lines, (function (line) { - return Item$AgdaModeVscode.warning(RichText$AgdaModeVscode.parse(line), undefined); - })); - default: - return []; - } - }))]); + return Js_array.concatMany(Belt_Array.map(Js_dict.entries(dictionary), (function (param) { + var lines = param[1]; + switch (param[0]) { + case "errors" : + return Belt_Array.map(lines, (function (line) { + return Item$AgdaModeVscode.error(RichText$AgdaModeVscode.parse(line), undefined); + })); + case "hiddenMetas" : + return Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(lines, Agda$AgdaModeVscode.Output.parseOutputWithLocation), (function (x) { + return x; + })), (function (output) { + return Agda$AgdaModeVscode.Output.renderItem(output); + })); + case "interactionMetas" : + return Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(lines, Agda$AgdaModeVscode.Output.parseOutputWithoutLocation), (function (x) { + return x; + })), (function (output) { + return Agda$AgdaModeVscode.Output.renderItem(output); + })); + case "warnings" : + return Belt_Array.map(lines, (function (line) { + return Item$AgdaModeVscode.warning(RichText$AgdaModeVscode.parse(line), undefined); + })); + default: + return []; + } + })), []); } function parseOutputs(raw) { - var lines = Emacs__Parser$AgdaModeVscode.unindent(raw.split("\n")); + var lines = Emacs__Parser$AgdaModeVscode.unindent(Js_string.split("\n", raw)); return Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(lines, Agda$AgdaModeVscode.Output.parse), (function (x) { return x; })), (function (output) { @@ -269,16 +269,16 @@ function parseTextWithLocation(raw) { } function parseSearchAbout(raw) { - var lines = raw.split("\n"); - var outputs = Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(Emacs__Parser$AgdaModeVscode.unindent(Belt_Array.map(lines.slice(1), (function (param) { - return param.slice(2); + var lines = Js_string.split("\n", raw); + var outputs = Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(Emacs__Parser$AgdaModeVscode.unindent(Belt_Array.map(Js_array.sliceFrom(1, lines), (function (param) { + return Js_string.sliceToEnd(2, param); }))), Agda$AgdaModeVscode.Output.parse), (function (x) { return x; })), (function (output) { return Agda$AgdaModeVscode.Output.renderItem(output); })); var target = Belt_Option.map(Belt_Array.get(lines, 0), (function (param) { - return param.slice(18); + return Js_string.sliceToEnd(18, param); })); if (target !== undefined) { if (outputs.length === 0) { diff --git a/lib/js/src/View/Panel/Keyboard.bs.js b/lib/js/src/View/Panel/Keyboard.bs.js index 86d0d9f7..57cc4f04 100644 --- a/lib/js/src/View/Panel/Keyboard.bs.js +++ b/lib/js/src/View/Panel/Keyboard.bs.js @@ -38,25 +38,25 @@ function reducer(state, action) { return { sequence: state.sequence, translation: state.translation, - candidateIndex: Caml.caml_int_max(0, state.candidateIndex - 10 | 0) + candidateIndex: Caml.int_max(0, state.candidateIndex - 10 | 0) }; case /* BrowseRight */3 : return { sequence: state.sequence, translation: state.translation, - candidateIndex: Caml.caml_int_min(state.translation.candidateSymbols.length - 1 | 0, state.candidateIndex + 1 | 0) + candidateIndex: Caml.int_min(state.translation.candidateSymbols.length - 1 | 0, state.candidateIndex + 1 | 0) }; case /* BrowseDown */4 : return { sequence: state.sequence, translation: state.translation, - candidateIndex: Caml.caml_int_min(state.translation.candidateSymbols.length - 1 | 0, state.candidateIndex + 10 | 0) + candidateIndex: Caml.int_min(state.translation.candidateSymbols.length - 1 | 0, state.candidateIndex + 10 | 0) }; case /* BrowseLeft */5 : return { sequence: state.sequence, translation: state.translation, - candidateIndex: Caml.caml_int_max(0, state.candidateIndex - 1 | 0) + candidateIndex: Caml.int_max(0, state.candidateIndex - 1 | 0) }; } @@ -92,7 +92,7 @@ function Keyboard(Props) { key: key, className: "agda-mode-key", onClick: (function (param) { - return Curry._1(onInsertChar, key); + Curry._1(onInsertChar, key); }) }, key); })))); diff --git a/lib/js/src/View/Panel/Panel.bs.js b/lib/js/src/View/Panel/Panel.bs.js index 8737b7c4..dcde9935 100644 --- a/lib/js/src/View/Panel/Panel.bs.js +++ b/lib/js/src/View/Panel/Panel.bs.js @@ -42,7 +42,6 @@ function Panel(Props) { header, body ]; - }; var match$3 = React.useState(function () { @@ -55,25 +54,23 @@ function Panel(Props) { var inputMethodState = match$4[0]; React.useEffect((function () { Chan$AgdaModeVscode.emit(onEventFromView, /* Initialized */0); - }), []); var promptResponseResolver = React.useRef(undefined); var onSubmit = function (result) { - return Belt_Option.forEach(promptResponseResolver.current, (function (resolve) { - Curry._1(setPrompt, (function (param) { - - })); - Curry._1(resolve, result); - promptResponseResolver.current = undefined; - - })); + Belt_Option.forEach(promptResponseResolver.current, (function (resolve) { + Curry._1(setPrompt, (function (param) { + + })); + Curry._1(resolve, result); + promptResponseResolver.current = undefined; + })); }; var onUpdatePromptIM = function (action) { - return Chan$AgdaModeVscode.emit(onEventFromView, { - TAG: 1, - _0: action, - [Symbol.for("name")]: "PromptIMUpdate" - }); + Chan$AgdaModeVscode.emit(onEventFromView, { + TAG: 1, + _0: action, + [Symbol.for("name")]: "PromptIMUpdate" + }); }; Hook$AgdaModeVscode.recv(onRequest, onResponse, (function (msg) { var match = msg._1; @@ -135,9 +132,9 @@ function Panel(Props) { Curry._1(setHeader, (function (param) { return header; })); - return Curry._1(setBody, (function (param) { - return body; - })); + Curry._1(setBody, (function (param) { + return body; + })); })); } switch ($$event.TAG | 0) { @@ -216,26 +213,26 @@ function Panel(Props) { }), React.createElement(Keyboard$AgdaModeVscode.make, { state: inputMethodState, onInsertChar: (function ($$char) { - return Chan$AgdaModeVscode.emit(onEventFromView, { - TAG: 0, - _0: { - TAG: 0, - _0: $$char, - [Symbol.for("name")]: "InsertChar" - }, - [Symbol.for("name")]: "InputMethod" - }); + Chan$AgdaModeVscode.emit(onEventFromView, { + TAG: 0, + _0: { + TAG: 0, + _0: $$char, + [Symbol.for("name")]: "InsertChar" + }, + [Symbol.for("name")]: "InputMethod" + }); }), onChooseSymbol: (function (symbol) { - return Chan$AgdaModeVscode.emit(onEventFromView, { - TAG: 0, - _0: { - TAG: 1, - _0: symbol, - [Symbol.for("name")]: "ChooseSymbol" - }, - [Symbol.for("name")]: "InputMethod" - }); + Chan$AgdaModeVscode.emit(onEventFromView, { + TAG: 0, + _0: { + TAG: 1, + _0: symbol, + [Symbol.for("name")]: "ChooseSymbol" + }, + [Symbol.for("name")]: "InputMethod" + }); }), prompting: prompting })), React.createElement(Body$AgdaModeVscode.make, { diff --git a/lib/js/src/View/Panel/Prompt.bs.js b/lib/js/src/View/Panel/Prompt.bs.js index 64944baf..52f81f8f 100644 --- a/lib/js/src/View/Panel/Prompt.bs.js +++ b/lib/js/src/View/Panel/Prompt.bs.js @@ -50,19 +50,19 @@ function Prompt(Props) { default: arrowKey = undefined; } - return Belt_Option.forEach(arrowKey, (function (action) { - if (inputMethodActivated) { - Curry._1(onUpdatePromptIM, action); - $$event.preventDefault(); - return ; - } else if (action === /* Escape */4) { - Curry._1(onSubmit, undefined); - $$event.preventDefault(); - return ; - } else { - return ; - } - })); + Belt_Option.forEach(arrowKey, (function (action) { + if (inputMethodActivated) { + Curry._1(onUpdatePromptIM, action); + $$event.preventDefault(); + return ; + } else if (action === /* Escape */4) { + Curry._1(onSubmit, undefined); + $$event.preventDefault(); + return ; + } else { + return ; + } + })); }; var onMouseUp = function ($$event) { if (!inputMethodActivated) { @@ -78,11 +78,11 @@ function Prompt(Props) { Curry._1(setSelectionInterval, (function (param) { return selectionInterval; })); - return Curry._1(onUpdatePromptIM, { - TAG: 0, - _0: selectionInterval, - [Symbol.for("name")]: "MouseSelect" - }); + Curry._1(onUpdatePromptIM, { + TAG: 0, + _0: selectionInterval, + [Symbol.for("name")]: "MouseSelect" + }); }; var onChange = function ($$event) { var value = $$event.target.value; @@ -93,26 +93,24 @@ function Prompt(Props) { $$event.target.selectionEnd ]; })); - return Curry._1(onUpdatePromptIM, { - TAG: 1, - _0: value, - [Symbol.for("name")]: "KeyUpdate" - }); + Curry._1(onUpdatePromptIM, { + TAG: 1, + _0: value, + [Symbol.for("name")]: "KeyUpdate" + }); }; var inputRef = React.useRef(null); React.useEffect(function () { Belt_Option.forEach(Caml_option.nullable_to_opt(inputRef.current), (function (input) { - return Belt_Option.forEach(selectionInterval, (function (param) { - var setSelectionRange = ((elem, start, end_) => elem.setSelectionRange(start, end_)); - setSelectionRange(input, param[0], param[1]); - - })); + Belt_Option.forEach(selectionInterval, (function (param) { + var setSelectionRange = ((elem, start, end_) => elem.setSelectionRange(start, end_)); + setSelectionRange(input, param[0], param[1]); + })); })); setTimeout((function (param) { if (!hasFocused) { Belt_Option.forEach(Belt_Option.flatMap(Caml_option.nullable_to_opt(inputRef.current), Webapi__Dom__Element.asHtmlElement), (function (prim) { prim.focus(); - })); Curry._1(setHasFocused, (function (param) { return true; @@ -120,11 +118,10 @@ function Prompt(Props) { } }), 100); - }); var onSubmit$1 = function (_event) { Curry._1(onUpdatePromptIM, /* Escape */4); - return Curry._1(onSubmit, value); + Curry._1(onSubmit, value); }; return React.createElement("div", { className: "agda-mode-prompt" diff --git a/lib/js/src/View/Root.bs.js b/lib/js/src/View/Root.bs.js index 6cb62333..730dce26 100644 --- a/lib/js/src/View/Root.bs.js +++ b/lib/js/src/View/Root.bs.js @@ -34,7 +34,6 @@ Chan$AgdaModeVscode.on(onResponse, (function (response) { _0: response, [Symbol.for("name")]: "Response" })); - })); var onEventFromView = Chan$AgdaModeVscode.make(undefined); @@ -45,7 +44,6 @@ Chan$AgdaModeVscode.on(onEventFromView, (function ($$event) { _0: $$event, [Symbol.for("name")]: "Event" })); - })); Belt_Option.forEach(Caml_option.nullable_to_opt(document.getElementById("root")), (function (element) { @@ -55,7 +53,6 @@ Belt_Option.forEach(Caml_option.nullable_to_opt(document.getElementById("root")) onResponse: onResponse, onEventFromView: onEventFromView }), element); - })); exports.vscode = vscode; diff --git a/lib/js/src/View/Singleton.bs.js b/lib/js/src/View/Singleton.bs.js index 98ff268f..af2c574d 100644 --- a/lib/js/src/View/Singleton.bs.js +++ b/lib/js/src/View/Singleton.bs.js @@ -19,7 +19,6 @@ function make(extensionPath) { handle.contents = Caml_option.some(panel$1); $$Promise.get(WebviewPanel$AgdaModeVscode.onceDestroyed(panel$1), (function (param) { handle.contents = undefined; - })); return panel$1; } @@ -27,7 +26,6 @@ function make(extensionPath) { function destroy(param) { Belt_Option.forEach(handle.contents, WebviewPanel$AgdaModeVscode.destroy); handle.contents = undefined; - } var Panel = { @@ -52,7 +50,6 @@ function make$1(extensionPath) { handle$1.contents = Caml_option.some(panel$1); $$Promise.get(WebviewPanel$AgdaModeVscode.onceDestroyed(panel$1), (function (param) { handle$1.contents = undefined; - })); return panel$1; } @@ -60,7 +57,6 @@ function make$1(extensionPath) { function destroy$1(param) { Belt_Option.forEach(handle$1.contents, WebviewPanel$AgdaModeVscode.destroy); handle$1.contents = undefined; - } var DebugBuffer = { diff --git a/lib/js/src/View/WebviewPanel.bs.js b/lib/js/src/View/WebviewPanel.bs.js index 864ddbf4..6bd3c2d0 100644 --- a/lib/js/src/View/WebviewPanel.bs.js +++ b/lib/js/src/View/WebviewPanel.bs.js @@ -7,6 +7,8 @@ var VSCode = require("rescript-vscode/lib/js/src/VSCode.bs.js"); var Vscode = require("vscode"); var Js_math = require("rescript/lib/js/js_math.js"); var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); +var Js_array = require("rescript/lib/js/js_array.js"); +var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Caml_js_exceptions = require("rescript/lib/js/caml_js_exceptions.js"); var Chan$AgdaModeVscode = require("../Util/Chan.bs.js"); @@ -19,7 +21,7 @@ function makeHTML(webview, extensionPath) { var charaterSet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; var cardinality = charaterSet.length; for(var _for = 0; _for <= 32; ++_for){ - text = text + charaterSet.charAt(Js_math.floor(Math.random() * cardinality)); + text = text + Js_string.charAt(Js_math.floor(Math.random() * cardinality), charaterSet); } var nonce = text; var scriptUri = webview.asWebviewUri(Vscode.Uri.joinPath(extensionUri, "dist", "bundled-view.js")).toString(); @@ -46,7 +48,6 @@ function make(title, extensionPath) { function destroy(prim) { prim.dispose(); - } function send(panel, message) { @@ -62,7 +63,7 @@ function onDestroyed(panel, callback) { } function reveal(panel) { - return VSCode.WebviewPanel.reveal(panel, undefined, true, undefined); + VSCode.WebviewPanel.reveal(panel, undefined, true, undefined); } function moveToBottom(param) { @@ -87,7 +88,6 @@ function moveToBottom(param) { groups: [{ size: 0.7 }, { size: 0.3 }] } }).VAL); - } var WebviewPanel = { @@ -106,7 +106,7 @@ function send$1(view, requestOrEvent) { if (requestOrEvent.TAG === /* Request */0) { var match$1 = $$Promise.pending(undefined); var resolve = match$1[1]; - match._0.push([ + Js_array.push([ requestOrEvent._0, (function (x) { if (x.TAG === /* Response */0) { @@ -115,10 +115,10 @@ function send$1(view, requestOrEvent) { return Curry._1(resolve, undefined); } }) - ]); + ], match._0); return match$1[0]; } - match._1.push(requestOrEvent._0); + Js_array.push(requestOrEvent._0, match._1); return $$Promise.resolved(undefined); } var stringified = JSON.stringify(View$AgdaModeVscode.RequestOrEventToView.encode(requestOrEvent)); @@ -181,7 +181,7 @@ function make$1(title, extensionPath) { } else { moveToBottom(undefined); } - view.subscriptions.push(view.panel.webview.onDidReceiveMessage(function (json) { + Js_array.push(view.panel.webview.onDidReceiveMessage(function (json) { var res; try { res = Curry._1(View$AgdaModeVscode.ResponseOrEventFromView.decode, json); @@ -196,11 +196,11 @@ function make$1(title, extensionPath) { } else { return Chan$AgdaModeVscode.emit(view.onEvent, res._0); } - })); - view.subscriptions.push(view.panel.onDidDispose(function (param) { - return Chan$AgdaModeVscode.emit(view.onEvent, /* Destroyed */1); - })); - view.subscriptions.push(new Vscode.Disposable(Chan$AgdaModeVscode.on(view.onEvent, (function (x) { + }), view.subscriptions); + Js_array.push(view.panel.onDidDispose(function (param) { + Chan$AgdaModeVscode.emit(view.onEvent, /* Destroyed */1); + }), view.subscriptions); + Js_array.push(new Vscode.Disposable(Chan$AgdaModeVscode.on(view.onEvent, (function (x) { if (x !== 0) { return ; } @@ -209,20 +209,20 @@ function make$1(title, extensionPath) { view.status = /* Initialized */0; Belt_Array.forEach(match._0, (function (param) { var resolve = param[1]; - return $$Promise.get(send$1(view, { - TAG: 0, - _0: param[0], - [Symbol.for("name")]: "Request" - }), (function (x) { - if (x !== undefined) { - return Curry._1(resolve, { - TAG: 0, - _0: x, - [Symbol.for("name")]: "Response" - }); - } - - })); + $$Promise.get(send$1(view, { + TAG: 0, + _0: param[0], + [Symbol.for("name")]: "Request" + }), (function (x) { + if (x !== undefined) { + return Curry._1(resolve, { + TAG: 0, + _0: x, + [Symbol.for("name")]: "Response" + }); + } + + })); })); return Belt_Array.forEach(match._1, (function ($$event) { send$1(view, { @@ -230,11 +230,10 @@ function make$1(title, extensionPath) { _0: $$event, [Symbol.for("name")]: "Event" }); - })); } - })))); + }))), view.subscriptions); return view; } @@ -242,9 +241,9 @@ function destroy$1(view) { Chan$AgdaModeVscode.destroy(view.onResponse); Chan$AgdaModeVscode.destroy(view.onEvent); view.panel.dispose(); - return Belt_Array.forEach(view.subscriptions, (function (prim) { - return prim.dispose(); - })); + Belt_Array.forEach(view.subscriptions, (function (prim) { + return prim.dispose(); + })); } function onceDestroyed(view) { @@ -260,7 +259,7 @@ function onceDestroyed(view) { } function reveal$1(view) { - return reveal(view.panel); + reveal(view.panel); } var Module = { diff --git a/lib/js/test/RunTestFromCLI.bs.js b/lib/js/test/RunTestFromCLI.bs.js index 72b709b9..ff01dc1f 100644 --- a/lib/js/test/RunTestFromCLI.bs.js +++ b/lib/js/test/RunTestFromCLI.bs.js @@ -3,6 +3,7 @@ var Path = require("path"); var Process = require("process"); +var Js_promise = require("rescript/lib/js/js_promise.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); var VscodeTest = require("vscode-test"); @@ -16,14 +17,14 @@ var extensionTestsPath = dirname !== undefined ? Path.resolve(dirname, testSuite console.log("Running from the CLI, with\n extensionDevelopmentPath: " + (extensionDevelopmentPath + ("\n extensionTestsPath: " + extensionTestsPath))); -VscodeTest.runTests({ - extensionDevelopmentPath: extensionDevelopmentPath, - extensionTestsPath: extensionTestsPath - }).catch(function (error) { - console.log(error); - console.log("Failed to run tests"); - return Process.exit(1); - }); +Js_promise.$$catch((function (error) { + console.log(error); + console.log("Failed to run tests"); + return Process.exit(1); + }), VscodeTest.runTests({ + extensionDevelopmentPath: extensionDevelopmentPath, + extensionTestsPath: extensionTestsPath + })); var dirname$1 = dirname === undefined ? undefined : Caml_option.some(dirname); diff --git a/lib/js/test/TestSuiteAdapter.bs.js b/lib/js/test/TestSuiteAdapter.bs.js index c4e71500..6977133d 100644 --- a/lib/js/test/TestSuiteAdapter.bs.js +++ b/lib/js/test/TestSuiteAdapter.bs.js @@ -37,7 +37,6 @@ function run(param) { } Belt_Array.forEach(files, (function (file) { mocha.addFile(Path.resolve(testsRoot, file)); - })); try { mocha.run(function (failures) { @@ -58,7 +57,6 @@ function run(param) { return reject(exn); } })); - })); } diff --git a/lib/js/test/tests/Parser/Test__Parser__Response.bs.js b/lib/js/test/tests/Parser/Test__Parser__Response.bs.js index 3c0848fa..e5555df0 100644 --- a/lib/js/test/tests/Parser/Test__Parser__Response.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__Response.bs.js @@ -2,6 +2,7 @@ 'use strict'; var Belt_Array = require("rescript/lib/js/belt_Array.js"); +var Js_promise = require("rescript/lib/js/js_promise.js"); var Mocha$BsMocha = require("bs-mocha/lib/js/src/Mocha.bs.js"); var Assert$BsMocha = require("bs-mocha/lib/js/src/Assert.bs.js"); var Promise$BsMocha = require("bs-mocha/lib/js/src/Promise.bs.js"); @@ -21,18 +22,18 @@ function toPrioritizedResponses(exprs) { } Mocha$BsMocha.describe("when parsing responses")(undefined, undefined, undefined, (function (param) { - return Belt_Array.forEach(Test__Util$AgdaModeVscode.Golden.getGoldenFilepathsSync("../../../../test/tests/Parser/Response"), (function (filepath) { - return Promise$BsMocha.it("should golden test " + filepath)(undefined, undefined, undefined, (function (param) { - return Test__Util$AgdaModeVscode.Golden.readFile(filepath).then(function (raw) { - var partial_arg = []; - return Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (param) { - return Test__Parser__SExpression$AgdaModeVscode.parseSExpression(partial_arg, param); - })), toPrioritizedResponses), (function (param) { - return Test__Util$AgdaModeVscode.Strings.serializeWith(Response$AgdaModeVscode.Prioritized.toString, param); - }))); - }); - })); - })); + Belt_Array.forEach(Test__Util$AgdaModeVscode.Golden.getGoldenFilepathsSync("../../../../test/tests/Parser/Response"), (function (filepath) { + Promise$BsMocha.it("should golden test " + filepath)(undefined, undefined, undefined, (function (param) { + return Js_promise.then_((function (raw) { + var partial_arg = []; + return Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (param) { + return Test__Parser__SExpression$AgdaModeVscode.parseSExpression(partial_arg, param); + })), toPrioritizedResponses), (function (param) { + return Test__Util$AgdaModeVscode.Strings.serializeWith(Response$AgdaModeVscode.Prioritized.toString, param); + }))); + }), Test__Util$AgdaModeVscode.Golden.readFile(filepath)); + })); + })); })); exports.toPrioritizedResponses = toPrioritizedResponses; diff --git a/lib/js/test/tests/Parser/Test__Parser__SExpression.bs.js b/lib/js/test/tests/Parser/Test__Parser__SExpression.bs.js index d024b8c4..8fa7b2a8 100644 --- a/lib/js/test/tests/Parser/Test__Parser__SExpression.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__SExpression.bs.js @@ -1,7 +1,9 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; +var Js_array = require("rescript/lib/js/js_array.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); +var Js_promise = require("rescript/lib/js/js_promise.js"); var Mocha$BsMocha = require("bs-mocha/lib/js/src/Mocha.bs.js"); var Assert$BsMocha = require("bs-mocha/lib/js/src/Assert.bs.js"); var Promise$BsMocha = require("bs-mocha/lib/js/src/Promise.bs.js"); @@ -18,16 +20,16 @@ function parseSExpression(breakpoints, input) { } var a = x._0; if (a.TAG === /* Ok */0) { - output.contents.push(a._0); + Js_array.push(a._0, output.contents); return ; } var match = a._0; - return Assert$BsMocha.fail("Failed when parsing S-expression: " + Parser$AgdaModeVscode.$$Error.toString({ - TAG: 0, - _0: match[0], - _1: match[1], - [Symbol.for("name")]: "SExpression" - })); + Assert$BsMocha.fail("Failed when parsing S-expression: " + Parser$AgdaModeVscode.$$Error.toString({ + TAG: 0, + _0: match[0], + _1: match[1], + [Symbol.for("name")]: "SExpression" + })); }); Belt_Array.forEach(Belt_Array.concatMany(Belt_Array.map(Test__Util$AgdaModeVscode.Strings.breakInput(input.trim(), breakpoints), Parser$AgdaModeVscode.split)), (function (param) { return Parser$AgdaModeVscode.Incr.feed(parser, param); @@ -36,41 +38,41 @@ function parseSExpression(breakpoints, input) { } Mocha$BsMocha.describe("when parsing S-expressions as a whole")(undefined, undefined, undefined, (function (param) { - return Belt_Array.forEach(Test__Util$AgdaModeVscode.Golden.getGoldenFilepathsSync("../../../../test/tests/Parser/SExpression"), (function (filepath) { - return Promise$BsMocha.it("should golden test " + filepath)(undefined, undefined, undefined, (function (param) { - return Test__Util$AgdaModeVscode.Golden.readFile(filepath).then(function (raw) { - var partial_arg = []; - return Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (param) { - return parseSExpression(partial_arg, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.Strings.serializeWith(Parser$AgdaModeVscode.SExpression.toString, param); - }))); - }); - })); - })); + Belt_Array.forEach(Test__Util$AgdaModeVscode.Golden.getGoldenFilepathsSync("../../../../test/tests/Parser/SExpression"), (function (filepath) { + Promise$BsMocha.it("should golden test " + filepath)(undefined, undefined, undefined, (function (param) { + return Js_promise.then_((function (raw) { + var partial_arg = []; + return Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (param) { + return parseSExpression(partial_arg, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.Strings.serializeWith(Parser$AgdaModeVscode.SExpression.toString, param); + }))); + }), Test__Util$AgdaModeVscode.Golden.readFile(filepath)); + })); + })); })); Mocha$BsMocha.describe("when parsing S-expressions incrementally")(undefined, undefined, undefined, (function (param) { - return Belt_Array.forEach(Test__Util$AgdaModeVscode.Golden.getGoldenFilepathsSync("../../../../test/tests/Parser/SExpression"), (function (filepath) { - return Promise$BsMocha.it("should golden test " + filepath)(undefined, undefined, undefined, (function (param) { - return Test__Util$AgdaModeVscode.Golden.readFile(filepath).then(function (raw) { - var partial_arg = [ - 3, - 23, - 171, - 217, - 1234, - 2342, - 3453 - ]; - return Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (param) { - return parseSExpression(partial_arg, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.Strings.serializeWith(Parser$AgdaModeVscode.SExpression.toString, param); - }))); - }); - })); - })); + Belt_Array.forEach(Test__Util$AgdaModeVscode.Golden.getGoldenFilepathsSync("../../../../test/tests/Parser/SExpression"), (function (filepath) { + Promise$BsMocha.it("should golden test " + filepath)(undefined, undefined, undefined, (function (param) { + return Js_promise.then_((function (raw) { + var partial_arg = [ + 3, + 23, + 171, + 217, + 1234, + 2342, + 3453 + ]; + return Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (param) { + return parseSExpression(partial_arg, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.Strings.serializeWith(Parser$AgdaModeVscode.SExpression.toString, param); + }))); + }), Test__Util$AgdaModeVscode.Golden.readFile(filepath)); + })); + })); })); exports.parseSExpression = parseSExpression; diff --git a/lib/js/test/tests/Parser/Test__Parser__SourceFile.bs.js b/lib/js/test/tests/Parser/Test__Parser__SourceFile.bs.js index 78fe9d4c..232c2422 100644 --- a/lib/js/test/tests/Parser/Test__Parser__SourceFile.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__SourceFile.bs.js @@ -1,7 +1,9 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; +var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); +var Js_promise = require("rescript/lib/js/js_promise.js"); var Mocha$BsMocha = require("bs-mocha/lib/js/src/Mocha.bs.js"); var Assert$BsMocha = require("bs-mocha/lib/js/src/Assert.bs.js"); var Promise$BsMocha = require("bs-mocha/lib/js/src/Promise.bs.js"); @@ -9,62 +11,62 @@ var SourceFile$AgdaModeVscode = require("../../../src/Parser/SourceFile.bs.js"); var Test__Util$AgdaModeVscode = require("../Test__Util.bs.js"); Mocha$BsMocha.describe("when parsing file paths")(undefined, undefined, undefined, (function (param) { - return Mocha$BsMocha.it("should recognize the file extensions")(undefined, undefined, undefined, (function (param) { - Assert$BsMocha.equal(undefined, SourceFile$AgdaModeVscode.FileType.parse("a.agda"), /* Agda */0); - Assert$BsMocha.equal(undefined, SourceFile$AgdaModeVscode.FileType.parse("a.lagda"), /* LiterateTeX */1); - Assert$BsMocha.equal(undefined, SourceFile$AgdaModeVscode.FileType.parse("a.lagda.tex"), /* LiterateTeX */1); - Assert$BsMocha.equal(undefined, SourceFile$AgdaModeVscode.FileType.parse("a.lagda.md"), /* LiterateMarkdown */3); - Assert$BsMocha.equal(undefined, SourceFile$AgdaModeVscode.FileType.parse("a.lagda.rst"), /* LiterateRST */2); - return Assert$BsMocha.equal(undefined, SourceFile$AgdaModeVscode.FileType.parse("a.lagda.org"), /* LiterateOrg */4); - })); + Mocha$BsMocha.it("should recognize the file extensions")(undefined, undefined, undefined, (function (param) { + Assert$BsMocha.equal(undefined, SourceFile$AgdaModeVscode.FileType.parse("a.agda"), /* Agda */0); + Assert$BsMocha.equal(undefined, SourceFile$AgdaModeVscode.FileType.parse("a.lagda"), /* LiterateTeX */1); + Assert$BsMocha.equal(undefined, SourceFile$AgdaModeVscode.FileType.parse("a.lagda.tex"), /* LiterateTeX */1); + Assert$BsMocha.equal(undefined, SourceFile$AgdaModeVscode.FileType.parse("a.lagda.md"), /* LiterateMarkdown */3); + Assert$BsMocha.equal(undefined, SourceFile$AgdaModeVscode.FileType.parse("a.lagda.rst"), /* LiterateRST */2); + Assert$BsMocha.equal(undefined, SourceFile$AgdaModeVscode.FileType.parse("a.lagda.org"), /* LiterateOrg */4); + })); })); if (Test__Util$AgdaModeVscode.onUnix) { Mocha$BsMocha.describe("when parsing source files (Unix only)")(undefined, undefined, undefined, (function (param) { Mocha$BsMocha.describe("Regex.comment")(undefined, undefined, undefined, (function (param) { Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { - Assert$BsMocha.equal(undefined, "no comment".search(SourceFile$AgdaModeVscode.Regex.comment), -1); - Assert$BsMocha.equal(undefined, "no comment\n".search(SourceFile$AgdaModeVscode.Regex.comment), -1); - Assert$BsMocha.equal(undefined, "-- comment".search(SourceFile$AgdaModeVscode.Regex.comment), 0); - return Assert$BsMocha.equal(undefined, "-- comment with newline\n".search(SourceFile$AgdaModeVscode.Regex.comment), 0); + Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "no comment"), -1); + Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "no comment\n"), -1); + Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "-- comment"), 0); + Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "-- comment with newline\n"), 0); + })); + Mocha$BsMocha.it("should work when \"--\" is placed immediately after some text (issue #56)")(undefined, undefined, undefined, (function (param) { + Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "a -- comment after some text"), 2); + Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "a-- comment placed immediately after some text"), -1); + Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "_-- comment placed immediately after name parts"), 1); + Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, ";-- comment placed immediately after name parts"), 1); + Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, ".-- comment placed immediately after name parts"), 1); + Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "\"-- comment placed immediately after name parts"), 1); + Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "(-- comment placed immediately after name parts"), 1); + Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, ")-- comment placed immediately after name parts"), 1); + Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "{-- comment placed immediately after name parts"), 1); + Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "}-- comment placed immediately after name parts"), 1); + Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "@-- comment placed immediately after name parts"), 1); + })); + })); + Belt_Array.forEach(Test__Util$AgdaModeVscode.Golden.getGoldenFilepathsSync("../../../../test/tests/Parser/SourceFile"), (function (filepath) { + Promise$BsMocha.it("should golden test " + filepath)(undefined, undefined, undefined, (function (param) { + return Js_promise.then_((function (raw) { + var partial_arg = [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 + ]; + return Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (param) { + return SourceFile$AgdaModeVscode.parse(partial_arg, filepath, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.Strings.serializeWith(SourceFile$AgdaModeVscode.Diff.toString, param); + }))); + }), Test__Util$AgdaModeVscode.Golden.readFile(filepath)); })); - return Mocha$BsMocha.it("should work when \"--\" is placed immediately after some text (issue #56)")(undefined, undefined, undefined, (function (param) { - Assert$BsMocha.equal(undefined, "a -- comment after some text".search(SourceFile$AgdaModeVscode.Regex.comment), 2); - Assert$BsMocha.equal(undefined, "a-- comment placed immediately after some text".search(SourceFile$AgdaModeVscode.Regex.comment), -1); - Assert$BsMocha.equal(undefined, "_-- comment placed immediately after name parts".search(SourceFile$AgdaModeVscode.Regex.comment), 1); - Assert$BsMocha.equal(undefined, ";-- comment placed immediately after name parts".search(SourceFile$AgdaModeVscode.Regex.comment), 1); - Assert$BsMocha.equal(undefined, ".-- comment placed immediately after name parts".search(SourceFile$AgdaModeVscode.Regex.comment), 1); - Assert$BsMocha.equal(undefined, "\"-- comment placed immediately after name parts".search(SourceFile$AgdaModeVscode.Regex.comment), 1); - Assert$BsMocha.equal(undefined, "(-- comment placed immediately after name parts".search(SourceFile$AgdaModeVscode.Regex.comment), 1); - Assert$BsMocha.equal(undefined, ")-- comment placed immediately after name parts".search(SourceFile$AgdaModeVscode.Regex.comment), 1); - Assert$BsMocha.equal(undefined, "{-- comment placed immediately after name parts".search(SourceFile$AgdaModeVscode.Regex.comment), 1); - Assert$BsMocha.equal(undefined, "}-- comment placed immediately after name parts".search(SourceFile$AgdaModeVscode.Regex.comment), 1); - return Assert$BsMocha.equal(undefined, "@-- comment placed immediately after name parts".search(SourceFile$AgdaModeVscode.Regex.comment), 1); - })); })); - return Belt_Array.forEach(Test__Util$AgdaModeVscode.Golden.getGoldenFilepathsSync("../../../../test/tests/Parser/SourceFile"), (function (filepath) { - return Promise$BsMocha.it("should golden test " + filepath)(undefined, undefined, undefined, (function (param) { - return Test__Util$AgdaModeVscode.Golden.readFile(filepath).then(function (raw) { - var partial_arg = [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ]; - return Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (param) { - return SourceFile$AgdaModeVscode.parse(partial_arg, filepath, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.Strings.serializeWith(SourceFile$AgdaModeVscode.Diff.toString, param); - }))); - }); - })); - })); })); } diff --git a/lib/js/test/tests/Test__CaseSplit.bs.js b/lib/js/test/tests/Test__CaseSplit.bs.js index 39678d1e..4f97ebe4 100644 --- a/lib/js/test/tests/Test__CaseSplit.bs.js +++ b/lib/js/test/tests/Test__CaseSplit.bs.js @@ -12,85 +12,85 @@ var Test__Util$AgdaModeVscode = require("./Test__Util.bs.js"); var State__Goal$AgdaModeVscode = require("../../src/State/State__Goal.bs.js"); Mocha$BsMocha.describe("State__Goal.caseSplitAux dry run")(undefined, undefined, undefined, (function (param) { - return Test__Util$AgdaModeVscode.Q.it("should calculate the infomation needed for case splitting correctly", (function (param) { - return $$Promise.flatMap(Vscode.window.showTextDocument(Vscode.Uri.file(Test__Util$AgdaModeVscode.Path.asset("CaseSplit1.agda")), undefined), (function (editor) { - var $$document = editor.document; - return $$Promise.map($$Promise.map(Goal$AgdaModeVscode.makeMany(editor, [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ]), (function (goals) { - return Belt_Array.map(goals, (function (goal) { - var match = State__Goal$AgdaModeVscode.caseSplitAux($$document, goal); - var rewriteRange = match[2]; - var rewriteRange$1 = new Vscode.Range($$document.positionAt(rewriteRange[0]), $$document.positionAt(rewriteRange[1])); - return [ - match[0], - match[1], - Editor$AgdaModeVscode.$$Text.get($$document, rewriteRange$1) - ]; - })); - })), (function (results) { - return { - TAG: 0, - _0: Assert$BsMocha.deep_equal(undefined, results, [ - [ - false, - 9, - "x → {! !}" - ], - [ - false, - 23, - "y → {! !}" - ], - [ - false, - 4, - "x → {! !}" - ], - [ - false, - 4, - "y → {! !}" - ], - [ - true, - 13, - "x → {! !}" - ], - [ - true, - 13, - "y → {! !}" - ], - [ - true, - 2, - "x → {! !}" - ], - [ - true, - 2, - "y → {! !}" - ], - [ - false, - 13, - "x → {! !}" - ] - ]), - [Symbol.for("name")]: "Ok" - }; - })); - })); - })); + Test__Util$AgdaModeVscode.Q.it("should calculate the infomation needed for case splitting correctly", (function (param) { + return $$Promise.flatMap(Vscode.window.showTextDocument(Vscode.Uri.file(Test__Util$AgdaModeVscode.Path.asset("CaseSplit1.agda")), undefined), (function (editor) { + var $$document = editor.document; + return $$Promise.map($$Promise.map(Goal$AgdaModeVscode.makeMany(editor, [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ]), (function (goals) { + return Belt_Array.map(goals, (function (goal) { + var match = State__Goal$AgdaModeVscode.caseSplitAux($$document, goal); + var rewriteRange = match[2]; + var rewriteRange$1 = new Vscode.Range($$document.positionAt(rewriteRange[0]), $$document.positionAt(rewriteRange[1])); + return [ + match[0], + match[1], + Editor$AgdaModeVscode.$$Text.get($$document, rewriteRange$1) + ]; + })); + })), (function (results) { + return { + TAG: 0, + _0: Assert$BsMocha.deep_equal(undefined, results, [ + [ + false, + 9, + "x → {! !}" + ], + [ + false, + 23, + "y → {! !}" + ], + [ + false, + 4, + "x → {! !}" + ], + [ + false, + 4, + "y → {! !}" + ], + [ + true, + 13, + "x → {! !}" + ], + [ + true, + 13, + "y → {! !}" + ], + [ + true, + 2, + "x → {! !}" + ], + [ + true, + 2, + "y → {! !}" + ], + [ + false, + 13, + "x → {! !}" + ] + ]), + [Symbol.for("name")]: "Ok" + }; + })); + })); + })); })); Mocha$BsMocha.describe_skip("Integration test")(undefined, undefined, undefined, (function (param) { @@ -104,17 +104,17 @@ Mocha$BsMocha.describe_skip("Integration test")(undefined, undefined, undefined, Test__Util$AgdaModeVscode.Q.after(function (param) { return Test__Util$AgdaModeVscode.restoreFile(Test__Util$AgdaModeVscode.Path.asset("CaseSplit2.agda"), fileContent); }); - return Test__Util$AgdaModeVscode.Q.it("should have more goals after splitting", (function (param) { - var partial_arg = [ - new Vscode.Position(7, 16), - "x" - ]; - return $$Promise.mapOk($$Promise.flatMapOk($$Promise.flatMap(context, Test__Util$AgdaModeVscode.Agda.load), (function (param) { - return Test__Util$AgdaModeVscode.Agda.$$case(partial_arg, param); - })), (function (param) { - return Assert$BsMocha.deep_equal(undefined, param[1].goals.length, 10); - })); - })); + Test__Util$AgdaModeVscode.Q.it("should have more goals after splitting", (function (param) { + var partial_arg = [ + new Vscode.Position(7, 16), + "x" + ]; + return $$Promise.mapOk($$Promise.flatMapOk($$Promise.flatMap(context, Test__Util$AgdaModeVscode.Agda.load), (function (param) { + return Test__Util$AgdaModeVscode.Agda.$$case(partial_arg, param); + })), (function (param) { + Assert$BsMocha.deep_equal(undefined, param[1].goals.length, 10); + })); + })); })); /* Not a pure module */ diff --git a/lib/js/test/tests/Test__Connection.bs.js b/lib/js/test/tests/Test__Connection.bs.js index 12d6a204..d24593db 100644 --- a/lib/js/test/tests/Test__Connection.bs.js +++ b/lib/js/test/tests/Test__Connection.bs.js @@ -8,17 +8,17 @@ var Test__Util$AgdaModeVscode = require("./Test__Util.bs.js"); var Connection__Error$AgdaModeVscode = require("../../src/Connection/Connection__Error.bs.js"); Mocha$BsMocha.describe_skip("Connection")(10000, undefined, undefined, (function (param) { - return Test__Util$AgdaModeVscode.Q.it("should download the language server", (function (param) { - var globalStoragePath = Test__Util$AgdaModeVscode.Path.globalStoragePath(undefined); - return $$Promise.flatMapError($$Promise.mapOk(Connection$AgdaModeVscode.start(globalStoragePath, true, (function (param) { - - })), (function (param) { - - })), (function (e) { - var match = Connection__Error$AgdaModeVscode.toString(e); - return Test__Util$AgdaModeVscode.A.fail(match[0] + "\n" + match[1]); - })); - })); + Test__Util$AgdaModeVscode.Q.it("should download the language server", (function (param) { + var globalStoragePath = Test__Util$AgdaModeVscode.Path.globalStoragePath(undefined); + return $$Promise.flatMapError($$Promise.mapOk(Connection$AgdaModeVscode.start(globalStoragePath, true, (function (param) { + + })), (function (param) { + + })), (function (e) { + var match = Connection__Error$AgdaModeVscode.toString(e); + return Test__Util$AgdaModeVscode.A.fail(match[0] + "\n" + match[1]); + })); + })); })); /* Not a pure module */ diff --git a/lib/js/test/tests/Test__EditorIM.bs.js b/lib/js/test/tests/Test__EditorIM.bs.js index c57cb5c7..126dbbba 100644 --- a/lib/js/test/tests/Test__EditorIM.bs.js +++ b/lib/js/test/tests/Test__EditorIM.bs.js @@ -5,6 +5,7 @@ var Curry = require("rescript/lib/js/curry.js"); var Js_exn = require("rescript/lib/js/js_exn.js"); var Vscode = require("vscode"); var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); +var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); @@ -416,314 +417,314 @@ Mocha$BsMocha.describe("Input Method (Editor)")(undefined, undefined, undefined, })); })); })); - return Test__Util$AgdaModeVscode.Q.it("Issue #55, should not deactivate when size of candidate symbols > 1", (function (param) { - return $$Promise.flatMapOk(acquire(setup), (function (setup) { - var $$document = setup.editor.document; - var partial_arg = [/* Activate */2]; - var partial_arg$1 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$2 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$3 = [ - { - _0: [[ - [ - 0, - 3 - ], - "∗" - ]], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$4 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$5 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$6 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$7 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$8 = [ - { - _0: [[ - [ - 0, - 6 - ], - "⁎" - ]], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$9 = [/* Deactivate */3]; - return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk(activate(setup, undefined, undefined), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg, param); - })), (function (param) { - return insertChar(setup, "a"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$1, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("a", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "s"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$2, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("as", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "t"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$3, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("∗", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "e"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$4, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("∗e", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "r"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$5, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("∗er", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "i"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$6, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("∗eri", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "s"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$7, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("∗eris", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "k"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$8, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("⁎", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return deactivate(setup); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$9, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("⁎", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })); - })); - })); + Test__Util$AgdaModeVscode.Q.it("Issue #55, should not deactivate when size of candidate symbols > 1", (function (param) { + return $$Promise.flatMapOk(acquire(setup), (function (setup) { + var $$document = setup.editor.document; + var partial_arg = [/* Activate */2]; + var partial_arg$1 = [ + { + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + /* UpdateView */0, + /* RewriteApplied */1 + ]; + var partial_arg$2 = [ + { + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + /* UpdateView */0, + /* RewriteApplied */1 + ]; + var partial_arg$3 = [ + { + _0: [[ + [ + 0, + 3 + ], + "∗" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + /* UpdateView */0, + /* RewriteApplied */1 + ]; + var partial_arg$4 = [ + { + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + /* UpdateView */0, + /* RewriteApplied */1 + ]; + var partial_arg$5 = [ + { + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + /* UpdateView */0, + /* RewriteApplied */1 + ]; + var partial_arg$6 = [ + { + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + /* UpdateView */0, + /* RewriteApplied */1 + ]; + var partial_arg$7 = [ + { + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + /* UpdateView */0, + /* RewriteApplied */1 + ]; + var partial_arg$8 = [ + { + _0: [[ + [ + 0, + 6 + ], + "⁎" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + /* UpdateView */0, + /* RewriteApplied */1 + ]; + var partial_arg$9 = [/* Deactivate */3]; + return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk(activate(setup, undefined, undefined), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg, param); + })), (function (param) { + return insertChar(setup, "a"); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$1, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("a", Editor$AgdaModeVscode.$$Text.getAll($$document)); + })), (function (param) { + return insertChar(setup, "s"); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$2, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("as", Editor$AgdaModeVscode.$$Text.getAll($$document)); + })), (function (param) { + return insertChar(setup, "t"); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$3, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("∗", Editor$AgdaModeVscode.$$Text.getAll($$document)); + })), (function (param) { + return insertChar(setup, "e"); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$4, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("∗e", Editor$AgdaModeVscode.$$Text.getAll($$document)); + })), (function (param) { + return insertChar(setup, "r"); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$5, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("∗er", Editor$AgdaModeVscode.$$Text.getAll($$document)); + })), (function (param) { + return insertChar(setup, "i"); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$6, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("∗eri", Editor$AgdaModeVscode.$$Text.getAll($$document)); + })), (function (param) { + return insertChar(setup, "s"); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$7, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("∗eris", Editor$AgdaModeVscode.$$Text.getAll($$document)); + })), (function (param) { + return insertChar(setup, "k"); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$8, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("⁎", Editor$AgdaModeVscode.$$Text.getAll($$document)); + })), (function (param) { + return deactivate(setup); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$9, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("⁎", Editor$AgdaModeVscode.$$Text.getAll($$document)); + })); + })); + })); })); Mocha$BsMocha.describe("Backspacing")(undefined, undefined, undefined, (function (param) { - return Test__Util$AgdaModeVscode.Q.it("should work just fine", (function (param) { - return $$Promise.flatMapOk(acquire(setup), (function (setup) { - var $$document = setup.editor.document; - var partial_arg = [/* Activate */2]; - var partial_arg$1 = [ - { - _0: [[ - [ - 0, - 1 - ], - "←" - ]], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$2 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$3 = [ - { - _0: [[ - [ - 0, - 1 - ], - "←" - ]], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$4 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$5 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$6 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$7 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$8 = [ - { - _0: [[ - [ - 0, - 6 - ], - "λ" - ]], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$9 = [ - { - _0: [[ - [ - 0, - 0 - ], - "lambd" - ]], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$10 = [/* Deactivate */3]; - return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk(activate(setup, undefined, undefined), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg, param); - })), (function (param) { - return insertChar(setup, "l"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$1, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("←", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "a"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$2, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("←a", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return backspace(setup); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$3, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("←", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "a"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$4, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("←a", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "m"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$5, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("←am", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "b"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$6, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("←amb", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "d"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$7, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("←ambd", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "a"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$8, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("λ", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return backspace(setup); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$9, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("lambd", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return deactivate(setup); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$10, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("lambd", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })); - })); - })); + Test__Util$AgdaModeVscode.Q.it("should work just fine", (function (param) { + return $$Promise.flatMapOk(acquire(setup), (function (setup) { + var $$document = setup.editor.document; + var partial_arg = [/* Activate */2]; + var partial_arg$1 = [ + { + _0: [[ + [ + 0, + 1 + ], + "←" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + /* UpdateView */0, + /* RewriteApplied */1 + ]; + var partial_arg$2 = [ + { + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + /* UpdateView */0, + /* RewriteApplied */1 + ]; + var partial_arg$3 = [ + { + _0: [[ + [ + 0, + 1 + ], + "←" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + /* UpdateView */0, + /* RewriteApplied */1 + ]; + var partial_arg$4 = [ + { + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + /* UpdateView */0, + /* RewriteApplied */1 + ]; + var partial_arg$5 = [ + { + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + /* UpdateView */0, + /* RewriteApplied */1 + ]; + var partial_arg$6 = [ + { + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + /* UpdateView */0, + /* RewriteApplied */1 + ]; + var partial_arg$7 = [ + { + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + /* UpdateView */0, + /* RewriteApplied */1 + ]; + var partial_arg$8 = [ + { + _0: [[ + [ + 0, + 6 + ], + "λ" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + /* UpdateView */0, + /* RewriteApplied */1 + ]; + var partial_arg$9 = [ + { + _0: [[ + [ + 0, + 0 + ], + "lambd" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + /* UpdateView */0, + /* RewriteApplied */1 + ]; + var partial_arg$10 = [/* Deactivate */3]; + return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk(activate(setup, undefined, undefined), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg, param); + })), (function (param) { + return insertChar(setup, "l"); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$1, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("←", Editor$AgdaModeVscode.$$Text.getAll($$document)); + })), (function (param) { + return insertChar(setup, "a"); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$2, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("←a", Editor$AgdaModeVscode.$$Text.getAll($$document)); + })), (function (param) { + return backspace(setup); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$3, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("←", Editor$AgdaModeVscode.$$Text.getAll($$document)); + })), (function (param) { + return insertChar(setup, "a"); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$4, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("←a", Editor$AgdaModeVscode.$$Text.getAll($$document)); + })), (function (param) { + return insertChar(setup, "m"); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$5, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("←am", Editor$AgdaModeVscode.$$Text.getAll($$document)); + })), (function (param) { + return insertChar(setup, "b"); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$6, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("←amb", Editor$AgdaModeVscode.$$Text.getAll($$document)); + })), (function (param) { + return insertChar(setup, "d"); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$7, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("←ambd", Editor$AgdaModeVscode.$$Text.getAll($$document)); + })), (function (param) { + return insertChar(setup, "a"); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$8, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("λ", Editor$AgdaModeVscode.$$Text.getAll($$document)); + })), (function (param) { + return backspace(setup); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$9, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("lambd", Editor$AgdaModeVscode.$$Text.getAll($$document)); + })), (function (param) { + return deactivate(setup); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$10, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("lambd", Editor$AgdaModeVscode.$$Text.getAll($$document)); + })); + })); + })); })); Mocha$BsMocha.describe("Abortion")(undefined, undefined, undefined, (function (param) { Test__Util$AgdaModeVscode.Q.it("should abort after hitting escape", (function (param) { @@ -799,49 +800,49 @@ Mocha$BsMocha.describe("Input Method (Editor)")(undefined, undefined, undefined, })); })); })); - return Test__Util$AgdaModeVscode.Q.it("should abort after backspacing to much", (function (param) { - return $$Promise.flatMapOk(acquire(setup), (function (setup) { - var $$document = setup.editor.document; - var partial_arg = [/* Activate */2]; - var partial_arg$1 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$2 = [ - { - _0: [[ - [ - 0, - 0 - ], - "" - ]], - [Symbol.for("name")]: "RewriteIssued" - }, - /* Deactivate */3, - /* RewriteApplied */1 - ]; - return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk(activate(setup, undefined, undefined), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg, param); - })), (function (param) { - return insertChar(setup, "a"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$1, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("a", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return backspace(setup); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$2, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })); - })); - })); + Test__Util$AgdaModeVscode.Q.it("should abort after backspacing to much", (function (param) { + return $$Promise.flatMapOk(acquire(setup), (function (setup) { + var $$document = setup.editor.document; + var partial_arg = [/* Activate */2]; + var partial_arg$1 = [ + { + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + /* UpdateView */0, + /* RewriteApplied */1 + ]; + var partial_arg$2 = [ + { + _0: [[ + [ + 0, + 0 + ], + "" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + /* Deactivate */3, + /* RewriteApplied */1 + ]; + return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk(activate(setup, undefined, undefined), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg, param); + })), (function (param) { + return insertChar(setup, "a"); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$1, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("a", Editor$AgdaModeVscode.$$Text.getAll($$document)); + })), (function (param) { + return backspace(setup); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$2, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("", Editor$AgdaModeVscode.$$Text.getAll($$document)); + })); + })); + })); })); Mocha$BsMocha.describe("Cursor")(undefined, undefined, undefined, (function (param) { Test__Util$AgdaModeVscode.Q.it("should not abort when the cursor is placed inside the buffer", (function (param) { @@ -952,287 +953,76 @@ Mocha$BsMocha.describe("Input Method (Editor)")(undefined, undefined, undefined, })); })); })); - return Test__Util$AgdaModeVscode.Q.it("should abort when the cursor is placed outside the buffer", (function (param) { - return $$Promise.flatMapOk(acquire(setup), (function (setup) { - var positions = [new Vscode.Position(0, 3)]; - var $$document = setup.editor.document; - var partial_arg = [/* Activate */2]; - var partial_arg$1 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$2 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$3 = [/* Deactivate */3]; - return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMap(Editor$AgdaModeVscode.$$Text.insert($$document, new Vscode.Position(0, 0), "123"), (function (param) { - return activate(setup, positions, undefined); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg, param); - })), (function (param) { - return insertChar(setup, "a"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$1, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("123a", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "n"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$2, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("123an", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return selectAndWait(setup, [[ - 1, - 1 - ]]); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$3, param); - })); - })); - })); - })); - return Mocha$BsMocha.describe("Multiple cursors at once")(undefined, undefined, undefined, (function (param) { - var partial_arg = /\r\n/g; - var replaceCRLF = function (param) { - return param.replace(partial_arg, "\n"); - }; - Test__Util$AgdaModeVscode.Q.it("should work just fine (𝕟)", (function (param) { - var positions = [ - new Vscode.Position(0, 0), - new Vscode.Position(1, 0), - new Vscode.Position(2, 0), - new Vscode.Position(3, 0) - ]; - return $$Promise.flatMapOk(acquire(setup), (function (setup) { - var $$document = setup.editor.document; - var partial_arg = [/* Activate */2]; - return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMap(Editor$AgdaModeVscode.$$Text.insert($$document, new Vscode.Position(0, 0), "\n\n\n"), (function (param) { - return activate(setup, positions, undefined); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg, param); - })), (function (param) { - return insertChar(setup, "b"); - })), (function (actual) { - if (Test__Util$AgdaModeVscode.onUnix) { - var xs = [ - { - _0: [ - [ - [ - 0, - 1 - ], - "♭" - ], - [ - [ - 2, - 3 - ], - "♭" - ], - [ - [ - 4, - 5 - ], - "♭" - ], - [ - [ - 6, - 7 - ], - "♭" - ] - ], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - return Test__Util$AgdaModeVscode.A.deep_equal(xs, actual); - } - var xs$1 = [ - { - _0: [ - [ - [ - 0, - 1 - ], - "♭" - ], - [ - [ - 3, - 4 - ], - "♭" - ], - [ - [ - 6, - 7 - ], - "♭" - ], - [ - [ - 9, - 10 - ], - "♭" - ] - ], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - return Test__Util$AgdaModeVscode.A.deep_equal(xs$1, actual); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("♭\n♭\n♭\n♭", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); - })), (function (param) { - return insertChar(setup, "n"); - })), (function (actual) { - if (Test__Util$AgdaModeVscode.onUnix) { - var xs = [ - { - _0: [ - [ - [ - 0, - 2 - ], - "𝕟" - ], - [ - [ - 3, - 5 - ], - "𝕟" - ], - [ - [ - 6, - 8 - ], - "𝕟" - ], - [ - [ - 9, - 11 - ], - "𝕟" - ] - ], - [Symbol.for("name")]: "RewriteIssued" - }, - /* Deactivate */3, - /* RewriteApplied */1 - ]; - return Test__Util$AgdaModeVscode.A.deep_equal(xs, actual); - } - var xs$1 = [ - { - _0: [ - [ - [ - 0, - 2 - ], - "𝕟" - ], - [ - [ - 4, - 6 - ], - "𝕟" - ], - [ - [ - 8, - 10 - ], - "𝕟" - ], - [ - [ - 12, - 14 - ], - "𝕟" - ] - ], - [Symbol.for("name")]: "RewriteIssued" - }, - /* Deactivate */3, - /* RewriteApplied */1 - ]; - return Test__Util$AgdaModeVscode.A.deep_equal(xs$1, actual); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("𝕟\n𝕟\n𝕟\n𝕟", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); - })); - })); - })); - return Test__Util$AgdaModeVscode.Q.it("should work just fine (∧)", (function (param) { - return $$Promise.flatMapOk(acquire(setup), (function (setup) { - var positions = [ - new Vscode.Position(0, 0), - new Vscode.Position(1, 1), - new Vscode.Position(2, 2), - new Vscode.Position(3, 3) - ]; - var $$document = setup.editor.document; - var partial_arg = [/* Activate */2]; - var partial_arg$1 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$2 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMap(Editor$AgdaModeVscode.$$Text.insert($$document, new Vscode.Position(0, 0), "123\n123\n123\n123"), (function (param) { - return activate(setup, positions, undefined); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg, param); - })), (function (param) { - return insertChar(setup, "a"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$1, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("a123\n1a23\n12a3\n123a", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); + Test__Util$AgdaModeVscode.Q.it("should abort when the cursor is placed outside the buffer", (function (param) { + return $$Promise.flatMapOk(acquire(setup), (function (setup) { + var positions = [new Vscode.Position(0, 3)]; + var $$document = setup.editor.document; + var partial_arg = [/* Activate */2]; + var partial_arg$1 = [ + { + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + /* UpdateView */0, + /* RewriteApplied */1 + ]; + var partial_arg$2 = [ + { + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + /* UpdateView */0, + /* RewriteApplied */1 + ]; + var partial_arg$3 = [/* Deactivate */3]; + return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMap(Editor$AgdaModeVscode.$$Text.insert($$document, new Vscode.Position(0, 0), "123"), (function (param) { + return activate(setup, positions, undefined); })), (function (param) { - return insertChar(setup, "n"); + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg, param); })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$2, param); + return insertChar(setup, "a"); })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("an123\n1an23\n12an3\n123an", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$1, param); })), (function (param) { - return insertChar(setup, "d"); + return Test__Util$AgdaModeVscode.A.equal("123a", Editor$AgdaModeVscode.$$Text.getAll($$document)); + })), (function (param) { + return insertChar(setup, "n"); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$2, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("123an", Editor$AgdaModeVscode.$$Text.getAll($$document)); + })), (function (param) { + return selectAndWait(setup, [[ + 1, + 1 + ]]); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$3, param); + })); + })); + })); + })); + Mocha$BsMocha.describe("Multiple cursors at once")(undefined, undefined, undefined, (function (param) { + var partial_arg = /\\r\\n/g; + var replaceCRLF = function (param) { + return Js_string.replaceByRe(partial_arg, "\n", param); + }; + Test__Util$AgdaModeVscode.Q.it("should work just fine (𝕟)", (function (param) { + var positions = [ + new Vscode.Position(0, 0), + new Vscode.Position(1, 0), + new Vscode.Position(2, 0), + new Vscode.Position(3, 0) + ]; + return $$Promise.flatMapOk(acquire(setup), (function (setup) { + var $$document = setup.editor.document; + var partial_arg = [/* Activate */2]; + return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMap(Editor$AgdaModeVscode.$$Text.insert($$document, new Vscode.Position(0, 0), "\n\n\n"), (function (param) { + return activate(setup, positions, undefined); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg, param); + })), (function (param) { + return insertChar(setup, "b"); })), (function (actual) { if (Test__Util$AgdaModeVscode.onUnix) { var xs = [ @@ -1241,30 +1031,30 @@ Mocha$BsMocha.describe("Input Method (Editor)")(undefined, undefined, undefined, [ [ 0, - 3 + 1 ], - "∧" + "♭" ], [ [ - 8, - 11 + 2, + 3 ], - "∧" + "♭" ], [ [ - 16, - 19 + 4, + 5 ], - "∧" + "♭" ], [ [ - 24, - 27 + 6, + 7 ], - "∧" + "♭" ] ], [Symbol.for("name")]: "RewriteIssued" @@ -1280,30 +1070,30 @@ Mocha$BsMocha.describe("Input Method (Editor)")(undefined, undefined, undefined, [ [ 0, - 3 + 1 ], - "∧" + "♭" ], [ [ - 9, - 12 + 3, + 4 ], - "∧" + "♭" ], [ [ - 18, - 21 + 6, + 7 ], - "∧" + "♭" ], [ [ - 27, - 30 + 9, + 10 ], - "∧" + "♭" ] ], [Symbol.for("name")]: "RewriteIssued" @@ -1313,11 +1103,222 @@ Mocha$BsMocha.describe("Input Method (Editor)")(undefined, undefined, undefined, ]; return Test__Util$AgdaModeVscode.A.deep_equal(xs$1, actual); })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("∧123\n1∧23\n12∧3\n123∧", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); - })); - })); - })); - })); + return Test__Util$AgdaModeVscode.A.equal("♭\\n♭\\n♭\\n♭", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); + })), (function (param) { + return insertChar(setup, "n"); + })), (function (actual) { + if (Test__Util$AgdaModeVscode.onUnix) { + var xs = [ + { + _0: [ + [ + [ + 0, + 2 + ], + "𝕟" + ], + [ + [ + 3, + 5 + ], + "𝕟" + ], + [ + [ + 6, + 8 + ], + "𝕟" + ], + [ + [ + 9, + 11 + ], + "𝕟" + ] + ], + [Symbol.for("name")]: "RewriteIssued" + }, + /* Deactivate */3, + /* RewriteApplied */1 + ]; + return Test__Util$AgdaModeVscode.A.deep_equal(xs, actual); + } + var xs$1 = [ + { + _0: [ + [ + [ + 0, + 2 + ], + "𝕟" + ], + [ + [ + 4, + 6 + ], + "𝕟" + ], + [ + [ + 8, + 10 + ], + "𝕟" + ], + [ + [ + 12, + 14 + ], + "𝕟" + ] + ], + [Symbol.for("name")]: "RewriteIssued" + }, + /* Deactivate */3, + /* RewriteApplied */1 + ]; + return Test__Util$AgdaModeVscode.A.deep_equal(xs$1, actual); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("𝕟\\n𝕟\\n𝕟\\n𝕟", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); + })); + })); + })); + Test__Util$AgdaModeVscode.Q.it("should work just fine (∧)", (function (param) { + return $$Promise.flatMapOk(acquire(setup), (function (setup) { + var positions = [ + new Vscode.Position(0, 0), + new Vscode.Position(1, 1), + new Vscode.Position(2, 2), + new Vscode.Position(3, 3) + ]; + var $$document = setup.editor.document; + var partial_arg = [/* Activate */2]; + var partial_arg$1 = [ + { + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + /* UpdateView */0, + /* RewriteApplied */1 + ]; + var partial_arg$2 = [ + { + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + /* UpdateView */0, + /* RewriteApplied */1 + ]; + return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMap(Editor$AgdaModeVscode.$$Text.insert($$document, new Vscode.Position(0, 0), "123\n123\n123\n123"), (function (param) { + return activate(setup, positions, undefined); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg, param); + })), (function (param) { + return insertChar(setup, "a"); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$1, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("a123\\n1a23\\n12a3\\n123a", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); + })), (function (param) { + return insertChar(setup, "n"); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$2, param); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("an123\\n1an23\\n12an3\\n123an", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); + })), (function (param) { + return insertChar(setup, "d"); + })), (function (actual) { + if (Test__Util$AgdaModeVscode.onUnix) { + var xs = [ + { + _0: [ + [ + [ + 0, + 3 + ], + "∧" + ], + [ + [ + 8, + 11 + ], + "∧" + ], + [ + [ + 16, + 19 + ], + "∧" + ], + [ + [ + 24, + 27 + ], + "∧" + ] + ], + [Symbol.for("name")]: "RewriteIssued" + }, + /* UpdateView */0, + /* RewriteApplied */1 + ]; + return Test__Util$AgdaModeVscode.A.deep_equal(xs, actual); + } + var xs$1 = [ + { + _0: [ + [ + [ + 0, + 3 + ], + "∧" + ], + [ + [ + 9, + 12 + ], + "∧" + ], + [ + [ + 18, + 21 + ], + "∧" + ], + [ + [ + 27, + 30 + ], + "∧" + ] + ], + [Symbol.for("name")]: "RewriteIssued" + }, + /* UpdateView */0, + /* RewriteApplied */1 + ]; + return Test__Util$AgdaModeVscode.A.deep_equal(xs$1, actual); + })), (function (param) { + return Test__Util$AgdaModeVscode.A.equal("∧123\\n1∧23\\n12∧3\\n123∧", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); + })); + })); + })); + })); })); var Js$p; diff --git a/lib/js/test/tests/Test__Tokens.bs.js b/lib/js/test/tests/Test__Tokens.bs.js index 3763f208..f3369413 100644 --- a/lib/js/test/tests/Test__Tokens.bs.js +++ b/lib/js/test/tests/Test__Tokens.bs.js @@ -10,53 +10,53 @@ var Test__Util$AgdaModeVscode = require("./Test__Util.bs.js"); Mocha$BsMocha.describe("Tokens")(10000, undefined, undefined, (function (param) { var context = Test__Util$AgdaModeVscode.Agda.make(undefined, "GotoDefinition.agda"); - return Mocha$BsMocha.describe("GotoDefinition.agda")(undefined, undefined, undefined, (function (param) { - Test__Util$AgdaModeVscode.Q.it("should produce 28 tokens", (function (param) { - return $$Promise.flatMapOk($$Promise.flatMap(context, Test__Util$AgdaModeVscode.Agda.load), (function (param) { - var tokens = Belt_Array.map(Tokens$AgdaModeVscode.toArray(param[1].tokens), (function (param) { - return Editor$AgdaModeVscode.$$Range.toString(param[1]) + " " + Tokens$AgdaModeVscode.Token.toString(param[0]); - })); - return Test__Util$AgdaModeVscode.A.deep_equal(28, tokens.length); - })); - })); - return Test__Util$AgdaModeVscode.Q.it("should produce correct tokens", (function (param) { - return $$Promise.flatMapOk($$Promise.flatMap(context, Test__Util$AgdaModeVscode.Agda.load), (function (param) { - var tokens = Belt_Array.map(Tokens$AgdaModeVscode.toArray(param[1].tokens), (function (param) { - return Editor$AgdaModeVscode.$$Range.toString(param[1]) + " " + Tokens$AgdaModeVscode.Token.toString(param[0]); - })); - return Test__Util$AgdaModeVscode.A.deep_equal([ - "0:0-6 Token (0, 6) [Keyword]", - "0:7-21 Token (7, 21) [Module] [src: 1]", - "0:22-27 Token (22, 27) [Keyword]", - "1:0-4 Token (28, 32) [Keyword]", - "1:5-6 Token (33, 34) [Datatype] [src: 34]", - "1:7-8 Token (35, 36) [Symbol]", - "1:9-12 Token (37, 40) [Primitive] [src: 326]", - "1:13-18 Token (41, 46) [Keyword]", - "2:2-3 Token (49, 50) [ConstructorInductive] [src: 50]", - "2:4-5 Token (51, 52) [Symbol]", - "2:6-7 Token (53, 54) [Datatype] [src: 34]", - "3:2-3 Token (57, 58) [ConstructorInductive] [src: 58]", - "3:4-5 Token (59, 60) [Symbol]", - "3:6-7 Token (61, 62) [Datatype] [src: 34]", - "3:8-9 Token (63, 64) [Symbol]", - "3:10-11 Token (65, 66) [Datatype] [src: 34]", - "5:0-3 Token (68, 71) [Function, Operator] [src: 69]", - "5:4-5 Token (72, 73) [Symbol]", - "5:6-7 Token (74, 75) [Datatype] [src: 34]", - "5:8-9 Token (76, 77) [Symbol]", - "5:10-11 Token (78, 79) [Datatype] [src: 34]", - "5:12-13 Token (80, 81) [Symbol]", - "5:14-15 Token (82, 83) [Datatype] [src: 34]", - "6:0-1 Token (84, 85) [Bound] [src: 85]", - "6:2-3 Token (86, 87) [Function, Operator] [src: 69]", - "6:4-5 Token (88, 89) [Bound] [src: 89]", - "6:6-7 Token (90, 91) [Symbol]", - "6:8-15 Token (92, 99) [Hole]" - ], tokens); - })); - })); - })); + Mocha$BsMocha.describe("GotoDefinition.agda")(undefined, undefined, undefined, (function (param) { + Test__Util$AgdaModeVscode.Q.it("should produce 28 tokens", (function (param) { + return $$Promise.flatMapOk($$Promise.flatMap(context, Test__Util$AgdaModeVscode.Agda.load), (function (param) { + var tokens = Belt_Array.map(Tokens$AgdaModeVscode.toArray(param[1].tokens), (function (param) { + return Editor$AgdaModeVscode.$$Range.toString(param[1]) + " " + Tokens$AgdaModeVscode.Token.toString(param[0]); + })); + return Test__Util$AgdaModeVscode.A.deep_equal(28, tokens.length); + })); + })); + Test__Util$AgdaModeVscode.Q.it("should produce correct tokens", (function (param) { + return $$Promise.flatMapOk($$Promise.flatMap(context, Test__Util$AgdaModeVscode.Agda.load), (function (param) { + var tokens = Belt_Array.map(Tokens$AgdaModeVscode.toArray(param[1].tokens), (function (param) { + return Editor$AgdaModeVscode.$$Range.toString(param[1]) + " " + Tokens$AgdaModeVscode.Token.toString(param[0]); + })); + return Test__Util$AgdaModeVscode.A.deep_equal([ + "0:0-6 Token (0, 6) [Keyword]", + "0:7-21 Token (7, 21) [Module] [src: 1]", + "0:22-27 Token (22, 27) [Keyword]", + "1:0-4 Token (28, 32) [Keyword]", + "1:5-6 Token (33, 34) [Datatype] [src: 34]", + "1:7-8 Token (35, 36) [Symbol]", + "1:9-12 Token (37, 40) [Primitive] [src: 326]", + "1:13-18 Token (41, 46) [Keyword]", + "2:2-3 Token (49, 50) [ConstructorInductive] [src: 50]", + "2:4-5 Token (51, 52) [Symbol]", + "2:6-7 Token (53, 54) [Datatype] [src: 34]", + "3:2-3 Token (57, 58) [ConstructorInductive] [src: 58]", + "3:4-5 Token (59, 60) [Symbol]", + "3:6-7 Token (61, 62) [Datatype] [src: 34]", + "3:8-9 Token (63, 64) [Symbol]", + "3:10-11 Token (65, 66) [Datatype] [src: 34]", + "5:0-3 Token (68, 71) [Function, Operator] [src: 69]", + "5:4-5 Token (72, 73) [Symbol]", + "5:6-7 Token (74, 75) [Datatype] [src: 34]", + "5:8-9 Token (76, 77) [Symbol]", + "5:10-11 Token (78, 79) [Datatype] [src: 34]", + "5:12-13 Token (80, 81) [Symbol]", + "5:14-15 Token (82, 83) [Datatype] [src: 34]", + "6:0-1 Token (84, 85) [Bound] [src: 85]", + "6:2-3 Token (86, 87) [Function, Operator] [src: 69]", + "6:4-5 Token (88, 89) [Bound] [src: 89]", + "6:6-7 Token (90, 91) [Symbol]", + "6:8-15 Token (92, 99) [Hole]" + ], tokens); + })); + })); + })); })); /* Not a pure module */ diff --git a/lib/js/test/tests/Test__Util.bs.js b/lib/js/test/tests/Test__Util.bs.js index 7de8c6d4..1c71de68 100644 --- a/lib/js/test/tests/Test__Util.bs.js +++ b/lib/js/test/tests/Test__Util.bs.js @@ -11,7 +11,10 @@ var Curry = require("rescript/lib/js/curry.js"); var Vscode = require("vscode"); var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Process = require("process"); +var Js_array = require("rescript/lib/js/js_array.js"); +var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); +var Js_promise = require("rescript/lib/js/js_promise.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Assert$BsMocha = require("bs-mocha/lib/js/src/Assert.bs.js"); var Caml_exceptions = require("rescript/lib/js/caml_exceptions.js"); @@ -124,56 +127,56 @@ function wait(ms) { function toPromise(f) { return new Promise((function (resolve, reject) { - return $$Promise.get(f, (function (x) { - if (x.TAG === /* Ok */0) { - return resolve(x._0); - } else { - return reject(x._0); - } - })); + $$Promise.get(f, (function (x) { + if (x.TAG === /* Ok */0) { + return resolve(x._0); + } else { + return reject(x._0); + } + })); })); } function it(s, f) { - return Promise$BsMocha.it(s)(undefined, undefined, undefined, (function (param) { - return toPromise(Curry._1(f, undefined)); - })); + Promise$BsMocha.it(s)(undefined, undefined, undefined, (function (param) { + return toPromise(Curry._1(f, undefined)); + })); } function it_only(s, f) { - return Promise$BsMocha.it_only(s)(undefined, undefined, undefined, (function (param) { - return toPromise(Curry._1(f, undefined)); - })); + Promise$BsMocha.it_only(s)(undefined, undefined, undefined, (function (param) { + return toPromise(Curry._1(f, undefined)); + })); } function it_skip(s, f) { - return Promise$BsMocha.it_skip(s)(undefined, undefined, undefined, (function (param) { - return toPromise(Curry._1(f, undefined)); - })); + Promise$BsMocha.it_skip(s)(undefined, undefined, undefined, (function (param) { + return toPromise(Curry._1(f, undefined)); + })); } function before(f) { - return Promise$BsMocha.before(undefined)(undefined, undefined, undefined, (function (param) { - return toPromise(Curry._1(f, undefined)); - })); + Promise$BsMocha.before(undefined)(undefined, undefined, undefined, (function (param) { + return toPromise(Curry._1(f, undefined)); + })); } function before_each(f) { - return Promise$BsMocha.before_each(undefined)(undefined, undefined, undefined, (function (param) { - return toPromise(Curry._1(f, undefined)); - })); + Promise$BsMocha.before_each(undefined)(undefined, undefined, undefined, (function (param) { + return toPromise(Curry._1(f, undefined)); + })); } function after(f) { - return Promise$BsMocha.after(undefined)(undefined, undefined, undefined, (function (param) { - return toPromise(Curry._1(f, undefined)); - })); + Promise$BsMocha.after(undefined)(undefined, undefined, undefined, (function (param) { + return toPromise(Curry._1(f, undefined)); + })); } function after_each(f) { - return Promise$BsMocha.after_each(undefined)(undefined, undefined, undefined, (function (param) { - return toPromise(Curry._1(f, undefined)); - })); + Promise$BsMocha.after_each(undefined)(undefined, undefined, undefined, (function (param) { + return toPromise(Curry._1(f, undefined)); + })); } var Q = { @@ -189,25 +192,25 @@ var Q = { function equal(expected, actual) { return runner(function (param) { - return Assert$BsMocha.equal(undefined, actual, expected); + Assert$BsMocha.equal(undefined, actual, expected); }); } function deep_equal(expected, actual) { return runner(function (param) { - return Assert$BsMocha.deep_equal(undefined, actual, expected); + Assert$BsMocha.deep_equal(undefined, actual, expected); }); } function deep_strict_equal(expected, actual) { return runner(function (param) { - return Assert$BsMocha.deep_strict_equal(undefined, actual, expected); + Assert$BsMocha.deep_strict_equal(undefined, actual, expected); }); } function fail(value) { return runner(function (param) { - return Assert$BsMocha.fail(value); + Assert$BsMocha.fail(value); }); } @@ -219,15 +222,15 @@ var A = { }; function normalize(string) { - return string.trim().replace(/\r\n|\r/g, "\n"); + return Js_string.replaceByRe(/\\r\\n|\\r/g, "\n", string.trim()); } function serialize(xs) { - return xs.join("\n"); + return Js_array.joinWith("\n", xs); } function serializeWith(f, xs) { - return Belt_Array.map(xs, f).join("\n"); + return Js_array.joinWith("\n", Belt_Array.map(xs, f)); } function breakInput(input, breakpoints) { @@ -246,7 +249,7 @@ function breakInput(input, breakpoints) { ]; } })), (function (param) { - return input.substr(param[0], param[1]); + return Js_string.substrAtMost(param[0], param[1], input); })); } @@ -338,23 +341,22 @@ function getGoldenFilepaths(directoryPath) { var directoryPath$1 = toAbsolute(directoryPath); var readdir = Util.promisify(function (prim0, prim1) { Fs.readdir(prim0, prim1); - }); var isInFile = function (param) { - return param.endsWith(".in"); + return Js_string.endsWith(".in", param); }; var toBasename = function (path) { return Path.join(directoryPath$1, Path.basename(path, ".in")); }; - return readdir(directoryPath$1).then(function (paths) { - return Promise.resolve(Belt_Array.map(Belt_Array.keep(paths, isInFile), toBasename)); - }); + return Js_promise.then_((function (paths) { + return Promise.resolve(Belt_Array.map(Belt_Array.keep(paths, isInFile), toBasename)); + }), readdir(directoryPath$1)); } function getGoldenFilepathsSync(directoryPath) { var directoryPath$1 = toAbsolute(directoryPath); var isInFile = function (param) { - return param.endsWith(".in"); + return Js_string.endsWith(".in", param); }; var toBasename = function (path) { return Path.join(directoryPath$1, Path.basename(path, ".in")); @@ -377,27 +379,26 @@ function readFile(filepath) { var filepath$1 = toAbsolute(filepath); var readFile$1 = Util.promisify(function (prim0, prim1) { Fs.readFile(prim0, prim1); - }); - return Promise.all([ - readFile$1(filepath$1 + ".in"), - readFile$1(filepath$1 + ".out") - ]).then(function (x) { - if (x.length !== 2) { - return Promise.reject({ - RE_EXN_ID: FileMissing, - _1: filepath$1 + return Js_promise.then_((function (x) { + if (x.length !== 2) { + return Promise.reject({ + RE_EXN_ID: FileMissing, + _1: filepath$1 + }); + } + var input = x[0]; + var output = x[1]; + return Promise.resolve({ + _0: filepath$1, + _1: input.toString(), + _2: normalize(output.toString()), + [Symbol.for("name")]: "Golden" }); - } - var input = x[0]; - var output = x[1]; - return Promise.resolve({ - _0: filepath$1, - _1: input.toString(), - _2: normalize(output.toString()), - [Symbol.for("name")]: "Golden" - }); - }); + }), Promise.all([ + readFile$1(filepath$1 + ".in"), + readFile$1(filepath$1 + ".out") + ])); } function compare(param) { @@ -407,8 +408,8 @@ function compare(param) { var count = param[1]; var diff = param[0]; var value = diff._0; - var expected$1 = expected.substr(Caml.caml_int_max(0, count - 50 | 0), (50 + value.length | 0) + 50 | 0); - var actual$1 = actual.substr(Caml.caml_int_max(0, count - 50 | 0), (50 + value.length | 0) + 50 | 0); + var expected$1 = Js_string.substrAtMost(Caml.int_max(0, count - 50 | 0), (50 + value.length | 0) + 50 | 0, expected); + var actual$1 = Js_string.substrAtMost(Caml.int_max(0, count - 50 | 0), (50 + value.length | 0) + 50 | 0, actual); switch (diff.TAG | 0) { case /* Added */0 : case /* Removed */1 : @@ -437,7 +438,7 @@ var onUnix = match === "Windows_NT" ? false : true; function toString(x) { if (x.TAG === /* LanguageServerMuleErrors */0) { - return Belt_Array.map(x._0, Source$LanguageServerMule.$$Error.toString).join(","); + return Js_array.joinWith(",", Belt_Array.map(x._0, Source$LanguageServerMule.$$Error.toString)); } var match = Connection__Emacs__Error$AgdaModeVscode.toString(x._0); return "EmacsConnectionError: " + match[0] + ": " + match[1]; @@ -467,10 +468,10 @@ function exists(command) { }); } })), (function (errors) { - var msg = Belt_Array.map(errors, Source$LanguageServerMule.$$Error.toString).join(","); + var msg = Js_array.joinWith(",", Belt_Array.map(errors, Source$LanguageServerMule.$$Error.toString)); var value = "Cannot find \"Agda\" in PATH: " + msg; return runner(function (param) { - return Assert$BsMocha.fail(value); + Assert$BsMocha.fail(value); }); })); } @@ -522,12 +523,12 @@ function load(self) { var match = Connection__Error$AgdaModeVscode.toString(result._0); var value = match[0] + "\n" + match[1]; return runner(function (param) { - return Assert$BsMocha.fail(value); + Assert$BsMocha.fail(value); }); } var value$1 = "Cannot load " + self.filepath; return runner(function (param) { - return Assert$BsMocha.fail(value$1); + Assert$BsMocha.fail(value$1); }); })); } @@ -541,7 +542,7 @@ function $$case(cursorAndPayload, param) { } var cursor = cursorAndPayload[0]; return $$Promise.tap(Editor$AgdaModeVscode.$$Text.insert(state.document, cursor, cursorAndPayload[1]), (function (param) { - return Editor$AgdaModeVscode.Cursor.set(editor, cursor); + Editor$AgdaModeVscode.Cursor.set(editor, cursor); })); })), (function (param) { return Vscode.commands.executeCommand("agda-mode.case"); @@ -560,12 +561,12 @@ function $$case(cursorAndPayload, param) { var match = Connection__Error$AgdaModeVscode.toString(result._0); var value = match[0] + "\n" + match[1]; return runner(function (param) { - return Assert$BsMocha.fail(value); + Assert$BsMocha.fail(value); }); } var value$1 = "Cannot case split " + self.filepath; return runner(function (param) { - return Assert$BsMocha.fail(value$1); + Assert$BsMocha.fail(value$1); }); })); } diff --git a/lib/js/test/tests/TextEditor/Test__AgdaOffset.bs.js b/lib/js/test/tests/TextEditor/Test__AgdaOffset.bs.js index 1dd03549..583858b6 100644 --- a/lib/js/test/tests/TextEditor/Test__AgdaOffset.bs.js +++ b/lib/js/test/tests/TextEditor/Test__AgdaOffset.bs.js @@ -9,7 +9,7 @@ var Promise$BsMocha = require("bs-mocha/lib/js/src/Promise.bs.js"); var Agda$AgdaModeVscode = require("../../../src/Agda.bs.js"); var Editor$AgdaModeVscode = require("../../../src/Editor.bs.js"); -var issue7 = "module Issue7 where\n-- 𝕁\na = {! !}"; +var issue7 = "module Issue7 where\\n-- 𝕁\\na = {! !}"; function openEditorWithContent(content) { return $$Promise.flatMap(Vscode.workspace.openTextDocument({ @@ -24,113 +24,113 @@ Mocha$BsMocha.describe("Conversion between Agda Offsets and Editor Offsets")(und Mocha$BsMocha.describe("Agda.OffsetConverter.characterWidth")(undefined, undefined, undefined, (function (param) { Mocha$BsMocha.it("should calculate the width of some grapheme cluster")(undefined, undefined, undefined, (function (param) { var actual = Agda$AgdaModeVscode.OffsetConverter.characterWidth("𝐀"); - return Assert$BsMocha.deep_equal(undefined, actual, 1); + Assert$BsMocha.deep_equal(undefined, actual, 1); + })); + Mocha$BsMocha.it("should calculate the width of some ordinary ASCII character")(undefined, undefined, undefined, (function (param) { + var actual = Agda$AgdaModeVscode.OffsetConverter.characterWidth("a"); + Assert$BsMocha.deep_equal(undefined, actual, 1); })); - return Mocha$BsMocha.it("should calculate the width of some ordinary ASCII character")(undefined, undefined, undefined, (function (param) { - var actual = Agda$AgdaModeVscode.OffsetConverter.characterWidth("a"); - return Assert$BsMocha.deep_equal(undefined, actual, 1); - })); })); Mocha$BsMocha.describe("Agda.OffsetConverter.computeUTF16SurrogatePairIndices")(undefined, undefined, undefined, (function (param) { - return Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀𝐀𝐀𝐀\n𝐀𝐀𝐀𝐀"), [ - 0, - 2, - 4, - 6, - 9, - 11, - 13, - 15 - ]); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c𝐃dd𝐄e𝐅𝐆𝐇\na"), [ - 0, - 3, - 7, - 10, - 14, - 17, - 19, - 21 - ]); - return Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices(issue7), [23]); - })); + Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀𝐀𝐀𝐀\\n𝐀𝐀𝐀𝐀"), [ + 0, + 2, + 4, + 6, + 9, + 11, + 13, + 15 + ]); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c𝐃dd𝐄e𝐅𝐆𝐇\\na"), [ + 0, + 3, + 7, + 10, + 14, + 17, + 19, + 21 + ]); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices(issue7), [23]); + })); })); Mocha$BsMocha.describe("Common.Indices.make")(undefined, undefined, undefined, (function (param) { - return Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀𝐀𝐀𝐀\n𝐀𝐀𝐀𝐀")))[0], [ - [ - 0, - 0 - ], - [ - 1, - 1 - ], - [ - 2, - 2 - ], - [ - 3, - 3 - ], - [ - 4, - 5 - ], - [ - 6, - 6 - ], - [ - 7, - 7 - ], - [ - 8, - 8 - ] - ]); - return Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c𝐃dd𝐄e𝐅𝐆𝐇\na")))[0], [ - [ - 0, - 0 - ], - [ - 1, - 2 - ], - [ - 3, - 5 - ], - [ - 6, - 7 - ], - [ - 8, - 10 - ], - [ - 11, - 12 - ], - [ - 13, - 13 - ], - [ - 14, - 14 - ] - ]); - })); + Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀𝐀𝐀𝐀\\n𝐀𝐀𝐀𝐀")))[0], [ + [ + 0, + 0 + ], + [ + 1, + 1 + ], + [ + 2, + 2 + ], + [ + 3, + 3 + ], + [ + 4, + 5 + ], + [ + 6, + 6 + ], + [ + 7, + 7 + ], + [ + 8, + 8 + ] + ]); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c𝐃dd𝐄e𝐅𝐆𝐇\\na")))[0], [ + [ + 0, + 0 + ], + [ + 1, + 2 + ], + [ + 3, + 5 + ], + [ + 6, + 7 + ], + [ + 8, + 10 + ], + [ + 11, + 12 + ], + [ + 13, + 13 + ], + [ + 14, + 14 + ] + ]); + })); })); Mocha$BsMocha.describe("Common.Indices.convert")(undefined, undefined, undefined, (function (param) { Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { - var a = Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀𝐀𝐀𝐀\n𝐀𝐀𝐀𝐀")); + var a = Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀𝐀𝐀𝐀\\n𝐀𝐀𝐀𝐀")); Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 0), 0); Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 1), 2); @@ -147,95 +147,95 @@ Mocha$BsMocha.describe("Conversion between Agda Offsets and Editor Offsets")(und Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 7), 13); Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 8), 15); Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 9), 17); - return Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 8); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 8); + })); + Mocha$BsMocha.it("issue #7")(undefined, undefined, undefined, (function (param) { + var a = Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices(issue7)); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 0), 0); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 6), 6); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 14), 14); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 19), 19); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 20), 20); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 24), 25); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 1); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 27), 28); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 28), 29); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 29), 30); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 36), 37); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 1); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 0), 0); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 6), 6); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 7), 7); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 14), 14); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 19), 19); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 20), 20); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 24), 25); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 1); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 0), 0); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); + })); + })); + Mocha$BsMocha.describe("Editor.toUTF8Offset")(undefined, undefined, undefined, (function (param) { + Promise$BsMocha.it("should do it right")(undefined, undefined, undefined, (function (param) { + return $$Promise.Js.toBsPromise($$Promise.map(openEditorWithContent("𝐀a𝐁bb𝐂c\\na"), (function (textEditor) { + Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 0), 0); + Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 1), 1); + Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 2), 1); + Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 3), 2); + Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 5), 3); + Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 6), 4); + Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 7), 5); + Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 9), 6); + Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 10), 7); + Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 11), 8); + Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 12), 9); + }))); + })); + Promise$BsMocha.it("should be a left inverse of Editor.fromUTF8Offset")(undefined, undefined, undefined, (function (param) { + return $$Promise.Js.toBsPromise($$Promise.map(openEditorWithContent("𝐀a𝐁bb𝐂c\\na"), (function (textEditor) { + var g = function (n) { + return Agda$AgdaModeVscode.Indices.convert(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c\\na")), n); + }; + var n = g(0); + Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n), 0); + var n$1 = g(1); + Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$1), 1); + var n$2 = g(2); + Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$2), 2); + var n$3 = g(3); + Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$3), 3); + var n$4 = g(4); + Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$4), 4); + var n$5 = g(5); + Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$5), 5); + var n$6 = g(6); + Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$6), 6); + var n$7 = g(7); + Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$7), 7); + var n$8 = g(8); + Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$8), 8); + var n$9 = g(9); + Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$9), 9); + }))); + })); + Promise$BsMocha.it("should be a right inverse of Editor.fromUTF8Offset ()")(undefined, undefined, undefined, (function (param) { + return $$Promise.Js.toBsPromise($$Promise.map(openEditorWithContent("𝐀a𝐁bb𝐂c\\na"), (function (textEditor) { + var f = function (n) { + return Agda$AgdaModeVscode.Indices.convert(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c\\na")), n); + }; + Assert$BsMocha.equal(undefined, f(Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 0)), 0); + Assert$BsMocha.equal(undefined, f(Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 2)), 2); + Assert$BsMocha.equal(undefined, f(Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 3)), 3); + Assert$BsMocha.equal(undefined, f(Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 5)), 5); + Assert$BsMocha.equal(undefined, f(Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 6)), 6); + Assert$BsMocha.equal(undefined, f(Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 7)), 7); + Assert$BsMocha.equal(undefined, f(Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 9)), 9); + }))); })); - return Mocha$BsMocha.it("issue #7")(undefined, undefined, undefined, (function (param) { - var a = Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices(issue7)); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 0), 0); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 6), 6); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 14), 14); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 19), 19); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 20), 20); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 24), 25); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 1); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 27), 28); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 28), 29); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 29), 30); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 36), 37); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 1); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 0), 0); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 6), 6); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 7), 7); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 14), 14); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 19), 19); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 20), 20); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 24), 25); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 1); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 0), 0); - return Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); - })); })); - return Mocha$BsMocha.describe("Editor.toUTF8Offset")(undefined, undefined, undefined, (function (param) { - Promise$BsMocha.it("should do it right")(undefined, undefined, undefined, (function (param) { - return $$Promise.Js.toBsPromise($$Promise.map(openEditorWithContent("𝐀a𝐁bb𝐂c\na"), (function (textEditor) { - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 0), 0); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 1), 1); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 2), 1); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 3), 2); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 5), 3); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 6), 4); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 7), 5); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 9), 6); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 10), 7); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 11), 8); - return Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 12), 9); - }))); - })); - Promise$BsMocha.it("should be a left inverse of Editor.fromUTF8Offset")(undefined, undefined, undefined, (function (param) { - return $$Promise.Js.toBsPromise($$Promise.map(openEditorWithContent("𝐀a𝐁bb𝐂c\na"), (function (textEditor) { - var g = function (n) { - return Agda$AgdaModeVscode.Indices.convert(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c\na")), n); - }; - var n = g(0); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n), 0); - var n$1 = g(1); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$1), 1); - var n$2 = g(2); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$2), 2); - var n$3 = g(3); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$3), 3); - var n$4 = g(4); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$4), 4); - var n$5 = g(5); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$5), 5); - var n$6 = g(6); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$6), 6); - var n$7 = g(7); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$7), 7); - var n$8 = g(8); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$8), 8); - var n$9 = g(9); - return Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$9), 9); - }))); - })); - return Promise$BsMocha.it("should be a right inverse of Editor.fromUTF8Offset ()")(undefined, undefined, undefined, (function (param) { - return $$Promise.Js.toBsPromise($$Promise.map(openEditorWithContent("𝐀a𝐁bb𝐂c\na"), (function (textEditor) { - var f = function (n) { - return Agda$AgdaModeVscode.Indices.convert(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c\na")), n); - }; - Assert$BsMocha.equal(undefined, f(Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 0)), 0); - Assert$BsMocha.equal(undefined, f(Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 2)), 2); - Assert$BsMocha.equal(undefined, f(Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 3)), 3); - Assert$BsMocha.equal(undefined, f(Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 5)), 5); - Assert$BsMocha.equal(undefined, f(Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 6)), 6); - Assert$BsMocha.equal(undefined, f(Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 7)), 7); - return Assert$BsMocha.equal(undefined, f(Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 9)), 9); - }))); - })); - })); })); var Assert; diff --git a/lib/js/test/tests/TextEditor/Test__LineEnding.bs.js b/lib/js/test/tests/TextEditor/Test__LineEnding.bs.js index f654b6f7..2c0f2410 100644 --- a/lib/js/test/tests/TextEditor/Test__LineEnding.bs.js +++ b/lib/js/test/tests/TextEditor/Test__LineEnding.bs.js @@ -18,49 +18,49 @@ function openEditorWithContent(content) { Mocha$BsMocha.describe("Conversion of offsets between LF and CRLF line endings")(undefined, undefined, undefined, (function (param) { Mocha$BsMocha.describe("Editor.computeCRLFIndices")(undefined, undefined, undefined, (function (param) { - return Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.OffsetConverter.computeCRLFIndices("1234\r\n78"), [4]); - return Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.OffsetConverter.computeCRLFIndices("12\r\n56\r\n90"), [ - 2, - 6 - ]); - })); + Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.OffsetConverter.computeCRLFIndices("1234\\r\\n78"), [4]); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.OffsetConverter.computeCRLFIndices("12\\r\\n56\\r\\n90"), [ + 2, + 6 + ]); + })); })); Mocha$BsMocha.describe("Editor.Indices.make")(undefined, undefined, undefined, (function (param) { - return Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { - return Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeCRLFIndices("12\r\n56\r\n90")))[0], [ - [ - 0, - 2 - ], - [ - 3, - 5 - ] - ]); - })); + Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeCRLFIndices("12\\r\\n56\\r\\n90")))[0], [ + [ + 0, + 2 + ], + [ + 3, + 5 + ] + ]); + })); + })); + Mocha$BsMocha.describe("Editor.Indices.convert")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { + var a = Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeCRLFIndices("12\\r\\n56\\r\\n90")); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 0), 0); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 1), 1); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 2), 2); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 3), 4); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 1); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 4), 5); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 1); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 5), 6); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 1); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 6), 8); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 2); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 7), 9); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 2); + })); })); - return Mocha$BsMocha.describe("Editor.Indices.convert")(undefined, undefined, undefined, (function (param) { - return Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { - var a = Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeCRLFIndices("12\r\n56\r\n90")); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 0), 0); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 1), 1); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 2), 2); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 3), 4); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 1); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 4), 5); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 1); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 5), 6); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 1); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 6), 8); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 2); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 7), 9); - return Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 2); - })); - })); })); var Assert; diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index c1ddd216..00000000 --- a/package-lock.json +++ /dev/null @@ -1,7955 +0,0 @@ -{ - "name": "agda-mode", - "version": "0.3.10", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "agda-mode", - "version": "0.3.10", - "dependencies": { - "@datastructures-js/binary-search-tree": "^4.3.0", - "@glennsl/bs-json": "github:banacorn/bs-json#0c900d3", - "@rescript/react": "^0.10.3", - "bs-nd": "^0.1.5", - "compare-versions": "^3.5.1", - "eventemitter3": ">=4.0.0", - "getos": "^3.2.1", - "language-server-mule": "github:banacorn/language-server-mule#v0.2.3", - "react": "^16.9.0", - "react-dom": "^16.9.0", - "reason-nodejs": "github:banacorn/reason-nodejs#temp", - "reason-promise": ">=1.1.0", - "rescript": "^9.1.4", - "rescript-vscode": "github:banacorn/rescript-vscode#v0.0.17", - "rescript-webapi": ">=0.2.0", - "untildify": "^4.0.0", - "vscode-codicons": "^0.0.7" - }, - "devDependencies": { - "bs-mocha": "^1.0.0", - "copy-webpack-plugin": "^6.0.3", - "glob": "^7.1.6", - "less": "^4.1.1", - "less-loader": "^7.0.2", - "less-watch-compiler": "^1.14.6", - "mocha": "^7.1.2", - "vscode-test": "^1.3.0", - "webpack": "^5.0.0", - "webpack-cli": "^4.2.0" - }, - "engines": { - "vscode": "^1.41.0" - } - }, - "node_modules/@datastructures-js/binary-search-tree": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@datastructures-js/binary-search-tree/-/binary-search-tree-4.3.2.tgz", - "integrity": "sha512-fZV3GoZAPxfgGTky7Q+5oiMUtLhQoHxSlJt3DmUPbl+1pMpuopOSG/MymdcruWOBQU90kSzo0lN+3gmSaEYCTw==" - }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true - }, - "node_modules/@glennsl/bs-json": { - "version": "5.0.2", - "resolved": "git+ssh://git@github.com/banacorn/bs-json.git#0c900d3ad5c06eb2e6513a677096f1ec0411d282", - "license": "(LGPL-3.0 OR MPL-2.0)" - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@rescript/react": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@rescript/react/-/react-0.10.3.tgz", - "integrity": "sha512-Lf9rzrR3bQPKJjOK3PBRa/B3xrJ7CqQ1HYr9VHPVxJidarIJJFZBhj0Dg1uZURX+Wg/xiP0PHFxXmdj2bK8Vxw==", - "peerDependencies": { - "react": ">=16.8.1", - "react-dom": ">=16.8.1" - } - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@types/eslint": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", - "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.6.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.4.tgz", - "integrity": "sha512-I4BD3L+6AWiUobfxZ49DlU43gtI+FTHSv9pE2Zekg6KjMpre4ByusaljW3vYSLJrvQ1ck1hUaeVu8HVlY3vzHg==", - "dev": true - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", - "dev": true, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", - "dev": true, - "dependencies": { - "envinfo": "^7.7.3" - }, - "peerDependencies": { - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", - "dev": true, - "peerDependencies": { - "webpack-cli": "4.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/agent-base/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/agent-base/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", - "dev": true, - "engines": { - "node": ">=0.4.2" - } - }, - "node_modules/ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.reduce": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz", - "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", - "dependencies": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", - "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001370", - "electron-to-chromium": "^1.4.202", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.5" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-mocha": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bs-mocha/-/bs-mocha-1.0.0.tgz", - "integrity": "sha512-/OjgBZdG1YyC/6SEvXihG/sgWFyenQtRJ0TOewo944XwQuDIv82jtrxYjBPbkhGHdLYnc4EfaLdPC+tW86iKEw==", - "dev": true, - "dependencies": { - "mocha": "^6.2.0" - } - }, - "node_modules/bs-mocha/node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/bs-mocha/node_modules/log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "dependencies": { - "chalk": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/bs-mocha/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/bs-mocha/node_modules/mkdirp": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", - "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", - "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/bs-mocha/node_modules/mocha": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.3.tgz", - "integrity": "sha512-0R/3FvjIGH3eEuG17ccFPk117XL2rWxatr81a57D+r/x2uTYZRbdZ4oVidEUMh2W2TJDa7MdAb12Lm2/qrKajg==", - "dev": true, - "dependencies": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "2.2.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.4", - "ms": "2.1.1", - "node-environment-flags": "1.0.5", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/bs-mocha/node_modules/node-environment-flags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", - "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==", - "dev": true, - "dependencies": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - } - }, - "node_modules/bs-mocha/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/bs-nd": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/bs-nd/-/bs-nd-0.1.5.tgz", - "integrity": "sha512-YiIIpMiQ4SvoYZXVWWMMhQIPOmMekdvamsH9FoyHw0BicH/45Vyr9N/JawbEosZF7NV+1INlosljEQDajbmJfA==" - }, - "node_modules/bs-platform": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/bs-platform/-/bs-platform-9.0.2.tgz", - "integrity": "sha512-Ye9JqJ4Oa7mcjjoOVRYI8Uc2Cf8N7jQLWDcdUplY7996d/YErSR7WitmV7XnSwr4EvdrbwjEsg1NxNjUQv3ChA==", - "hasInstallScript": true, - "bin": { - "bsb": "bsb", - "bsc": "bsc", - "bsrefmt": "bsrefmt", - "bstracing": "lib/bstracing" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", - "engines": { - "node": ">=0.2.0" - } - }, - "node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001374", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001374.tgz", - "integrity": "sha512-mWvzatRx3w+j5wx/mpFN5v5twlPrabG8NqX2c6e45LCpymdoGqNvRkRutFUqpRTXKFQFNQJasvK0YT7suW6/Hw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", - "dependencies": { - "traverse": ">=0.3.0 <0.4" - }, - "engines": { - "node": "*" - } - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.1.1" - } - }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, - "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "node_modules/compare-versions": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", - "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/copy-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", - "dev": true, - "dependencies": { - "is-what": "^3.14.1" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/copy-webpack-plugin": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.4.1.tgz", - "integrity": "sha512-MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA==", - "dev": true, - "dependencies": { - "cacache": "^15.0.5", - "fast-glob": "^3.2.4", - "find-cache-dir": "^3.3.1", - "glob-parent": "^5.1.1", - "globby": "^11.0.1", - "loader-utils": "^2.0.0", - "normalize-path": "^3.0.0", - "p-limit": "^3.0.2", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "webpack-sources": "^1.4.3" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", - "dev": true - }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.211", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.211.tgz", - "integrity": "sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "optional": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/es-abstract": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", - "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "regexp.prototype.flags": "^1.4.3", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-abstract/node_modules/object.assign": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.3.tgz", - "integrity": "sha512-ZFJnX3zltyjcYJL0RoCJuzb+11zWGyaDbjgxZbdV7rFEcHQuYxrZqhow67aA7xpes6LhojyFDaBKAFfogQrikA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/flat": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", - "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", - "dev": true, - "dependencies": { - "is-buffer": "~2.0.3" - }, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "deprecated": "\"Please update to latest v2.3 or v2.2\"", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/fstream/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/fstream/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/getos": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", - "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", - "dependencies": { - "async": "^3.2.0" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dev": true, - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "engines": { - "node": ">=4.x" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/http-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/https-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", - "dev": true, - "optional": true, - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/language-server-mule": { - "version": "0.2.3", - "resolved": "git+ssh://git@github.com/banacorn/language-server-mule.git#2caa861918e2bceda9f6c004a8a01b69c9dc8cce", - "license": "MIT", - "dependencies": { - "@glennsl/bs-json": "github:banacorn/bs-json#0c900d3", - "eventemitter3": "^4.0.7", - "unzipper": "^0.10.11", - "vscode-languageclient": "^8.0.0-next.1" - } - }, - "node_modules/less": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", - "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", - "dev": true, - "dependencies": { - "copy-anything": "^2.0.1", - "parse-node-version": "^1.0.1", - "tslib": "^2.3.0" - }, - "bin": { - "lessc": "bin/lessc" - }, - "engines": { - "node": ">=6" - }, - "optionalDependencies": { - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "needle": "^3.1.0", - "source-map": "~0.6.0" - } - }, - "node_modules/less-loader": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-7.3.0.tgz", - "integrity": "sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==", - "dev": true, - "dependencies": { - "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "less": "^3.5.0 || ^4.0.0", - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/less-watch-compiler": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/less-watch-compiler/-/less-watch-compiler-1.16.3.tgz", - "integrity": "sha512-cxGUt8YdPpPPB72w1dfzPVXML5JYgfExXbFvDfG5XBU9qvj6uVjwTY2qOgwvf09Au5p2RvmWVcNps/cMTojJNQ==", - "dev": true, - "dependencies": { - "amdefine": ">= 0.1.0", - "commander": "^8.0.0", - "extend": ">= 2.0.0", - "global": "^4.3.1", - "less": "^4.0.0", - "shelljs": ">= 0.4.0" - }, - "bin": { - "less-watch-compiler": "dist/less-watch-compiler.js" - } - }, - "node_modules/less/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "optional": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/less/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "optional": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "optional": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dev": true, - "dependencies": { - "dom-walk": "^0.1.0" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", - "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", - "dev": true, - "dependencies": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "chokidar": "3.3.0", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.5", - "ms": "2.1.1", - "node-environment-flags": "1.0.6", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha/node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mocha/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "node_modules/needle": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz", - "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", - "dev": true, - "optional": true, - "dependencies": { - "debug": "^3.2.6", - "iconv-lite": "^0.6.3", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/node-environment-flags": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", - "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", - "dev": true, - "dependencies": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - } - }, - "node_modules/node-environment-flags/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz", - "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==", - "dev": true, - "dependencies": { - "array.prototype.reduce": "^1.0.4", - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true, - "optional": true - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - }, - "peerDependencies": { - "react": "^16.14.0" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", - "dev": true, - "dependencies": { - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/reason-nodejs": { - "version": "13.0.0-beta.2", - "resolved": "git+ssh://git@github.com/banacorn/reason-nodejs.git#266080d84b820fc88319dd6dc63c98a2b3efe889", - "license": "MIT" - }, - "node_modules/reason-promise": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/reason-promise/-/reason-promise-1.1.5.tgz", - "integrity": "sha512-T4VI8e3WrQ30HbQcmQ8HvJPZckD4AeTcZ+1aNdpJ/pjjRwjlBy63hr4v8fMSID0/6kPh1KrhN+5+4n7MouoZKQ==" - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/rescript": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/rescript/-/rescript-9.1.4.tgz", - "integrity": "sha512-aXANK4IqecJzdnDpJUsU6pxMViCR5ogAxzuqS0mOr8TloMnzAjJFu63fjD6LCkWrKAhlMkFFzQvVQYaAaVkFXw==", - "hasInstallScript": true, - "bin": { - "bsc": "bsc", - "bsrefmt": "bsrefmt", - "bstracing": "lib/bstracing", - "rescript": "rescript" - } - }, - "node_modules/rescript-vscode": { - "version": "0.0.17", - "resolved": "git+ssh://git@github.com/banacorn/rescript-vscode.git#316ce927cd34f8a3ad7cc84b5d1fe6b97fa01e02", - "license": "MIT", - "dependencies": { - "bs-platform": ">=8.2.0", - "reason-promise": ">=1.1.0" - } - }, - "node_modules/rescript-webapi": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/rescript-webapi/-/rescript-webapi-0.6.1.tgz", - "integrity": "sha512-I/eeHOcsUfWbCf6u15zd+rKxMz9awSjjdRa8eFtl2X+HjDNs0mJxoC4uFFK9dIazYcmY2VpuK5TTpOPXvdkhDw==" - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "optional": true - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true, - "optional": true - }, - "node_modules/scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dev": true, - "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.7", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", - "engines": { - "node": "*" - } - }, - "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/unzipper": { - "version": "0.10.11", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", - "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", - "dependencies": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", - "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/vscode-codicons": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/vscode-codicons/-/vscode-codicons-0.0.7.tgz", - "integrity": "sha512-xqYypi4Ihth3bZgoE6961FYJBrmFErC+YouSC5Tn0pHqv0QSrP0PK++EIVNBi0I9Ted1OetZ3aWlNUWq1QaMBA==", - "deprecated": "This package is deprecated, please use @vscode/codicons https://www.npmjs.com/package/@vscode/codicons" - }, - "node_modules/vscode-jsonrpc": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.0.2.tgz", - "integrity": "sha512-RY7HwI/ydoC1Wwg4gJ3y6LpU9FJRZAUnTYMXthqhFXXu77ErDd/xkREpGuk4MyYkk4a+XDWAMqe0S3KkelYQEQ==", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/vscode-languageclient": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.0.2.tgz", - "integrity": "sha512-lHlthJtphG9gibGb/y72CKqQUxwPsMXijJVpHEC2bvbFqxmkj9LwQ3aGU9dwjBLqsX1S4KjShYppLvg1UJDF/Q==", - "dependencies": { - "minimatch": "^3.0.4", - "semver": "^7.3.5", - "vscode-languageserver-protocol": "3.17.2" - }, - "engines": { - "vscode": "^1.67.0" - } - }, - "node_modules/vscode-languageserver-protocol": { - "version": "3.17.2", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.2.tgz", - "integrity": "sha512-8kYisQ3z/SQ2kyjlNeQxbkkTNmVFoQCqkmGrzLH6A9ecPlgTbp3wDTnUNqaUxYr4vlAcloxx8zwy7G5WdguYNg==", - "dependencies": { - "vscode-jsonrpc": "8.0.2", - "vscode-languageserver-types": "3.17.2" - } - }, - "node_modules/vscode-languageserver-types": { - "version": "3.17.2", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2.tgz", - "integrity": "sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==" - }, - "node_modules/vscode-test": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.6.1.tgz", - "integrity": "sha512-086q88T2ca1k95mUzffvbzb7esqQNvJgiwY4h29ukPhFo8u+vXOOmelUoU5EQUHs3Of8+JuQ3oGdbVCqaxuTXA==", - "deprecated": "This package has been renamed to @vscode/test-electron, please update to the new name", - "dev": true, - "dependencies": { - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "rimraf": "^3.0.2", - "unzipper": "^0.10.11" - }, - "engines": { - "node": ">=8.9.3" - } - }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack": { - "version": "5.74.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", - "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", - "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "cross-spawn": "^7.0.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/migrate": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/webpack-cli/node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/webpack-cli/node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, - "dependencies": { - "resolve": "^1.9.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/webpack/node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", - "dev": true - }, - "node_modules/wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2" - } - }, - "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", - "dev": true, - "dependencies": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@datastructures-js/binary-search-tree": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@datastructures-js/binary-search-tree/-/binary-search-tree-4.3.2.tgz", - "integrity": "sha512-fZV3GoZAPxfgGTky7Q+5oiMUtLhQoHxSlJt3DmUPbl+1pMpuopOSG/MymdcruWOBQU90kSzo0lN+3gmSaEYCTw==" - }, - "@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true - }, - "@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true - }, - "@glennsl/bs-json": { - "version": "git+ssh://git@github.com/banacorn/bs-json.git#0c900d3ad5c06eb2e6513a677096f1ec0411d282", - "from": "@glennsl/bs-json@github:banacorn/bs-json#0c900d3" - }, - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "@rescript/react": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@rescript/react/-/react-0.10.3.tgz", - "integrity": "sha512-Lf9rzrR3bQPKJjOK3PBRa/B3xrJ7CqQ1HYr9VHPVxJidarIJJFZBhj0Dg1uZURX+Wg/xiP0PHFxXmdj2bK8Vxw==", - "requires": {} - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "@types/eslint": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", - "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", - "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/node": { - "version": "18.6.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.4.tgz", - "integrity": "sha512-I4BD3L+6AWiUobfxZ49DlU43gtI+FTHSv9pE2Zekg6KjMpre4ByusaljW3vYSLJrvQ1ck1hUaeVu8HVlY3vzHg==", - "dev": true - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", - "dev": true, - "requires": {} - }, - "@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", - "dev": true, - "requires": { - "envinfo": "^7.7.3" - } - }, - "@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", - "dev": true, - "requires": {} - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", - "dev": true - }, - "ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true - }, - "ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "array.prototype.reduce": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz", - "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - } - }, - "async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", - "requires": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - } - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "browserslist": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", - "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001370", - "electron-to-chromium": "^1.4.202", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.5" - } - }, - "bs-mocha": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bs-mocha/-/bs-mocha-1.0.0.tgz", - "integrity": "sha512-/OjgBZdG1YyC/6SEvXihG/sgWFyenQtRJ0TOewo944XwQuDIv82jtrxYjBPbkhGHdLYnc4EfaLdPC+tW86iKEw==", - "dev": true, - "requires": { - "mocha": "^6.2.0" - }, - "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "mkdirp": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", - "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "mocha": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.3.tgz", - "integrity": "sha512-0R/3FvjIGH3eEuG17ccFPk117XL2rWxatr81a57D+r/x2uTYZRbdZ4oVidEUMh2W2TJDa7MdAb12Lm2/qrKajg==", - "dev": true, - "requires": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "2.2.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.4", - "ms": "2.1.1", - "node-environment-flags": "1.0.5", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - } - }, - "node-environment-flags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", - "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==", - "dev": true, - "requires": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "bs-nd": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/bs-nd/-/bs-nd-0.1.5.tgz", - "integrity": "sha512-YiIIpMiQ4SvoYZXVWWMMhQIPOmMekdvamsH9FoyHw0BicH/45Vyr9N/JawbEosZF7NV+1INlosljEQDajbmJfA==" - }, - "bs-platform": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/bs-platform/-/bs-platform-9.0.2.tgz", - "integrity": "sha512-Ye9JqJ4Oa7mcjjoOVRYI8Uc2Cf8N7jQLWDcdUplY7996d/YErSR7WitmV7XnSwr4EvdrbwjEsg1NxNjUQv3ChA==" - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==" - }, - "buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==" - }, - "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001374", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001374.tgz", - "integrity": "sha512-mWvzatRx3w+j5wx/mpFN5v5twlPrabG8NqX2c6e45LCpymdoGqNvRkRutFUqpRTXKFQFNQJasvK0YT7suW6/Hw==", - "dev": true - }, - "chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", - "requires": { - "traverse": ">=0.3.0 <0.4" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", - "dev": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" - } - }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "compare-versions": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", - "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "copy-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", - "dev": true, - "requires": { - "is-what": "^3.14.1" - } - }, - "copy-webpack-plugin": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.4.1.tgz", - "integrity": "sha512-MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA==", - "dev": true, - "requires": { - "cacache": "^15.0.5", - "fast-glob": "^3.2.4", - "find-cache-dir": "^3.3.1", - "glob-parent": "^5.1.1", - "globby": "^11.0.1", - "loader-utils": "^2.0.0", - "normalize-path": "^3.0.0", - "p-limit": "^3.0.2", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "webpack-sources": "^1.4.3" - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true - }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", - "dev": true - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "requires": { - "readable-stream": "^2.0.2" - } - }, - "electron-to-chromium": { - "version": "1.4.211", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.211.tgz", - "integrity": "sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true - }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "optional": true, - "requires": { - "prr": "~1.0.1" - } - }, - "es-abstract": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", - "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "regexp.prototype.flags": "^1.4.3", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - }, - "dependencies": { - "object.assign": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.3.tgz", - "integrity": "sha512-ZFJnX3zltyjcYJL0RoCJuzb+11zWGyaDbjgxZbdV7rFEcHQuYxrZqhow67aA7xpes6LhojyFDaBKAFfogQrikA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - } - } - }, - "es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "flat": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", - "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", - "dev": true, - "requires": { - "is-buffer": "~2.0.3" - } - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "requires": { - "minimist": "^1.2.6" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - } - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "getos": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", - "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", - "requires": { - "async": "^3.2.0" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dev": true, - "requires": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", - "dev": true, - "optional": true - }, - "import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true - }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true - }, - "is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true - }, - "language-server-mule": { - "version": "git+ssh://git@github.com/banacorn/language-server-mule.git#2caa861918e2bceda9f6c004a8a01b69c9dc8cce", - "from": "language-server-mule@github:banacorn/language-server-mule#v0.2.3", - "requires": { - "@glennsl/bs-json": "github:banacorn/bs-json#0c900d3", - "eventemitter3": "^4.0.7", - "unzipper": "^0.10.11", - "vscode-languageclient": "^8.0.0-next.1" - } - }, - "less": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", - "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", - "dev": true, - "requires": { - "copy-anything": "^2.0.1", - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "needle": "^3.1.0", - "parse-node-version": "^1.0.1", - "source-map": "~0.6.0", - "tslib": "^2.3.0" - }, - "dependencies": { - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "optional": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "optional": true - } - } - }, - "less-loader": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-7.3.0.tgz", - "integrity": "sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==", - "dev": true, - "requires": { - "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - } - }, - "less-watch-compiler": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/less-watch-compiler/-/less-watch-compiler-1.16.3.tgz", - "integrity": "sha512-cxGUt8YdPpPPB72w1dfzPVXML5JYgfExXbFvDfG5XBU9qvj6uVjwTY2qOgwvf09Au5p2RvmWVcNps/cMTojJNQ==", - "dev": true, - "requires": { - "amdefine": ">= 0.1.0", - "commander": "^8.0.0", - "extend": ">= 2.0.0", - "global": "^4.3.1", - "less": "^4.0.0", - "shelljs": ">= 0.4.0" - } - }, - "listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true - }, - "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "dev": true, - "requires": { - "chalk": "^2.4.2" - } - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "optional": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dev": true, - "requires": { - "dom-walk": "^0.1.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "mocha": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", - "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", - "dev": true, - "requires": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "chokidar": "3.3.0", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.5", - "ms": "2.1.1", - "node-environment-flags": "1.0.6", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - }, - "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - } - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "needle": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz", - "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", - "dev": true, - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.6.3", - "sax": "^1.2.4" - } - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node-environment-flags": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", - "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", - "dev": true, - "requires": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz", - "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==", - "dev": true, - "requires": { - "array.prototype.reduce": "^1.0.4", - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - }, - "dependencies": { - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - } - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "optional": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - } - } - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true - }, - "prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true, - "optional": true - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - } - }, - "react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - } - }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", - "dev": true, - "requires": { - "picomatch": "^2.0.4" - } - }, - "reason-nodejs": { - "version": "git+ssh://git@github.com/banacorn/reason-nodejs.git#266080d84b820fc88319dd6dc63c98a2b3efe889", - "from": "reason-nodejs@github:banacorn/reason-nodejs#temp" - }, - "reason-promise": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/reason-promise/-/reason-promise-1.1.5.tgz", - "integrity": "sha512-T4VI8e3WrQ30HbQcmQ8HvJPZckD4AeTcZ+1aNdpJ/pjjRwjlBy63hr4v8fMSID0/6kPh1KrhN+5+4n7MouoZKQ==" - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "rescript": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/rescript/-/rescript-9.1.4.tgz", - "integrity": "sha512-aXANK4IqecJzdnDpJUsU6pxMViCR5ogAxzuqS0mOr8TloMnzAjJFu63fjD6LCkWrKAhlMkFFzQvVQYaAaVkFXw==" - }, - "rescript-vscode": { - "version": "git+ssh://git@github.com/banacorn/rescript-vscode.git#316ce927cd34f8a3ad7cc84b5d1fe6b97fa01e02", - "from": "rescript-vscode@github:banacorn/rescript-vscode#v0.0.17", - "requires": { - "bs-platform": ">=8.2.0", - "reason-promise": ">=1.1.0" - } - }, - "rescript-webapi": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/rescript-webapi/-/rescript-webapi-0.6.1.tgz", - "integrity": "sha512-I/eeHOcsUfWbCf6u15zd+rKxMz9awSjjdRa8eFtl2X+HjDNs0mJxoC4uFFK9dIazYcmY2VpuK5TTpOPXvdkhDw==" - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true, - "optional": true - }, - "scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - } - }, - "string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true - }, - "supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, - "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - } - } - }, - "terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.7", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" - }, - "dependencies": { - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - } - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==" - }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true - }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==" - }, - "unzipper": { - "version": "0.10.11", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", - "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", - "requires": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - } - }, - "update-browserslist-db": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", - "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "vscode-codicons": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/vscode-codicons/-/vscode-codicons-0.0.7.tgz", - "integrity": "sha512-xqYypi4Ihth3bZgoE6961FYJBrmFErC+YouSC5Tn0pHqv0QSrP0PK++EIVNBi0I9Ted1OetZ3aWlNUWq1QaMBA==" - }, - "vscode-jsonrpc": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.0.2.tgz", - "integrity": "sha512-RY7HwI/ydoC1Wwg4gJ3y6LpU9FJRZAUnTYMXthqhFXXu77ErDd/xkREpGuk4MyYkk4a+XDWAMqe0S3KkelYQEQ==" - }, - "vscode-languageclient": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.0.2.tgz", - "integrity": "sha512-lHlthJtphG9gibGb/y72CKqQUxwPsMXijJVpHEC2bvbFqxmkj9LwQ3aGU9dwjBLqsX1S4KjShYppLvg1UJDF/Q==", - "requires": { - "minimatch": "^3.0.4", - "semver": "^7.3.5", - "vscode-languageserver-protocol": "3.17.2" - } - }, - "vscode-languageserver-protocol": { - "version": "3.17.2", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.2.tgz", - "integrity": "sha512-8kYisQ3z/SQ2kyjlNeQxbkkTNmVFoQCqkmGrzLH6A9ecPlgTbp3wDTnUNqaUxYr4vlAcloxx8zwy7G5WdguYNg==", - "requires": { - "vscode-jsonrpc": "8.0.2", - "vscode-languageserver-types": "3.17.2" - } - }, - "vscode-languageserver-types": { - "version": "3.17.2", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2.tgz", - "integrity": "sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==" - }, - "vscode-test": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.6.1.tgz", - "integrity": "sha512-086q88T2ca1k95mUzffvbzb7esqQNvJgiwY4h29ukPhFo8u+vXOOmelUoU5EQUHs3Of8+JuQ3oGdbVCqaxuTXA==", - "dev": true, - "requires": { - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "rimraf": "^3.0.2", - "unzipper": "^0.10.11" - } - }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "webpack": { - "version": "5.74.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", - "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "dependencies": { - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true - } - } - }, - "webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", - "dev": true, - "requires": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "cross-spawn": "^7.0.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true - }, - "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true - }, - "rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, - "requires": { - "resolve": "^1.9.0" - } - } - } - }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", - "dev": true - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", - "dev": true, - "requires": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" - } - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - } - } -} diff --git a/package.json b/package.json index 0f92a06e..3f10f30f 100644 --- a/package.json +++ b/package.json @@ -40,17 +40,16 @@ "@datastructures-js/binary-search-tree": "^4.3.0", "@glennsl/bs-json": "github:banacorn/bs-json#0c900d3", "@rescript/react": "^0.10.3", - "bs-nd": "^0.1.5", "rescript-webapi": ">=0.2.0", "compare-versions": "^3.5.1", "eventemitter3": ">=4.0.0", "getos": "^3.2.1", - "language-server-mule": "github:banacorn/language-server-mule#v0.2.3", + "language-server-mule": "github:banacorn/language-server-mule#v0.3.0", "react": "^16.9.0", "react-dom": "^16.9.0", - "reason-nodejs": "github:banacorn/reason-nodejs#temp", + "rescript-nodejs": "^15.0.0", "reason-promise": ">=1.1.0", - "rescript": "^9.1.4", + "rescript": "^10.1.4", "rescript-vscode": "github:banacorn/rescript-vscode#v0.0.17", "untildify": "^4.0.0", "vscode-codicons": "^0.0.7" diff --git a/src/Connection/Connection.res b/src/Connection/Connection.res index 13c599be..35253fea 100644 --- a/src/Connection/Connection.res +++ b/src/Connection/Connection.res @@ -14,7 +14,7 @@ module type Module = { bool, LanguageServerMule.Source.GitHub.Download.Event.t => unit, ) => Promise.t> - let stop: unit => Promise.t + let stop: unit => Promise.t> // messaging let sendRequest: ( string, @@ -74,6 +74,7 @@ module Module: Module = { ) ->Promise.flatMapOk(method => { LSP.Client.make("agda", "Agda Language Server", method, InitOptions.getFromConfig()) + ->Util.P.toPromise ->Promise.mapError(e => LSP.Error.ConnectionError(e)) ->Promise.flatMapOk(LSP.make) ->Promise.mapError(error => Error.LSP(error)) @@ -109,13 +110,13 @@ module Module: Module = { let stop = () => switch singleton.contents { - | Some(LSP(conn)) => - singleton := None - LSP.destroy(conn) + | None => Promise.resolved(Ok()) | Some(Emacs(conn)) => singleton := None - Emacs.destroy(conn) - | None => Promise.resolved() + Emacs.destroy(conn)->Promise.map(() => Ok()) + | Some(LSP(conn)) => + singleton := None + LSP.destroy(conn)->Promise.mapError(err => Error.LSP(err)) } let rec sendRequest = (globalStoragePath, onDownload, useLSP, document, request, handler) => { @@ -135,7 +136,7 @@ module Module: Module = { ->Promise.mapOk(() => toStatus(LSP(conn))) ->Promise.flatMapError(error => { // stop the connection on error - stop()->Promise.map(() => Error(Error.LSP(error))) + stop()->Promise.map(_ => Error(Error.LSP(error))) }) | Some(Emacs(conn)) => @@ -145,7 +146,9 @@ module Module: Module = { ->Promise.mapOk(() => toStatus(Emacs(conn))) ->Promise.flatMapError(error => { // stop the connection on error - stop()->Promise.map(() => Error(Error.Emacs(error))) + stop() + // ->Promise.mapError(err => Error.LSP(err)) + ->Promise.map(_ => Error(Error.Emacs(error))) }) | None => start(globalStoragePath, useLSP, onDownload)->Promise.flatMapOk(_ => diff --git a/src/Connection/Emacs/Connection__Emacs.res b/src/Connection/Emacs/Connection__Emacs.res index 063cd990..ff6c6e82 100644 --- a/src/Connection/Emacs/Connection__Emacs.res +++ b/src/Connection/Emacs/Connection__Emacs.res @@ -37,7 +37,8 @@ module ProcInfo: { | Some(match_) => switch match_[1] { | None => resolve(Error("Cannot read Agda version")) - | Some(version) => + | Some(None) => resolve(Error("Cannot read Agda version")) + | Some(Some(version)) => resolve( Ok({ path: path, diff --git a/src/Connection/LSP/Connection__LSP.res b/src/Connection/LSP/Connection__LSP.res index 3c91815a..a2f41d12 100644 --- a/src/Connection/LSP/Connection__LSP.res +++ b/src/Connection/LSP/Connection__LSP.res @@ -200,7 +200,7 @@ module type Module = { } // lifecycle let make: Client.t => Promise.t> - let destroy: t => Promise.t + let destroy: t => Promise.t> // messaging let sendRequest: ( t, @@ -232,6 +232,7 @@ module Module: Module = { let sendRequestPrim = (client, request): Promise.t> => { client ->Client.sendRequest(CommandReq.encode(request)) + ->Util.P.toPromise ->Promise.mapError(exn => Error.ConnectionError(exn)) ->Promise.flatMapOk(json => Promise.resolved(decodeCommandRes(json))) } @@ -255,13 +256,13 @@ module Module: Module = { sendRequestPrim(client, SYN)->Promise.flatMapOk(response => switch response { | Result(_) => Promise.resolved(Error(Error.Initialize)) - | ACK(version) => - Promise.resolved(Ok({client: client, version: version, method: Client.getMethod(client)})) + | ACK(version) => Promise.resolved(Ok({client, version, method: Client.getMethod(client)})) } ) // destroy the client - let destroy = self => self.client->Client.destroy + let destroy = self => + self.client->Client.destroy->Util.P.toPromise->Promise.mapError(e => Error.ConnectionError(e)) // let getInfo = self => (self.version, self.method) @@ -273,7 +274,7 @@ module Module: Module = { let (waitForResponseEnd, resolve) = Promise.pending() // listens for responses from Agda - let stopListeningForNotifications = self.client->Client.onRequest(json => { + let stopListeningForNotifications = self.client->Client.onRequest(async json => { switch decodeResponse(json) { | Ok(ResponseNonLast(responese)) => scheduler->Scheduler.runNonLast(handler, responese) | Ok(ResponseLast(priority, responese)) => scheduler->Scheduler.addLast(priority, responese) @@ -281,7 +282,7 @@ module Module: Module = { | Ok(ResponseEnd) => resolve(Ok()) | Error(error) => resolve(Error(error)) } - Promise.resolved(Ok(Js_json.null)) + Ok(Js_json.null) }) // sends `Command` and waits for `ResponseEnd` diff --git a/src/Parser/SourceFile.res b/src/Parser/SourceFile.res index 6e371a3d..a071e368 100644 --- a/src/Parser/SourceFile.res +++ b/src/Parser/SourceFile.res @@ -67,7 +67,7 @@ module Lexer = { let cursorOld = cursor.contents cursor := cursor.contents + String.length(content) open Token - {content: content, range: (cursorOld, cursor.contents), kind: kind} + {content, range: (cursorOld, cursor.contents), kind} }) } else { [token] @@ -85,9 +85,9 @@ module Lexer = { let result = { open Token { - content: content, + content, range: (start + delta.contents, end_ + delta.contents + lengthDiff), - kind: kind, + kind, } } delta := delta.contents + lengthDiff @@ -132,7 +132,13 @@ module Literate = { raw, )->Option.mapWithDefault([], lines => lines - ->Array.keep(x => x != "") + ->Array.map(x => + switch x { + | None => "" + | Some(s) => s + } + ) + ->Array.keep(s => s != "") ->Array.map(line => { // [\s\.\;\{\}\(\)\@] let cursorOld = cursor.contents @@ -173,7 +179,7 @@ module Literate = { let kind = insideAgda ? AgdaRaw : Literate - {content: content, kind: kind, range: range} + {content, kind, range} }) } @@ -260,7 +266,13 @@ let parse = (indices: array, filepath: string, raw: string): array let actualSpaces = content ->Js.String.match_(%re("/\\s*$/"), _) - ->Option.flatMap(matches => matches[0]->Option.map(Js.String.length)) + ->Option.flatMap(matches => + switch matches[0] { + | None => None + | Some(None) => None + | Some(Some(s)) => Some(Js.String.length(s)) + } + ) ->Option.getWithDefault(0) /* make room for the index, if there's not enough space */ @@ -290,7 +302,7 @@ let parse = (indices: array, filepath: string, raw: string): array | (Some(modifiedHole), Some(index)) => let (start, _) = modifiedHole.range Some({ - Diff.index: index, + Diff.index, originalInterval: (start, start + String.length(token.content)), modifiedInterval: modifiedHole.range, content: modifiedHole.content, diff --git a/src/Registry.res b/src/Registry.res index 0f9984e5..cc13d06c 100644 --- a/src/Registry.res +++ b/src/Registry.res @@ -67,7 +67,7 @@ module Module: { Promise.resolved() | Some(Initialized(state)) => remove(fileName) - State.destroy(state, false) + State.destroy(state, false)->Promise.map(_ => ()) } let removeAndDestroyAll = () => { diff --git a/src/State/State__Command.res b/src/State/State__Command.res index 0fd40e3e..43f207dc 100644 --- a/src/State/State__Command.res +++ b/src/State/State__Command.res @@ -90,7 +90,7 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< header, { body: None, - placeholder: placeholder, + placeholder, value: None, }, expr => @@ -120,7 +120,7 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< header, { body: Some("Please specify which variable you wish to split"), - placeholder: placeholder, + placeholder, value: None, }, expr => @@ -146,7 +146,7 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< header, { body: None, - placeholder: placeholder, + placeholder, value: None, }, expr => sendAgdaRequest(HelperFunctionType(normalization, expr, goal)), @@ -163,7 +163,7 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< header, { body: None, - placeholder: placeholder, + placeholder, value: None, }, expr => sendAgdaRequest(InferTypeGlobal(normalization, expr)), @@ -174,7 +174,7 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< header, { body: None, - placeholder: placeholder, + placeholder, value: None, }, expr => sendAgdaRequest(InferType(normalization, expr, goal)), @@ -215,7 +215,7 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< header, { body: None, - placeholder: placeholder, + placeholder, value: None, }, expr => sendAgdaRequest(GoalTypeContextAndCheckedType(normalization, expr, goal)), @@ -232,7 +232,7 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< header, { body: None, - placeholder: placeholder, + placeholder, value: None, }, expr => sendAgdaRequest(ModuleContentsGlobal(normalization, expr)), @@ -243,7 +243,7 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< header, { body: None, - placeholder: placeholder, + placeholder, value: None, }, expr => sendAgdaRequest(ModuleContents(normalization, expr, goal)), @@ -259,7 +259,7 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< header, { body: None, - placeholder: placeholder, + placeholder, value: None, }, expr => sendAgdaRequest(ComputeNormalFormGlobal(computeMode, expr)), @@ -270,7 +270,7 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< header, { body: None, - placeholder: placeholder, + placeholder, value: None, }, expr => sendAgdaRequest(ComputeNormalForm(computeMode, expr, goal)), @@ -286,7 +286,7 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< header, { body: None, - placeholder: placeholder, + placeholder, value: None, }, expr => sendAgdaRequest(WhyInScopeGlobal(expr)), @@ -297,7 +297,7 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< header, { body: None, - placeholder: placeholder, + placeholder, value: None, }, expr => sendAgdaRequest(WhyInScope(expr, goal)), @@ -334,7 +334,7 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< ) // stop the old connection ->Promise.flatMap(Connection.stop) - ->Promise.flatMap(() => + ->Promise.flatMap(_ => Connection.start(state.globalStoragePath, useLSP, State.onDownload(state)) ) ->Promise.flatMap(result => @@ -342,12 +342,13 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< | Ok(Emacs(version, path)) => // update the connection status State.View.Panel.displayStatus(state, "Emacs v" ++ version) - ->Promise.flatMap(() => - State.View.Panel.display( - state, - View.Header.Success("Switched to version '" ++ version ++ "'"), - [Item.plainText("Found '" ++ newAgdaVersion ++ "' at: " ++ path)], - ) + ->Promise.flatMap( + () => + State.View.Panel.display( + state, + View.Header.Success("Switched to version '" ++ version ++ "'"), + [Item.plainText("Found '" ++ newAgdaVersion ++ "' at: " ++ path)], + ), ) ->Promise.map(() => Ok()) @@ -374,7 +375,7 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< | EventFromView(event) => switch event { | Initialized => Promise.resolved(Ok()) - | Destroyed => State.destroy(state, true)->Promise.map(() => Ok()) + | Destroyed => State.destroy(state, true) | InputMethod(InsertChar(char)) => dispatchCommand(InputMethod(InsertChar(char))) | InputMethod(ChooseSymbol(symbol)) => State__InputMethod.chooseSymbol(state, symbol)->Promise.map(() => Ok()) @@ -416,6 +417,7 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< } Node_path.format(newObj) } + // only select the ranges when it's on the same file if removeRoot(path) == removeRoot(fileName) { let ranges = intervals->Array.map(Editor.Range.fromAgdaInterval) diff --git a/src/Util/Util.res b/src/Util/Util.res index 99fe3d06..2e06c710 100644 --- a/src/Util/Util.res +++ b/src/Util/Util.res @@ -1,11 +1,11 @@ open Belt - module Result = { - let mapError = x => f => switch x { - | Error(e) => Error(f(e)) - | Ok(v) => Ok(v) - } + let mapError = (x, f) => + switch x { + | Error(e) => Error(f(e)) + | Ok(v) => Ok(v) + } } exception Error(string) @@ -83,7 +83,7 @@ module Encode = { jsonArray([encodeA(a), encodeB(b), encodeC(c), encodeD(d), encodeE(e)]) } -module React' = React +module React' = React module React = { open React' @@ -96,12 +96,25 @@ module React = { switch item { | list{} => <> | list{x} => x - | list{x, ...xs} => list{x, ...List.map(xs, i => <> sep i )}->List.toArray->manyIn("span") + | list{x, ...xs} => + list{ + x, + ...List.map(xs, i => <> + sep + i + ), + } + ->List.toArray + ->manyIn("span") } let sepBy = (sep: element, xs) => xs->List.fromArray->sepBy'(sep) let enclosedBy = (front: element, back: element, item: element) => <> - front {string(" ")} item {string(" ")} back + front + {string(" ")} + item + {string(" ")} + back let when_ = (p, className) => p ? " " ++ className : "" @@ -118,7 +131,7 @@ module Version = { | EQ | GT - @bs.module + @module external compareVersionsPrim: (string, string) => int = "compare-versions" let trim = Js.String.replaceByRe(%re("/-.*/"), "") let compare = (a, b) => @@ -175,3 +188,18 @@ module List = { } } } + +module P = { + external toJsExn: Js.Promise.error => Js.Exn.t = "%identity" + + let toPromise = (p: promise>): Promise.t> => { + p + ->Promise.Js.fromBsPromise + ->Promise.Js.toResult + ->Promise.map(x => switch x { + | Ok(Ok(x)) => Ok(x) + | Ok(Error(e)) => Error(e) + | Error(e) => Error(toJsExn(e)) + }) + } +} From b075fbc18bb823e0a93d22149d22bfd775d5443f Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sat, 25 Nov 2023 21:30:37 +0800 Subject: [PATCH 007/109] [ fix ] Un-escape some of the literals in Regex --- lib/js/src/Agda.bs.js | 4 ++-- src/Agda.res | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/js/src/Agda.bs.js b/lib/js/src/Agda.bs.js index 592d9aaf..42286c4e 100644 --- a/lib/js/src/Agda.bs.js +++ b/lib/js/src/Agda.bs.js @@ -73,7 +73,7 @@ var Expr = { render: render$1 }; -var partial_arg = /^([^\\:]*) \\: ((?:\\n|.)+)/; +var partial_arg = /^([^\\:]*) \\: ((?:\n|.)+)/; function parseOfType(param) { return Emacs__Parser$AgdaModeVscode.captures(partial_arg, (function (captured) { @@ -190,7 +190,7 @@ function parseOutputWithoutLocation(raw) { })); } -var partial_arg$4 = /((?:\\n|.)*\\S+)\\s*\\[ at ([^\\]]+) \\]/; +var partial_arg$4 = /((?:\\n|.)*\\S+)\\s*\[ at ([^\\]]+) \]/; function parseOutputWithLocation(param) { return Emacs__Parser$AgdaModeVscode.captures(partial_arg$4, (function (captured) { diff --git a/src/Agda.res b/src/Agda.res index 1af6848b..630a4667 100644 --- a/src/Agda.res +++ b/src/Agda.res @@ -55,7 +55,7 @@ module OutputConstraint: { | Others'(RichText.t) let parseOfType = - %re("/^([^\\:]*) \\: ((?:\\n|.)+)/")->Emacs__Parser.captures(captured => + %re("/^([^\\:]*) \\: ((?:\n|.)+)/")->Emacs__Parser.captures(captured => captured ->Emacs__Parser.at(2, Expr.parse) ->Option.flatMap(type_ => @@ -95,7 +95,7 @@ module Output = { let parseOutputWithoutLocation = raw => raw->OutputConstraint.parse->Option.map(x => Output(x, None)) let parseOutputWithLocation = %re( - "/((?:\\n|.)*\\S+)\\s*\\[ at ([^\\]]+) \\]/" + "/((?:\\n|.)*\\S+)\\s*\[ at ([^\\]]+) \]/" )->Emacs__Parser.captures(captured => captured[1] ->Option.flatMap(x => x) From aa771c00a5f8a95271b4e54951ec9c99b06afaa9 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sat, 25 Nov 2023 23:02:47 +0800 Subject: [PATCH 008/109] [ fix ] Regex for parsing filepaths to see if it is Agda --- lib/js/src/Main.bs.js | 2 +- src/Main.res | 42 +++++++++++++++++++++++------------------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/lib/js/src/Main.bs.js b/lib/js/src/Main.bs.js index d0ea1b49..688454d2 100644 --- a/lib/js/src/Main.bs.js +++ b/lib/js/src/Main.bs.js @@ -27,7 +27,7 @@ var Highlighting__SemanticToken$AgdaModeVscode = require("./Highlighting/Highlig function isAgda(fileName) { var fileName$1 = Parser$AgdaModeVscode.filepath(fileName); - return /\\.agda$|\\.lagda/i.test(fileName$1); + return /\.agda$|\.lagda/i.test(fileName$1); } function onOpenEditor(callback) { diff --git a/src/Main.res b/src/Main.res index ec445b74..6de266c4 100644 --- a/src/Main.res +++ b/src/Main.res @@ -3,7 +3,7 @@ open Belt // if end with '.agda' or '.lagda' let isAgda = (fileName): bool => { let fileName = fileName->Parser.filepath - Js.Re.test_(%re("/\\.agda$|\\.lagda/i"), fileName) + Js.Re.test_(%re("/\.agda$|\.lagda/i"), fileName) } module Inputs: { @@ -22,21 +22,22 @@ module Inputs: { // 1. the triggered command has prefix "agda-mode." // 2. there's an active text edtior // 3. the active text editor is an Agda file - let onTriggerCommand = callback => { + let onTriggerCommand = callback => Command.names->Array.map(((command, name)) => VSCode.Commands.registerCommand("agda-mode." ++ name, () => { - VSCode.Window.activeTextEditor->Option.map(editor => { - let fileName = - editor->VSCode.TextEditor.document->VSCode.TextDocument.fileName->Parser.filepath - if isAgda(fileName) { - callback(command, editor) - } else { - Promise.resolved(None) - } - }) + VSCode.Window.activeTextEditor->Option.map( + editor => { + let fileName = + editor->VSCode.TextEditor.document->VSCode.TextDocument.fileName->Parser.filepath + if isAgda(fileName) { + callback(command, editor) + } else { + Promise.resolved(None) + } + }, + ) }) ) - } } let initialize = (debugChan, extensionPath, globalStoragePath, editor, fileName) => { @@ -142,8 +143,8 @@ let registerDocumentSemanticTokensProvider = () => { builder, Highlighting.SemanticToken.SingleLineRange.toVsCodeRange(range), Highlighting.SemanticToken.TokenType.toString(type_), - modifiers->Option.map(xs => - xs->Array.map(Highlighting.SemanticToken.TokenModifier.toString) + modifiers->Option.map( + xs => xs->Array.map(Highlighting.SemanticToken.TokenModifier.toString), ), ) }) @@ -195,6 +196,7 @@ let finalize = isRestart => { VSCode.Commands.setContext("agdaMode", false)->ignore // destroy views accordingly Singleton.Panel.destroy() + // don't destroy the DebugBuffer singleton if it's a Restart if !isRestart { Singleton.DebugBuffer.destroy() @@ -216,6 +218,7 @@ let activateWithoutContext = (subscriptions, extensionPath, globalStoragePath) = // on open editor Inputs.onOpenEditor(editor => { let fileName = editor->VSCode.TextEditor.document->VSCode.TextDocument.fileName->Parser.filepath + // filter out ".agda.git" files if isAgda(fileName) { Registry.get(fileName)->Option.forEach(state => { @@ -280,11 +283,12 @@ let activateWithoutContext = (subscriptions, extensionPath, globalStoragePath) = switch Registry.get(fileName) { | None => Promise.resolved(None) | Some(state) => - State__Command.dispatchCommand(state, command)->Promise.map(result => - switch result { - | Error(error) => Some(Error(error)) - | Ok() => Some(Ok(state)) - } + State__Command.dispatchCommand(state, command)->Promise.map( + result => + switch result { + | Error(error) => Some(Error(error)) + | Ok() => Some(Ok(state)) + }, ) } }) From 326e5294598f2c4278e976e85b9f3d52d80eb7b5 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sat, 25 Nov 2023 23:33:40 +0800 Subject: [PATCH 009/109] [ fix ] Remove deprecated string interpolation --- lib/js/src/Goal.bs.js | 4 +- lib/js/src/Request.bs.js | 62 +- lib/js/src/Util/Util.bs.js | 4 +- src/Goal.res | 16 +- src/Request.res | 83 ++- src/Util/Util.res | 24 +- src/View/WebviewPanel.res | 23 +- test/tests/Test__CaseSplit.res | 80 ++- test/tests/Test__EditorIM.res | 759 ++++++++++++--------- test/tests/Test__PromptIM.res | 44 +- test/tests/TextEditor/Test__AgdaOffset.res | 338 +++++---- test/tests/TextEditor/Test__LineEnding.res | 73 +- 12 files changed, 829 insertions(+), 681 deletions(-) diff --git a/lib/js/src/Goal.bs.js b/lib/js/src/Goal.bs.js index 994bd9a5..d21fa744 100644 --- a/lib/js/src/Goal.bs.js +++ b/lib/js/src/Goal.bs.js @@ -89,11 +89,11 @@ function buildHaskellRange(self, $$document, version, filepath) { var startIndex = String(start + 3 | 0); var startRow = String(startPoint.line + 1 | 0); var startColumn = String(startPoint.character + 3 | 0); - var startPart = "" + startIndex + " " + startRow + " " + startColumn; + var startPart = "" + startIndex + " " + startRow + " " + startColumn + ""; var endIndex$p = String(end_ - 3 | 0); var endRow = String(endPoint.line + 1 | 0); var endColumn = String(endPoint.character - 1 | 0); - var endPart = "" + endIndex$p + " " + endRow + " " + endColumn; + var endPart = "" + endIndex$p + " " + endRow + " " + endColumn + ""; if (Util$AgdaModeVscode.Version.gte(version, "2.5.1")) { return "(intervalsToRange (Just (mkAbsolute \"" + filepath + "\")) [Interval (Pn () " + startPart + ") (Pn () " + endPart + ")])"; } else { diff --git a/lib/js/src/Request.bs.js b/lib/js/src/Request.bs.js index 4afe5b69..9c5ff66c 100644 --- a/lib/js/src/Request.bs.js +++ b/lib/js/src/Request.bs.js @@ -106,15 +106,15 @@ function encode($$document, version, filepath, backend, libraryPath, highlightin switch (request) { case /* Load */0 : if (Util$AgdaModeVscode.Version.gte(version, "2.5.0")) { - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_load \"" + filepath + "\" [] )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_load \"" + filepath + "\" [] )"; } else { - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_load \"" + filepath + "\" [" + libraryPath$1 + "] )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_load \"" + filepath + "\" [" + libraryPath$1 + "] )"; } case /* Compile */1 : if (Util$AgdaModeVscode.Version.gte(version, "2.5.0")) { - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_compile " + backend + " \"" + filepath + "\" [] )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_compile " + backend + " \"" + filepath + "\" [] )"; } else { - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_compile " + backend + " \"" + filepath + "\" [" + libraryPath$1 + "] )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_compile " + backend + " \"" + filepath + "\" [" + libraryPath$1 + "] )"; } case /* ToggleDisplayOfImplicitArguments */2 : return "" + commonPart(/* NonInteractive */1) + "( ToggleImplicitArgs )"; @@ -129,103 +129,103 @@ function encode($$document, version, filepath, backend, libraryPath, highlightin case /* SolveConstraints */0 : var normalization = Command$AgdaModeVscode.Normalization.encode(request._0); var index = String(request._1.index); - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_solveOne " + normalization + " " + index + " noRange \"\" )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_solveOne " + normalization + " " + index + " noRange \"\" )"; case /* SolveConstraintsGlobal */1 : var normalization$1 = Command$AgdaModeVscode.Normalization.encode(request._0); - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_solveAll " + normalization$1 + " )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_solveAll " + normalization$1 + " )"; case /* ShowGoals */2 : var normalization$2 = Command$AgdaModeVscode.Normalization.encode(request._0); if (Util$AgdaModeVscode.Version.gte(version, "2.6.2")) { - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_metas " + normalization$2 + " )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_metas " + normalization$2 + " )"; } else { return "" + commonPart(/* NonInteractive */1) + "( Cmd_metas )"; } case /* SearchAbout */3 : var normalization$3 = Command$AgdaModeVscode.Normalization.encode(request._0); var content = Parser$AgdaModeVscode.userInput(request._1); - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_search_about_toplevel " + normalization$3 + " \"" + content + "\" )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_search_about_toplevel " + normalization$3 + " \"" + content + "\" )"; case /* Give */4 : var goal = request._0; var index$1 = String(goal.index); var content$1 = Parser$AgdaModeVscode.userInput(Goal$AgdaModeVscode.getContent(goal, $$document)); var range = buildRange(goal); if (Util$AgdaModeVscode.Version.gte(version, "2.5.3")) { - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_give WithoutForce " + index$1 + " " + range + " \"" + content$1 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_give WithoutForce " + index$1 + " " + range + " \"" + content$1 + "\" )"; } else { - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_give " + index$1 + " " + range + " \"" + content$1 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_give " + index$1 + " " + range + " \"" + content$1 + "\" )"; } case /* Refine */5 : var goal$1 = request._0; var index$2 = String(goal$1.index); var content$2 = Parser$AgdaModeVscode.userInput(Goal$AgdaModeVscode.getContent(goal$1, $$document)); var range$1 = buildRange(goal$1); - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_refine_or_intro False " + index$2 + " " + range$1 + " \"" + content$2 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_refine_or_intro False " + index$2 + " " + range$1 + " \"" + content$2 + "\" )"; case /* ElaborateAndGive */6 : var index$3 = String(request._2.index); var normalization$4 = Command$AgdaModeVscode.Normalization.encode(request._0); var content$3 = Parser$AgdaModeVscode.userInput(request._1); - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_elaborate_give " + normalization$4 + " " + index$3 + " noRange \"" + content$3 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_elaborate_give " + normalization$4 + " " + index$3 + " noRange \"" + content$3 + "\" )"; case /* Auto */7 : var goal$2 = request._0; var index$4 = String(goal$2.index); var content$4 = Parser$AgdaModeVscode.userInput(Goal$AgdaModeVscode.getContent(goal$2, $$document)); var range$2 = buildRange(goal$2); if (Util$AgdaModeVscode.Version.gte(version, "2.6.0.1")) { - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_autoOne " + index$4 + " " + range$2 + " \"" + content$4 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_autoOne " + index$4 + " " + range$2 + " \"" + content$4 + "\" )"; } else { - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_auto " + index$4 + " " + range$2 + " \"" + content$4 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_auto " + index$4 + " " + range$2 + " \"" + content$4 + "\" )"; } case /* Case */8 : var goal$3 = request._0; var index$5 = String(goal$3.index); var content$5 = Parser$AgdaModeVscode.userInput(Goal$AgdaModeVscode.getContent(goal$3, $$document)); var range$3 = buildRange(goal$3); - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_make_case " + index$5 + " " + range$3 + " \"" + content$5 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_make_case " + index$5 + " " + range$3 + " \"" + content$5 + "\" )"; case /* HelperFunctionType */9 : var index$6 = String(request._2.index); var normalization$5 = Command$AgdaModeVscode.Normalization.encode(request._0); var content$6 = Parser$AgdaModeVscode.userInput(request._1); - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_helper_function " + normalization$5 + " " + index$6 + " noRange \"" + content$6 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_helper_function " + normalization$5 + " " + index$6 + " noRange \"" + content$6 + "\" )"; case /* InferType */10 : var index$7 = String(request._2.index); var normalization$6 = Command$AgdaModeVscode.Normalization.encode(request._0); var content$7 = Parser$AgdaModeVscode.userInput(request._1); - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_infer " + normalization$6 + " " + index$7 + " noRange \"" + content$7 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_infer " + normalization$6 + " " + index$7 + " noRange \"" + content$7 + "\" )"; case /* InferTypeGlobal */11 : var normalization$7 = Command$AgdaModeVscode.Normalization.encode(request._0); var content$8 = Parser$AgdaModeVscode.userInput(request._1); - return "" + commonPart(/* None */0) + ("( Cmd_infer_toplevel " + normalization$7 + " \"" + content$8 + "\" )"); + return "" + commonPart(/* None */0) + "( Cmd_infer_toplevel " + normalization$7 + " \"" + content$8 + "\" )"; case /* Context */12 : var index$8 = String(request._1.index); var normalization$8 = Command$AgdaModeVscode.Normalization.encode(request._0); - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_context " + normalization$8 + " " + index$8 + " noRange \"\" )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_context " + normalization$8 + " " + index$8 + " noRange \"\" )"; case /* GoalType */13 : var index$9 = String(request._1.index); var normalization$9 = Command$AgdaModeVscode.Normalization.encode(request._0); - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_goal_type " + normalization$9 + " " + index$9 + " noRange \"\" )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_goal_type " + normalization$9 + " " + index$9 + " noRange \"\" )"; case /* GoalTypeAndContext */14 : var index$10 = String(request._1.index); var normalization$10 = Command$AgdaModeVscode.Normalization.encode(request._0); - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_goal_type_context " + normalization$10 + " " + index$10 + " noRange \"\" )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_goal_type_context " + normalization$10 + " " + index$10 + " noRange \"\" )"; case /* GoalTypeContextAndInferredType */15 : var index$11 = String(request._2.index); var normalization$11 = Command$AgdaModeVscode.Normalization.encode(request._0); var content$9 = Parser$AgdaModeVscode.userInput(request._1); - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_goal_type_context_infer " + normalization$11 + " " + index$11 + " noRange \"" + content$9 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_goal_type_context_infer " + normalization$11 + " " + index$11 + " noRange \"" + content$9 + "\" )"; case /* GoalTypeContextAndCheckedType */16 : var index$12 = String(request._2.index); var normalization$12 = Command$AgdaModeVscode.Normalization.encode(request._0); var content$10 = Parser$AgdaModeVscode.userInput(request._1); - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_goal_type_context_check " + normalization$12 + " " + index$12 + " noRange \"" + content$10 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_goal_type_context_check " + normalization$12 + " " + index$12 + " noRange \"" + content$10 + "\" )"; case /* ModuleContents */17 : var index$13 = String(request._2.index); var normalization$13 = Command$AgdaModeVscode.Normalization.encode(request._0); var content$11 = Parser$AgdaModeVscode.userInput(request._1); - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_show_module_contents " + normalization$13 + " " + index$13 + " noRange \"" + content$11 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_show_module_contents " + normalization$13 + " " + index$13 + " noRange \"" + content$11 + "\" )"; case /* ModuleContentsGlobal */18 : var normalization$14 = Command$AgdaModeVscode.Normalization.encode(request._0); var content$12 = Parser$AgdaModeVscode.userInput(request._1); - return "" + commonPart(/* None */0) + ("( Cmd_show_module_contents_toplevel " + normalization$14 + " \"" + content$12 + "\" )"); + return "" + commonPart(/* None */0) + "( Cmd_show_module_contents_toplevel " + normalization$14 + " \"" + content$12 + "\" )"; case /* ComputeNormalForm */19 : var computeMode = request._0; var index$14 = String(request._2.index); @@ -233,9 +233,9 @@ function encode($$document, version, filepath, backend, libraryPath, highlightin var computeMode$1 = Command$AgdaModeVscode.ComputeMode.encode(computeMode); var content$13 = Parser$AgdaModeVscode.userInput(request._1); if (Util$AgdaModeVscode.Version.gte(version, "2.5.2")) { - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_compute " + computeMode$1 + " " + index$14 + " noRange \"" + content$13 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_compute " + computeMode$1 + " " + index$14 + " noRange \"" + content$13 + "\" )"; } else { - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_compute " + ignoreAbstract + " " + index$14 + " noRange \"" + content$13 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_compute " + ignoreAbstract + " " + index$14 + " noRange \"" + content$13 + "\" )"; } case /* ComputeNormalFormGlobal */20 : var computeMode$2 = request._0; @@ -243,17 +243,17 @@ function encode($$document, version, filepath, backend, libraryPath, highlightin var computeMode$3 = Command$AgdaModeVscode.ComputeMode.encode(computeMode$2); var content$14 = Parser$AgdaModeVscode.userInput(request._1); if (Util$AgdaModeVscode.Version.gte(version, "2.5.2")) { - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_compute_toplevel " + computeMode$3 + " \"" + content$14 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_compute_toplevel " + computeMode$3 + " \"" + content$14 + "\" )"; } else { - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_compute_toplevel " + ignoreAbstract$1 + " \"" + content$14 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_compute_toplevel " + ignoreAbstract$1 + " \"" + content$14 + "\" )"; } case /* WhyInScope */21 : var index$15 = String(request._1.index); var content$15 = Parser$AgdaModeVscode.userInput(request._0); - return "" + commonPart(/* NonInteractive */1) + ("( Cmd_why_in_scope " + index$15 + " noRange \"" + content$15 + "\" )"); + return "" + commonPart(/* NonInteractive */1) + "( Cmd_why_in_scope " + index$15 + " noRange \"" + content$15 + "\" )"; case /* WhyInScopeGlobal */22 : var content$16 = Parser$AgdaModeVscode.userInput(request._0); - return "" + commonPart(/* None */0) + ("( Cmd_why_in_scope_toplevel \"" + content$16 + "\" )"); + return "" + commonPart(/* None */0) + "( Cmd_why_in_scope_toplevel \"" + content$16 + "\" )"; } } diff --git a/lib/js/src/Util/Util.bs.js b/lib/js/src/Util/Util.bs.js index 46cb0905..9e29cea9 100644 --- a/lib/js/src/Util/Util.bs.js +++ b/lib/js/src/Util/Util.bs.js @@ -103,7 +103,7 @@ function tuple5(decodeA, decodeB, decodeC, decodeD, decodeE, json) { } else { throw { RE_EXN_ID: Json_decode.DecodeError, - _1: "Expected array of length 5, got array of length " + length, + _1: "Expected array of length 5, got array of length " + String(length) + "", Error: new Error() }; } @@ -144,7 +144,7 @@ function tuple6(decodeA, decodeB, decodeC, decodeD, decodeE, decodeF, json) { } else { throw { RE_EXN_ID: Json_decode.DecodeError, - _1: "Expected array of length 6, got array of length " + length, + _1: "Expected array of length 6, got array of length " + String(length) + "", Error: new Error() }; } diff --git a/src/Goal.res b/src/Goal.res index 931c307f..9d700b54 100644 --- a/src/Goal.res +++ b/src/Goal.res @@ -10,7 +10,7 @@ module type Module = { // helper function for building strings for Agda let buildHaskellRange: (t, VSCode.TextDocument.t, string, string) => string - // + // let generateDiffs: (VSCode.TextDocument.t, array) => array let makeMany: (VSCode.TextEditor.t, array) => Promise.t> @@ -72,7 +72,7 @@ module Module: Module = { Editor.Text.batchReplace'(editor, replacements)->Promise.map(_ => { diffs->Array.map(diff => { - // decorate the hole + // decorate the hole let (decorationBackground, decorationIndex) = Highlighting.decorateHole( editor, diff.modifiedInterval, @@ -81,8 +81,8 @@ module Module: Module = { { index: diff.index, interval: diff.modifiedInterval, - decorationBackground: decorationBackground, - decorationIndex: decorationIndex, + decorationBackground, + decorationIndex, } }) }) @@ -123,16 +123,16 @@ module Module: Module = { let startIndex = string_of_int(start + 3) let startRow = string_of_int(VSCode.Position.line(startPoint) + 1) let startColumn = string_of_int(VSCode.Position.character(startPoint) + 3) - let startPart = j`$(startIndex) $(startRow) $(startColumn)` + let startPart = `${startIndex} ${startRow} ${startColumn}` let endIndex' = string_of_int(end_ - 3) let endRow = string_of_int(VSCode.Position.line(endPoint) + 1) let endColumn = string_of_int(VSCode.Position.character(endPoint) - 1) - let endPart = j`$(endIndex') $(endRow) $(endColumn)` + let endPart = `${endIndex'} ${endRow} ${endColumn}` if Util.Version.gte(version, "2.5.1") { - j`(intervalsToRange (Just (mkAbsolute "$(filepath)")) [Interval (Pn () $(startPart)) (Pn () $(endPart))])` // after 2.5.1 + `(intervalsToRange (Just (mkAbsolute "${filepath}")) [Interval (Pn () ${startPart}) (Pn () ${endPart})])` // after 2.5.1 } else { - j`(Range [Interval (Pn (Just (mkAbsolute "$(filepath)")) $(startPart)) (Pn (Just (mkAbsolute "$(filepath)")) $(endPart))])` // before (not including) 2.5.1 + `(Range [Interval (Pn (Just (mkAbsolute "${filepath}")) ${startPart}) (Pn (Just (mkAbsolute "${filepath}")) ${endPart})])` // before (not including) 2.5.1 } } diff --git a/src/Request.res b/src/Request.res index a63d6ea6..9d14671d 100644 --- a/src/Request.res +++ b/src/Request.res @@ -103,47 +103,48 @@ let encode = ( switch request { | Load => if Util.Version.gte(version, "2.5.0") { - j`${commonPart(NonInteractive)}( Cmd_load "$(filepath)" [] )` + `${commonPart(NonInteractive)}( Cmd_load "${filepath}" [] )` } else { - j`${commonPart(NonInteractive)}( Cmd_load "$(filepath)" [$(libraryPath)] )` + `${commonPart(NonInteractive)}( Cmd_load "${filepath}" [${libraryPath}] )` } | Compile => if Util.Version.gte(version, "2.5.0") { - j`${commonPart(NonInteractive)}( Cmd_compile $(backend) "$(filepath)" [] )` + `${commonPart(NonInteractive)}( Cmd_compile ${backend} "${filepath}" [] )` } else { - j`${commonPart(NonInteractive)}( Cmd_compile $(backend) "$(filepath)" [$(libraryPath)] )` + `${commonPart(NonInteractive)}( Cmd_compile ${backend} "${filepath}" [${libraryPath}] )` } - | ToggleDisplayOfImplicitArguments => j`${commonPart(NonInteractive)}( ToggleImplicitArgs )` + | ToggleDisplayOfImplicitArguments => `${commonPart(NonInteractive)}( ToggleImplicitArgs )` - | ToggleDisplayOfIrrelevantArguments => j`${commonPart(NonInteractive)}( ToggleIrrelevantArgs )` + | ToggleDisplayOfIrrelevantArguments => `${commonPart(NonInteractive)}( ToggleIrrelevantArgs )` - | ShowConstraints => j`${commonPart(NonInteractive)}( Cmd_constraints )` + | ShowConstraints => `${commonPart(NonInteractive)}( Cmd_constraints )` | SolveConstraints(normalization, goal) => let normalization = Command.Normalization.encode(normalization) let index = string_of_int(goal.index) - j`${commonPart(NonInteractive)}( Cmd_solveOne $(normalization) $(index) noRange "" )` + `${commonPart(NonInteractive)}( Cmd_solveOne ${normalization} ${index} noRange "" )` | SolveConstraintsGlobal(normalization) => let normalization = Command.Normalization.encode(normalization) - j`${commonPart(NonInteractive)}( Cmd_solveAll $(normalization) )` + `${commonPart(NonInteractive)}( Cmd_solveAll ${normalization} )` | ShowGoals(normalization) => let normalization = Command.Normalization.encode(normalization) + // `Cmd_metas` contains `Rewrite` after v2.6.2 // Issue #88 (https://github.com/banacorn/agda-mode-vscode/issues/88) if Util.Version.gte(version, "2.6.2") { - j`${commonPart(NonInteractive)}( Cmd_metas $(normalization) )` + `${commonPart(NonInteractive)}( Cmd_metas ${normalization} )` } else { - j`${commonPart(NonInteractive)}( Cmd_metas )` + `${commonPart(NonInteractive)}( Cmd_metas )` } | SearchAbout(normalization, expr) => let normalization = Command.Normalization.encode(normalization) let content = Parser.userInput(expr) - j`${commonPart(NonInteractive)}( Cmd_search_about_toplevel $(normalization) "$(content)" )` + `${commonPart(NonInteractive)}( Cmd_search_about_toplevel ${normalization} "${content}" )` // Related issue and commit of agda/agda // https://github.com/agda/agda/issues/2730 @@ -153,25 +154,25 @@ let encode = ( let content: string = Goal.getContent(goal, document)->Parser.userInput let range: string = buildRange(goal) if Util.Version.gte(version, "2.5.3") { - j`${commonPart(NonInteractive)}( Cmd_give WithoutForce $(index) $(range) "$(content)" )` + `${commonPart(NonInteractive)}( Cmd_give WithoutForce ${index} ${range} "${content}" )` } else { - j`${commonPart(NonInteractive)}( Cmd_give $(index) $(range) "$(content)" )` + `${commonPart(NonInteractive)}( Cmd_give ${index} ${range} "${content}" )` } | Refine(goal) => let index: string = string_of_int(goal.index) let content: string = Goal.getContent(goal, document)->Parser.userInput let range: string = buildRange(goal) - j`${commonPart(NonInteractive)}( Cmd_refine_or_intro False $(index) $(range) "$(content)" )` + `${commonPart(NonInteractive)}( Cmd_refine_or_intro False ${index} ${range} "${content}" )` | ElaborateAndGive(normalization, expr, goal) => let index = string_of_int(goal.index) let normalization = Command.Normalization.encode(normalization) let content = Parser.userInput(expr) - j`${commonPart( + `${commonPart( NonInteractive, - )}( Cmd_elaborate_give $(normalization) $(index) noRange "$(content)" )` + )}( Cmd_elaborate_give ${normalization} ${index} noRange "${content}" )` | Auto(goal) => let index: string = string_of_int(goal.index) @@ -179,86 +180,86 @@ let encode = ( let range: string = buildRange(goal) if Util.Version.gte(version, "2.6.0.1") { // after 2.6.0.1 - j`${commonPart(NonInteractive)}( Cmd_autoOne $(index) $(range) "$(content)" )` + `${commonPart(NonInteractive)}( Cmd_autoOne ${index} ${range} "${content}" )` } else { // the old way - j`${commonPart(NonInteractive)}( Cmd_auto $(index) $(range) "$(content)" )` + `${commonPart(NonInteractive)}( Cmd_auto ${index} ${range} "${content}" )` } | Case(goal) => let index: string = string_of_int(goal.index) let content: string = Goal.getContent(goal, document)->Parser.userInput let range: string = buildRange(goal) - j`${commonPart(NonInteractive)}( Cmd_make_case $(index) $(range) "$(content)" )` + `${commonPart(NonInteractive)}( Cmd_make_case ${index} ${range} "${content}" )` | HelperFunctionType(normalization, expr, goal) => let index = string_of_int(goal.index) let normalization = Command.Normalization.encode(normalization) let content = Parser.userInput(expr) - j`${commonPart( + `${commonPart( NonInteractive, - )}( Cmd_helper_function $(normalization) $(index) noRange "$(content)" )` + )}( Cmd_helper_function ${normalization} ${index} noRange "${content}" )` | InferType(normalization, expr, goal) => let index = string_of_int(goal.index) let normalization = Command.Normalization.encode(normalization) let content = Parser.userInput(expr) - j`${commonPart(NonInteractive)}( Cmd_infer $(normalization) $(index) noRange "$(content)" )` + `${commonPart(NonInteractive)}( Cmd_infer ${normalization} ${index} noRange "${content}" )` | InferTypeGlobal(normalization, expr) => let normalization = Command.Normalization.encode(normalization) let content = Parser.userInput(expr) - j`${commonPart(None)}( Cmd_infer_toplevel $(normalization) "$(content)" )` + `${commonPart(None)}( Cmd_infer_toplevel ${normalization} "${content}" )` | Context(normalization, goal) => let index = string_of_int(goal.index) let normalization = Command.Normalization.encode(normalization) - j`${commonPart(NonInteractive)}( Cmd_context $(normalization) $(index) noRange "" )` + `${commonPart(NonInteractive)}( Cmd_context ${normalization} ${index} noRange "" )` | GoalType(normalization, goal) => let index = string_of_int(goal.index) let normalization = Command.Normalization.encode(normalization) - j`${commonPart(NonInteractive)}( Cmd_goal_type $(normalization) $(index) noRange "" )` + `${commonPart(NonInteractive)}( Cmd_goal_type ${normalization} ${index} noRange "" )` | GoalTypeAndContext(normalization, goal) => let index: string = string_of_int(goal.index) let normalization: string = Command.Normalization.encode(normalization) - j`${commonPart(NonInteractive)}( Cmd_goal_type_context $(normalization) $(index) noRange "" )` + `${commonPart(NonInteractive)}( Cmd_goal_type_context ${normalization} ${index} noRange "" )` | GoalTypeContextAndInferredType(normalization, expr, goal) => let index: string = string_of_int(goal.index) let normalization: string = Command.Normalization.encode(normalization) let content = Parser.userInput(expr) - j`${commonPart( + `${commonPart( NonInteractive, - )}( Cmd_goal_type_context_infer $(normalization) $(index) noRange "$(content)" )` + )}( Cmd_goal_type_context_infer ${normalization} ${index} noRange "${content}" )` | GoalTypeContextAndCheckedType(normalization, expr, goal) => let index: string = string_of_int(goal.index) let normalization: string = Command.Normalization.encode(normalization) let content = Parser.userInput(expr) - j`${commonPart( + `${commonPart( NonInteractive, - )}( Cmd_goal_type_context_check $(normalization) $(index) noRange "$(content)" )` + )}( Cmd_goal_type_context_check ${normalization} ${index} noRange "${content}" )` | ModuleContents(normalization, expr, goal) => let index: string = string_of_int(goal.index) let normalization: string = Command.Normalization.encode(normalization) let content = Parser.userInput(expr) - j`${commonPart( + `${commonPart( NonInteractive, - )}( Cmd_show_module_contents $(normalization) $(index) noRange "$(content)" )` + )}( Cmd_show_module_contents ${normalization} ${index} noRange "${content}" )` | ModuleContentsGlobal(normalization, expr) => let normalization: string = Command.Normalization.encode(normalization) let content = Parser.userInput(expr) - j`${commonPart(None)}( Cmd_show_module_contents_toplevel $(normalization) "$(content)" )` + `${commonPart(None)}( Cmd_show_module_contents_toplevel ${normalization} "${content}" )` | ComputeNormalForm(computeMode, expr, goal) => let index: string = string_of_int(goal.index) @@ -267,11 +268,9 @@ let encode = ( let content: string = Parser.userInput(expr) if Util.Version.gte(version, "2.5.2") { - j`${commonPart(NonInteractive)}( Cmd_compute $(computeMode) $(index) noRange "$(content)" )` + `${commonPart(NonInteractive)}( Cmd_compute ${computeMode} ${index} noRange "${content}" )` } else { - j`${commonPart( - NonInteractive, - )}( Cmd_compute $(ignoreAbstract) $(index) noRange "$(content)" )` + `${commonPart(NonInteractive)}( Cmd_compute ${ignoreAbstract} ${index} noRange "${content}" )` } | ComputeNormalFormGlobal(computeMode, expr) => @@ -280,19 +279,19 @@ let encode = ( let content = Parser.userInput(expr) if Util.Version.gte(version, "2.5.2") { - j`${commonPart(NonInteractive)}( Cmd_compute_toplevel $(computeMode) "$(content)" )` + `${commonPart(NonInteractive)}( Cmd_compute_toplevel ${computeMode} "${content}" )` } else { - j`${commonPart(NonInteractive)}( Cmd_compute_toplevel $(ignoreAbstract) "$(content)" )` + `${commonPart(NonInteractive)}( Cmd_compute_toplevel ${ignoreAbstract} "${content}" )` } | WhyInScope(expr, goal) => let index: string = string_of_int(goal.index) let content: string = Parser.userInput(expr) - j`${commonPart(NonInteractive)}( Cmd_why_in_scope $(index) noRange "$(content)" )` + `${commonPart(NonInteractive)}( Cmd_why_in_scope ${index} noRange "${content}" )` | WhyInScopeGlobal(expr) => let content = Parser.userInput(expr) - j`${commonPart(None)}( Cmd_why_in_scope_toplevel "$(content)" )` + `${commonPart(None)}( Cmd_why_in_scope_toplevel "${content}" )` } } diff --git a/src/Util/Util.res b/src/Util/Util.res index 2e06c710..77742b95 100644 --- a/src/Util/Util.res +++ b/src/Util/Util.res @@ -48,7 +48,9 @@ module Decode = { | DecodeError(msg) => raise(DecodeError(msg ++ "\n\tin tuple5")) } } else { - raise(DecodeError(j`Expected array of length 5, got array of length $length`)) + raise( + DecodeError(`Expected array of length 5, got array of length ${Int.toString(length)}`), + ) } } else { raise(DecodeError("Expected array, got " ++ Js.Json.stringify(json))) @@ -70,7 +72,9 @@ module Decode = { | DecodeError(msg) => raise(DecodeError(msg ++ "\n\tin tuple6")) } } else { - raise(DecodeError(j`Expected array of length 6, got array of length $length`)) + raise( + DecodeError(`Expected array of length 6, got array of length ${Int.toString(length)}`), + ) } } else { raise(DecodeError("Expected array, got " ++ Js.Json.stringify(json))) @@ -194,12 +198,14 @@ module P = { let toPromise = (p: promise>): Promise.t> => { p - ->Promise.Js.fromBsPromise - ->Promise.Js.toResult - ->Promise.map(x => switch x { - | Ok(Ok(x)) => Ok(x) - | Ok(Error(e)) => Error(e) - | Error(e) => Error(toJsExn(e)) - }) + ->Promise.Js.fromBsPromise + ->Promise.Js.toResult + ->Promise.map(x => + switch x { + | Ok(Ok(x)) => Ok(x) + | Ok(Error(e)) => Error(e) + | Error(e) => Error(toJsExn(e)) + } + ) } } diff --git a/src/View/WebviewPanel.res b/src/View/WebviewPanel.res index 710d1dce..aebf7663 100644 --- a/src/View/WebviewPanel.res +++ b/src/View/WebviewPanel.res @@ -65,7 +65,7 @@ module WebviewPanel: { // let fontSrc = "font-src " ++ codiconsFontUri ++ "; " let scp = defaultSrc ++ fontSrc ++ scriptSrc ++ styleSrc - j` + ` @@ -77,16 +77,16 @@ module WebviewPanel: { Use a content security policy to only allow loading images from https or from our extension directory, and only allow scripts that have a specific nonce. --> - + React App - - + +
- + ` @@ -149,7 +149,7 @@ module WebviewPanel: { %raw(`{ orientation: 1, groups: [{ size: 0.7 }, { size: 0.3 }] - }`) + }`), // { // orientation: 1, // groups: { @@ -289,11 +289,12 @@ module Module: Module = { | Uninitialized(queuedRequests, queuedEvents) => view.status = Initialized queuedRequests->Belt.Array.forEach(((req, resolve)) => - send(view, View.RequestOrEventToView.Request(req))->Promise.get(x => - switch x { - | None => () - | Some(res) => resolve(View.ResponseOrEventFromView.Response(res)) - } + send(view, View.RequestOrEventToView.Request(req))->Promise.get( + x => + switch x { + | None => () + | Some(res) => resolve(View.ResponseOrEventFromView.Response(res)) + }, ) ) queuedEvents->Belt.Array.forEach(event => diff --git a/test/tests/Test__CaseSplit.res b/test/tests/Test__CaseSplit.res index fb88183e..15dad557 100644 --- a/test/tests/Test__CaseSplit.res +++ b/test/tests/Test__CaseSplit.res @@ -7,37 +7,47 @@ describe("State__Goal.caseSplitAux dry run", () => { VSCode.Window.showTextDocumentWithUri( VSCode.Uri.file(Path.asset("CaseSplit1.agda")), None, - )->Promise.flatMap(editor => { - let document = VSCode.TextEditor.document(editor) - Goal.makeMany(editor, [0, 1, 2, 3, 4, 5, 6, 7, 8]) - ->Promise.map(goals => - goals->Array.map(goal => { - // convert `rewriteRange` to text in that range because range offsets are different on different OSs - let (inWhereClause, indentWidth, rewriteRange) = State__Goal.caseSplitAux(document, goal) - let rewriteRange = VSCode.Range.make( - VSCode.TextDocument.positionAt(document, fst(rewriteRange)), - VSCode.TextDocument.positionAt(document, snd(rewriteRange)), - ) - (inWhereClause, indentWidth, Editor.Text.get(document, rewriteRange)) - }) - ) - ->Promise.map(results => Ok( - Assert.deep_equal( - results, - [ - (false, 9, j`x → {! !}`), - (false, 23, j`y → {! !}`), - (false, 4, j`x → {! !}`), - (false, 4, j`y → {! !}`), - (true, 13, j`x → {! !}`), - (true, 13, j`y → {! !}`), - (true, 2, j`x → {! !}`), - (true, 2, j`y → {! !}`), - (false, 13, j`x → {! !}`), - ], - ), - )) - }) + )->Promise.flatMap( + editor => { + let document = VSCode.TextEditor.document(editor) + Goal.makeMany(editor, [0, 1, 2, 3, 4, 5, 6, 7, 8]) + ->Promise.map( + goals => + goals->Array.map( + goal => { + // convert `rewriteRange` to text in that range because range offsets are different on different OSs + let (inWhereClause, indentWidth, rewriteRange) = State__Goal.caseSplitAux( + document, + goal, + ) + let rewriteRange = VSCode.Range.make( + VSCode.TextDocument.positionAt(document, fst(rewriteRange)), + VSCode.TextDocument.positionAt(document, snd(rewriteRange)), + ) + (inWhereClause, indentWidth, Editor.Text.get(document, rewriteRange)) + }, + ), + ) + ->Promise.map( + results => Ok( + Assert.deep_equal( + results, + [ + (false, 9, `x → {! !}`), + (false, 23, `y → {! !}`), + (false, 4, `x → {! !}`), + (false, 4, `y → {! !}`), + (true, 13, `x → {! !}`), + (true, 13, `y → {! !}`), + (true, 2, `x → {! !}`), + (true, 2, `y → {! !}`), + (false, 13, `x → {! !}`), + ], + ), + ), + ) + }, + ) ) }) @@ -52,8 +62,10 @@ describe_skip("Integration test", () => { context ->Promise.flatMap(Agda.load) ->Promise.flatMapOk(Agda.case(Some(VSCode.Position.make(7, 16), "x"))) - ->Promise.mapOk(((_, state)) => { - Assert.deep_equal(Array.length(state.goals), 10) - }) + ->Promise.mapOk( + ((_, state)) => { + Assert.deep_equal(Array.length(state.goals), 10) + }, + ) }) }) diff --git a/test/tests/Test__EditorIM.res b/test/tests/Test__EditorIM.res index e580ed9d..845e50df 100644 --- a/test/tests/Test__EditorIM.res +++ b/test/tests/Test__EditorIM.res @@ -30,7 +30,10 @@ module IM = { let wait = setup => setup.channels.inputMethod->Chan.once->Promise.map(x => Ok(x)) let wait2nd = setup => - setup.channels.inputMethod->Chan.once->Promise.flatMap(_ => setup.channels.inputMethod->Chan.once)->Promise.map(x => Ok(x)) + setup.channels.inputMethod + ->Chan.once + ->Promise.flatMap(_ => setup.channels.inputMethod->Chan.once) + ->Promise.map(x => Ok(x)) let activate = (setup, ~positions=?, ()) => { let promise = wait(setup) @@ -95,380 +98,462 @@ describe("Input Method (Editor)", () => { let setup = ref(None) Q.before(() => { - activateExtensionAndOpenFile(Path.asset("InputMethod.agda"))->map(((editor, channels)) => { - setup := Some({editor, channels}) - Ok() - }) + activateExtensionAndOpenFile(Path.asset("InputMethod.agda"))->map( + ((editor, channels)) => { + setup := Some({editor, channels}) + Ok() + }, + ) }) Q.after_each(() => acquire(setup)->mapOk(cleanup)) describe("Insertion", () => { - Q.it(j`should translate "lambdabar" to "λ"`, () => - acquire(setup)->flatMapOk(setup => { - let document = VSCode.TextEditor.document(setup.editor) - IM.activate(setup, ()) - ->flatMapOk(IM.deep_equal([Activate])) - ->flatMapOk(_ => IM.insertChar(setup, "l")) - ->flatMapOk(IM.deep_equal([RewriteIssued([((0, 1), j`←`)]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`←`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "a")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`←a`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "m")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`←am`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "b")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`←amb`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "d")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`←ambd`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "a")) - ->flatMapOk(IM.deep_equal([RewriteIssued([((0, 6), j`λ`)]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`λ`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "b")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`λb`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "a")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`λba`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "r")) - ->flatMapOk(IM.deep_equal([RewriteIssued([((0, 4), j`ƛ`)]), Deactivate, RewriteApplied])) - ->flatMapOk(() => A.equal(j`ƛ`, Editor.Text.getAll(document))) - }) + Q.it( + `should translate "lambdabar" to "λ"`, + () => + acquire(setup)->flatMapOk( + setup => { + let document = VSCode.TextEditor.document(setup.editor) + IM.activate(setup, ()) + ->flatMapOk(IM.deep_equal([Activate])) + ->flatMapOk(_ => IM.insertChar(setup, "l")) + ->flatMapOk( + IM.deep_equal([RewriteIssued([((0, 1), `←`)]), UpdateView, RewriteApplied]), + ) + ->flatMapOk(() => A.equal(`←`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "a")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk(() => A.equal(`←a`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "m")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk(() => A.equal(`←am`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "b")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk(() => A.equal(`←amb`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "d")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk(() => A.equal(`←ambd`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "a")) + ->flatMapOk( + IM.deep_equal([RewriteIssued([((0, 6), `λ`)]), UpdateView, RewriteApplied]), + ) + ->flatMapOk(() => A.equal(`λ`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "b")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk(() => A.equal(`λb`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "a")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk(() => A.equal(`λba`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "r")) + ->flatMapOk( + IM.deep_equal([RewriteIssued([((0, 4), `ƛ`)]), Deactivate, RewriteApplied]), + ) + ->flatMapOk(() => A.equal(`ƛ`, Editor.Text.getAll(document))) + }, + ), ) - Q.it(j`should translate "bn" to "𝕟"`, () => - acquire(setup)->flatMapOk(setup => { - let document = VSCode.TextEditor.document(setup.editor) - IM.activate(setup, ()) - ->flatMapOk(IM.deep_equal([Activate])) - ->flatMapOk(() => IM.insertChar(setup, "b")) - ->flatMapOk(IM.deep_equal([RewriteIssued([((0, 1), j`♭`)]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`♭`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "n")) - ->flatMapOk(IM.deep_equal([RewriteIssued([((0, 2), j`𝕟`)]), Deactivate, RewriteApplied])) - ->flatMapOk(() => A.equal(j`𝕟`, Editor.Text.getAll(document))) - }) + Q.it( + `should translate "bn" to "𝕟"`, + () => + acquire(setup)->flatMapOk( + setup => { + let document = VSCode.TextEditor.document(setup.editor) + IM.activate(setup, ()) + ->flatMapOk(IM.deep_equal([Activate])) + ->flatMapOk(() => IM.insertChar(setup, "b")) + ->flatMapOk( + IM.deep_equal([RewriteIssued([((0, 1), `♭`)]), UpdateView, RewriteApplied]), + ) + ->flatMapOk(() => A.equal(`♭`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "n")) + ->flatMapOk( + IM.deep_equal([RewriteIssued([((0, 2), `𝕟`)]), Deactivate, RewriteApplied]), + ) + ->flatMapOk(() => A.equal(`𝕟`, Editor.Text.getAll(document))) + }, + ), ) - Q.it(j`Issue #55, should not deactivate when size of candidate symbols > 1`, () => - acquire(setup)->flatMapOk(setup => { - let document = VSCode.TextEditor.document(setup.editor) - IM.activate(setup, ()) - ->flatMapOk(IM.deep_equal([Activate])) - ->flatMapOk(() => IM.insertChar(setup, "a")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`a`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "s")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`as`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "t")) - ->flatMapOk(IM.deep_equal([RewriteIssued([((0, 3), j`∗`)]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`∗`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "e")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`∗e`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "r")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`∗er`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "i")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`∗eri`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "s")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`∗eris`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "k")) - ->flatMapOk(IM.deep_equal([RewriteIssued([((0, 6), j`⁎`)]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`⁎`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.deactivate(setup)) - ->flatMapOk(IM.deep_equal([Deactivate])) - ->flatMapOk(() => A.equal(j`⁎`, Editor.Text.getAll(document))) - }) + Q.it( + `Issue #55, should not deactivate when size of candidate symbols > 1`, + () => + acquire(setup)->flatMapOk( + setup => { + let document = VSCode.TextEditor.document(setup.editor) + IM.activate(setup, ()) + ->flatMapOk(IM.deep_equal([Activate])) + ->flatMapOk(() => IM.insertChar(setup, "a")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk(() => A.equal(`a`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "s")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk(() => A.equal(`as`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "t")) + ->flatMapOk( + IM.deep_equal([RewriteIssued([((0, 3), `∗`)]), UpdateView, RewriteApplied]), + ) + ->flatMapOk(() => A.equal(`∗`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "e")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk(() => A.equal(`∗e`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "r")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk(() => A.equal(`∗er`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "i")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk(() => A.equal(`∗eri`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "s")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk(() => A.equal(`∗eris`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "k")) + ->flatMapOk( + IM.deep_equal([RewriteIssued([((0, 6), `⁎`)]), UpdateView, RewriteApplied]), + ) + ->flatMapOk(() => A.equal(`⁎`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.deactivate(setup)) + ->flatMapOk(IM.deep_equal([Deactivate])) + ->flatMapOk(() => A.equal(`⁎`, Editor.Text.getAll(document))) + }, + ), ) }) describe("Backspacing", () => - Q.it(j`should work just fine`, () => - acquire(setup)->flatMapOk(setup => { - let document = VSCode.TextEditor.document(setup.editor) - IM.activate(setup, ()) - ->flatMapOk(IM.deep_equal([Activate])) - ->flatMapOk(() => IM.insertChar(setup, "l")) - ->flatMapOk(IM.deep_equal([RewriteIssued([((0, 1), j`←`)]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`←`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "a")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`←a`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.backspace(setup)) - ->flatMapOk(IM.deep_equal([RewriteIssued([((0, 1), j`←`)]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`←`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "a")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`←a`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "m")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`←am`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "b")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`←amb`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "d")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`←ambd`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "a")) - ->flatMapOk(IM.deep_equal([RewriteIssued([((0, 6), j`λ`)]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`λ`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.backspace(setup)) - ->flatMapOk( - IM.deep_equal([RewriteIssued([((0, 0), j`lambd`)]), UpdateView, RewriteApplied]), - ) - ->flatMapOk(() => A.equal(j`lambd`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.deactivate(setup)) - ->flatMapOk(IM.deep_equal([Deactivate])) - ->flatMapOk(() => A.equal(j`lambd`, Editor.Text.getAll(document))) - }) + Q.it( + `should work just fine`, + () => + acquire(setup)->flatMapOk( + setup => { + let document = VSCode.TextEditor.document(setup.editor) + IM.activate(setup, ()) + ->flatMapOk(IM.deep_equal([Activate])) + ->flatMapOk(() => IM.insertChar(setup, "l")) + ->flatMapOk( + IM.deep_equal([RewriteIssued([((0, 1), `←`)]), UpdateView, RewriteApplied]), + ) + ->flatMapOk(() => A.equal(`←`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "a")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk(() => A.equal(`←a`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.backspace(setup)) + ->flatMapOk( + IM.deep_equal([RewriteIssued([((0, 1), `←`)]), UpdateView, RewriteApplied]), + ) + ->flatMapOk(() => A.equal(`←`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "a")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk(() => A.equal(`←a`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "m")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk(() => A.equal(`←am`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "b")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk(() => A.equal(`←amb`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "d")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk(() => A.equal(`←ambd`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "a")) + ->flatMapOk( + IM.deep_equal([RewriteIssued([((0, 6), `λ`)]), UpdateView, RewriteApplied]), + ) + ->flatMapOk(() => A.equal(`λ`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.backspace(setup)) + ->flatMapOk( + IM.deep_equal([RewriteIssued([((0, 0), `lambd`)]), UpdateView, RewriteApplied]), + ) + ->flatMapOk(() => A.equal(`lambd`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.deactivate(setup)) + ->flatMapOk(IM.deep_equal([Deactivate])) + ->flatMapOk(() => A.equal(`lambd`, Editor.Text.getAll(document))) + }, + ), ) ) describe("Abortion", () => { - Q.it(j`should abort after hitting escape`, () => - acquire(setup)->flatMapOk(setup => { - let document = VSCode.TextEditor.document(setup.editor) - IM.activate(setup, ()) - ->flatMapOk(IM.deep_equal([Activate])) - ->flatMapOk(() => IM.insertChar(setup, "b")) - ->flatMapOk(IM.deep_equal([RewriteIssued([((0, 1), j`♭`)]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`♭`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.deactivate(setup)) - ->flatMapOk(IM.deep_equal([Deactivate])) - ->flatMapOk(() => A.equal(j`♭`, Editor.Text.getAll(document))) - }) + Q.it( + `should abort after hitting escape`, + () => + acquire(setup)->flatMapOk( + setup => { + let document = VSCode.TextEditor.document(setup.editor) + IM.activate(setup, ()) + ->flatMapOk(IM.deep_equal([Activate])) + ->flatMapOk(() => IM.insertChar(setup, "b")) + ->flatMapOk( + IM.deep_equal([RewriteIssued([((0, 1), `♭`)]), UpdateView, RewriteApplied]), + ) + ->flatMapOk(() => A.equal(`♭`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.deactivate(setup)) + ->flatMapOk(IM.deep_equal([Deactivate])) + ->flatMapOk(() => A.equal(`♭`, Editor.Text.getAll(document))) + }, + ), ) - Q.it(j`should abort after typing the wrong sequence`, () => - acquire(setup)->flatMapOk(setup => { - let document = VSCode.TextEditor.document(setup.editor) - IM.activate(setup, ()) - ->flatMapOk(IM.deep_equal([Activate])) - ->flatMapOk(() => IM.insertChar(setup, "a")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`a`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "d")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), Deactivate, RewriteApplied])) - ->flatMapOk(() => A.equal(j`ad`, Editor.Text.getAll(document))) - }) + Q.it( + `should abort after typing the wrong sequence`, + () => + acquire(setup)->flatMapOk( + setup => { + let document = VSCode.TextEditor.document(setup.editor) + IM.activate(setup, ()) + ->flatMapOk(IM.deep_equal([Activate])) + ->flatMapOk(() => IM.insertChar(setup, "a")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk(() => A.equal(`a`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "d")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), Deactivate, RewriteApplied])) + ->flatMapOk(() => A.equal(`ad`, Editor.Text.getAll(document))) + }, + ), ) - Q.it(j`should abort after backspacing to much`, () => - acquire(setup)->flatMapOk(setup => { - let document = VSCode.TextEditor.document(setup.editor) - IM.activate(setup, ()) - ->flatMapOk(IM.deep_equal([Activate])) - ->flatMapOk(() => IM.insertChar(setup, "a")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`a`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.backspace(setup)) - ->flatMapOk(IM.deep_equal([RewriteIssued([((0, 0), j``)]), Deactivate, RewriteApplied])) - ->flatMapOk(() => A.equal(j``, Editor.Text.getAll(document))) - }) + Q.it( + `should abort after backspacing to much`, + () => + acquire(setup)->flatMapOk( + setup => { + let document = VSCode.TextEditor.document(setup.editor) + IM.activate(setup, ()) + ->flatMapOk(IM.deep_equal([Activate])) + ->flatMapOk(() => IM.insertChar(setup, "a")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk(() => A.equal(`a`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.backspace(setup)) + ->flatMapOk(IM.deep_equal([RewriteIssued([((0, 0), ``)]), Deactivate, RewriteApplied])) + ->flatMapOk(() => A.equal(``, Editor.Text.getAll(document))) + }, + ), ) }) describe("Cursor", () => { - Q.it(j`should not abort when the cursor is placed inside the buffer`, () => - acquire(setup)->flatMapOk(setup => { - let document = VSCode.TextEditor.document(setup.editor) - IM.activate(setup, ()) - ->flatMapOk(IM.deep_equal([Activate])) - ->flatMapOk(() => IM.insertChar(setup, "a")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`a`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "n")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`an`, Editor.Text.getAll(document))) - // messing with the cursor - ->flatMapOk(() => IM.select(setup, [(0, 0)])) - ->flatMapOk(() => IM.select(setup, [(1, 1)])) - ->flatMapOk(() => IM.select(setup, [(2, 2)])) - ->flatMapOk(() => IM.select(setup, [(0, 1), (1, 2)])) - ->flatMapOk(() => IM.select(setup, [(0, 2)])) - // resume insertion - ->flatMapOk(() => IM.insertChar(setup, "d")) - ->flatMapOk(IM.deep_equal([RewriteIssued([((0, 3), j`∧`)]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`∧`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "=")) - ->flatMapOk(IM.deep_equal([RewriteIssued([((0, 2), j`≙`)]), Deactivate, RewriteApplied])) - ->flatMapOk(() => A.equal(j`≙`, Editor.Text.getAll(document))) - }) + Q.it( + `should not abort when the cursor is placed inside the buffer`, + () => + acquire(setup)->flatMapOk( + setup => { + let document = VSCode.TextEditor.document(setup.editor) + IM.activate(setup, ()) + ->flatMapOk(IM.deep_equal([Activate])) + ->flatMapOk(() => IM.insertChar(setup, "a")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk(() => A.equal(`a`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "n")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk(() => A.equal(`an`, Editor.Text.getAll(document))) + // messing with the cursor + ->flatMapOk(() => IM.select(setup, [(0, 0)])) + ->flatMapOk(() => IM.select(setup, [(1, 1)])) + ->flatMapOk(() => IM.select(setup, [(2, 2)])) + ->flatMapOk(() => IM.select(setup, [(0, 1), (1, 2)])) + ->flatMapOk(() => IM.select(setup, [(0, 2)])) + // resume insertion + ->flatMapOk(() => IM.insertChar(setup, "d")) + ->flatMapOk( + IM.deep_equal([RewriteIssued([((0, 3), `∧`)]), UpdateView, RewriteApplied]), + ) + ->flatMapOk(() => A.equal(`∧`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "=")) + ->flatMapOk( + IM.deep_equal([RewriteIssued([((0, 2), `≙`)]), Deactivate, RewriteApplied]), + ) + ->flatMapOk(() => A.equal(`≙`, Editor.Text.getAll(document))) + }, + ), ) - Q.it(j`should abort when the cursor is placed outside the buffer`, () => - acquire(setup)->flatMapOk(setup => { - let positions = [VSCode.Position.make(0, 3)] + Q.it( + `should abort when the cursor is placed outside the buffer`, + () => + acquire(setup)->flatMapOk( + setup => { + let positions = [VSCode.Position.make(0, 3)] - let document = VSCode.TextEditor.document(setup.editor) + let document = VSCode.TextEditor.document(setup.editor) - document - ->Editor.Text.insert(VSCode.Position.make(0, 0), "123") - ->flatMap(_ => IM.activate(setup, ~positions, ())) - ->flatMapOk(IM.deep_equal([Activate])) - ->flatMapOk(() => IM.insertChar(setup, "a")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`123a`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "n")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(j`123an`, Editor.Text.getAll(document))) - // messing with the cursor - ->flatMapOk(() => IM.selectAndWait(setup, [(1, 1)])) - ->flatMapOk(IM.deep_equal([Deactivate])) - }) + document + ->Editor.Text.insert(VSCode.Position.make(0, 0), "123") + ->flatMap(_ => IM.activate(setup, ~positions, ())) + ->flatMapOk(IM.deep_equal([Activate])) + ->flatMapOk(() => IM.insertChar(setup, "a")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk(() => A.equal(`123a`, Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "n")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk(() => A.equal(`123an`, Editor.Text.getAll(document))) + // messing with the cursor + ->flatMapOk(() => IM.selectAndWait(setup, [(1, 1)])) + ->flatMapOk(IM.deep_equal([Deactivate])) + }, + ), ) }) describe("Multiple cursors at once", () => { let replaceCRLF = Js.String.replaceByRe(%re("/\\r\\n/g"), "\n") - Q.it(j`should work just fine (𝕟)`, () => { - let positions = [ - VSCode.Position.make(0, 0), - VSCode.Position.make(1, 0), - VSCode.Position.make(2, 0), - VSCode.Position.make(3, 0), - ] + Q.it( + `should work just fine (𝕟)`, + () => { + let positions = [ + VSCode.Position.make(0, 0), + VSCode.Position.make(1, 0), + VSCode.Position.make(2, 0), + VSCode.Position.make(3, 0), + ] - acquire(setup)->flatMapOk(setup => { - let document = VSCode.TextEditor.document(setup.editor) + acquire(setup)->flatMapOk( + setup => { + let document = VSCode.TextEditor.document(setup.editor) - document - ->Editor.Text.insert(VSCode.Position.make(0, 0), "\n\n\n") - ->flatMap(_ => IM.activate(setup, ~positions, ())) - ->flatMapOk(IM.deep_equal([Activate])) - ->flatMapOk(() => IM.insertChar(setup, "b")) - ->flatMapOk(actual => - if onUnix { - IM.deep_equal( - [ - RewriteIssued([ - ((0, 1), j`♭`), - ((2, 3), j`♭`), - ((4, 5), j`♭`), - ((6, 7), j`♭`), - ]), - UpdateView, - RewriteApplied, - ], - actual, + document + ->Editor.Text.insert(VSCode.Position.make(0, 0), "\n\n\n") + ->flatMap(_ => IM.activate(setup, ~positions, ())) + ->flatMapOk(IM.deep_equal([Activate])) + ->flatMapOk(() => IM.insertChar(setup, "b")) + ->flatMapOk( + actual => + if onUnix { + IM.deep_equal( + [ + RewriteIssued([ + ((0, 1), `♭`), + ((2, 3), `♭`), + ((4, 5), `♭`), + ((6, 7), `♭`), + ]), + UpdateView, + RewriteApplied, + ], + actual, + ) + } else { + IM.deep_equal( + [ + RewriteIssued([ + ((0, 1), `♭`), + ((3, 4), `♭`), + ((6, 7), `♭`), + ((9, 10), `♭`), + ]), + UpdateView, + RewriteApplied, + ], + actual, + ) + }, ) - } else { - IM.deep_equal( - [ - RewriteIssued([ - ((0, 1), j`♭`), - ((3, 4), j`♭`), - ((6, 7), j`♭`), - ((9, 10), j`♭`), - ]), - UpdateView, - RewriteApplied, - ], - actual, + ->flatMapOk( + () => A.equal(`♭\\n♭\\n♭\\n♭`, replaceCRLF(Editor.Text.getAll(document))), ) - } - ) - ->flatMapOk(() => - A.equal(j`♭\\n♭\\n♭\\n♭`, replaceCRLF(Editor.Text.getAll(document))) - ) - ->flatMapOk(() => IM.insertChar(setup, "n")) - ->flatMapOk(actual => - if onUnix { - IM.deep_equal( - [ - RewriteIssued([ - ((0, 2), j`𝕟`), - ((3, 5), j`𝕟`), - ((6, 8), j`𝕟`), - ((9, 11), j`𝕟`), - ]), - Deactivate, - RewriteApplied, - ], - actual, + ->flatMapOk(() => IM.insertChar(setup, "n")) + ->flatMapOk( + actual => + if onUnix { + IM.deep_equal( + [ + RewriteIssued([ + ((0, 2), `𝕟`), + ((3, 5), `𝕟`), + ((6, 8), `𝕟`), + ((9, 11), `𝕟`), + ]), + Deactivate, + RewriteApplied, + ], + actual, + ) + } else { + IM.deep_equal( + [ + RewriteIssued([ + ((0, 2), `𝕟`), + ((4, 6), `𝕟`), + ((8, 10), `𝕟`), + ((12, 14), `𝕟`), + ]), + Deactivate, + RewriteApplied, + ], + actual, + ) + }, ) - } else { - IM.deep_equal( - [ - RewriteIssued([ - ((0, 2), j`𝕟`), - ((4, 6), j`𝕟`), - ((8, 10), j`𝕟`), - ((12, 14), j`𝕟`), - ]), - Deactivate, - RewriteApplied, - ], - actual, + ->flatMapOk( + () => A.equal(`𝕟\\n𝕟\\n𝕟\\n𝕟`, replaceCRLF(Editor.Text.getAll(document))), ) - } - ) - ->flatMapOk(() => - A.equal(j`𝕟\\n𝕟\\n𝕟\\n𝕟`, replaceCRLF(Editor.Text.getAll(document))) + }, ) - }) - }) - Q.it(j`should work just fine (∧)`, () => { - acquire(setup)->flatMapOk(setup => { - let positions = [ - VSCode.Position.make(0, 0), - VSCode.Position.make(1, 1), - VSCode.Position.make(2, 2), - VSCode.Position.make(3, 3), - ] - let document = VSCode.TextEditor.document(setup.editor) + }, + ) + Q.it( + `should work just fine (∧)`, + () => { + acquire(setup)->flatMapOk( + setup => { + let positions = [ + VSCode.Position.make(0, 0), + VSCode.Position.make(1, 1), + VSCode.Position.make(2, 2), + VSCode.Position.make(3, 3), + ] + let document = VSCode.TextEditor.document(setup.editor) - document - ->Editor.Text.insert(VSCode.Position.make(0, 0), "123\n123\n123\n123") - ->flatMap(_ => IM.activate(setup, ~positions, ())) - ->flatMapOk(IM.deep_equal([Activate])) - ->flatMapOk(() => IM.insertChar(setup, "a")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => - A.equal(j`a123\\n1a23\\n12a3\\n123a`, replaceCRLF(Editor.Text.getAll(document))) - ) - ->flatMapOk(() => IM.insertChar(setup, "n")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => - A.equal(j`an123\\n1an23\\n12an3\\n123an`, replaceCRLF(Editor.Text.getAll(document))) - ) - ->flatMapOk(() => IM.insertChar(setup, "d")) - ->flatMapOk(actual => - if onUnix { - IM.deep_equal( - [ - RewriteIssued([ - ((0, 3), j`∧`), - ((8, 11), j`∧`), - ((16, 19), j`∧`), - ((24, 27), j`∧`), - ]), - UpdateView, - RewriteApplied, - ], - actual, + document + ->Editor.Text.insert(VSCode.Position.make(0, 0), "123\n123\n123\n123") + ->flatMap(_ => IM.activate(setup, ~positions, ())) + ->flatMapOk(IM.deep_equal([Activate])) + ->flatMapOk(() => IM.insertChar(setup, "a")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk( + () => A.equal(`a123\\n1a23\\n12a3\\n123a`, replaceCRLF(Editor.Text.getAll(document))), ) - } else { - IM.deep_equal( - [ - RewriteIssued([ - ((0, 3), j`∧`), - ((9, 12), j`∧`), - ((18, 21), j`∧`), - ((27, 30), j`∧`), - ]), - UpdateView, - RewriteApplied, - ], - actual, + ->flatMapOk(() => IM.insertChar(setup, "n")) + ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) + ->flatMapOk( + () => + A.equal(`an123\\n1an23\\n12an3\\n123an`, replaceCRLF(Editor.Text.getAll(document))), ) - } - ) - ->flatMapOk(() => - A.equal(j`∧123\\n1∧23\\n12∧3\\n123∧`, replaceCRLF(Editor.Text.getAll(document))) + ->flatMapOk(() => IM.insertChar(setup, "d")) + ->flatMapOk( + actual => + if onUnix { + IM.deep_equal( + [ + RewriteIssued([ + ((0, 3), `∧`), + ((8, 11), `∧`), + ((16, 19), `∧`), + ((24, 27), `∧`), + ]), + UpdateView, + RewriteApplied, + ], + actual, + ) + } else { + IM.deep_equal( + [ + RewriteIssued([ + ((0, 3), `∧`), + ((9, 12), `∧`), + ((18, 21), `∧`), + ((27, 30), `∧`), + ]), + UpdateView, + RewriteApplied, + ], + actual, + ) + }, + ) + ->flatMapOk( + () => + A.equal( + `∧123\\n1∧23\\n12∧3\\n123∧`, + replaceCRLF(Editor.Text.getAll(document)), + ), + ) + }, ) - }) - }) + }, + ) }) }) diff --git a/test/tests/Test__PromptIM.res b/test/tests/Test__PromptIM.res index 5fe7ae35..499c3183 100644 --- a/test/tests/Test__PromptIM.res +++ b/test/tests/Test__PromptIM.res @@ -52,7 +52,7 @@ // describe_only("Input Method (Prompt)", () => { // describe("Insertion", () => { -// // it(j`test`, () => { +// // it(`test`, () => { // // activateExtensionAndLoad()->get(chan => { // // Js.log("chan") // // () @@ -61,25 +61,25 @@ // // }) // // }) -// // it(j`should translate "\\bn" to "𝕟"`, () => { +// // it(`should translate "\\bn" to "𝕟"`, () => { // // let promptIM = PromptIM.make() // // promptIM->PromptIM.activate("") -// // promptIM->testPromptIMUpdate(~input=j`b`, ~output=j`♭`, ()) -// // promptIM->testPromptIMUpdate(~input=j`♭n`, ~output=j`𝕟`, ~command=Deactivate, ()) +// // promptIM->testPromptIMUpdate(~input=`b`, ~output=`♭`, ()) +// // promptIM->testPromptIMUpdate(~input=`♭n`, ~output=`𝕟`, ~command=Deactivate, ()) // // }) -// // it(j`should translate "garbage \\\\bn" to "garbage 𝕟"`, () => { +// // it(`should translate "garbage \\\\bn" to "garbage 𝕟"`, () => { // // let promptIM = PromptIM.make() // // promptIM->PromptIM.activate("garbage ") -// // promptIM->testPromptIMUpdate(~input=j`garbage b`, ~output=j`garbage ♭`, ()) +// // promptIM->testPromptIMUpdate(~input=`garbage b`, ~output=`garbage ♭`, ()) // // promptIM->testPromptIMUpdate( -// // ~input=j`garbage ♭n`, -// // ~output=j`garbage 𝕟`, +// // ~input=`garbage ♭n`, +// // ~output=`garbage 𝕟`, // // ~command=Deactivate, // // (), // // ) @@ -87,24 +87,24 @@ // () // }) -// // describe("Backspacing", () => it(j`should work just fine`, () => { +// // describe("Backspacing", () => it(`should work just fine`, () => { // // let promptIM = PromptIM.make() // // promptIM->PromptIM.activate("") -// // promptIM->testPromptIMUpdate(~input=j`l`, ~output=j`←`, ()) -// // promptIM->testPromptIMUpdate(~input=j`←a`, ~output=j`←a`, ()) -// // promptIM->testPromptIMUpdate(~input=j`←am`, ~output=j`←am`, ()) -// // promptIM->testPromptIMUpdate(~input=j`←amb`, ~output=j`←amb`, ()) -// // promptIM->testPromptIMUpdate(~input=j`←ambd`, ~output=j`←ambd`, ()) -// // promptIM->testPromptIMUpdate(~input=j`←ambda`, ~output=j`λ`, ()) -// // promptIM->testPromptIMUpdate(~input=j``, ~output=j`lambd`, ()) -// // promptIM->testPromptIMUpdate(~input=j`lamb`, ~output=j`lamb`, ()) -// // promptIM->testPromptIMUpdate(~input=j`lambd`, ~output=j`lambd`, ()) -// // promptIM->testPromptIMUpdate(~input=j`lambda`, ~output=j`λ`, ()) -// // promptIM->testPromptIMUpdate(~input=j`λb`, ~output=j`λb`, ()) -// // promptIM->testPromptIMUpdate(~input=j`λba`, ~output=j`λba`, ()) -// // promptIM->testPromptIMUpdate(~input=j`λbar`, ~output=j`ƛ`, ~command=Deactivate, ()) +// // promptIM->testPromptIMUpdate(~input=`l`, ~output=`←`, ()) +// // promptIM->testPromptIMUpdate(~input=`←a`, ~output=`←a`, ()) +// // promptIM->testPromptIMUpdate(~input=`←am`, ~output=`←am`, ()) +// // promptIM->testPromptIMUpdate(~input=`←amb`, ~output=`←amb`, ()) +// // promptIM->testPromptIMUpdate(~input=`←ambd`, ~output=`←ambd`, ()) +// // promptIM->testPromptIMUpdate(~input=`←ambda`, ~output=`λ`, ()) +// // promptIM->testPromptIMUpdate(~input=``, ~output=`lambd`, ()) +// // promptIM->testPromptIMUpdate(~input=`lamb`, ~output=`lamb`, ()) +// // promptIM->testPromptIMUpdate(~input=`lambd`, ~output=`lambd`, ()) +// // promptIM->testPromptIMUpdate(~input=`lambda`, ~output=`λ`, ()) +// // promptIM->testPromptIMUpdate(~input=`λb`, ~output=`λb`, ()) +// // promptIM->testPromptIMUpdate(~input=`λba`, ~output=`λba`, ()) +// // promptIM->testPromptIMUpdate(~input=`λbar`, ~output=`ƛ`, ~command=Deactivate, ()) // // })) // }) diff --git a/test/tests/TextEditor/Test__AgdaOffset.res b/test/tests/TextEditor/Test__AgdaOffset.res index 14cbd097..57b6b40d 100644 --- a/test/tests/TextEditor/Test__AgdaOffset.res +++ b/test/tests/TextEditor/Test__AgdaOffset.res @@ -3,7 +3,7 @@ open! BsMocha.Mocha module Assert = BsMocha.Assert module P = BsMocha.Promise -let issue7 = j`module Issue7 where\\n-- 𝕁\\na = {! !}` +let issue7 = "module Issue7 where\\n-- 𝕁\\na = {! !}" let openEditorWithContent = content => VSCode.Workspace.openTextDocumentWithOptions( @@ -14,173 +14,209 @@ let openEditorWithContent = content => describe("Conversion between Agda Offsets and Editor Offsets", () => { describe("Agda.OffsetConverter.characterWidth", () => { - it("should calculate the width of some grapheme cluster", () => { - let expected = 1 - let actual = Agda.OffsetConverter.characterWidth(j`𝐀`) - Assert.deep_equal(actual, expected) - }) - it("should calculate the width of some ordinary ASCII character", () => { - let expected = 1 - let actual = Agda.OffsetConverter.characterWidth(j`a`) - Assert.deep_equal(actual, expected) - }) + it( + "should calculate the width of some grapheme cluster", + () => { + let expected = 1 + let actual = Agda.OffsetConverter.characterWidth("𝐀") + Assert.deep_equal(actual, expected) + }, + ) + it( + "should calculate the width of some ordinary ASCII character", + () => { + let expected = 1 + let actual = Agda.OffsetConverter.characterWidth("a") + Assert.deep_equal(actual, expected) + }, + ) }) describe("Agda.OffsetConverter.computeUTF16SurrogatePairIndices", () => - it("should work", () => { - Assert.deep_equal( - Agda.OffsetConverter.computeUTF16SurrogatePairIndices(j`𝐀𝐀𝐀𝐀\\n𝐀𝐀𝐀𝐀`), - [0, 2, 4, 6, 9, 11, 13, 15], - ) - Assert.deep_equal( - Agda.OffsetConverter.computeUTF16SurrogatePairIndices(j`𝐀a𝐁bb𝐂c𝐃dd𝐄e𝐅𝐆𝐇\\na`), - [0, 3, 7, 10, 14, 17, 19, 21], - ) - // Issue #7 - Assert.deep_equal(Agda.OffsetConverter.computeUTF16SurrogatePairIndices(issue7), [23]) - }) + it( + "should work", + () => { + Assert.deep_equal( + Agda.OffsetConverter.computeUTF16SurrogatePairIndices( + "𝐀𝐀𝐀𝐀\\n𝐀𝐀𝐀𝐀", + ), + [0, 2, 4, 6, 9, 11, 13, 15], + ) + Assert.deep_equal( + Agda.OffsetConverter.computeUTF16SurrogatePairIndices( + "𝐀a𝐁bb𝐂c𝐃dd𝐄e𝐅𝐆𝐇\\na", + ), + [0, 3, 7, 10, 14, 17, 19, 21], + ) + // Issue #7 + Assert.deep_equal(Agda.OffsetConverter.computeUTF16SurrogatePairIndices(issue7), [23]) + }, + ) ) describe("Common.Indices.make", () => - it("should work", () => { - open Agda.Indices - Assert.deep_equal( - j`𝐀𝐀𝐀𝐀\\n𝐀𝐀𝐀𝐀` - ->Agda.OffsetConverter.computeUTF16SurrogatePairIndices - ->make - ->expose - ->fst, - [(0, 0), (1, 1), (2, 2), (3, 3), (4, 5), (6, 6), (7, 7), (8, 8)], - ) - Assert.deep_equal( - j`𝐀a𝐁bb𝐂c𝐃dd𝐄e𝐅𝐆𝐇\\na` - ->Agda.OffsetConverter.computeUTF16SurrogatePairIndices - ->make - ->expose - ->fst, - [(0, 0), (1, 2), (3, 5), (6, 7), (8, 10), (11, 12), (13, 13), (14, 14)], - ) - }) + it( + "should work", + () => { + open Agda.Indices + Assert.deep_equal( + "𝐀𝐀𝐀𝐀\\n𝐀𝐀𝐀𝐀" + ->Agda.OffsetConverter.computeUTF16SurrogatePairIndices + ->make + ->expose + ->fst, + [(0, 0), (1, 1), (2, 2), (3, 3), (4, 5), (6, 6), (7, 7), (8, 8)], + ) + Assert.deep_equal( + "𝐀a𝐁bb𝐂c𝐃dd𝐄e𝐅𝐆𝐇\\na" + ->Agda.OffsetConverter.computeUTF16SurrogatePairIndices + ->make + ->expose + ->fst, + [(0, 0), (1, 2), (3, 5), (6, 7), (8, 10), (11, 12), (13, 13), (14, 14)], + ) + }, + ) ) describe("Common.Indices.convert", () => { - it("should work", () => { - open Agda.Indices - let a = make( - Agda.OffsetConverter.computeUTF16SurrogatePairIndices(j`𝐀𝐀𝐀𝐀\\n𝐀𝐀𝐀𝐀`), - ) - Assert.deep_equal(convert(a, 0), 0) - Assert.deep_equal(a->expose->snd, 0) - Assert.deep_equal(convert(a, 1), 2) - Assert.deep_equal(a->expose->snd, 1) - Assert.deep_equal(convert(a, 2), 4) - Assert.deep_equal(a->expose->snd, 2) - Assert.deep_equal(convert(a, 3), 6) - Assert.deep_equal(a->expose->snd, 3) - Assert.deep_equal(convert(a, 0), 0) - Assert.deep_equal(a->expose->snd, 0) - Assert.deep_equal(convert(a, 4), 8) - Assert.deep_equal(convert(a, 5), 9) - Assert.deep_equal(convert(a, 6), 11) - Assert.deep_equal(convert(a, 7), 13) - Assert.deep_equal(convert(a, 8), 15) - Assert.deep_equal(convert(a, 9), 17) - Assert.deep_equal(a->expose->snd, 8) - }) + it( + "should work", + () => { + open Agda.Indices + let a = make( + Agda.OffsetConverter.computeUTF16SurrogatePairIndices( + "𝐀𝐀𝐀𝐀\\n𝐀𝐀𝐀𝐀", + ), + ) + Assert.deep_equal(convert(a, 0), 0) + Assert.deep_equal(a->expose->snd, 0) + Assert.deep_equal(convert(a, 1), 2) + Assert.deep_equal(a->expose->snd, 1) + Assert.deep_equal(convert(a, 2), 4) + Assert.deep_equal(a->expose->snd, 2) + Assert.deep_equal(convert(a, 3), 6) + Assert.deep_equal(a->expose->snd, 3) + Assert.deep_equal(convert(a, 0), 0) + Assert.deep_equal(a->expose->snd, 0) + Assert.deep_equal(convert(a, 4), 8) + Assert.deep_equal(convert(a, 5), 9) + Assert.deep_equal(convert(a, 6), 11) + Assert.deep_equal(convert(a, 7), 13) + Assert.deep_equal(convert(a, 8), 15) + Assert.deep_equal(convert(a, 9), 17) + Assert.deep_equal(a->expose->snd, 8) + }, + ) - it("issue #7", () => { - open Agda.Indices - let a = make(Agda.OffsetConverter.computeUTF16SurrogatePairIndices(issue7)) - Assert.deep_equal(convert(a, 0), 0) - Assert.deep_equal(convert(a, 6), 6) - Assert.deep_equal(convert(a, 14), 14) - Assert.deep_equal(convert(a, 19), 19) - Assert.deep_equal(convert(a, 20), 20) - Assert.deep_equal(a->expose->snd, 0) - Assert.deep_equal(convert(a, 24), 25) - Assert.deep_equal(a->expose->snd, 1) - Assert.deep_equal(convert(a, 27), 28) - Assert.deep_equal(convert(a, 28), 29) - Assert.deep_equal(convert(a, 29), 30) - Assert.deep_equal(convert(a, 36), 37) - Assert.deep_equal(a->expose->snd, 1) - Assert.deep_equal(convert(a, 0), 0) - Assert.deep_equal(a->expose->snd, 0) // the cursor should be reset to 0 - Assert.deep_equal(convert(a, 6), 6) - Assert.deep_equal(convert(a, 7), 7) - Assert.deep_equal(convert(a, 14), 14) - Assert.deep_equal(convert(a, 19), 19) - Assert.deep_equal(convert(a, 20), 20) - Assert.deep_equal(a->expose->snd, 0) - Assert.deep_equal(convert(a, 24), 25) - Assert.deep_equal(a->expose->snd, 1) - Assert.deep_equal(convert(a, 0), 0) - Assert.deep_equal(a->expose->snd, 0) // the cursor should be reset to 0 - }) + it( + "issue #7", + () => { + open Agda.Indices + let a = make(Agda.OffsetConverter.computeUTF16SurrogatePairIndices(issue7)) + Assert.deep_equal(convert(a, 0), 0) + Assert.deep_equal(convert(a, 6), 6) + Assert.deep_equal(convert(a, 14), 14) + Assert.deep_equal(convert(a, 19), 19) + Assert.deep_equal(convert(a, 20), 20) + Assert.deep_equal(a->expose->snd, 0) + Assert.deep_equal(convert(a, 24), 25) + Assert.deep_equal(a->expose->snd, 1) + Assert.deep_equal(convert(a, 27), 28) + Assert.deep_equal(convert(a, 28), 29) + Assert.deep_equal(convert(a, 29), 30) + Assert.deep_equal(convert(a, 36), 37) + Assert.deep_equal(a->expose->snd, 1) + Assert.deep_equal(convert(a, 0), 0) + Assert.deep_equal(a->expose->snd, 0) // the cursor should be reset to 0 + Assert.deep_equal(convert(a, 6), 6) + Assert.deep_equal(convert(a, 7), 7) + Assert.deep_equal(convert(a, 14), 14) + Assert.deep_equal(convert(a, 19), 19) + Assert.deep_equal(convert(a, 20), 20) + Assert.deep_equal(a->expose->snd, 0) + Assert.deep_equal(convert(a, 24), 25) + Assert.deep_equal(a->expose->snd, 1) + Assert.deep_equal(convert(a, 0), 0) + Assert.deep_equal(a->expose->snd, 0) // the cursor should be reset to 0 + }, + ) }) describe("Editor.toUTF8Offset", () => { - P.it("should do it right", () => - openEditorWithContent(j`𝐀a𝐁bb𝐂c\\na`) - ->Promise.map(textEditor => { - let f = n => textEditor->VSCode.TextEditor.document->Editor.toUTF8Offset(n) - Assert.equal(f(0), 0) - Assert.equal(f(1), 1) // cuts grapheme in half, toUTF8Offset is a partial function - Assert.equal(f(2), 1) - Assert.equal(f(3), 2) - Assert.equal(f(5), 3) - Assert.equal(f(6), 4) - Assert.equal(f(7), 5) - Assert.equal(f(9), 6) - Assert.equal(f(10), 7) - Assert.equal(f(11), 8) - Assert.equal(f(12), 9) - }) - ->Promise.Js.toBsPromise + P.it( + "should do it right", + () => + openEditorWithContent("𝐀a𝐁bb𝐂c\\na") + ->Promise.map( + textEditor => { + let f = n => textEditor->VSCode.TextEditor.document->Editor.toUTF8Offset(n) + Assert.equal(f(0), 0) + Assert.equal(f(1), 1) // cuts grapheme in half, toUTF8Offset is a partial function + Assert.equal(f(2), 1) + Assert.equal(f(3), 2) + Assert.equal(f(5), 3) + Assert.equal(f(6), 4) + Assert.equal(f(7), 5) + Assert.equal(f(9), 6) + Assert.equal(f(10), 7) + Assert.equal(f(11), 8) + Assert.equal(f(12), 9) + }, + ) + ->Promise.Js.toBsPromise, ) - P.it("should be a left inverse of Editor.fromUTF8Offset", () => - // toUTF8Offset . fromUTF8Offset = id - openEditorWithContent(j`𝐀a𝐁bb𝐂c\\na`) - ->Promise.map(textEditor => { - let f = n => textEditor->VSCode.TextEditor.document->Editor.toUTF8Offset(n) - let g = n => - Agda.OffsetConverter.computeUTF16SurrogatePairIndices(j`𝐀a𝐁bb𝐂c\\na`) - ->Agda.Indices.make - ->Agda.Indices.convert(n) - Assert.equal(f(g(0)), 0) - Assert.equal(f(g(1)), 1) - Assert.equal(f(g(2)), 2) - Assert.equal(f(g(3)), 3) - Assert.equal(f(g(4)), 4) - Assert.equal(f(g(5)), 5) - Assert.equal(f(g(6)), 6) - Assert.equal(f(g(7)), 7) - Assert.equal(f(g(8)), 8) - Assert.equal(f(g(9)), 9) - }) - ->Promise.Js.toBsPromise + P.it( + "should be a left inverse of Editor.fromUTF8Offset", + () => + // toUTF8Offset . fromUTF8Offset = id + openEditorWithContent("𝐀a𝐁bb𝐂c\\na") + ->Promise.map( + textEditor => { + let f = n => textEditor->VSCode.TextEditor.document->Editor.toUTF8Offset(n) + let g = n => + Agda.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c\\na") + ->Agda.Indices.make + ->Agda.Indices.convert(n) + Assert.equal(f(g(0)), 0) + Assert.equal(f(g(1)), 1) + Assert.equal(f(g(2)), 2) + Assert.equal(f(g(3)), 3) + Assert.equal(f(g(4)), 4) + Assert.equal(f(g(5)), 5) + Assert.equal(f(g(6)), 6) + Assert.equal(f(g(7)), 7) + Assert.equal(f(g(8)), 8) + Assert.equal(f(g(9)), 9) + }, + ) + ->Promise.Js.toBsPromise, ) - P.it("should be a right inverse of Editor.fromUTF8Offset ()", () => - // NOTE: toUTF8Offset is a partial function - // fromUTF8Offset . toUTF8Offset = id - openEditorWithContent(j`𝐀a𝐁bb𝐂c\\na`) - ->Promise.map(textEditor => { - let f = n => - Agda.OffsetConverter.computeUTF16SurrogatePairIndices(j`𝐀a𝐁bb𝐂c\\na`) - ->Agda.Indices.make - ->Agda.Indices.convert(n) - let g = n => textEditor->VSCode.TextEditor.document->Editor.toUTF8Offset(n) - Assert.equal(f(g(0)), 0) - Assert.equal(f(g(2)), 2) - Assert.equal(f(g(3)), 3) - Assert.equal(f(g(5)), 5) - Assert.equal(f(g(6)), 6) - Assert.equal(f(g(7)), 7) - Assert.equal(f(g(9)), 9) - }) - ->Promise.Js.toBsPromise + P.it( + "should be a right inverse of Editor.fromUTF8Offset ()", + () => + // NOTE: toUTF8Offset is a partial function + // fromUTF8Offset . toUTF8Offset = id + openEditorWithContent("𝐀a𝐁bb𝐂c\\na") + ->Promise.map( + textEditor => { + let f = n => + Agda.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c\\na") + ->Agda.Indices.make + ->Agda.Indices.convert(n) + let g = n => textEditor->VSCode.TextEditor.document->Editor.toUTF8Offset(n) + Assert.equal(f(g(0)), 0) + Assert.equal(f(g(2)), 2) + Assert.equal(f(g(3)), 3) + Assert.equal(f(g(5)), 5) + Assert.equal(f(g(6)), 6) + Assert.equal(f(g(7)), 7) + Assert.equal(f(g(9)), 9) + }, + ) + ->Promise.Js.toBsPromise, ) }) }) diff --git a/test/tests/TextEditor/Test__LineEnding.res b/test/tests/TextEditor/Test__LineEnding.res index 0a645d11..a5e1ced5 100644 --- a/test/tests/TextEditor/Test__LineEnding.res +++ b/test/tests/TextEditor/Test__LineEnding.res @@ -11,43 +11,52 @@ let openEditorWithContent = content => describe("Conversion of offsets between LF and CRLF line endings", () => { describe("Editor.computeCRLFIndices", () => - it("should work", () => { - Assert.deep_equal(Agda.OffsetConverter.computeCRLFIndices(j`1234\\r\\n78`), [4]) - Assert.deep_equal(Agda.OffsetConverter.computeCRLFIndices(j`12\\r\\n56\\r\\n90`), [2, 6]) - }) + it( + "should work", + () => { + Assert.deep_equal(Agda.OffsetConverter.computeCRLFIndices("1234\\r\\n78"), [4]) + Assert.deep_equal(Agda.OffsetConverter.computeCRLFIndices("12\\r\\n56\\r\\n90"), [2, 6]) + }, + ) ) describe("Editor.Indices.make", () => - it("should work", () => { - open Agda.Indices - () - Assert.deep_equal( - j`12\\r\\n56\\r\\n90`->Agda.OffsetConverter.computeCRLFIndices->make->expose->fst, - [(0, 2), (3, 5)], - ) - }) + it( + "should work", + () => { + open Agda.Indices + () + Assert.deep_equal( + "12\\r\\n56\\r\\n90"->Agda.OffsetConverter.computeCRLFIndices->make->expose->fst, + [(0, 2), (3, 5)], + ) + }, + ) ) describe("Editor.Indices.convert", () => - it("should work", () => { - open Agda.Indices - let a = make(Agda.OffsetConverter.computeCRLFIndices(j`12\\r\\n56\\r\\n90`)) - Assert.deep_equal(convert(a, 0), 0) - Assert.deep_equal(a->expose->snd, 0) - Assert.deep_equal(convert(a, 1), 1) - Assert.deep_equal(a->expose->snd, 0) - Assert.deep_equal(convert(a, 2), 2) - Assert.deep_equal(a->expose->snd, 0) - Assert.deep_equal(convert(a, 3), 4) - Assert.deep_equal(a->expose->snd, 1) - Assert.deep_equal(convert(a, 4), 5) - Assert.deep_equal(a->expose->snd, 1) - Assert.deep_equal(convert(a, 5), 6) - Assert.deep_equal(a->expose->snd, 1) - Assert.deep_equal(convert(a, 6), 8) - Assert.deep_equal(a->expose->snd, 2) - Assert.deep_equal(convert(a, 7), 9) - Assert.deep_equal(a->expose->snd, 2) - }) + it( + "should work", + () => { + open Agda.Indices + let a = make(Agda.OffsetConverter.computeCRLFIndices("12\\r\\n56\\r\\n90")) + Assert.deep_equal(convert(a, 0), 0) + Assert.deep_equal(a->expose->snd, 0) + Assert.deep_equal(convert(a, 1), 1) + Assert.deep_equal(a->expose->snd, 0) + Assert.deep_equal(convert(a, 2), 2) + Assert.deep_equal(a->expose->snd, 0) + Assert.deep_equal(convert(a, 3), 4) + Assert.deep_equal(a->expose->snd, 1) + Assert.deep_equal(convert(a, 4), 5) + Assert.deep_equal(a->expose->snd, 1) + Assert.deep_equal(convert(a, 5), 6) + Assert.deep_equal(a->expose->snd, 1) + Assert.deep_equal(convert(a, 6), 8) + Assert.deep_equal(a->expose->snd, 2) + Assert.deep_equal(convert(a, 7), 9) + Assert.deep_equal(a->expose->snd, 2) + }, + ) ) }) From c1b079f730164f4fbfef80f8fe6d70367b44a61d Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sun, 26 Nov 2023 21:35:56 +0800 Subject: [PATCH 010/109] [ fix ] Regex of the S-expression parser --- lib/js/src/Parser/Parser.bs.js | 2 +- src/Connection/Emacs/Connection__Emacs.res | 14 ++++++-------- src/Parser/Parser.res | 2 +- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/lib/js/src/Parser/Parser.bs.js b/lib/js/src/Parser/Parser.bs.js index 1d4f4e92..d702bd18 100644 --- a/lib/js/src/Parser/Parser.bs.js +++ b/lib/js/src/Parser/Parser.bs.js @@ -9,7 +9,7 @@ var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); function split(s) { - return Belt_Array.keepMap(Belt_Array.map(Js_string.splitByRe(/\\r\\n|\\n/, s), (function (x) { + return Belt_Array.keepMap(Belt_Array.map(Js_string.splitByRe(/\r\n|\n/, s), (function (x) { if (x !== undefined && x !== "") { return x; } diff --git a/src/Connection/Emacs/Connection__Emacs.res b/src/Connection/Emacs/Connection__Emacs.res index ff6c6e82..3261be79 100644 --- a/src/Connection/Emacs/Connection__Emacs.res +++ b/src/Connection/Emacs/Connection__Emacs.res @@ -41,9 +41,9 @@ module ProcInfo: { | Some(Some(version)) => resolve( Ok({ - path: path, - args: args, - version: version, + path, + args, + version, }), ) } @@ -170,7 +170,7 @@ module Module: Module = { ProcInfo.make(path, args) ->Promise.mapOk(procInfo => { - procInfo: procInfo, + procInfo, process: Process.make(procInfo.path, procInfo.args), chan: Chan.make(), encountedFirstPrompt: false, @@ -207,8 +207,7 @@ module Module: Module = { // stop the Agda Response listener stopResponseListener(Ok()) // start handling Last Responses, after all NonLast Responses have been handled - scheduler - ->Scheduler.runLast(response => { + scheduler->Scheduler.runLast(response => { callback(Ok(response)) // resolve the `responseHandlingPromise` after all Last Responses have been handled }) @@ -218,8 +217,7 @@ module Module: Module = { let listenerHandle = ref(None) listenerHandle := Some(conn.chan->Chan.on(listener)) // destroy the listener after all responses have been received - responsePromise - ->Promise.tap(_ => + responsePromise->Promise.tap(_ => listenerHandle.contents->Option.forEach(destroyListener => destroyListener()) ) } diff --git a/src/Parser/Parser.res b/src/Parser/Parser.res index 6328ced4..71b6681b 100644 --- a/src/Parser/Parser.res +++ b/src/Parser/Parser.res @@ -2,7 +2,7 @@ open Belt let split = s => s - ->Js.String.splitByRe(%re("/\\r\\n|\\n/"), _) + ->Js.String.splitByRe(%re("/\r\n|\n/"), _) ->Array.map(x => switch x { | None => None From 12acef0d9ce28e6a262309fa3c18839ce66760fa Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sun, 26 Nov 2023 21:41:18 +0800 Subject: [PATCH 011/109] [ fix ] Regex for splitting strings delimited by \n or \r\n --- lib/js/src/Response.bs.js | 2 +- src/Response.res | 10 ++-------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/lib/js/src/Response.bs.js b/lib/js/src/Response.bs.js index 5f19942d..b54a1d81 100644 --- a/lib/js/src/Response.bs.js +++ b/lib/js/src/Response.bs.js @@ -116,7 +116,7 @@ function parse(xs) { if (match.TAG !== /* A */0) { return ; } - var payload = Js_string.replaceByRe(/\\\\r\\\\n|\\\\n/g, "\n", match._0); + var payload = Js_string.replaceByRe(/\\r\\n|\\n/g, "\n", match._0); var match$1 = Belt_Array.get(xs, 0); if (match$1 === undefined) { return ; diff --git a/src/Response.res b/src/Response.res index 03bdc71b..9abbeb22 100644 --- a/src/Response.res +++ b/src/Response.res @@ -34,13 +34,7 @@ module DisplayInfo = { | CompilationOkLSP(array, array) | Constraints(option) | AllGoalsWarnings(string, string) - | AllGoalsWarningsLSP( - string, - array, - array, - array, - array, - ) + | AllGoalsWarningsLSP(string, array, array, array, array) | Time(string) | Error(string) | Intro(string) @@ -88,7 +82,7 @@ module DisplayInfo = { let parse = (xs: array): option => switch xs[1] { | Some(A(rawPayload)) => - let payload = rawPayload |> Js.String.replaceByRe(%re("/\\\\r\\\\n|\\\\n/g"), "\n") + let payload = rawPayload |> Js.String.replaceByRe(%re("/\\r\\n|\\n/g"), "\n") switch xs[0] { | Some(A("*Compilation result*")) => Some(CompilationOk(payload)) | Some(A("*Constraints*")) => From d307007a0568f054b9ac62414203b322d5e9a957 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sun, 26 Nov 2023 22:45:43 +0800 Subject: [PATCH 012/109] [ fix ] RegEx for parsing ranges in errors --- lib/js/src/View/Common.bs.js | 2 +- lib/js/src/View/Component/RichText.bs.js | 2 +- src/Main.res | 2 +- src/Parser/Parser.res | 5 +- src/Response.res | 2 +- src/View/Common.res | 118 ++++++++++++----------- src/View/Component/RichText.res | 8 +- 7 files changed, 74 insertions(+), 65 deletions(-) diff --git a/lib/js/src/View/Common.bs.js b/lib/js/src/View/Common.bs.js index fd381743..72ead9a7 100644 --- a/lib/js/src/View/Common.bs.js +++ b/lib/js/src/View/Common.bs.js @@ -84,7 +84,7 @@ var AgdaInterval = { encode: encode$1 }; -var partial_arg = /^(\\S+)\\:(?:(\\d+)\\,(\\d+)\\-(\\d+)\\,(\\d+)|(\\d+)\\,(\\d+)\\-(\\d+))$/; +var partial_arg = /^(\S+)\:(?:(\d+)\,(\d+)\-(\d+)\,(\d+)|(\d+)\,(\d+)\-(\d+))$/; function parse(param) { return Emacs__Parser$AgdaModeVscode.captures(partial_arg, (function (captured) { diff --git a/lib/js/src/View/Component/RichText.bs.js b/lib/js/src/View/Component/RichText.bs.js index 5afb59c4..b9ee8c45 100644 --- a/lib/js/src/View/Component/RichText.bs.js +++ b/lib/js/src/View/Component/RichText.bs.js @@ -516,7 +516,7 @@ function concatMany(xs) { } function parse(raw) { - return concatMany(Belt_Array.mapWithIndex(Belt_Array.keepMap(Js_string.splitByRe(/([^\\(\\)\\s]+\\:(?:\\d+\\,\\d+\\-\\d+\\,\\d+|\\d+\\,\\d+\\-\\d+))/, raw), (function (x) { + return concatMany(Belt_Array.mapWithIndex(Belt_Array.keepMap(Js_string.splitByRe(/([^\(\)\s]+\:(?:\d+\,\d+\-\d+\,\d+|\d+\,\d+\-\d+))/, raw), (function (x) { return x; })), (function (i, token) { var match = i % 2; diff --git a/src/Main.res b/src/Main.res index 6de266c4..dafa3f19 100644 --- a/src/Main.res +++ b/src/Main.res @@ -3,7 +3,7 @@ open Belt // if end with '.agda' or '.lagda' let isAgda = (fileName): bool => { let fileName = fileName->Parser.filepath - Js.Re.test_(%re("/\.agda$|\.lagda/i"), fileName) + Js.Re.test_(%re("/\.agda$|\.lagda/i"), fileName) // RegEx updated to v10.1.4 } module Inputs: { diff --git a/src/Parser/Parser.res b/src/Parser/Parser.res index 71b6681b..e2fba1b1 100644 --- a/src/Parser/Parser.res +++ b/src/Parser/Parser.res @@ -1,6 +1,7 @@ open Belt let split = s => + // RegEx updated to v10.1.4 s ->Js.String.splitByRe(%re("/\r\n|\n/"), _) ->Array.map(x => @@ -48,9 +49,9 @@ module Incr = { } let make = (initialContinuation, callback) => { - initialContinuation: initialContinuation, + initialContinuation, continuation: ref(None), - callback: callback, + callback, } // parsing with continuation diff --git a/src/Response.res b/src/Response.res index 9abbeb22..5e9cb696 100644 --- a/src/Response.res +++ b/src/Response.res @@ -82,7 +82,7 @@ module DisplayInfo = { let parse = (xs: array): option => switch xs[1] { | Some(A(rawPayload)) => - let payload = rawPayload |> Js.String.replaceByRe(%re("/\\r\\n|\\n/g"), "\n") + let payload = rawPayload |> Js.String.replaceByRe(%re("/\\r\\n|\\n/g"), "\n") // RegEx updated to v10.1.4 switch xs[0] { | Some(A("*Compilation result*")) => Some(CompilationOk(payload)) | Some(A("*Constraints*")) => diff --git a/src/View/Common.res b/src/View/Common.res index f3e75ac6..581382ef 100644 --- a/src/View/Common.res +++ b/src/View/Common.res @@ -13,9 +13,9 @@ module AgdaPosition = { let decode: Json.Decode.decoder = { open Json.Decode tuple3(int, int, int) |> map(((line, col, pos)) => { - line: line, - col: col, - pos: pos, + line, + col, + pos, }) } @@ -44,7 +44,7 @@ module AgdaInterval = { } else { b.end_ } - {start: start, end_: end_} + {start, end_} } let toString = (self): string => @@ -63,8 +63,8 @@ module AgdaInterval = { let decode: Json.Decode.decoder = { open Json.Decode pair(AgdaPosition.decode, AgdaPosition.decode) |> map(((start, end_)) => { - start: start, - end_: end_, + start, + end_, }) } @@ -82,8 +82,9 @@ module AgdaRange = { | Range(option, array) let parse = %re( + // Regex updated to v10.1.4 /* | different row | same row | */ - "/^(\\S+)\\:(?:(\\d+)\\,(\\d+)\\-(\\d+)\\,(\\d+)|(\\d+)\\,(\\d+)\\-(\\d+))$/" + "/^(\S+)\:(?:(\d+)\,(\d+)\-(\d+)\,(\d+)|(\d+)\,(\d+)\-(\d+))$/" )->Emacs__Parser.captures(captured => { open Belt open Belt.Option @@ -98,29 +99,32 @@ module AgdaRange = { captured[7] ->flatten ->flatMap(int_of_string_opt) - ->flatMap(colStart => - captured[8] - ->flatten - ->flatMap(int_of_string_opt) - ->flatMap(colEnd => Some( - Range( - srcFile, - [ - { - start: { - pos: 0, - line: row, - col: colStart, - }, - end_: { - pos: 0, - line: row, - col: colEnd, - }, - }, - ], + ->flatMap( + colStart => + captured[8] + ->flatten + ->flatMap(int_of_string_opt) + ->flatMap( + colEnd => Some( + Range( + srcFile, + [ + { + start: { + pos: 0, + line: row, + col: colStart, + }, + end_: { + pos: 0, + line: row, + col: colEnd, + }, + }, + ], + ), + ), ), - )) ) ) } else { @@ -131,34 +135,38 @@ module AgdaRange = { captured[3] ->flatten ->flatMap(int_of_string_opt) - ->flatMap(colStart => - captured[4] - ->flatten - ->flatMap(int_of_string_opt) - ->flatMap(rowEnd => - captured[5] + ->flatMap( + colStart => + captured[4] ->flatten ->flatMap(int_of_string_opt) - ->flatMap(colEnd => Some( - Range( - srcFile, - [ - { - start: { - pos: 0, - line: rowStart, - col: colStart, - }, - end_: { - pos: 0, - line: rowEnd, - col: colEnd, - }, - }, - ], - ), - )) - ) + ->flatMap( + rowEnd => + captured[5] + ->flatten + ->flatMap(int_of_string_opt) + ->flatMap( + colEnd => Some( + Range( + srcFile, + [ + { + start: { + pos: 0, + line: rowStart, + col: colStart, + }, + end_: { + pos: 0, + line: rowEnd, + col: colEnd, + }, + }, + ], + ), + ), + ), + ), ) ) } diff --git a/src/View/Component/RichText.res b/src/View/Component/RichText.res index 26a5831f..b9a6f020 100644 --- a/src/View/Component/RichText.res +++ b/src/View/Component/RichText.res @@ -172,12 +172,12 @@ module Module = { ) // from string by Emacs + // Regex updated to v10.1.4 let parse = raw => + // ranges at odd indices + // other tokens at even indices raw - ->Js.String.splitByRe( - %re("/([^\\(\\)\\s]+\\:(?:\\d+\\,\\d+\\-\\d+\\,\\d+|\\d+\\,\\d+\\-\\d+))/"), - _, - ) + ->Js.String.splitByRe(%re("/([^\(\)\s]+\:(?:\d+\,\d+\-\d+\,\d+|\d+\,\d+\-\d+))/"), _) ->Array.keepMap(x => x) ->Array.mapWithIndex((i, token) => switch mod(i, 2) { From fef0a328106417f96fab2aa0dd8ad179fc7f18ac Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sun, 26 Nov 2023 23:21:55 +0800 Subject: [PATCH 013/109] [ fix ] RegEx for AgdaRange --- lib/js/src/View/Common.bs.js | 106 +++++++++++++-------- lib/js/src/View/Component/RichText.bs.js | 2 +- src/View/Common.res | 114 +++++++++++++++-------- src/View/Component/RichText.res | 11 ++- 4 files changed, 155 insertions(+), 78 deletions(-) diff --git a/lib/js/src/View/Common.bs.js b/lib/js/src/View/Common.bs.js index 72ead9a7..82b0a596 100644 --- a/lib/js/src/View/Common.bs.js +++ b/lib/js/src/View/Common.bs.js @@ -84,7 +84,7 @@ var AgdaInterval = { encode: encode$1 }; -var partial_arg = /^(\S+)\:(?:(\d+)\,(\d+)\-(\d+)\,(\d+)|(\d+)\,(\d+)\-(\d+))$/; +var partial_arg = /^(\S+)\:(?:(\d+)\,(\d+)\-(\d+)\,(\d+)|(\d+)\,(\d+)\-(\d+)|(\d+)\,(\d+))$/; function parse(param) { return Emacs__Parser$AgdaModeVscode.captures(partial_arg, (function (captured) { @@ -92,13 +92,55 @@ function parse(param) { var srcFile = Belt_Option.flatMap(xs, (function (x) { return x; })); - var xs$1 = Belt_Array.get(captured, 6); - var sameRow = Belt_Option.isSome(Belt_Option.flatMap(xs$1, (function (x) { + var xs$1 = Belt_Array.get(captured, 2); + var isType1 = Belt_Option.isSome(Belt_Option.flatMap(xs$1, (function (x) { return x; }))); - if (sameRow) { - var xs$2 = Belt_Array.get(captured, 6); - return Belt_Option.flatMap(Belt_Option.flatMap(Belt_Option.flatMap(xs$2, (function (x) { + var xs$2 = Belt_Array.get(captured, 6); + var isType2 = Belt_Option.isSome(Belt_Option.flatMap(xs$2, (function (x) { + return x; + }))); + if (isType1) { + var xs$3 = Belt_Array.get(captured, 2); + return Belt_Option.flatMap(Belt_Option.flatMap(Belt_Option.flatMap(xs$3, (function (x) { + return x; + })), Pervasives.int_of_string_opt), (function (rowStart) { + var xs = Belt_Array.get(captured, 3); + return Belt_Option.flatMap(Belt_Option.flatMap(Belt_Option.flatMap(xs, (function (x) { + return x; + })), Pervasives.int_of_string_opt), (function (colStart) { + var xs = Belt_Array.get(captured, 4); + return Belt_Option.flatMap(Belt_Option.flatMap(Belt_Option.flatMap(xs, (function (x) { + return x; + })), Pervasives.int_of_string_opt), (function (rowEnd) { + var xs = Belt_Array.get(captured, 5); + return Belt_Option.flatMap(Belt_Option.flatMap(Belt_Option.flatMap(xs, (function (x) { + return x; + })), Pervasives.int_of_string_opt), (function (colEnd) { + return { + _0: srcFile, + _1: [{ + start: { + line: rowStart, + col: colStart, + pos: 0 + }, + end_: { + line: rowEnd, + col: colEnd, + pos: 0 + } + }], + [Symbol.for("name")]: "Range" + }; + })); + })); + })); + })); + } + if (isType2) { + var xs$4 = Belt_Array.get(captured, 6); + return Belt_Option.flatMap(Belt_Option.flatMap(Belt_Option.flatMap(xs$4, (function (x) { return x; })), Pervasives.int_of_string_opt), (function (row) { var xs = Belt_Array.get(captured, 7); @@ -129,40 +171,30 @@ function parse(param) { })); })); } - var xs$3 = Belt_Array.get(captured, 2); - return Belt_Option.flatMap(Belt_Option.flatMap(Belt_Option.flatMap(xs$3, (function (x) { + var xs$5 = Belt_Array.get(captured, 9); + return Belt_Option.flatMap(Belt_Option.flatMap(Belt_Option.flatMap(xs$5, (function (x) { return x; - })), Pervasives.int_of_string_opt), (function (rowStart) { - var xs = Belt_Array.get(captured, 3); + })), Pervasives.int_of_string_opt), (function (row) { + var xs = Belt_Array.get(captured, 10); return Belt_Option.flatMap(Belt_Option.flatMap(Belt_Option.flatMap(xs, (function (x) { return x; - })), Pervasives.int_of_string_opt), (function (colStart) { - var xs = Belt_Array.get(captured, 4); - return Belt_Option.flatMap(Belt_Option.flatMap(Belt_Option.flatMap(xs, (function (x) { - return x; - })), Pervasives.int_of_string_opt), (function (rowEnd) { - var xs = Belt_Array.get(captured, 5); - return Belt_Option.flatMap(Belt_Option.flatMap(Belt_Option.flatMap(xs, (function (x) { - return x; - })), Pervasives.int_of_string_opt), (function (colEnd) { - return { - _0: srcFile, - _1: [{ - start: { - line: rowStart, - col: colStart, - pos: 0 - }, - end_: { - line: rowEnd, - col: colEnd, - pos: 0 - } - }], - [Symbol.for("name")]: "Range" - }; - })); - })); + })), Pervasives.int_of_string_opt), (function (col) { + return { + _0: srcFile, + _1: [{ + start: { + line: row, + col: col, + pos: 0 + }, + end_: { + line: row, + col: col, + pos: 0 + } + }], + [Symbol.for("name")]: "Range" + }; })); })); }), param); diff --git a/lib/js/src/View/Component/RichText.bs.js b/lib/js/src/View/Component/RichText.bs.js index b9ee8c45..a1ca88c5 100644 --- a/lib/js/src/View/Component/RichText.bs.js +++ b/lib/js/src/View/Component/RichText.bs.js @@ -516,7 +516,7 @@ function concatMany(xs) { } function parse(raw) { - return concatMany(Belt_Array.mapWithIndex(Belt_Array.keepMap(Js_string.splitByRe(/([^\(\)\s]+\:(?:\d+\,\d+\-\d+\,\d+|\d+\,\d+\-\d+))/, raw), (function (x) { + return concatMany(Belt_Array.mapWithIndex(Belt_Array.keepMap(Js_string.splitByRe(/([^\(\)\s]+\:(?:\d+\,\d+\-\d+\,\d+|\d+\,\d+\-\d+|\d+\,\d+))/, raw), (function (x) { return x; })), (function (i, token) { var match = i % 2; diff --git a/src/View/Common.res b/src/View/Common.res index 581382ef..9fd90db1 100644 --- a/src/View/Common.res +++ b/src/View/Common.res @@ -83,15 +83,67 @@ module AgdaRange = { let parse = %re( // Regex updated to v10.1.4 - /* | different row | same row | */ - "/^(\S+)\:(?:(\d+)\,(\d+)\-(\d+)\,(\d+)|(\d+)\,(\d+)\-(\d+))$/" + // There are 3 types of range: + // type 1: filepath:line,col-line,col + // type 2: filepath:line,col-col + // type 3: filepath:line,col + + /* filepath | line,col-line,col | line,col-col | line,col | */ + "/^(\S+)\:(?:(\d+)\,(\d+)\-(\d+)\,(\d+)|(\d+)\,(\d+)\-(\d+)|(\d+)\,(\d+))$/" )->Emacs__Parser.captures(captured => { open Belt open Belt.Option let flatten = xs => xs->flatMap(x => x) + // filepath: captured[1] + // type 1: captured[2] ~ captured[5] + // type 2: captured[6] ~ captured[8] + // type 3: captured[9] ~ captured[10] let srcFile = captured[1]->flatten - let sameRow = captured[6]->flatten->isSome - if sameRow { + let isType1 = captured[2]->flatten->isSome + let isType2 = captured[6]->flatten->isSome + if isType1 { + captured[2] + ->flatten + ->flatMap(int_of_string_opt) + ->flatMap(rowStart => + captured[3] + ->flatten + ->flatMap(int_of_string_opt) + ->flatMap( + colStart => + captured[4] + ->flatten + ->flatMap(int_of_string_opt) + ->flatMap( + rowEnd => + captured[5] + ->flatten + ->flatMap(int_of_string_opt) + ->flatMap( + colEnd => Some( + Range( + srcFile, + [ + { + start: { + pos: 0, + line: rowStart, + col: colStart, + }, + end_: { + pos: 0, + line: rowEnd, + col: colEnd, + }, + }, + ], + ), + ), + ), + ), + ) + ) + } else if isType2 { captured[6] ->flatten ->flatMap(int_of_string_opt) @@ -128,45 +180,33 @@ module AgdaRange = { ) ) } else { - captured[2] + captured[9] ->flatten ->flatMap(int_of_string_opt) - ->flatMap(rowStart => - captured[3] + ->flatMap(row => + captured[10] ->flatten ->flatMap(int_of_string_opt) ->flatMap( - colStart => - captured[4] - ->flatten - ->flatMap(int_of_string_opt) - ->flatMap( - rowEnd => - captured[5] - ->flatten - ->flatMap(int_of_string_opt) - ->flatMap( - colEnd => Some( - Range( - srcFile, - [ - { - start: { - pos: 0, - line: rowStart, - col: colStart, - }, - end_: { - pos: 0, - line: rowEnd, - col: colEnd, - }, - }, - ], - ), - ), - ), + col => Some( + Range( + srcFile, + [ + { + start: { + pos: 0, + line: row, + col, + }, + end_: { + pos: 0, + line: row, + col, + }, + }, + ], ), + ), ) ) } diff --git a/src/View/Component/RichText.res b/src/View/Component/RichText.res index b9a6f020..979e538d 100644 --- a/src/View/Component/RichText.res +++ b/src/View/Component/RichText.res @@ -174,10 +174,15 @@ module Module = { // from string by Emacs // Regex updated to v10.1.4 let parse = raw => - // ranges at odd indices - // other tokens at even indices + // after Js.String.splitByRe + // tokens captured by the regex will be placed at odd indices + // and the rest will be placed at even indices + // 3 kinds of tokens are captured as AgdaRange: + // 1. filepath:line,column-line,column + // 2. filepath:line,column-column + // 3. filepath:line,column raw - ->Js.String.splitByRe(%re("/([^\(\)\s]+\:(?:\d+\,\d+\-\d+\,\d+|\d+\,\d+\-\d+))/"), _) + ->Js.String.splitByRe(%re("/([^\(\)\s]+\:(?:\d+\,\d+\-\d+\,\d+|\d+\,\d+\-\d+|\d+\,\d+))/"), _) ->Array.keepMap(x => x) ->Array.mapWithIndex((i, token) => switch mod(i, 2) { From 80bcfcf028af08a9dbcbc17de7299d0538af5d9f Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sun, 26 Nov 2023 23:39:11 +0800 Subject: [PATCH 014/109] [ fix ] Fix all RegExs in SourceFile.res --- lib/js/src/Parser/SourceFile.bs.js | 38 +++++++++++------------ src/Parser/SourceFile.res | 48 +++++++++++++++++------------- 2 files changed, 46 insertions(+), 40 deletions(-) diff --git a/lib/js/src/Parser/SourceFile.bs.js b/lib/js/src/Parser/SourceFile.bs.js index 60f5b5e2..34c2a362 100644 --- a/lib/js/src/Parser/SourceFile.bs.js +++ b/lib/js/src/Parser/SourceFile.bs.js @@ -9,13 +9,13 @@ var Caml_option = require("rescript/lib/js/caml_option.js"); var Parser$AgdaModeVscode = require("./Parser.bs.js"); function parse(filepath) { - if (/\\.lagda\\.rst$/i.test(Parser$AgdaModeVscode.filepath(filepath))) { + if (/\.lagda\.rst$/i.test(Parser$AgdaModeVscode.filepath(filepath))) { return /* LiterateRST */2; - } else if (/\\.lagda\\.md$/i.test(Parser$AgdaModeVscode.filepath(filepath))) { + } else if (/\.lagda\.md$/i.test(Parser$AgdaModeVscode.filepath(filepath))) { return /* LiterateMarkdown */3; - } else if (/\\.lagda\\.tex$|\\.lagda$/i.test(Parser$AgdaModeVscode.filepath(filepath))) { + } else if (/\.lagda\.tex$|\.lagda$/i.test(Parser$AgdaModeVscode.filepath(filepath))) { return /* LiterateTeX */1; - } else if (/\\.lagda\\.org$/i.test(Parser$AgdaModeVscode.filepath(filepath))) { + } else if (/\.lagda\.org$/i.test(Parser$AgdaModeVscode.filepath(filepath))) { return /* LiterateOrg */4; } else { return /* Agda */0; @@ -118,29 +118,29 @@ var Lexer = { mapOnly: mapOnly }; -var texBegin = /\\\\begin\\{code\\}.*/; +var texBegin = /\\\\begin\{code\}.*/; -var texEnd = /\\\\end\\{code\\}.*/; +var texEnd = /\\\\end\{code\}.*/; -var markdown = /\\`\\`\\`(agda)?/; +var markdown = /\`\`\`(agda)?/; -var rstBegin = /\\:\\:/; +var rstBegin = /\:\:/; -var rstEnd = /^[^\\s]/; +var rstEnd = /^[^\s]/; -var orgBegin = /\\#\\+begin\\_src agda2/i; +var orgBegin = /\#\+begin\_src agda2/i; -var orgEnd = /\\#\\+end\\_src/i; +var orgEnd = /\#\+end\_src/i; -var comment = /((?<=^|[\\s\"\\_\\;\\.\\(\\)\\{\\}\\@])--[^\\r\\n]*(?:\\r|\\n|$))|(\\{-(?:[^-]|[\\r\\n]|(?:-+(?:[^-\\}]|[\\r\\n])))*-+\\})/; +var comment = /((?<=^|[\s\"\_\;\.\(\)\{\}\@])--[^\r\n]*(?:\r|\n|$))|(\{-(?:[^-]|[\r\n]|(?:-+(?:[^-\}]|[\r\n])))*-+\})/; -var goalBracket = /(\\{\\!(?:(?!\\!\\})(?:.|\\s))*\\!\\})/; +var goalBracket = /(\{\!(?:(?!\!\})(?:.|\s))*\!\})/; -var goalQuestionMarkRaw = /([\\s\\(\\{\\_\\;\\.\\\"@]|^)(\\?)([\\s\\)\\}\\_\\;\\.\\\"@]|$)/gm; +var goalQuestionMarkRaw = /([\s\(\{\_\;\.\\\"@]|^)(\?)([\s\)\}\_\;\.\\\"@]|$)/gm; -var goalQuestionMark = /(\\?)/; +var goalQuestionMark = /(\?)/; -var goalBracketContent = /\\{\\!((?:(?!\\!\\})(?:.|\\s))*)\\!\\}/; +var goalBracketContent = /\{\!((?:(?!\!\})(?:.|\s))*)\!\}/; var Regex = { texBegin: texBegin, @@ -161,7 +161,7 @@ function toTokens(raw) { var cursor = { contents: 0 }; - return Belt_Option.mapWithDefault(Js_string.match_(/(.*(?:\\r\\n|[\\n\\v\\f\\r\\x85\\u2028\\u2029])?)/g, raw), [], (function (lines) { + return Belt_Option.mapWithDefault(Js_string.match_(/(.*(?:\r\n|[\n\v\f\r\x85\u2028\u2029])?)/g, raw), [], (function (lines) { return Belt_Array.map(Belt_Array.keep(Belt_Array.map(lines, (function (x) { if (x !== undefined) { return x; @@ -292,7 +292,7 @@ function parse$1(indices, filepath, raw) { return x; })); })), ""); - var actualSpaces = Belt_Option.getWithDefault(Belt_Option.flatMap(Js_string.match_(/\\s*$/, content), (function (matches) { + var actualSpaces = Belt_Option.getWithDefault(Belt_Option.flatMap(Js_string.match_(/\s*$/, content), (function (matches) { var match = Belt_Array.get(matches, 0); if (match === undefined) { return ; @@ -306,7 +306,7 @@ function parse$1(indices, filepath, raw) { var newContent; if (actualSpaces < requiredSpaces) { var padding = Js_string.repeat(requiredSpaces - actualSpaces | 0, ""); - newContent = Js_string.replaceByRe(/\\{!.*!\\}/, "{!" + content + padding + "!}", token.content); + newContent = Js_string.replaceByRe(/\{!.*!\}/, "{!" + content + padding + "!}", token.content); } else { newContent = token.content; } diff --git a/src/Parser/SourceFile.res b/src/Parser/SourceFile.res index a071e368..559d8048 100644 --- a/src/Parser/SourceFile.res +++ b/src/Parser/SourceFile.res @@ -1,3 +1,5 @@ +// All RegExps in this file has been updated to work with ReScript v10.1.4 + open Belt open Common @@ -9,13 +11,13 @@ module FileType = { | LiterateMarkdown | LiterateOrg let parse = filepath => - if Js.Re.test_(%re("/\\.lagda\\.rst$/i"), Parser.filepath(filepath)) { + if Js.Re.test_(%re("/\.lagda\.rst$/i"), Parser.filepath(filepath)) { LiterateRST - } else if Js.Re.test_(%re("/\\.lagda\\.md$/i"), Parser.filepath(filepath)) { + } else if Js.Re.test_(%re("/\.lagda\.md$/i"), Parser.filepath(filepath)) { LiterateMarkdown - } else if Js.Re.test_(%re("/\\.lagda\\.tex$|\\.lagda$/i"), Parser.filepath(filepath)) { + } else if Js.Re.test_(%re("/\.lagda\.tex$|\.lagda$/i"), Parser.filepath(filepath)) { LiterateTeX - } else if Js.Re.test_(%re("/\\.lagda\\.org$/i"), Parser.filepath(filepath)) { + } else if Js.Re.test_(%re("/\.lagda\.org$/i"), Parser.filepath(filepath)) { LiterateOrg } else { Agda @@ -101,26 +103,30 @@ module Lexer = { } module Regex = { - let texBegin = %re("/\\\\begin\\{code\\}.*/") - let texEnd = %re("/\\\\end\\{code\\}.*/") - let markdown = %re("/\\`\\`\\`(agda)?/") - let rstBegin = %re("/\\:\\:/") - let rstEnd = %re("/^[^\\s]/") - let orgBegin = %re("/\\#\\+begin\\_src agda2/i") - let orgEnd = %re("/\\#\\+end\\_src/i") + let texBegin = %re("/\\\\begin\{code\}.*/") + let texEnd = %re("/\\\\end\{code\}.*/") + let markdown = %re("/\`\`\`(agda)?/") + let rstBegin = %re("/\:\:/") + let rstEnd = %re("/^[^\s]/") + let orgBegin = %re("/\#\+begin\_src agda2/i") + let orgEnd = %re("/\#\+end\_src/i") let comment = %re( - "/((?<=^|[\\s\"\\_\\;\\.\\(\\)\\{\\}\\@])--[^\\r\\n]*(?:\\r|\\n|$))|(\\{-(?:[^-]|[\\r\\n]|(?:-+(?:[^-\\}]|[\\r\\n])))*-+\\})/" + "/((?<=^|[\s\"\_\;\.\(\)\{\}\@])--[^\r\n]*(?:\r|\n|$))|(\{-(?:[^-]|[\r\n]|(?:-+(?:[^-\}]|[\r\n])))*-+\})/" ) // // https://agda.readthedocs.io/en/v2.6.1/language/lexical-structure.html#keywords-and-special-symbols // let specialSymbol = [%re "/[\.\;\{\}\(\)\@\"]/"]; - let goalBracket = %re("/(\\{\\!(?:(?!\\!\\})(?:.|\\s))*\\!\\})/") - let goalQuestionMarkRaw = %re( - "/([\\s\\(\\{\\_\\;\\.\\\"@]|^)(\\?)([\\s\\)\\}\\_\\;\\.\\\"@]|$)/gm" - ) - let goalQuestionMark = %re("/(\\?)/") - let goalBracketContent = %re("/\\{\\!((?:(?!\\!\\})(?:.|\\s))*)\\!\\}/") + // for regular holes: {! content !} + let goalBracket = %re("/(\{\!(?:(?!\!\})(?:.|\s))*\!\})/") + // for question marks (with specialSymbols around), e.g.: + // (?) + // .?@ + let goalQuestionMarkRaw = %re("/([\s\(\{\_\;\.\\\"@]|^)(\?)([\s\)\}\_\;\.\\\"@]|$)/gm") + // for question marks: ? + let goalQuestionMark = %re("/(\?)/") + // for content inside {! !} + let goalBracketContent = %re("/\{\!((?:(?!\!\})(?:.|\s))*)\!\}/") } module Literate = { @@ -128,7 +134,7 @@ module Literate = { let toTokens = (raw: string): Lexer.t => { let cursor = ref(0) Js.String.match_( - %re("/(.*(?:\\r\\n|[\\n\\v\\f\\r\\x85\\u2028\\u2029])?)/g"), + %re("/(.*(?:\r\n|[\n\v\f\r\x85\u2028\u2029])?)/g"), raw, )->Option.mapWithDefault([], lines => lines @@ -265,7 +271,7 @@ let parse = (indices: array, filepath: string, raw: string): array ->Option.getWithDefault("") let actualSpaces = content - ->Js.String.match_(%re("/\\s*$/"), _) + ->Js.String.match_(%re("/\s*$/"), _) ->Option.flatMap(matches => switch matches[0] { | None => None @@ -279,7 +285,7 @@ let parse = (indices: array, filepath: string, raw: string): array let newContent = if actualSpaces < requiredSpaces { let padding = Js.String.repeat(requiredSpaces - actualSpaces, "") - Js.String.replaceByRe(%re("/\\{!.*!\\}/"), "{!" ++ content ++ padding ++ "!}", token.content) + Js.String.replaceByRe(%re("/\{!.*!\}/"), "{!" ++ content ++ padding ++ "!}", token.content) } else { token.content } From 89486edd8b230ed741e42736d0d4e8e549aa05a7 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sun, 26 Nov 2023 23:48:34 +0800 Subject: [PATCH 015/109] [ fix ] Set Context Key on extension initialization --- lib/js/src/Main.bs.js | 4 +--- package.json | 6 +----- src/Main.res | 6 ++---- 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/lib/js/src/Main.bs.js b/lib/js/src/Main.bs.js index 688454d2..cab69f4f 100644 --- a/lib/js/src/Main.bs.js +++ b/lib/js/src/Main.bs.js @@ -64,9 +64,7 @@ var Inputs = { }; function initialize(debugChan, extensionPath, globalStoragePath, editor, fileName) { - if (Registry$AgdaModeVscode.isEmpty(undefined)) { - Vscode.commands.executeCommand("setContext", "agdaMode", true); - } + Vscode.commands.executeCommand("setContext", "agdaMode", true); var panel = Singleton$AgdaModeVscode.Panel.make(extensionPath); $$Promise.get(WebviewPanel$AgdaModeVscode.onceDestroyed(panel), (function (param) { Registry$AgdaModeVscode.removeAndDestroyAll(undefined); diff --git a/package.json b/package.json index 3f10f30f..1dcb1e37 100644 --- a/package.json +++ b/package.json @@ -10,10 +10,6 @@ "categories": [ "Other" ], - "activationEvents": [ - "onCommand:agda-mode.load", - "onCommand:agda-mode.input-symbol[Activate]" - ], "main": "./dist/app.bundle.js", "repository": "https://github.com/banacorn/agda-mode-vscode", "scripts": { @@ -850,4 +846,4 @@ "publisherDisplayName": "Ting-Gian LUA", "publisherId": "22df016e-6b4f-49b2-9856-3336695d1289" } -} +} \ No newline at end of file diff --git a/src/Main.res b/src/Main.res index dafa3f19..6517c316 100644 --- a/src/Main.res +++ b/src/Main.res @@ -41,10 +41,8 @@ module Inputs: { } let initialize = (debugChan, extensionPath, globalStoragePath, editor, fileName) => { - if Registry.isEmpty() { - // keybinding: so that most of the commands will work only after agda-mode:load - VSCode.Commands.setContext("agdaMode", true)->ignore - } + // keybinding: so that most of the commands will work only after agda-mode:load + VSCode.Commands.setContext("agdaMode", true)->ignore let panel = Singleton.Panel.make(extensionPath) // if the panel is destroyed, destroy all every State in the Registry From b611ff63b772994760e3c86a54f77000e6085f14 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Thu, 30 Nov 2023 21:58:20 +0800 Subject: [PATCH 016/109] [ fix ] Fix all RegEx and string literal escape problems caught by the tests --- lib/js/src/Agda.bs.js | 2 +- lib/js/src/Parser/SourceFile.bs.js | 4 ++-- lib/js/test/tests/Test__EditorIM.bs.js | 12 ++++++------ lib/js/test/tests/TextEditor/Test__AgdaOffset.bs.js | 12 ++++++------ lib/js/test/tests/TextEditor/Test__LineEnding.bs.js | 8 ++++---- src/Agda.res | 10 +++++----- src/Parser/SourceFile.res | 5 +++-- test/tests/Test__EditorIM.res | 12 ++++++------ test/tests/TextEditor/Test__AgdaOffset.res | 12 ++++++------ test/tests/TextEditor/Test__LineEnding.res | 8 ++++---- 10 files changed, 43 insertions(+), 42 deletions(-) diff --git a/lib/js/src/Agda.bs.js b/lib/js/src/Agda.bs.js index 42286c4e..eb5ee174 100644 --- a/lib/js/src/Agda.bs.js +++ b/lib/js/src/Agda.bs.js @@ -310,7 +310,7 @@ function computeUTF16SurrogatePairIndices(text) { } function computeCRLFIndices(text) { - var regexp = /\\r\\n/g; + var regexp = /\r\n/g; var matchAll = (function (regexp, string) { let match; let result = []; diff --git a/lib/js/src/Parser/SourceFile.bs.js b/lib/js/src/Parser/SourceFile.bs.js index 34c2a362..65f6532b 100644 --- a/lib/js/src/Parser/SourceFile.bs.js +++ b/lib/js/src/Parser/SourceFile.bs.js @@ -118,9 +118,9 @@ var Lexer = { mapOnly: mapOnly }; -var texBegin = /\\\\begin\{code\}.*/; +var texBegin = /\\begin\{code\}.*/; -var texEnd = /\\\\end\{code\}.*/; +var texEnd = /\\end\{code\}.*/; var markdown = /\`\`\`(agda)?/; diff --git a/lib/js/test/tests/Test__EditorIM.bs.js b/lib/js/test/tests/Test__EditorIM.bs.js index 126dbbba..498a7c75 100644 --- a/lib/js/test/tests/Test__EditorIM.bs.js +++ b/lib/js/test/tests/Test__EditorIM.bs.js @@ -1003,7 +1003,7 @@ Mocha$BsMocha.describe("Input Method (Editor)")(undefined, undefined, undefined, })); })); Mocha$BsMocha.describe("Multiple cursors at once")(undefined, undefined, undefined, (function (param) { - var partial_arg = /\\r\\n/g; + var partial_arg = /\r\n/g; var replaceCRLF = function (param) { return Js_string.replaceByRe(partial_arg, "\n", param); }; @@ -1103,7 +1103,7 @@ Mocha$BsMocha.describe("Input Method (Editor)")(undefined, undefined, undefined, ]; return Test__Util$AgdaModeVscode.A.deep_equal(xs$1, actual); })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("♭\\n♭\\n♭\\n♭", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); + return Test__Util$AgdaModeVscode.A.equal("♭\n♭\n♭\n♭", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); })), (function (param) { return insertChar(setup, "n"); })), (function (actual) { @@ -1186,7 +1186,7 @@ Mocha$BsMocha.describe("Input Method (Editor)")(undefined, undefined, undefined, ]; return Test__Util$AgdaModeVscode.A.deep_equal(xs$1, actual); })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("𝕟\\n𝕟\\n𝕟\\n𝕟", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); + return Test__Util$AgdaModeVscode.A.equal("𝕟\n𝕟\n𝕟\n𝕟", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); })); })); })); @@ -1225,13 +1225,13 @@ Mocha$BsMocha.describe("Input Method (Editor)")(undefined, undefined, undefined, })), (function (param) { return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$1, param); })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("a123\\n1a23\\n12a3\\n123a", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); + return Test__Util$AgdaModeVscode.A.equal("a123\n1a23\n12a3\n123a", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); })), (function (param) { return insertChar(setup, "n"); })), (function (param) { return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$2, param); })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("an123\\n1an23\\n12an3\\n123an", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); + return Test__Util$AgdaModeVscode.A.equal("an123\n1an23\n12an3\n123an", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); })), (function (param) { return insertChar(setup, "d"); })), (function (actual) { @@ -1314,7 +1314,7 @@ Mocha$BsMocha.describe("Input Method (Editor)")(undefined, undefined, undefined, ]; return Test__Util$AgdaModeVscode.A.deep_equal(xs$1, actual); })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("∧123\\n1∧23\\n12∧3\\n123∧", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); + return Test__Util$AgdaModeVscode.A.equal("∧123\n1∧23\n12∧3\n123∧", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); })); })); })); diff --git a/lib/js/test/tests/TextEditor/Test__AgdaOffset.bs.js b/lib/js/test/tests/TextEditor/Test__AgdaOffset.bs.js index 583858b6..28071e61 100644 --- a/lib/js/test/tests/TextEditor/Test__AgdaOffset.bs.js +++ b/lib/js/test/tests/TextEditor/Test__AgdaOffset.bs.js @@ -9,7 +9,7 @@ var Promise$BsMocha = require("bs-mocha/lib/js/src/Promise.bs.js"); var Agda$AgdaModeVscode = require("../../../src/Agda.bs.js"); var Editor$AgdaModeVscode = require("../../../src/Editor.bs.js"); -var issue7 = "module Issue7 where\\n-- 𝕁\\na = {! !}"; +var issue7 = "module Issue7 where\n-- 𝕁\na = {! !}"; function openEditorWithContent(content) { return $$Promise.flatMap(Vscode.workspace.openTextDocument({ @@ -33,7 +33,7 @@ Mocha$BsMocha.describe("Conversion between Agda Offsets and Editor Offsets")(und })); Mocha$BsMocha.describe("Agda.OffsetConverter.computeUTF16SurrogatePairIndices")(undefined, undefined, undefined, (function (param) { Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀𝐀𝐀𝐀\\n𝐀𝐀𝐀𝐀"), [ + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀𝐀𝐀𝐀\n𝐀𝐀𝐀𝐀"), [ 0, 2, 4, @@ -43,7 +43,7 @@ Mocha$BsMocha.describe("Conversion between Agda Offsets and Editor Offsets")(und 13, 15 ]); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c𝐃dd𝐄e𝐅𝐆𝐇\\na"), [ + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c𝐃dd𝐄e𝐅𝐆𝐇\na"), [ 0, 3, 7, @@ -58,7 +58,7 @@ Mocha$BsMocha.describe("Conversion between Agda Offsets and Editor Offsets")(und })); Mocha$BsMocha.describe("Common.Indices.make")(undefined, undefined, undefined, (function (param) { Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀𝐀𝐀𝐀\\n𝐀𝐀𝐀𝐀")))[0], [ + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀𝐀𝐀𝐀\n𝐀𝐀𝐀𝐀")))[0], [ [ 0, 0 @@ -92,7 +92,7 @@ Mocha$BsMocha.describe("Conversion between Agda Offsets and Editor Offsets")(und 8 ] ]); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c𝐃dd𝐄e𝐅𝐆𝐇\\na")))[0], [ + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c𝐃dd𝐄e𝐅𝐆𝐇\na")))[0], [ [ 0, 0 @@ -130,7 +130,7 @@ Mocha$BsMocha.describe("Conversion between Agda Offsets and Editor Offsets")(und })); Mocha$BsMocha.describe("Common.Indices.convert")(undefined, undefined, undefined, (function (param) { Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { - var a = Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀𝐀𝐀𝐀\\n𝐀𝐀𝐀𝐀")); + var a = Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀𝐀𝐀𝐀\n𝐀𝐀𝐀𝐀")); Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 0), 0); Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 1), 2); diff --git a/lib/js/test/tests/TextEditor/Test__LineEnding.bs.js b/lib/js/test/tests/TextEditor/Test__LineEnding.bs.js index 2c0f2410..49a07c2c 100644 --- a/lib/js/test/tests/TextEditor/Test__LineEnding.bs.js +++ b/lib/js/test/tests/TextEditor/Test__LineEnding.bs.js @@ -19,8 +19,8 @@ function openEditorWithContent(content) { Mocha$BsMocha.describe("Conversion of offsets between LF and CRLF line endings")(undefined, undefined, undefined, (function (param) { Mocha$BsMocha.describe("Editor.computeCRLFIndices")(undefined, undefined, undefined, (function (param) { Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.OffsetConverter.computeCRLFIndices("1234\\r\\n78"), [4]); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.OffsetConverter.computeCRLFIndices("12\\r\\n56\\r\\n90"), [ + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.OffsetConverter.computeCRLFIndices("1234\r\n78"), [4]); + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.OffsetConverter.computeCRLFIndices("12\r\n56\r\n90"), [ 2, 6 ]); @@ -28,7 +28,7 @@ Mocha$BsMocha.describe("Conversion of offsets between LF and CRLF line endings") })); Mocha$BsMocha.describe("Editor.Indices.make")(undefined, undefined, undefined, (function (param) { Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeCRLFIndices("12\\r\\n56\\r\\n90")))[0], [ + Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeCRLFIndices("12\r\n56\r\n90")))[0], [ [ 0, 2 @@ -42,7 +42,7 @@ Mocha$BsMocha.describe("Conversion of offsets between LF and CRLF line endings") })); Mocha$BsMocha.describe("Editor.Indices.convert")(undefined, undefined, undefined, (function (param) { Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { - var a = Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeCRLFIndices("12\\r\\n56\\r\\n90")); + var a = Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeCRLFIndices("12\r\n56\r\n90")); Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 0), 0); Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 1), 1); diff --git a/src/Agda.res b/src/Agda.res index 630a4667..fc616b5e 100644 --- a/src/Agda.res +++ b/src/Agda.res @@ -42,7 +42,6 @@ module Expr = { let render = xs => xs->Array.map(Term.render)->RichText.concatMany } - module OutputConstraint: { type t let parse: string => option @@ -77,7 +76,7 @@ module OutputConstraint: { let parse = Emacs__Parser.choice([parseOfType, parseJustType, parseJustSort, parseOthers]) let renderItem = (value, location) => { - open !RichText + open! RichText let inlines = switch value { | OfType'(e, t) => concatMany([e, string(" : "), t]) | JustType'(e) => concatMany([string("Type "), e]) @@ -185,8 +184,8 @@ module Indices: Indices = { intervals[Array.length(intervals) - 1]->Option.mapWithDefault(0, ((_, x)) => x + 1) { - intervals: intervals, - lastInterval: lastInterval, + intervals, + lastInterval, cursor: 0, } } @@ -261,6 +260,7 @@ module OffsetConverter: OffsetConverter = { while i.contents < lengthInCodeUnits { let charCode = Js.String.charCodeAt(i.contents, text)->int_of_float let notFinal = i.contents + 1 < lengthInCodeUnits + // check if this is a part of a surrogate pair if charCode >= 0xD800 && (charCode <= 0xDBFF && notFinal) { // found the high surrogate, proceed to check the low surrogate @@ -284,7 +284,7 @@ module OffsetConverter: OffsetConverter = { // // returns an array of indices where CRLF line endings occur let computeCRLFIndices = (text: string): array => { - let regexp = %re("/\\r\\n/g") + let regexp = %re("/\r\n/g") // RegEx updated to v10.1.4 let matchAll = %raw("function (regexp, string) { let match; let result = []; diff --git a/src/Parser/SourceFile.res b/src/Parser/SourceFile.res index 559d8048..95f61f4e 100644 --- a/src/Parser/SourceFile.res +++ b/src/Parser/SourceFile.res @@ -103,8 +103,9 @@ module Lexer = { } module Regex = { - let texBegin = %re("/\\\\begin\{code\}.*/") - let texEnd = %re("/\\\\end\{code\}.*/") + // RegEx updated to v10.1.4 + let texBegin = %re("/\\begin\{code\}.*/") + let texEnd = %re("/\\end\{code\}.*/") let markdown = %re("/\`\`\`(agda)?/") let rstBegin = %re("/\:\:/") let rstEnd = %re("/^[^\s]/") diff --git a/test/tests/Test__EditorIM.res b/test/tests/Test__EditorIM.res index 845e50df..4c30ad17 100644 --- a/test/tests/Test__EditorIM.res +++ b/test/tests/Test__EditorIM.res @@ -388,7 +388,7 @@ describe("Input Method (Editor)", () => { }) describe("Multiple cursors at once", () => { - let replaceCRLF = Js.String.replaceByRe(%re("/\\r\\n/g"), "\n") + let replaceCRLF = Js.String.replaceByRe(%re("/\r\n/g"), "\n") // RegEx updated to v10.1.4 Q.it( `should work just fine (𝕟)`, () => { @@ -441,7 +441,7 @@ describe("Input Method (Editor)", () => { }, ) ->flatMapOk( - () => A.equal(`♭\\n♭\\n♭\\n♭`, replaceCRLF(Editor.Text.getAll(document))), + () => A.equal(`♭\n♭\n♭\n♭`, replaceCRLF(Editor.Text.getAll(document))), // string literal updated to v10.1.4 ) ->flatMapOk(() => IM.insertChar(setup, "n")) ->flatMapOk( @@ -477,7 +477,7 @@ describe("Input Method (Editor)", () => { }, ) ->flatMapOk( - () => A.equal(`𝕟\\n𝕟\\n𝕟\\n𝕟`, replaceCRLF(Editor.Text.getAll(document))), + () => A.equal(`𝕟\n𝕟\n𝕟\n𝕟`, replaceCRLF(Editor.Text.getAll(document))), // string literal updated to v10.1.4 ) }, ) @@ -503,13 +503,13 @@ describe("Input Method (Editor)", () => { ->flatMapOk(() => IM.insertChar(setup, "a")) ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) ->flatMapOk( - () => A.equal(`a123\\n1a23\\n12a3\\n123a`, replaceCRLF(Editor.Text.getAll(document))), + () => A.equal(`a123\n1a23\n12a3\n123a`, replaceCRLF(Editor.Text.getAll(document))), // string literal updated to v10.1.4 ) ->flatMapOk(() => IM.insertChar(setup, "n")) ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) ->flatMapOk( () => - A.equal(`an123\\n1an23\\n12an3\\n123an`, replaceCRLF(Editor.Text.getAll(document))), + A.equal(`an123\n1an23\n12an3\n123an`, replaceCRLF(Editor.Text.getAll(document))), // string literal updated to v10.1.4 ) ->flatMapOk(() => IM.insertChar(setup, "d")) ->flatMapOk( @@ -547,7 +547,7 @@ describe("Input Method (Editor)", () => { ->flatMapOk( () => A.equal( - `∧123\\n1∧23\\n12∧3\\n123∧`, + `∧123\n1∧23\n12∧3\n123∧`, // string literal updated to v10.1.4 replaceCRLF(Editor.Text.getAll(document)), ), ) diff --git a/test/tests/TextEditor/Test__AgdaOffset.res b/test/tests/TextEditor/Test__AgdaOffset.res index 57b6b40d..45107de8 100644 --- a/test/tests/TextEditor/Test__AgdaOffset.res +++ b/test/tests/TextEditor/Test__AgdaOffset.res @@ -3,7 +3,7 @@ open! BsMocha.Mocha module Assert = BsMocha.Assert module P = BsMocha.Promise -let issue7 = "module Issue7 where\\n-- 𝕁\\na = {! !}" +let issue7 = "module Issue7 where\n-- 𝕁\na = {! !}" // String literal updated to v10.1.4 let openEditorWithContent = content => VSCode.Workspace.openTextDocumentWithOptions( @@ -38,13 +38,13 @@ describe("Conversion between Agda Offsets and Editor Offsets", () => { () => { Assert.deep_equal( Agda.OffsetConverter.computeUTF16SurrogatePairIndices( - "𝐀𝐀𝐀𝐀\\n𝐀𝐀𝐀𝐀", + "𝐀𝐀𝐀𝐀\n𝐀𝐀𝐀𝐀", // String literal updated to v10.1.4 ), [0, 2, 4, 6, 9, 11, 13, 15], ) Assert.deep_equal( Agda.OffsetConverter.computeUTF16SurrogatePairIndices( - "𝐀a𝐁bb𝐂c𝐃dd𝐄e𝐅𝐆𝐇\\na", + "𝐀a𝐁bb𝐂c𝐃dd𝐄e𝐅𝐆𝐇\na", // String literal updated to v10.1.4 ), [0, 3, 7, 10, 14, 17, 19, 21], ) @@ -60,7 +60,7 @@ describe("Conversion between Agda Offsets and Editor Offsets", () => { () => { open Agda.Indices Assert.deep_equal( - "𝐀𝐀𝐀𝐀\\n𝐀𝐀𝐀𝐀" + "𝐀𝐀𝐀𝐀\n𝐀𝐀𝐀𝐀" // String literal updated to v10.1.4 ->Agda.OffsetConverter.computeUTF16SurrogatePairIndices ->make ->expose @@ -68,7 +68,7 @@ describe("Conversion between Agda Offsets and Editor Offsets", () => { [(0, 0), (1, 1), (2, 2), (3, 3), (4, 5), (6, 6), (7, 7), (8, 8)], ) Assert.deep_equal( - "𝐀a𝐁bb𝐂c𝐃dd𝐄e𝐅𝐆𝐇\\na" + "𝐀a𝐁bb𝐂c𝐃dd𝐄e𝐅𝐆𝐇\na" // String literal updated to v10.1.4 ->Agda.OffsetConverter.computeUTF16SurrogatePairIndices ->make ->expose @@ -86,7 +86,7 @@ describe("Conversion between Agda Offsets and Editor Offsets", () => { open Agda.Indices let a = make( Agda.OffsetConverter.computeUTF16SurrogatePairIndices( - "𝐀𝐀𝐀𝐀\\n𝐀𝐀𝐀𝐀", + "𝐀𝐀𝐀𝐀\n𝐀𝐀𝐀𝐀", // String literal updated to v10.1.4 ), ) Assert.deep_equal(convert(a, 0), 0) diff --git a/test/tests/TextEditor/Test__LineEnding.res b/test/tests/TextEditor/Test__LineEnding.res index a5e1ced5..a9c716de 100644 --- a/test/tests/TextEditor/Test__LineEnding.res +++ b/test/tests/TextEditor/Test__LineEnding.res @@ -14,8 +14,8 @@ describe("Conversion of offsets between LF and CRLF line endings", () => { it( "should work", () => { - Assert.deep_equal(Agda.OffsetConverter.computeCRLFIndices("1234\\r\\n78"), [4]) - Assert.deep_equal(Agda.OffsetConverter.computeCRLFIndices("12\\r\\n56\\r\\n90"), [2, 6]) + Assert.deep_equal(Agda.OffsetConverter.computeCRLFIndices("1234\r\n78"), [4]) // String literal updated to v10.1.4 + Assert.deep_equal(Agda.OffsetConverter.computeCRLFIndices("12\r\n56\r\n90"), [2, 6]) // String literal updated to v10.1.4 }, ) ) @@ -27,7 +27,7 @@ describe("Conversion of offsets between LF and CRLF line endings", () => { open Agda.Indices () Assert.deep_equal( - "12\\r\\n56\\r\\n90"->Agda.OffsetConverter.computeCRLFIndices->make->expose->fst, + "12\r\n56\r\n90"->Agda.OffsetConverter.computeCRLFIndices->make->expose->fst, // String literal updated to v10.1.4 [(0, 2), (3, 5)], ) }, @@ -39,7 +39,7 @@ describe("Conversion of offsets between LF and CRLF line endings", () => { "should work", () => { open Agda.Indices - let a = make(Agda.OffsetConverter.computeCRLFIndices("12\\r\\n56\\r\\n90")) + let a = make(Agda.OffsetConverter.computeCRLFIndices("12\r\n56\r\n90")) // String literal updated to v10.1.4 Assert.deep_equal(convert(a, 0), 0) Assert.deep_equal(a->expose->snd, 0) Assert.deep_equal(convert(a, 1), 1) From 26a97f9770d60662e6ec2d9e039f5913a1f4c173 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Thu, 30 Nov 2023 23:11:35 +0800 Subject: [PATCH 017/109] [ fix ] Fix and create test cases for Agda.Expr.parse --- lib/js/src/Agda.bs.js | 18 ++++---- .../src/View/Panel/Emacs/Emacs__Parser2.bs.js | 5 ++- .../tests/Parser/Test__Parser__Agda.bs.js | 41 +++++++++++++++++++ .../tests/Parser/Test__Parser__Emacs.bs.js | 8 ---- .../tests/Parser/Test__Parser__Emacs2.bs.js | 28 +++++++++++++ src/Agda.res | 11 ++++- src/View/Panel/Emacs/Emacs__Parser2.res | 5 ++- test/tests/Parser/Test__Parser__Agda.res | 40 ++++++++++++++++++ test/tests/Parser/Test__Parser__Emacs.res | 19 --------- test/tests/Parser/Test__Parser__Emacs2.res | 14 +++++++ 10 files changed, 151 insertions(+), 38 deletions(-) create mode 100644 lib/js/test/tests/Parser/Test__Parser__Agda.bs.js delete mode 100644 lib/js/test/tests/Parser/Test__Parser__Emacs.bs.js create mode 100644 lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js create mode 100644 test/tests/Parser/Test__Parser__Agda.res delete mode 100644 test/tests/Parser/Test__Parser__Emacs.res create mode 100644 test/tests/Parser/Test__Parser__Emacs2.res diff --git a/lib/js/src/Agda.bs.js b/lib/js/src/Agda.bs.js index eb5ee174..c62f8acd 100644 --- a/lib/js/src/Agda.bs.js +++ b/lib/js/src/Agda.bs.js @@ -28,16 +28,20 @@ var Term = { function parse(raw) { var __x = raw.trim(); - return Belt_Array.keepMap(Belt_Array.mapWithIndex(Js_string.splitByRe(/(\\?\\d+)|(\\_\\d+[^\\}\\)\\s]*)/, __x), (function (i, token) { + return Belt_Array.keepMap(Belt_Array.mapWithIndex(Js_string.splitByRe(/(\?\d+)|(\_\d+[^\}\)\s]*)/, __x), (function (i, token) { var match = i % 3; if (match !== 1) { if (match !== 2) { - return Belt_Option.map(token, (function (x) { - return { - TAG: 0, - _0: x, - [Symbol.for("name")]: "Plain" - }; + return Belt_Option.flatMap(token, (function (x) { + if (x === "") { + return ; + } else { + return { + TAG: 0, + _0: x, + [Symbol.for("name")]: "Plain" + }; + } })); } else { return Belt_Option.map(token, (function (x) { diff --git a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js index 13565026..1d5b0a44 100644 --- a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js +++ b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js @@ -75,6 +75,8 @@ function parseError(raw) { } function parseGoalType(raw) { + console.log("parseGoalType"); + console.log(raw); var markGoal = function (param) { return Belt_Option.map(Js_string.match_(/^Goal:/, param[0]), (function (param) { return "goal"; @@ -86,7 +88,7 @@ function parseGoalType(raw) { })); }; var markMetas = function (param) { - return Belt_Option.map(Js_string.match_(/\\u2014{60}/g, param[0]), (function (param) { + return Belt_Option.map(Js_string.match_(/\u2014{60}/g, param[0]), (function (param) { return "metas"; })); }; @@ -114,6 +116,7 @@ function parseGoalType(raw) { }; var lines = Js_string.split("\n", raw); var dictionary = partiteMetas(removeDelimeter(partiteGoalTypeContext(lines))); + console.log(dictionary); return Js_array.concatMany(Belt_Array.map(Js_dict.entries(dictionary), (function (param) { var lines = param[1]; switch (param[0]) { diff --git a/lib/js/test/tests/Parser/Test__Parser__Agda.bs.js b/lib/js/test/tests/Parser/Test__Parser__Agda.bs.js new file mode 100644 index 00000000..3a6314fe --- /dev/null +++ b/lib/js/test/tests/Parser/Test__Parser__Agda.bs.js @@ -0,0 +1,41 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Mocha$BsMocha = require("bs-mocha/lib/js/src/Mocha.bs.js"); +var Assert$BsMocha = require("bs-mocha/lib/js/src/Assert.bs.js"); +var Agda$AgdaModeVscode = require("../../../src/Agda.bs.js"); + +Mocha$BsMocha.describe("when running Agda.Expr.parse")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should should parse a plain string")(undefined, undefined, undefined, (function (param) { + var expected = [{ + TAG: 0, + _0: "ℕ", + [Symbol.for("name")]: "Plain" + }]; + var actual = Agda$AgdaModeVscode.Expr.parse("ℕ"); + Assert$BsMocha.deep_equal(undefined, actual, expected); + })); + Mocha$BsMocha.it("should should parse a question mark")(undefined, undefined, undefined, (function (param) { + var expected = [{ + TAG: 1, + _0: 3, + [Symbol.for("name")]: "QuestionMark" + }]; + var actual = Agda$AgdaModeVscode.Expr.parse("?3"); + Assert$BsMocha.deep_equal(undefined, actual, expected); + })); + Mocha$BsMocha.it("should should parse a underscore")(undefined, undefined, undefined, (function (param) { + var expected = [{ + TAG: 2, + _0: "_4hi", + [Symbol.for("name")]: "Underscore" + }]; + var actual = Agda$AgdaModeVscode.Expr.parse(" _4hi "); + Assert$BsMocha.deep_equal(undefined, actual, expected); + })); + })); + +var Assert; + +exports.Assert = Assert; +/* Not a pure module */ diff --git a/lib/js/test/tests/Parser/Test__Parser__Emacs.bs.js b/lib/js/test/tests/Parser/Test__Parser__Emacs.bs.js deleted file mode 100644 index d13122d3..00000000 --- a/lib/js/test/tests/Parser/Test__Parser__Emacs.bs.js +++ /dev/null @@ -1,8 +0,0 @@ -// Generated by ReScript, PLEASE EDIT WITH CARE -'use strict'; - - -var Assert; - -exports.Assert = Assert; -/* No side effect */ diff --git a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js new file mode 100644 index 00000000..e786c6be --- /dev/null +++ b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js @@ -0,0 +1,28 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Mocha$BsMocha = require("bs-mocha/lib/js/src/Mocha.bs.js"); +var Assert$BsMocha = require("bs-mocha/lib/js/src/Assert.bs.js"); +var RichText$AgdaModeVscode = require("../../../src/View/Component/RichText.bs.js"); +var Emacs__Parser2$AgdaModeVscode = require("../../../src/View/Panel/Emacs/Emacs__Parser2.bs.js"); + +Mocha$BsMocha.describe_only("when running Emacs__Parser2.parseGoalType")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should should parse goal type")(undefined, undefined, undefined, (function (param) { + var actual = Emacs__Parser2$AgdaModeVscode.parseGoalType("Goal: ℕ\n————————————————————————————————————————————————————————————"); + var expected = [{ + TAG: 0, + _0: "GOAL", + _1: "style", + _2: RichText$AgdaModeVscode.string("ℕ"), + _3: "ℕ", + _4: undefined, + [Symbol.for("name")]: "Labeled" + }]; + Assert$BsMocha.deep_equal(undefined, actual, expected); + })); + })); + +var Assert; + +exports.Assert = Assert; +/* Not a pure module */ diff --git a/src/Agda.res b/src/Agda.res index fc616b5e..dbb860eb 100644 --- a/src/Agda.res +++ b/src/Agda.res @@ -25,7 +25,7 @@ module Expr = { raw ->Js.String.trim /* 1 2 */ - ->Js.String.splitByRe(%re("/(\\?\\d+)|(\\_\\d+[^\\}\\)\\s]*)/"), _) + ->Js.String.splitByRe(%re("/(\?\d+)|(\_\d+[^\}\)\s]*)/"), _) ->Array.mapWithIndex((i, token) => switch mod(i, 3) { | 1 => @@ -34,7 +34,14 @@ module Expr = { ->Option.flatMap(int_of_string_opt) ->Option.map(x => Term.QuestionMark(x)) | 2 => token->Option.map(x => Term.Underscore(x)) - | _ => token->Option.map(x => Term.Plain(x)) + | _ => + token->Option.flatMap(x => + if x == "" { + None + } else { + Some(Term.Plain(x)) + } + ) } ) ->Array.keepMap(x => x) diff --git a/src/View/Panel/Emacs/Emacs__Parser2.res b/src/View/Panel/Emacs/Emacs__Parser2.res index 06a4cd6a..843202fc 100644 --- a/src/View/Panel/Emacs/Emacs__Parser2.res +++ b/src/View/Panel/Emacs/Emacs__Parser2.res @@ -53,10 +53,12 @@ let parseError: string => array = raw => { } let parseGoalType: string => array = raw => { + Js.log("parseGoalType") + Js.log(raw) let markGoal = ((line, _)) => Js.String.match_(%re("/^Goal:/"), line)->Option.map(_ => "goal") let markHave = ((line, _)) => Js.String.match_(%re("/^Have:/"), line)->Option.map(_ => "have") let markMetas = ((line, _)) => - Js.String.match_(%re("/\\u2014{60}/g"), line)->Option.map(_ => "metas") + Js.String.match_(%re("/\u2014{60}/g"), line)->Option.map(_ => "metas") let partiteGoalTypeContext = xs => xs->Emacs__Parser.Dict.partite(line => switch markGoal(line) { @@ -75,6 +77,7 @@ let parseGoalType: string => array = raw => { let removeDelimeter = xs => xs->Emacs__Parser.Dict.update("metas", Js.Array.sliceFrom(1)) let lines = Js.String.split("\n", raw) let dictionary = lines->partiteGoalTypeContext->removeDelimeter->partiteMetas + Js.log(dictionary) // convert entries in the dictionary to Items for render dictionary ->Js.Dict.entries diff --git a/test/tests/Parser/Test__Parser__Agda.res b/test/tests/Parser/Test__Parser__Agda.res new file mode 100644 index 00000000..3153ea95 --- /dev/null +++ b/test/tests/Parser/Test__Parser__Agda.res @@ -0,0 +1,40 @@ +open! BsMocha.Mocha +open! Belt + +module Assert = BsMocha.Assert + +describe("when running Agda.Expr.parse", () => { + it("should should parse a plain string", () => { + let raw = `ℕ` + let expected = Some([Agda.Term.Plain("ℕ")]) + let actual = Agda.Expr.parse(raw) + Assert.deep_equal(actual, expected) + }) + it("should should parse a question mark", () => { + let raw = `?3` + let expected = Some([Agda.Term.QuestionMark(3)]) + let actual = Agda.Expr.parse(raw) + Assert.deep_equal(actual, expected) + }) + + it("should should parse a underscore", () => { + let raw = ` _4hi ` + let expected = Some([Agda.Term.Underscore("_4hi")]) + let actual = Agda.Expr.parse(raw) + Assert.deep_equal(actual, expected) + }) +}) + +// describe_only("when parsing DisplayInfo", () => { +// describe("Text", () => { +// it({j|should work just fine|j}, () => { +// let input = {j|1,1-2 +// Not in scope: +// c at 1,1-2 +// when scope checking c |j}; +// let actual = RichText.parse(input); +// let expected = Component.Text.Text([||]); +// Assert.equal(expected, actual); +// }) +// }) +// }); diff --git a/test/tests/Parser/Test__Parser__Emacs.res b/test/tests/Parser/Test__Parser__Emacs.res deleted file mode 100644 index 527077da..00000000 --- a/test/tests/Parser/Test__Parser__Emacs.res +++ /dev/null @@ -1,19 +0,0 @@ -open! BsMocha.Mocha -open! Belt - -module Assert = BsMocha.Assert - - -// describe_only("when parsing DisplayInfo", () => { -// describe("Text", () => { -// it({j|should work just fine|j}, () => { -// let input = {j|1,1-2 -// Not in scope: -// c at 1,1-2 -// when scope checking c |j}; -// let actual = RichText.parse(input); -// let expected = Component.Text.Text([||]); -// Assert.equal(expected, actual); -// }) -// }) -// }); diff --git a/test/tests/Parser/Test__Parser__Emacs2.res b/test/tests/Parser/Test__Parser__Emacs2.res new file mode 100644 index 00000000..552ccb22 --- /dev/null +++ b/test/tests/Parser/Test__Parser__Emacs2.res @@ -0,0 +1,14 @@ +open! BsMocha.Mocha +open! Belt + +module Assert = BsMocha.Assert + +describe_only("when running Emacs__Parser2.parseGoalType", () => { + it("should should parse goal type", () => { + let raw = `Goal: ℕ +————————————————————————————————————————————————————————————` + let actual = Emacs__Parser2.parseGoalType(raw) + let expected = [Item.Labeled("GOAL", "style", RichText.string("ℕ"), Some("ℕ"), None)] + Assert.deep_equal(actual, expected) + }) +}) From 2cc08b732602e76e86c77cb6b98444dfd37a6b5c Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Thu, 30 Nov 2023 23:17:34 +0800 Subject: [PATCH 018/109] [ fix ] Create test cases for Emacs__Parser2.parseGoalType --- .../src/View/Panel/Emacs/Emacs__Parser2.bs.js | 6 ++ .../tests/Parser/Test__Parser__Emacs2.bs.js | 58 +++++++++++++++++-- src/View/Panel/Emacs/Emacs__Parser2.res | 5 ++ test/tests/Parser/Test__Parser__Emacs2.res | 32 +++++++++- 4 files changed, 93 insertions(+), 8 deletions(-) diff --git a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js index 1d5b0a44..42828056 100644 --- a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js +++ b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js @@ -156,6 +156,12 @@ function parseGoalType(raw) { })), (function (output) { return Agda$AgdaModeVscode.Output.renderItem(output); })); + case "metas" : + return Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(lines, Agda$AgdaModeVscode.Output.parseOutputWithoutLocation), (function (x) { + return x; + })), (function (output) { + return Agda$AgdaModeVscode.Output.renderItem(output); + })); default: return []; } diff --git a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js index e786c6be..6a7ce1fc 100644 --- a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js @@ -6,20 +6,68 @@ var Assert$BsMocha = require("bs-mocha/lib/js/src/Assert.bs.js"); var RichText$AgdaModeVscode = require("../../../src/View/Component/RichText.bs.js"); var Emacs__Parser2$AgdaModeVscode = require("../../../src/View/Panel/Emacs/Emacs__Parser2.bs.js"); -Mocha$BsMocha.describe_only("when running Emacs__Parser2.parseGoalType")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.it("should should parse goal type")(undefined, undefined, undefined, (function (param) { +Mocha$BsMocha.describe("when running Emacs__Parser2.parseGoalType")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should should parse goal only")(undefined, undefined, undefined, (function (param) { var actual = Emacs__Parser2$AgdaModeVscode.parseGoalType("Goal: ℕ\n————————————————————————————————————————————————————————————"); var expected = [{ TAG: 0, - _0: "GOAL", - _1: "style", + _0: "Goal", + _1: "special", _2: RichText$AgdaModeVscode.string("ℕ"), - _3: "ℕ", + _3: undefined, _4: undefined, [Symbol.for("name")]: "Labeled" }]; Assert$BsMocha.deep_equal(undefined, actual, expected); })); + Mocha$BsMocha.it("should should parse goal + have")(undefined, undefined, undefined, (function (param) { + var actual = Emacs__Parser2$AgdaModeVscode.parseGoalType("Goal: ℕ\nHave: ℕ\n————————————————————————————————————————————————————————————"); + var expected = [ + { + TAG: 0, + _0: "Goal", + _1: "special", + _2: RichText$AgdaModeVscode.string("ℕ"), + _3: undefined, + _4: undefined, + [Symbol.for("name")]: "Labeled" + }, + { + TAG: 0, + _0: "Have", + _1: "special", + _2: RichText$AgdaModeVscode.string("ℕ"), + _3: undefined, + _4: undefined, + [Symbol.for("name")]: "Labeled" + } + ]; + Assert$BsMocha.deep_equal(undefined, actual, expected); + })); + Mocha$BsMocha.it("should should parse goal + have + context")(undefined, undefined, undefined, (function (param) { + var actual = Emacs__Parser2$AgdaModeVscode.parseGoalType("Goal: ℕ\nHave: ℕ\n————————————————————————————————————————————————————————————\ny : ℕ\nx : ℕ"); + var expected = [ + { + TAG: 0, + _0: "Goal", + _1: "special", + _2: RichText$AgdaModeVscode.string("ℕ"), + _3: undefined, + _4: undefined, + [Symbol.for("name")]: "Labeled" + }, + { + TAG: 0, + _0: "Have", + _1: "special", + _2: RichText$AgdaModeVscode.string("ℕ"), + _3: undefined, + _4: undefined, + [Symbol.for("name")]: "Labeled" + } + ]; + Assert$BsMocha.deep_equal(undefined, actual, expected); + })); })); var Assert; diff --git a/src/View/Panel/Emacs/Emacs__Parser2.res b/src/View/Panel/Emacs/Emacs__Parser2.res index 843202fc..4c84568b 100644 --- a/src/View/Panel/Emacs/Emacs__Parser2.res +++ b/src/View/Panel/Emacs/Emacs__Parser2.res @@ -102,6 +102,11 @@ let parseGoalType: string => array = raw => { ->Array.map(Agda.Output.parseOutputWithoutLocation) ->Array.keepMap(x => x) ->Array.map(output => Agda.Output.renderItem(output)) + | "metas" => + lines + ->Array.map(Agda.Output.parseOutputWithoutLocation) + ->Array.keepMap(x => x) + ->Array.map(output => Agda.Output.renderItem(output)) | "hiddenMetas" => lines ->Array.map(Agda.Output.parseOutputWithLocation) diff --git a/test/tests/Parser/Test__Parser__Emacs2.res b/test/tests/Parser/Test__Parser__Emacs2.res index 552ccb22..d3faf60f 100644 --- a/test/tests/Parser/Test__Parser__Emacs2.res +++ b/test/tests/Parser/Test__Parser__Emacs2.res @@ -3,12 +3,38 @@ open! Belt module Assert = BsMocha.Assert -describe_only("when running Emacs__Parser2.parseGoalType", () => { - it("should should parse goal type", () => { +describe("when running Emacs__Parser2.parseGoalType", () => { + it("should should parse goal only", () => { let raw = `Goal: ℕ ————————————————————————————————————————————————————————————` let actual = Emacs__Parser2.parseGoalType(raw) - let expected = [Item.Labeled("GOAL", "style", RichText.string("ℕ"), Some("ℕ"), None)] + let expected = [Item.Labeled("Goal", "special", RichText.string("ℕ"), None, None)] + Assert.deep_equal(actual, expected) + }) + + it("should should parse goal + have", () => { + let raw = `Goal: ℕ +Have: ℕ +————————————————————————————————————————————————————————————` + let actual = Emacs__Parser2.parseGoalType(raw) + let expected = [ + Item.Labeled("Goal", "special", RichText.string("ℕ"), None, None), + Item.Labeled("Have", "special", RichText.string("ℕ"), None, None), + ] + Assert.deep_equal(actual, expected) + }) + + it("should should parse goal + have + context", () => { + let raw = `Goal: ℕ +Have: ℕ +———————————————————————————————————————————————————————————— +y : ℕ +x : ℕ` + let actual = Emacs__Parser2.parseGoalType(raw) + let expected = [ + Item.Labeled("Goal", "special", RichText.string("ℕ"), None, None), + Item.Labeled("Have", "special", RichText.string("ℕ"), None, None), + ] Assert.deep_equal(actual, expected) }) }) From 18081628aa7b4d87978c9396c1d5df47e3a57305 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Thu, 30 Nov 2023 23:26:53 +0800 Subject: [PATCH 019/109] [ fix ] Create test cases for Agda.OutputConstraint.parse --- lib/js/src/Agda.bs.js | 22 +++++----- .../src/View/Panel/Emacs/Emacs__Parser2.bs.js | 3 -- .../tests/Parser/Test__Parser__Agda.bs.js | 33 ++++++++++++++ .../tests/Parser/Test__Parser__Emacs2.bs.js | 24 ++++++++++- src/Agda.res | 43 +++++++++++-------- src/View/Component/Item.res | 2 +- src/View/Panel/Emacs/Emacs__Parser2.res | 3 -- test/tests/Parser/Test__Parser__Agda.res | 24 +++++++++++ test/tests/Parser/Test__Parser__Emacs2.res | 12 +++++- 9 files changed, 128 insertions(+), 38 deletions(-) diff --git a/lib/js/src/Agda.bs.js b/lib/js/src/Agda.bs.js index c62f8acd..1cb69154 100644 --- a/lib/js/src/Agda.bs.js +++ b/lib/js/src/Agda.bs.js @@ -77,7 +77,7 @@ var Expr = { render: render$1 }; -var partial_arg = /^([^\\:]*) \\: ((?:\n|.)+)/; +var partial_arg = /^([^\:]*) \: ((?:\n|.)+)/; function parseOfType(param) { return Emacs__Parser$AgdaModeVscode.captures(partial_arg, (function (captured) { @@ -87,14 +87,14 @@ function parseOfType(param) { TAG: 0, _0: RichText$AgdaModeVscode.concatMany(Belt_Array.map(term, render)), _1: RichText$AgdaModeVscode.concatMany(Belt_Array.map(type_, render)), - [Symbol.for("name")]: "OfType'" + [Symbol.for("name")]: "OfType" }; })); })); }), param); } -var partial_arg$1 = /^Type ((?:\\n|.)+)/; +var partial_arg$1 = /^Type ((?:\n|.)+)/; function parseJustType(param) { return Emacs__Parser$AgdaModeVscode.captures(partial_arg$1, (function (captured) { @@ -102,13 +102,13 @@ function parseJustType(param) { return { TAG: 1, _0: RichText$AgdaModeVscode.concatMany(Belt_Array.map(type_, render)), - [Symbol.for("name")]: "JustType'" + [Symbol.for("name")]: "JustType" }; })); }), param); } -var partial_arg$2 = /^Sort ((?:\\n|.)+)/; +var partial_arg$2 = /^Sort ((?:\n|.)+)/; function parseJustSort(param) { return Emacs__Parser$AgdaModeVscode.captures(partial_arg$2, (function (captured) { @@ -116,7 +116,7 @@ function parseJustSort(param) { return { TAG: 2, _0: RichText$AgdaModeVscode.concatMany(Belt_Array.map(sort, render)), - [Symbol.for("name")]: "JustSort'" + [Symbol.for("name")]: "JustSort" }; })); }), param); @@ -127,7 +127,7 @@ function parseOthers(raw) { return { TAG: 3, _0: RichText$AgdaModeVscode.concatMany(Belt_Array.map(raw$p, render)), - [Symbol.for("name")]: "Others'" + [Symbol.for("name")]: "Others" }; })); } @@ -146,26 +146,26 @@ function parse$1(param) { function renderItem(value, $$location) { var inlines; switch (value.TAG | 0) { - case /* OfType' */0 : + case /* OfType */0 : inlines = RichText$AgdaModeVscode.concatMany([ value._0, RichText$AgdaModeVscode.string(" : "), value._1 ]); break; - case /* JustType' */1 : + case /* JustType */1 : inlines = RichText$AgdaModeVscode.concatMany([ RichText$AgdaModeVscode.string("Type "), value._0 ]); break; - case /* JustSort' */2 : + case /* JustSort */2 : inlines = RichText$AgdaModeVscode.concatMany([ RichText$AgdaModeVscode.string("Sort "), value._0 ]); break; - case /* Others' */3 : + case /* Others */3 : inlines = RichText$AgdaModeVscode.concatMany([value._0]); break; diff --git a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js index 42828056..ce4d43c8 100644 --- a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js +++ b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js @@ -75,8 +75,6 @@ function parseError(raw) { } function parseGoalType(raw) { - console.log("parseGoalType"); - console.log(raw); var markGoal = function (param) { return Belt_Option.map(Js_string.match_(/^Goal:/, param[0]), (function (param) { return "goal"; @@ -116,7 +114,6 @@ function parseGoalType(raw) { }; var lines = Js_string.split("\n", raw); var dictionary = partiteMetas(removeDelimeter(partiteGoalTypeContext(lines))); - console.log(dictionary); return Js_array.concatMany(Belt_Array.map(Js_dict.entries(dictionary), (function (param) { var lines = param[1]; switch (param[0]) { diff --git a/lib/js/test/tests/Parser/Test__Parser__Agda.bs.js b/lib/js/test/tests/Parser/Test__Parser__Agda.bs.js index 3a6314fe..b24e2758 100644 --- a/lib/js/test/tests/Parser/Test__Parser__Agda.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__Agda.bs.js @@ -1,9 +1,11 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; +var Curry = require("rescript/lib/js/curry.js"); var Mocha$BsMocha = require("bs-mocha/lib/js/src/Mocha.bs.js"); var Assert$BsMocha = require("bs-mocha/lib/js/src/Assert.bs.js"); var Agda$AgdaModeVscode = require("../../../src/Agda.bs.js"); +var RichText$AgdaModeVscode = require("../../../src/View/Component/RichText.bs.js"); Mocha$BsMocha.describe("when running Agda.Expr.parse")(undefined, undefined, undefined, (function (param) { Mocha$BsMocha.it("should should parse a plain string")(undefined, undefined, undefined, (function (param) { @@ -35,6 +37,37 @@ Mocha$BsMocha.describe("when running Agda.Expr.parse")(undefined, undefined, und })); })); +Mocha$BsMocha.describe("when running Agda.OutputConstraint.parse")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should should parse OfType")(undefined, undefined, undefined, (function (param) { + var expected = { + TAG: 0, + _0: RichText$AgdaModeVscode.string("x"), + _1: RichText$AgdaModeVscode.string("ℕ"), + [Symbol.for("name")]: "OfType" + }; + var actual = Curry._1(Agda$AgdaModeVscode.OutputConstraint.parse, "x : ℕ"); + Assert$BsMocha.deep_equal(undefined, actual, expected); + })); + Mocha$BsMocha.it("should should parse JustType")(undefined, undefined, undefined, (function (param) { + var expected = { + TAG: 1, + _0: RichText$AgdaModeVscode.string("ℕ"), + [Symbol.for("name")]: "JustType" + }; + var actual = Curry._1(Agda$AgdaModeVscode.OutputConstraint.parse, "Type ℕ"); + Assert$BsMocha.deep_equal(undefined, actual, expected); + })); + Mocha$BsMocha.it("should should parse JustSort")(undefined, undefined, undefined, (function (param) { + var expected = { + TAG: 2, + _0: RichText$AgdaModeVscode.string("ℕ\n ℕ"), + [Symbol.for("name")]: "JustSort" + }; + var actual = Curry._1(Agda$AgdaModeVscode.OutputConstraint.parse, "Sort ℕ\n ℕ"); + Assert$BsMocha.deep_equal(undefined, actual, expected); + })); + })); + var Assert; exports.Assert = Assert; diff --git a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js index 6a7ce1fc..5b8c348e 100644 --- a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js @@ -44,7 +44,7 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseGoalType")(undefined, u ]; Assert$BsMocha.deep_equal(undefined, actual, expected); })); - Mocha$BsMocha.it("should should parse goal + have + context")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it_only("should should parse goal + have + context")(undefined, undefined, undefined, (function (param) { var actual = Emacs__Parser2$AgdaModeVscode.parseGoalType("Goal: ℕ\nHave: ℕ\n————————————————————————————————————————————————————————————\ny : ℕ\nx : ℕ"); var expected = [ { @@ -64,6 +64,28 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseGoalType")(undefined, u _3: undefined, _4: undefined, [Symbol.for("name")]: "Labeled" + }, + { + TAG: 1, + _0: RichText$AgdaModeVscode.concatMany([ + RichText$AgdaModeVscode.string("y"), + RichText$AgdaModeVscode.string(" : "), + RichText$AgdaModeVscode.string("ℕ") + ]), + _1: undefined, + _2: undefined, + [Symbol.for("name")]: "Unlabeled" + }, + { + TAG: 1, + _0: RichText$AgdaModeVscode.concatMany([ + RichText$AgdaModeVscode.string("x"), + RichText$AgdaModeVscode.string(" : "), + RichText$AgdaModeVscode.string("ℕ") + ]), + _1: undefined, + _2: undefined, + [Symbol.for("name")]: "Unlabeled" } ]; Assert$BsMocha.deep_equal(undefined, actual, expected); diff --git a/src/Agda.res b/src/Agda.res index dbb860eb..14ff3893 100644 --- a/src/Agda.res +++ b/src/Agda.res @@ -26,7 +26,8 @@ module Expr = { ->Js.String.trim /* 1 2 */ ->Js.String.splitByRe(%re("/(\?\d+)|(\_\d+[^\}\)\s]*)/"), _) - ->Array.mapWithIndex((i, token) => + ->// RegEx updated to v10.1.4 + Array.mapWithIndex((i, token) => switch mod(i, 3) { | 1 => token @@ -50,45 +51,51 @@ module Expr = { } module OutputConstraint: { - type t + // RegEx updated to v10.1.4 + type t = + | OfType(RichText.t, RichText.t) + | JustType(RichText.t) + | JustSort(RichText.t) + | Others(RichText.t) let parse: string => option let renderItem: (t, option) => Item.t } = { - type rec t = - | OfType'(RichText.t, RichText.t) - | JustType'(RichText.t) - | JustSort'(RichText.t) - | Others'(RichText.t) + // RegEx updated to v10.1.4 + type t = + | OfType(RichText.t, RichText.t) + | JustType(RichText.t) + | JustSort(RichText.t) + | Others(RichText.t) let parseOfType = - %re("/^([^\\:]*) \\: ((?:\n|.)+)/")->Emacs__Parser.captures(captured => + %re("/^([^\:]*) \: ((?:\n|.)+)/")->Emacs__Parser.captures(captured => captured ->Emacs__Parser.at(2, Expr.parse) ->Option.flatMap(type_ => captured ->Emacs__Parser.at(1, Expr.parse) - ->Option.flatMap(term => Some(OfType'(Expr.render(term), Expr.render(type_)))) + ->Option.flatMap(term => Some(OfType(Expr.render(term), Expr.render(type_)))) ) ) let parseJustType = - %re("/^Type ((?:\\n|.)+)/")->Emacs__Parser.captures(captured => - captured->Emacs__Parser.at(1, Expr.parse)->Option.map(type_ => JustType'(Expr.render(type_))) + %re("/^Type ((?:\n|.)+)/")->Emacs__Parser.captures(captured => + captured->Emacs__Parser.at(1, Expr.parse)->Option.map(type_ => JustType(Expr.render(type_))) ) let parseJustSort = - %re("/^Sort ((?:\\n|.)+)/")->Emacs__Parser.captures(captured => - captured->Emacs__Parser.at(1, Expr.parse)->Option.map(sort => JustSort'(Expr.render(sort))) + %re("/^Sort ((?:\n|.)+)/")->Emacs__Parser.captures(captured => + captured->Emacs__Parser.at(1, Expr.parse)->Option.map(sort => JustSort(Expr.render(sort))) ) - let parseOthers = raw => raw->Expr.parse->Option.map(raw' => Others'(Expr.render(raw'))) + let parseOthers = raw => raw->Expr.parse->Option.map(raw' => Others(Expr.render(raw'))) let parse = Emacs__Parser.choice([parseOfType, parseJustType, parseJustSort, parseOthers]) let renderItem = (value, location) => { open! RichText let inlines = switch value { - | OfType'(e, t) => concatMany([e, string(" : "), t]) - | JustType'(e) => concatMany([string("Type "), e]) - | JustSort'(e) => concatMany([string("Sort "), e]) - | Others'(e) => concatMany([e]) + | OfType(e, t) => concatMany([e, string(" : "), t]) + | JustType(e) => concatMany([string("Type "), e]) + | JustSort(e) => concatMany([string("Sort "), e]) + | Others(e) => concatMany([e]) } Item.Unlabeled(inlines, None, location) } diff --git a/src/View/Component/Item.res b/src/View/Component/Item.res index 43825ec1..633eb62a 100644 --- a/src/View/Component/Item.res +++ b/src/View/Component/Item.res @@ -2,7 +2,7 @@ open React type t = | Labeled(string, string, RichText.t, option, option) // label // style // body // raw string // range - | Unlabeled(RichText.t, option, option) // body // raw string + | Unlabeled(RichText.t, option, option) // body // raw string // range | Header(string) //

let plainText = s => Unlabeled(RichText.string(s), None, None) diff --git a/src/View/Panel/Emacs/Emacs__Parser2.res b/src/View/Panel/Emacs/Emacs__Parser2.res index 4c84568b..d65835e7 100644 --- a/src/View/Panel/Emacs/Emacs__Parser2.res +++ b/src/View/Panel/Emacs/Emacs__Parser2.res @@ -53,8 +53,6 @@ let parseError: string => array = raw => { } let parseGoalType: string => array = raw => { - Js.log("parseGoalType") - Js.log(raw) let markGoal = ((line, _)) => Js.String.match_(%re("/^Goal:/"), line)->Option.map(_ => "goal") let markHave = ((line, _)) => Js.String.match_(%re("/^Have:/"), line)->Option.map(_ => "have") let markMetas = ((line, _)) => @@ -77,7 +75,6 @@ let parseGoalType: string => array = raw => { let removeDelimeter = xs => xs->Emacs__Parser.Dict.update("metas", Js.Array.sliceFrom(1)) let lines = Js.String.split("\n", raw) let dictionary = lines->partiteGoalTypeContext->removeDelimeter->partiteMetas - Js.log(dictionary) // convert entries in the dictionary to Items for render dictionary ->Js.Dict.entries diff --git a/test/tests/Parser/Test__Parser__Agda.res b/test/tests/Parser/Test__Parser__Agda.res index 3153ea95..e3c25573 100644 --- a/test/tests/Parser/Test__Parser__Agda.res +++ b/test/tests/Parser/Test__Parser__Agda.res @@ -25,6 +25,30 @@ describe("when running Agda.Expr.parse", () => { }) }) +describe("when running Agda.OutputConstraint.parse", () => { + it("should should parse OfType", () => { + let raw = `x : ℕ` + let expected = Some(Agda.OutputConstraint.OfType(RichText.string("x"), RichText.string("ℕ"))) + let actual = Agda.OutputConstraint.parse(raw) + Assert.deep_equal(actual, expected) + }) + + it("should should parse JustType", () => { + let raw = `Type ℕ` + let expected = Some(Agda.OutputConstraint.JustType(RichText.string("ℕ"))) + let actual = Agda.OutputConstraint.parse(raw) + Assert.deep_equal(actual, expected) + }) + + it("should should parse JustSort", () => { + let raw = `Sort ℕ + ℕ` + let expected = Some(Agda.OutputConstraint.JustSort(RichText.string("ℕ\n ℕ"))) + let actual = Agda.OutputConstraint.parse(raw) + Assert.deep_equal(actual, expected) + }) +}) + // describe_only("when parsing DisplayInfo", () => { // describe("Text", () => { // it({j|should work just fine|j}, () => { diff --git a/test/tests/Parser/Test__Parser__Emacs2.res b/test/tests/Parser/Test__Parser__Emacs2.res index d3faf60f..fc964c53 100644 --- a/test/tests/Parser/Test__Parser__Emacs2.res +++ b/test/tests/Parser/Test__Parser__Emacs2.res @@ -24,7 +24,7 @@ Have: ℕ Assert.deep_equal(actual, expected) }) - it("should should parse goal + have + context", () => { + it_only("should should parse goal + have + context", () => { let raw = `Goal: ℕ Have: ℕ ———————————————————————————————————————————————————————————— @@ -34,6 +34,16 @@ x : ℕ` let expected = [ Item.Labeled("Goal", "special", RichText.string("ℕ"), None, None), Item.Labeled("Have", "special", RichText.string("ℕ"), None, None), + Item.Unlabeled( + RichText.concatMany([RichText.string("y"), RichText.string(" : "), RichText.string("ℕ")]), + None, + None, + ), + Item.Unlabeled( + RichText.concatMany([RichText.string("x"), RichText.string(" : "), RichText.string("ℕ")]), + None, + None, + ), ] Assert.deep_equal(actual, expected) }) From 04014fe59887276dd1292aac91afbc61364f21af Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Fri, 1 Dec 2023 00:14:15 +0800 Subject: [PATCH 020/109] [ fix ] Fix and create test cases for Emacs__Parser2.parseAllGoalsWarnings --- .../src/View/Panel/Emacs/Emacs__Parser.bs.js | 4 ++- .../src/View/Panel/Emacs/Emacs__Parser2.bs.js | 8 +++++ .../tests/Parser/Test__Parser__Emacs2.bs.js | 33 ++++++++++++++++++- src/View/Panel/Emacs/Emacs__Parser.res | 2 +- src/View/Panel/Emacs/Emacs__Parser2.res | 8 ++++- test/tests/Parser/Test__Parser__Emacs2.res | 25 +++++++++++++- 6 files changed, 75 insertions(+), 5 deletions(-) diff --git a/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js b/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js index 3862eb88..6c3f095e 100644 --- a/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js +++ b/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js @@ -47,7 +47,9 @@ function partite(xs, tagEntry) { return Js_dict.fromArray(Belt_Array.map(intervals, (function (param) { return [ param[0], - Js_array.slice(param[1], param[2], xs) + Belt_Array.keep(Js_array.slice(param[1], param[2], xs), (function (x) { + return x !== ""; + })) ]; }))); } diff --git a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js index ce4d43c8..d5f195d9 100644 --- a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js +++ b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js @@ -166,6 +166,8 @@ function parseGoalType(raw) { } function parseAllGoalsWarnings(title, body) { + console.log(title); + console.log(body); var partiteAllGoalsWarnings = function (title, body) { var lines = Js_string.split("\n", body); var hasMetas = Belt_Option.isSome(Js_string.match_(/Goals/, title)); @@ -245,6 +247,12 @@ function parseAllGoalsWarnings(title, body) { })), (function (output) { return Agda$AgdaModeVscode.Output.renderItem(output); })); + case "metas" : + return Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(lines, Agda$AgdaModeVscode.Output.parseOutputWithoutLocation), (function (x) { + return x; + })), (function (output) { + return Agda$AgdaModeVscode.Output.renderItem(output); + })); case "warnings" : return Belt_Array.map(lines, (function (line) { return Item$AgdaModeVscode.warning(RichText$AgdaModeVscode.parse(line), undefined); diff --git a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js index 5b8c348e..c49c0060 100644 --- a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js @@ -44,7 +44,7 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseGoalType")(undefined, u ]; Assert$BsMocha.deep_equal(undefined, actual, expected); })); - Mocha$BsMocha.it_only("should should parse goal + have + context")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should should parse goal + have + context")(undefined, undefined, undefined, (function (param) { var actual = Emacs__Parser2$AgdaModeVscode.parseGoalType("Goal: ℕ\nHave: ℕ\n————————————————————————————————————————————————————————————\ny : ℕ\nx : ℕ"); var expected = [ { @@ -92,6 +92,37 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseGoalType")(undefined, u })); })); +Mocha$BsMocha.describe_only("when running Emacs__Parser2.parseAllGoalsWarnings")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should should parse goal only")(undefined, undefined, undefined, (function (param) { + var actual = Emacs__Parser2$AgdaModeVscode.parseAllGoalsWarnings("*All Goals*", "\n?0 : ℕ\n?1 : ℕ\n"); + var expected = [ + { + TAG: 1, + _0: RichText$AgdaModeVscode.concatMany([ + RichText$AgdaModeVscode.hole(0), + RichText$AgdaModeVscode.string(" : "), + RichText$AgdaModeVscode.string("ℕ") + ]), + _1: undefined, + _2: undefined, + [Symbol.for("name")]: "Unlabeled" + }, + { + TAG: 1, + _0: RichText$AgdaModeVscode.concatMany([ + RichText$AgdaModeVscode.hole(1), + RichText$AgdaModeVscode.string(" : "), + RichText$AgdaModeVscode.string("ℕ") + ]), + _1: undefined, + _2: undefined, + [Symbol.for("name")]: "Unlabeled" + } + ]; + Assert$BsMocha.deep_equal(undefined, actual, expected); + })); + })); + var Assert; exports.Assert = Assert; diff --git a/src/View/Panel/Emacs/Emacs__Parser.res b/src/View/Panel/Emacs/Emacs__Parser.res index 0e2e6b78..0c77b786 100644 --- a/src/View/Panel/Emacs/Emacs__Parser.res +++ b/src/View/Panel/Emacs/Emacs__Parser.res @@ -13,7 +13,7 @@ module Dict = { | None => (key, index, Array.length(xs)) } ) - intervals->Array.map(((key, start, end_)) => (key, xs->Js.Array.slice(~start, ~end_))) + intervals->Array.map(((key, start, end_)) => (key, xs->Js.Array.slice(~start, ~end_)->Array.keep(x => x !== ""))) |> fromArray } /* split an entry */ diff --git a/src/View/Panel/Emacs/Emacs__Parser2.res b/src/View/Panel/Emacs/Emacs__Parser2.res index d65835e7..2e2f9a5c 100644 --- a/src/View/Panel/Emacs/Emacs__Parser2.res +++ b/src/View/Panel/Emacs/Emacs__Parser2.res @@ -116,6 +116,8 @@ let parseGoalType: string => array = raw => { } let parseAllGoalsWarnings = (title, body): array => { + Js.log(title) + Js.log(body) let partiteAllGoalsWarnings: (string, string) => Js.Dict.t> = (title, body) => { let lines = Js.String.split("\n", body) /* examine the header to see what's in the body */ @@ -171,7 +173,6 @@ let parseAllGoalsWarnings = (title, body): array => { ->partiteMetas ->partiteWarningsOrErrors("warnings") ->partiteWarningsOrErrors("errors") - // convert entries in the dictionary to Items for rendering dictionary ->Js.Dict.entries @@ -184,6 +185,11 @@ let parseAllGoalsWarnings = (title, body): array => { ->Array.map(Agda.Output.parseOutputWithoutLocation) ->Array.keepMap(x => x) ->Array.map(output => Agda.Output.renderItem(output)) + | "metas" => + lines + ->Array.map(Agda.Output.parseOutputWithoutLocation) + ->Array.keepMap(x => x) + ->Array.map(output => Agda.Output.renderItem(output)) | "hiddenMetas" => lines ->Array.map(Agda.Output.parseOutputWithLocation) diff --git a/test/tests/Parser/Test__Parser__Emacs2.res b/test/tests/Parser/Test__Parser__Emacs2.res index fc964c53..1480678d 100644 --- a/test/tests/Parser/Test__Parser__Emacs2.res +++ b/test/tests/Parser/Test__Parser__Emacs2.res @@ -24,7 +24,7 @@ Have: ℕ Assert.deep_equal(actual, expected) }) - it_only("should should parse goal + have + context", () => { + it("should should parse goal + have + context", () => { let raw = `Goal: ℕ Have: ℕ ———————————————————————————————————————————————————————————— @@ -48,3 +48,26 @@ x : ℕ` Assert.deep_equal(actual, expected) }) }) + +describe_only("when running Emacs__Parser2.parseAllGoalsWarnings", () => { + it("should should parse goal only", () => { + let raw = ` +?0 : ℕ +?1 : ℕ +` + let actual = Emacs__Parser2.parseAllGoalsWarnings("*All Goals*", raw) + let expected = [ + Item.Unlabeled( + RichText.concatMany([RichText.hole(0), RichText.string(" : "), RichText.string("ℕ")]), + None, + None, + ), + Item.Unlabeled( + RichText.concatMany([RichText.hole(1), RichText.string(" : "), RichText.string("ℕ")]), + None, + None, + ), + ] + Assert.deep_equal(actual, expected) + }) +}) From 94304f464649487c2a5609689d5d54f1da444432 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Fri, 1 Dec 2023 00:19:55 +0800 Subject: [PATCH 021/109] [ fix ] RegEx of Agda.Output --- lib/js/src/Agda.bs.js | 4 +-- .../src/View/Panel/Emacs/Emacs__Parser2.bs.js | 3 +- .../tests/Parser/Test__Parser__Emacs2.bs.js | 28 +++++++++++++++++++ src/Agda.res | 5 ++-- src/View/Panel/Emacs/Emacs__Parser2.res | 3 +- test/tests/Parser/Test__Parser__Emacs2.res | 21 ++++++++++++++ 6 files changed, 58 insertions(+), 6 deletions(-) diff --git a/lib/js/src/Agda.bs.js b/lib/js/src/Agda.bs.js index 1cb69154..c8e3524f 100644 --- a/lib/js/src/Agda.bs.js +++ b/lib/js/src/Agda.bs.js @@ -194,7 +194,7 @@ function parseOutputWithoutLocation(raw) { })); } -var partial_arg$4 = /((?:\\n|.)*\\S+)\\s*\[ at ([^\\]]+) \]/; +var partial_arg$4 = /((?:\n|.)*\S+)\s*\[ at ([^\]]+) \]/; function parseOutputWithLocation(param) { return Emacs__Parser$AgdaModeVscode.captures(partial_arg$4, (function (captured) { @@ -214,7 +214,7 @@ function parseOutputWithLocation(param) { } function parse$2(raw) { - var locRe = /\\[ at (\\S+\\:(?:\\d+\\,\\d+\\-\\d+\\,\\d+|\\d+\\,\\d+\\-\\d+)) \\]$/; + var locRe = /\[ at (\S+\:(?:\d+\,\d+\-\d+\,\d+|\d+\,\d+\-\d+|\d+\,\d+)) \]$/; var hasLocation = locRe.test(raw); if (hasLocation) { return Curry._1(parseOutputWithLocation, raw); diff --git a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js index d5f195d9..d4ffddda 100644 --- a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js +++ b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js @@ -228,6 +228,7 @@ function parseAllGoalsWarnings(title, body) { })); }; var dictionary = partiteWarningsOrErrors(partiteWarningsOrErrors(partiteMetas(partiteAllGoalsWarnings(title, body)), "warnings"), "errors"); + console.log(dictionary); return Js_array.concatMany(Belt_Array.map(Js_dict.entries(dictionary), (function (param) { var lines = param[1]; switch (param[0]) { @@ -248,7 +249,7 @@ function parseAllGoalsWarnings(title, body) { return Agda$AgdaModeVscode.Output.renderItem(output); })); case "metas" : - return Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(lines, Agda$AgdaModeVscode.Output.parseOutputWithoutLocation), (function (x) { + return Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(lines, Agda$AgdaModeVscode.Output.parse), (function (x) { return x; })), (function (output) { return Agda$AgdaModeVscode.Output.renderItem(output); diff --git a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js index c49c0060..88906d38 100644 --- a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js @@ -93,6 +93,34 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseGoalType")(undefined, u })); Mocha$BsMocha.describe_only("when running Emacs__Parser2.parseAllGoalsWarnings")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should should parse metas")(undefined, undefined, undefined, (function (param) { + var actual = Emacs__Parser2$AgdaModeVscode.parseAllGoalsWarnings("*All Goals*", "\n?0 : ℕ\n?1 : ℕ\n"); + var expected = [ + { + TAG: 1, + _0: RichText$AgdaModeVscode.concatMany([ + RichText$AgdaModeVscode.hole(0), + RichText$AgdaModeVscode.string(" : "), + RichText$AgdaModeVscode.string("ℕ") + ]), + _1: undefined, + _2: undefined, + [Symbol.for("name")]: "Unlabeled" + }, + { + TAG: 1, + _0: RichText$AgdaModeVscode.concatMany([ + RichText$AgdaModeVscode.hole(1), + RichText$AgdaModeVscode.string(" : "), + RichText$AgdaModeVscode.string("ℕ") + ]), + _1: undefined, + _2: undefined, + [Symbol.for("name")]: "Unlabeled" + } + ]; + Assert$BsMocha.deep_equal(undefined, actual, expected); + })); Mocha$BsMocha.it("should should parse goal only")(undefined, undefined, undefined, (function (param) { var actual = Emacs__Parser2$AgdaModeVscode.parseAllGoalsWarnings("*All Goals*", "\n?0 : ℕ\n?1 : ℕ\n"); var expected = [ diff --git a/src/Agda.res b/src/Agda.res index 14ff3893..138bfccc 100644 --- a/src/Agda.res +++ b/src/Agda.res @@ -102,13 +102,14 @@ module OutputConstraint: { } module Output = { + // RegEx updated to v10.1.4 type t = Output(OutputConstraint.t, option) // parsing serialized data let parseOutputWithoutLocation = raw => raw->OutputConstraint.parse->Option.map(x => Output(x, None)) let parseOutputWithLocation = %re( - "/((?:\\n|.)*\\S+)\\s*\[ at ([^\\]]+) \]/" + "/((?:\n|.)*\S+)\s*\[ at ([^\]]+) \]/" )->Emacs__Parser.captures(captured => captured[1] ->Option.flatMap(x => x) @@ -119,7 +120,7 @@ module Output = { }) ) let parse = raw => { - let locRe = %re("/\\[ at (\\S+\\:(?:\\d+\\,\\d+\\-\\d+\\,\\d+|\\d+\\,\\d+\\-\\d+)) \\]$/") + let locRe = %re("/\[ at (\S+\:(?:\d+\,\d+\-\d+\,\d+|\d+\,\d+\-\d+|\d+\,\d+)) \]$/") let hasLocation = Js.Re.test_(locRe, raw) if hasLocation { parseOutputWithLocation(raw) diff --git a/src/View/Panel/Emacs/Emacs__Parser2.res b/src/View/Panel/Emacs/Emacs__Parser2.res index 2e2f9a5c..a28f5928 100644 --- a/src/View/Panel/Emacs/Emacs__Parser2.res +++ b/src/View/Panel/Emacs/Emacs__Parser2.res @@ -173,6 +173,7 @@ let parseAllGoalsWarnings = (title, body): array => { ->partiteMetas ->partiteWarningsOrErrors("warnings") ->partiteWarningsOrErrors("errors") + Js.log(dictionary) // convert entries in the dictionary to Items for rendering dictionary ->Js.Dict.entries @@ -187,7 +188,7 @@ let parseAllGoalsWarnings = (title, body): array => { ->Array.map(output => Agda.Output.renderItem(output)) | "metas" => lines - ->Array.map(Agda.Output.parseOutputWithoutLocation) + ->Array.map(Agda.Output.parse) ->Array.keepMap(x => x) ->Array.map(output => Agda.Output.renderItem(output)) | "hiddenMetas" => diff --git a/test/tests/Parser/Test__Parser__Emacs2.res b/test/tests/Parser/Test__Parser__Emacs2.res index 1480678d..2228d6e3 100644 --- a/test/tests/Parser/Test__Parser__Emacs2.res +++ b/test/tests/Parser/Test__Parser__Emacs2.res @@ -50,6 +50,27 @@ x : ℕ` }) describe_only("when running Emacs__Parser2.parseAllGoalsWarnings", () => { + it("should should parse metas", () => { + let raw = ` +?0 : ℕ +?1 : ℕ +` + let actual = Emacs__Parser2.parseAllGoalsWarnings("*All Goals*", raw) + let expected = [ + Item.Unlabeled( + RichText.concatMany([RichText.hole(0), RichText.string(" : "), RichText.string("ℕ")]), + None, + None, + ), + Item.Unlabeled( + RichText.concatMany([RichText.hole(1), RichText.string(" : "), RichText.string("ℕ")]), + None, + None, + ), + ] + Assert.deep_equal(actual, expected) + }) + it("should should parse goal only", () => { let raw = ` ?0 : ℕ From b79806170a515d5ee76d22a2c8e9ed92451a904b Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Fri, 1 Dec 2023 00:36:45 +0800 Subject: [PATCH 022/109] [ test ] New test case for Emacs__Parser2.parseAllGoalsWarnings --- lib/js/src/View/Common.bs.js | 8 +++ .../src/View/Panel/Emacs/Emacs__Parser2.bs.js | 7 +-- .../tests/Parser/Test__Parser__Emacs2.bs.js | 53 +++++++++++++------ src/View/Common.res | 2 + src/View/Panel/Emacs/Emacs__Parser2.res | 8 ++- test/tests/Parser/Test__Parser__Emacs2.res | 42 ++++++++++----- 6 files changed, 83 insertions(+), 37 deletions(-) diff --git a/lib/js/src/View/Common.bs.js b/lib/js/src/View/Common.bs.js index 82b0a596..7abcf013 100644 --- a/lib/js/src/View/Common.bs.js +++ b/lib/js/src/View/Common.bs.js @@ -42,6 +42,13 @@ var AgdaPosition = { encode: encode }; +function make(start, end_) { + return { + start: start, + end_: end_ + }; +} + function fuse(a, b) { var start = a.start.pos > b.start.pos ? b.start : a.start; var end_ = a.end_.pos > b.end_.pos ? a.end_ : b.end_; @@ -78,6 +85,7 @@ function encode$1(x) { } var AgdaInterval = { + make: make, fuse: fuse, toString: toString, decode: decode$1, diff --git a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js index d4ffddda..2e91e1db 100644 --- a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js +++ b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js @@ -40,7 +40,7 @@ function partiteMetas(xs) { function partiteWarningsOrErrors(xs, key) { return Emacs__Parser$AgdaModeVscode.Dict.update(xs, key, (function (raw) { - var partial_arg = /^\\u2014{4}/; + var partial_arg = /^\u2014{4}/; var hasDelimeter = Belt_Option.isSome(Belt_Option.flatMap(Belt_Array.get(raw, 0), (function (param) { return Js_string.match_(partial_arg, param); }))); @@ -154,7 +154,7 @@ function parseGoalType(raw) { return Agda$AgdaModeVscode.Output.renderItem(output); })); case "metas" : - return Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(lines, Agda$AgdaModeVscode.Output.parseOutputWithoutLocation), (function (x) { + return Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(lines, Agda$AgdaModeVscode.Output.parse), (function (x) { return x; })), (function (output) { return Agda$AgdaModeVscode.Output.renderItem(output); @@ -166,8 +166,6 @@ function parseGoalType(raw) { } function parseAllGoalsWarnings(title, body) { - console.log(title); - console.log(body); var partiteAllGoalsWarnings = function (title, body) { var lines = Js_string.split("\n", body); var hasMetas = Belt_Option.isSome(Js_string.match_(/Goals/, title)); @@ -228,7 +226,6 @@ function parseAllGoalsWarnings(title, body) { })); }; var dictionary = partiteWarningsOrErrors(partiteWarningsOrErrors(partiteMetas(partiteAllGoalsWarnings(title, body)), "warnings"), "errors"); - console.log(dictionary); return Js_array.concatMany(Belt_Array.map(Js_dict.entries(dictionary), (function (param) { var lines = param[1]; switch (param[0]) { diff --git a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js index 88906d38..a2d87082 100644 --- a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js @@ -92,9 +92,9 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseGoalType")(undefined, u })); })); -Mocha$BsMocha.describe_only("when running Emacs__Parser2.parseAllGoalsWarnings")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.it("should should parse metas")(undefined, undefined, undefined, (function (param) { - var actual = Emacs__Parser2$AgdaModeVscode.parseAllGoalsWarnings("*All Goals*", "\n?0 : ℕ\n?1 : ℕ\n"); +Mocha$BsMocha.describe("when running Emacs__Parser2.parseAllGoalsWarnings")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should should parse goals only")(undefined, undefined, undefined, (function (param) { + var actual = Emacs__Parser2$AgdaModeVscode.parseAllGoalsWarnings("*All Goals*", "\n?0 : ℕ\n?1 : ℕ\nSort _0 [ at /Users/banacorn/agda/examples/A.agda:11,5-20 ]\n"); var expected = [ { TAG: 1, @@ -117,34 +117,57 @@ Mocha$BsMocha.describe_only("when running Emacs__Parser2.parseAllGoalsWarnings") _1: undefined, _2: undefined, [Symbol.for("name")]: "Unlabeled" + }, + { + TAG: 1, + _0: RichText$AgdaModeVscode.concatMany([ + RichText$AgdaModeVscode.string("Sort "), + RichText$AgdaModeVscode.string("_0") + ]), + _1: undefined, + _2: { + _0: "/Users/banacorn/agda/examples/A.agda", + _1: [{ + start: { + line: 11, + col: 5, + pos: 0 + }, + end_: { + line: 11, + col: 20, + pos: 0 + } + }], + [Symbol.for("name")]: "Range" + }, + [Symbol.for("name")]: "Unlabeled" } ]; Assert$BsMocha.deep_equal(undefined, actual, expected); })); - Mocha$BsMocha.it("should should parse goal only")(undefined, undefined, undefined, (function (param) { - var actual = Emacs__Parser2$AgdaModeVscode.parseAllGoalsWarnings("*All Goals*", "\n?0 : ℕ\n?1 : ℕ\n"); + Mocha$BsMocha.it("should should parse goals + errors")(undefined, undefined, undefined, (function (param) { + var actual = Emacs__Parser2$AgdaModeVscode.parseAllGoalsWarnings("*All Goals, Errors*", "?0 : _2\n\n———— Errors ————————————————————————————————————————————————\nUnsolved constraints"); var expected = [ { TAG: 1, _0: RichText$AgdaModeVscode.concatMany([ RichText$AgdaModeVscode.hole(0), RichText$AgdaModeVscode.string(" : "), - RichText$AgdaModeVscode.string("ℕ") + RichText$AgdaModeVscode.string("_2") ]), _1: undefined, _2: undefined, [Symbol.for("name")]: "Unlabeled" }, { - TAG: 1, - _0: RichText$AgdaModeVscode.concatMany([ - RichText$AgdaModeVscode.hole(1), - RichText$AgdaModeVscode.string(" : "), - RichText$AgdaModeVscode.string("ℕ") - ]), - _1: undefined, - _2: undefined, - [Symbol.for("name")]: "Unlabeled" + TAG: 0, + _0: "Error", + _1: "error", + _2: RichText$AgdaModeVscode.string("Unsolved constraints"), + _3: undefined, + _4: undefined, + [Symbol.for("name")]: "Labeled" } ]; Assert$BsMocha.deep_equal(undefined, actual, expected); diff --git a/src/View/Common.res b/src/View/Common.res index 9fd90db1..adaaf26c 100644 --- a/src/View/Common.res +++ b/src/View/Common.res @@ -33,6 +33,8 @@ module AgdaInterval = { end_: AgdaPosition.t, } + let make = (start, end_) => {start, end_} + let fuse = (a, b) => { let start = if a.start.pos > b.start.pos { b.start diff --git a/src/View/Panel/Emacs/Emacs__Parser2.res b/src/View/Panel/Emacs/Emacs__Parser2.res index a28f5928..496e0bf6 100644 --- a/src/View/Panel/Emacs/Emacs__Parser2.res +++ b/src/View/Panel/Emacs/Emacs__Parser2.res @@ -29,7 +29,8 @@ let partiteMetas = xs => let partiteWarningsOrErrors = (xs, key) => xs->Dict.update(key, (raw: array) => { - let hasDelimeter = raw[0]->Option.flatMap(Js.String.match_(%re("/^\\u2014{4}/")))->Option.isSome + // RegEx updated to v10.1.4 + let hasDelimeter = raw[0]->Option.flatMap(Js.String.match_(%re("/^\u2014{4}/")))->Option.isSome let lines = hasDelimeter ? Js.Array.sliceFrom(1, raw) : raw let markWarningStart = line => line->Common.AgdaRange.parse->Option.isSome /* If the previous warning of error ends with "at", then we have to glue it back */ @@ -101,7 +102,7 @@ let parseGoalType: string => array = raw => { ->Array.map(output => Agda.Output.renderItem(output)) | "metas" => lines - ->Array.map(Agda.Output.parseOutputWithoutLocation) + ->Array.map(Agda.Output.parse) ->Array.keepMap(x => x) ->Array.map(output => Agda.Output.renderItem(output)) | "hiddenMetas" => @@ -116,8 +117,6 @@ let parseGoalType: string => array = raw => { } let parseAllGoalsWarnings = (title, body): array => { - Js.log(title) - Js.log(body) let partiteAllGoalsWarnings: (string, string) => Js.Dict.t> = (title, body) => { let lines = Js.String.split("\n", body) /* examine the header to see what's in the body */ @@ -173,7 +172,6 @@ let parseAllGoalsWarnings = (title, body): array => { ->partiteMetas ->partiteWarningsOrErrors("warnings") ->partiteWarningsOrErrors("errors") - Js.log(dictionary) // convert entries in the dictionary to Items for rendering dictionary ->Js.Dict.entries diff --git a/test/tests/Parser/Test__Parser__Emacs2.res b/test/tests/Parser/Test__Parser__Emacs2.res index 2228d6e3..98f5de8d 100644 --- a/test/tests/Parser/Test__Parser__Emacs2.res +++ b/test/tests/Parser/Test__Parser__Emacs2.res @@ -49,11 +49,12 @@ x : ℕ` }) }) -describe_only("when running Emacs__Parser2.parseAllGoalsWarnings", () => { - it("should should parse metas", () => { +describe("when running Emacs__Parser2.parseAllGoalsWarnings", () => { + it("should should parse goals only", () => { let raw = ` ?0 : ℕ ?1 : ℕ +Sort _0 [ at /Users/banacorn/agda/examples/A.agda:11,5-20 ] ` let actual = Emacs__Parser2.parseAllGoalsWarnings("*All Goals*", raw) let expected = [ @@ -67,27 +68,44 @@ describe_only("when running Emacs__Parser2.parseAllGoalsWarnings", () => { None, None, ), + Item.Unlabeled( + RichText.concatMany([RichText.string("Sort "), RichText.string("_0")]), + None, + Some( + Common.AgdaRange.Range( + Some("/Users/banacorn/agda/examples/A.agda"), + [ + { + Common.AgdaInterval.start: {Common.AgdaPosition.col: 5, line: 11, pos: 0}, + end_: {Common.AgdaPosition.col: 20, line: 11, pos: 0}, + }, + ], + ), + ), + ), ] Assert.deep_equal(actual, expected) }) - it("should should parse goal only", () => { - let raw = ` -?0 : ℕ -?1 : ℕ -` - let actual = Emacs__Parser2.parseAllGoalsWarnings("*All Goals*", raw) + it("should should parse goals + errors", () => { + let raw = `?0 : _2 + +———— Errors ———————————————————————————————————————————————— +Unsolved constraints` + let actual = Emacs__Parser2.parseAllGoalsWarnings("*All Goals, Errors*", raw) let expected = [ Item.Unlabeled( - RichText.concatMany([RichText.hole(0), RichText.string(" : "), RichText.string("ℕ")]), + RichText.concatMany([RichText.hole(0), RichText.string(" : "), RichText.string("_2")]), None, None, ), - Item.Unlabeled( - RichText.concatMany([RichText.hole(1), RichText.string(" : "), RichText.string("ℕ")]), + Item.Labeled( + "Error", + "error", + RichText.string("Unsolved constraints"), None, None, - ), + ) ] Assert.deep_equal(actual, expected) }) From 65d548032648a8418ead44f690b9cfb8e8620e8d Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sat, 2 Dec 2023 00:42:49 +0800 Subject: [PATCH 023/109] [ new ] New parser for parsing Info_Error from EmacsTop --- .../src/View/Panel/Emacs/Emacs__Parser2.bs.js | 67 +++++++++++-- .../tests/Parser/Test__Parser__Emacs2.bs.js | 93 +++++++++++++++++++ src/View/Panel/Emacs/Emacs__Parser2.res | 60 ++++++++++-- test/tests/Parser/Test__Parser__Emacs2.res | 89 +++++++++++++++++- 4 files changed, 289 insertions(+), 20 deletions(-) diff --git a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js index 2e91e1db..762ece2e 100644 --- a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js +++ b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js @@ -62,16 +62,63 @@ function partiteWarningsOrErrors(xs, key) { function parseError(raw) { var lines = Js_string.split("\n", raw); - return Belt_Option.mapWithDefault(Js_dict.get(partiteWarningsOrErrors(Emacs__Parser$AgdaModeVscode.Dict.partite(lines, (function (param) { - if (param[1] === 0) { - return "errors"; - } - - })), "errors"), "errors"), [], (function (entries) { - return Belt_Array.map(entries, (function (entry) { - return Item$AgdaModeVscode.error(RichText$AgdaModeVscode.parse(entry), undefined); - })); - })); + var partial_arg = /^\u2014{4} Error/; + var hasBothErrorsAndWarnings = Belt_Option.isSome(Belt_Option.map(Belt_Array.get(lines, 0), (function (param) { + return Js_string.match_(partial_arg, param); + }))); + var dictionary; + if (hasBothErrorsAndWarnings) { + var isWarning = function (line) { + return Belt_Option.isSome(Js_string.match_(/^\u2014{4} Warning\(s\)/, line)); + }; + var predicate = function (param) { + if (param[1] === 0) { + return "errors"; + } else if (isWarning(param[0])) { + return "warnings"; + } else { + return ; + } + }; + dictionary = Emacs__Parser$AgdaModeVscode.Dict.partite(lines, predicate); + } else { + dictionary = Emacs__Parser$AgdaModeVscode.Dict.partite(lines, (function (param) { + if (param[1] === 0) { + return "errors"; + } + + })); + } + var markWarningStart = function (line) { + return Belt_Option.isSome(Curry._1(Common$AgdaModeVscode.AgdaRange.parse, line)); + }; + var glueBack = function (xs) { + var partial_arg = /at$/; + return Belt_Option.isSome(Belt_Option.flatMap(Belt_Array.get(xs, xs.length - 1 | 0), (function (param) { + return Js_string.match_(partial_arg, param); + }))); + }; + return Js_array.concatMany(Belt_Array.map(Js_dict.entries(Emacs__Parser$AgdaModeVscode.Dict.update(Emacs__Parser$AgdaModeVscode.Dict.update(dictionary, "errors", (function (xs) { + return [xs.slice(1).join("\n")]; + })), "warnings", (function (xs) { + return Belt_Array.map(Emacs__Parser$AgdaModeVscode.Array_.mergeWithNext(Emacs__Parser$AgdaModeVscode.Array_.partite(xs.slice(1), markWarningStart), glueBack), (function (param) { + return Js_array.joinWith("\n", param); + })); + }))), (function (param) { + var lines = param[1]; + switch (param[0]) { + case "errors" : + return Belt_Array.map(lines, (function (line) { + return Item$AgdaModeVscode.error(RichText$AgdaModeVscode.parse(line), undefined); + })); + case "warnings" : + return Belt_Array.map(lines, (function (line) { + return Item$AgdaModeVscode.warning(RichText$AgdaModeVscode.parse(line), undefined); + })); + default: + return []; + } + })), []); } function parseGoalType(raw) { diff --git a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js index a2d87082..f97ca33d 100644 --- a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js @@ -174,6 +174,99 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseAllGoalsWarnings")(unde })); })); +Mocha$BsMocha.describe_only("when running Emacs__Parser2.parseError")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should should parse errors + warnings")(undefined, undefined, undefined, (function (param) { + var actual = Emacs__Parser2$AgdaModeVscode.parseError("\n———— Error —————————————————————————————————————————————————\n/Users/banacorn/agda/examples/A.agda:15,1-2\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8\n\n———— Warning(s) ————————————————————————————————————————————\n/Users/banacorn/agda/examples/A.agda:17,1-8\nThe following names are declared but not accompanied by a\ndefinition: boo\n/Users/banacorn/agda/examples/A.agda:9,1-10\nUnreachable clause\nwhen checking the definition of _+_\n"); + var expected = [ + { + TAG: 0, + _0: "Error", + _1: "error", + _2: RichText$AgdaModeVscode.concatMany([ + RichText$AgdaModeVscode.string(""), + RichText$AgdaModeVscode.srcLoc({ + _0: "/Users/banacorn/agda/examples/A.agda", + _1: [{ + start: { + line: 15, + col: 1, + pos: 0 + }, + end_: { + line: 15, + col: 2, + pos: 0 + } + }], + [Symbol.for("name")]: "Range" + }), + RichText$AgdaModeVscode.string("\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8") + ]), + _3: undefined, + _4: undefined, + [Symbol.for("name")]: "Labeled" + }, + { + TAG: 0, + _0: "Warning", + _1: "warning", + _2: RichText$AgdaModeVscode.concatMany([ + RichText$AgdaModeVscode.string(""), + RichText$AgdaModeVscode.srcLoc({ + _0: "/Users/banacorn/agda/examples/A.agda", + _1: [{ + start: { + line: 9, + col: 1, + pos: 0 + }, + end_: { + line: 9, + col: 10, + pos: 0 + } + }], + [Symbol.for("name")]: "Range" + }), + RichText$AgdaModeVscode.string("\nUnreachable clause\nwhen checking the definition of _+_") + ]), + _3: undefined, + _4: undefined, + [Symbol.for("name")]: "Labeled" + }, + { + TAG: 0, + _0: "Warning", + _1: "warning", + _2: RichText$AgdaModeVscode.concatMany([ + RichText$AgdaModeVscode.string(""), + RichText$AgdaModeVscode.srcLoc({ + _0: "/Users/banacorn/agda/examples/A.agda", + _1: [{ + start: { + line: 17, + col: 1, + pos: 0 + }, + end_: { + line: 17, + col: 8, + pos: 0 + } + }], + [Symbol.for("name")]: "Range" + }), + RichText$AgdaModeVscode.string("\nThe following names are declared but not accompanied by a\ndefinition: boo") + ]), + _3: undefined, + _4: undefined, + [Symbol.for("name")]: "Labeled" + } + ]; + Assert$BsMocha.deep_equal(undefined, actual, expected); + })); + })); + var Assert; exports.Assert = Assert; diff --git a/src/View/Panel/Emacs/Emacs__Parser2.res b/src/View/Panel/Emacs/Emacs__Parser2.res index 496e0bf6..6d3fbb5a 100644 --- a/src/View/Panel/Emacs/Emacs__Parser2.res +++ b/src/View/Panel/Emacs/Emacs__Parser2.res @@ -1,3 +1,4 @@ +// See src/full/Agda/Interaction/EmacsTop.hs for the logic behind this parser open Emacs__Parser open Belt @@ -43,14 +44,61 @@ let partiteWarningsOrErrors = (xs, key) => }) let parseError: string => array = raw => { + // if the first line has delimeter, + // then the message has both an error and possibly many warnings + // all warnings start with a range + // ———— Error ———————————————————————————————————————————————————————————————— + // ... + // ———— Warning(s) ————————————————————————————————————————————————————————————— + // ... + // else, the message has only an error + // ... let lines = Js.String.split("\n", raw) - lines - ->Emacs__Parser.Dict.partite(((_, i)) => i === 0 ? Some("errors") : None) - ->partiteWarningsOrErrors("errors") - ->Js.Dict.get("errors") - ->Option.mapWithDefault([], entries => - entries->Array.map(entry => Item.error(RichText.parse(entry), None)) + let hasBothErrorsAndWarnings = + lines[0]->Option.map(Js.String.match_(%re("/^\u2014{4} Error/")))->Option.isSome + + let dictionary = if hasBothErrorsAndWarnings { + let isWarning = line => Js.String.match_(%re("/^\u2014{4} Warning\(s\)/"), line)->Option.isSome + let predicate = ((line, i)) => { + if i === 0 { + Some("errors") + } else if isWarning(line) { + Some("warnings") + } else { + None + } + } + lines->Emacs__Parser.Dict.partite(predicate) + } else { + lines->Emacs__Parser.Dict.partite(((_, i)) => i === 0 ? Some("errors") : None) + } + let markWarningStart = line => line->Common.AgdaRange.parse->Option.isSome + // If the previous warning of error ends with "at", then we have to glue it back + let glueBack = xs => + xs[Array.length(xs) - 1]->Option.flatMap(Js.String.match_(%re("/at$/")))->Option.isSome + // convert entries in the dictionary to Items for rendering + dictionary + // remove the delimeter in the first line of errors and unlines the rest + ->Emacs__Parser.Dict.update("errors", xs => [ + xs->Js.Array2.sliceFrom(1)->Js.Array2.joinWith("\n"), + ]) + // remove the delimeter in the first line of warnings and unlines the rest + ->Emacs__Parser.Dict.update("warnings", xs => + xs + ->Js.Array2.sliceFrom(1) + ->Array_.partite(markWarningStart) + ->Array_.mergeWithNext(glueBack) + ->Array.map(Js.Array.joinWith("\n")) ) + ->Js.Dict.entries + ->Array.map(((key, lines)) => + switch key { + | "warnings" => lines->Array.map(line => Item.warning(RichText.parse(line), None)) + | "errors" => lines->Array.map(line => Item.error(RichText.parse(line), None)) + | _ => [] + } + ) + ->Js.Array.concatMany([]) } let parseGoalType: string => array = raw => { diff --git a/test/tests/Parser/Test__Parser__Emacs2.res b/test/tests/Parser/Test__Parser__Emacs2.res index 98f5de8d..3eee0bf9 100644 --- a/test/tests/Parser/Test__Parser__Emacs2.res +++ b/test/tests/Parser/Test__Parser__Emacs2.res @@ -76,8 +76,8 @@ Sort _0 [ at /Users/banacorn/agda/examples/A.agda:11,5-20 ] Some("/Users/banacorn/agda/examples/A.agda"), [ { - Common.AgdaInterval.start: {Common.AgdaPosition.col: 5, line: 11, pos: 0}, - end_: {Common.AgdaPosition.col: 20, line: 11, pos: 0}, + start: {col: 5, line: 11, pos: 0}, + end_: {col: 20, line: 11, pos: 0}, }, ], ), @@ -99,13 +99,94 @@ Unsolved constraints` None, None, ), + Item.Labeled("Error", "error", RichText.string("Unsolved constraints"), None, None), + ] + Assert.deep_equal(actual, expected) + }) +}) + +describe_only("when running Emacs__Parser2.parseError", () => { + it("should should parse errors + warnings", () => { + let raw = ` +———— Error ————————————————————————————————————————————————— +/Users/banacorn/agda/examples/A.agda:15,1-2 +The right-hand side can only be omitted if there is an absurd +pattern, () or {}, in the left-hand side. +when checking that the clause a has type _8 + +———— Warning(s) ———————————————————————————————————————————— +/Users/banacorn/agda/examples/A.agda:17,1-8 +The following names are declared but not accompanied by a +definition: boo +/Users/banacorn/agda/examples/A.agda:9,1-10 +Unreachable clause +when checking the definition of _+_ +` + let actual = Emacs__Parser2.parseError(raw) + let expected = [ Item.Labeled( "Error", "error", - RichText.string("Unsolved constraints"), + RichText.concatMany([ + RichText.string(""), + RichText.srcLoc( + Common.AgdaRange.Range( + Some("/Users/banacorn/agda/examples/A.agda"), + [ + { + start: {col: 1, line: 15, pos: 0}, + end_: {col: 2, line: 15, pos: 0}, + }, + ], + ), + ), + RichText.string("\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8"), + ]), None, None, - ) + ), + Item.Labeled( + "Warning", + "warning", + RichText.concatMany([ + RichText.string(""), + RichText.srcLoc( + Common.AgdaRange.Range( + Some("/Users/banacorn/agda/examples/A.agda"), + [ + { + start: {col: 1, line: 9, pos: 0}, + end_: {col: 10, line: 9, pos: 0}, + }, + ], + ), + ), + RichText.string("\nUnreachable clause\nwhen checking the definition of _+_"), + ]), + None, + None, + ), + Item.Labeled( + "Warning", + "warning", + RichText.concatMany([ + RichText.string(""), + RichText.srcLoc( + Common.AgdaRange.Range( + Some("/Users/banacorn/agda/examples/A.agda"), + [ + { + start: {col: 1, line: 17, pos: 0}, + end_: {col: 8, line: 17, pos: 0}, + }, + ], + ), + ), + RichText.string("\nThe following names are declared but not accompanied by a\ndefinition: boo"), + ]), + None, + None, + ), ] Assert.deep_equal(actual, expected) }) From 1aa564a2b58fbfe6a914750568626e60d7ed3299 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sat, 2 Dec 2023 00:58:12 +0800 Subject: [PATCH 024/109] [ fix ] Parser for parsing Info_Error from EmacsTop --- .../src/View/Panel/Emacs/Emacs__Parser2.bs.js | 48 +++++++++--------- .../tests/Parser/Test__Parser__Emacs2.bs.js | 36 +++++++++++++- src/View/Panel/Emacs/Emacs__Parser2.res | 42 +++++++++------- test/tests/Parser/Test__Parser__Emacs2.res | 49 ++++++++++++++++--- 4 files changed, 124 insertions(+), 51 deletions(-) diff --git a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js index 762ece2e..77707f1f 100644 --- a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js +++ b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js @@ -63,9 +63,18 @@ function partiteWarningsOrErrors(xs, key) { function parseError(raw) { var lines = Js_string.split("\n", raw); var partial_arg = /^\u2014{4} Error/; - var hasBothErrorsAndWarnings = Belt_Option.isSome(Belt_Option.map(Belt_Array.get(lines, 0), (function (param) { + var hasBothErrorsAndWarnings = Belt_Option.isSome(Belt_Option.flatMap(Belt_Array.get(lines, 0), (function (param) { return Js_string.match_(partial_arg, param); }))); + var markWarningStart = function (line) { + return Belt_Option.isSome(Curry._1(Common$AgdaModeVscode.AgdaRange.parse, line)); + }; + var glueBack = function (xs) { + var partial_arg = /at$/; + return Belt_Option.isSome(Belt_Option.flatMap(Belt_Array.get(xs, xs.length - 1 | 0), (function (param) { + return Js_string.match_(partial_arg, param); + }))); + }; var dictionary; if (hasBothErrorsAndWarnings) { var isWarning = function (line) { @@ -80,31 +89,24 @@ function parseError(raw) { return ; } }; - dictionary = Emacs__Parser$AgdaModeVscode.Dict.partite(lines, predicate); + dictionary = Emacs__Parser$AgdaModeVscode.Dict.update(Emacs__Parser$AgdaModeVscode.Dict.update(Emacs__Parser$AgdaModeVscode.Dict.partite(lines, predicate), "errors", (function (xs) { + return [xs.slice(1).join("\n")]; + })), "warnings", (function (xs) { + return Belt_Array.map(Emacs__Parser$AgdaModeVscode.Array_.mergeWithNext(Emacs__Parser$AgdaModeVscode.Array_.partite(xs.slice(1), markWarningStart), glueBack), (function (param) { + return Js_array.joinWith("\n", param); + })); + })); } else { - dictionary = Emacs__Parser$AgdaModeVscode.Dict.partite(lines, (function (param) { - if (param[1] === 0) { - return "errors"; - } - + dictionary = Emacs__Parser$AgdaModeVscode.Dict.update(Emacs__Parser$AgdaModeVscode.Dict.partite(lines, (function (param) { + if (param[1] === 0) { + return "errors"; + } + + })), "errors", (function (xs) { + return [xs.join("\n")]; })); } - var markWarningStart = function (line) { - return Belt_Option.isSome(Curry._1(Common$AgdaModeVscode.AgdaRange.parse, line)); - }; - var glueBack = function (xs) { - var partial_arg = /at$/; - return Belt_Option.isSome(Belt_Option.flatMap(Belt_Array.get(xs, xs.length - 1 | 0), (function (param) { - return Js_string.match_(partial_arg, param); - }))); - }; - return Js_array.concatMany(Belt_Array.map(Js_dict.entries(Emacs__Parser$AgdaModeVscode.Dict.update(Emacs__Parser$AgdaModeVscode.Dict.update(dictionary, "errors", (function (xs) { - return [xs.slice(1).join("\n")]; - })), "warnings", (function (xs) { - return Belt_Array.map(Emacs__Parser$AgdaModeVscode.Array_.mergeWithNext(Emacs__Parser$AgdaModeVscode.Array_.partite(xs.slice(1), markWarningStart), glueBack), (function (param) { - return Js_array.joinWith("\n", param); - })); - }))), (function (param) { + return Js_array.concatMany(Belt_Array.map(Js_dict.entries(dictionary), (function (param) { var lines = param[1]; switch (param[0]) { case "errors" : diff --git a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js index f97ca33d..655849f9 100644 --- a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js @@ -175,8 +175,40 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseAllGoalsWarnings")(unde })); Mocha$BsMocha.describe_only("when running Emacs__Parser2.parseError")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.it("should should parse errors + warnings")(undefined, undefined, undefined, (function (param) { - var actual = Emacs__Parser2$AgdaModeVscode.parseError("\n———— Error —————————————————————————————————————————————————\n/Users/banacorn/agda/examples/A.agda:15,1-2\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8\n\n———— Warning(s) ————————————————————————————————————————————\n/Users/banacorn/agda/examples/A.agda:17,1-8\nThe following names are declared but not accompanied by a\ndefinition: boo\n/Users/banacorn/agda/examples/A.agda:9,1-10\nUnreachable clause\nwhen checking the definition of _+_\n"); + Mocha$BsMocha.it("should should parse an error only")(undefined, undefined, undefined, (function (param) { + var actual = Emacs__Parser2$AgdaModeVscode.parseError("/Users/banacorn/agda/examples/A.agda:15,1-2\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8"); + var expected = [{ + TAG: 0, + _0: "Error", + _1: "error", + _2: RichText$AgdaModeVscode.concatMany([ + RichText$AgdaModeVscode.string(""), + RichText$AgdaModeVscode.srcLoc({ + _0: "/Users/banacorn/agda/examples/A.agda", + _1: [{ + start: { + line: 15, + col: 1, + pos: 0 + }, + end_: { + line: 15, + col: 2, + pos: 0 + } + }], + [Symbol.for("name")]: "Range" + }), + RichText$AgdaModeVscode.string("\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8") + ]), + _3: undefined, + _4: undefined, + [Symbol.for("name")]: "Labeled" + }]; + Assert$BsMocha.deep_equal(undefined, actual, expected); + })); + Mocha$BsMocha.it("should should parse an error + warnings")(undefined, undefined, undefined, (function (param) { + var actual = Emacs__Parser2$AgdaModeVscode.parseError("———— Error —————————————————————————————————————————————————\n/Users/banacorn/agda/examples/A.agda:15,1-2\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8\n\n———— Warning(s) ————————————————————————————————————————————\n/Users/banacorn/agda/examples/A.agda:17,1-8\nThe following names are declared but not accompanied by a\ndefinition: boo\n/Users/banacorn/agda/examples/A.agda:9,1-10\nUnreachable clause\nwhen checking the definition of _+_"); var expected = [ { TAG: 0, diff --git a/src/View/Panel/Emacs/Emacs__Parser2.res b/src/View/Panel/Emacs/Emacs__Parser2.res index 6d3fbb5a..7469ec00 100644 --- a/src/View/Panel/Emacs/Emacs__Parser2.res +++ b/src/View/Panel/Emacs/Emacs__Parser2.res @@ -55,7 +55,11 @@ let parseError: string => array = raw => { // ... let lines = Js.String.split("\n", raw) let hasBothErrorsAndWarnings = - lines[0]->Option.map(Js.String.match_(%re("/^\u2014{4} Error/")))->Option.isSome + lines[0]->Option.flatMap(Js.String.match_(%re("/^\u2014{4} Error/")))->Option.isSome + let markWarningStart = line => line->Common.AgdaRange.parse->Option.isSome + // If the previous warning of error ends with "at", then we have to glue it back + let glueBack = xs => + xs[Array.length(xs) - 1]->Option.flatMap(Js.String.match_(%re("/at$/")))->Option.isSome let dictionary = if hasBothErrorsAndWarnings { let isWarning = line => Js.String.match_(%re("/^\u2014{4} Warning\(s\)/"), line)->Option.isSome @@ -68,28 +72,28 @@ let parseError: string => array = raw => { None } } - lines->Emacs__Parser.Dict.partite(predicate) + lines + ->Emacs__Parser.Dict.partite(predicate) + // remove the delimeter in the first line of errors and unlines the rest + ->Emacs__Parser.Dict.update("errors", xs => [ + xs->Js.Array2.sliceFrom(1)->Js.Array2.joinWith("\n"), + ]) + // remove the delimeter in the first line of warnings and unlines the rest + ->Emacs__Parser.Dict.update("warnings", xs => + xs + ->Js.Array2.sliceFrom(1) + ->Array_.partite(markWarningStart) + ->Array_.mergeWithNext(glueBack) + ->Array.map(Js.Array.joinWith("\n")) + ) } else { - lines->Emacs__Parser.Dict.partite(((_, i)) => i === 0 ? Some("errors") : None) + lines + ->Emacs__Parser.Dict.partite(((_, i)) => i === 0 ? Some("errors") : None) + // unlines + ->Emacs__Parser.Dict.update("errors", xs => [xs->Js.Array2.joinWith("\n")]) } - let markWarningStart = line => line->Common.AgdaRange.parse->Option.isSome - // If the previous warning of error ends with "at", then we have to glue it back - let glueBack = xs => - xs[Array.length(xs) - 1]->Option.flatMap(Js.String.match_(%re("/at$/")))->Option.isSome // convert entries in the dictionary to Items for rendering dictionary - // remove the delimeter in the first line of errors and unlines the rest - ->Emacs__Parser.Dict.update("errors", xs => [ - xs->Js.Array2.sliceFrom(1)->Js.Array2.joinWith("\n"), - ]) - // remove the delimeter in the first line of warnings and unlines the rest - ->Emacs__Parser.Dict.update("warnings", xs => - xs - ->Js.Array2.sliceFrom(1) - ->Array_.partite(markWarningStart) - ->Array_.mergeWithNext(glueBack) - ->Array.map(Js.Array.joinWith("\n")) - ) ->Js.Dict.entries ->Array.map(((key, lines)) => switch key { diff --git a/test/tests/Parser/Test__Parser__Emacs2.res b/test/tests/Parser/Test__Parser__Emacs2.res index 3eee0bf9..6631ee0d 100644 --- a/test/tests/Parser/Test__Parser__Emacs2.res +++ b/test/tests/Parser/Test__Parser__Emacs2.res @@ -106,9 +106,41 @@ Unsolved constraints` }) describe_only("when running Emacs__Parser2.parseError", () => { - it("should should parse errors + warnings", () => { - let raw = ` -———— Error ————————————————————————————————————————————————— + it("should should parse an error only", () => { + let raw = `/Users/banacorn/agda/examples/A.agda:15,1-2 +The right-hand side can only be omitted if there is an absurd +pattern, () or {}, in the left-hand side. +when checking that the clause a has type _8` + let actual = Emacs__Parser2.parseError(raw) + let expected = [ + Item.Labeled( + "Error", + "error", + RichText.concatMany([ + RichText.string(""), + RichText.srcLoc( + Common.AgdaRange.Range( + Some("/Users/banacorn/agda/examples/A.agda"), + [ + { + start: {col: 1, line: 15, pos: 0}, + end_: {col: 2, line: 15, pos: 0}, + }, + ], + ), + ), + RichText.string( + "\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8", + ), + ]), + None, + None, + ), + ] + Assert.deep_equal(actual, expected) + }) + it("should should parse an error + warnings", () => { + let raw = `———— Error ————————————————————————————————————————————————— /Users/banacorn/agda/examples/A.agda:15,1-2 The right-hand side can only be omitted if there is an absurd pattern, () or {}, in the left-hand side. @@ -120,8 +152,7 @@ The following names are declared but not accompanied by a definition: boo /Users/banacorn/agda/examples/A.agda:9,1-10 Unreachable clause -when checking the definition of _+_ -` +when checking the definition of _+_` let actual = Emacs__Parser2.parseError(raw) let expected = [ Item.Labeled( @@ -140,7 +171,9 @@ when checking the definition of _+_ ], ), ), - RichText.string("\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8"), + RichText.string( + "\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8", + ), ]), None, None, @@ -182,7 +215,9 @@ when checking the definition of _+_ ], ), ), - RichText.string("\nThe following names are declared but not accompanied by a\ndefinition: boo"), + RichText.string( + "\nThe following names are declared but not accompanied by a\ndefinition: boo", + ), ]), None, None, From 9c6d971a2f8053b44faec3e69810627431838abc Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sun, 3 Dec 2023 00:11:43 +0800 Subject: [PATCH 025/109] [ fix ] Put Rescript/LESS/Webpack to watch mode all at the same time with "yarn dev" --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1dcb1e37..081723b6 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "scripts": { "clean": "npx rescript clean", "build": "npx rescript build -with-deps && npx lessc style/style.less dist/style.css && webpack --mode development", - "dev": "npx less-watch-compiler style/ dist/ && webpack --mode development --watch", + "dev": "npx rescript build -w & npx less-watch-compiler style/ dist/ & webpack --mode development --watch", "vscode:prepublish": "npx rescript && npx lessc style/style.less dist/style.css && webpack --mode production", "test": "node lib/js/test/RunTestFromCLI.bs.js", "vfx-dry-run": "npm list --production --parseable --depth=99999 --loglevel=error" From bb91bf078f44a74cb0895cd59a0dc63acea74dee Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sun, 3 Dec 2023 14:21:37 +0800 Subject: [PATCH 026/109] [ change ] Shrink the font size of the header and increase its height a bit instead --- style/style.less | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/style/style.less b/style/style.less index ef044a9d..acb78ad2 100644 --- a/style/style.less +++ b/style/style.less @@ -6,7 +6,7 @@ @padding: .3rem; -@header-height: 1rem; +@header-height: 1.5rem; @left-border-width: 0.2rem; @@ -123,7 +123,7 @@ background: @header-background; line-height: @header-height; - font-size : 125%; + font-size : 100%; font-weight: bold; &.success { From de9adbb7274f92353e67bab65f80662257bd61ed Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sun, 3 Dec 2023 14:33:25 +0800 Subject: [PATCH 027/109] [ change ] Make the key board more compact also --- style/style.less | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/style/style.less b/style/style.less index acb78ad2..ce75362c 100644 --- a/style/style.less +++ b/style/style.less @@ -27,7 +27,7 @@ } .agda-mode-keyboard { - @button-height: 1.5rem; + @button-height: 1rem; @button-margin: 0.2rem; margin: 0 @root-padding; @@ -56,8 +56,8 @@ display : flex; // dimensions padding : @padding 0; - min-height : 2rem; - line-height: 2rem; + min-height : 1.5rem; + line-height: 1.5rem; .agda-mode-keyboard-sequence { padding : 0rem @padding; @@ -85,6 +85,8 @@ .agda-mode-key { align-self: center; + font-size: 75%; + background: @input-background; color : @foreground; @@ -293,7 +295,7 @@ // the total height of .agda-mode-prompt should be the same as @header-height .agda-mode-prompt { white-space: pre; - padding : 0 @padding @padding @padding; + margin : 0 @root-padding; input { // Issue #31 - make the input box larger From 3021ca8356aa29b5726b54bfa7a3888a7e47f394 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sun, 3 Dec 2023 14:36:46 +0800 Subject: [PATCH 028/109] [ change ] Remove now defunct "agdaMode" context key for keybindings --- lib/js/src/Main.bs.js | 2 -- src/Main.res | 5 ----- 2 files changed, 7 deletions(-) diff --git a/lib/js/src/Main.bs.js b/lib/js/src/Main.bs.js index cab69f4f..6b0e4bc7 100644 --- a/lib/js/src/Main.bs.js +++ b/lib/js/src/Main.bs.js @@ -64,7 +64,6 @@ var Inputs = { }; function initialize(debugChan, extensionPath, globalStoragePath, editor, fileName) { - Vscode.commands.executeCommand("setContext", "agdaMode", true); var panel = Singleton$AgdaModeVscode.Panel.make(extensionPath); $$Promise.get(WebviewPanel$AgdaModeVscode.onceDestroyed(panel), (function (param) { Registry$AgdaModeVscode.removeAndDestroyAll(undefined); @@ -154,7 +153,6 @@ function registerDocumentSemanticTokensProvider(param) { function finalize(isRestart) { if (Registry$AgdaModeVscode.isEmpty(undefined)) { - Vscode.commands.executeCommand("setContext", "agdaMode", false); Singleton$AgdaModeVscode.Panel.destroy(undefined); if (!isRestart) { Singleton$AgdaModeVscode.DebugBuffer.destroy(undefined); diff --git a/src/Main.res b/src/Main.res index 6517c316..09cfcb82 100644 --- a/src/Main.res +++ b/src/Main.res @@ -41,9 +41,6 @@ module Inputs: { } let initialize = (debugChan, extensionPath, globalStoragePath, editor, fileName) => { - // keybinding: so that most of the commands will work only after agda-mode:load - VSCode.Commands.setContext("agdaMode", true)->ignore - let panel = Singleton.Panel.make(extensionPath) // if the panel is destroyed, destroy all every State in the Registry WebviewPanel.onceDestroyed(panel)->Promise.get(() => Registry.removeAndDestroyAll()->ignore) @@ -190,8 +187,6 @@ let registerDocumentSemanticTokensProvider = () => { let finalize = isRestart => { // after the last Agda file has benn closed if Registry.isEmpty() { - // keybinding: disable most of the command bindings - VSCode.Commands.setContext("agdaMode", false)->ignore // destroy views accordingly Singleton.Panel.destroy() From 34606763bfee29f460298247d7bd6fe0c55d5b18 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sun, 3 Dec 2023 15:27:16 +0800 Subject: [PATCH 029/109] [ change ] CHANGELOG --- CHANGELOG.md | 14 ++++++++++++++ .../test/tests/Parser/Test__Parser__Emacs2.bs.js | 2 +- test/tests/Parser/Test__Parser__Agda.res | 14 -------------- test/tests/Parser/Test__Parser__Emacs2.res | 2 +- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 614f1f66..a8ace9d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,21 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html) +## v0.4.3 - 2023-12-03 + +### Changed +- Some adjustments to the UI +- Update ReScript to v10.1.4 +- Update language-server-mule to v0.3.0 + +### Fixed +- Remove unnecessary escape characters from regular expressions & string literal +- Better parsing of display info from Agda EmacsTop + ## v0.4.2 - 2023-11-20 + +### Changed + - #167: Make the font size of Agda buffer the same as editors - #166: Improve debug buffer: Not printing modules checked and verbosity now diff --git a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js index 655849f9..384059c7 100644 --- a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js @@ -174,7 +174,7 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseAllGoalsWarnings")(unde })); })); -Mocha$BsMocha.describe_only("when running Emacs__Parser2.parseError")(undefined, undefined, undefined, (function (param) { +Mocha$BsMocha.describe("when running Emacs__Parser2.parseError")(undefined, undefined, undefined, (function (param) { Mocha$BsMocha.it("should should parse an error only")(undefined, undefined, undefined, (function (param) { var actual = Emacs__Parser2$AgdaModeVscode.parseError("/Users/banacorn/agda/examples/A.agda:15,1-2\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8"); var expected = [{ diff --git a/test/tests/Parser/Test__Parser__Agda.res b/test/tests/Parser/Test__Parser__Agda.res index e3c25573..db99711d 100644 --- a/test/tests/Parser/Test__Parser__Agda.res +++ b/test/tests/Parser/Test__Parser__Agda.res @@ -48,17 +48,3 @@ describe("when running Agda.OutputConstraint.parse", () => { Assert.deep_equal(actual, expected) }) }) - -// describe_only("when parsing DisplayInfo", () => { -// describe("Text", () => { -// it({j|should work just fine|j}, () => { -// let input = {j|1,1-2 -// Not in scope: -// c at 1,1-2 -// when scope checking c |j}; -// let actual = RichText.parse(input); -// let expected = Component.Text.Text([||]); -// Assert.equal(expected, actual); -// }) -// }) -// }); diff --git a/test/tests/Parser/Test__Parser__Emacs2.res b/test/tests/Parser/Test__Parser__Emacs2.res index 6631ee0d..889a144e 100644 --- a/test/tests/Parser/Test__Parser__Emacs2.res +++ b/test/tests/Parser/Test__Parser__Emacs2.res @@ -105,7 +105,7 @@ Unsolved constraints` }) }) -describe_only("when running Emacs__Parser2.parseError", () => { +describe("when running Emacs__Parser2.parseError", () => { it("should should parse an error only", () => { let raw = `/Users/banacorn/agda/examples/A.agda:15,1-2 The right-hand side can only be omitted if there is an absurd From 4f5ae63c4589ac0b88985568475540c94dbae41a Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sun, 3 Dec 2023 15:51:42 +0800 Subject: [PATCH 030/109] [ dep ] Lock dependencies & bump version to v0.4.3 --- package-lock.json | 9270 +++++++++++++++++---------------------------- package.json | 12 +- 2 files changed, 3413 insertions(+), 5869 deletions(-) diff --git a/package-lock.json b/package-lock.json index 002e6e9a..5dc7b570 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,7 +1,7 @@ { "name": "agda-mode", "version": "0.4.2", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { @@ -11,16 +11,15 @@ "@datastructures-js/binary-search-tree": "^4.3.0", "@glennsl/bs-json": "github:banacorn/bs-json#0c900d3", "@rescript/react": "^0.10.3", - "bs-nd": "^0.1.5", "compare-versions": "^3.5.1", "eventemitter3": ">=4.0.0", "getos": "^3.2.1", - "language-server-mule": "github:banacorn/language-server-mule#v0.2.3", + "language-server-mule": "github:banacorn/language-server-mule#v0.3.3", "react": "^16.9.0", "react-dom": "^16.9.0", - "reason-nodejs": "github:banacorn/reason-nodejs#temp", "reason-promise": ">=1.1.0", - "rescript": "^9.1.4", + "rescript": "^10.1.4", + "rescript-nodejs": "^15.0.0", "rescript-vscode": "github:banacorn/rescript-vscode#v0.0.17", "rescript-webapi": ">=0.2.0", "untildify": "^4.0.0", @@ -33,7 +32,7 @@ "less": "^4.1.1", "less-loader": "^7.0.2", "less-watch-compiler": "^1.14.6", - "mocha": "^7.1.2", + "mocha": "^10.2.0", "vscode-test": "^1.3.0", "webpack": "^5.76.0", "webpack-cli": "^4.2.0" @@ -45,13 +44,15 @@ "node_modules/@datastructures-js/binary-search-tree": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/@datastructures-js/binary-search-tree/-/binary-search-tree-4.3.2.tgz", - "integrity": "sha512-fZV3GoZAPxfgGTky7Q+5oiMUtLhQoHxSlJt3DmUPbl+1pMpuopOSG/MymdcruWOBQU90kSzo0lN+3gmSaEYCTw==" + "integrity": "sha512-fZV3GoZAPxfgGTky7Q+5oiMUtLhQoHxSlJt3DmUPbl+1pMpuopOSG/MymdcruWOBQU90kSzo0lN+3gmSaEYCTw==", + "license": "MIT" }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } @@ -60,7 +61,8 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@glennsl/bs-json": { "version": "5.0.2", @@ -68,10 +70,11 @@ "license": "(LGPL-3.0 OR MPL-2.0)" }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -82,10 +85,11 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -95,34 +99,38 @@ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@nodelib/fs.scandir": { @@ -130,6 +138,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -143,6 +152,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -152,6 +162,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -165,16 +176,34 @@ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", "dev": true, + "license": "ISC", "dependencies": { "@gar/promisify": "^1.0.1", "semver": "^7.3.5" } }, + "node_modules/@npmcli/fs/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@npmcli/move-file": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", "dev": true, + "license": "MIT", "dependencies": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" @@ -187,6 +216,7 @@ "version": "0.10.3", "resolved": "https://registry.npmjs.org/@rescript/react/-/react-0.10.3.tgz", "integrity": "sha512-Lf9rzrR3bQPKJjOK3PBRa/B3xrJ7CqQ1HYr9VHPVxJidarIJJFZBhj0Dg1uZURX+Wg/xiP0PHFxXmdj2bK8Vxw==", + "license": "MIT", "peerDependencies": { "react": ">=16.8.1", "react-dom": ">=16.8.1" @@ -197,191 +227,215 @@ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/@types/eslint": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", - "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", + "version": "8.44.8", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.8.tgz", + "integrity": "sha512-4K8GavROwhrYl2QXDXm0Rv9epkA8GBFu0EI+XrrnnuCl7u8CWBRusX7fXJfanhZTDWSAL24gDI/UqXyUM0Injw==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" } }, "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, + "license": "MIT", "dependencies": { "@types/eslint": "*", "@types/estree": "*" } }, "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true, + "license": "MIT" }, "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { - "version": "18.6.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.4.tgz", - "integrity": "sha512-I4BD3L+6AWiUobfxZ49DlU43gtI+FTHSv9pE2Zekg6KjMpre4ByusaljW3vYSLJrvQ1ck1hUaeVu8HVlY3vzHg==", - "dev": true + "version": "20.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.2.tgz", + "integrity": "sha512-37MXfxkb0vuIlRKHNxwCkb60PNBpR94u4efQuN4JgIAm66zfCDXGSAFCef9XUWFovX2R1ok6Z7MHhtdVXXkkIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, + "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, @@ -390,6 +444,7 @@ "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", "dev": true, + "license": "MIT", "peerDependencies": { "webpack": "4.x.x || 5.x.x", "webpack-cli": "4.x.x" @@ -400,6 +455,7 @@ "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", "dev": true, + "license": "MIT", "dependencies": { "envinfo": "^7.7.3" }, @@ -412,6 +468,7 @@ "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", "dev": true, + "license": "MIT", "peerDependencies": { "webpack-cli": "4.x.x" }, @@ -425,19 +482,22 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -446,10 +506,11 @@ } }, "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^8" } @@ -459,6 +520,7 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "4" }, @@ -466,34 +528,12 @@ "node": ">= 6.0.0" } }, - "node_modules/agent-base/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/agent-base/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -507,6 +547,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -523,6 +564,7 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, + "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } @@ -532,44 +574,48 @@ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", "dev": true, + "license": "BSD-3-Clause OR MIT", "engines": { "node": ">=0.4.2" } }, "node_modules/ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, "engines": { "node": ">=6" } }, "node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "dependencies": { "normalize-path": "^3.0.0", @@ -580,12 +626,22 @@ } }, "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", "dev": true, "dependencies": { - "sprintf-js": "~1.0.2" + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/array-union": { @@ -593,19 +649,20 @@ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/array.prototype.reduce": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz", - "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz", + "integrity": "sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-array-method-boxes-properly": "^1.0.0", "is-string": "^1.0.7" }, @@ -616,20 +673,56 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" }, "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "license": "Unlicense", "engines": { "node": ">=0.6" } @@ -639,6 +732,7 @@ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -647,12 +741,10 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "license": "MIT", "dependencies": { "buffers": "~0.1.1", "chainsaw": "~0.1.0" - }, - "engines": { - "node": "*" } }, "node_modules/binary-extensions": { @@ -667,12 +759,14 @@ "node_modules/bluebird": { "version": "3.4.7", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", + "license": "MIT" }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -683,6 +777,7 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.0.1" }, @@ -694,12 +789,13 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/browserslist": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", - "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", "dev": true, "funding": [ { @@ -709,13 +805,18 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001370", - "electron-to-chromium": "^1.4.202", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.5" + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" @@ -733,329 +834,337 @@ "mocha": "^6.2.0" } }, - "node_modules/bs-mocha/node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "node_modules/bs-mocha/node_modules/ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, "engines": { - "node": "*" + "node": ">=6" } }, - "node_modules/bs-mocha/node_modules/log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "node_modules/bs-mocha/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/bs-mocha/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "dependencies": { - "chalk": "^2.0.1" + "color-convert": "^1.9.0" }, "engines": { "node": ">=4" } }, - "node_modules/bs-mocha/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "node_modules/bs-mocha/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" - }, + "sprintf-js": "~1.0.2" + } + }, + "node_modules/bs-mocha/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, "engines": { - "node": "*" + "node": ">=6" } }, - "node_modules/bs-mocha/node_modules/mkdirp": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", - "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", - "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", + "node_modules/bs-mocha/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { - "minimist": "^1.2.5" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, - "bin": { - "mkdirp": "bin/cmd.js" + "engines": { + "node": ">=4" } }, - "node_modules/bs-mocha/node_modules/mocha": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.3.tgz", - "integrity": "sha512-0R/3FvjIGH3eEuG17ccFPk117XL2rWxatr81a57D+r/x2uTYZRbdZ4oVidEUMh2W2TJDa7MdAb12Lm2/qrKajg==", - "dev": true, - "dependencies": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "2.2.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.4", - "ms": "2.1.1", - "node-environment-flags": "1.0.5", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" + "node_modules/bs-mocha/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" }, "engines": { - "node": ">= 6.0.0" + "node": ">=4" } }, - "node_modules/bs-mocha/node_modules/node-environment-flags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", - "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==", + "node_modules/bs-mocha/node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "dependencies": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" } }, - "node_modules/bs-mocha/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "node_modules/bs-mocha/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "bin": { - "semver": "bin/semver" + "dependencies": { + "color-name": "1.1.3" } }, - "node_modules/bs-nd": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/bs-nd/-/bs-nd-0.1.5.tgz", - "integrity": "sha512-YiIIpMiQ4SvoYZXVWWMMhQIPOmMekdvamsH9FoyHw0BicH/45Vyr9N/JawbEosZF7NV+1INlosljEQDajbmJfA==" + "node_modules/bs-mocha/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, - "node_modules/bs-platform": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/bs-platform/-/bs-platform-9.0.2.tgz", - "integrity": "sha512-Ye9JqJ4Oa7mcjjoOVRYI8Uc2Cf8N7jQLWDcdUplY7996d/YErSR7WitmV7XnSwr4EvdrbwjEsg1NxNjUQv3ChA==", - "hasInstallScript": true, - "bin": { - "bsb": "bsb", - "bsc": "bsc", - "bsrefmt": "bsrefmt", - "bstracing": "lib/bstracing" + "node_modules/bs-mocha/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "dev": true, + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "node_modules/bs-mocha/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, "engines": { - "node": ">=0.10" + "node": ">=0.10.0" } }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "node_modules/bs-mocha/node_modules/diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true, "engines": { - "node": ">=0.2.0" + "node": ">=0.3.1" } }, - "node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "node_modules/bs-mocha/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/bs-mocha/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, "engines": { - "node": ">= 10" + "node": ">=0.8.0" } }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/bs-mocha/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "locate-path": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, "engines": { "node": ">=6" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001374", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001374.tgz", - "integrity": "sha512-mWvzatRx3w+j5wx/mpFN5v5twlPrabG8NqX2c6e45LCpymdoGqNvRkRutFUqpRTXKFQFNQJasvK0YT7suW6/Hw==", + "node_modules/bs-mocha/node_modules/flat": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", + "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] + "dependencies": { + "is-buffer": "~2.0.3" + }, + "bin": { + "flat": "cli.js" + } }, - "node_modules/chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "node_modules/bs-mocha/node_modules/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, "dependencies": { - "traverse": ">=0.3.0 <0.4" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { "node": "*" } }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/bs-mocha/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, "engines": { "node": ">=4" } }, - "node_modules/chalk/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/bs-mocha/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, "engines": { "node": ">=4" } }, - "node_modules/chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "node_modules/bs-mocha/node_modules/js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, "dependencies": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" - }, - "engines": { - "node": ">= 8.10.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "optionalDependencies": { - "fsevents": "~2.1.1" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "node_modules/bs-mocha/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "node_modules/bs-mocha/node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", "dev": true, + "dependencies": { + "chalk": "^2.0.1" + }, "engines": { - "node": ">=6.0" + "node": ">=4" } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "node_modules/bs-mocha/node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=6" + "node": "*" } }, - "node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "node_modules/bs-mocha/node_modules/mkdirp": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", + "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", "dev": true, "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "node_modules/bs-mocha/node_modules/mocha": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.3.tgz", + "integrity": "sha512-0R/3FvjIGH3eEuG17ccFPk117XL2rWxatr81a57D+r/x2uTYZRbdZ4oVidEUMh2W2TJDa7MdAb12Lm2/qrKajg==", + "dev": true, + "dependencies": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "2.2.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.4", + "ms": "2.1.1", + "node-environment-flags": "1.0.5", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/bs-mocha/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "node_modules/bs-mocha/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, "engines": { "node": ">=6" } }, - "node_modules/cliui/node_modules/string-width": { + "node_modules/bs-mocha/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/bs-mocha/node_modules/string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", @@ -1069,7 +1178,7 @@ "node": ">=6" } }, - "node_modules/cliui/node_modules/strip-ansi": { + "node_modules/bs-mocha/node_modules/strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", @@ -1081,4163 +1190,133 @@ "node": ">=6" } }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "node_modules/bs-mocha/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/bs-mocha/node_modules/supports-color": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", "dev": true, "dependencies": { - "color-name": "1.1.3" + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, - "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "node_modules/bs-mocha/node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, "engines": { - "node": ">= 12" + "node": ">=6" } }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "node_modules/bs-mocha/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, - "node_modules/compare-versions": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", - "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/copy-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "node_modules/bs-mocha/node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "dependencies": { - "is-what": "^3.14.1" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" } }, - "node_modules/copy-webpack-plugin": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.4.1.tgz", - "integrity": "sha512-MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA==", + "node_modules/bs-mocha/node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "dependencies": { - "cacache": "^15.0.5", - "fast-glob": "^3.2.4", - "find-cache-dir": "^3.3.1", - "glob-parent": "^5.1.1", - "globby": "^11.0.1", - "loader-utils": "^2.0.0", - "normalize-path": "^3.0.0", - "p-limit": "^3.0.2", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "webpack-sources": "^1.4.3" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/bs-mocha/node_modules/yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" }, "engines": { - "node": ">= 8" + "node": ">=6" } }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, + "node_modules/bs-platform": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/bs-platform/-/bs-platform-9.0.2.tgz", + "integrity": "sha512-Ye9JqJ4Oa7mcjjoOVRYI8Uc2Cf8N7jQLWDcdUplY7996d/YErSR7WitmV7XnSwr4EvdrbwjEsg1NxNjUQv3ChA==", + "hasInstallScript": true, + "license": "SEE LICENSE IN LICENSE", "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" + "bsb": "bsb", + "bsc": "bsc", + "bsrefmt": "bsrefmt", + "bstracing": "lib/bstracing" } }, - "node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true, - "dependencies": { - "ms": "^2.1.1" - } + "license": "MIT" }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", - "dev": true - }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.211", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.211.tgz", - "integrity": "sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "optional": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/es-abstract": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", - "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "regexp.prototype.flags": "^1.4.3", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-abstract/node_modules/object.assign": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.3.tgz", - "integrity": "sha512-ZFJnX3zltyjcYJL0RoCJuzb+11zWGyaDbjgxZbdV7rFEcHQuYxrZqhow67aA7xpes6LhojyFDaBKAFfogQrikA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/flat": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", - "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", - "dev": true, - "dependencies": { - "is-buffer": "~2.0.3" - }, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "deprecated": "\"Please update to latest v2.3 or v2.2\"", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/fstream/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/fstream/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/getos": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", - "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", - "dependencies": { - "async": "^3.2.0" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dev": true, - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "engines": { - "node": ">=4.x" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/http-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/https-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", - "dev": true, - "optional": true, - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/language-server-mule": { - "version": "0.2.3", - "resolved": "git+ssh://git@github.com/banacorn/language-server-mule.git#2caa861918e2bceda9f6c004a8a01b69c9dc8cce", - "license": "MIT", - "dependencies": { - "@glennsl/bs-json": "github:banacorn/bs-json#0c900d3", - "eventemitter3": "^4.0.7", - "unzipper": "^0.10.11", - "vscode-languageclient": "^8.0.0-next.1" - } - }, - "node_modules/less": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", - "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", - "dev": true, - "dependencies": { - "copy-anything": "^2.0.1", - "parse-node-version": "^1.0.1", - "tslib": "^2.3.0" - }, - "bin": { - "lessc": "bin/lessc" - }, - "engines": { - "node": ">=6" - }, - "optionalDependencies": { - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "needle": "^3.1.0", - "source-map": "~0.6.0" - } - }, - "node_modules/less-loader": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-7.3.0.tgz", - "integrity": "sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==", - "dev": true, - "dependencies": { - "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "less": "^3.5.0 || ^4.0.0", - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/less-watch-compiler": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/less-watch-compiler/-/less-watch-compiler-1.16.3.tgz", - "integrity": "sha512-cxGUt8YdPpPPB72w1dfzPVXML5JYgfExXbFvDfG5XBU9qvj6uVjwTY2qOgwvf09Au5p2RvmWVcNps/cMTojJNQ==", - "dev": true, - "dependencies": { - "amdefine": ">= 0.1.0", - "commander": "^8.0.0", - "extend": ">= 2.0.0", - "global": "^4.3.1", - "less": "^4.0.0", - "shelljs": ">= 0.4.0" - }, - "bin": { - "less-watch-compiler": "dist/less-watch-compiler.js" - } - }, - "node_modules/less/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "optional": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/less/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "optional": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "optional": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dev": true, - "dependencies": { - "dom-walk": "^0.1.0" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", - "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", - "dev": true, - "dependencies": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "chokidar": "3.3.0", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.5", - "ms": "2.1.1", - "node-environment-flags": "1.0.6", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha/node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mocha/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "node_modules/needle": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz", - "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", - "dev": true, - "optional": true, - "dependencies": { - "debug": "^3.2.6", - "iconv-lite": "^0.6.3", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/node-environment-flags": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", - "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", - "dev": true, - "dependencies": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - } - }, - "node_modules/node-environment-flags/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz", - "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==", - "dev": true, - "dependencies": { - "array.prototype.reduce": "^1.0.4", - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true, - "optional": true - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - }, - "peerDependencies": { - "react": "^16.14.0" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", - "dev": true, - "dependencies": { - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/reason-nodejs": { - "version": "13.0.0-beta.2", - "resolved": "git+ssh://git@github.com/banacorn/reason-nodejs.git#266080d84b820fc88319dd6dc63c98a2b3efe889", - "license": "MIT" - }, - "node_modules/reason-promise": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/reason-promise/-/reason-promise-1.1.5.tgz", - "integrity": "sha512-T4VI8e3WrQ30HbQcmQ8HvJPZckD4AeTcZ+1aNdpJ/pjjRwjlBy63hr4v8fMSID0/6kPh1KrhN+5+4n7MouoZKQ==" - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/rescript": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/rescript/-/rescript-9.1.4.tgz", - "integrity": "sha512-aXANK4IqecJzdnDpJUsU6pxMViCR5ogAxzuqS0mOr8TloMnzAjJFu63fjD6LCkWrKAhlMkFFzQvVQYaAaVkFXw==", - "hasInstallScript": true, - "bin": { - "bsc": "bsc", - "bsrefmt": "bsrefmt", - "bstracing": "lib/bstracing", - "rescript": "rescript" - } - }, - "node_modules/rescript-vscode": { - "version": "0.0.17", - "resolved": "git+ssh://git@github.com/banacorn/rescript-vscode.git#316ce927cd34f8a3ad7cc84b5d1fe6b97fa01e02", - "license": "MIT", - "dependencies": { - "bs-platform": ">=8.2.0", - "reason-promise": ">=1.1.0" - } - }, - "node_modules/rescript-webapi": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/rescript-webapi/-/rescript-webapi-0.6.1.tgz", - "integrity": "sha512-I/eeHOcsUfWbCf6u15zd+rKxMz9awSjjdRa8eFtl2X+HjDNs0mJxoC4uFFK9dIazYcmY2VpuK5TTpOPXvdkhDw==" - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "optional": true - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true, - "optional": true - }, - "node_modules/scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dev": true, - "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.7", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", - "engines": { - "node": "*" - } - }, - "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/unzipper": { - "version": "0.10.11", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", - "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", - "dependencies": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", - "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/vscode-codicons": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/vscode-codicons/-/vscode-codicons-0.0.7.tgz", - "integrity": "sha512-xqYypi4Ihth3bZgoE6961FYJBrmFErC+YouSC5Tn0pHqv0QSrP0PK++EIVNBi0I9Ted1OetZ3aWlNUWq1QaMBA==", - "deprecated": "This package is deprecated, please use @vscode/codicons https://www.npmjs.com/package/@vscode/codicons" - }, - "node_modules/vscode-jsonrpc": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.0.2.tgz", - "integrity": "sha512-RY7HwI/ydoC1Wwg4gJ3y6LpU9FJRZAUnTYMXthqhFXXu77ErDd/xkREpGuk4MyYkk4a+XDWAMqe0S3KkelYQEQ==", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/vscode-languageclient": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.0.2.tgz", - "integrity": "sha512-lHlthJtphG9gibGb/y72CKqQUxwPsMXijJVpHEC2bvbFqxmkj9LwQ3aGU9dwjBLqsX1S4KjShYppLvg1UJDF/Q==", - "dependencies": { - "minimatch": "^3.0.4", - "semver": "^7.3.5", - "vscode-languageserver-protocol": "3.17.2" - }, - "engines": { - "vscode": "^1.67.0" - } - }, - "node_modules/vscode-languageserver-protocol": { - "version": "3.17.2", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.2.tgz", - "integrity": "sha512-8kYisQ3z/SQ2kyjlNeQxbkkTNmVFoQCqkmGrzLH6A9ecPlgTbp3wDTnUNqaUxYr4vlAcloxx8zwy7G5WdguYNg==", - "dependencies": { - "vscode-jsonrpc": "8.0.2", - "vscode-languageserver-types": "3.17.2" - } - }, - "node_modules/vscode-languageserver-types": { - "version": "3.17.2", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2.tgz", - "integrity": "sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==" - }, - "node_modules/vscode-test": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.6.1.tgz", - "integrity": "sha512-086q88T2ca1k95mUzffvbzb7esqQNvJgiwY4h29ukPhFo8u+vXOOmelUoU5EQUHs3Of8+JuQ3oGdbVCqaxuTXA==", - "deprecated": "This package has been renamed to @vscode/test-electron, please update to the new name", - "dev": true, - "dependencies": { - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "rimraf": "^3.0.2", - "unzipper": "^0.10.11" - }, - "engines": { - "node": ">=8.9.3" - } - }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack": { - "version": "5.76.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz", - "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", - "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "cross-spawn": "^7.0.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/migrate": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/webpack-cli/node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/webpack-cli/node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, - "dependencies": { - "resolve": "^1.9.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/webpack/node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", - "dev": true - }, - "node_modules/wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2" - } - }, - "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", - "dev": true, - "dependencies": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@datastructures-js/binary-search-tree": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@datastructures-js/binary-search-tree/-/binary-search-tree-4.3.2.tgz", - "integrity": "sha512-fZV3GoZAPxfgGTky7Q+5oiMUtLhQoHxSlJt3DmUPbl+1pMpuopOSG/MymdcruWOBQU90kSzo0lN+3gmSaEYCTw==" - }, - "@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true - }, - "@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true - }, - "@glennsl/bs-json": { - "version": "git+ssh://git@github.com/banacorn/bs-json.git#0c900d3ad5c06eb2e6513a677096f1ec0411d282", - "from": "@glennsl/bs-json@github:banacorn/bs-json#0c900d3" - }, - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "@rescript/react": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@rescript/react/-/react-0.10.3.tgz", - "integrity": "sha512-Lf9rzrR3bQPKJjOK3PBRa/B3xrJ7CqQ1HYr9VHPVxJidarIJJFZBhj0Dg1uZURX+Wg/xiP0PHFxXmdj2bK8Vxw==", - "requires": {} - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "@types/eslint": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", - "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", - "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/node": { - "version": "18.6.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.4.tgz", - "integrity": "sha512-I4BD3L+6AWiUobfxZ49DlU43gtI+FTHSv9pE2Zekg6KjMpre4ByusaljW3vYSLJrvQ1ck1hUaeVu8HVlY3vzHg==", - "dev": true - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", - "dev": true, - "requires": {} - }, - "@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", - "dev": true, - "requires": { - "envinfo": "^7.7.3" - } - }, - "@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", - "dev": true, - "requires": {} - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", - "dev": true - }, - "ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true - }, - "ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "array.prototype.reduce": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz", - "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - } - }, - "async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", - "requires": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - } - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "browserslist": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", - "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001370", - "electron-to-chromium": "^1.4.202", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.5" - } - }, - "bs-mocha": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bs-mocha/-/bs-mocha-1.0.0.tgz", - "integrity": "sha512-/OjgBZdG1YyC/6SEvXihG/sgWFyenQtRJ0TOewo944XwQuDIv82jtrxYjBPbkhGHdLYnc4EfaLdPC+tW86iKEw==", - "dev": true, - "requires": { - "mocha": "^6.2.0" - }, - "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "mkdirp": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", - "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "mocha": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.3.tgz", - "integrity": "sha512-0R/3FvjIGH3eEuG17ccFPk117XL2rWxatr81a57D+r/x2uTYZRbdZ4oVidEUMh2W2TJDa7MdAb12Lm2/qrKajg==", - "dev": true, - "requires": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "2.2.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.4", - "ms": "2.1.1", - "node-environment-flags": "1.0.5", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - } - }, - "node-environment-flags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", - "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==", - "dev": true, - "requires": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - } - }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true - } - } - }, - "bs-nd": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/bs-nd/-/bs-nd-0.1.5.tgz", - "integrity": "sha512-YiIIpMiQ4SvoYZXVWWMMhQIPOmMekdvamsH9FoyHw0BicH/45Vyr9N/JawbEosZF7NV+1INlosljEQDajbmJfA==" - }, - "bs-platform": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/bs-platform/-/bs-platform-9.0.2.tgz", - "integrity": "sha512-Ye9JqJ4Oa7mcjjoOVRYI8Uc2Cf8N7jQLWDcdUplY7996d/YErSR7WitmV7XnSwr4EvdrbwjEsg1NxNjUQv3ChA==" - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "buffer-indexof-polyfill": { + "node_modules/buffer-indexof-polyfill": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==" + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } }, - "buffers": { + "node_modules/buffers": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==" + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "engines": { + "node": ">=0.2.0" + } }, - "cacache": { + "node_modules/cacache": { "version": "15.3.0", "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "@npmcli/fs": "^1.0.0", "@npmcli/move-file": "^1.0.1", "chownr": "^2.0.0", @@ -5256,202 +1335,252 @@ "ssri": "^8.0.1", "tar": "^6.0.2", "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" } }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "caniuse-lite": { - "version": "1.0.30001374", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001374.tgz", - "integrity": "sha512-mWvzatRx3w+j5wx/mpFN5v5twlPrabG8NqX2c6e45LCpymdoGqNvRkRutFUqpRTXKFQFNQJasvK0YT7suW6/Hw==", - "dev": true + "node_modules/caniuse-lite": { + "version": "1.0.30001565", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001565.tgz", + "integrity": "sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" }, - "chainsaw": { + "node_modules/chainsaw": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", - "requires": { + "license": "MIT/X11", + "dependencies": { "traverse": ">=0.3.0 <0.4" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, - "requires": { - "anymatch": "~3.1.1", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", "braces": "~3.0.2", - "fsevents": "~2.1.1", - "glob-parent": "~5.1.0", + "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "chownr": { + "node_modules/chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } }, - "chrome-trace-event": { + "node_modules/chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } }, - "clean-stack": { + "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, "dependencies": { - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "clone-deep": { + "node_modules/clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "requires": { - "color-name": "1.1.3" + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" }, - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } }, - "commondir": { + "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true + "dev": true, + "license": "MIT" }, - "compare-versions": { + "node_modules/compare-versions": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", - "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==" + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", + "license": "MIT" }, - "concat-map": { + "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" }, - "copy-anything": { + "node_modules/copy-anything": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" } }, - "copy-webpack-plugin": { + "node_modules/copy-webpack-plugin": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.4.1.tgz", "integrity": "sha512-MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "cacache": "^15.0.5", "fast-glob": "^3.2.4", "find-cache-dir": "^3.3.1", @@ -5463,1636 +1592,2525 @@ "schema-utils": "^3.0.0", "serialize-javascript": "^5.0.1", "webpack-sources": "^1.4.3" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "core-util-is": { + "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" }, - "cross-spawn": { + "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "license": "MIT", "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true } } }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true, - "requires": { - "ms": "^2.1.1" + "license": "MIT" + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true - }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, - "requires": { + "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } }, - "dir-glob": { + "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "dom-walk": { + "node_modules/dom-walk": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", "dev": true }, - "duplexer2": { + "node_modules/duplexer2": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "requires": { + "license": "BSD-3-Clause", + "dependencies": { "readable-stream": "^2.0.2" } }, - "electron-to-chromium": { - "version": "1.4.211", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.211.tgz", - "integrity": "sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A==", - "dev": true + "node_modules/electron-to-chromium": { + "version": "1.4.601", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.601.tgz", + "integrity": "sha512-SpwUMDWe9tQu8JX5QCO1+p/hChAi9AE9UpoC3rcHVc+gdCGlbT3SGb5I1klgb952HRIyvt9wZhSz9bNBYz9swA==", + "dev": true, + "license": "ISC" }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "emojis-list": { + "node_modules/emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } }, - "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" } }, - "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true + "node_modules/envinfo": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz", + "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==", + "dev": true, + "license": "MIT", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } }, - "errno": { + "node_modules/errno": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, + "license": "MIT", "optional": true, - "requires": { + "dependencies": { "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" } }, - "es-abstract": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", - "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "node_modules/es-abstract": { + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, - "requires": { - "call-bind": "^1.0.2", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", "get-symbol-description": "^1.0.0", - "has": "^1.0.3", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "regexp.prototype.flags": "^1.4.3", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - }, - "dependencies": { - "object.assign": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.3.tgz", - "integrity": "sha512-ZFJnX3zltyjcYJL0RoCJuzb+11zWGyaDbjgxZbdV7rFEcHQuYxrZqhow67aA7xpes6LhojyFDaBKAFfogQrikA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - } + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract/node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "es-array-method-boxes-properly": { + "node_modules/es-array-method-boxes-properly": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", "dev": true }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true + "node_modules/es-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } }, - "es-to-primitive": { + "node_modules/es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, - "requires": { + "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "escalade": { + "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "eslint-scope": { + "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "requires": { + "license": "BSD-2-Clause", + "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" } }, - "esprima": { + "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } }, - "esrecurse": { + "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "requires": { + "license": "BSD-2-Clause", + "dependencies": { "estraverse": "^5.2.0" }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" } }, - "estraverse": { + "node_modules/estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" }, - "events": { + "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } }, - "extend": { + "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "dev": true, + "license": "MIT" }, - "fast-deep-equal": { + "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, - "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" } }, - "fast-json-stable-stringify": { + "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, - "fastest-levenshtein": { + "node_modules/fastest-levenshtein": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "reusify": "^1.0.4" } }, - "fill-range": { + "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "find-cache-dir": { + "node_modules/find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-cache-dir/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "requires": { - "locate-path": "^3.0.0" + "bin": { + "flat": "cli.js" } }, - "flat": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", - "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, - "requires": { - "is-buffer": "~2.0.3" + "dependencies": { + "is-callable": "^1.1.3" } }, - "fs-minipass": { + "node_modules/fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" } }, - "fs.realpath": { + "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, - "optional": true + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, - "fstream": { + "node_modules/fstream": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "requires": { + "license": "ISC", + "dependencies": { "graceful-fs": "^4.1.2", "inherits": "~2.0.0", "mkdirp": ">=0.5 0", "rimraf": "2" }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/fstream/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", "dependencies": { - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "requires": { - "minimist": "^1.2.6" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } - } + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/fstream/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } }, - "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "functions-have-names": { + "node_modules/functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "get-caller-file": { + "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } }, - "get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "get-symbol-description": { + "node_modules/get-symbol-description": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "getos": { + "node_modules/getos": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", - "requires": { + "license": "MIT", + "dependencies": { "async": "^3.2.0" } }, - "glob": { + "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { + "license": "ISC", + "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "glob-parent": { + "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, - "glob-to-regexp": { + "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } }, - "global": { + "node_modules/global": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "min-document": "^2.19.0", "process": "^0.11.10" } }, - "globby": { + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", "fast-glob": "^3.2.9", "ignore": "^5.2.0", "merge2": "^1.4.1", "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" }, - "growl": { + "node_modules/growl": { "version": "1.10.5", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, - "requires": { - "function-bind": "^1.1.1" + "engines": { + "node": ">=4.x" } }, - "has-bigints": { + "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, - "requires": { - "get-intrinsic": "^1.1.1" + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "has-symbols": { + "node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "has-tostringtag": { + "node_modules/has-tostringtag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dev": true, - "requires": { + "dependencies": { "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" } }, - "he": { + "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } }, - "http-proxy-agent": { + "node_modules/http-proxy-agent": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@tootallnate/once": "1", "agent-base": "6", "debug": "4" }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "engines": { + "node": ">= 6" } }, - "https-proxy-agent": { + "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "agent-base": "6", "debug": "4" }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "engines": { + "node": ">= 6" } }, - "iconv-lite": { + "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "license": "MIT", "optional": true, - "requires": { + "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true + "node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } }, - "image-size": { + "node_modules/image-size": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", "dev": true, - "optional": true + "license": "MIT", + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } }, - "import-local": { + "node_modules/import-local": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "imurmurhash": { + "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } }, - "indent-string": { + "node_modules/indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "infer-owner": { + "node_modules/infer-owner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true + "dev": true, + "license": "ISC" }, - "inflight": { + "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { + "license": "ISC", + "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, - "inherits": { + "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "node_modules/internal-slot": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", + "dependencies": { + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" } }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "is-bigint": { + "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, - "requires": { + "dependencies": { "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-binary-path": { + "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, - "requires": { + "dependencies": { "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "is-boolean-object": { + "node_modules/is-boolean-object": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-buffer": { + "node_modules/is-buffer": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, - "requires": { - "has": "^1.0.3" + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-date-object": { + "node_modules/is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, - "requires": { + "dependencies": { "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-extglob": { + "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "is-glob": { + "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "is-negative-zero": { + "node_modules/is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "is-number": { + "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } }, - "is-number-object": { + "node_modules/is-number-object": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, - "requires": { + "dependencies": { "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" } }, - "is-plain-object": { + "node_modules/is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "is-regex": { + "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-shared-array-buffer": { + "node_modules/is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-string": { + "node_modules/is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, - "requires": { + "dependencies": { "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "requires": { - "has-symbols": "^1.0.2" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "is-weakref": { + "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-what": { + "node_modules/is-what": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true + "dev": true, + "license": "MIT" }, - "isarray": { + "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" }, - "isexe": { + "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, - "isobject": { + "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "jest-worker": { + "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">= 10.13.0" } }, - "js-tokens": { + "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "json-parse-even-better-errors": { + "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "license": "MIT" }, - "json-schema-traverse": { + "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, - "json5": { + "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } }, - "kind-of": { + "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } }, - "language-server-mule": { - "version": "git+ssh://git@github.com/banacorn/language-server-mule.git#2caa861918e2bceda9f6c004a8a01b69c9dc8cce", - "from": "language-server-mule@github:banacorn/language-server-mule#v0.2.3", - "requires": { + "node_modules/language-server-mule": { + "version": "0.3.2", + "resolved": "git+ssh://git@github.com/banacorn/language-server-mule.git#177699ba745d386703dd6f58cacb4828076e6d40", + "license": "MIT", + "dependencies": { "@glennsl/bs-json": "github:banacorn/bs-json#0c900d3", "eventemitter3": "^4.0.7", + "rescript-nodejs": "^15.0.0", "unzipper": "^0.10.11", - "vscode-languageclient": "^8.0.0-next.1" + "vscode-languageclient": "^8.0.0" } }, - "less": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", - "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "node_modules/language-server-mule/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, + "node_modules/less": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", + "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", "dev": true, - "requires": { + "license": "Apache-2.0", + "dependencies": { "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { "errno": "^0.1.1", "graceful-fs": "^4.1.2", "image-size": "~0.5.0", "make-dir": "^2.1.0", "mime": "^1.4.1", "needle": "^3.1.0", - "parse-node-version": "^1.0.1", - "source-map": "~0.6.0", - "tslib": "^2.3.0" - }, - "dependencies": { - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "optional": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "optional": true - } + "source-map": "~0.6.0" } }, - "less-loader": { + "node_modules/less-loader": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-7.3.0.tgz", "integrity": "sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "klona": "^2.0.4", "loader-utils": "^2.0.0", "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^4.0.0 || ^5.0.0" } }, - "less-watch-compiler": { + "node_modules/less-watch-compiler": { "version": "1.16.3", "resolved": "https://registry.npmjs.org/less-watch-compiler/-/less-watch-compiler-1.16.3.tgz", "integrity": "sha512-cxGUt8YdPpPPB72w1dfzPVXML5JYgfExXbFvDfG5XBU9qvj6uVjwTY2qOgwvf09Au5p2RvmWVcNps/cMTojJNQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "amdefine": ">= 0.1.0", "commander": "^8.0.0", "extend": ">= 2.0.0", "global": "^4.3.1", "less": "^4.0.0", "shelljs": ">= 0.4.0" + }, + "bin": { + "less-watch-compiler": "dist/less-watch-compiler.js" + } + }, + "node_modules/less-watch-compiler/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" } }, - "listenercount": { + "node_modules/listenercount": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==", + "license": "ISC" }, - "loader-runner": { + "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.11.5" + } }, - "loader-utils": { + "node_modules/loader-utils": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" } }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "lodash": { + "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, - "requires": { - "chalk": "^2.4.2" + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "loose-envify": { + "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { + "license": "MIT", + "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" } }, - "lru-cache": { + "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { + "license": "ISC", + "dependencies": { "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, - "requires": { - "semver": "^6.0.0" - }, + "license": "MIT", + "optional": true, "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" } }, - "merge-stream": { + "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "dev": true, + "license": "MIT" }, - "merge2": { + "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } }, - "micromatch": { + "node_modules/micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" } }, - "mime": { + "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, - "optional": true + "license": "MIT", + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } }, - "mime-db": { + "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "mime-types": { + "node_modules/mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" } }, - "min-document": { + "node_modules/min-document": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", "dev": true, - "requires": { + "dependencies": { "dom-walk": "^0.1.0" } }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" + "node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/minimatch/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" } }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "minipass-collect": { + "node_modules/minipass-collect": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" } }, - "minipass-flush": { + "node_modules/minipass-flush": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" } }, - "minipass-pipeline": { + "node_modules/minipass-pipeline": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "minizlib": { + "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" } }, - "mkdirp": { + "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } }, - "mocha": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", - "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", "dev": true, - "requires": { - "ansi-colors": "3.2.3", + "dependencies": { + "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.3.0", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.5", - "ms": "2.1.1", - "node-environment-flags": "1.0.6", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" }, + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - } + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha/node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "needle": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz", - "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/needle": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", "dev": true, + "license": "MIT", "optional": true, - "requires": { + "dependencies": { "debug": "^3.2.6", "iconv-lite": "^0.6.3", "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "^2.1.1" } }, - "neo-async": { + "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "dev": true, + "license": "MIT" }, - "node-environment-flags": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", - "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "node_modules/node-environment-flags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", + "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==", "dev": true, - "requires": { + "dependencies": { "object.getownpropertydescriptors": "^2.0.3", "semver": "^5.7.0" - }, - "dependencies": { - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true - } } }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true, + "license": "MIT" }, - "normalize-path": { + "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "object-assign": { + "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "object-keys": { + "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4" + } }, - "object.assign": { + "node_modules/object.assign": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "dev": true, - "requires": { + "dependencies": { "define-properties": "^1.1.2", "function-bind": "^1.1.1", "has-symbols": "^1.0.0", "object-keys": "^1.0.11" + }, + "engines": { + "node": ">= 0.4" } }, - "object.getownpropertydescriptors": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz", - "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==", + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz", + "integrity": "sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==", "dev": true, - "requires": { - "array.prototype.reduce": "^1.0.4", + "dependencies": { + "array.prototype.reduce": "^1.0.6", "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.1" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "safe-array-concat": "^1.0.0" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "once": { + "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { + "license": "ISC", + "dependencies": { "wrappy": "1" } }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "requires": { - "yocto-queue": "^0.1.0" + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "requires": { - "p-limit": "^2.0.0" + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "dependencies": { - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - } + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-map": { + "node_modules/p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-try": { + "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "parse-node-version": { + "node_modules/parse-node-version": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "path-is-absolute": { + "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "path-key": { + "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "path-parse": { + "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, - "path-type": { + "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "picocolors": { + "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "dev": true, + "license": "ISC" }, - "picomatch": { + "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, - "pify": { + "node_modules/pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, - "optional": true + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } }, - "pkg-dir": { + "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "find-up": "^4.0.0" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - } + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "process": { + "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } }, - "process-nextick-args": { + "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" }, - "promise-inflight": { + "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true + "dev": true, + "license": "ISC" }, - "prop-types": { + "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "requires": { + "license": "MIT", + "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, - "prr": { + "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true, + "license": "MIT", "optional": true }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "queue-microtask": { + "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" }, - "randombytes": { + "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "safe-buffer": "^5.1.0" } }, - "react": { + "node_modules/randombytes/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/react": { "version": "16.14.0", "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "requires": { + "license": "MIT", + "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "react-dom": { + "node_modules/react-dom": { "version": "16.14.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "requires": { + "license": "MIT", + "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", "scheduler": "^0.19.1" + }, + "peerDependencies": { + "react": "^16.14.0" } }, - "react-is": { + "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", @@ -7100,491 +4118,871 @@ "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } } }, - "readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, - "requires": { - "picomatch": "^2.0.4" + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" } }, - "reason-nodejs": { - "version": "git+ssh://git@github.com/banacorn/reason-nodejs.git#266080d84b820fc88319dd6dc63c98a2b3efe889", - "from": "reason-nodejs@github:banacorn/reason-nodejs#temp" - }, - "reason-promise": { + "node_modules/reason-promise": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/reason-promise/-/reason-promise-1.1.5.tgz", - "integrity": "sha512-T4VI8e3WrQ30HbQcmQ8HvJPZckD4AeTcZ+1aNdpJ/pjjRwjlBy63hr4v8fMSID0/6kPh1KrhN+5+4n7MouoZKQ==" + "integrity": "sha512-T4VI8e3WrQ30HbQcmQ8HvJPZckD4AeTcZ+1aNdpJ/pjjRwjlBy63hr4v8fMSID0/6kPh1KrhN+5+4n7MouoZKQ==", + "license": "MIT" }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", "dev": true, - "requires": { - "resolve": "^1.1.6" + "license": "MIT", + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" } }, - "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "require-directory": { + "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "require-main-filename": { + "node_modules/require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "rescript": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/rescript/-/rescript-9.1.4.tgz", - "integrity": "sha512-aXANK4IqecJzdnDpJUsU6pxMViCR5ogAxzuqS0mOr8TloMnzAjJFu63fjD6LCkWrKAhlMkFFzQvVQYaAaVkFXw==" + "node_modules/rescript": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/rescript/-/rescript-10.1.4.tgz", + "integrity": "sha512-FFKlS9AG/XrLepWsyw7B+A9DtQBPWEPDPDKghV831Y2KGbie+eeFBOS0xtRHp0xbt7S0N2Dm6hhX+kTZQ/3Ybg==", + "hasInstallScript": true, + "license": "SEE LICENSE IN LICENSE", + "bin": { + "bsc": "bsc", + "bsrefmt": "bsrefmt", + "bstracing": "lib/bstracing", + "rescript": "rescript" + } + }, + "node_modules/rescript-nodejs": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/rescript-nodejs/-/rescript-nodejs-15.0.0.tgz", + "integrity": "sha512-VvvM8/lI90Dfu0x4886NyINbUcBBx8F6hmftH9UaMjUgYIPfsdVopG3d30OzcbroiOKySgo4wwVNEmtYDZs+nw==", + "license": "MIT" }, - "rescript-vscode": { - "version": "git+ssh://git@github.com/banacorn/rescript-vscode.git#316ce927cd34f8a3ad7cc84b5d1fe6b97fa01e02", - "from": "rescript-vscode@github:banacorn/rescript-vscode#v0.0.17", - "requires": { + "node_modules/rescript-vscode": { + "version": "0.0.17", + "resolved": "git+ssh://git@github.com/banacorn/rescript-vscode.git#316ce927cd34f8a3ad7cc84b5d1fe6b97fa01e02", + "license": "MIT", + "dependencies": { "bs-platform": ">=8.2.0", "reason-promise": ">=1.1.0" } }, - "rescript-webapi": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/rescript-webapi/-/rescript-webapi-0.6.1.tgz", - "integrity": "sha512-I/eeHOcsUfWbCf6u15zd+rKxMz9awSjjdRa8eFtl2X+HjDNs0mJxoC4uFFK9dIazYcmY2VpuK5TTpOPXvdkhDw==" + "node_modules/rescript-webapi": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/rescript-webapi/-/rescript-webapi-0.9.0.tgz", + "integrity": "sha512-Q6I0OqaboCT2Z9VMXYM6pjzYKJani8NEiD6e9TFzRqb2nPjO2I0p4FG/8ZkYRr2JZlgTF/VsMQGuQ7+buHAbDg==", + "license": "MIT" }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, - "requires": { - "is-core-module": "^2.9.0", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "resolve-cwd": { + "node_modules/resolve-cwd": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" } }, - "resolve-from": { + "node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "reusify": { + "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } }, - "rimraf": { + "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "run-parallel": { + "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, - "requires": { + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { "queue-microtask": "^1.2.2" } }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true }, - "safer-buffer": { + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, + "license": "MIT", "optional": true }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "node_modules/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", "dev": true, + "license": "ISC", "optional": true }, - "scheduler": { + "node_modules/scheduler": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "requires": { + "license": "MIT", + "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" } }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "requires": { - "lru-cache": "^6.0.0" + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, - "serialize-javascript": { + "node_modules/serialize-javascript": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", "dev": true, - "requires": { + "license": "BSD-3-Clause", + "dependencies": { "randombytes": "^2.1.0" } }, - "set-blocking": { + "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, - "setimmediate": { + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" }, - "shallow-clone": { + "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" } }, - "shebang-command": { + "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "shebang-regex": { + "node_modules/shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "shelljs": { + "node_modules/shelljs": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, - "requires": { + "license": "BSD-3-Clause", + "dependencies": { "glob": "^7.0.0", "interpret": "^1.0.0", "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shelljs/node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" } }, - "side-channel": { + "node_modules/shelljs/node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "slash": { + "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "source-list-map": { + "node_modules/source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true + "dev": true, + "license": "MIT" }, - "source-map": { + "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } }, - "source-map-support": { + "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, - "sprintf-js": { + "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, - "ssri": { + "node_modules/ssri": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" } }, - "string_decoder": { + "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { + "license": "MIT", + "dependencies": { "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "requires": { - "ansi-regex": "^3.0.0" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true - }, - "supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "requires": { - "has-flag": "^3.0.0" + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "supports-preserve-symlinks-flag": { + "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "tapable": { + "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "node_modules/tar": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", + "minipass": "^5.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" } }, - "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "node_modules/terser": { + "version": "5.24.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz", + "integrity": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==", "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - } + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" } }, - "terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "node_modules/terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.7", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" - }, - "dependencies": { - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true } } }, - "to-regex-range": { + "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "traverse": { + "node_modules/traverse": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==" + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "license": "MIT/X11" }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true, + "license": "0BSD" + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "unbox-primitive": { + "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "unique-filename": { + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true, + "license": "MIT" + }, + "node_modules/unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "unique-slug": "^2.0.0" } }, - "unique-slug": { + "node_modules/unique-slug": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "imurmurhash": "^0.1.4" } }, - "untildify": { + "node_modules/untildify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==" + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "unzipper": { - "version": "0.10.11", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz", - "integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==", - "requires": { + "node_modules/unzipper": { + "version": "0.10.14", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz", + "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", + "license": "MIT", + "dependencies": { "big-integer": "^1.6.17", "binary": "~0.3.0", "bluebird": "~3.4.1", @@ -7597,103 +4995,181 @@ "setimmediate": "~1.0.4" } }, - "update-browserslist-db": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", - "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, - "requires": { + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "uri-js": { + "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "requires": { + "license": "BSD-2-Clause", + "dependencies": { "punycode": "^2.1.0" } }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "vscode-codicons": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/vscode-codicons/-/vscode-codicons-0.0.7.tgz", - "integrity": "sha512-xqYypi4Ihth3bZgoE6961FYJBrmFErC+YouSC5Tn0pHqv0QSrP0PK++EIVNBi0I9Ted1OetZ3aWlNUWq1QaMBA==" + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/vscode-codicons": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/vscode-codicons/-/vscode-codicons-0.0.7.tgz", + "integrity": "sha512-xqYypi4Ihth3bZgoE6961FYJBrmFErC+YouSC5Tn0pHqv0QSrP0PK++EIVNBi0I9Ted1OetZ3aWlNUWq1QaMBA==" + }, + "node_modules/vscode-jsonrpc": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz", + "integrity": "sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageclient": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.1.0.tgz", + "integrity": "sha512-GL4QdbYUF/XxQlAsvYWZRV3V34kOkpRlvV60/72ghHfsYFnS/v2MANZ9P6sHmxFcZKOse8O+L9G7Czg0NUWing==", + "license": "MIT", + "dependencies": { + "minimatch": "^5.1.0", + "semver": "^7.3.7", + "vscode-languageserver-protocol": "3.17.3" + }, + "engines": { + "vscode": "^1.67.0" + } + }, + "node_modules/vscode-languageclient/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } }, - "vscode-jsonrpc": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.0.2.tgz", - "integrity": "sha512-RY7HwI/ydoC1Wwg4gJ3y6LpU9FJRZAUnTYMXthqhFXXu77ErDd/xkREpGuk4MyYkk4a+XDWAMqe0S3KkelYQEQ==" + "node_modules/vscode-languageclient/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } }, - "vscode-languageclient": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.0.2.tgz", - "integrity": "sha512-lHlthJtphG9gibGb/y72CKqQUxwPsMXijJVpHEC2bvbFqxmkj9LwQ3aGU9dwjBLqsX1S4KjShYppLvg1UJDF/Q==", - "requires": { - "minimatch": "^3.0.4", - "semver": "^7.3.5", - "vscode-languageserver-protocol": "3.17.2" + "node_modules/vscode-languageclient/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "vscode-languageserver-protocol": { - "version": "3.17.2", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.2.tgz", - "integrity": "sha512-8kYisQ3z/SQ2kyjlNeQxbkkTNmVFoQCqkmGrzLH6A9ecPlgTbp3wDTnUNqaUxYr4vlAcloxx8zwy7G5WdguYNg==", - "requires": { - "vscode-jsonrpc": "8.0.2", - "vscode-languageserver-types": "3.17.2" + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz", + "integrity": "sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==", + "license": "MIT", + "dependencies": { + "vscode-jsonrpc": "8.1.0", + "vscode-languageserver-types": "3.17.3" } }, - "vscode-languageserver-types": { - "version": "3.17.2", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2.tgz", - "integrity": "sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==" + "node_modules/vscode-languageserver-types": { + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz", + "integrity": "sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==", + "license": "MIT" }, - "vscode-test": { + "node_modules/vscode-test": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.6.1.tgz", "integrity": "sha512-086q88T2ca1k95mUzffvbzb7esqQNvJgiwY4h29ukPhFo8u+vXOOmelUoU5EQUHs3Of8+JuQ3oGdbVCqaxuTXA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "http-proxy-agent": "^4.0.1", "https-proxy-agent": "^5.0.0", "rimraf": "^3.0.2", "unzipper": "^0.10.11" + }, + "engines": { + "node": ">=8.9.3" } }, - "watchpack": { + "node_modules/watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" } }, - "webpack": { - "version": "5.76.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz", - "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", + "node_modules/webpack": { + "version": "5.89.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", + "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", + "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", @@ -7702,27 +5178,35 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", + "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, - "dependencies": { - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true } } }, - "webpack-cli": { + "node_modules/webpack-cli": { "version": "4.10.0", "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^1.2.0", "@webpack-cli/info": "^1.5.0", @@ -7736,220 +5220,280 @@ "rechoir": "^0.7.0", "webpack-merge": "^5.7.3" }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true }, - "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true + "webpack-bundle-analyzer": { + "optional": true }, - "rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, - "requires": { - "resolve": "^1.9.0" - } + "webpack-dev-server": { + "optional": true } } }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "clone-deep": "^4.0.1", + "flat": "^5.0.2", "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" } }, - "webpack-sources": { + "node_modules/webpack-sources": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "source-list-map": "^2.0.0", "source-map": "~0.6.1" } }, - "which": { + "node_modules/webpack/node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "requires": { + "dependencies": { "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "which-boxed-primitive": { + "node_modules/which-boxed-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, - "requires": { + "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", "is-number-object": "^1.0.4", "is-string": "^1.0.5", "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", "dev": true }, - "wide-align": { + "node_modules/which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "dev": true, - "requires": { + "dependencies": { "string-width": "^1.0.2 || 2" } }, - "wildcard": { + "node_modules/wide-align/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align/node_modules/is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "node_modules/wide-align/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, "dependencies": { - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "wrappy": { + "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } }, - "yallist": { + "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, - "dependencies": { - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } + "engines": { + "node": ">=10" } }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "engines": { + "node": ">=10" } }, - "yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, - "requires": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" } }, - "yocto-queue": { + "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/package.json b/package.json index 42597e15..f41e95c2 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "agda-mode on vscode", "icon": "asset/logo.png", "publisher": "banacorn", - "version": "0.4.2", + "version": "0.4.3", "engines": { "vscode": "^1.41.0" }, @@ -28,7 +28,7 @@ "less": "^4.1.1", "less-loader": "^7.0.2", "less-watch-compiler": "^1.14.6", - "mocha": "^7.1.2", + "mocha": "^10.2.0", "vscode-test": "^1.3.0", "webpack": "^5.76.0", "webpack-cli": "^4.2.0" @@ -37,17 +37,17 @@ "@datastructures-js/binary-search-tree": "^4.3.0", "@glennsl/bs-json": "github:banacorn/bs-json#0c900d3", "@rescript/react": "^0.10.3", - "rescript-webapi": ">=0.2.0", "compare-versions": "^3.5.1", "eventemitter3": ">=4.0.0", "getos": "^3.2.1", - "language-server-mule": "github:banacorn/language-server-mule#v0.3.0", + "language-server-mule": "github:banacorn/language-server-mule#v0.3.3", "react": "^16.9.0", "react-dom": "^16.9.0", - "rescript-nodejs": "^15.0.0", "reason-promise": ">=1.1.0", "rescript": "^10.1.4", + "rescript-nodejs": "^15.0.0", "rescript-vscode": "github:banacorn/rescript-vscode#v0.0.17", + "rescript-webapi": ">=0.2.0", "untildify": "^4.0.0", "vscode-codicons": "^0.0.7" }, @@ -925,4 +925,4 @@ "publisherDisplayName": "Ting-Gian LUA", "publisherId": "22df016e-6b4f-49b2-9856-3336695d1289" } -} \ No newline at end of file +} From 76c4169962c199861803d544ed53a27bbc952063 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sun, 3 Dec 2023 16:18:35 +0800 Subject: [PATCH 031/109] [ dep ] Upgrade HaaLeo/publish-vscode-extension to @v1 --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 54d01a6c..c104d71d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,12 +19,12 @@ jobs: run: npm run vscode:prepublish - name: Publish to Open VSX Registry - uses: HaaLeo/publish-vscode-extension@v0 + uses: HaaLeo/publish-vscode-extension@v1 with: pat: ${{ secrets.OPEN_VSX }} - name: Publish to Visual Studio Marketplace - uses: HaaLeo/publish-vscode-extension@v0 + uses: HaaLeo/publish-vscode-extension@v1 with: pat: ${{ secrets.VSCE_PAT }} registryUrl: https://marketplace.visualstudio.com \ No newline at end of file From a67995fa00980c454b1581dbc6fbcb90ac35fefe Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sun, 3 Dec 2023 16:23:26 +0800 Subject: [PATCH 032/109] [ dep ] Upgrade engine.vscode to ^1.74.0 in package.yaml --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f41e95c2..31f4e4b3 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "publisher": "banacorn", "version": "0.4.3", "engines": { - "vscode": "^1.41.0" + "vscode": "^1.74.0" }, "categories": [ "Other" From db08ac953ff45df83cd7b744b129deebc3a9f6a6 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sun, 3 Dec 2023 16:37:09 +0800 Subject: [PATCH 033/109] [ new ] Bump and release v0.4.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 31f4e4b3..22407135 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "agda-mode on vscode", "icon": "asset/logo.png", "publisher": "banacorn", - "version": "0.4.3", + "version": "0.4.4", "engines": { "vscode": "^1.74.0" }, From be70a4cf4cc496601b33783f210e03f37d6aa0c0 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sun, 3 Dec 2023 18:21:15 +0800 Subject: [PATCH 034/109] [ dep ] Bump @glennsl/bs-json to the latest --- package-lock.json | 19 ++++++++++++------- package.json | 2 +- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5dc7b570..c82ea7a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,15 @@ { "name": "agda-mode", - "version": "0.4.2", + "version": "0.4.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "agda-mode", - "version": "0.4.2", + "version": "0.4.4", "dependencies": { "@datastructures-js/binary-search-tree": "^4.3.0", - "@glennsl/bs-json": "github:banacorn/bs-json#0c900d3", + "@glennsl/bs-json": "^5.0.4", "@rescript/react": "^0.10.3", "compare-versions": "^3.5.1", "eventemitter3": ">=4.0.0", @@ -38,7 +38,7 @@ "webpack-cli": "^4.2.0" }, "engines": { - "vscode": "^1.41.0" + "vscode": "^1.74.0" } }, "node_modules/@datastructures-js/binary-search-tree": { @@ -65,9 +65,9 @@ "license": "MIT" }, "node_modules/@glennsl/bs-json": { - "version": "5.0.2", - "resolved": "git+ssh://git@github.com/banacorn/bs-json.git#0c900d3ad5c06eb2e6513a677096f1ec0411d282", - "license": "(LGPL-3.0 OR MPL-2.0)" + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@glennsl/bs-json/-/bs-json-5.0.4.tgz", + "integrity": "sha512-Th9DetZjRlMZrb74kgGJ44oWcoFyOTE884WlSuXft0Cd+J09vHRxiB7eVyK7Gthb4cSevsBBJDHYAbGGL25wPw==" }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", @@ -3145,6 +3145,11 @@ "vscode-languageclient": "^8.0.0" } }, + "node_modules/language-server-mule/node_modules/@glennsl/bs-json": { + "version": "5.0.2", + "resolved": "git+ssh://git@github.com/banacorn/bs-json.git#0c900d3ad5c06eb2e6513a677096f1ec0411d282", + "license": "(LGPL-3.0 OR MPL-2.0)" + }, "node_modules/language-server-mule/node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", diff --git a/package.json b/package.json index 22407135..5c89184a 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ }, "dependencies": { "@datastructures-js/binary-search-tree": "^4.3.0", - "@glennsl/bs-json": "github:banacorn/bs-json#0c900d3", + "@glennsl/bs-json": "^5.0.4", "@rescript/react": "^0.10.3", "compare-versions": "^3.5.1", "eventemitter3": ">=4.0.0", From b6569153b5f821365cd8aa4a65a09866ceeab789 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sun, 3 Dec 2023 19:02:45 +0800 Subject: [PATCH 035/109] [ change ] Upgrade JSON encoder/decoder for Translator.translation --- bsconfig.json | 1 + lib/js/src/InputMethod/Translator.bs.js | 81 +++++++------------ lib/js/src/Util/Util.bs.js | 17 ++++ lib/js/src/View/View.bs.js | 4 +- package-lock.json | 9 +++ package.json | 1 + src/InputMethod/Translator.res | 103 +++++++++++++----------- src/Util/Util.res | 7 ++ src/View/View.res | 15 ++-- 9 files changed, 129 insertions(+), 109 deletions(-) diff --git a/bsconfig.json b/bsconfig.json index 7d1abd9e..2bcd24a0 100644 --- a/bsconfig.json +++ b/bsconfig.json @@ -24,6 +24,7 @@ "namespace": true, "bs-dependencies": [ "@glennsl/bs-json", + "@glennsl/rescript-json-combinators", "rescript-vscode", "rescript-webapi", "language-server-mule", diff --git a/lib/js/src/InputMethod/Translator.bs.js b/lib/js/src/InputMethod/Translator.bs.js index 47d1e380..ea370649 100644 --- a/lib/js/src/InputMethod/Translator.bs.js +++ b/lib/js/src/InputMethod/Translator.bs.js @@ -7,8 +7,8 @@ var Belt_Int = require("rescript/lib/js/belt_Int.js"); var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); -var Json_decode = require("@glennsl/bs-json/lib/js/src/Json_decode.bs.js"); -var Json_encode = require("@glennsl/bs-json/lib/js/src/Json_encode.bs.js"); +var Json_Decode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Decode.bs.js"); +var Json_Encode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Encode.bs.js"); var QueryJs = require("./../../../../asset/query.js").default; var KeymapJs = require("./../../../../asset/keymap.js").default; @@ -64,55 +64,6 @@ function isInKeymap(input) { }; } -function decode(json) { - return { - symbol: Json_decode.field("symbol", (function (param) { - return Json_decode.optional(Json_decode.string, param); - }), json), - further: Json_decode.field("further", Json_decode.bool, json), - keySuggestions: Json_decode.field("keySuggestions", (function (param) { - return Json_decode.array(Json_decode.string, param); - }), json), - candidateSymbols: Json_decode.field("candidateSymbols", (function (param) { - return Json_decode.array(Json_decode.string, param); - }), json) - }; -} - -function encode(translation) { - return Json_encode.object_({ - hd: [ - "symbol", - Json_encode.nullable((function (prim) { - return prim; - }), translation.symbol) - ], - tl: { - hd: [ - "further", - translation.further - ], - tl: { - hd: [ - "keySuggestions", - Json_encode.array((function (prim) { - return prim; - }), translation.keySuggestions) - ], - tl: { - hd: [ - "candidateSymbols", - Json_encode.array((function (prim) { - return prim; - }), translation.candidateSymbols) - ], - tl: /* [] */0 - } - } - } - }); -} - function translate(input, state) { var trie = isInKeymap(input); var keySuggestions = Belt_Option.mapWithDefault(trie, [], toKeySuggestions); @@ -157,6 +108,30 @@ function lookup(symbol) { })); } +var decode = Json_Decode$JsonCombinators.object(function (field) { + return { + symbol: field.optional("symbol", Json_Decode$JsonCombinators.string), + further: field.required("further", Json_Decode$JsonCombinators.bool), + keySuggestions: field.required("keySuggestions", Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.string)), + candidateSymbols: field.required("candidateSymbols", Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.string)) + }; + }); + +function encode(translation) { + return { + symbol: Json_Encode$JsonCombinators.option((function (prim) { + return prim; + }), translation.symbol), + further: translation.further, + keySuggestions: Json_Encode$JsonCombinators.array((function (prim) { + return prim; + }), translation.keySuggestions), + candidateSymbols: Json_Encode$JsonCombinators.array((function (prim) { + return prim; + }), translation.candidateSymbols) + }; +} + exports.rawTable = rawTable; exports.rawKeymapObject = rawKeymapObject; exports.fromObject = fromObject; @@ -164,9 +139,9 @@ exports.keymap = keymap; exports.toKeySuggestions = toKeySuggestions; exports.toCandidateSymbols = toCandidateSymbols; exports.isInKeymap = isInKeymap; -exports.decode = decode; -exports.encode = encode; exports.translate = translate; exports.initialTranslation = initialTranslation; exports.lookup = lookup; +exports.decode = decode; +exports.encode = encode; /* rawTable Not a pure module */ diff --git a/lib/js/src/Util/Util.bs.js b/lib/js/src/Util/Util.bs.js index 9e29cea9..00103879 100644 --- a/lib/js/src/Util/Util.bs.js +++ b/lib/js/src/Util/Util.bs.js @@ -13,6 +13,7 @@ var Caml_exceptions = require("rescript/lib/js/caml_exceptions.js"); var Caml_splice_call = require("rescript/lib/js/caml_splice_call.js"); var CompareVersions = require("compare-versions"); var Caml_js_exceptions = require("rescript/lib/js/caml_js_exceptions.js"); +var Json$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json.bs.js"); function mapError(x, f) { if (x.TAG === /* Ok */0) { @@ -36,6 +37,20 @@ var Result = { var $$Error = /* @__PURE__ */Caml_exceptions.create("Util-AgdaModeVscode.Error"); +var TempDecodeError = /* @__PURE__ */Caml_exceptions.create("Util-AgdaModeVscode.Decode.TempDecodeError"); + +function converDecoder(translation, json) { + var translation$1 = Json$JsonCombinators.decode(json, translation); + if (translation$1.TAG === /* Ok */0) { + return translation$1._0; + } + throw { + RE_EXN_ID: TempDecodeError, + _1: json, + Error: new Error() + }; +} + function sum(decoder) { return function (param) { return Json_decode.andThen((function (tag) { @@ -158,6 +173,8 @@ function tuple6(decodeA, decodeB, decodeC, decodeD, decodeE, decodeF, json) { } var Decode = { + TempDecodeError: TempDecodeError, + converDecoder: converDecoder, sum: sum, maybe: maybe, tuple5: tuple5, diff --git a/lib/js/src/View/View.bs.js b/lib/js/src/View/View.bs.js index b350a12c..478898cd 100644 --- a/lib/js/src/View/View.bs.js +++ b/lib/js/src/View/View.bs.js @@ -270,7 +270,9 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { [Symbol.for("name")]: "Update" }; }), (function (param) { - return Json_decode.tuple3(Json_decode.string, Translator$AgdaModeVscode.decode, Json_decode.$$int, param); + return Json_decode.tuple3(Json_decode.string, (function (param) { + return Util$AgdaModeVscode.Decode.converDecoder(Translator$AgdaModeVscode.decode, param); + }), Json_decode.$$int, param); }), param); }), [Symbol.for("name")]: "Contents" diff --git a/package-lock.json b/package-lock.json index c82ea7a6..0226bab5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "dependencies": { "@datastructures-js/binary-search-tree": "^4.3.0", "@glennsl/bs-json": "^5.0.4", + "@glennsl/rescript-json-combinators": "^1.3.0", "@rescript/react": "^0.10.3", "compare-versions": "^3.5.1", "eventemitter3": ">=4.0.0", @@ -69,6 +70,14 @@ "resolved": "https://registry.npmjs.org/@glennsl/bs-json/-/bs-json-5.0.4.tgz", "integrity": "sha512-Th9DetZjRlMZrb74kgGJ44oWcoFyOTE884WlSuXft0Cd+J09vHRxiB7eVyK7Gthb4cSevsBBJDHYAbGGL25wPw==" }, + "node_modules/@glennsl/rescript-json-combinators": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@glennsl/rescript-json-combinators/-/rescript-json-combinators-1.3.0.tgz", + "integrity": "sha512-5HACiKHBDi5Y0XHStCfW1+G0IZja4stsZ8uZDxVL1kbTfEhvL/FExHG5iUG4AWPW++DG38nx8eXZ2wXhAgUvYQ==", + "engines": { + "node": "*" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", diff --git a/package.json b/package.json index 5c89184a..44e9774e 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "dependencies": { "@datastructures-js/binary-search-tree": "^4.3.0", "@glennsl/bs-json": "^5.0.4", + "@glennsl/rescript-json-combinators": "^1.3.0", "@rescript/react": "^0.10.3", "compare-versions": "^3.5.1", "eventemitter3": ">=4.0.0", diff --git a/src/InputMethod/Translator.res b/src/InputMethod/Translator.res index 981ee2eb..87afdb17 100644 --- a/src/InputMethod/Translator.res +++ b/src/InputMethod/Translator.res @@ -1,5 +1,5 @@ // key - symbols mapping -@bs.module("./../../../../asset/query.js") +@module("./../../../../asset/query.js") external rawTable: Js.Dict.t> = "default" // trie @@ -8,7 +8,7 @@ type rec trie = { symbols: array, subTrie: Js.Dict.t, } -@bs.module("./../../../../asset/keymap.js") +@module("./../../../../asset/keymap.js") external rawKeymapObject: {.} = "default" open Belt @@ -21,11 +21,16 @@ let rec fromObject = (obj: {.}): trie => { obj ->Js.Obj.keys ->Array.keep(key => key != ">>") - ->Array.map(key => (key, fromObject(%raw(` + ->Array.map(key => ( + key, + fromObject( + %raw(` obj[key] - `)))) + `), + ), + )) ->Js.Dict.fromArray - {symbols: symbols, subTrie: subTrie} + {symbols, subTrie} } let keymap = fromObject(rawKeymapObject) @@ -61,26 +66,6 @@ type translation = { candidateSymbols: array, } -let decode: Json.Decode.decoder = json => { - open Json.Decode - { - symbol: json |> field("symbol", optional(string)), - further: json |> field("further", bool), - keySuggestions: json |> field("keySuggestions", array(string)), - candidateSymbols: json |> field("candidateSymbols", array(string)), - } -} - -let encode: Json.Encode.encoder = translation => { - open Json.Encode - object_(list{ - ("symbol", translation.symbol |> nullable(string)), - ("further", translation.further |> bool), - ("keySuggestions", translation.keySuggestions |> array(string)), - ("candidateSymbols", translation.candidateSymbols |> array(string)), - }) -} - type state = { lastTranslation: translation, candidateIndex: int, @@ -93,39 +78,65 @@ let translate = (input: string, state: option): translation => { // ->Extension.extendKeySuggestions(input); let further = Array.length(keySuggestions) != 0 let candidateSymbols = trie->Option.mapWithDefault([], toCandidateSymbols) - + let symbol = candidateSymbols[0] - let last = Js.String.sliceToEnd(~from = -1, input)->Belt.Int.fromString + let last = Js.String.sliceToEnd(~from=-1, input)->Belt.Int.fromString open Belt.Option - // If user inputs a number and the new sequence can not be translated into symbols, - // this number may be the index of candidateSymbols - if isSome(last) && - symbol == None && - isSome(state) && Array.length(getExn(state).lastTranslation.candidateSymbols) != 0 { + // If user inputs a number and the new sequence can not be translated into symbols, + // this number may be the index of candidateSymbols + if ( + isSome(last) && + symbol == None && + isSome(state) && + Array.length(getExn(state).lastTranslation.candidateSymbols) != 0 + ) { let state = getExn(state) - let cycle_Zplus = n => if n == 0 { - 9 - } else { - n - 1 - } + let cycle_Zplus = n => + if n == 0 { + 9 + } else { + n - 1 + } let index = cycle_Zplus(getExn(last)) + state.candidateIndex / 10 * 10 { - symbol: state.lastTranslation.candidateSymbols[min(index, Array.length(state.lastTranslation.candidateSymbols) - 1)], - further: further, - keySuggestions: keySuggestions, - candidateSymbols: candidateSymbols, + symbol: state.lastTranslation.candidateSymbols[ + min(index, Array.length(state.lastTranslation.candidateSymbols) - 1) + ], + further, + keySuggestions, + candidateSymbols, } } else { { - symbol: symbol, - further: further, - keySuggestions: keySuggestions, - candidateSymbols: candidateSymbols, + symbol, + further, + keySuggestions, + candidateSymbols, } } } let initialTranslation = translate("") let lookup = (symbol): option> => - Js.String.codePointAt(0, symbol)->Option.map(string_of_int)->Option.flatMap(Js.Dict.get(rawTable)) \ No newline at end of file + Js.String.codePointAt(0, symbol)->Option.map(string_of_int)->Option.flatMap(Js.Dict.get(rawTable)) + +let decode = { + open JsonCombinators.Json.Decode + object(field => { + symbol: field.optional(. "symbol", string), + further: field.required(. "further", bool), + keySuggestions: field.required(. "keySuggestions", array(string)), + candidateSymbols: field.required(. "candidateSymbols", array(string)), + }) +} + +let encode = translation => { + open JsonCombinators.Json.Encode + Unsafe.object({ + "symbol": option(string, translation.symbol), + "further": bool(translation.further), + "keySuggestions": array(string, translation.keySuggestions), + "candidateSymbols": array(string, translation.candidateSymbols), + }) +} diff --git a/src/Util/Util.res b/src/Util/Util.res index 77742b95..4c144683 100644 --- a/src/Util/Util.res +++ b/src/Util/Util.res @@ -11,6 +11,13 @@ module Result = { exception Error(string) module Decode = { + exception TempDecodeError(Js.Json.t) + let converDecoder = (translation, json) => + switch json->JsonCombinators.Json.decode(translation) { + | Ok(translation) => translation + | Error(_) => raise(TempDecodeError(json)) + } + open Json.Decode type fieldType<'a> = diff --git a/src/View/View.res b/src/View/View.res index b536b04a..16e58dc0 100644 --- a/src/View/View.res +++ b/src/View/View.res @@ -55,9 +55,9 @@ module Prompt = { placeholder, value, )) => { - body: body, - placeholder: placeholder, - value: value, + body, + placeholder, + value, }), ) | tag => raise(DecodeError("[Prompt] Unknown constructor: " ++ tag)) @@ -104,11 +104,11 @@ module EventToView = { | "Deactivate" => TagOnly(Deactivate) | "Update" => Contents( - tuple3(string, Translator.decode, int) |> map(((sequence, translation, index)) => Update( + tuple3(string, Util.Decode.converDecoder(Translator.decode), int) |> map((( sequence, translation, index, - )), + )) => Update(sequence, translation, index)), ) | "BrowseUp" => TagOnly(BrowseUp) | "BrowseRight" => TagOnly(BrowseRight) @@ -395,10 +395,7 @@ module EventFromView = { ("contents", action |> PromptIMUpdate.encode), }) | JumpToTarget(link) => - object_(list{ - ("tag", string("JumpToTarget")), - ("contents", link |> Link.encode), - }) + object_(list{("tag", string("JumpToTarget")), ("contents", link |> Link.encode)}) } } } From a57342f587042360c58d2bbc6a6061a8cc059b04 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sun, 3 Dec 2023 23:16:24 +0800 Subject: [PATCH 036/109] [ change ] Upgrade JSON encoder/decoder for View.EventToView.Input.t --- lib/js/src/Util/Util.bs.js | 19 ++- lib/js/src/View/View.bs.js | 240 ++++++++++++------------------------- src/Util/Util.res | 16 ++- src/View/View.res | 133 +++++++++++++------- 4 files changed, 198 insertions(+), 210 deletions(-) diff --git a/lib/js/src/Util/Util.bs.js b/lib/js/src/Util/Util.bs.js index 00103879..2ddc27f6 100644 --- a/lib/js/src/Util/Util.bs.js +++ b/lib/js/src/Util/Util.bs.js @@ -14,6 +14,7 @@ var Caml_splice_call = require("rescript/lib/js/caml_splice_call.js"); var CompareVersions = require("compare-versions"); var Caml_js_exceptions = require("rescript/lib/js/caml_js_exceptions.js"); var Json$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json.bs.js"); +var Json_Decode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Decode.bs.js"); function mapError(x, f) { if (x.TAG === /* Ok */0) { @@ -39,7 +40,7 @@ var $$Error = /* @__PURE__ */Caml_exceptions.create("Util-AgdaModeVscode.Error") var TempDecodeError = /* @__PURE__ */Caml_exceptions.create("Util-AgdaModeVscode.Decode.TempDecodeError"); -function converDecoder(translation, json) { +function convert(translation, json) { var translation$1 = Json$JsonCombinators.decode(json, translation); if (translation$1.TAG === /* Ok */0) { return translation$1._0; @@ -51,6 +52,19 @@ function converDecoder(translation, json) { }; } +function sum_(decoder) { + return Json_Decode$JsonCombinators.flatMap(Json_Decode$JsonCombinators.field("tag", Json_Decode$JsonCombinators.string), (function (tag) { + var d = Curry._1(decoder, tag); + if (d.TAG === /* Contents */0) { + return Json_Decode$JsonCombinators.field("contents", d._0); + } + var d$1 = d._0; + return Json_Decode$JsonCombinators.custom(function (param) { + return d$1; + }); + })); +} + function sum(decoder) { return function (param) { return Json_decode.andThen((function (tag) { @@ -174,7 +188,8 @@ function tuple6(decodeA, decodeB, decodeC, decodeD, decodeE, decodeF, json) { var Decode = { TempDecodeError: TempDecodeError, - converDecoder: converDecoder, + convert: convert, + sum_: sum_, sum: sum, maybe: maybe, tuple5: tuple5, diff --git a/lib/js/src/View/View.bs.js b/lib/js/src/View/View.bs.js index 478898cd..dfbc2a32 100644 --- a/lib/js/src/View/View.bs.js +++ b/lib/js/src/View/View.bs.js @@ -10,6 +10,8 @@ var Link$AgdaModeVscode = require("./Component/Link.bs.js"); var Util$AgdaModeVscode = require("../Util/Util.bs.js"); var Common$AgdaModeVscode = require("./Common.bs.js"); var Translator$AgdaModeVscode = require("../InputMethod/Translator.bs.js"); +var Json_Decode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Decode.bs.js"); +var Json_Encode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Encode.bs.js"); function toString(x) { return x._0; @@ -220,7 +222,7 @@ var Prompt = { var Body = {}; -var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { +var decode$2 = Util$AgdaModeVscode.Decode.sum_(function (x) { switch (x) { case "Activate" : return { @@ -261,25 +263,19 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { case "Update" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (param) { - return { - _0: param[0], - _1: param[1], - _2: param[2], - [Symbol.for("name")]: "Update" - }; - }), (function (param) { - return Json_decode.tuple3(Json_decode.string, (function (param) { - return Util$AgdaModeVscode.Decode.converDecoder(Translator$AgdaModeVscode.decode, param); - }), Json_decode.$$int, param); - }), param); - }), + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.tuple3(Json_Decode$JsonCombinators.string, Translator$AgdaModeVscode.decode, Json_Decode$JsonCombinators.$$int), (function (param) { + return { + _0: param[0], + _1: param[1], + _2: param[2], + [Symbol.for("name")]: "Update" + }; + })), [Symbol.for("name")]: "Contents" }; default: throw { - RE_EXN_ID: Json_decode.DecodeError, + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, _1: "[EventToView.InputMethod] Unknown constructor: " + x, Error: new Error() }; @@ -288,77 +284,44 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { function encode$2(x) { if (typeof x !== "number") { - return Json_encode.object_({ - hd: [ - "tag", - "Update" - ], - tl: { - hd: [ - "contents", - Json_encode.tuple3((function (prim) { - return prim; - }), Translator$AgdaModeVscode.encode, (function (prim) { - return prim; - }), [ - x._0, - x._1, - x._2 - ]) - ], - tl: /* [] */0 - } - }); + return { + tag: "Update", + contents: Json_Encode$JsonCombinators.tuple3((function (prim) { + return prim; + }), Translator$AgdaModeVscode.encode, (function (prim) { + return prim; + }), [ + x._0, + x._1, + x._2 + ]) + }; } switch (x) { case /* Activate */0 : - return Json_encode.object_({ - hd: [ - "tag", - "Activate" - ], - tl: /* [] */0 - }); + return { + tag: "Activate" + }; case /* Deactivate */1 : - return Json_encode.object_({ - hd: [ - "tag", - "Deactivate" - ], - tl: /* [] */0 - }); + return { + tag: "Deactivate" + }; case /* BrowseUp */2 : - return Json_encode.object_({ - hd: [ - "tag", - "BrowseUp" - ], - tl: /* [] */0 - }); + return { + tag: "BrowseUp" + }; case /* BrowseRight */3 : - return Json_encode.object_({ - hd: [ - "tag", - "BrowseRight" - ], - tl: /* [] */0 - }); + return { + tag: "BrowseRight" + }; case /* BrowseDown */4 : - return Json_encode.object_({ - hd: [ - "tag", - "BrowseDown" - ], - tl: /* [] */0 - }); + return { + tag: "BrowseDown" + }; case /* BrowseLeft */5 : - return Json_encode.object_({ - hd: [ - "tag", - "BrowseLeft" - ], - tl: /* [] */0 - }); + return { + tag: "BrowseLeft" + }; } } @@ -437,7 +400,9 @@ var decode$3 = Util$AgdaModeVscode.Decode.sum(function (x) { _0: x, [Symbol.for("name")]: "InputMethod" }; - }), decode$2, param); + }), (function (param) { + return Util$AgdaModeVscode.Decode.convert(decode$2, param); + }), param); }), [Symbol.for("name")]: "Contents" }; @@ -486,95 +451,46 @@ var decode$3 = Util$AgdaModeVscode.Decode.sum(function (x) { function encode$3(x) { if (typeof x === "number") { - return Json_encode.object_({ - hd: [ - "tag", - "PromptInterrupt" - ], - tl: /* [] */0 - }); + return { + tag: "PromptInterrupt" + }; } switch (x.TAG | 0) { case /* Display */0 : - return Json_encode.object_({ - hd: [ - "tag", - "Display" - ], - tl: { - hd: [ - "contents", - Json_encode.pair(encode, (function (param) { - return Json_encode.array(Item$AgdaModeVscode.encode, param); - }), [ - x._0, - x._1 - ]) - ], - tl: /* [] */0 - } - }); + return { + tag: "Display", + contents: Json_Encode$JsonCombinators.pair(encode, (function (param) { + return Json_Encode$JsonCombinators.array(Item$AgdaModeVscode.encode, param); + }), [ + x._0, + x._1 + ]) + }; case /* Append */1 : - return Json_encode.object_({ - hd: [ - "tag", - "Append" - ], - tl: { - hd: [ - "contents", - Json_encode.pair(encode, (function (param) { - return Json_encode.array(Item$AgdaModeVscode.encode, param); - }), [ - x._0, - x._1 - ]) - ], - tl: /* [] */0 - } - }); + return { + tag: "Append", + contents: Json_Encode$JsonCombinators.pair(encode, (function (param) { + return Json_Encode$JsonCombinators.array(Item$AgdaModeVscode.encode, param); + }), [ + x._0, + x._1 + ]) + }; case /* SetStatus */2 : - return Json_encode.object_({ - hd: [ - "tag", - "SetStatus" - ], - tl: { - hd: [ - "contents", - x._0 - ], - tl: /* [] */0 - } - }); + return { + tag: "SetStatus", + contents: x._0 + }; case /* PromptIMUpdate */3 : - return Json_encode.object_({ - hd: [ - "tag", - "PromptIMUpdate" - ], - tl: { - hd: [ - "contents", - x._0 - ], - tl: /* [] */0 - } - }); + return { + tag: "PromptIMUpdate", + contents: x._0 + }; case /* InputMethod */4 : - return Json_encode.object_({ - hd: [ - "tag", - "InputMethod" - ], - tl: { - hd: [ - "contents", - encode$2(x._0) - ], - tl: /* [] */0 - } - }); + return { + tag: "InputMethod", + contents: encode$2(x._0) + }; } } diff --git a/src/Util/Util.res b/src/Util/Util.res index 4c144683..5362b6b2 100644 --- a/src/Util/Util.res +++ b/src/Util/Util.res @@ -12,12 +12,26 @@ exception Error(string) module Decode = { exception TempDecodeError(Js.Json.t) - let converDecoder = (translation, json) => + let convert = (translation, json) => switch json->JsonCombinators.Json.decode(translation) { | Ok(translation) => translation | Error(_) => raise(TempDecodeError(json)) } + type fieldType_<'a> = + | Contents(JsonCombinators.Json.Decode.t<'a>) + | TagOnly('a) + + let sum_ = decoder => { + open JsonCombinators.Json.Decode + field("tag", string)->flatMap((. tag) => + switch decoder(tag) { + | Contents(d) => field("contents", d) + | TagOnly(d) => custom((. _) => d) + } + ) + } + open Json.Decode type fieldType<'a> = diff --git a/src/View/View.res b/src/View/View.res index 16e58dc0..e3ccbcb6 100644 --- a/src/View/View.res +++ b/src/View/View.res @@ -97,41 +97,49 @@ module EventToView = { | BrowseDown | BrowseLeft - let decode: Json.Decode.decoder = Util.Decode.sum(x => { - open Json.Decode - switch x { - | "Activate" => TagOnly(Activate) - | "Deactivate" => TagOnly(Deactivate) - | "Update" => - Contents( - tuple3(string, Util.Decode.converDecoder(Translator.decode), int) |> map((( - sequence, - translation, - index, - )) => Update(sequence, translation, index)), - ) - | "BrowseUp" => TagOnly(BrowseUp) - | "BrowseRight" => TagOnly(BrowseRight) - | "BrowseDown" => TagOnly(BrowseDown) - | "BrowseLeft" => TagOnly(BrowseLeft) - | tag => raise(DecodeError("[EventToView.InputMethod] Unknown constructor: " ++ tag)) - } - }) + let decode = { + open JsonCombinators.Json.Decode + Util.Decode.sum_(x => { + switch x { + | "Activate" => TagOnly(Activate) + | "Deactivate" => TagOnly(Deactivate) + | "Update" => + Contents( + tuple3(string, Translator.decode, int)->map((. ( + sequence, + translation, + index, + )) => Update(sequence, translation, index)), + ) + | "BrowseUp" => TagOnly(BrowseUp) + | "BrowseRight" => TagOnly(BrowseRight) + | "BrowseDown" => TagOnly(BrowseDown) + | "BrowseLeft" => TagOnly(BrowseLeft) + | tag => raise(DecodeError("[EventToView.InputMethod] Unknown constructor: " ++ tag)) + } + }) + } - let encode: Json.Encode.encoder = x => { - open Json.Encode + let encode = x => { + open JsonCombinators.Json.Encode switch x { - | Activate => object_(list{("tag", string("Activate"))}) - | Deactivate => object_(list{("tag", string("Deactivate"))}) + | Activate => + Unsafe.object({ + "tag": string("Activate"), + }) + | Deactivate => + Unsafe.object({ + "tag": string("Deactivate"), + }) | Update(sequence, translation, index) => - object_(list{ - ("tag", string("Update")), - ("contents", (sequence, translation, index) |> tuple3(string, Translator.encode, int)), + Unsafe.object({ + "tag": string("Update"), + "contents": tuple3(string, Translator.encode, int, (sequence, translation, index)), }) - | BrowseUp => object_(list{("tag", string("BrowseUp"))}) - | BrowseRight => object_(list{("tag", string("BrowseRight"))}) - | BrowseDown => object_(list{("tag", string("BrowseDown"))}) - | BrowseLeft => object_(list{("tag", string("BrowseLeft"))}) + | BrowseUp => Unsafe.object({"tag": string("BrowseUp")}) + | BrowseRight => Unsafe.object({"tag": string("BrowseRight")}) + | BrowseDown => Unsafe.object({"tag": string("BrowseDown")}) + | BrowseLeft => Unsafe.object({"tag": string("BrowseLeft")}) } } } @@ -169,31 +177,66 @@ module EventToView = { | "SetStatus" => Contents(string |> map(text => SetStatus(text))) | "PromptInterrupt" => TagOnly(PromptInterrupt) | "PromptIMUpdate" => Contents(string |> map(text => PromptIMUpdate(text))) - | "InputMethod" => Contents(InputMethod.decode |> map(x => InputMethod(x))) + | "InputMethod" => Contents(Util.Decode.convert(InputMethod.decode) |> map(x => InputMethod(x))) | tag => raise(DecodeError("[EventToView] Unknown constructor: " ++ tag)) } }) - let encode: Json.Encode.encoder = x => { - open Json.Encode + // let encode: Json.Encode.encoder = x => { + // open Json.Encode + // switch x { + // | Display(header, body) => + // object_(list{ + // ("tag", string("Display")), + // ("contents", (header, body) |> pair(Header.encode, array(Item.encode))), + // }) + + // | Append(header, body) => + // object_(list{ + // ("tag", string("Append")), + // ("contents", (header, body) |> pair(Header.encode, array(Item.encode))), + // }) + // | SetStatus(text) => object_(list{("tag", string("SetStatus")), ("contents", text |> string)}) + // | PromptInterrupt => object_(list{("tag", string("PromptInterrupt"))}) + // | PromptIMUpdate(text) => + // object_(list{("tag", string("PromptIMUpdate")), ("contents", text |> string)}) + // | InputMethod(payload) => + // object_(list{("tag", string("InputMethod")), ("contents", payload |> InputMethod.encode)}) + // } + // } + + let encode = x => { + open JsonCombinators.Json.Encode switch x { | Display(header, body) => - object_(list{ - ("tag", string("Display")), - ("contents", (header, body) |> pair(Header.encode, array(Item.encode))), + Unsafe.object({ + "tag": string("Display"), + "contents": pair(Header.encode, array(Item.encode), (header, body)), }) - | Append(header, body) => - object_(list{ - ("tag", string("Append")), - ("contents", (header, body) |> pair(Header.encode, array(Item.encode))), + Unsafe.object({ + "tag": string("Append"), + "contents": pair(Header.encode, array(Item.encode), (header, body)), + }) + | SetStatus(text) => + Unsafe.object({ + "tag": string("SetStatus"), + "contents": string(text), + }) + | PromptInterrupt => + Unsafe.object({ + "tag": string("PromptInterrupt"), }) - | SetStatus(text) => object_(list{("tag", string("SetStatus")), ("contents", text |> string)}) - | PromptInterrupt => object_(list{("tag", string("PromptInterrupt"))}) | PromptIMUpdate(text) => - object_(list{("tag", string("PromptIMUpdate")), ("contents", text |> string)}) + Unsafe.object({ + "tag": string("PromptIMUpdate"), + "contents": string(text), + }) | InputMethod(payload) => - object_(list{("tag", string("InputMethod")), ("contents", payload |> InputMethod.encode)}) + Unsafe.object({ + "tag": string("InputMethod"), + "contents": InputMethod.encode(payload), + }) } } } From 7dce9d18738cf94668daeac72722d3f9cd00e1ab Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sun, 3 Dec 2023 23:27:51 +0800 Subject: [PATCH 037/109] [ new ] Generalize sum type JSON encoding & decoding --- lib/js/src/Util/Util.bs.js | 17 +++- lib/js/src/View/View.bs.js | 202 +++++++++++++++++++++---------------- src/Util/Util.res | 19 ++++ src/View/View.res | 104 ++++++------------- 4 files changed, 180 insertions(+), 162 deletions(-) diff --git a/lib/js/src/Util/Util.bs.js b/lib/js/src/Util/Util.bs.js index 2ddc27f6..a449c672 100644 --- a/lib/js/src/Util/Util.bs.js +++ b/lib/js/src/Util/Util.bs.js @@ -206,8 +206,23 @@ function tuple5$1(encodeA, encodeB, encodeC, encodeD, encodeE, param) { ]; } +function sum$1(f, x) { + var tag = Curry._1(f, x); + if (tag.TAG === /* Contents */0) { + return { + tag: tag._0, + contents: tag._1 + }; + } else { + return { + tag: tag._0 + }; + } +} + var Encode = { - tuple5: tuple5$1 + tuple5: tuple5$1, + sum: sum$1 }; function manyIn(elems, elem) { diff --git a/lib/js/src/View/View.bs.js b/lib/js/src/View/View.bs.js index dfbc2a32..19b336f3 100644 --- a/lib/js/src/View/View.bs.js +++ b/lib/js/src/View/View.bs.js @@ -282,48 +282,64 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum_(function (x) { } }); -function encode$2(x) { - if (typeof x !== "number") { - return { - tag: "Update", - contents: Json_Encode$JsonCombinators.tuple3((function (prim) { - return prim; - }), Translator$AgdaModeVscode.encode, (function (prim) { - return prim; - }), [ - x._0, - x._1, - x._2 - ]) - }; - } - switch (x) { - case /* Activate */0 : - return { - tag: "Activate" - }; - case /* Deactivate */1 : - return { - tag: "Deactivate" - }; - case /* BrowseUp */2 : - return { - tag: "BrowseUp" - }; - case /* BrowseRight */3 : - return { - tag: "BrowseRight" - }; - case /* BrowseDown */4 : - return { - tag: "BrowseDown" - }; - case /* BrowseLeft */5 : - return { - tag: "BrowseLeft" - }; - - } +function encode$2(param) { + return Util$AgdaModeVscode.Encode.sum((function (x) { + if (typeof x !== "number") { + return { + TAG: 0, + _0: "Update", + _1: Json_Encode$JsonCombinators.tuple3((function (prim) { + return prim; + }), Translator$AgdaModeVscode.encode, (function (prim) { + return prim; + }), [ + x._0, + x._1, + x._2 + ]), + [Symbol.for("name")]: "Contents" + }; + } + switch (x) { + case /* Activate */0 : + return { + TAG: 1, + _0: "Activate", + [Symbol.for("name")]: "TagOnly" + }; + case /* Deactivate */1 : + return { + TAG: 1, + _0: "Deactivate", + [Symbol.for("name")]: "TagOnly" + }; + case /* BrowseUp */2 : + return { + TAG: 1, + _0: "BrowseUp", + [Symbol.for("name")]: "TagOnly" + }; + case /* BrowseRight */3 : + return { + TAG: 1, + _0: "BrowseRight", + [Symbol.for("name")]: "TagOnly" + }; + case /* BrowseDown */4 : + return { + TAG: 1, + _0: "BrowseDown", + [Symbol.for("name")]: "TagOnly" + }; + case /* BrowseLeft */5 : + return { + TAG: 1, + _0: "BrowseLeft", + [Symbol.for("name")]: "TagOnly" + }; + + } + }), param); } var InputMethod = { @@ -449,50 +465,64 @@ var decode$3 = Util$AgdaModeVscode.Decode.sum(function (x) { } }); -function encode$3(x) { - if (typeof x === "number") { - return { - tag: "PromptInterrupt" - }; - } - switch (x.TAG | 0) { - case /* Display */0 : - return { - tag: "Display", - contents: Json_Encode$JsonCombinators.pair(encode, (function (param) { - return Json_Encode$JsonCombinators.array(Item$AgdaModeVscode.encode, param); - }), [ - x._0, - x._1 - ]) - }; - case /* Append */1 : - return { - tag: "Append", - contents: Json_Encode$JsonCombinators.pair(encode, (function (param) { - return Json_Encode$JsonCombinators.array(Item$AgdaModeVscode.encode, param); - }), [ - x._0, - x._1 - ]) - }; - case /* SetStatus */2 : - return { - tag: "SetStatus", - contents: x._0 - }; - case /* PromptIMUpdate */3 : - return { - tag: "PromptIMUpdate", - contents: x._0 - }; - case /* InputMethod */4 : - return { - tag: "InputMethod", - contents: encode$2(x._0) - }; - - } +function encode$3(param) { + return Util$AgdaModeVscode.Encode.sum((function (x) { + if (typeof x === "number") { + return { + TAG: 1, + _0: "PromptInterrupt", + [Symbol.for("name")]: "TagOnly" + }; + } + switch (x.TAG | 0) { + case /* Display */0 : + return { + TAG: 0, + _0: "Display", + _1: Json_Encode$JsonCombinators.pair(encode, (function (param) { + return Json_Encode$JsonCombinators.array(Item$AgdaModeVscode.encode, param); + }), [ + x._0, + x._1 + ]), + [Symbol.for("name")]: "Contents" + }; + case /* Append */1 : + return { + TAG: 0, + _0: "Append", + _1: Json_Encode$JsonCombinators.pair(encode, (function (param) { + return Json_Encode$JsonCombinators.array(Item$AgdaModeVscode.encode, param); + }), [ + x._0, + x._1 + ]), + [Symbol.for("name")]: "Contents" + }; + case /* SetStatus */2 : + return { + TAG: 0, + _0: "SetStatus", + _1: x._0, + [Symbol.for("name")]: "Contents" + }; + case /* PromptIMUpdate */3 : + return { + TAG: 0, + _0: "PromptIMUpdate", + _1: x._0, + [Symbol.for("name")]: "Contents" + }; + case /* InputMethod */4 : + return { + TAG: 0, + _0: "InputMethod", + _1: encode$2(x._0), + [Symbol.for("name")]: "Contents" + }; + + } + }), param); } var EventToView = { diff --git a/src/Util/Util.res b/src/Util/Util.res index 5362b6b2..13a47e91 100644 --- a/src/Util/Util.res +++ b/src/Util/Util.res @@ -106,6 +106,25 @@ module Encode = { open Json.Encode let tuple5 = (encodeA, encodeB, encodeC, encodeD, encodeE, (a, b, c, d, e)) => jsonArray([encodeA(a), encodeB(b), encodeC(c), encodeD(d), encodeE(e)]) + + open! JsonCombinators.Json.Encode + + type fieldType<'a> = + | Contents(string, Js.Json.t) + | TagOnly('a) + + let sum = (f, x) => + switch f(x) { + | Contents(tag, json) => + Unsafe.object({ + "tag": string(tag), + "contents": json, + }) + | TagOnly(tag) => + Unsafe.object({ + "tag": string(tag), + }) + } } module React' = React diff --git a/src/View/View.res b/src/View/View.res index e3ccbcb6..8ac96896 100644 --- a/src/View/View.res +++ b/src/View/View.res @@ -120,27 +120,23 @@ module EventToView = { }) } - let encode = x => { + let encode = { open JsonCombinators.Json.Encode - switch x { - | Activate => - Unsafe.object({ - "tag": string("Activate"), - }) - | Deactivate => - Unsafe.object({ - "tag": string("Deactivate"), - }) - | Update(sequence, translation, index) => - Unsafe.object({ - "tag": string("Update"), - "contents": tuple3(string, Translator.encode, int, (sequence, translation, index)), - }) - | BrowseUp => Unsafe.object({"tag": string("BrowseUp")}) - | BrowseRight => Unsafe.object({"tag": string("BrowseRight")}) - | BrowseDown => Unsafe.object({"tag": string("BrowseDown")}) - | BrowseLeft => Unsafe.object({"tag": string("BrowseLeft")}) - } + Util.Encode.sum(x => + switch x { + | Activate => Util.Encode.TagOnly("Activate") + | Deactivate => Util.Encode.TagOnly("Deactivate") + | Update(sequence, translation, index) => + Util.Encode.Contents( + "Update", + tuple3(string, Translator.encode, int, (sequence, translation, index)), + ) + | BrowseUp => Util.Encode.TagOnly("BrowseUp") + | BrowseRight => Util.Encode.TagOnly("BrowseRight") + | BrowseDown => Util.Encode.TagOnly("BrowseDown") + | BrowseLeft => Util.Encode.TagOnly("BrowseLeft") + } + ) } } @@ -182,62 +178,20 @@ module EventToView = { } }) - // let encode: Json.Encode.encoder = x => { - // open Json.Encode - // switch x { - // | Display(header, body) => - // object_(list{ - // ("tag", string("Display")), - // ("contents", (header, body) |> pair(Header.encode, array(Item.encode))), - // }) - - // | Append(header, body) => - // object_(list{ - // ("tag", string("Append")), - // ("contents", (header, body) |> pair(Header.encode, array(Item.encode))), - // }) - // | SetStatus(text) => object_(list{("tag", string("SetStatus")), ("contents", text |> string)}) - // | PromptInterrupt => object_(list{("tag", string("PromptInterrupt"))}) - // | PromptIMUpdate(text) => - // object_(list{("tag", string("PromptIMUpdate")), ("contents", text |> string)}) - // | InputMethod(payload) => - // object_(list{("tag", string("InputMethod")), ("contents", payload |> InputMethod.encode)}) - // } - // } - - let encode = x => { + let encode = { open JsonCombinators.Json.Encode - switch x { - | Display(header, body) => - Unsafe.object({ - "tag": string("Display"), - "contents": pair(Header.encode, array(Item.encode), (header, body)), - }) - | Append(header, body) => - Unsafe.object({ - "tag": string("Append"), - "contents": pair(Header.encode, array(Item.encode), (header, body)), - }) - | SetStatus(text) => - Unsafe.object({ - "tag": string("SetStatus"), - "contents": string(text), - }) - | PromptInterrupt => - Unsafe.object({ - "tag": string("PromptInterrupt"), - }) - | PromptIMUpdate(text) => - Unsafe.object({ - "tag": string("PromptIMUpdate"), - "contents": string(text), - }) - | InputMethod(payload) => - Unsafe.object({ - "tag": string("InputMethod"), - "contents": InputMethod.encode(payload), - }) - } + Util.Encode.sum(x => + switch x { + | Display(header, body) => + Util.Encode.Contents("Display", pair(Header.encode, array(Item.encode), (header, body))) + | Append(header, body) => + Util.Encode.Contents("Append", pair(Header.encode, array(Item.encode), (header, body))) + | SetStatus(text) => Util.Encode.Contents("SetStatus", string(text)) + | PromptInterrupt => Util.Encode.TagOnly("PromptInterrupt") + | PromptIMUpdate(text) => Util.Encode.Contents("PromptIMUpdate", string(text)) + | InputMethod(payload) => Util.Encode.Contents("InputMethod", InputMethod.encode(payload)) + } + ) } } From 81fecacc8ff4ca0f595c150cd39a0525329e429f Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Mon, 4 Dec 2023 10:58:39 +0800 Subject: [PATCH 038/109] [ change ] Upgrade JSON encoder/decoder for View.EventToView.t --- lib/js/src/Util/Util.bs.js | 4 +- lib/js/src/View/View.bs.js | 196 ++++++++++++++++--------------------- src/Util/Util.res | 8 +- src/View/View.res | 97 +++++++++++------- 4 files changed, 149 insertions(+), 156 deletions(-) diff --git a/lib/js/src/Util/Util.bs.js b/lib/js/src/Util/Util.bs.js index a449c672..94323010 100644 --- a/lib/js/src/Util/Util.bs.js +++ b/lib/js/src/Util/Util.bs.js @@ -55,7 +55,7 @@ function convert(translation, json) { function sum_(decoder) { return Json_Decode$JsonCombinators.flatMap(Json_Decode$JsonCombinators.field("tag", Json_Decode$JsonCombinators.string), (function (tag) { var d = Curry._1(decoder, tag); - if (d.TAG === /* Contents */0) { + if (d.TAG === /* Payload */0) { return Json_Decode$JsonCombinators.field("contents", d._0); } var d$1 = d._0; @@ -208,7 +208,7 @@ function tuple5$1(encodeA, encodeB, encodeC, encodeD, encodeE, param) { function sum$1(f, x) { var tag = Curry._1(f, x); - if (tag.TAG === /* Contents */0) { + if (tag.TAG === /* Payload */0) { return { tag: tag._0, contents: tag._1 diff --git a/lib/js/src/View/View.bs.js b/lib/js/src/View/View.bs.js index 19b336f3..9aa1863f 100644 --- a/lib/js/src/View/View.bs.js +++ b/lib/js/src/View/View.bs.js @@ -17,133 +17,99 @@ function toString(x) { return x._0; } -var decode = Util$AgdaModeVscode.Decode.sum(function (x) { +var decode = Util$AgdaModeVscode.Decode.sum_(function (x) { switch (x) { case "Error" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (text) { - return { - TAG: 3, - _0: text, - [Symbol.for("name")]: "Error" - }; - }), Json_decode.string, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (text) { + return { + TAG: 3, + _0: text, + [Symbol.for("name")]: "Error" + }; + })), + [Symbol.for("name")]: "Payload" }; case "Plain" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (text) { - return { - TAG: 0, - _0: text, - [Symbol.for("name")]: "Plain" - }; - }), Json_decode.string, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (text) { + return { + TAG: 0, + _0: text, + [Symbol.for("name")]: "Plain" + }; + })), + [Symbol.for("name")]: "Payload" }; case "Success" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (text) { - return { - TAG: 1, - _0: text, - [Symbol.for("name")]: "Success" - }; - }), Json_decode.string, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (text) { + return { + TAG: 1, + _0: text, + [Symbol.for("name")]: "Success" + }; + })), + [Symbol.for("name")]: "Payload" }; case "Warning" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (text) { - return { - TAG: 2, - _0: text, - [Symbol.for("name")]: "Warning" - }; - }), Json_decode.string, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (text) { + return { + TAG: 2, + _0: text, + [Symbol.for("name")]: "Warning" + }; + })), + [Symbol.for("name")]: "Payload" }; default: throw { - RE_EXN_ID: Json_decode.DecodeError, + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, _1: "[Header] Unknown constructor: " + x, Error: new Error() }; } }); -function encode(x) { - switch (x.TAG | 0) { - case /* Plain */0 : - return Json_encode.object_({ - hd: [ - "tag", - "Plain" - ], - tl: { - hd: [ - "contents", - x._0 - ], - tl: /* [] */0 - } - }); - case /* Success */1 : - return Json_encode.object_({ - hd: [ - "tag", - "Success" - ], - tl: { - hd: [ - "contents", - x._0 - ], - tl: /* [] */0 - } - }); - case /* Warning */2 : - return Json_encode.object_({ - hd: [ - "tag", - "Warning" - ], - tl: { - hd: [ - "contents", - x._0 - ], - tl: /* [] */0 - } - }); - case /* Error */3 : - return Json_encode.object_({ - hd: [ - "tag", - "Error" - ], - tl: { - hd: [ - "contents", - x._0 - ], - tl: /* [] */0 - } - }); - - } +function encode(param) { + return Util$AgdaModeVscode.Encode.sum((function (x) { + switch (x.TAG | 0) { + case /* Plain */0 : + return { + TAG: 0, + _0: "Plain", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; + case /* Success */1 : + return { + TAG: 0, + _0: "Success", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; + case /* Warning */2 : + return { + TAG: 0, + _0: "Warning", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; + case /* Error */3 : + return { + TAG: 0, + _0: "Error", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; + + } + }), param); } var Header = { @@ -271,7 +237,7 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum_(function (x) { [Symbol.for("name")]: "Update" }; })), - [Symbol.for("name")]: "Contents" + [Symbol.for("name")]: "Payload" }; default: throw { @@ -297,7 +263,7 @@ function encode$2(param) { x._1, x._2 ]), - [Symbol.for("name")]: "Contents" + [Symbol.for("name")]: "Payload" }; } switch (x) { @@ -380,7 +346,9 @@ var decode$3 = Util$AgdaModeVscode.Decode.sum(function (x) { [Symbol.for("name")]: "Append" }; }), (function (param) { - return Json_decode.pair(decode, (function (param) { + return Json_decode.pair((function (param) { + return Util$AgdaModeVscode.Decode.convert(decode, param); + }), (function (param) { return Json_decode.array(Item$AgdaModeVscode.decode, param); }), param); }), param); @@ -399,7 +367,9 @@ var decode$3 = Util$AgdaModeVscode.Decode.sum(function (x) { [Symbol.for("name")]: "Display" }; }), (function (param) { - return Json_decode.pair(decode, (function (param) { + return Json_decode.pair((function (param) { + return Util$AgdaModeVscode.Decode.convert(decode, param); + }), (function (param) { return Json_decode.array(Item$AgdaModeVscode.decode, param); }), param); }), param); @@ -485,7 +455,7 @@ function encode$3(param) { x._0, x._1 ]), - [Symbol.for("name")]: "Contents" + [Symbol.for("name")]: "Payload" }; case /* Append */1 : return { @@ -497,28 +467,28 @@ function encode$3(param) { x._0, x._1 ]), - [Symbol.for("name")]: "Contents" + [Symbol.for("name")]: "Payload" }; case /* SetStatus */2 : return { TAG: 0, _0: "SetStatus", _1: x._0, - [Symbol.for("name")]: "Contents" + [Symbol.for("name")]: "Payload" }; case /* PromptIMUpdate */3 : return { TAG: 0, _0: "PromptIMUpdate", _1: x._0, - [Symbol.for("name")]: "Contents" + [Symbol.for("name")]: "Payload" }; case /* InputMethod */4 : return { TAG: 0, _0: "InputMethod", _1: encode$2(x._0), - [Symbol.for("name")]: "Contents" + [Symbol.for("name")]: "Payload" }; } @@ -548,7 +518,9 @@ var decode$4 = Util$AgdaModeVscode.Decode.sum(function (x) { [Symbol.for("name")]: "Prompt" }; }), (function (param) { - return Json_decode.pair(decode, decode$1, param); + return Json_decode.pair((function (param) { + return Util$AgdaModeVscode.Decode.convert(decode, param); + }), decode$1, param); }), param); }), [Symbol.for("name")]: "Contents" diff --git a/src/Util/Util.res b/src/Util/Util.res index 13a47e91..3f99044d 100644 --- a/src/Util/Util.res +++ b/src/Util/Util.res @@ -19,14 +19,14 @@ module Decode = { } type fieldType_<'a> = - | Contents(JsonCombinators.Json.Decode.t<'a>) + | Payload(JsonCombinators.Json.Decode.t<'a>) | TagOnly('a) let sum_ = decoder => { open JsonCombinators.Json.Decode field("tag", string)->flatMap((. tag) => switch decoder(tag) { - | Contents(d) => field("contents", d) + | Payload(d) => field("contents", d) | TagOnly(d) => custom((. _) => d) } ) @@ -110,12 +110,12 @@ module Encode = { open! JsonCombinators.Json.Encode type fieldType<'a> = - | Contents(string, Js.Json.t) + | Payload(string, Js.Json.t) | TagOnly('a) let sum = (f, x) => switch f(x) { - | Contents(tag, json) => + | Payload(tag, json) => Unsafe.object({ "tag": string(tag), "contents": json, diff --git a/src/View/View.res b/src/View/View.res index 8ac96896..ca7e714c 100644 --- a/src/View/View.res +++ b/src/View/View.res @@ -15,25 +15,40 @@ module Header = { | Error(string) => string } - let decode: Json.Decode.decoder = Util.Decode.sum(x => { - open Json.Decode - switch x { - | "Plain" => Contents(string |> map(text => Plain(text))) - | "Success" => Contents(string |> map(text => Success(text))) - | "Warning" => Contents(string |> map(text => Warning(text))) - | "Error" => Contents(string |> map(text => Error(text))) - | tag => raise(DecodeError("[Header] Unknown constructor: " ++ tag)) - } - }) + // let decode: Json.Decode.decoder = Util.Decode.sum(x => { + // open Json.Decode + // switch x { + // | "Plain" => Contents(string |> map(text => Plain(text))) + // | "Success" => Contents(string |> map(text => Success(text))) + // | "Warning" => Contents(string |> map(text => Warning(text))) + // | "Error" => Contents(string |> map(text => Error(text))) + // | tag => raise(DecodeError("[Header] Unknown constructor: " ++ tag)) + // } + // }) + + let decode = { + open JsonCombinators.Json.Decode + Util.Decode.sum_(x => { + switch x { + | "Plain" => Payload(string->map((. text) => Plain(text))) + | "Success" => Payload(string->map((. text) => Success(text))) + | "Warning" => Payload(string->map((. text) => Warning(text))) + | "Error" => Payload(string->map((. text) => Error(text))) + | tag => raise(DecodeError("[Header] Unknown constructor: " ++ tag)) + } + }) + } - let encode: Json.Encode.encoder = x => { - open Json.Encode - switch x { - | Plain(text) => object_(list{("tag", string("Plain")), ("contents", text |> string)}) - | Success(text) => object_(list{("tag", string("Success")), ("contents", text |> string)}) - | Warning(text) => object_(list{("tag", string("Warning")), ("contents", text |> string)}) - | Error(text) => object_(list{("tag", string("Error")), ("contents", text |> string)}) - } + let encode = { + open JsonCombinators.Json.Encode + Util.Encode.sum(x => + switch x { + | Plain(text) => Payload("Plain", string(text)) + | Success(text) => Payload("Success", string(text)) + | Warning(text) => Payload("Warning", string(text)) + | Error(text) => Payload("Error", string(text)) + } + ) } } @@ -104,7 +119,7 @@ module EventToView = { | "Activate" => TagOnly(Activate) | "Deactivate" => TagOnly(Deactivate) | "Update" => - Contents( + Payload( tuple3(string, Translator.decode, int)->map((. ( sequence, translation, @@ -124,17 +139,14 @@ module EventToView = { open JsonCombinators.Json.Encode Util.Encode.sum(x => switch x { - | Activate => Util.Encode.TagOnly("Activate") - | Deactivate => Util.Encode.TagOnly("Deactivate") + | Activate => TagOnly("Activate") + | Deactivate => TagOnly("Deactivate") | Update(sequence, translation, index) => - Util.Encode.Contents( - "Update", - tuple3(string, Translator.encode, int, (sequence, translation, index)), - ) - | BrowseUp => Util.Encode.TagOnly("BrowseUp") - | BrowseRight => Util.Encode.TagOnly("BrowseRight") - | BrowseDown => Util.Encode.TagOnly("BrowseDown") - | BrowseLeft => Util.Encode.TagOnly("BrowseLeft") + Payload("Update", tuple3(string, Translator.encode, int, (sequence, translation, index))) + | BrowseUp => TagOnly("BrowseUp") + | BrowseRight => TagOnly("BrowseRight") + | BrowseDown => TagOnly("BrowseDown") + | BrowseLeft => TagOnly("BrowseLeft") } ) } @@ -164,11 +176,17 @@ module EventToView = { switch x { | "Display" => Contents( - pair(Header.decode, array(Item.decode)) |> map(((header, body)) => Display(header, body)), + pair(Util.Decode.convert(Header.decode), array(Item.decode)) |> map((( + header, + body, + )) => Display(header, body)), ) | "Append" => Contents( - pair(Header.decode, array(Item.decode)) |> map(((header, body)) => Append(header, body)), + pair(Util.Decode.convert(Header.decode), array(Item.decode)) |> map((( + header, + body, + )) => Append(header, body)), ) | "SetStatus" => Contents(string |> map(text => SetStatus(text))) | "PromptInterrupt" => TagOnly(PromptInterrupt) @@ -183,13 +201,13 @@ module EventToView = { Util.Encode.sum(x => switch x { | Display(header, body) => - Util.Encode.Contents("Display", pair(Header.encode, array(Item.encode), (header, body))) + Payload("Display", pair(Header.encode, array(Item.encode), (header, body))) | Append(header, body) => - Util.Encode.Contents("Append", pair(Header.encode, array(Item.encode), (header, body))) - | SetStatus(text) => Util.Encode.Contents("SetStatus", string(text)) - | PromptInterrupt => Util.Encode.TagOnly("PromptInterrupt") - | PromptIMUpdate(text) => Util.Encode.Contents("PromptIMUpdate", string(text)) - | InputMethod(payload) => Util.Encode.Contents("InputMethod", InputMethod.encode(payload)) + Payload("Append", pair(Header.encode, array(Item.encode), (header, body))) + | SetStatus(text) => Payload("SetStatus", string(text)) + | PromptInterrupt => TagOnly("PromptInterrupt") + | PromptIMUpdate(text) => Payload("PromptIMUpdate", string(text)) + | InputMethod(payload) => Payload("InputMethod", InputMethod.encode(payload)) } ) } @@ -209,7 +227,10 @@ module Request = { switch x { | "Prompt" => Contents( - pair(Header.decode, Prompt.decode) |> map(((header, prompt)) => Prompt(header, prompt)), + pair(Util.Decode.convert(Header.decode), Prompt.decode) |> map(((header, prompt)) => Prompt( + header, + prompt, + )), ) | tag => raise(DecodeError("[Request] Unknown constructor: " ++ tag)) } From 21aff72cf8920bac1c5d37b8c596727f0179d895 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Mon, 4 Dec 2023 11:06:43 +0800 Subject: [PATCH 039/109] [ change ] Upgrade JSON encoder/decoder for AgdaPosition/AgdaInterval/AgdaRange/Interval --- lib/js/src/View/Common.bs.js | 122 ++++++++++++++++------------------- lib/js/src/View/View.bs.js | 4 +- src/View/Common.res | 72 +++++++++++---------- src/View/View.res | 3 +- 4 files changed, 96 insertions(+), 105 deletions(-) diff --git a/lib/js/src/View/Common.bs.js b/lib/js/src/View/Common.bs.js index 7abcf013..290cf845 100644 --- a/lib/js/src/View/Common.bs.js +++ b/lib/js/src/View/Common.bs.js @@ -7,33 +7,30 @@ var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Pervasives = require("rescript/lib/js/pervasives.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Json_decode = require("@glennsl/bs-json/lib/js/src/Json_decode.bs.js"); -var Json_encode = require("@glennsl/bs-json/lib/js/src/Json_encode.bs.js"); var Util$AgdaModeVscode = require("../Util/Util.bs.js"); +var Json_Decode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Decode.bs.js"); +var Json_Encode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Encode.bs.js"); var Emacs__Parser$AgdaModeVscode = require("./Panel/Emacs/Emacs__Parser.bs.js"); -function decode(param) { - return Json_decode.map((function (param) { - return { - line: param[0], - col: param[1], - pos: param[2] - }; - }), (function (param) { - return Json_decode.tuple3(Json_decode.$$int, Json_decode.$$int, Json_decode.$$int, param); - }), param); -} +var decode = Json_Decode$JsonCombinators.object(function (field) { + return { + line: field.required("line", Json_Decode$JsonCombinators.$$int), + col: field.required("col", Json_Decode$JsonCombinators.$$int), + pos: field.required("pos", Json_Decode$JsonCombinators.$$int) + }; + }); -function encode(x) { - return Json_encode.tuple3((function (prim) { +function encode(param) { + return Json_Encode$JsonCombinators.tuple3((function (prim) { return prim; }), (function (prim) { return prim; }), (function (prim) { return prim; }), [ - x.line, - x.col, - x.pos + param.line, + param.col, + param.pos ]); } @@ -66,21 +63,17 @@ function toString(self) { } } -function decode$1(param) { - return Json_decode.map((function (param) { - return { - start: param[0], - end_: param[1] - }; - }), (function (param) { - return Json_decode.pair(decode, decode, param); - }), param); -} +var decode$1 = Json_Decode$JsonCombinators.object(function (field) { + return { + start: field.required("start", decode), + end_: field.required("end", decode) + }; + }); -function encode$1(x) { - return Json_encode.pair(encode, encode, [ - x.start, - x.end_ +function encode$1(param) { + return Json_Encode$JsonCombinators.tuple2(encode, encode, [ + param.start, + param.end_ ]); } @@ -354,7 +347,9 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { return Json_decode.pair((function (param) { return Json_decode.optional(Json_decode.string, param); }), (function (param) { - return Json_decode.array(decode$1, param); + return Json_decode.array((function (param) { + return Util$AgdaModeVscode.Decode.convert(decode$1, param); + }), param); }), param); }), param); }), @@ -369,39 +364,32 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { } }); -function encode$2(x) { - if (x) { - return Json_encode.object_({ - hd: [ - "tag", - "Range" - ], - tl: { - hd: [ - "contents", - Json_encode.pair((function (param) { - return Json_encode.nullable((function (prim) { - return prim; - }), param); - }), (function (param) { - return Json_encode.array(encode$1, param); - }), [ - x._0, - x._1 - ]) - ], - tl: /* [] */0 +function encode$2(param) { + return Util$AgdaModeVscode.Encode.sum((function (x) { + if (x) { + return { + TAG: 0, + _0: "Range", + _1: Json_Encode$JsonCombinators.pair((function (param) { + return Json_Encode$JsonCombinators.option((function (prim) { + return prim; + }), param); + }), (function (param) { + return Json_Encode$JsonCombinators.array(encode$1, param); + }), [ + x._0, + x._1 + ]), + [Symbol.for("name")]: "Payload" + }; + } else { + return { + TAG: 1, + _0: "NoRange", + [Symbol.for("name")]: "TagOnly" + }; } - }); - } else { - return Json_encode.object_({ - hd: [ - "tag", - "NoRange" - ], - tl: /* [] */0 - }); - } + }), param); } var AgdaRange = { @@ -420,12 +408,10 @@ function contains(interval, offset) { } } -function decode$3(param) { - return Json_decode.pair(Json_decode.$$int, Json_decode.$$int, param); -} +var decode$3 = Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.$$int, Json_Decode$JsonCombinators.$$int); function encode$3(param) { - return Json_encode.pair((function (prim) { + return Json_Encode$JsonCombinators.pair((function (prim) { return prim; }), (function (prim) { return prim; diff --git a/lib/js/src/View/View.bs.js b/lib/js/src/View/View.bs.js index 9aa1863f..49392fc3 100644 --- a/lib/js/src/View/View.bs.js +++ b/lib/js/src/View/View.bs.js @@ -836,7 +836,9 @@ var decode$8 = Util$AgdaModeVscode.Decode.sum(function (x) { _0: interval, [Symbol.for("name")]: "MouseSelect" }; - }), Common$AgdaModeVscode.Interval.decode, param); + }), (function (param) { + return Util$AgdaModeVscode.Decode.convert(Common$AgdaModeVscode.Interval.decode, param); + }), param); }), [Symbol.for("name")]: "Contents" }; diff --git a/src/View/Common.res b/src/View/Common.res index adaaf26c..20523763 100644 --- a/src/View/Common.res +++ b/src/View/Common.res @@ -10,20 +10,18 @@ module AgdaPosition = { pos: int, } - let decode: Json.Decode.decoder = { - open Json.Decode - tuple3(int, int, int) |> map(((line, col, pos)) => { - line, - col, - pos, + let decode = { + open JsonCombinators.Json.Decode + object(field => { + line: field.required(. "line", int), + col: field.required(. "col", int), + pos: field.required(. "pos", int), }) } - let encode: Json.Encode.encoder = x => { - open Json.Encode - switch x { - | {line, col, pos} => (line, col, pos) |> tuple3(int, int, int) - } + let encode = ({line, col, pos}) => { + open JsonCombinators.Json.Encode + tuple3(int, int, int, (line, col, pos)) } } @@ -62,19 +60,17 @@ module AgdaInterval = { (string_of_int(self.end_.line) ++ ("," ++ string_of_int(self.end_.col)))))) } - let decode: Json.Decode.decoder = { - open Json.Decode - pair(AgdaPosition.decode, AgdaPosition.decode) |> map(((start, end_)) => { - start, - end_, + let decode = { + open JsonCombinators.Json.Decode + object(field => { + start: field.required(. "start", AgdaPosition.decode), + end_: field.required(. "end", AgdaPosition.decode), }) } - let encode: Json.Encode.encoder = x => { - open Json.Encode - switch x { - | {start, end_} => (start, end_) |> pair(AgdaPosition.encode, AgdaPosition.encode) - } + let encode = ({start, end_}) => { + open JsonCombinators.Json.Encode + tuple2(AgdaPosition.encode, AgdaPosition.encode, (start, end_)) } } @@ -283,26 +279,25 @@ module AgdaRange = { switch x { | "Range" => Contents( - pair(optional(string), array(AgdaInterval.decode)) |> map(((source, intervals)) => Range( + pair(optional(string), array(Util.Decode.convert(AgdaInterval.decode))) |> map((( source, intervals, - )), + )) => Range(source, intervals)), ) | "NoRange" => TagOnly(NoRange) | tag => raise(DecodeError("[Agda.Range] Unknown constructor: " ++ tag)) } }) - let encode: Json.Encode.encoder = x => { - open Json.Encode - switch x { - | Range(source, intervals) => - object_(list{ - ("tag", string("Range")), - ("contents", (source, intervals) |> pair(nullable(string), array(AgdaInterval.encode))), - }) - | NoRange => object_(list{("tag", string("NoRange"))}) - } + let encode = { + open JsonCombinators.Json.Encode + Util.Encode.sum(x => + switch x { + | NoRange => TagOnly("NoRange") + | Range(source, intervals) => + Payload("Range", pair(option(string), array(AgdaInterval.encode), (source, intervals))) + } + ) } } @@ -316,6 +311,13 @@ module Interval = { start <= offset && offset <= end_ } - let decode = Json.Decode.pair(Json.Decode.int, Json.Decode.int) - let encode = Json.Encode.pair(Json.Encode.int, Json.Encode.int) + let decode = { + open JsonCombinators.Json.Decode + pair(int, int) + } + + let encode = { + open JsonCombinators.Json.Encode + pair(int, int) + } } diff --git a/src/View/View.res b/src/View/View.res index ca7e714c..18c38c59 100644 --- a/src/View/View.res +++ b/src/View/View.res @@ -343,7 +343,8 @@ module EventFromView = { let decode: Json.Decode.decoder = Util.Decode.sum(x => switch x { - | "MouseSelect" => Contents(Interval.decode |> map(interval => MouseSelect(interval))) + | "MouseSelect" => + Contents(Util.Decode.convert(Interval.decode) |> map(interval => MouseSelect(interval))) | "KeyUpdate" => Contents(string |> map(char => KeyUpdate(char))) | "BrowseUp" => TagOnly(BrowseUp) | "BrowseDown" => TagOnly(BrowseDown) From 9e8969233625679d8e102fa5951ddf9d29a2f340 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Mon, 4 Dec 2023 12:35:11 +0800 Subject: [PATCH 040/109] [ change ] Refine Util.Decode.convert --- lib/js/src/Util/Util.bs.js | 3 +- lib/js/src/View/Common.bs.js | 33 ++++++++-------------- lib/js/src/View/Component/Item.bs.js | 35 ++++++++++++++---------- lib/js/src/View/Component/Link.bs.js | 4 ++- lib/js/src/View/Component/RichText.bs.js | 4 ++- src/Util/Util.res | 4 +-- src/View/Common.res | 30 ++++++++++---------- src/View/Component/Item.res | 23 ++++++++-------- src/View/Component/Link.res | 2 +- src/View/Component/RichText.res | 10 +++---- 10 files changed, 75 insertions(+), 73 deletions(-) diff --git a/lib/js/src/Util/Util.bs.js b/lib/js/src/Util/Util.bs.js index 94323010..bea43791 100644 --- a/lib/js/src/Util/Util.bs.js +++ b/lib/js/src/Util/Util.bs.js @@ -47,7 +47,8 @@ function convert(translation, json) { } throw { RE_EXN_ID: TempDecodeError, - _1: json, + _1: translation$1._0, + _2: json, Error: new Error() }; } diff --git a/lib/js/src/View/Common.bs.js b/lib/js/src/View/Common.bs.js index 290cf845..3183118c 100644 --- a/lib/js/src/View/Common.bs.js +++ b/lib/js/src/View/Common.bs.js @@ -6,7 +6,6 @@ var Belt_List = require("rescript/lib/js/belt_List.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Pervasives = require("rescript/lib/js/pervasives.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); -var Json_decode = require("@glennsl/bs-json/lib/js/src/Json_decode.bs.js"); var Util$AgdaModeVscode = require("../Util/Util.bs.js"); var Json_Decode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Decode.bs.js"); var Json_Encode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Encode.bs.js"); @@ -325,7 +324,7 @@ function toString$1(self) { } } -var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { +var decode$2 = Util$AgdaModeVscode.Decode.sum_(function (x) { switch (x) { case "NoRange" : return { @@ -336,29 +335,19 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { case "Range" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (param) { - return { - _0: param[0], - _1: param[1], - [Symbol.for("name")]: "Range" - }; - }), (function (param) { - return Json_decode.pair((function (param) { - return Json_decode.optional(Json_decode.string, param); - }), (function (param) { - return Json_decode.array((function (param) { - return Util$AgdaModeVscode.Decode.convert(decode$1, param); - }), param); - }), param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.option(Json_Decode$JsonCombinators.string), Json_Decode$JsonCombinators.array(decode$1)), (function (param) { + return { + _0: param[0], + _1: param[1], + [Symbol.for("name")]: "Range" + }; + })), + [Symbol.for("name")]: "Payload" }; default: throw { - RE_EXN_ID: Json_decode.DecodeError, - _1: "[Agda.Range] Unknown constructor: " + x, + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, + _1: "[AgdaRange] Unknown constructor: " + x, Error: new Error() }; } diff --git a/lib/js/src/View/Component/Item.bs.js b/lib/js/src/View/Component/Item.bs.js index 2d876775..302d9b40 100644 --- a/lib/js/src/View/Component/Item.bs.js +++ b/lib/js/src/View/Component/Item.bs.js @@ -9,6 +9,7 @@ var Link$AgdaModeVscode = require("./Link.bs.js"); var Util$AgdaModeVscode = require("../../Util/Util.bs.js"); var Common$AgdaModeVscode = require("../Common.bs.js"); var RichText$AgdaModeVscode = require("./RichText.bs.js"); +var Json_Decode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Decode.bs.js"); function plainText(s) { return { @@ -155,6 +156,15 @@ var decode = Util$AgdaModeVscode.Decode.sum(function (x) { [Symbol.for("name")]: "Contents" }; case "Labeled" : + var partial_arg = Json_Decode$JsonCombinators.option(Common$AgdaModeVscode.AgdaRange.decode); + var partial_arg$1 = function (param) { + return Util$AgdaModeVscode.Decode.convert(partial_arg, param); + }; + var partial_arg$2 = function (param) { + return Util$AgdaModeVscode.Decode.tuple5(RichText$AgdaModeVscode.decode, (function (param) { + return Json_decode.optional(Json_decode.string, param); + }), partial_arg$1, Json_decode.string, Json_decode.string, param); + }; return { TAG: 0, _0: (function (param) { @@ -168,17 +178,20 @@ var decode = Util$AgdaModeVscode.Decode.sum(function (x) { _4: param[2], [Symbol.for("name")]: "Labeled" }; - }), (function (param) { - return Util$AgdaModeVscode.Decode.tuple5(RichText$AgdaModeVscode.decode, (function (param) { - return Json_decode.optional(Json_decode.string, param); - }), (function (param) { - return Json_decode.optional(Common$AgdaModeVscode.AgdaRange.decode, param); - }), Json_decode.string, Json_decode.string, param); - }), param); + }), partial_arg$2, param); }), [Symbol.for("name")]: "Contents" }; case "Unlabeled" : + var partial_arg$3 = Json_Decode$JsonCombinators.option(Common$AgdaModeVscode.AgdaRange.decode); + var partial_arg$4 = function (param) { + return Util$AgdaModeVscode.Decode.convert(partial_arg$3, param); + }; + var partial_arg$5 = function (param) { + return Json_decode.tuple3(RichText$AgdaModeVscode.decode, (function (param) { + return Json_decode.optional(Json_decode.string, param); + }), partial_arg$4, param); + }; return { TAG: 0, _0: (function (param) { @@ -190,13 +203,7 @@ var decode = Util$AgdaModeVscode.Decode.sum(function (x) { _2: param[2], [Symbol.for("name")]: "Unlabeled" }; - }), (function (param) { - return Json_decode.tuple3(RichText$AgdaModeVscode.decode, (function (param) { - return Json_decode.optional(Json_decode.string, param); - }), (function (param) { - return Json_decode.optional(Common$AgdaModeVscode.AgdaRange.decode, param); - }), param); - }), param); + }), partial_arg$5, param); }), [Symbol.for("name")]: "Contents" }; diff --git a/lib/js/src/View/Component/Link.bs.js b/lib/js/src/View/Component/Link.bs.js index a4a9bb26..3828a168 100644 --- a/lib/js/src/View/Component/Link.bs.js +++ b/lib/js/src/View/Component/Link.bs.js @@ -44,7 +44,9 @@ var decode = Util$AgdaModeVscode.Decode.sum(function (x) { _0: range, [Symbol.for("name")]: "SrcLoc" }; - }), Common$AgdaModeVscode.AgdaRange.decode, param); + }), (function (param) { + return Util$AgdaModeVscode.Decode.convert(Common$AgdaModeVscode.AgdaRange.decode, param); + }), param); }), [Symbol.for("name")]: "Contents" }; diff --git a/lib/js/src/View/Component/RichText.bs.js b/lib/js/src/View/Component/RichText.bs.js index a1ca88c5..e576e994 100644 --- a/lib/js/src/View/Component/RichText.bs.js +++ b/lib/js/src/View/Component/RichText.bs.js @@ -201,7 +201,9 @@ function decode$1(param) { return Json_decode.array(partial_arg$3, param); }; var partial_arg$5 = function (param) { - return Json_decode.tuple3(Common$AgdaModeVscode.AgdaRange.decode, partial_arg$4, decode, param); + return Json_decode.tuple3((function (param) { + return Util$AgdaModeVscode.Decode.convert(Common$AgdaModeVscode.AgdaRange.decode, param); + }), partial_arg$4, decode, param); }; return { TAG: 0, diff --git a/src/Util/Util.res b/src/Util/Util.res index 3f99044d..959f35d0 100644 --- a/src/Util/Util.res +++ b/src/Util/Util.res @@ -11,11 +11,11 @@ module Result = { exception Error(string) module Decode = { - exception TempDecodeError(Js.Json.t) + exception TempDecodeError(string, Js.Json.t) let convert = (translation, json) => switch json->JsonCombinators.Json.decode(translation) { | Ok(translation) => translation - | Error(_) => raise(TempDecodeError(json)) + | Error(err) => raise(TempDecodeError(err, json)) } type fieldType_<'a> = diff --git a/src/View/Common.res b/src/View/Common.res index 20523763..304fe7ec 100644 --- a/src/View/Common.res +++ b/src/View/Common.res @@ -274,20 +274,22 @@ module AgdaRange = { } } - let decode: Json.Decode.decoder = Util.Decode.sum(x => { - open Json.Decode - switch x { - | "Range" => - Contents( - pair(optional(string), array(Util.Decode.convert(AgdaInterval.decode))) |> map((( - source, - intervals, - )) => Range(source, intervals)), - ) - | "NoRange" => TagOnly(NoRange) - | tag => raise(DecodeError("[Agda.Range] Unknown constructor: " ++ tag)) - } - }) + let decode = { + open JsonCombinators.Json.Decode + Util.Decode.sum_(x => { + switch x { + | "Range" => + Payload( + pair(option(string), array(AgdaInterval.decode))->map((. (source, intervals)) => Range( + source, + intervals, + )), + ) + | "NoRange" => TagOnly(NoRange) + | tag => raise(DecodeError("[AgdaRange] Unknown constructor: " ++ tag)) + } + }) + } let encode = { open JsonCombinators.Json.Encode diff --git a/src/View/Component/Item.res b/src/View/Component/Item.res index 633eb62a..d9b0a5a7 100644 --- a/src/View/Component/Item.res +++ b/src/View/Component/Item.res @@ -35,11 +35,7 @@ let make = (~item: t) => { let locationButton = location => switch location { | Some(location) => - +
| None => <> @@ -58,7 +54,10 @@ let make = (~item: t) => { {locationButton(range)} // | HorizontalRule =>
  • - | Header(s) =>
  • {string(s)}

  • + | Header(s) => +
  • +

    {string(s)}

    +
  • } } @@ -72,18 +71,18 @@ let decode: decoder = sum(x => tuple5( RichText.decode, optional(string), - optional(Common.AgdaRange.decode), + Util.Decode.convert(JsonCombinators.Json.Decode.option(Common.AgdaRange.decode)), string, string, ) |> map(((text, raw, range, label, style)) => Labeled(label, style, text, raw, range)), ) | "Unlabeled" => Contents( - tuple3(RichText.decode, optional(string), optional(Common.AgdaRange.decode)) |> map((( - text, - raw, - range, - )) => Unlabeled(text, raw, range)), + tuple3( + RichText.decode, + optional(string), + Util.Decode.convert(JsonCombinators.Json.Decode.option(Common.AgdaRange.decode)), + ) |> map(((text, raw, range)) => Unlabeled(text, raw, range)), ) | "Header" => Contents(string |> map(s => Header(s))) | tag => raise(DecodeError("[Item] Unknown constructor: " ++ tag)) diff --git a/src/View/Component/Link.res b/src/View/Component/Link.res index 6106d2a7..6e42b420 100644 --- a/src/View/Component/Link.res +++ b/src/View/Component/Link.res @@ -13,7 +13,7 @@ let toString = x => let decode: Json.Decode.decoder = Util.Decode.sum(x => { open Json.Decode switch x { - | "LinkRange" => Contents(AgdaRange.decode |> map(range => SrcLoc(range))) + | "LinkRange" => Contents(Util.Decode.convert(AgdaRange.decode) |> map(range => SrcLoc(range))) | "LinkHole" => Contents(int |> map(index => Hole(index))) | tag => raise(DecodeError("[View.Link] Unknown constructor: " ++ tag)) } diff --git a/src/View/Component/RichText.res b/src/View/Component/RichText.res index 979e538d..447ed93c 100644 --- a/src/View/Component/RichText.res +++ b/src/View/Component/RichText.res @@ -101,11 +101,11 @@ module Module = { | "Text" => Contents(pair(string, ClassNames.decode) |> map(((s, cs)) => Text(s, cs))) | "Link" => Contents( - tuple3(Common.AgdaRange.decode, array(decode()), ClassNames.decode) |> map((( - r, - xs, - cs, - )) => Link(r, xs, cs)), + tuple3( + Util.Decode.convert(Common.AgdaRange.decode), + array(decode()), + ClassNames.decode, + ) |> map(((r, xs, cs)) => Link(r, xs, cs)), ) | "Hole" => Contents(int |> map(s => Hole(s))) | "Horz" => Contents(array(array(decode())) |> map(xs => Horz(xs))) From 66404f9524732012d96b5cc431889cfcc13b31e1 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Mon, 4 Dec 2023 12:45:50 +0800 Subject: [PATCH 041/109] [ change ] Upgrade JSON encoder/decoder for RichText.Inline.t --- lib/js/src/View/Component/RichText.bs.js | 450 +++++++++-------------- src/View/Component/RichText.res | 101 +++-- 2 files changed, 225 insertions(+), 326 deletions(-) diff --git a/lib/js/src/View/Component/RichText.bs.js b/lib/js/src/View/Component/RichText.bs.js index e576e994..fe216d57 100644 --- a/lib/js/src/View/Component/RichText.bs.js +++ b/lib/js/src/View/Component/RichText.bs.js @@ -13,6 +13,8 @@ var Json_encode = require("@glennsl/bs-json/lib/js/src/Json_encode.bs.js"); var Link$AgdaModeVscode = require("./Link.bs.js"); var Util$AgdaModeVscode = require("../../Util/Util.bs.js"); var Common$AgdaModeVscode = require("../Common.bs.js"); +var Json_Decode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Decode.bs.js"); +var Json_Encode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Encode.bs.js"); function RichText$Parens(Props) { var children = Props.children; @@ -125,12 +127,10 @@ var Parens2 = { make: RichText$Parens2 }; -function decode(param) { - return Json_decode.array(Json_decode.string, param); -} +var decode = Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.string); function encode(param) { - return Json_encode.array((function (prim) { + return Json_Encode$JsonCombinators.array((function (prim) { return prim; }), param); } @@ -140,166 +140,112 @@ var ClassNames = { encode: encode }; -function decode$1(param) { - return Util$AgdaModeVscode.Decode.sum(function (x) { +function decodeRec(param) { + return Util$AgdaModeVscode.Decode.sum_(function (x) { switch (x) { case "Hole" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (s) { - return { - TAG: 3, - _0: s, - [Symbol.for("name")]: "Hole" - }; - }), Json_decode.$$int, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.$$int, (function (s) { + return { + TAG: 3, + _0: s, + [Symbol.for("name")]: "Hole" + }; + })), + [Symbol.for("name")]: "Payload" }; case "Horz" : - var partial_arg = decode$1(undefined); - var partial_arg$1 = function (param) { - return Json_decode.array(partial_arg, param); - }; - var partial_arg$2 = function (param) { - return Json_decode.array(partial_arg$1, param); - }; return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (xs) { - return { - TAG: 4, - _0: xs, - [Symbol.for("name")]: "Horz" - }; - }), partial_arg$2, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.array(decodeRec(undefined))), (function (xs) { + return { + TAG: 4, + _0: xs, + [Symbol.for("name")]: "Horz" + }; + })), + [Symbol.for("name")]: "Payload" }; case "Icon" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (param) { - return { - TAG: 0, - _0: param[0], - _1: param[1], - [Symbol.for("name")]: "Icon" - }; - }), (function (param) { - return Json_decode.pair(Json_decode.string, decode, param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.string, decode), (function (param) { + return { + TAG: 0, + _0: param[0], + _1: param[1], + [Symbol.for("name")]: "Icon" + }; + })), + [Symbol.for("name")]: "Payload" }; case "Link" : - var partial_arg$3 = decode$1(undefined); - var partial_arg$4 = function (param) { - return Json_decode.array(partial_arg$3, param); - }; - var partial_arg$5 = function (param) { - return Json_decode.tuple3((function (param) { - return Util$AgdaModeVscode.Decode.convert(Common$AgdaModeVscode.AgdaRange.decode, param); - }), partial_arg$4, decode, param); - }; return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (param) { - return { - TAG: 2, - _0: param[0], - _1: param[1], - _2: param[2], - [Symbol.for("name")]: "Link" - }; - }), partial_arg$5, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.tuple3(Common$AgdaModeVscode.AgdaRange.decode, Json_Decode$JsonCombinators.array(decodeRec(undefined)), decode), (function (param) { + return { + TAG: 2, + _0: param[0], + _1: param[1], + _2: param[2], + [Symbol.for("name")]: "Link" + }; + })), + [Symbol.for("name")]: "Payload" }; case "Parn" : - var partial_arg$6 = decode$1(undefined); - var partial_arg$7 = function (param) { - return Json_decode.array(partial_arg$6, param); - }; return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (x) { - return { - TAG: 6, - _0: x, - [Symbol.for("name")]: "Parn" - }; - }), partial_arg$7, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.array(decodeRec(undefined)), (function (x) { + return { + TAG: 6, + _0: x, + [Symbol.for("name")]: "Parn" + }; + })), + [Symbol.for("name")]: "Payload" }; case "PrHz" : - var partial_arg$8 = decode$1(undefined); - var partial_arg$9 = function (param) { - return Json_decode.array(partial_arg$8, param); - }; - var partial_arg$10 = function (param) { - return Json_decode.array(partial_arg$9, param); - }; return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (xs) { - return { - TAG: 7, - _0: xs, - [Symbol.for("name")]: "PrHz" - }; - }), partial_arg$10, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.array(decodeRec(undefined))), (function (xs) { + return { + TAG: 7, + _0: xs, + [Symbol.for("name")]: "PrHz" + }; + })), + [Symbol.for("name")]: "Payload" }; case "Text" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (param) { - return { - TAG: 1, - _0: param[0], - _1: param[1], - [Symbol.for("name")]: "Text" - }; - }), (function (param) { - return Json_decode.pair(Json_decode.string, decode, param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.string, decode), (function (param) { + return { + TAG: 1, + _0: param[0], + _1: param[1], + [Symbol.for("name")]: "Text" + }; + })), + [Symbol.for("name")]: "Payload" }; case "Vert" : - var partial_arg$11 = decode$1(undefined); - var partial_arg$12 = function (param) { - return Json_decode.array(partial_arg$11, param); - }; - var partial_arg$13 = function (param) { - return Json_decode.array(partial_arg$12, param); - }; return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (xs) { - return { - TAG: 5, - _0: xs, - [Symbol.for("name")]: "Vert" - }; - }), partial_arg$13, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.array(decodeRec(undefined))), (function (xs) { + return { + TAG: 5, + _0: xs, + [Symbol.for("name")]: "Vert" + }; + })), + [Symbol.for("name")]: "Payload" }; default: throw { - RE_EXN_ID: Json_decode.DecodeError, + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, _1: "[RichText.Inline] Unknown constructor: " + x, Error: new Error() }; @@ -307,150 +253,106 @@ function decode$1(param) { }); } -var decode$2 = decode$1(undefined); +var decode$1 = decodeRec(undefined); -function encode$1(x) { - switch (x.TAG | 0) { - case /* Icon */0 : - return Json_encode.object_({ - hd: [ - "tag", - "Icon" - ], - tl: { - hd: [ - "contents", - Json_encode.pair((function (prim) { - return prim; - }), encode, [ - x._0, - x._1 - ]) - ], - tl: /* [] */0 - } - }); - case /* Text */1 : - return Json_encode.object_({ - hd: [ - "tag", - "Text" - ], - tl: { - hd: [ - "contents", - Json_encode.pair((function (prim) { - return prim; - }), encode, [ - x._0, - x._1 - ]) - ], - tl: /* [] */0 - } - }); - case /* Link */2 : - return Json_encode.object_({ - hd: [ - "tag", - "Link" - ], - tl: { - hd: [ - "contents", - Json_encode.tuple3(Common$AgdaModeVscode.AgdaRange.encode, (function (param) { - return Json_encode.array(encode$1, param); - }), encode, [ - x._0, - x._1, - x._2 - ]) - ], - tl: /* [] */0 - } - }); - case /* Hole */3 : - return Json_encode.object_({ - hd: [ - "tag", - "Hole" - ], - tl: { - hd: [ - "contents", - x._0 - ], - tl: /* [] */0 - } - }); - case /* Horz */4 : - return Json_encode.object_({ - hd: [ - "tag", - "Horz" - ], - tl: { - hd: [ - "contents", - Json_encode.array((function (param) { - return Json_encode.array(encode$1, param); - }), x._0) - ], - tl: /* [] */0 - } - }); - case /* Vert */5 : - return Json_encode.object_({ - hd: [ - "tag", - "Vert" - ], - tl: { - hd: [ - "contents", - Json_encode.array((function (param) { - return Json_encode.array(encode$1, param); - }), x._0) - ], - tl: /* [] */0 - } - }); - case /* Parn */6 : - return Json_encode.object_({ - hd: [ - "tag", - "Parn" - ], - tl: { - hd: [ - "contents", - Json_encode.array(encode$1, x._0) - ], - tl: /* [] */0 - } - }); - case /* PrHz */7 : - return Json_encode.object_({ - hd: [ - "tag", - "PrHz" - ], - tl: { - hd: [ - "contents", - Json_encode.array((function (param) { - return Json_encode.array(encode$1, param); - }), x._0) - ], - tl: /* [] */0 - } - }); - - } +function encodeRec(param) { + return function (param) { + return Util$AgdaModeVscode.Encode.sum((function (x) { + switch (x.TAG | 0) { + case /* Icon */0 : + return { + TAG: 0, + _0: "Icon", + _1: Json_Encode$JsonCombinators.pair((function (prim) { + return prim; + }), encode, [ + x._0, + x._1 + ]), + [Symbol.for("name")]: "Payload" + }; + case /* Text */1 : + return { + TAG: 0, + _0: "Text", + _1: Json_Encode$JsonCombinators.pair((function (prim) { + return prim; + }), encode, [ + x._0, + x._1 + ]), + [Symbol.for("name")]: "Payload" + }; + case /* Link */2 : + var partial_arg = encodeRec(undefined); + return { + TAG: 0, + _0: "Link", + _1: Json_Encode$JsonCombinators.tuple3(Common$AgdaModeVscode.AgdaRange.encode, (function (param) { + return Json_Encode$JsonCombinators.array(partial_arg, param); + }), encode, [ + x._0, + x._1, + x._2 + ]), + [Symbol.for("name")]: "Payload" + }; + case /* Hole */3 : + return { + TAG: 0, + _0: "Hole", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; + case /* Horz */4 : + var partial_arg$1 = encodeRec(undefined); + return { + TAG: 0, + _0: "Horz", + _1: Json_Encode$JsonCombinators.array((function (param) { + return Json_Encode$JsonCombinators.array(partial_arg$1, param); + }), x._0), + [Symbol.for("name")]: "Payload" + }; + case /* Vert */5 : + var partial_arg$2 = encodeRec(undefined); + return { + TAG: 0, + _0: "Vert", + _1: Json_Encode$JsonCombinators.array((function (param) { + return Json_Encode$JsonCombinators.array(partial_arg$2, param); + }), x._0), + [Symbol.for("name")]: "Payload" + }; + case /* Parn */6 : + return { + TAG: 0, + _0: "Parn", + _1: Json_Encode$JsonCombinators.array(encodeRec(undefined), x._0), + [Symbol.for("name")]: "Payload" + }; + case /* PrHz */7 : + var partial_arg$3 = encodeRec(undefined); + return { + TAG: 0, + _0: "PrHz", + _1: Json_Encode$JsonCombinators.array((function (param) { + return Json_Encode$JsonCombinators.array(partial_arg$3, param); + }), x._0), + [Symbol.for("name")]: "Payload" + }; + + } + }), param); + }; } +var encode$1 = encodeRec(undefined); + var Inline = { - decode: decode$2, + decodeRec: decodeRec, + decode: decode$1, + encodeRec: encodeRec, encode: encode$1 }; @@ -645,14 +547,16 @@ function make(value) { }))); } -function decode$3(param) { +function decode$2(param) { return Json_decode.map((function (elems) { return { _0: elems, [Symbol.for("name")]: "RichText" }; }), (function (param) { - return Json_decode.array(decode$2, param); + return Json_decode.array((function (param) { + return Util$AgdaModeVscode.Decode.convert(decode$1, param); + }), param); }), param); } @@ -670,7 +574,7 @@ var Module = { concatMany: concatMany, parse: parse, make: make, - decode: decode$3, + decode: decode$2, encode: encode$2 }; @@ -691,7 +595,7 @@ exports.hole = hole; exports.srcLoc = srcLoc; exports.concatMany = concatMany; exports.parse = parse; -exports.decode = decode$3; +exports.decode = decode$2; exports.encode = encode$2; exports.make = make$1; /* decode Not a pure module */ diff --git a/src/View/Component/RichText.res b/src/View/Component/RichText.res index 447ed93c..4e326372 100644 --- a/src/View/Component/RichText.res +++ b/src/View/Component/RichText.res @@ -73,11 +73,15 @@ module Module = { module ClassNames = { type t = array - open! Json.Decode - let decode: decoder = array(string) + let decode = { + open JsonCombinators.Json.Decode + array(string) + } - open! Json.Encode - let encode: encoder = array(string) + let encode = { + open JsonCombinators.Json.Encode + array(string) + } } module Inline = { @@ -92,61 +96,51 @@ module Module = { // refactor PrHz | PrHz(array>) - open! Json.Decode - open Util.Decode - let rec decode: unit => decoder = () => - sum(x => + let rec decodeRec = () => { + open JsonCombinators.Json.Decode + Util.Decode.sum_(x => switch x { - | "Icon" => Contents(pair(string, ClassNames.decode) |> map(((s, cs)) => Icon(s, cs))) - | "Text" => Contents(pair(string, ClassNames.decode) |> map(((s, cs)) => Text(s, cs))) + | "Icon" => Payload(pair(string, ClassNames.decode)->map((. (s, cs)) => Icon(s, cs))) + | "Text" => Payload(pair(string, ClassNames.decode)->map((. (s, cs)) => Text(s, cs))) | "Link" => - Contents( - tuple3( - Util.Decode.convert(Common.AgdaRange.decode), - array(decode()), - ClassNames.decode, - ) |> map(((r, xs, cs)) => Link(r, xs, cs)), + Payload( + tuple3(Common.AgdaRange.decode, array(decodeRec()), ClassNames.decode)->map((. ( + r, + xs, + cs, + )) => Link(r, xs, cs)), ) - | "Hole" => Contents(int |> map(s => Hole(s))) - | "Horz" => Contents(array(array(decode())) |> map(xs => Horz(xs))) - | "Vert" => Contents(array(array(decode())) |> map(xs => Vert(xs))) - | "Parn" => Contents(array(decode()) |> map(x => Parn(x))) - | "PrHz" => Contents(array(array(decode())) |> map(xs => PrHz(xs))) + | "Hole" => Payload(int->map((. s) => Hole(s))) + | "Horz" => Payload(array(array(decodeRec()))->map((. xs) => Horz(xs))) + | "Vert" => Payload(array(array(decodeRec()))->map((. xs) => Vert(xs))) + | "Parn" => Payload(array(decodeRec())->map((. x) => Parn(x))) + | "PrHz" => Payload(array(array(decodeRec()))->map((. xs) => PrHz(xs))) | tag => raise(DecodeError("[RichText.Inline] Unknown constructor: " ++ tag)) } ) - let decode = decode() - - open! Json.Encode - let rec encode: encoder = x => - switch x { - | Icon(s, cs) => - object_(list{ - ("tag", string("Icon")), - ("contents", (s, cs) |> pair(string, ClassNames.encode)), - }) - - | Text(s, cs) => - object_(list{ - ("tag", string("Text")), - ("contents", (s, cs) |> pair(string, ClassNames.encode)), - }) - - | Link(r, s, cs) => - object_(list{ - ("tag", string("Link")), - ( - "contents", - (r, s, cs) |> tuple3(Common.AgdaRange.encode, array(encode), ClassNames.encode), - ), - }) + } + let decode = decodeRec() - | Hole(i) => object_(list{("tag", string("Hole")), ("contents", i |> int)}) - | Horz(xs) => object_(list{("tag", string("Horz")), ("contents", xs |> array(array(encode)))}) - | Vert(xs) => object_(list{("tag", string("Vert")), ("contents", xs |> array(array(encode)))}) - | Parn(x) => object_(list{("tag", string("Parn")), ("contents", x |> array(encode))}) - | PrHz(xs) => object_(list{("tag", string("PrHz")), ("contents", xs |> array(array(encode)))}) - } + let rec encodeRec = () => { + open JsonCombinators.Json.Encode + Util.Encode.sum(x => + switch x { + | Icon(s, cs) => Payload("Icon", pair(string, ClassNames.encode, (s, cs))) + | Text(s, cs) => Payload("Text", pair(string, ClassNames.encode, (s, cs))) + | Link(r, s, cs) => + Payload( + "Link", + tuple3(Common.AgdaRange.encode, array(encodeRec()), ClassNames.encode, (r, s, cs)), + ) + | Hole(i) => Payload("Hole", int(i)) + | Horz(xs) => Payload("Horz", array(array(encodeRec()), xs)) + | Vert(xs) => Payload("Vert", array(array(encodeRec()), xs)) + | Parn(x) => Payload("Parn", array(encodeRec(), x)) + | PrHz(xs) => Payload("PrHz", array(array(encodeRec()), xs)) + } + ) + } + let encode = encodeRec() } type t = RichText(array) @@ -249,7 +243,8 @@ module Module = { } open! Json.Decode - let decode: decoder = array(Inline.decode) |> map(elems => RichText(elems)) + let decode: decoder = + array(Util.Decode.convert(Inline.decode)) |> map(elems => RichText(elems)) open! Json.Encode let encode: encoder = x => From a23f95d0f2da15fd581e1c1ce3730ab5a928cbe4 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Mon, 4 Dec 2023 13:08:14 +0800 Subject: [PATCH 042/109] [ change ] Upgrade JSON encoder/decoder for Item.t --- .../src/Connection/LSP/Connection__LSP.bs.js | 20 +- lib/js/src/View/Component/Item.bs.js | 221 ++++++++---------- lib/js/src/View/Component/RichText.bs.js | 22 +- lib/js/src/View/View.bs.js | 8 +- src/Connection/LSP/Connection__LSP.res | 10 +- src/View/Component/Item.res | 104 ++++----- src/View/Component/RichText.res | 19 +- src/View/View.res | 4 +- 8 files changed, 187 insertions(+), 221 deletions(-) diff --git a/lib/js/src/Connection/LSP/Connection__LSP.bs.js b/lib/js/src/Connection/LSP/Connection__LSP.bs.js index 65d9b140..2abbb2d8 100644 --- a/lib/js/src/Connection/LSP/Connection__LSP.bs.js +++ b/lib/js/src/Connection/LSP/Connection__LSP.bs.js @@ -113,9 +113,13 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { }; }), (function (param) { return Util$AgdaModeVscode.Decode.tuple5(Json_decode.string, (function (param) { - return Json_decode.array(Item$AgdaModeVscode.decode, param); + return Json_decode.array((function (param) { + return Util$AgdaModeVscode.Decode.convert(Item$AgdaModeVscode.decode, param); + }), param); }), (function (param) { - return Json_decode.array(Item$AgdaModeVscode.decode, param); + return Json_decode.array((function (param) { + return Util$AgdaModeVscode.Decode.convert(Item$AgdaModeVscode.decode, param); + }), param); }), (function (param) { return Json_decode.array(Json_decode.string, param); }), (function (param) { @@ -170,7 +174,9 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { _0: body, [Symbol.for("name")]: "CurrentGoal" }; - }), Item$AgdaModeVscode.decode, param); + }), (function (param) { + return Util$AgdaModeVscode.Decode.convert(Item$AgdaModeVscode.decode, param); + }), param); }), [Symbol.for("name")]: "Contents" }; @@ -201,7 +207,9 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { }; }), (function (param) { return Json_decode.pair(Json_decode.string, (function (param) { - return Json_decode.array(Item$AgdaModeVscode.decode, param); + return Json_decode.array((function (param) { + return Util$AgdaModeVscode.Decode.convert(Item$AgdaModeVscode.decode, param); + }), param); }), param); }), param); }), @@ -217,7 +225,9 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { _0: body, [Symbol.for("name")]: "InferredType" }; - }), Item$AgdaModeVscode.decode, param); + }), (function (param) { + return Util$AgdaModeVscode.Decode.convert(Item$AgdaModeVscode.decode, param); + }), param); }), [Symbol.for("name")]: "Contents" }; diff --git a/lib/js/src/View/Component/Item.bs.js b/lib/js/src/View/Component/Item.bs.js index 302d9b40..5a1b2577 100644 --- a/lib/js/src/View/Component/Item.bs.js +++ b/lib/js/src/View/Component/Item.bs.js @@ -3,13 +3,12 @@ var Curry = require("rescript/lib/js/curry.js"); var React = require("react"); -var Json_decode = require("@glennsl/bs-json/lib/js/src/Json_decode.bs.js"); -var Json_encode = require("@glennsl/bs-json/lib/js/src/Json_encode.bs.js"); var Link$AgdaModeVscode = require("./Link.bs.js"); var Util$AgdaModeVscode = require("../../Util/Util.bs.js"); var Common$AgdaModeVscode = require("../Common.bs.js"); var RichText$AgdaModeVscode = require("./RichText.bs.js"); var Json_Decode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Decode.bs.js"); +var Json_Encode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Encode.bs.js"); function plainText(s) { return { @@ -139,155 +138,117 @@ function Item(Props) { } } -var decode = Util$AgdaModeVscode.Decode.sum(function (x) { +var decode = Util$AgdaModeVscode.Decode.sum_(function (x) { switch (x) { case "Header" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (s) { - return { - TAG: 2, - _0: s, - [Symbol.for("name")]: "Header" - }; - }), Json_decode.string, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (s) { + return { + TAG: 2, + _0: s, + [Symbol.for("name")]: "Header" + }; + })), + [Symbol.for("name")]: "Payload" }; case "Labeled" : - var partial_arg = Json_Decode$JsonCombinators.option(Common$AgdaModeVscode.AgdaRange.decode); - var partial_arg$1 = function (param) { - return Util$AgdaModeVscode.Decode.convert(partial_arg, param); - }; - var partial_arg$2 = function (param) { - return Util$AgdaModeVscode.Decode.tuple5(RichText$AgdaModeVscode.decode, (function (param) { - return Json_decode.optional(Json_decode.string, param); - }), partial_arg$1, Json_decode.string, Json_decode.string, param); - }; return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (param) { - return { - TAG: 0, - _0: param[3], - _1: param[4], - _2: param[0], - _3: param[1], - _4: param[2], - [Symbol.for("name")]: "Labeled" - }; - }), partial_arg$2, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.tuple4(Json_Decode$JsonCombinators.pair(RichText$AgdaModeVscode.decode, Json_Decode$JsonCombinators.option(Json_Decode$JsonCombinators.string)), Json_Decode$JsonCombinators.option(Common$AgdaModeVscode.AgdaRange.decode), Json_Decode$JsonCombinators.string, Json_Decode$JsonCombinators.string), (function (param) { + var match = param[0]; + return { + TAG: 0, + _0: param[2], + _1: param[3], + _2: match[0], + _3: match[1], + _4: param[1], + [Symbol.for("name")]: "Labeled" + }; + })), + [Symbol.for("name")]: "Payload" }; case "Unlabeled" : - var partial_arg$3 = Json_Decode$JsonCombinators.option(Common$AgdaModeVscode.AgdaRange.decode); - var partial_arg$4 = function (param) { - return Util$AgdaModeVscode.Decode.convert(partial_arg$3, param); - }; - var partial_arg$5 = function (param) { - return Json_decode.tuple3(RichText$AgdaModeVscode.decode, (function (param) { - return Json_decode.optional(Json_decode.string, param); - }), partial_arg$4, param); - }; return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (param) { - return { - TAG: 1, - _0: param[0], - _1: param[1], - _2: param[2], - [Symbol.for("name")]: "Unlabeled" - }; - }), partial_arg$5, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.tuple3(RichText$AgdaModeVscode.decode, Json_Decode$JsonCombinators.option(Json_Decode$JsonCombinators.string), Json_Decode$JsonCombinators.option(Common$AgdaModeVscode.AgdaRange.decode)), (function (param) { + return { + TAG: 1, + _0: param[0], + _1: param[1], + _2: param[2], + [Symbol.for("name")]: "Unlabeled" + }; + })), + [Symbol.for("name")]: "Payload" }; default: throw { - RE_EXN_ID: Json_decode.DecodeError, + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, _1: "[Item] Unknown constructor: " + x, Error: new Error() }; } }); -function encode(x) { - switch (x.TAG | 0) { - case /* Labeled */0 : - return Json_encode.object_({ - hd: [ - "tag", - "Labeled" - ], - tl: { - hd: [ - "contents", - Util$AgdaModeVscode.Encode.tuple5(RichText$AgdaModeVscode.encode, (function (param) { - return Json_encode.nullable((function (prim) { - return prim; - }), param); - }), (function (param) { - return Json_encode.nullable(Common$AgdaModeVscode.AgdaRange.encode, param); - }), (function (prim) { - return prim; - }), (function (prim) { - return prim; - }), [ - x._2, - x._3, - x._4, - x._0, - x._1 - ]) - ], - tl: /* [] */0 - } - }); - case /* Unlabeled */1 : - return Json_encode.object_({ - hd: [ - "tag", - "Unlabeled" - ], - tl: { - hd: [ - "contents", - Json_encode.tuple3(RichText$AgdaModeVscode.encode, (function (param) { - return Json_encode.nullable((function (prim) { - return prim; - }), param); - }), (function (param) { - return Json_encode.nullable(Common$AgdaModeVscode.AgdaRange.encode, param); - }), [ - x._0, - x._1, - x._2 - ]) - ], - tl: /* [] */0 - } - }); - case /* Header */2 : - return Json_encode.object_({ - hd: [ - "tag", - "Header" - ], - tl: { - hd: [ - "contents", - x._0 - ], - tl: /* [] */0 - } - }); - - } +function encode(param) { + return Util$AgdaModeVscode.Encode.sum((function (x) { + switch (x.TAG | 0) { + case /* Labeled */0 : + return { + TAG: 0, + _0: "Labeled", + _1: Json_Encode$JsonCombinators.tuple4((function (param) { + return Json_Encode$JsonCombinators.pair(RichText$AgdaModeVscode.encode, (function (param) { + return Json_Encode$JsonCombinators.option((function (prim) { + return prim; + }), param); + }), param); + }), (function (param) { + return Json_Encode$JsonCombinators.option(Common$AgdaModeVscode.AgdaRange.encode, param); + }), (function (prim) { + return prim; + }), (function (prim) { + return prim; + }), [ + [ + x._2, + x._3 + ], + x._4, + x._0, + x._1 + ]), + [Symbol.for("name")]: "Payload" + }; + case /* Unlabeled */1 : + return { + TAG: 0, + _0: "Unlabeled", + _1: Json_Encode$JsonCombinators.tuple3(RichText$AgdaModeVscode.encode, (function (param) { + return Json_Encode$JsonCombinators.option((function (prim) { + return prim; + }), param); + }), (function (param) { + return Json_Encode$JsonCombinators.option(Common$AgdaModeVscode.AgdaRange.encode, param); + }), [ + x._0, + x._1, + x._2 + ]), + [Symbol.for("name")]: "Payload" + }; + case /* Header */2 : + return { + TAG: 0, + _0: "Header", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; + + } + }), param); } var make = Item; diff --git a/lib/js/src/View/Component/RichText.bs.js b/lib/js/src/View/Component/RichText.bs.js index fe216d57..862d7ab1 100644 --- a/lib/js/src/View/Component/RichText.bs.js +++ b/lib/js/src/View/Component/RichText.bs.js @@ -8,8 +8,6 @@ var Belt_List = require("rescript/lib/js/belt_List.js"); var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); -var Json_decode = require("@glennsl/bs-json/lib/js/src/Json_decode.bs.js"); -var Json_encode = require("@glennsl/bs-json/lib/js/src/Json_encode.bs.js"); var Link$AgdaModeVscode = require("./Link.bs.js"); var Util$AgdaModeVscode = require("../../Util/Util.bs.js"); var Common$AgdaModeVscode = require("../Common.bs.js"); @@ -547,21 +545,15 @@ function make(value) { }))); } -function decode$2(param) { - return Json_decode.map((function (elems) { - return { - _0: elems, - [Symbol.for("name")]: "RichText" - }; - }), (function (param) { - return Json_decode.array((function (param) { - return Util$AgdaModeVscode.Decode.convert(decode$1, param); - }), param); - }), param); -} +var decode$2 = Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.array(decode$1), (function (elems) { + return { + _0: elems, + [Symbol.for("name")]: "RichText" + }; + })); function encode$2(x) { - return Json_encode.array(encode$1, x._0); + return Json_Encode$JsonCombinators.array(encode$1, x._0); } var Module = { diff --git a/lib/js/src/View/View.bs.js b/lib/js/src/View/View.bs.js index 49392fc3..2877debb 100644 --- a/lib/js/src/View/View.bs.js +++ b/lib/js/src/View/View.bs.js @@ -349,7 +349,9 @@ var decode$3 = Util$AgdaModeVscode.Decode.sum(function (x) { return Json_decode.pair((function (param) { return Util$AgdaModeVscode.Decode.convert(decode, param); }), (function (param) { - return Json_decode.array(Item$AgdaModeVscode.decode, param); + return Json_decode.array((function (param) { + return Util$AgdaModeVscode.Decode.convert(Item$AgdaModeVscode.decode, param); + }), param); }), param); }), param); }), @@ -370,7 +372,9 @@ var decode$3 = Util$AgdaModeVscode.Decode.sum(function (x) { return Json_decode.pair((function (param) { return Util$AgdaModeVscode.Decode.convert(decode, param); }), (function (param) { - return Json_decode.array(Item$AgdaModeVscode.decode, param); + return Json_decode.array((function (param) { + return Util$AgdaModeVscode.Decode.convert(Item$AgdaModeVscode.decode, param); + }), param); }), param); }), param); }), diff --git a/src/Connection/LSP/Connection__LSP.res b/src/Connection/LSP/Connection__LSP.res index a2f41d12..9ba3e20c 100644 --- a/src/Connection/LSP/Connection__LSP.res +++ b/src/Connection/LSP/Connection__LSP.res @@ -53,14 +53,14 @@ module LSPResponse = { switch x { | "DisplayInfoGeneric" => Contents( - pair(string, array(Item.decode)) |> map(((header, itmes)) => Generic(header, itmes)), + pair(string, array(Util.Decode.convert( Item.decode))) |> map(((header, itmes)) => Generic(header, itmes)), ) | "DisplayInfoAllGoalsWarnings" => Contents( tuple5( string, - array(Item.decode), - array(Item.decode), + array(Util.Decode.convert( Item.decode)), + array(Util.Decode.convert( Item.decode)), array(string), array(string), ) |> map(((header, goals, metas, warnings, errors)) => AllGoalsWarnings( @@ -71,8 +71,8 @@ module LSPResponse = { errors, )), ) - | "DisplayInfoCurrentGoal" => Contents(Item.decode |> map(body => CurrentGoal(body))) - | "DisplayInfoInferredType" => Contents(Item.decode |> map(body => InferredType(body))) + | "DisplayInfoCurrentGoal" => Contents(Util.Decode.convert( Item.decode)|> map(body => CurrentGoal(body))) + | "DisplayInfoInferredType" => Contents(Util.Decode.convert( Item.decode) |> map(body => InferredType(body))) | "DisplayInfoCompilationOk" => Contents( pair(array(string), array(string)) |> map(((warnings, errors)) => CompilationOk( diff --git a/src/View/Component/Item.res b/src/View/Component/Item.res index d9b0a5a7..ba2f3ce8 100644 --- a/src/View/Component/Item.res +++ b/src/View/Component/Item.res @@ -61,63 +61,59 @@ let make = (~item: t) => { } } -open! Json.Decode -open Util.Decode - -let decode: decoder = sum(x => - switch x { - | "Labeled" => - Contents( - tuple5( - RichText.decode, - optional(string), - Util.Decode.convert(JsonCombinators.Json.Decode.option(Common.AgdaRange.decode)), - string, - string, - ) |> map(((text, raw, range, label, style)) => Labeled(label, style, text, raw, range)), - ) - | "Unlabeled" => - Contents( - tuple3( - RichText.decode, - optional(string), - Util.Decode.convert(JsonCombinators.Json.Decode.option(Common.AgdaRange.decode)), - ) |> map(((text, raw, range)) => Unlabeled(text, raw, range)), - ) - | "Header" => Contents(string |> map(s => Header(s))) - | tag => raise(DecodeError("[Item] Unknown constructor: " ++ tag)) - } -) +let decode = { + open! JsonCombinators.Json.Decode + Util.Decode.sum_(x => + switch x { + | "Labeled" => + Payload( + tuple4( + pair(RichText.decode, option(string)), + JsonCombinators.Json.Decode.option(Common.AgdaRange.decode), + string, + string, + )->map((. ((text, raw), range, label, style)) => Labeled(label, style, text, raw, range)), + ) + | "Unlabeled" => + Payload( + tuple3( + RichText.decode, + option(string), + JsonCombinators.Json.Decode.option(Common.AgdaRange.decode), + )->map((. (text, raw, range)) => Unlabeled(text, raw, range)), + ) + | "Header" => Payload(string->map((. s) => Header(s))) + | tag => raise(DecodeError("[Item] Unknown constructor: " ++ tag)) + } + ) +} -open! Json.Encode -open! Util.Encode -let encode: encoder = x => - switch x { - | Labeled(label, style, text, raw, range) => - object_(list{ - ("tag", string("Labeled")), - ( - "contents", - (text, raw, range, label, style) |> tuple5( - RichText.encode, - nullable(string), - nullable(Common.AgdaRange.encode), +let encode = { + open! JsonCombinators.Json.Encode + Util.Encode.sum(x => + switch x { + | Labeled(label, style, text, raw, range) => + Payload(( + "Labeled", + tuple4( + pair(RichText.encode, option(string)), + option(Common.AgdaRange.encode), string, string, + ((text, raw), range, label, style), ), - ), - }) - | Unlabeled(text, raw, range) => - object_(list{ - ("tag", string("Unlabeled")), - ( - "contents", - (text, raw, range) |> tuple3( + )) + | Unlabeled(text, raw, range) => + Payload(( + "Unlabeled", + tuple3( RichText.encode, - nullable(string), - nullable(Common.AgdaRange.encode), + option(string), + option(Common.AgdaRange.encode), + (text, raw, range), ), - ), - }) - | Header(s) => object_(list{("tag", string("Header")), ("contents", s |> string)}) - } + )) + | Header(s) => Payload(("Header", s |> string)) + } + ) +} diff --git a/src/View/Component/RichText.res b/src/View/Component/RichText.res index 4e326372..ef39a145 100644 --- a/src/View/Component/RichText.res +++ b/src/View/Component/RichText.res @@ -242,15 +242,18 @@ module Module = { } - open! Json.Decode - let decode: decoder = - array(Util.Decode.convert(Inline.decode)) |> map(elems => RichText(elems)) + let decode = { + open JsonCombinators.Json.Decode + array(Inline.decode)->map((. elems) => RichText(elems)) + } - open! Json.Encode - let encode: encoder = x => - switch x { - | RichText(elemss) => elemss |> array(Inline.encode) - } + let encode = { + open JsonCombinators.Json.Encode + x => + switch x { + | RichText(elemss) => array(Inline.encode, elemss) + } + } } include Module diff --git a/src/View/View.res b/src/View/View.res index 18c38c59..0554ed5e 100644 --- a/src/View/View.res +++ b/src/View/View.res @@ -176,14 +176,14 @@ module EventToView = { switch x { | "Display" => Contents( - pair(Util.Decode.convert(Header.decode), array(Item.decode)) |> map((( + pair(Util.Decode.convert(Header.decode), array(Util.Decode.convert( Item.decode))) |> map((( header, body, )) => Display(header, body)), ) | "Append" => Contents( - pair(Util.Decode.convert(Header.decode), array(Item.decode)) |> map((( + pair(Util.Decode.convert(Header.decode), array(Util.Decode.convert( Item.decode))) |> map((( header, body, )) => Append(header, body)), From d711b98016ea5c5edfcaceaeef3fbd14a8ab7a48 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Mon, 4 Dec 2023 16:11:05 +0800 Subject: [PATCH 043/109] [ change ] Upgrade all JSON encoder/decoder in View --- lib/js/src/InputMethod/Translator.bs.js | 2 +- lib/js/src/View/Component/Link.bs.js | 101 ++- lib/js/src/View/Root.bs.js | 4 +- lib/js/src/View/View.bs.js | 902 +++++++++--------------- lib/js/src/View/WebviewPanel.bs.js | 24 +- src/InputMethod/Translator.res | 3 +- src/View/Component/Link.res | 40 +- src/View/Root.res | 5 +- src/View/View.res | 385 +++++----- src/View/WebviewPanel.res | 8 +- 10 files changed, 609 insertions(+), 865 deletions(-) diff --git a/lib/js/src/InputMethod/Translator.bs.js b/lib/js/src/InputMethod/Translator.bs.js index ea370649..a808d229 100644 --- a/lib/js/src/InputMethod/Translator.bs.js +++ b/lib/js/src/InputMethod/Translator.bs.js @@ -110,7 +110,7 @@ function lookup(symbol) { var decode = Json_Decode$JsonCombinators.object(function (field) { return { - symbol: field.optional("symbol", Json_Decode$JsonCombinators.string), + symbol: field.required("symbol", Json_Decode$JsonCombinators.option(Json_Decode$JsonCombinators.string)), further: field.required("further", Json_Decode$JsonCombinators.bool), keySuggestions: field.required("keySuggestions", Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.string)), candidateSymbols: field.required("candidateSymbols", Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.string)) diff --git a/lib/js/src/View/Component/Link.bs.js b/lib/js/src/View/Component/Link.bs.js index 3828a168..09339ff3 100644 --- a/lib/js/src/View/Component/Link.bs.js +++ b/lib/js/src/View/Component/Link.bs.js @@ -9,6 +9,7 @@ var Json_encode = require("@glennsl/bs-json/lib/js/src/Json_encode.bs.js"); var Chan$AgdaModeVscode = require("../../Util/Chan.bs.js"); var Util$AgdaModeVscode = require("../../Util/Util.bs.js"); var Common$AgdaModeVscode = require("../Common.bs.js"); +var Json_Decode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Decode.bs.js"); function toString(x) { if (x.TAG === /* SrcLoc */0) { @@ -18,77 +19,59 @@ function toString(x) { } } -var decode = Util$AgdaModeVscode.Decode.sum(function (x) { +var decode = Util$AgdaModeVscode.Decode.sum_(function (x) { switch (x) { case "LinkHole" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (index) { - return { - TAG: 1, - _0: index, - [Symbol.for("name")]: "Hole" - }; - }), Json_decode.$$int, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.$$int, (function (index) { + return { + TAG: 1, + _0: index, + [Symbol.for("name")]: "Hole" + }; + })), + [Symbol.for("name")]: "Payload" }; case "LinkRange" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (range) { - return { - TAG: 0, - _0: range, - [Symbol.for("name")]: "SrcLoc" - }; - }), (function (param) { - return Util$AgdaModeVscode.Decode.convert(Common$AgdaModeVscode.AgdaRange.decode, param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Common$AgdaModeVscode.AgdaRange.decode, (function (range) { + return { + TAG: 0, + _0: range, + [Symbol.for("name")]: "SrcLoc" + }; + })), + [Symbol.for("name")]: "Payload" }; default: throw { - RE_EXN_ID: Json_decode.DecodeError, + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, _1: "[View.Link] Unknown constructor: " + x, Error: new Error() }; } }); -function encode(x) { - if (x.TAG === /* SrcLoc */0) { - return Json_encode.object_({ - hd: [ - "tag", - "LinkRange" - ], - tl: { - hd: [ - "contents", - Common$AgdaModeVscode.AgdaRange.encode(x._0) - ], - tl: /* [] */0 +function encode(param) { + return Util$AgdaModeVscode.Encode.sum((function (x) { + if (x.TAG === /* SrcLoc */0) { + return { + TAG: 0, + _0: "LinkRange", + _1: Common$AgdaModeVscode.AgdaRange.encode(x._0), + [Symbol.for("name")]: "Payload" + }; + } else { + return { + TAG: 0, + _0: "LinkHole", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; } - }); - } else { - return Json_encode.object_({ - hd: [ - "tag", - "LinkHole" - ], - tl: { - hd: [ - "contents", - x._0 - ], - tl: /* [] */0 - } - }); - } + }), param); } var chan = Chan$AgdaModeVscode.make(undefined); @@ -121,7 +104,9 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { _0: link, [Symbol.for("name")]: "JumpToTarget" }; - }), decode, param); + }), (function (param) { + return Util$AgdaModeVscode.Decode.convert(decode, param); + }), param); }), [Symbol.for("name")]: "Contents" }; @@ -135,7 +120,9 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { _0: link, [Symbol.for("name")]: "MouseOut" }; - }), decode, param); + }), (function (param) { + return Util$AgdaModeVscode.Decode.convert(decode, param); + }), param); }), [Symbol.for("name")]: "Contents" }; @@ -149,7 +136,9 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { _0: link, [Symbol.for("name")]: "MouseOver" }; - }), decode, param); + }), (function (param) { + return Util$AgdaModeVscode.Decode.convert(decode, param); + }), param); }), [Symbol.for("name")]: "Contents" }; diff --git a/lib/js/src/View/Root.bs.js b/lib/js/src/View/Root.bs.js index 730dce26..a5726178 100644 --- a/lib/js/src/View/Root.bs.js +++ b/lib/js/src/View/Root.bs.js @@ -1,13 +1,13 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Curry = require("rescript/lib/js/curry.js"); var React = require("react"); var VSCode = require("rescript-vscode/lib/js/src/VSCode.bs.js"); var ReactDom = require("react-dom"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); var Chan$AgdaModeVscode = require("../Util/Chan.bs.js"); +var Util$AgdaModeVscode = require("../Util/Util.bs.js"); var View$AgdaModeVscode = require("./View.bs.js"); var Panel$AgdaModeVscode = require("./Panel/Panel.bs.js"); @@ -18,7 +18,7 @@ var onRequest = Chan$AgdaModeVscode.make(undefined); var onEventToView = Chan$AgdaModeVscode.make(undefined); VSCode.Api.onMessage(function (stringifiedJSON) { - var requestOrEvent = Curry._1(View$AgdaModeVscode.RequestOrEventToView.decode, JSON.parse(stringifiedJSON)); + var requestOrEvent = Util$AgdaModeVscode.Decode.convert(View$AgdaModeVscode.RequestOrEventToView.decode, JSON.parse(stringifiedJSON)); if (requestOrEvent.TAG === /* Request */0) { return Chan$AgdaModeVscode.emit(onRequest, requestOrEvent._0); } else { diff --git a/lib/js/src/View/View.bs.js b/lib/js/src/View/View.bs.js index 2877debb..09b6eb6b 100644 --- a/lib/js/src/View/View.bs.js +++ b/lib/js/src/View/View.bs.js @@ -2,8 +2,6 @@ 'use strict'; var React = require("react"); -var Json_decode = require("@glennsl/bs-json/lib/js/src/Json_decode.bs.js"); -var Json_encode = require("@glennsl/bs-json/lib/js/src/Json_encode.bs.js"); var Chan$AgdaModeVscode = require("../Util/Chan.bs.js"); var Item$AgdaModeVscode = require("./Component/Item.bs.js"); var Link$AgdaModeVscode = require("./Component/Link.bs.js"); @@ -118,67 +116,26 @@ var Header = { encode: encode }; -var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { - if (x === "Prompt") { - return { - TAG: 0, - _0: (function (param) { - return Json_decode.map((function (param) { - return { - body: param[0], - placeholder: param[1], - value: param[2] - }; - }), (function (param) { - return Json_decode.tuple3((function (param) { - return Json_decode.optional(Json_decode.string, param); - }), (function (param) { - return Json_decode.optional(Json_decode.string, param); - }), (function (param) { - return Json_decode.optional(Json_decode.string, param); - }), param); - }), param); - }), - [Symbol.for("name")]: "Contents" - }; - } - throw { - RE_EXN_ID: Json_decode.DecodeError, - _1: "[Prompt] Unknown constructor: " + x, - Error: new Error() - }; +var decode$1 = Json_Decode$JsonCombinators.object(function (field) { + return { + body: field.required("body", Json_Decode$JsonCombinators.option(Json_Decode$JsonCombinators.string)), + placeholder: field.required("placeholder", Json_Decode$JsonCombinators.option(Json_Decode$JsonCombinators.string)), + value: field.required("value", Json_Decode$JsonCombinators.option(Json_Decode$JsonCombinators.string)) + }; }); -function encode$1(x) { - return Json_encode.object_({ - hd: [ - "tag", - "Prompt" - ], - tl: { - hd: [ - "contents", - Json_encode.tuple3((function (param) { - return Json_encode.nullable((function (prim) { - return prim; - }), param); - }), (function (param) { - return Json_encode.nullable((function (prim) { - return prim; - }), param); - }), (function (param) { - return Json_encode.nullable((function (prim) { - return prim; - }), param); - }), [ - x.body, - x.placeholder, - x.value - ]) - ], - tl: /* [] */0 - } - }); +function encode$1(param) { + return { + body: Json_Encode$JsonCombinators.option((function (prim) { + return prim; + }), param.body), + placeholder: Json_Encode$JsonCombinators.option((function (prim) { + return prim; + }), param.placeholder), + value: Json_Encode$JsonCombinators.option((function (prim) { + return prim; + }), param.value) + }; } var Prompt = { @@ -332,83 +289,57 @@ function toString$1(x) { } } -var decode$3 = Util$AgdaModeVscode.Decode.sum(function (x) { +var decode$3 = Util$AgdaModeVscode.Decode.sum_(function (x) { switch (x) { case "Append" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (param) { - return { - TAG: 1, - _0: param[0], - _1: param[1], - [Symbol.for("name")]: "Append" - }; - }), (function (param) { - return Json_decode.pair((function (param) { - return Util$AgdaModeVscode.Decode.convert(decode, param); - }), (function (param) { - return Json_decode.array((function (param) { - return Util$AgdaModeVscode.Decode.convert(Item$AgdaModeVscode.decode, param); - }), param); - }), param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.tuple2(decode, Json_Decode$JsonCombinators.array(Item$AgdaModeVscode.decode)), (function (param) { + return { + TAG: 1, + _0: param[0], + _1: param[1], + [Symbol.for("name")]: "Append" + }; + })), + [Symbol.for("name")]: "Payload" }; case "Display" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (param) { - return { - TAG: 0, - _0: param[0], - _1: param[1], - [Symbol.for("name")]: "Display" - }; - }), (function (param) { - return Json_decode.pair((function (param) { - return Util$AgdaModeVscode.Decode.convert(decode, param); - }), (function (param) { - return Json_decode.array((function (param) { - return Util$AgdaModeVscode.Decode.convert(Item$AgdaModeVscode.decode, param); - }), param); - }), param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.tuple2(decode, Json_Decode$JsonCombinators.array(Item$AgdaModeVscode.decode)), (function (param) { + return { + TAG: 0, + _0: param[0], + _1: param[1], + [Symbol.for("name")]: "Display" + }; + })), + [Symbol.for("name")]: "Payload" }; case "InputMethod" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (x) { - return { - TAG: 4, - _0: x, - [Symbol.for("name")]: "InputMethod" - }; - }), (function (param) { - return Util$AgdaModeVscode.Decode.convert(decode$2, param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(decode$2, (function (payload) { + return { + TAG: 4, + _0: payload, + [Symbol.for("name")]: "InputMethod" + }; + })), + [Symbol.for("name")]: "Payload" }; case "PromptIMUpdate" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (text) { - return { - TAG: 3, - _0: text, - [Symbol.for("name")]: "PromptIMUpdate" - }; - }), Json_decode.string, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (text) { + return { + TAG: 3, + _0: text, + [Symbol.for("name")]: "PromptIMUpdate" + }; + })), + [Symbol.for("name")]: "Payload" }; case "PromptInterrupt" : return { @@ -419,20 +350,18 @@ var decode$3 = Util$AgdaModeVscode.Decode.sum(function (x) { case "SetStatus" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (text) { - return { - TAG: 2, - _0: text, - [Symbol.for("name")]: "SetStatus" - }; - }), Json_decode.string, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (text) { + return { + TAG: 2, + _0: text, + [Symbol.for("name")]: "SetStatus" + }; + })), + [Symbol.for("name")]: "Payload" }; default: throw { - RE_EXN_ID: Json_decode.DecodeError, + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, _1: "[EventToView] Unknown constructor: " + x, Error: new Error() }; @@ -453,7 +382,7 @@ function encode$3(param) { return { TAG: 0, _0: "Display", - _1: Json_Encode$JsonCombinators.pair(encode, (function (param) { + _1: Json_Encode$JsonCombinators.tuple2(encode, (function (param) { return Json_Encode$JsonCombinators.array(Item$AgdaModeVscode.encode, param); }), [ x._0, @@ -465,7 +394,7 @@ function encode$3(param) { return { TAG: 0, _0: "Append", - _1: Json_Encode$JsonCombinators.pair(encode, (function (param) { + _1: Json_Encode$JsonCombinators.tuple2(encode, (function (param) { return Json_Encode$JsonCombinators.array(Item$AgdaModeVscode.encode, param); }), [ x._0, @@ -510,50 +439,19 @@ function toString$2(x) { return "Prompt " + x._0._0; } -var decode$4 = Util$AgdaModeVscode.Decode.sum(function (x) { - if (x === "Prompt") { +var decode$4 = Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.tuple2(decode, decode$1), (function (param) { return { - TAG: 0, - _0: (function (param) { - return Json_decode.map((function (param) { - return { - _0: param[0], - _1: param[1], - [Symbol.for("name")]: "Prompt" - }; - }), (function (param) { - return Json_decode.pair((function (param) { - return Util$AgdaModeVscode.Decode.convert(decode, param); - }), decode$1, param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: param[0], + _1: param[1], + [Symbol.for("name")]: "Prompt" }; - } - throw { - RE_EXN_ID: Json_decode.DecodeError, - _1: "[Request] Unknown constructor: " + x, - Error: new Error() - }; - }); + })); -function encode$4(x) { - return Json_encode.object_({ - hd: [ - "tag", - "Prompt" - ], - tl: { - hd: [ - "contents", - Json_encode.pair(encode, encode$1, [ - x._0, - x._1 - ]) - ], - tl: /* [] */0 - } - }); +function encode$4(request) { + return Json_Encode$JsonCombinators.tuple2(encode, encode$1, [ + request._0, + request._1 + ]); } var $$Request = { @@ -570,75 +468,59 @@ function toString$3(x) { } } -var decode$5 = Util$AgdaModeVscode.Decode.sum(function (x) { +var decode$5 = Util$AgdaModeVscode.Decode.sum_(function (x) { switch (x) { case "Event" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (x) { - return { - TAG: 1, - _0: x, - [Symbol.for("name")]: "Event" - }; - }), decode$3, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(decode$3, (function (payload) { + return { + TAG: 1, + _0: payload, + [Symbol.for("name")]: "Event" + }; + })), + [Symbol.for("name")]: "Payload" }; case "Request" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (x) { - return { - TAG: 0, - _0: x, - [Symbol.for("name")]: "Request" - }; - }), decode$4, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(decode$4, (function (payload) { + return { + TAG: 0, + _0: payload, + [Symbol.for("name")]: "Request" + }; + })), + [Symbol.for("name")]: "Payload" }; default: throw { - RE_EXN_ID: Json_decode.DecodeError, + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, _1: "[RequestOrEventToView] Unknown constructor: " + x, Error: new Error() }; } }); -function encode$5(x) { - if (x.TAG === /* Request */0) { - return Json_encode.object_({ - hd: [ - "tag", - "Request" - ], - tl: { - hd: [ - "contents", - encode$4(x._0) - ], - tl: /* [] */0 - } - }); - } else { - return Json_encode.object_({ - hd: [ - "tag", - "Event" - ], - tl: { - hd: [ - "contents", - encode$3(x._0) - ], - tl: /* [] */0 +function encode$5(param) { + return Util$AgdaModeVscode.Encode.sum((function (x) { + if (x.TAG === /* Request */0) { + return { + TAG: 0, + _0: "Request", + _1: encode$4(x._0), + [Symbol.for("name")]: "Payload" + }; + } else { + return { + TAG: 0, + _0: "Event", + _1: encode$3(x._0), + [Symbol.for("name")]: "Payload" + }; } - }); - } + }), param); } var RequestOrEventToView = { @@ -647,7 +529,7 @@ var RequestOrEventToView = { encode: encode$5 }; -var decode$6 = Util$AgdaModeVscode.Decode.sum(function (x) { +var decode$6 = Util$AgdaModeVscode.Decode.sum_(function (x) { switch (x) { case "PromptInterrupted" : return { @@ -658,49 +540,40 @@ var decode$6 = Util$AgdaModeVscode.Decode.sum(function (x) { case "PromptSuccess" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (result) { - return { - _0: result, - [Symbol.for("name")]: "PromptSuccess" - }; - }), Json_decode.string, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (result) { + return { + _0: result, + [Symbol.for("name")]: "PromptSuccess" + }; + })), + [Symbol.for("name")]: "Payload" }; default: throw { - RE_EXN_ID: Json_decode.DecodeError, + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, _1: "[Response] Unknown constructor: " + x, Error: new Error() }; } }); -function encode$6(x) { - if (x) { - return Json_encode.object_({ - hd: [ - "tag", - "PromptSuccess" - ], - tl: { - hd: [ - "contents", - x._0 - ], - tl: /* [] */0 +function encode$6(param) { + return Util$AgdaModeVscode.Encode.sum((function (x) { + if (x) { + return { + TAG: 0, + _0: "PromptSuccess", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; + } else { + return { + TAG: 1, + _0: "PromptInterrupted", + [Symbol.for("name")]: "TagOnly" + }; } - }); - } else { - return Json_encode.object_({ - hd: [ - "tag", - "PromptInterrupted" - ], - tl: /* [] */0 - }); - } + }), param); } var $$Response = { @@ -708,75 +581,59 @@ var $$Response = { encode: encode$6 }; -var decode$7 = Util$AgdaModeVscode.Decode.sum(function (x) { +var decode$7 = Util$AgdaModeVscode.Decode.sum_(function (x) { switch (x) { case "ChooseSymbol" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function ($$char) { - return { - TAG: 1, - _0: $$char, - [Symbol.for("name")]: "ChooseSymbol" - }; - }), Json_decode.string, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (symbol) { + return { + TAG: 1, + _0: symbol, + [Symbol.for("name")]: "ChooseSymbol" + }; + })), + [Symbol.for("name")]: "Payload" }; case "InsertChar" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function ($$char) { - return { - TAG: 0, - _0: $$char, - [Symbol.for("name")]: "InsertChar" - }; - }), Json_decode.string, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function ($$char) { + return { + TAG: 0, + _0: $$char, + [Symbol.for("name")]: "InsertChar" + }; + })), + [Symbol.for("name")]: "Payload" }; default: throw { - RE_EXN_ID: Json_decode.DecodeError, + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, _1: "[EventFromView.InputMethod] Unknown constructor: " + x, Error: new Error() }; } }); -function encode$7(x) { - if (x.TAG === /* InsertChar */0) { - return Json_encode.object_({ - hd: [ - "tag", - "InsertChar" - ], - tl: { - hd: [ - "contents", - x._0 - ], - tl: /* [] */0 - } - }); - } else { - return Json_encode.object_({ - hd: [ - "tag", - "ChooseSymbol" - ], - tl: { - hd: [ - "contents", - x._0 - ], - tl: /* [] */0 +function encode$7(param) { + return Util$AgdaModeVscode.Encode.sum((function (x) { + if (x.TAG === /* InsertChar */0) { + return { + TAG: 0, + _0: "InsertChar", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; + } else { + return { + TAG: 0, + _0: "ChooseSymbol", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; } - }); - } + }), param); } var InputMethod$1 = { @@ -784,7 +641,7 @@ var InputMethod$1 = { encode: encode$7 }; -var decode$8 = Util$AgdaModeVscode.Decode.sum(function (x) { +var decode$8 = Util$AgdaModeVscode.Decode.sum_(function (x) { switch (x) { case "BrowseDown" : return { @@ -819,117 +676,89 @@ var decode$8 = Util$AgdaModeVscode.Decode.sum(function (x) { case "KeyUpdate" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function ($$char) { - return { - TAG: 1, - _0: $$char, - [Symbol.for("name")]: "KeyUpdate" - }; - }), Json_decode.string, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function ($$char) { + return { + TAG: 1, + _0: $$char, + [Symbol.for("name")]: "KeyUpdate" + }; + })), + [Symbol.for("name")]: "Payload" }; case "MouseSelect" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (interval) { - return { - TAG: 0, - _0: interval, - [Symbol.for("name")]: "MouseSelect" - }; - }), (function (param) { - return Util$AgdaModeVscode.Decode.convert(Common$AgdaModeVscode.Interval.decode, param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Common$AgdaModeVscode.Interval.decode, (function (interval) { + return { + TAG: 0, + _0: interval, + [Symbol.for("name")]: "MouseSelect" + }; + })), + [Symbol.for("name")]: "Payload" }; default: throw { - RE_EXN_ID: Json_decode.DecodeError, - _1: "[EventFromView.Prompt] Unknown constructor: " + x, + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, + _1: "[EventFromView.PromptIMUpdate] Unknown constructor: " + x, Error: new Error() }; } }); -function encode$8(x) { - if (typeof x !== "number") { - if (x.TAG === /* MouseSelect */0) { - return Json_encode.object_({ - hd: [ - "tag", - "MouseSelect" - ], - tl: { - hd: [ - "contents", - Common$AgdaModeVscode.Interval.encode(x._0) - ], - tl: /* [] */0 - } - }); - } else { - return Json_encode.object_({ - hd: [ - "tag", - "KeyUpdate" - ], - tl: { - hd: [ - "contents", - x._0 - ], - tl: /* [] */0 +function encode$8(param) { + return Util$AgdaModeVscode.Encode.sum((function (x) { + if (typeof x !== "number") { + if (x.TAG === /* MouseSelect */0) { + return { + TAG: 0, + _0: "MouseSelect", + _1: Common$AgdaModeVscode.Interval.encode(x._0), + [Symbol.for("name")]: "Payload" + }; + } else { + return { + TAG: 0, + _0: "KeyUpdate", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; } - }); - } - } - switch (x) { - case /* BrowseUp */0 : - return Json_encode.object_({ - hd: [ - "tag", - "BrowseUp" - ], - tl: /* [] */0 - }); - case /* BrowseDown */1 : - return Json_encode.object_({ - hd: [ - "tag", - "BrowseDown" - ], - tl: /* [] */0 - }); - case /* BrowseLeft */2 : - return Json_encode.object_({ - hd: [ - "tag", - "BrowseLeft" - ], - tl: /* [] */0 - }); - case /* BrowseRight */3 : - return Json_encode.object_({ - hd: [ - "tag", - "BrowseRight" - ], - tl: /* [] */0 - }); - case /* Escape */4 : - return Json_encode.object_({ - hd: [ - "tag", - "Escape" - ], - tl: /* [] */0 - }); - - } + } + switch (x) { + case /* BrowseUp */0 : + return { + TAG: 1, + _0: "BrowseUp", + [Symbol.for("name")]: "TagOnly" + }; + case /* BrowseDown */1 : + return { + TAG: 1, + _0: "BrowseDown", + [Symbol.for("name")]: "TagOnly" + }; + case /* BrowseLeft */2 : + return { + TAG: 1, + _0: "BrowseLeft", + [Symbol.for("name")]: "TagOnly" + }; + case /* BrowseRight */3 : + return { + TAG: 1, + _0: "BrowseRight", + [Symbol.for("name")]: "TagOnly" + }; + case /* Escape */4 : + return { + TAG: 1, + _0: "Escape", + [Symbol.for("name")]: "TagOnly" + }; + + } + }), param); } var PromptIMUpdate = { @@ -955,7 +784,7 @@ var Provider = { make: make }; -var decode$9 = Util$AgdaModeVscode.Decode.sum(function (x) { +var decode$9 = Util$AgdaModeVscode.Decode.sum_(function (x) { switch (x) { case "Destroyed" : return { @@ -972,119 +801,90 @@ var decode$9 = Util$AgdaModeVscode.Decode.sum(function (x) { case "InputMethod" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (action) { - return { - TAG: 0, - _0: action, - [Symbol.for("name")]: "InputMethod" - }; - }), decode$7, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(decode$7, (function (payload) { + return { + TAG: 0, + _0: payload, + [Symbol.for("name")]: "InputMethod" + }; + })), + [Symbol.for("name")]: "Payload" }; case "JumpToTarget" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (link) { - return { - TAG: 2, - _0: link, - [Symbol.for("name")]: "JumpToTarget" - }; - }), Link$AgdaModeVscode.decode, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Link$AgdaModeVscode.decode, (function (link) { + return { + TAG: 2, + _0: link, + [Symbol.for("name")]: "JumpToTarget" + }; + })), + [Symbol.for("name")]: "Payload" }; case "PromptIMUpdate" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (action) { - return { - TAG: 1, - _0: action, - [Symbol.for("name")]: "PromptIMUpdate" - }; - }), decode$8, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(decode$8, (function (payload) { + return { + TAG: 1, + _0: payload, + [Symbol.for("name")]: "PromptIMUpdate" + }; + })), + [Symbol.for("name")]: "Payload" }; default: throw { - RE_EXN_ID: Json_decode.DecodeError, + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, _1: "[EventFromView] Unknown constructor: " + x, Error: new Error() }; } }); -function encode$9(x) { - if (typeof x === "number") { - if (x === /* Initialized */0) { - return Json_encode.object_({ - hd: [ - "tag", - "Initialized" - ], - tl: /* [] */0 - }); - } else { - return Json_encode.object_({ - hd: [ - "tag", - "Destroyed" - ], - tl: /* [] */0 - }); - } - } - switch (x.TAG | 0) { - case /* InputMethod */0 : - return Json_encode.object_({ - hd: [ - "tag", - "InputMethod" - ], - tl: { - hd: [ - "contents", - encode$7(x._0) - ], - tl: /* [] */0 - } - }); - case /* PromptIMUpdate */1 : - return Json_encode.object_({ - hd: [ - "tag", - "PromptIMUpdate" - ], - tl: { - hd: [ - "contents", - encode$8(x._0) - ], - tl: /* [] */0 - } - }); - case /* JumpToTarget */2 : - return Json_encode.object_({ - hd: [ - "tag", - "JumpToTarget" - ], - tl: { - hd: [ - "contents", - Link$AgdaModeVscode.encode(x._0) - ], - tl: /* [] */0 - } - }); - - } +function encode$9(param) { + return Util$AgdaModeVscode.Encode.sum((function (x) { + if (typeof x === "number") { + if (x === /* Initialized */0) { + return { + TAG: 1, + _0: "Initialized", + [Symbol.for("name")]: "TagOnly" + }; + } else { + return { + TAG: 1, + _0: "Destroyed", + [Symbol.for("name")]: "TagOnly" + }; + } + } + switch (x.TAG | 0) { + case /* InputMethod */0 : + return { + TAG: 0, + _0: "InputMethod", + _1: encode$7(x._0), + [Symbol.for("name")]: "Payload" + }; + case /* PromptIMUpdate */1 : + return { + TAG: 0, + _0: "PromptIMUpdate", + _1: encode$8(x._0), + [Symbol.for("name")]: "Payload" + }; + case /* JumpToTarget */2 : + return { + TAG: 0, + _0: "JumpToTarget", + _1: Link$AgdaModeVscode.encode(x._0), + [Symbol.for("name")]: "Payload" + }; + + } + }), param); } var EventFromView = { @@ -1097,75 +897,59 @@ var EventFromView = { encode: encode$9 }; -var decode$10 = Util$AgdaModeVscode.Decode.sum(function (x) { +var decode$10 = Util$AgdaModeVscode.Decode.sum_(function (x) { switch (x) { case "Event" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (x) { - return { - TAG: 1, - _0: x, - [Symbol.for("name")]: "Event" - }; - }), decode$9, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(decode$9, (function (payload) { + return { + TAG: 1, + _0: payload, + [Symbol.for("name")]: "Event" + }; + })), + [Symbol.for("name")]: "Payload" }; case "Response" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (x) { - return { - TAG: 0, - _0: x, - [Symbol.for("name")]: "Response" - }; - }), decode$6, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(decode$6, (function (payload) { + return { + TAG: 0, + _0: payload, + [Symbol.for("name")]: "Response" + }; + })), + [Symbol.for("name")]: "Payload" }; default: throw { - RE_EXN_ID: Json_decode.DecodeError, + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, _1: "[ResponseOrEventFromView] Unknown constructor: " + x, Error: new Error() }; } }); -function encode$10(x) { - if (x.TAG === /* Response */0) { - return Json_encode.object_({ - hd: [ - "tag", - "Response" - ], - tl: { - hd: [ - "contents", - encode$6(x._0) - ], - tl: /* [] */0 - } - }); - } else { - return Json_encode.object_({ - hd: [ - "tag", - "Event" - ], - tl: { - hd: [ - "contents", - encode$9(x._0) - ], - tl: /* [] */0 +function encode$10(param) { + return Util$AgdaModeVscode.Encode.sum((function (x) { + if (x.TAG === /* Response */0) { + return { + TAG: 0, + _0: "Response", + _1: encode$6(x._0), + [Symbol.for("name")]: "Payload" + }; + } else { + return { + TAG: 0, + _0: "Event", + _1: encode$9(x._0), + [Symbol.for("name")]: "Payload" + }; } - }); - } + }), param); } var ResponseOrEventFromView = { diff --git a/lib/js/src/View/WebviewPanel.bs.js b/lib/js/src/View/WebviewPanel.bs.js index 6bd3c2d0..f8e93e3f 100644 --- a/lib/js/src/View/WebviewPanel.bs.js +++ b/lib/js/src/View/WebviewPanel.bs.js @@ -10,9 +10,9 @@ var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Js_array = require("rescript/lib/js/js_array.js"); var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); -var Caml_js_exceptions = require("rescript/lib/js/caml_js_exceptions.js"); var Chan$AgdaModeVscode = require("../Util/Chan.bs.js"); var View$AgdaModeVscode = require("./View.bs.js"); +var Json$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json.bs.js"); var Config$AgdaModeVscode = require("../Config.bs.js"); function makeHTML(webview, extensionPath) { @@ -182,20 +182,16 @@ function make$1(title, extensionPath) { moveToBottom(undefined); } Js_array.push(view.panel.webview.onDidReceiveMessage(function (json) { - var res; - try { - res = Curry._1(View$AgdaModeVscode.ResponseOrEventFromView.decode, json); - } - catch (raw_e){ - var e = Caml_js_exceptions.internalToOCamlException(raw_e); - console.log("[ panic ][ Webview.onDidReceiveMessage JSON decode error ]", e); - return ; - } - if (res.TAG === /* Response */0) { - return Chan$AgdaModeVscode.emit(view.onResponse, res._0); - } else { - return Chan$AgdaModeVscode.emit(view.onEvent, res._0); + var e = Json$JsonCombinators.decode(json, View$AgdaModeVscode.ResponseOrEventFromView.decode); + if (e.TAG === /* Ok */0) { + var res = e._0; + if (res.TAG === /* Response */0) { + return Chan$AgdaModeVscode.emit(view.onResponse, res._0); + } else { + return Chan$AgdaModeVscode.emit(view.onEvent, res._0); + } } + console.log("[ panic ][ Webview.onDidReceiveMessage JSON decode error ]", e._0); }), view.subscriptions); Js_array.push(view.panel.onDidDispose(function (param) { Chan$AgdaModeVscode.emit(view.onEvent, /* Destroyed */1); diff --git a/src/InputMethod/Translator.res b/src/InputMethod/Translator.res index 87afdb17..88dee907 100644 --- a/src/InputMethod/Translator.res +++ b/src/InputMethod/Translator.res @@ -123,8 +123,9 @@ let lookup = (symbol): option> => let decode = { open JsonCombinators.Json.Decode + // TODO: replace `field.required(. "symbol", option(string))` with `field.optional(. "symbol", string)` object(field => { - symbol: field.optional(. "symbol", string), + symbol: field.required(. "symbol", option(string)), further: field.required(. "further", bool), keySuggestions: field.required(. "keySuggestions", array(string)), candidateSymbols: field.required(. "candidateSymbols", array(string)), diff --git a/src/View/Component/Link.res b/src/View/Component/Link.res index 6e42b420..77dbdb01 100644 --- a/src/View/Component/Link.res +++ b/src/View/Component/Link.res @@ -10,23 +10,27 @@ let toString = x => | Hole(int) => "?" ++ string_of_int(int) } -let decode: Json.Decode.decoder = Util.Decode.sum(x => { - open Json.Decode - switch x { - | "LinkRange" => Contents(Util.Decode.convert(AgdaRange.decode) |> map(range => SrcLoc(range))) - | "LinkHole" => Contents(int |> map(index => Hole(index))) - | tag => raise(DecodeError("[View.Link] Unknown constructor: " ++ tag)) - } -}) +let decode = { + open JsonCombinators.Json.Decode + Util.Decode.sum_(x => { + switch x { + | "LinkRange" => Payload(AgdaRange.decode->map((. range) => SrcLoc(range))) + | "LinkHole" => Payload(int->map((. index) => Hole(index))) + | tag => raise(DecodeError("[View.Link] Unknown constructor: " ++ tag)) + } + }) +} -let encode: Json.Encode.encoder = x => { - open Json.Encode - switch x { - | SrcLoc(range) => - object_(list{("tag", string("LinkRange")), ("contents", range |> AgdaRange.encode)}) - | Hole(index) => object_(list{("tag", string("LinkHole")), ("contents", index |> int)}) - } +let encode = { + open JsonCombinators.Json.Encode + Util.Encode.sum(x => + switch x { + | SrcLoc(range) => Payload("LinkRange", AgdaRange.encode(range)) + | Hole(index) => Payload("LinkHole", int(index)) + } + ) } + module Event = { type t = | JumpToTarget(t) @@ -50,9 +54,9 @@ module Event = { open Json.Decode Util.Decode.sum(x => switch x { - | "JumpToTarget" => Contents(decode |> map(link => JumpToTarget(link))) - | "MouseOver" => Contents(decode |> map(link => MouseOver(link))) - | "MouseOut" => Contents(decode |> map(link => MouseOut(link))) + | "JumpToTarget" => Contents(Util.Decode.convert(decode) |> map(link => JumpToTarget(link))) + | "MouseOver" => Contents(Util.Decode.convert(decode) |> map(link => MouseOver(link))) + | "MouseOut" => Contents(Util.Decode.convert(decode) |> map(link => MouseOut(link))) | tag => raise(DecodeError("[Response.EventFromView] Unknown constructor: " ++ tag)) } ) diff --git a/src/View/Root.res b/src/View/Root.res index 49174d0a..70ebc09f 100644 --- a/src/View/Root.res +++ b/src/View/Root.res @@ -8,7 +8,10 @@ let vscode = VSCode.Api.acquireVsCodeApi() let onRequest = Chan.make() let onEventToView = Chan.make() VSCode.Api.onMessage(stringifiedJSON => { - let requestOrEvent = stringifiedJSON->Js.Json.parseExn->View.RequestOrEventToView.decode + let requestOrEvent = Util.Decode.convert( + View.RequestOrEventToView.decode, + stringifiedJSON->Js.Json.parseExn, + ) switch requestOrEvent { | Event(event) => onEventToView->Chan.emit(event) diff --git a/src/View/View.res b/src/View/View.res index 0554ed5e..03715e08 100644 --- a/src/View/View.res +++ b/src/View/View.res @@ -15,17 +15,6 @@ module Header = { | Error(string) => string } - // let decode: Json.Decode.decoder = Util.Decode.sum(x => { - // open Json.Decode - // switch x { - // | "Plain" => Contents(string |> map(text => Plain(text))) - // | "Success" => Contents(string |> map(text => Success(text))) - // | "Warning" => Contents(string |> map(text => Warning(text))) - // | "Error" => Contents(string |> map(text => Error(text))) - // | tag => raise(DecodeError("[Header] Unknown constructor: " ++ tag)) - // } - // }) - let decode = { open JsonCombinators.Json.Decode Util.Decode.sum_(x => { @@ -60,41 +49,23 @@ module Prompt = { } // JSON encode/decode - let decode: Json.Decode.decoder = Util.Decode.sum(x => { - open Json.Decode - switch x { - | "Prompt" => - Contents( - tuple3(optional(string), optional(string), optional(string)) |> map((( - body, - placeholder, - value, - )) => { - body, - placeholder, - value, - }), - ) - | tag => raise(DecodeError("[Prompt] Unknown constructor: " ++ tag)) - } - }) + let decode = { + // TODO: replace `field.required(. "body", option(string))` with `field.optional(. "body", string)` + open JsonCombinators.Json.Decode + object(field => { + body: field.required(. "body", option(string)), + placeholder: field.required(. "placeholder", option(string)), + value: field.required(. "value", option(string)), + }) + } - let encode: Json.Encode.encoder = x => { - open Json.Encode - switch x { - | {body, placeholder, value} => - object_(list{ - ("tag", string("Prompt")), - ( - "contents", - (body, placeholder, value) |> tuple3( - nullable(string), - nullable(string), - nullable(string), - ), - ), - }) - } + let encode = ({body, placeholder, value}) => { + open JsonCombinators.Json.Encode + Unsafe.object({ + "body": option(string, body), + "placeholder": option(string, placeholder), + "value": option(string, value), + }) } } module Body = { @@ -170,40 +141,41 @@ module EventToView = { | InputMethod(_) => "InputMethod" } - // JSON encode/decode - let decode: Json.Decode.decoder = Util.Decode.sum(x => { - open Json.Decode - switch x { - | "Display" => - Contents( - pair(Util.Decode.convert(Header.decode), array(Util.Decode.convert( Item.decode))) |> map((( - header, - body, - )) => Display(header, body)), - ) - | "Append" => - Contents( - pair(Util.Decode.convert(Header.decode), array(Util.Decode.convert( Item.decode))) |> map((( - header, - body, - )) => Append(header, body)), - ) - | "SetStatus" => Contents(string |> map(text => SetStatus(text))) - | "PromptInterrupt" => TagOnly(PromptInterrupt) - | "PromptIMUpdate" => Contents(string |> map(text => PromptIMUpdate(text))) - | "InputMethod" => Contents(Util.Decode.convert(InputMethod.decode) |> map(x => InputMethod(x))) - | tag => raise(DecodeError("[EventToView] Unknown constructor: " ++ tag)) - } - }) + let decode = { + open JsonCombinators.Json.Decode + Util.Decode.sum_(x => { + switch x { + | "Display" => + Payload( + tuple2(Header.decode, array(Item.decode))->map((. (header, body)) => Display( + header, + body, + )), + ) + | "Append" => + Payload( + tuple2(Header.decode, array(Item.decode))->map((. (header, body)) => Append( + header, + body, + )), + ) + | "SetStatus" => Payload(string->map((. text) => SetStatus(text))) + | "PromptInterrupt" => TagOnly(PromptInterrupt) + | "PromptIMUpdate" => Payload(string->map((. text) => PromptIMUpdate(text))) + | "InputMethod" => Payload(InputMethod.decode->map((. payload) => InputMethod(payload))) + | tag => raise(DecodeError("[EventToView] Unknown constructor: " ++ tag)) + } + }) + } let encode = { open JsonCombinators.Json.Encode Util.Encode.sum(x => switch x { | Display(header, body) => - Payload("Display", pair(Header.encode, array(Item.encode), (header, body))) + Payload("Display", tuple2(Header.encode, array(Item.encode), (header, body))) | Append(header, body) => - Payload("Append", pair(Header.encode, array(Item.encode), (header, body))) + Payload("Append", tuple2(Header.encode, array(Item.encode), (header, body))) | SetStatus(text) => Payload("SetStatus", string(text)) | PromptInterrupt => TagOnly("PromptInterrupt") | PromptIMUpdate(text) => Payload("PromptIMUpdate", string(text)) @@ -222,28 +194,15 @@ module Request = { } // JSON encode/decode - let decode: Json.Decode.decoder = Util.Decode.sum(x => { - open Json.Decode - switch x { - | "Prompt" => - Contents( - pair(Util.Decode.convert(Header.decode), Prompt.decode) |> map(((header, prompt)) => Prompt( - header, - prompt, - )), - ) - | tag => raise(DecodeError("[Request] Unknown constructor: " ++ tag)) - } - }) + let decode = { + open JsonCombinators.Json.Decode + tuple2(Header.decode, Prompt.decode)->map((. (header, prompt)) => Prompt(header, prompt)) + } - let encode: Json.Encode.encoder = x => { - open Json.Encode - switch x { - | Prompt(header, prompt) => - object_(list{ - ("tag", string("Prompt")), - ("contents", (header, prompt) |> pair(Header.encode, Prompt.encode)), - }) + let encode = request => { + open JsonCombinators.Json.Encode + switch request { + | Prompt(header, prompt) => tuple2(Header.encode, Prompt.encode, (header, prompt)) } } } @@ -260,23 +219,24 @@ module RequestOrEventToView = { } // JSON encode/decode - let decode: Json.Decode.decoder = Util.Decode.sum(x => { - open Json.Decode - switch x { - | "Request" => Contents(Request.decode |> map(x => Request(x))) - | "Event" => Contents(EventToView.decode |> map(x => Event(x))) - | tag => raise(DecodeError("[RequestOrEventToView] Unknown constructor: " ++ tag)) - } - }) + let decode = { + open JsonCombinators.Json.Decode + Util.Decode.sum_(x => { + switch x { + | "Request" => Payload(Request.decode->map((. payload) => Request(payload))) + | "Event" => Payload(EventToView.decode->map((. payload) => Event(payload))) + | tag => raise(DecodeError("[RequestOrEventToView] Unknown constructor: " ++ tag)) + } + }) + } - let encode: Json.Encode.encoder = x => { - open Json.Encode - switch x { - | Request(payload) => - object_(list{("tag", string("Request")), ("contents", payload |> Request.encode)}) - | Event(payload) => - object_(list{("tag", string("Event")), ("contents", payload |> EventToView.encode)}) - } + let encode = { + Util.Encode.sum(x => + switch x { + | Request(payload) => Payload("Request", Request.encode(payload)) + | Event(payload) => Payload("Event", EventToView.encode(payload)) + } + ) } } @@ -285,22 +245,25 @@ module Response = { | PromptSuccess(string) | PromptInterrupted - let decode: Json.Decode.decoder = Util.Decode.sum(x => { - open Json.Decode - switch x { - | "PromptSuccess" => Contents(string |> map(result => PromptSuccess(result))) - | "PromptInterrupted" => TagOnly(PromptInterrupted) - | tag => raise(DecodeError("[Response] Unknown constructor: " ++ tag)) - } - }) + let decode = { + open JsonCombinators.Json.Decode + Util.Decode.sum_(x => { + switch x { + | "PromptSuccess" => Payload(string->map((. result) => PromptSuccess(result))) + | "PromptInterrupted" => TagOnly(PromptInterrupted) + | tag => raise(DecodeError("[Response] Unknown constructor: " ++ tag)) + } + }) + } - let encode: Json.Encode.encoder = x => { - open Json.Encode - switch x { - | PromptSuccess(result) => - object_(list{("tag", string("PromptSuccess")), ("contents", result |> string)}) - | PromptInterrupted => object_(list{("tag", string("PromptInterrupted"))}) - } + let encode = { + open JsonCombinators.Json.Encode + Util.Encode.sum(x => + switch x { + | PromptSuccess(result) => Payload("PromptSuccess", string(result)) + | PromptInterrupted => TagOnly("PromptInterrupted") + } + ) } } @@ -310,23 +273,26 @@ module EventFromView = { | InsertChar(string) | ChooseSymbol(string) - let decode: Json.Decode.decoder = Util.Decode.sum(x => { - open Json.Decode - switch x { - | "InsertChar" => Contents(string |> map(char => InsertChar(char))) - | "ChooseSymbol" => Contents(string |> map(char => ChooseSymbol(char))) - | tag => raise(DecodeError("[EventFromView.InputMethod] Unknown constructor: " ++ tag)) - } - }) + let decode = { + open JsonCombinators.Json.Decode + Util.Decode.sum_(x => { + switch x { + | "InsertChar" => Payload(string->map((. char) => InsertChar(char))) + | "ChooseSymbol" => Payload(string->map((. symbol) => ChooseSymbol(symbol))) + | tag => raise(DecodeError("[EventFromView.InputMethod] Unknown constructor: " ++ tag)) + } + }) + } - open! Json.Encode - let encode: Json.Encode.encoder = x => - switch x { - | InsertChar(char) => - object_(list{("tag", string("InsertChar")), ("contents", char |> string)}) - | ChooseSymbol(symbol) => - object_(list{("tag", string("ChooseSymbol")), ("contents", symbol |> string)}) - } + let encode = { + open JsonCombinators.Json.Encode + Util.Encode.sum(x => + switch x { + | InsertChar(char) => Payload("InsertChar", string(char)) + | ChooseSymbol(symbol) => Payload("ChooseSymbol", string(symbol)) + } + ) + } } module PromptIMUpdate = { @@ -339,34 +305,36 @@ module EventFromView = { | BrowseRight | Escape - open Json.Decode - - let decode: Json.Decode.decoder = Util.Decode.sum(x => - switch x { - | "MouseSelect" => - Contents(Util.Decode.convert(Interval.decode) |> map(interval => MouseSelect(interval))) - | "KeyUpdate" => Contents(string |> map(char => KeyUpdate(char))) - | "BrowseUp" => TagOnly(BrowseUp) - | "BrowseDown" => TagOnly(BrowseDown) - | "BrowseLeft" => TagOnly(BrowseLeft) - | "BrowseRight" => TagOnly(BrowseRight) - | "Escape" => TagOnly(Escape) - | tag => raise(DecodeError("[EventFromView.Prompt] Unknown constructor: " ++ tag)) - } - ) + let decode = { + open JsonCombinators.Json.Decode + Util.Decode.sum_(x => { + switch x { + | "MouseSelect" => Payload(Interval.decode->map((. interval) => MouseSelect(interval))) + | "KeyUpdate" => Payload(string->map((. char) => KeyUpdate(char))) + | "BrowseUp" => TagOnly(BrowseUp) + | "BrowseDown" => TagOnly(BrowseDown) + | "BrowseLeft" => TagOnly(BrowseLeft) + | "BrowseRight" => TagOnly(BrowseRight) + | "Escape" => TagOnly(Escape) + | tag => raise(DecodeError("[EventFromView.PromptIMUpdate] Unknown constructor: " ++ tag)) + } + }) + } - open! Json.Encode - let encode: Json.Encode.encoder = x => - switch x { - | MouseSelect(interval) => - object_(list{("tag", string("MouseSelect")), ("contents", interval |> Interval.encode)}) - | KeyUpdate(char) => object_(list{("tag", string("KeyUpdate")), ("contents", char |> string)}) - | BrowseUp => object_(list{("tag", string("BrowseUp"))}) - | BrowseDown => object_(list{("tag", string("BrowseDown"))}) - | BrowseLeft => object_(list{("tag", string("BrowseLeft"))}) - | BrowseRight => object_(list{("tag", string("BrowseRight"))}) - | Escape => object_(list{("tag", string("Escape"))}) - } + let encode = { + open JsonCombinators.Json.Encode + Util.Encode.sum(x => + switch x { + | MouseSelect(interval) => Payload("MouseSelect", Interval.encode(interval)) + | KeyUpdate(char) => Payload("KeyUpdate", string(char)) + | BrowseUp => TagOnly("BrowseUp") + | BrowseDown => TagOnly("BrowseDown") + | BrowseLeft => TagOnly("BrowseLeft") + | BrowseRight => TagOnly("BrowseRight") + | Escape => TagOnly("Escape") + } + ) + } } type t = @@ -389,33 +357,31 @@ module EventFromView = { let make = React.Context.provider(eventContext) } - let decode: Json.Decode.decoder = Util.Decode.sum(x => { - open Json.Decode - switch x { - | "Initialized" => TagOnly(Initialized) - | "Destroyed" => TagOnly(Destroyed) - | "InputMethod" => Contents(InputMethod.decode |> map(action => InputMethod(action))) - | "PromptIMUpdate" => Contents(PromptIMUpdate.decode |> map(action => PromptIMUpdate(action))) - | "JumpToTarget" => Contents(Link.decode |> map(link => JumpToTarget(link))) - | tag => raise(DecodeError("[EventFromView] Unknown constructor: " ++ tag)) - } - }) + let decode = { + open JsonCombinators.Json.Decode + Util.Decode.sum_(x => { + switch x { + | "Initialized" => TagOnly(Initialized) + | "Destroyed" => TagOnly(Destroyed) + | "InputMethod" => Payload(InputMethod.decode->map((. payload) => InputMethod(payload))) + | "PromptIMUpdate" => + Payload(PromptIMUpdate.decode->map((. payload) => PromptIMUpdate(payload))) + | "JumpToTarget" => Payload(Link.decode->map((. link) => JumpToTarget(link))) + | tag => raise(DecodeError("[EventFromView] Unknown constructor: " ++ tag)) + } + }) + } - let encode: Json.Encode.encoder = x => { - open Json.Encode - switch x { - | Initialized => object_(list{("tag", string("Initialized"))}) - | Destroyed => object_(list{("tag", string("Destroyed"))}) - | InputMethod(action) => - object_(list{("tag", string("InputMethod")), ("contents", action |> InputMethod.encode)}) - | PromptIMUpdate(action) => - object_(list{ - ("tag", string("PromptIMUpdate")), - ("contents", action |> PromptIMUpdate.encode), - }) - | JumpToTarget(link) => - object_(list{("tag", string("JumpToTarget")), ("contents", link |> Link.encode)}) - } + let encode = { + Util.Encode.sum(x => + switch x { + | Initialized => TagOnly("Initialized") + | Destroyed => TagOnly("Destroyed") + | InputMethod(action) => Payload("InputMethod", InputMethod.encode(action)) + | PromptIMUpdate(action) => Payload("PromptIMUpdate", PromptIMUpdate.encode(action)) + | JumpToTarget(link) => Payload("JumpToTarget", Link.encode(link)) + } + ) } } @@ -425,22 +391,23 @@ module ResponseOrEventFromView = { | Event(EventFromView.t) // JSON encode/decode - let decode: Json.Decode.decoder = Util.Decode.sum(x => { - open Json.Decode - switch x { - | "Response" => Contents(Response.decode |> map(x => Response(x))) - | "Event" => Contents(EventFromView.decode |> map(x => Event(x))) - | tag => raise(DecodeError("[ResponseOrEventFromView] Unknown constructor: " ++ tag)) - } - }) + let decode = { + open JsonCombinators.Json.Decode + Util.Decode.sum_(x => { + switch x { + | "Response" => Payload(Response.decode->map((. payload) => Response(payload))) + | "Event" => Payload(EventFromView.decode->map((. payload) => Event(payload))) + | tag => raise(DecodeError("[ResponseOrEventFromView] Unknown constructor: " ++ tag)) + } + }) + } - let encode: Json.Encode.encoder = x => { - open Json.Encode - switch x { - | Response(payload) => - object_(list{("tag", string("Response")), ("contents", payload |> Response.encode)}) - | Event(payload) => - object_(list{("tag", string("Event")), ("contents", payload |> EventFromView.encode)}) - } + let encode = { + Util.Encode.sum(x => + switch x { + | Response(payload) => Payload("Response", Response.encode(payload)) + | Event(payload) => Payload("Event", EventFromView.encode(payload)) + } + ) } } diff --git a/src/View/WebviewPanel.res b/src/View/WebviewPanel.res index aebf7663..726db4a9 100644 --- a/src/View/WebviewPanel.res +++ b/src/View/WebviewPanel.res @@ -265,10 +265,10 @@ module Module: Module = { // relay Webview.onDidReceiveMessage => onResponse or onEvent view.panel ->WebviewPanel.recv(json => - switch View.ResponseOrEventFromView.decode(json) { - | Response(res) => view.onResponse->Chan.emit(res) - | Event(ev) => view.onEvent->Chan.emit(ev) - | exception e => Js.log2("[ panic ][ Webview.onDidReceiveMessage JSON decode error ]", e) + switch JsonCombinators.Json.decode(json, View.ResponseOrEventFromView.decode) { + | Ok(Response(res)) => view.onResponse->Chan.emit(res) + | Ok(Event(ev)) => view.onEvent->Chan.emit(ev) + | Error(e) => Js.log2("[ panic ][ Webview.onDidReceiveMessage JSON decode error ]", e) } ) ->Js.Array.push(view.subscriptions) From e47240f613b5fe1acbd5d65fc7a5797bd7114ac4 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Mon, 4 Dec 2023 17:15:37 +0800 Subject: [PATCH 044/109] [ change ] Upgrade some of the JSON encoder/decoder in Connection__LSP --- lib/js/src/Connection/Connection.bs.js | 18 +-- .../src/Connection/LSP/Connection__LSP.bs.js | 146 ++++++++---------- .../LSP/Connection__LSP__Error.bs.js | 44 +++--- lib/js/src/Response.bs.js | 22 ++- lib/js/src/Tokens.bs.js | 72 ++++----- lib/js/src/Util/Util.bs.js | 18 +-- lib/js/src/View/Common.bs.js | 26 ++-- lib/js/src/View/Component/Link.bs.js | 141 +++++++---------- lib/js/src/View/Root.bs.js | 2 +- src/Connection/Connection.res | 8 +- src/Connection/LSP/Connection__LSP.res | 124 +++++++++++---- src/Connection/LSP/Connection__LSP__Error.res | 20 +-- src/Response.res | 21 +-- src/Tokens.res | 72 ++++----- src/Util/Util.res | 12 +- src/View/Common.res | 14 +- src/View/Component/Link.res | 35 +++-- src/View/Root.res | 1 + 18 files changed, 397 insertions(+), 399 deletions(-) diff --git a/lib/js/src/Connection/Connection.bs.js b/lib/js/src/Connection/Connection.bs.js index 7e1525e6..473aa54f 100644 --- a/lib/js/src/Connection/Connection.bs.js +++ b/lib/js/src/Connection/Connection.bs.js @@ -3,29 +3,25 @@ var Curry = require("rescript/lib/js/curry.js"); var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); -var Json_encode = require("@glennsl/bs-json/lib/js/src/Json_encode.bs.js"); var Util$AgdaModeVscode = require("../Util/Util.bs.js"); var Config$AgdaModeVscode = require("../Config.bs.js"); var Parser$AgdaModeVscode = require("../Parser/Parser.bs.js"); var Request$AgdaModeVscode = require("../Request.bs.js"); +var Json_Encode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Encode.bs.js"); var Client__LSP$LanguageServerMule = require("language-server-mule/lib/js/src/Client/Client__LSP.bs.js"); var Connection__LSP$AgdaModeVscode = require("./LSP/Connection__LSP.bs.js"); var Connection__Emacs$AgdaModeVscode = require("./Emacs/Connection__Emacs.bs.js"); var Connection__Probe$AgdaModeVscode = require("./Connection__Probe.bs.js"); function getFromConfig(param) { - var x = { + var param$1 = { commandLineOptions: Config$AgdaModeVscode.Connection.getCommandLineOptions(undefined) }; - return Json_encode.object_({ - hd: [ - "commandLineOptions", - Json_encode.array((function (prim) { - return prim; - }), x.commandLineOptions) - ], - tl: /* [] */0 - }); + return { + commandLineOptions: Json_Encode$JsonCombinators.array((function (prim) { + return prim; + }), param$1.commandLineOptions) + }; } var singleton = { diff --git a/lib/js/src/Connection/LSP/Connection__LSP.bs.js b/lib/js/src/Connection/LSP/Connection__LSP.bs.js index 2abbb2d8..f98479b4 100644 --- a/lib/js/src/Connection/LSP/Connection__LSP.bs.js +++ b/lib/js/src/Connection/LSP/Connection__LSP.bs.js @@ -4,41 +4,35 @@ var Curry = require("rescript/lib/js/curry.js"); var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Json_decode = require("@glennsl/bs-json/lib/js/src/Json_decode.bs.js"); -var Json_encode = require("@glennsl/bs-json/lib/js/src/Json_encode.bs.js"); var Caml_js_exceptions = require("rescript/lib/js/caml_js_exceptions.js"); var Item$AgdaModeVscode = require("../../View/Component/Item.bs.js"); var Util$AgdaModeVscode = require("../../Util/Util.bs.js"); +var Json$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json.bs.js"); var Parser$AgdaModeVscode = require("../../Parser/Parser.bs.js"); var Tokens$AgdaModeVscode = require("../../Tokens.bs.js"); var Response$AgdaModeVscode = require("../../Response.bs.js"); +var Json_Decode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Decode.bs.js"); var Client__LSP$LanguageServerMule = require("language-server-mule/lib/js/src/Client/Client__LSP.bs.js"); var Connection__Scheduler$AgdaModeVscode = require("../Connection__Scheduler.bs.js"); var Connection__LSP__Error$AgdaModeVscode = require("./Connection__LSP__Error.bs.js"); -function encode(x) { - if (x) { - return Json_encode.object_({ - hd: [ - "tag", - "CmdReq" - ], - tl: { - hd: [ - "contents", - x._0 - ], - tl: /* [] */0 +function encode(param) { + return Util$AgdaModeVscode.Encode.sum((function (x) { + if (x) { + return { + TAG: 0, + _0: "CmdReq", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; + } else { + return { + TAG: 1, + _0: "CmdReqSYN", + [Symbol.for("name")]: "TagOnly" + }; } - }); - } else { - return Json_encode.object_({ - hd: [ - "tag", - "CmdReqSYN" - ], - tl: /* [] */0 - }); - } + }), param); } var CommandReq = { @@ -49,42 +43,36 @@ function fromJsError(error) { return (function (e) {return e.toString()})(error); } -var decode = Util$AgdaModeVscode.Decode.sum(function (x) { +var decode = Util$AgdaModeVscode.Decode.sum_(function (x) { switch (x) { case "CmdRes" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (error) { - return { - TAG: 1, - _0: error, - [Symbol.for("name")]: "Result" - }; - }), (function (param) { - return Json_decode.optional(Connection__LSP__Error$AgdaModeVscode.CommandErr.decode, param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.option(Connection__LSP__Error$AgdaModeVscode.CommandErr.decode), (function (error) { + return { + TAG: 1, + _0: error, + [Symbol.for("name")]: "Result" + }; + })), + [Symbol.for("name")]: "Payload" }; case "CmdResACK" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (version) { - return { - TAG: 0, - _0: version, - [Symbol.for("name")]: "ACK" - }; - }), Json_decode.string, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (version) { + return { + TAG: 0, + _0: version, + [Symbol.for("name")]: "ACK" + }; + })), + [Symbol.for("name")]: "Payload" }; default: throw { - RE_EXN_ID: Json_decode.DecodeError, - _1: "[LSP.CommandRes] Unknown constructor: " + x, + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, + _1: "[Connection.LSP.CommandRes] Unknown constructor: " + x, Error: new Error() }; } @@ -114,11 +102,11 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { }), (function (param) { return Util$AgdaModeVscode.Decode.tuple5(Json_decode.string, (function (param) { return Json_decode.array((function (param) { - return Util$AgdaModeVscode.Decode.convert(Item$AgdaModeVscode.decode, param); + return Util$AgdaModeVscode.Decode.convert("Item.decode in DisplayInfoAllGoalsWarnings", Item$AgdaModeVscode.decode, param); }), param); }), (function (param) { return Json_decode.array((function (param) { - return Util$AgdaModeVscode.Decode.convert(Item$AgdaModeVscode.decode, param); + return Util$AgdaModeVscode.Decode.convert("Item.decode in DisplayInfoAllGoalsWarnings", Item$AgdaModeVscode.decode, param); }), param); }), (function (param) { return Json_decode.array(Json_decode.string, param); @@ -175,7 +163,7 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { [Symbol.for("name")]: "CurrentGoal" }; }), (function (param) { - return Util$AgdaModeVscode.Decode.convert(Item$AgdaModeVscode.decode, param); + return Util$AgdaModeVscode.Decode.convert("Item.decode in DisplayInfoCurrentGoal", Item$AgdaModeVscode.decode, param); }), param); }), [Symbol.for("name")]: "Contents" @@ -208,7 +196,7 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { }), (function (param) { return Json_decode.pair(Json_decode.string, (function (param) { return Json_decode.array((function (param) { - return Util$AgdaModeVscode.Decode.convert(Item$AgdaModeVscode.decode, param); + return Util$AgdaModeVscode.Decode.convert("Item.decode in DisplayInfoGeneric", Item$AgdaModeVscode.decode, param); }), param); }), param); }), param); @@ -226,7 +214,7 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { [Symbol.for("name")]: "InferredType" }; }), (function (param) { - return Util$AgdaModeVscode.Decode.convert(Item$AgdaModeVscode.decode, param); + return Util$AgdaModeVscode.Decode.convert("Item.decode in DisplayInfoInferredType", Item$AgdaModeVscode.decode, param); }), param); }), [Symbol.for("name")]: "Contents" @@ -496,7 +484,9 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { [Symbol.for("name")]: "ResponseNonLast" }; }), (function (param) { - return Json_decode.pair(Json_decode.$$int, Response$AgdaModeVscode.GiveAction.decode, param); + return Json_decode.pair(Json_decode.$$int, (function (param) { + return Util$AgdaModeVscode.Decode.convert("Response.GiveAction.decode in ResponseGiveAction", Response$AgdaModeVscode.GiveAction.decode, param); + }), param); }), param); }), [Symbol.for("name")]: "Contents" @@ -516,7 +506,9 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { }, [Symbol.for("name")]: "ResponseNonLast" }; - }), Tokens$AgdaModeVscode.Token.decodeResponseHighlightingInfoDirect, param); + }), (function (param) { + return Util$AgdaModeVscode.Decode.convert("Tokens.Token.decodeResponseHighlightingInfoDirect in LSPResponse", Tokens$AgdaModeVscode.Token.decodeResponseHighlightingInfoDirect, param); + }), param); }), [Symbol.for("name")]: "Contents" }; @@ -706,31 +698,25 @@ var LSPResponse = { }; function decodeCommandRes(json) { - var response; - try { - response = Curry._1(decode, json); - } - catch (raw_msg){ - var msg = Caml_js_exceptions.internalToOCamlException(raw_msg); - if (msg.RE_EXN_ID === Json_decode.DecodeError) { - return { - TAG: 1, - _0: { - TAG: 2, - _0: msg._1, - _1: json, - [Symbol.for("name")]: "CannotDecodeCommandRes" - }, - [Symbol.for("name")]: "Error" - }; - } - throw msg; + var response = Json$JsonCombinators.decode(json, decode); + if (response.TAG === /* Ok */0) { + return { + TAG: 0, + _0: response._0, + [Symbol.for("name")]: "Ok" + }; + } else { + return { + TAG: 1, + _0: { + TAG: 2, + _0: response._0, + _1: json, + [Symbol.for("name")]: "CannotDecodeCommandRes" + }, + [Symbol.for("name")]: "Error" + }; } - return { - TAG: 0, - _0: response, - [Symbol.for("name")]: "Ok" - }; } function decodeResponse(json) { diff --git a/lib/js/src/Connection/LSP/Connection__LSP__Error.bs.js b/lib/js/src/Connection/LSP/Connection__LSP__Error.bs.js index 29388a2f..16dcad7f 100644 --- a/lib/js/src/Connection/LSP/Connection__LSP__Error.bs.js +++ b/lib/js/src/Connection/LSP/Connection__LSP__Error.bs.js @@ -4,9 +4,9 @@ var Json = require("@glennsl/bs-json/lib/js/src/Json.bs.js"); var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); -var Json_decode = require("@glennsl/bs-json/lib/js/src/Json_decode.bs.js"); var Util$AgdaModeVscode = require("../../Util/Util.bs.js"); var Parser$AgdaModeVscode = require("../../Parser/Parser.bs.js"); +var Json_Decode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Decode.bs.js"); function toString(x) { if (x.TAG === /* CannotDecodeJSON */0) { @@ -16,40 +16,36 @@ function toString(x) { } } -var decode = Util$AgdaModeVscode.Decode.sum(function (x) { +var decode = Util$AgdaModeVscode.Decode.sum_(function (x) { switch (x) { case "CmdErrCannotDecodeJSON" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (version) { - return { - TAG: 0, - _0: version, - [Symbol.for("name")]: "CannotDecodeJSON" - }; - }), Json_decode.string, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (version) { + return { + TAG: 0, + _0: version, + [Symbol.for("name")]: "CannotDecodeJSON" + }; + })), + [Symbol.for("name")]: "Payload" }; case "CmdErrCannotParseCommand" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (version) { - return { - TAG: 1, - _0: version, - [Symbol.for("name")]: "CannotParseCommand" - }; - }), Json_decode.string, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (version) { + return { + TAG: 1, + _0: version, + [Symbol.for("name")]: "CannotParseCommand" + }; + })), + [Symbol.for("name")]: "Payload" }; default: throw { - RE_EXN_ID: Json_decode.DecodeError, - _1: "[LSP.CommandErr] Unknown constructor: " + x, + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, + _1: "[Connection.LSP.Error.CommandErr] Unknown constructor: " + x, Error: new Error() }; } diff --git a/lib/js/src/Response.bs.js b/lib/js/src/Response.bs.js index b54a1d81..14e34160 100644 --- a/lib/js/src/Response.bs.js +++ b/lib/js/src/Response.bs.js @@ -8,12 +8,12 @@ var Pervasives = require("rescript/lib/js/pervasives.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Belt_Result = require("rescript/lib/js/belt_Result.js"); var Caml_format = require("rescript/lib/js/caml_format.js"); -var Json_decode = require("@glennsl/bs-json/lib/js/src/Json_decode.bs.js"); var Util$AgdaModeVscode = require("./Util/Util.bs.js"); var Parser$AgdaModeVscode = require("./Parser/Parser.bs.js"); var Tokens$AgdaModeVscode = require("./Tokens.bs.js"); +var Json_Decode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Decode.bs.js"); -var decode = Util$AgdaModeVscode.Decode.sum(function (x) { +var decode = Util$AgdaModeVscode.Decode.sum_(function (x) { switch (x) { case "GiveNoParen" : return { @@ -30,19 +30,17 @@ var decode = Util$AgdaModeVscode.Decode.sum(function (x) { case "GiveString" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (s) { - return { - _0: s, - [Symbol.for("name")]: "GiveString" - }; - }), Json_decode.string, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (s) { + return { + _0: s, + [Symbol.for("name")]: "GiveString" + }; + })), + [Symbol.for("name")]: "Payload" }; default: throw { - RE_EXN_ID: Json_decode.DecodeError, + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, _1: "[Response.GiveAction] Unknown constructor: " + x, Error: new Error() }; diff --git a/lib/js/src/Tokens.bs.js b/lib/js/src/Tokens.bs.js index 3055bf14..40e75c37 100644 --- a/lib/js/src/Tokens.bs.js +++ b/lib/js/src/Tokens.bs.js @@ -12,12 +12,13 @@ var Belt_List = require("rescript/lib/js/belt_List.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Pervasives = require("rescript/lib/js/pervasives.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); -var Json_decode = require("@glennsl/bs-json/lib/js/src/Json_decode.bs.js"); var Agda$AgdaModeVscode = require("./Agda.bs.js"); var Util$AgdaModeVscode = require("./Util/Util.bs.js"); +var Json$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json.bs.js"); var Editor$AgdaModeVscode = require("./Editor.bs.js"); var Parser$AgdaModeVscode = require("./Parser/Parser.bs.js"); var AVLTree$AgdaModeVscode = require("./Util/AVLTree.bs.js"); +var Json_Decode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Decode.bs.js"); var BinarySearchTree = require("@datastructures-js/binary-search-tree"); var Highlighting__AgdaAspect$AgdaModeVscode = require("./Highlighting/Highlighting__AgdaAspect.bs.js"); var Highlighting__Decoration$AgdaModeVscode = require("./Highlighting/Highlighting__Decoration.bs.js"); @@ -147,47 +148,31 @@ function parseDirectHighlightings(tokens) { })); } -function decode(param) { - return Json_decode.map((function (param) { - return { - start: param[0] - 1 | 0, - end_: param[1] - 1 | 0, - aspects: Belt_Array.map(param[2], Highlighting__AgdaAspect$AgdaModeVscode.parse), - isTokenBased: param[3], - note: param[4], - source: param[5] - }; - }), (function (param) { - return Util$AgdaModeVscode.Decode.tuple6(Json_decode.$$int, Json_decode.$$int, (function (param) { - return Json_decode.array(Json_decode.string, param); - }), Json_decode.bool, (function (param) { - return Json_decode.optional(Json_decode.string, param); - }), (function (param) { - return Json_decode.optional((function (param) { - return Json_decode.pair(Json_decode.string, Json_decode.$$int, param); - }), param); - }), param); - }), param); -} +var decodeToken = Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.tuple3(Json_Decode$JsonCombinators.$$int, Json_Decode$JsonCombinators.$$int, Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.string)), Json_Decode$JsonCombinators.tuple3(Json_Decode$JsonCombinators.bool, Json_Decode$JsonCombinators.option(Json_Decode$JsonCombinators.string), Json_Decode$JsonCombinators.option(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.string, Json_Decode$JsonCombinators.$$int)))), (function (param) { + var match = param[1]; + var match$1 = param[0]; + return { + start: match$1[0] - 1 | 0, + end_: match$1[1] - 1 | 0, + aspects: Belt_Array.map(match$1[2], Highlighting__AgdaAspect$AgdaModeVscode.parse), + isTokenBased: match[0], + note: match[1], + source: match[2] + }; + })); -function decodeResponseHighlightingInfoDirect(param) { - return Json_decode.map((function (param) { - return [ - param[0], - param[1] - ]; - }), (function (param) { - return Json_decode.pair(Json_decode.bool, (function (param) { - return Json_decode.array(decode, param); - }), param); - }), param); -} +var decodeResponseHighlightingInfoDirect = Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.bool, Json_Decode$JsonCombinators.array(decodeToken)), (function (param) { + return [ + param[0], + param[1] + ]; + })); var Token = { toString: toString, parse: parse, parseDirectHighlightings: parseDirectHighlightings, - decode: decode, + decodeToken: decodeToken, decodeResponseHighlightingInfoDirect: decodeResponseHighlightingInfoDirect }; @@ -234,7 +219,18 @@ function readAndParse(format) { [] ]; } - return decodeResponseHighlightingInfoDirect(json); + var _err = Json$JsonCombinators.decode(json, decodeResponseHighlightingInfoDirect); + if (_err.TAG !== /* Ok */0) { + return [ + false, + [] + ]; + } + var match$2 = _err._0; + return [ + match$2[0], + match$2[1] + ]; })); } @@ -450,4 +446,4 @@ exports.toArray = toArray; exports.lookupSrcLoc = lookupSrcLoc; exports.toDecorations = toDecorations; exports.toDecorationsAndSemanticTokens = toDecorationsAndSemanticTokens; -/* fs Not a pure module */ +/* decodeToken Not a pure module */ diff --git a/lib/js/src/Util/Util.bs.js b/lib/js/src/Util/Util.bs.js index bea43791..38c3ac37 100644 --- a/lib/js/src/Util/Util.bs.js +++ b/lib/js/src/Util/Util.bs.js @@ -40,15 +40,16 @@ var $$Error = /* @__PURE__ */Caml_exceptions.create("Util-AgdaModeVscode.Error") var TempDecodeError = /* @__PURE__ */Caml_exceptions.create("Util-AgdaModeVscode.Decode.TempDecodeError"); -function convert(translation, json) { +function convert(label, translation, json) { var translation$1 = Json$JsonCombinators.decode(json, translation); if (translation$1.TAG === /* Ok */0) { return translation$1._0; } throw { RE_EXN_ID: TempDecodeError, - _1: translation$1._0, - _2: json, + _1: label, + _2: translation$1._0, + _3: json, Error: new Error() }; } @@ -197,16 +198,6 @@ var Decode = { tuple6: tuple6 }; -function tuple5$1(encodeA, encodeB, encodeC, encodeD, encodeE, param) { - return [ - Curry._1(encodeA, param[0]), - Curry._1(encodeB, param[1]), - Curry._1(encodeC, param[2]), - Curry._1(encodeD, param[3]), - Curry._1(encodeE, param[4]) - ]; -} - function sum$1(f, x) { var tag = Curry._1(f, x); if (tag.TAG === /* Payload */0) { @@ -222,7 +213,6 @@ function sum$1(f, x) { } var Encode = { - tuple5: tuple5$1, sum: sum$1 }; diff --git a/lib/js/src/View/Common.bs.js b/lib/js/src/View/Common.bs.js index 3183118c..f892ce7c 100644 --- a/lib/js/src/View/Common.bs.js +++ b/lib/js/src/View/Common.bs.js @@ -11,13 +11,13 @@ var Json_Decode$JsonCombinators = require("@glennsl/rescript-json-combinators/li var Json_Encode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Encode.bs.js"); var Emacs__Parser$AgdaModeVscode = require("./Panel/Emacs/Emacs__Parser.bs.js"); -var decode = Json_Decode$JsonCombinators.object(function (field) { - return { - line: field.required("line", Json_Decode$JsonCombinators.$$int), - col: field.required("col", Json_Decode$JsonCombinators.$$int), - pos: field.required("pos", Json_Decode$JsonCombinators.$$int) - }; - }); +var decode = Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.tuple3(Json_Decode$JsonCombinators.$$int, Json_Decode$JsonCombinators.$$int, Json_Decode$JsonCombinators.$$int), (function (param) { + return { + line: param[0], + col: param[1], + pos: param[2] + }; + })); function encode(param) { return Json_Encode$JsonCombinators.tuple3((function (prim) { @@ -62,12 +62,12 @@ function toString(self) { } } -var decode$1 = Json_Decode$JsonCombinators.object(function (field) { - return { - start: field.required("start", decode), - end_: field.required("end", decode) - }; - }); +var decode$1 = Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.tuple2(decode, decode), (function (param) { + return { + start: param[0], + end_: param[1] + }; + })); function encode$1(param) { return Json_Encode$JsonCombinators.tuple2(encode, encode, [ diff --git a/lib/js/src/View/Component/Link.bs.js b/lib/js/src/View/Component/Link.bs.js index 09339ff3..2669398a 100644 --- a/lib/js/src/View/Component/Link.bs.js +++ b/lib/js/src/View/Component/Link.bs.js @@ -4,8 +4,6 @@ var React = require("react"); var $$String = require("rescript/lib/js/string.js"); var Belt_List = require("rescript/lib/js/belt_List.js"); -var Json_decode = require("@glennsl/bs-json/lib/js/src/Json_decode.bs.js"); -var Json_encode = require("@glennsl/bs-json/lib/js/src/Json_encode.bs.js"); var Chan$AgdaModeVscode = require("../../Util/Chan.bs.js"); var Util$AgdaModeVscode = require("../../Util/Util.bs.js"); var Common$AgdaModeVscode = require("../Common.bs.js"); @@ -92,111 +90,80 @@ var Provider = { make: make }; -var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { +var decode$1 = Util$AgdaModeVscode.Decode.sum_(function (x) { switch (x) { case "JumpToTarget" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (link) { - return { - TAG: 0, - _0: link, - [Symbol.for("name")]: "JumpToTarget" - }; - }), (function (param) { - return Util$AgdaModeVscode.Decode.convert(decode, param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(decode, (function (target) { + return { + TAG: 0, + _0: target, + [Symbol.for("name")]: "JumpToTarget" + }; + })), + [Symbol.for("name")]: "Payload" }; case "MouseOut" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (link) { - return { - TAG: 2, - _0: link, - [Symbol.for("name")]: "MouseOut" - }; - }), (function (param) { - return Util$AgdaModeVscode.Decode.convert(decode, param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(decode, (function (target) { + return { + TAG: 2, + _0: target, + [Symbol.for("name")]: "MouseOut" + }; + })), + [Symbol.for("name")]: "Payload" }; case "MouseOver" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (link) { - return { - TAG: 1, - _0: link, - [Symbol.for("name")]: "MouseOver" - }; - }), (function (param) { - return Util$AgdaModeVscode.Decode.convert(decode, param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(decode, (function (target) { + return { + TAG: 1, + _0: target, + [Symbol.for("name")]: "MouseOver" + }; + })), + [Symbol.for("name")]: "Payload" }; default: throw { - RE_EXN_ID: Json_decode.DecodeError, - _1: "[Response.EventFromView] Unknown constructor: " + x, + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, + _1: "[Link.Event] Unknown constructor: " + x, Error: new Error() }; } }); -function encode$1(x) { - switch (x.TAG | 0) { - case /* JumpToTarget */0 : - return Json_encode.object_({ - hd: [ - "tag", - "JumpToTarget" - ], - tl: { - hd: [ - "contents", - encode(x._0) - ], - tl: /* [] */0 - } - }); - case /* MouseOver */1 : - return Json_encode.object_({ - hd: [ - "tag", - "MouseOver" - ], - tl: { - hd: [ - "contents", - encode(x._0) - ], - tl: /* [] */0 - } - }); - case /* MouseOut */2 : - return Json_encode.object_({ - hd: [ - "tag", - "MouseOut" - ], - tl: { - hd: [ - "contents", - encode(x._0) - ], - tl: /* [] */0 - } - }); - - } +function encode$1(param) { + return Util$AgdaModeVscode.Encode.sum((function (x) { + switch (x.TAG | 0) { + case /* JumpToTarget */0 : + return { + TAG: 0, + _0: "JumpToTarget", + _1: encode(x._0), + [Symbol.for("name")]: "Payload" + }; + case /* MouseOver */1 : + return { + TAG: 0, + _0: "MouseOver", + _1: encode(x._0), + [Symbol.for("name")]: "Payload" + }; + case /* MouseOut */2 : + return { + TAG: 0, + _0: "MouseOut", + _1: encode(x._0), + [Symbol.for("name")]: "Payload" + }; + + } + }), param); } var $$Event = { diff --git a/lib/js/src/View/Root.bs.js b/lib/js/src/View/Root.bs.js index a5726178..1c995391 100644 --- a/lib/js/src/View/Root.bs.js +++ b/lib/js/src/View/Root.bs.js @@ -18,7 +18,7 @@ var onRequest = Chan$AgdaModeVscode.make(undefined); var onEventToView = Chan$AgdaModeVscode.make(undefined); VSCode.Api.onMessage(function (stringifiedJSON) { - var requestOrEvent = Util$AgdaModeVscode.Decode.convert(View$AgdaModeVscode.RequestOrEventToView.decode, JSON.parse(stringifiedJSON)); + var requestOrEvent = Util$AgdaModeVscode.Decode.convert("VSCode.Api.onMessage", View$AgdaModeVscode.RequestOrEventToView.decode, JSON.parse(stringifiedJSON)); if (requestOrEvent.TAG === /* Request */0) { return Chan$AgdaModeVscode.emit(onRequest, requestOrEvent._0); } else { diff --git a/src/Connection/Connection.res b/src/Connection/Connection.res index 35253fea..7d8ec1d3 100644 --- a/src/Connection/Connection.res +++ b/src/Connection/Connection.res @@ -30,9 +30,11 @@ module Module: Module = { module InitOptions = { type t = {commandLineOptions: array} - let encode: Json.Encode.encoder = x => { - open Json.Encode - object_(list{("commandLineOptions", x.commandLineOptions |> array(string))}) + let encode = ({commandLineOptions}) => { + open JsonCombinators.Json.Encode + Unsafe.object({ + "commandLineOptions": array(string, commandLineOptions), + }) } let getFromConfig = () => diff --git a/src/Connection/LSP/Connection__LSP.res b/src/Connection/LSP/Connection__LSP.res index 9ba3e20c..d7564fbd 100644 --- a/src/Connection/LSP/Connection__LSP.res +++ b/src/Connection/LSP/Connection__LSP.res @@ -7,12 +7,15 @@ type version = string module CommandReq = { type t = SYN | Command(string) - open! Json.Encode - let encode: encoder = x => - switch x { - | SYN => object_(list{("tag", string("CmdReqSYN"))}) - | Command(raw) => object_(list{("tag", string("CmdReq")), ("contents", raw |> string)}) - } + let encode = { + open JsonCombinators.Json.Encode + Util.Encode.sum(x => + switch x { + | SYN => TagOnly("CmdReqSYN") + | Command(raw) => Payload("CmdReq", string(raw)) + } + ) + } } module CommandRes = { @@ -22,16 +25,17 @@ module CommandRes = { let fromJsError = (error: 'a): string => %raw("function (e) {return e.toString()}")(error) - open Json.Decode - open Util.Decode - let decode: decoder = sum(x => - switch x { - | "CmdResACK" => Contents(string |> map(version => ACK(version))) - | "CmdRes" => - Contents(optional(Connection__LSP__Error.CommandErr.decode) |> map(error => Result(error))) - | tag => raise(DecodeError("[LSP.CommandRes] Unknown constructor: " ++ tag)) - } - ) + let decode = { + open JsonCombinators.Json.Decode + Util.Decode.sum_(x => + switch x { + | "CmdResACK" => Payload(string->map((. version) => ACK(version))) + | "CmdRes" => + Payload(option(Connection__LSP__Error.CommandErr.decode)->map((. error) => Result(error))) + | tag => raise(DecodeError("[Connection.LSP.CommandRes] Unknown constructor: " ++ tag)) + } + ) + } } module LSPResponse = { @@ -47,20 +51,65 @@ module LSPResponse = { | Time(string) | NormalForm(string) + // let decode = { + // open JsonCombinators.Json.Decode + // Util.Decode.sum_(x => + // switch x { + // | "DisplayInfoGeneric" => + // Payload( + // pair(string, array(Item.decode))->map((. (header, itmes)) => Generic(header, itmes)), + // ) + // | "DisplayInfoAllGoalsWarnings" => + // Payload( + // tuple5( + // string, + // array(Item.decode), + // array(Item.decode), + // array(string), + // array(string), + // )->map((. (header, goals, metas, warnings, errors)) => AllGoalsWarnings( + // header, + // goals, + // metas, + // warnings, + // errors, + // )), + // ) + // | "DisplayInfoCurrentGoal" => Payload(Item.decode->map((. body) => CurrentGoal(body))) + // | "DisplayInfoInferredType" => Payload(Item.decode->map((. body) => InferredType(body))) + // | "DisplayInfoCompilationOk" => + // Payload( + // pair(array(string), array(string))->map((. (warnings, errors)) => CompilationOk( + // warnings, + // errors, + // )), + // ) + // | "DisplayInfoAuto" => Payload(string->map((. body) => Auto(body))) + // | "DisplayInfoError" => Payload(string->map((. body) => Error'(body))) + // | "DisplayInfoTime" => Payload(string->map((. body) => Time(body))) + // | "DisplayInfoNormalForm" => Payload(string->map((. body) => NormalForm(body))) + // | tag => raise(DecodeError("[LSP.DisplayInfo] Unknown constructor: " ++ tag)) + // } + // ) + // } + open Json.Decode open Util.Decode let decode: decoder = sum(x => switch x { | "DisplayInfoGeneric" => Contents( - pair(string, array(Util.Decode.convert( Item.decode))) |> map(((header, itmes)) => Generic(header, itmes)), + pair( + string, + array(Util.Decode.convert("Item.decode in DisplayInfoGeneric", Item.decode)), + ) |> map(((header, itmes)) => Generic(header, itmes)), ) | "DisplayInfoAllGoalsWarnings" => Contents( tuple5( string, - array(Util.Decode.convert( Item.decode)), - array(Util.Decode.convert( Item.decode)), + array(Util.Decode.convert("Item.decode in DisplayInfoAllGoalsWarnings", Item.decode)), + array(Util.Decode.convert("Item.decode in DisplayInfoAllGoalsWarnings", Item.decode)), array(string), array(string), ) |> map(((header, goals, metas, warnings, errors)) => AllGoalsWarnings( @@ -71,8 +120,20 @@ module LSPResponse = { errors, )), ) - | "DisplayInfoCurrentGoal" => Contents(Util.Decode.convert( Item.decode)|> map(body => CurrentGoal(body))) - | "DisplayInfoInferredType" => Contents(Util.Decode.convert( Item.decode) |> map(body => InferredType(body))) + | "DisplayInfoCurrentGoal" => + Contents( + Util.Decode.convert( + "Item.decode in DisplayInfoCurrentGoal", + Item.decode, + ) |> map(body => CurrentGoal(body)), + ) + | "DisplayInfoInferredType" => + Contents( + Util.Decode.convert( + "Item.decode in DisplayInfoInferredType", + Item.decode, + ) |> map(body => InferredType(body)), + ) | "DisplayInfoCompilationOk" => Contents( pair(array(string), array(string)) |> map(((warnings, errors)) => CompilationOk( @@ -109,7 +170,10 @@ module LSPResponse = { switch x { | "ResponseHighlightingInfoDirect" => Contents( - Tokens.Token.decodeResponseHighlightingInfoDirect |> map(((keepHighlighting, infos)) => { + Util.Decode.convert( + "Tokens.Token.decodeResponseHighlightingInfoDirect in LSPResponse", + Tokens.Token.decodeResponseHighlightingInfoDirect, + ) |> map(((keepHighlighting, infos)) => { ResponseNonLast(Response.HighlightingInfoDirect(keepHighlighting, infos)) }), ) @@ -158,9 +222,13 @@ module LSPResponse = { | "ResponseDoneExiting" => TagOnly(ResponseNonLast(Response.DoneExiting)) | "ResponseGiveAction" => Contents( - pair(int, Response.GiveAction.decode) |> map(((id, giveAction)) => ResponseNonLast( - Response.GiveAction(id, giveAction), - )), + pair( + int, + Util.Decode.convert( + "Response.GiveAction.decode in ResponseGiveAction", + Response.GiveAction.decode, + ), + ) |> map(((id, giveAction)) => ResponseNonLast(Response.GiveAction(id, giveAction))), ) | "ResponseInteractionPoints" => Contents(array(int) |> map(ids => ResponseLast(1, InteractionPoints(ids)))) @@ -218,9 +286,9 @@ module Module: Module = { // catches exceptions occured when decoding JSON values let decodeCommandRes = (json: Js.Json.t): result => - switch CommandRes.decode(json) { - | response => Ok(response) - | exception Json.Decode.DecodeError(msg) => Error(CannotDecodeCommandRes(msg, json)) + switch JsonCombinators.Json.decode(json, CommandRes.decode) { + | Ok(response) => Ok(response) + | Error(msg) => Error(CannotDecodeCommandRes(msg, json)) } let decodeResponse = (json: Js.Json.t): result => diff --git a/src/Connection/LSP/Connection__LSP__Error.res b/src/Connection/LSP/Connection__LSP__Error.res index 568327c6..bfa82111 100644 --- a/src/Connection/LSP/Connection__LSP__Error.res +++ b/src/Connection/LSP/Connection__LSP__Error.res @@ -13,15 +13,17 @@ module CommandErr = { | CannotParseCommand(s) => "Cannot read IOTCM: \n" ++ s } - open Json.Decode - open Util.Decode - let decode: decoder = sum(x => - switch x { - | "CmdErrCannotDecodeJSON" => Contents(string |> map(version => CannotDecodeJSON(version))) - | "CmdErrCannotParseCommand" => Contents(string |> map(version => CannotParseCommand(version))) - | tag => raise(DecodeError("[LSP.CommandErr] Unknown constructor: " ++ tag)) - } - ) + let decode = { + open JsonCombinators.Json.Decode + Util.Decode.sum_(x => { + switch x { + | "CmdErrCannotDecodeJSON" => Payload(string->map((. version) => CannotDecodeJSON(version))) + | "CmdErrCannotParseCommand" => + Payload(string->map((. version) => CannotParseCommand(version))) + | tag => raise(DecodeError("[Connection.LSP.Error.CommandErr] Unknown constructor: " ++ tag)) + } + }) + } } type t = diff --git a/src/Response.res b/src/Response.res index 5e9cb696..01b3341f 100644 --- a/src/Response.res +++ b/src/Response.res @@ -11,16 +11,17 @@ module GiveAction = { | GiveNoParen | GiveString(string) - open Json.Decode - open Util.Decode - let decode: decoder = sum(x => - switch x { - | "GiveString" => Contents(string |> map(s => GiveString(s))) - | "GiveParen" => TagOnly(GiveParen) - | "GiveNoParen" => TagOnly(GiveNoParen) - | tag => raise(DecodeError("[Response.GiveAction] Unknown constructor: " ++ tag)) - } - ) + let decode = { + open JsonCombinators.Json.Decode + Util.Decode.sum_(x => { + switch x { + | "GiveString" => Payload(string->map((. s) => GiveString(s))) + | "GiveParen" => TagOnly(GiveParen) + | "GiveNoParen" => TagOnly(GiveNoParen) + | tag => raise(DecodeError("[Response.GiveAction] Unknown constructor: " ++ tag)) + } + }) + } } type makeCaseType = diff --git a/src/Tokens.res b/src/Tokens.res index c684d9f5..23080f54 100644 --- a/src/Tokens.res +++ b/src/Tokens.res @@ -20,12 +20,12 @@ module Token = { ", " ++ string_of_int(self.end_) ++ ") " ++ - Util.Pretty.list(List.fromArray( Array.map(self.aspects, Aspect.toString))) ++ + Util.Pretty.list(List.fromArray(Array.map(self.aspects, Aspect.toString))) ++ switch self.source { | None => "" | Some((_s, i)) => " [src: " ++ string_of_int(i) ++ "]" } - + // from SExpression let parse: Parser.SExpression.t => option = x => switch x { @@ -35,14 +35,16 @@ module Token = { | [A(start'), A(end_'), aspects, _, _, L([A(filepath), _, A(index')])] => int_of_string_opt(start')->Option.flatMap(start => int_of_string_opt(end_')->Option.flatMap(end_ => - int_of_string_opt(index')->Option.map(index => { - start: start - 1, - end_: end_ - 1, - aspects: flatten(aspects)->Array.map(Aspect.parse), - isTokenBased: false, // NOTE: fix this - note: None, // NOTE: fix this - source: Some((filepath, index)), - }) + int_of_string_opt(index')->Option.map( + index => { + start: start - 1, + end_: end_ - 1, + aspects: flatten(aspects)->Array.map(Aspect.parse), + isTokenBased: false, // NOTE: fix this + note: None, // NOTE: fix this + source: Some((filepath, index)), + }, + ) ) ) @@ -77,29 +79,25 @@ module Token = { tokens->Js.Array.sliceFrom(2, _)->Array.map(parse)->Array.keepMap(x => x) // from JSON - let decode: Json.Decode.decoder = { - open Json.Decode - Util.Decode.tuple6( - int, - int, - array(string), - bool, - optional(string), - optional(pair(string, int)), - ) |> map(((start, end_, aspects, isTokenBased, note, source)) => { + let decodeToken = { + open JsonCombinators.Json.Decode + pair( + tuple3(int, int, array(string)), + tuple3(bool, option(string), option(pair(string, int))), + )->map((. ((start, end_, aspects), (isTokenBased, note, source))) => { start: start - 1, end_: end_ - 1, aspects: aspects->Array.map(Aspect.parse), - isTokenBased: isTokenBased, - note: note, - source: source, + isTokenBased, + note, + source, }) } // from JSON - let decodeResponseHighlightingInfoDirect: Json.Decode.decoder<(bool, array)> = { - open Json.Decode - pair(bool, array(decode)) |> map(((keepHighlighting, xs)) => (keepHighlighting, xs)) + let decodeResponseHighlightingInfoDirect = { + open JsonCombinators.Json.Decode + pair(bool, array(decodeToken))->map((. (keepHighlighting, xs)) => (keepHighlighting, xs)) } } @@ -164,7 +162,11 @@ module Module: Module = { let raw = Node.Buffer.toString(buffer) switch Js.Json.parseExn(raw) { | exception _e => (false, []) - | json => Token.decodeResponseHighlightingInfoDirect(json) + | json => + switch JsonCombinators.Json.decode(json, Token.decodeResponseHighlightingInfoDirect) { + | Ok((keepHighlighting, tokens)) => (keepHighlighting, tokens) + | Error(_err) => (false, []) + } } } | Error(_err) => (false, []) @@ -196,12 +198,7 @@ module Module: Module = { let existing = self.tokens->AVLTree.find(startOffset) switch existing { | None => - - - let start = Editor.Position.fromOffset( - document, - startOffset, - ) + let start = Editor.Position.fromOffset(document, startOffset) let end_ = Editor.Position.fromOffset( document, @@ -297,15 +294,14 @@ module Module: Module = { let tokenModifiers = tokenModifiers->Array.concatMany let decorations = decorations->Array.keepMap(x => - x->Option.map(x => ( - x, - Highlighting__SemanticToken.SingleLineRange.toVsCodeRange(range), - )) + x->Option.map( + x => (x, Highlighting__SemanticToken.SingleLineRange.toVsCodeRange(range)), + ) ) // only 1 TokenType is allowed, so we take the first one let semanticToken = tokenTypes[0]->Option.map(tokenType => { - Highlighting__SemanticToken.range: range, + Highlighting__SemanticToken.range, type_: tokenType, modifiers: Some(tokenModifiers), }) diff --git a/src/Util/Util.res b/src/Util/Util.res index 959f35d0..00fdb70d 100644 --- a/src/Util/Util.res +++ b/src/Util/Util.res @@ -11,11 +11,11 @@ module Result = { exception Error(string) module Decode = { - exception TempDecodeError(string, Js.Json.t) - let convert = (translation, json) => + exception TempDecodeError(string, string, Js.Json.t) + let convert = (label, translation, json) => switch json->JsonCombinators.Json.decode(translation) { | Ok(translation) => translation - | Error(err) => raise(TempDecodeError(err, json)) + | Error(err) => raise(TempDecodeError(label, err, json)) } type fieldType_<'a> = @@ -103,11 +103,7 @@ module Decode = { } module Encode = { - open Json.Encode - let tuple5 = (encodeA, encodeB, encodeC, encodeD, encodeE, (a, b, c, d, e)) => - jsonArray([encodeA(a), encodeB(b), encodeC(c), encodeD(d), encodeE(e)]) - - open! JsonCombinators.Json.Encode + open JsonCombinators.Json.Encode type fieldType<'a> = | Payload(string, Js.Json.t) diff --git a/src/View/Common.res b/src/View/Common.res index 304fe7ec..f4e19d2f 100644 --- a/src/View/Common.res +++ b/src/View/Common.res @@ -12,10 +12,10 @@ module AgdaPosition = { let decode = { open JsonCombinators.Json.Decode - object(field => { - line: field.required(. "line", int), - col: field.required(. "col", int), - pos: field.required(. "pos", int), + tuple3(int, int, int)->map((. (line, col, pos)) => { + line, + col, + pos, }) } @@ -62,9 +62,9 @@ module AgdaInterval = { let decode = { open JsonCombinators.Json.Decode - object(field => { - start: field.required(. "start", AgdaPosition.decode), - end_: field.required(. "end", AgdaPosition.decode), + tuple2(AgdaPosition.decode, AgdaPosition.decode)->map((. (start, end_)) => { + start, + end_, }) } diff --git a/src/View/Component/Link.res b/src/View/Component/Link.res index 77dbdb01..543297b6 100644 --- a/src/View/Component/Link.res +++ b/src/View/Component/Link.res @@ -50,26 +50,29 @@ module Event = { let make = React.Context.provider(eventContext) } - let decode: Json.Decode.decoder = { - open Json.Decode - Util.Decode.sum(x => + let decode = { + Util.Decode.sum_(x => { switch x { - | "JumpToTarget" => Contents(Util.Decode.convert(decode) |> map(link => JumpToTarget(link))) - | "MouseOver" => Contents(Util.Decode.convert(decode) |> map(link => MouseOver(link))) - | "MouseOut" => Contents(Util.Decode.convert(decode) |> map(link => MouseOut(link))) - | tag => raise(DecodeError("[Response.EventFromView] Unknown constructor: " ++ tag)) + | "JumpToTarget" => + Payload(decode->JsonCombinators.Json.Decode.map((. target) => JumpToTarget(target))) + | "MouseOver" => + Payload(decode->JsonCombinators.Json.Decode.map((. target) => MouseOver(target))) + | "MouseOut" => + Payload(decode->JsonCombinators.Json.Decode.map((. target) => MouseOut(target))) + | tag => + raise(JsonCombinators.Json.Decode.DecodeError("[Link.Event] Unknown constructor: " ++ tag)) } - ) + }) } - let encode: Json.Encode.encoder = x => { - open Json.Encode - switch x { - | JumpToTarget(link) => - object_(list{("tag", string("JumpToTarget")), ("contents", link |> encode)}) - | MouseOver(link) => object_(list{("tag", string("MouseOver")), ("contents", link |> encode)}) - | MouseOut(link) => object_(list{("tag", string("MouseOut")), ("contents", link |> encode)}) - } + let encode = { + Util.Encode.sum(x => + switch x { + | JumpToTarget(link) => Payload("JumpToTarget", encode(link)) + | MouseOver(link) => Payload("MouseOver", encode(link)) + | MouseOut(link) => Payload("MouseOut", encode(link)) + } + ) } } diff --git a/src/View/Root.res b/src/View/Root.res index 70ebc09f..311ce90d 100644 --- a/src/View/Root.res +++ b/src/View/Root.res @@ -9,6 +9,7 @@ let onRequest = Chan.make() let onEventToView = Chan.make() VSCode.Api.onMessage(stringifiedJSON => { let requestOrEvent = Util.Decode.convert( + "VSCode.Api.onMessage", View.RequestOrEventToView.decode, stringifiedJSON->Js.Json.parseExn, ) From ab81a844cf150c2b8df950e2a1f9627316788022 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Mon, 4 Dec 2023 20:51:52 +0800 Subject: [PATCH 045/109] [ new ] Extend JsonCombinators.Json.Decode/Encode with tuple5 & tuple6 --- .../src/Connection/LSP/Connection__LSP.bs.js | 12 ++ lib/js/src/Tokens.bs.js | 29 ++-- lib/js/src/Util/Util.bs.js | 141 +++++++++++++++++- lib/js/src/View/Component/Item.bs.js | 27 ++-- src/Connection/Connection__Scheduler.res | 2 - src/Connection/LSP/Connection__LSP.res | 1 + src/Tokens.res | 16 +- src/Util/Util.res | 90 ++++++++++- src/View/Component/Item.res | 12 +- test/tests/Test__Connection.res | 22 --- test/tests/Test__PromptIM.res | 6 +- 11 files changed, 285 insertions(+), 73 deletions(-) diff --git a/lib/js/src/Connection/LSP/Connection__LSP.bs.js b/lib/js/src/Connection/LSP/Connection__LSP.bs.js index f98479b4..f8f9ef07 100644 --- a/lib/js/src/Connection/LSP/Connection__LSP.bs.js +++ b/lib/js/src/Connection/LSP/Connection__LSP.bs.js @@ -726,6 +726,18 @@ function decodeResponse(json) { } catch (raw_msg){ var msg = Caml_js_exceptions.internalToOCamlException(raw_msg); + if (msg.RE_EXN_ID === Util$AgdaModeVscode.Decode.TempDecodeError) { + return { + TAG: 1, + _0: { + TAG: 3, + _0: msg._2, + _1: json, + [Symbol.for("name")]: "CannotDecodeResponse" + }, + [Symbol.for("name")]: "Error" + }; + } if (msg.RE_EXN_ID === Json_decode.DecodeError) { return { TAG: 1, diff --git a/lib/js/src/Tokens.bs.js b/lib/js/src/Tokens.bs.js index 40e75c37..94251701 100644 --- a/lib/js/src/Tokens.bs.js +++ b/lib/js/src/Tokens.bs.js @@ -148,16 +148,14 @@ function parseDirectHighlightings(tokens) { })); } -var decodeToken = Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.tuple3(Json_Decode$JsonCombinators.$$int, Json_Decode$JsonCombinators.$$int, Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.string)), Json_Decode$JsonCombinators.tuple3(Json_Decode$JsonCombinators.bool, Json_Decode$JsonCombinators.option(Json_Decode$JsonCombinators.string), Json_Decode$JsonCombinators.option(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.string, Json_Decode$JsonCombinators.$$int)))), (function (param) { - var match = param[1]; - var match$1 = param[0]; +var decodeToken = Json_Decode$JsonCombinators.map(Util$AgdaModeVscode.Decode.tuple6_(Json_Decode$JsonCombinators.$$int, Json_Decode$JsonCombinators.$$int, Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.string), Json_Decode$JsonCombinators.bool, Json_Decode$JsonCombinators.option(Json_Decode$JsonCombinators.string), Json_Decode$JsonCombinators.option(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.string, Json_Decode$JsonCombinators.$$int))), (function (param) { return { - start: match$1[0] - 1 | 0, - end_: match$1[1] - 1 | 0, - aspects: Belt_Array.map(match$1[2], Highlighting__AgdaAspect$AgdaModeVscode.parse), - isTokenBased: match[0], - note: match[1], - source: match[2] + start: param[0] - 1 | 0, + end_: param[1] - 1 | 0, + aspects: Belt_Array.map(param[2], Highlighting__AgdaAspect$AgdaModeVscode.parse), + isTokenBased: param[3], + note: param[4], + source: param[5] }; })); @@ -220,16 +218,17 @@ function readAndParse(format) { ]; } var _err = Json$JsonCombinators.decode(json, decodeResponseHighlightingInfoDirect); - if (_err.TAG !== /* Ok */0) { + if (_err.TAG === /* Ok */0) { + var match$2 = _err._0; return [ - false, - [] + match$2[0], + match$2[1] ]; } - var match$2 = _err._0; + console.log("Error in decoding JSON: " + _err._0); return [ - match$2[0], - match$2[1] + false, + [] ]; })); } diff --git a/lib/js/src/Util/Util.bs.js b/lib/js/src/Util/Util.bs.js index 38c3ac37..72b614ce 100644 --- a/lib/js/src/Util/Util.bs.js +++ b/lib/js/src/Util/Util.bs.js @@ -7,6 +7,7 @@ var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Js_array = require("rescript/lib/js/js_array.js"); var Belt_List = require("rescript/lib/js/belt_List.js"); var Js_string = require("rescript/lib/js/js_string.js"); +var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); var Json_decode = require("@glennsl/bs-json/lib/js/src/Json_decode.bs.js"); var Caml_exceptions = require("rescript/lib/js/caml_exceptions.js"); @@ -45,10 +46,12 @@ function convert(label, translation, json) { if (translation$1.TAG === /* Ok */0) { return translation$1._0; } + var err = translation$1._0; + console.log(err); throw { RE_EXN_ID: TempDecodeError, _1: label, - _2: translation$1._0, + _2: err, _3: json, Error: new Error() }; @@ -67,6 +70,115 @@ function sum_(decoder) { })); } +function tuple6_(decodeA, decodeB, decodeC, decodeD, decodeE, decodeF) { + return Json_Decode$JsonCombinators.custom(function (json) { + if (!Array.isArray(json)) { + Json_Decode$JsonCombinators.$$Error.expected("array", json); + } + if (json.length !== 6) { + throw { + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, + _1: "Expected array of length 6, got array of length " + String(json.length) + "", + Error: new Error() + }; + } + var run = function (decoder, xs, i) { + var x = Belt_Array.get(xs, i); + if (x !== undefined) { + var x$1 = Json_Decode$JsonCombinators.decode(Caml_option.valFromOption(x), decoder); + if (x$1.TAG === /* Ok */0) { + return x$1._0; + } + throw { + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, + _1: x$1._0, + Error: new Error() + }; + } + throw { + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, + _1: "Unable to get index " + String(i), + Error: new Error() + }; + }; + try { + return [ + run(decodeA, json, 0), + run(decodeB, json, 1), + run(decodeC, json, 2), + run(decodeD, json, 3), + run(decodeE, json, 4), + run(decodeF, json, 5) + ]; + } + catch (raw_msg){ + var msg = Caml_js_exceptions.internalToOCamlException(raw_msg); + if (msg.RE_EXN_ID === Json_Decode$JsonCombinators.DecodeError) { + throw { + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, + _1: "" + msg._1 + "\n\tin tuple6", + Error: new Error() + }; + } + throw msg; + } + }); +} + +function tuple5_(decodeA, decodeB, decodeC, decodeD, decodeE) { + return Json_Decode$JsonCombinators.custom(function (json) { + if (!Array.isArray(json)) { + Json_Decode$JsonCombinators.$$Error.expected("array", json); + } + if (json.length !== 5) { + throw { + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, + _1: "Expected array of length 5, got array of length " + String(json.length) + "", + Error: new Error() + }; + } + var run = function (decoder, xs, i) { + var x = Belt_Array.get(xs, i); + if (x !== undefined) { + var x$1 = Json_Decode$JsonCombinators.decode(Caml_option.valFromOption(x), decoder); + if (x$1.TAG === /* Ok */0) { + return x$1._0; + } + throw { + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, + _1: x$1._0, + Error: new Error() + }; + } + throw { + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, + _1: "Unable to get index " + String(i), + Error: new Error() + }; + }; + try { + return [ + run(decodeA, json, 0), + run(decodeB, json, 1), + run(decodeC, json, 2), + run(decodeD, json, 3), + run(decodeE, json, 4) + ]; + } + catch (raw_msg){ + var msg = Caml_js_exceptions.internalToOCamlException(raw_msg); + if (msg.RE_EXN_ID === Json_Decode$JsonCombinators.DecodeError) { + throw { + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, + _1: "" + msg._1 + "\n\tin tuple5", + Error: new Error() + }; + } + throw msg; + } + }); +} + function sum(decoder) { return function (param) { return Json_decode.andThen((function (tag) { @@ -192,6 +304,8 @@ var Decode = { TempDecodeError: TempDecodeError, convert: convert, sum_: sum_, + tuple6_: tuple6_, + tuple5_: tuple5_, sum: sum, maybe: maybe, tuple5: tuple5, @@ -212,8 +326,31 @@ function sum$1(f, x) { } } +function tuple5$1(encodeA, encodeB, encodeC, encodeD, encodeE, param) { + return [ + Curry._1(encodeA, param[0]), + Curry._1(encodeB, param[1]), + Curry._1(encodeC, param[2]), + Curry._1(encodeD, param[3]), + Curry._1(encodeE, param[4]) + ]; +} + +function tuple6$1(encodeA, encodeB, encodeC, encodeD, encodeE, encodeF, param) { + return [ + Curry._1(encodeA, param[0]), + Curry._1(encodeB, param[1]), + Curry._1(encodeC, param[2]), + Curry._1(encodeD, param[3]), + Curry._1(encodeE, param[4]), + Curry._1(encodeF, param[5]) + ]; +} + var Encode = { - sum: sum$1 + sum: sum$1, + tuple5: tuple5$1, + tuple6: tuple6$1 }; function manyIn(elems, elem) { diff --git a/lib/js/src/View/Component/Item.bs.js b/lib/js/src/View/Component/Item.bs.js index 5a1b2577..2fc9dd1d 100644 --- a/lib/js/src/View/Component/Item.bs.js +++ b/lib/js/src/View/Component/Item.bs.js @@ -155,15 +155,14 @@ var decode = Util$AgdaModeVscode.Decode.sum_(function (x) { case "Labeled" : return { TAG: 0, - _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.tuple4(Json_Decode$JsonCombinators.pair(RichText$AgdaModeVscode.decode, Json_Decode$JsonCombinators.option(Json_Decode$JsonCombinators.string)), Json_Decode$JsonCombinators.option(Common$AgdaModeVscode.AgdaRange.decode), Json_Decode$JsonCombinators.string, Json_Decode$JsonCombinators.string), (function (param) { - var match = param[0]; + _0: Json_Decode$JsonCombinators.map(Util$AgdaModeVscode.Decode.tuple5_(RichText$AgdaModeVscode.decode, Json_Decode$JsonCombinators.option(Json_Decode$JsonCombinators.string), Json_Decode$JsonCombinators.option(Common$AgdaModeVscode.AgdaRange.decode), Json_Decode$JsonCombinators.string, Json_Decode$JsonCombinators.string), (function (param) { return { TAG: 0, - _0: param[2], - _1: param[3], - _2: match[0], - _3: match[1], - _4: param[1], + _0: param[3], + _1: param[4], + _2: param[0], + _3: param[1], + _4: param[2], [Symbol.for("name")]: "Labeled" }; })), @@ -199,11 +198,9 @@ function encode(param) { return { TAG: 0, _0: "Labeled", - _1: Json_Encode$JsonCombinators.tuple4((function (param) { - return Json_Encode$JsonCombinators.pair(RichText$AgdaModeVscode.encode, (function (param) { - return Json_Encode$JsonCombinators.option((function (prim) { - return prim; - }), param); + _1: Util$AgdaModeVscode.Encode.tuple5(RichText$AgdaModeVscode.encode, (function (param) { + return Json_Encode$JsonCombinators.option((function (prim) { + return prim; }), param); }), (function (param) { return Json_Encode$JsonCombinators.option(Common$AgdaModeVscode.AgdaRange.encode, param); @@ -212,10 +209,8 @@ function encode(param) { }), (function (prim) { return prim; }), [ - [ - x._2, - x._3 - ], + x._2, + x._3, x._4, x._0, x._1 diff --git a/src/Connection/Connection__Scheduler.res b/src/Connection/Connection__Scheduler.res index e638239e..7b820f00 100644 --- a/src/Connection/Connection__Scheduler.res +++ b/src/Connection/Connection__Scheduler.res @@ -33,7 +33,6 @@ module Module: { } // NonLast Responses should fed here let runNonLast = (self, handler, response) => { - // Js.log("[NonLast] " ++ Response.toString(response)) self.tally = self.tally + 1 handler(response)->Promise.get(_ => { self.tally = self.tally - 1 @@ -44,7 +43,6 @@ module Module: { } // deferred (Last) Responses are queued here let addLast = (self, priority, response) => { - // Js.log("[Add Last] " ++ string_of_int(priority) ++ " " ++ Response.toString(response)) Js.Array.push((priority, response), self.deferredLastResponses)->ignore } // gets resolved once there's no NonLast Responses running diff --git a/src/Connection/LSP/Connection__LSP.res b/src/Connection/LSP/Connection__LSP.res index d7564fbd..40412428 100644 --- a/src/Connection/LSP/Connection__LSP.res +++ b/src/Connection/LSP/Connection__LSP.res @@ -294,6 +294,7 @@ module Module: Module = { let decodeResponse = (json: Js.Json.t): result => switch LSPResponse.decode(json) { | reaction => Ok(reaction) + | exception Util.Decode.TempDecodeError(_, msg, _) => Error(CannotDecodeResponse(msg, json)) | exception Json.Decode.DecodeError(msg) => Error(CannotDecodeResponse(msg, json)) } diff --git a/src/Tokens.res b/src/Tokens.res index 23080f54..a01937fa 100644 --- a/src/Tokens.res +++ b/src/Tokens.res @@ -81,10 +81,14 @@ module Token = { // from JSON let decodeToken = { open JsonCombinators.Json.Decode - pair( - tuple3(int, int, array(string)), - tuple3(bool, option(string), option(pair(string, int))), - )->map((. ((start, end_, aspects), (isTokenBased, note, source))) => { + Util.Decode.tuple6_( + int, + int, + array(string), + bool, + option(string), + option(pair(string, int)), + )->map((. (start, end_, aspects, isTokenBased, note, source)) => { start: start - 1, end_: end_ - 1, aspects: aspects->Array.map(Aspect.parse), @@ -165,7 +169,9 @@ module Module: Module = { | json => switch JsonCombinators.Json.decode(json, Token.decodeResponseHighlightingInfoDirect) { | Ok((keepHighlighting, tokens)) => (keepHighlighting, tokens) - | Error(_err) => (false, []) + | Error(_err) => + Js.log("Error in decoding JSON: " ++ _err) + (false, []) } } } diff --git a/src/Util/Util.res b/src/Util/Util.res index 00fdb70d..fe85011d 100644 --- a/src/Util/Util.res +++ b/src/Util/Util.res @@ -15,7 +15,9 @@ module Decode = { let convert = (label, translation, json) => switch json->JsonCombinators.Json.decode(translation) { | Ok(translation) => translation - | Error(err) => raise(TempDecodeError(label, err, json)) + | Error(err) => + Js.log(err) + raise(TempDecodeError(label, err, json)) } type fieldType_<'a> = @@ -32,6 +34,87 @@ module Decode = { ) } + let tuple6_ = (decodeA, decodeB, decodeC, decodeD, decodeE, decodeF) => { + open JsonCombinators.Json.Decode + custom((. json) => { + if !Js.Array.isArray(json) { + Error.expected("array", json) + } + + let arr: array = Obj.magic(json) + if Array.length(arr) != 6 { + raise( + DecodeError( + `Expected array of length 6, got array of length ${Array.length(arr)->string_of_int}`, + ), + ) + } + + let run = (decoder, xs, i) => + switch xs[i] { + | Some(x) => + switch x->decode(decoder) { + | Ok(x) => x + | Error(err) => raise(DecodeError(err)) + } + | None => raise(DecodeError("Unable to get index " ++ string_of_int(i))) + } + + // arr[0]->Option.flatMap(x => decode(x, decodeA)) + + try ( + run(decodeA, arr, 0), + run(decodeB, arr, 1), + run(decodeC, arr, 2), + run(decodeD, arr, 3), + run(decodeE, arr, 4), + run(decodeF, arr, 5), + ) catch { + | DecodeError(msg) => raise(DecodeError(`${msg}\n\tin tuple6`)) + } + }) + } + + let tuple5_ = (decodeA, decodeB, decodeC, decodeD, decodeE) => { + open JsonCombinators.Json.Decode + custom((. json) => { + if !Js.Array.isArray(json) { + Error.expected("array", json) + } + + let arr: array = Obj.magic(json) + if Array.length(arr) != 5 { + raise( + DecodeError( + `Expected array of length 5, got array of length ${Array.length(arr)->string_of_int}`, + ), + ) + } + + let run = (decoder, xs, i) => + switch xs[i] { + | Some(x) => + switch x->decode(decoder) { + | Ok(x) => x + | Error(err) => raise(DecodeError(err)) + } + | None => raise(DecodeError("Unable to get index " ++ string_of_int(i))) + } + + // arr[0]->Option.flatMap(x => decode(x, decodeA)) + + try ( + run(decodeA, arr, 0), + run(decodeB, arr, 1), + run(decodeC, arr, 2), + run(decodeD, arr, 3), + run(decodeE, arr, 4), + ) catch { + | DecodeError(msg) => raise(DecodeError(`${msg}\n\tin tuple5`)) + } + }) + } + open Json.Decode type fieldType<'a> = @@ -121,6 +204,11 @@ module Encode = { "tag": string(tag), }) } + + let tuple5 = (encodeA, encodeB, encodeC, encodeD, encodeE, (a, b, c, d, e)) => + [a->encodeA, b->encodeB, c->encodeC, d->encodeD, e->encodeE]->jsonArray + let tuple6 = (encodeA, encodeB, encodeC, encodeD, encodeE, encodeF, (a, b, c, d, e, f)) => + [a->encodeA, b->encodeB, c->encodeC, d->encodeD, e->encodeE, f->encodeF]->jsonArray } module React' = React diff --git a/src/View/Component/Item.res b/src/View/Component/Item.res index ba2f3ce8..0154cb98 100644 --- a/src/View/Component/Item.res +++ b/src/View/Component/Item.res @@ -67,12 +67,12 @@ let decode = { switch x { | "Labeled" => Payload( - tuple4( - pair(RichText.decode, option(string)), + Util.Decode.tuple5_( + RichText.decode, option(string), JsonCombinators.Json.Decode.option(Common.AgdaRange.decode), string, string, - )->map((. ((text, raw), range, label, style)) => Labeled(label, style, text, raw, range)), + )->map((. (text, raw, range, label, style)) => Labeled(label, style, text, raw, range)), ) | "Unlabeled" => Payload( @@ -95,12 +95,12 @@ let encode = { | Labeled(label, style, text, raw, range) => Payload(( "Labeled", - tuple4( - pair(RichText.encode, option(string)), + Util.Encode.tuple5( + RichText.encode, option(string), option(Common.AgdaRange.encode), string, string, - ((text, raw), range, label, style), + (text, raw, range, label, style), ), )) | Unlabeled(text, raw, range) => diff --git a/test/tests/Test__Connection.res b/test/tests/Test__Connection.res index 0ab65c25..d14cf8d2 100644 --- a/test/tests/Test__Connection.res +++ b/test/tests/Test__Connection.res @@ -13,27 +13,5 @@ describe_skip("Connection", ~timeout=10000, () => { let message = header ++ "\n" ++ body A.fail(message) }) - // ->Promise.tapOk(status => { - // let msg = switch status { - // | Emacs(version, _) => "Emacs v" ++ version - // | LSP(version, ViaCommand(_, _, _, LanguageServerMule.Method.FromGitHub(_, release, _))) => - // "ALS prebuilt " ++ release.tagName ++ " (Agda v" ++ version ++ ")" - // | LSP(version, ViaCommand(_)) => "ALS v" ++ version - // | LSP(_, ViaTCP(_)) => "ALS (TCP)" - // } - // Js.log(msg) - // }) }) - - // Q.it_skip("should download the language server", () => { - // activateExtension(Path.asset("InputMethod.agda"))->Promise.flatMap(_editor => { - // executeCommand("agda-mode.load")->Promise.map(_state => { - // // switch result { - // // | None => Js.log("None") - // // | Some(state) => Js.log(state.globalStoragePath) - // // } - // Ok() - // }) - // }) - // }) }) diff --git a/test/tests/Test__PromptIM.res b/test/tests/Test__PromptIM.res index 499c3183..62ec6547 100644 --- a/test/tests/Test__PromptIM.res +++ b/test/tests/Test__PromptIM.res @@ -29,11 +29,10 @@ // // // let extensionPath = Path.extensionPath() // // // let chan = Main.activateWithoutContext(disposables, extensionPath) -// // // VSCode.Commands.executeCommand0("agda-mode.load")->tap(result => Js.log("!!!!")) +// // // VSCode.Commands.executeCommand0("agda-mode.load") // // // VSCode.Commands.executeCommand0("agda-mode.load")->flatMap(result => { -// // // Js.log("!!!!!!!!!!") // // // result -// // // })->tap(Js.log2("!!!")) +// // // })= // // // VSCode.Window.showTextDocumentWithUri( // // // VSCode.Uri.file(Path.asset("InputMethod.agda")), @@ -54,7 +53,6 @@ // describe("Insertion", () => { // // it(`test`, () => { // // activateExtensionAndLoad()->get(chan => { -// // Js.log("chan") // // () // // // let document = VSCode.TextEditor.document(setup.editor) // // // IM.activate(setup, ()) From 1b8e0d0147e6890ac355b010a020c1c877b2a8a9 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Mon, 4 Dec 2023 21:28:20 +0800 Subject: [PATCH 046/109] [ refactor ] Replace @glennsl/bs-json with @glennsl/rescript-json-combinators --- bsconfig.json | 1 - .../src/Connection/LSP/Connection__LSP.bs.js | 850 ++++++++--------- .../LSP/Connection__LSP__Error.bs.js | 2 +- lib/js/src/Response.bs.js | 2 +- lib/js/src/Tokens.bs.js | 2 +- lib/js/src/Util/Util.bs.js | 171 +--- lib/js/src/View/Common.bs.js | 2 +- lib/js/src/View/Component/Item.bs.js | 4 +- lib/js/src/View/Component/Link.bs.js | 4 +- lib/js/src/View/Component/RichText.bs.js | 2 +- lib/js/src/View/Root.bs.js | 15 +- lib/js/src/View/View.bs.js | 18 +- package-lock.json | 856 ++++++------------ package.json | 1 - src/Connection/LSP/Connection__LSP.res | 333 +++---- src/Connection/LSP/Connection__LSP__Error.res | 2 +- src/Response.res | 2 +- src/Tokens.res | 2 +- src/Util/Util.res | 108 +-- src/View/Common.res | 2 +- src/View/Component/Item.res | 10 +- src/View/Component/Link.res | 4 +- src/View/Component/RichText.res | 2 +- src/View/Root.res | 14 +- src/View/View.res | 18 +- 25 files changed, 878 insertions(+), 1549 deletions(-) diff --git a/bsconfig.json b/bsconfig.json index 2bcd24a0..9da9b80c 100644 --- a/bsconfig.json +++ b/bsconfig.json @@ -23,7 +23,6 @@ "suffix": ".bs.js", "namespace": true, "bs-dependencies": [ - "@glennsl/bs-json", "@glennsl/rescript-json-combinators", "rescript-vscode", "rescript-webapi", diff --git a/lib/js/src/Connection/LSP/Connection__LSP.bs.js b/lib/js/src/Connection/LSP/Connection__LSP.bs.js index f8f9ef07..4d30cde7 100644 --- a/lib/js/src/Connection/LSP/Connection__LSP.bs.js +++ b/lib/js/src/Connection/LSP/Connection__LSP.bs.js @@ -3,8 +3,6 @@ var Curry = require("rescript/lib/js/curry.js"); var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); -var Json_decode = require("@glennsl/bs-json/lib/js/src/Json_decode.bs.js"); -var Caml_js_exceptions = require("rescript/lib/js/caml_js_exceptions.js"); var Item$AgdaModeVscode = require("../../View/Component/Item.bs.js"); var Util$AgdaModeVscode = require("../../Util/Util.bs.js"); var Json$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json.bs.js"); @@ -43,7 +41,7 @@ function fromJsError(error) { return (function (e) {return e.toString()})(error); } -var decode = Util$AgdaModeVscode.Decode.sum_(function (x) { +var decode = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "CmdRes" : return { @@ -88,168 +86,120 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { case "DisplayInfoAllGoalsWarnings" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (param) { - return { - TAG: 2, - _0: param[0], - _1: param[1], - _2: param[2], - _3: param[3], - _4: param[4], - [Symbol.for("name")]: "AllGoalsWarnings" - }; - }), (function (param) { - return Util$AgdaModeVscode.Decode.tuple5(Json_decode.string, (function (param) { - return Json_decode.array((function (param) { - return Util$AgdaModeVscode.Decode.convert("Item.decode in DisplayInfoAllGoalsWarnings", Item$AgdaModeVscode.decode, param); - }), param); - }), (function (param) { - return Json_decode.array((function (param) { - return Util$AgdaModeVscode.Decode.convert("Item.decode in DisplayInfoAllGoalsWarnings", Item$AgdaModeVscode.decode, param); - }), param); - }), (function (param) { - return Json_decode.array(Json_decode.string, param); - }), (function (param) { - return Json_decode.array(Json_decode.string, param); - }), param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Util$AgdaModeVscode.Decode.tuple5(Json_Decode$JsonCombinators.string, Json_Decode$JsonCombinators.array(Item$AgdaModeVscode.decode), Json_Decode$JsonCombinators.array(Item$AgdaModeVscode.decode), Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.string), Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.string)), (function (param) { + return { + TAG: 2, + _0: param[0], + _1: param[1], + _2: param[2], + _3: param[3], + _4: param[4], + [Symbol.for("name")]: "AllGoalsWarnings" + }; + })), + [Symbol.for("name")]: "Payload" }; case "DisplayInfoAuto" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (body) { - return { - TAG: 5, - _0: body, - [Symbol.for("name")]: "Auto" - }; - }), Json_decode.string, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (body) { + return { + TAG: 5, + _0: body, + [Symbol.for("name")]: "Auto" + }; + })), + [Symbol.for("name")]: "Payload" }; case "DisplayInfoCompilationOk" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (param) { - return { - TAG: 1, - _0: param[0], - _1: param[1], - [Symbol.for("name")]: "CompilationOk" - }; - }), (function (param) { - return Json_decode.pair((function (param) { - return Json_decode.array(Json_decode.string, param); - }), (function (param) { - return Json_decode.array(Json_decode.string, param); - }), param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.string), Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.string)), (function (param) { + return { + TAG: 1, + _0: param[0], + _1: param[1], + [Symbol.for("name")]: "CompilationOk" + }; + })), + [Symbol.for("name")]: "Payload" }; case "DisplayInfoCurrentGoal" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (body) { - return { - TAG: 3, - _0: body, - [Symbol.for("name")]: "CurrentGoal" - }; - }), (function (param) { - return Util$AgdaModeVscode.Decode.convert("Item.decode in DisplayInfoCurrentGoal", Item$AgdaModeVscode.decode, param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Item$AgdaModeVscode.decode, (function (body) { + return { + TAG: 3, + _0: body, + [Symbol.for("name")]: "CurrentGoal" + }; + })), + [Symbol.for("name")]: "Payload" }; case "DisplayInfoError" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (body) { - return { - TAG: 6, - _0: body, - [Symbol.for("name")]: "Error'" - }; - }), Json_decode.string, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (body) { + return { + TAG: 6, + _0: body, + [Symbol.for("name")]: "Error'" + }; + })), + [Symbol.for("name")]: "Payload" }; case "DisplayInfoGeneric" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (param) { - return { - TAG: 0, - _0: param[0], - _1: param[1], - [Symbol.for("name")]: "Generic" - }; - }), (function (param) { - return Json_decode.pair(Json_decode.string, (function (param) { - return Json_decode.array((function (param) { - return Util$AgdaModeVscode.Decode.convert("Item.decode in DisplayInfoGeneric", Item$AgdaModeVscode.decode, param); - }), param); - }), param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.string, Json_Decode$JsonCombinators.array(Item$AgdaModeVscode.decode)), (function (param) { + return { + TAG: 0, + _0: param[0], + _1: param[1], + [Symbol.for("name")]: "Generic" + }; + })), + [Symbol.for("name")]: "Payload" }; case "DisplayInfoInferredType" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (body) { - return { - TAG: 4, - _0: body, - [Symbol.for("name")]: "InferredType" - }; - }), (function (param) { - return Util$AgdaModeVscode.Decode.convert("Item.decode in DisplayInfoInferredType", Item$AgdaModeVscode.decode, param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Item$AgdaModeVscode.decode, (function (body) { + return { + TAG: 4, + _0: body, + [Symbol.for("name")]: "InferredType" + }; + })), + [Symbol.for("name")]: "Payload" }; case "DisplayInfoNormalForm" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (body) { - return { - TAG: 8, - _0: body, - [Symbol.for("name")]: "NormalForm" - }; - }), Json_decode.string, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (body) { + return { + TAG: 8, + _0: body, + [Symbol.for("name")]: "NormalForm" + }; + })), + [Symbol.for("name")]: "Payload" }; case "DisplayInfoTime" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (body) { - return { - TAG: 7, - _0: body, - [Symbol.for("name")]: "Time" - }; - }), Json_decode.string, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (body) { + return { + TAG: 7, + _0: body, + [Symbol.for("name")]: "Time" + }; + })), + [Symbol.for("name")]: "Payload" }; default: throw { - RE_EXN_ID: Json_decode.DecodeError, + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, _1: "[LSP.DisplayInfo] Unknown constructor: " + x, Error: new Error() }; @@ -301,146 +251,144 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { case "ResponseDisplayInfo" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (info) { - switch (info.TAG | 0) { - case /* Generic */0 : - return { - TAG: 0, - _0: { - TAG: 9, - _0: { - TAG: 0, - _0: info._0, - _1: info._1, - [Symbol.for("name")]: "Generic" - }, - [Symbol.for("name")]: "DisplayInfo" - }, - [Symbol.for("name")]: "ResponseNonLast" - }; - case /* CompilationOk */1 : - return { - TAG: 0, - _0: { - TAG: 9, - _0: { - TAG: 2, - _0: info._0, - _1: info._1, - [Symbol.for("name")]: "CompilationOkLSP" - }, - [Symbol.for("name")]: "DisplayInfo" - }, - [Symbol.for("name")]: "ResponseNonLast" - }; - case /* AllGoalsWarnings */2 : - return { - TAG: 0, - _0: { - TAG: 9, - _0: { - TAG: 5, - _0: info._0, - _1: info._1, - _2: info._2, - _3: info._3, - _4: info._4, - [Symbol.for("name")]: "AllGoalsWarningsLSP" - }, - [Symbol.for("name")]: "DisplayInfo" - }, - [Symbol.for("name")]: "ResponseNonLast" - }; - case /* CurrentGoal */3 : - return { - TAG: 0, - _0: { - TAG: 9, - _0: { - TAG: 16, - _0: info._0, - [Symbol.for("name")]: "CurrentGoalLSP" - }, - [Symbol.for("name")]: "DisplayInfo" - }, - [Symbol.for("name")]: "ResponseNonLast" - }; - case /* InferredType */4 : - return { - TAG: 0, - _0: { - TAG: 9, - _0: { - TAG: 18, - _0: info._0, - [Symbol.for("name")]: "InferredTypeLSP" - }, - [Symbol.for("name")]: "DisplayInfo" - }, - [Symbol.for("name")]: "ResponseNonLast" - }; - case /* Auto */5 : - return { - TAG: 0, - _0: { - TAG: 9, - _0: { - TAG: 9, - _0: info._0, - [Symbol.for("name")]: "Auto" - }, - [Symbol.for("name")]: "DisplayInfo" - }, - [Symbol.for("name")]: "ResponseNonLast" - }; - case /* Error' */6 : - return { - TAG: 0, - _0: { - TAG: 9, - _0: { - TAG: 7, - _0: info._0, - [Symbol.for("name")]: "Error" - }, - [Symbol.for("name")]: "DisplayInfo" - }, - [Symbol.for("name")]: "ResponseNonLast" - }; - case /* Time */7 : - return { - TAG: 0, - _0: { - TAG: 9, - _0: { - TAG: 6, - _0: info._0, - [Symbol.for("name")]: "Time" - }, - [Symbol.for("name")]: "DisplayInfo" - }, - [Symbol.for("name")]: "ResponseNonLast" - }; - case /* NormalForm */8 : - return { - TAG: 0, - _0: { - TAG: 9, - _0: { - TAG: 13, - _0: info._0, - [Symbol.for("name")]: "NormalForm" - }, - [Symbol.for("name")]: "DisplayInfo" - }, - [Symbol.for("name")]: "ResponseNonLast" - }; - - } - }), decode$1, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(decode$1, (function (info) { + switch (info.TAG | 0) { + case /* Generic */0 : + return { + TAG: 0, + _0: { + TAG: 9, + _0: { + TAG: 0, + _0: info._0, + _1: info._1, + [Symbol.for("name")]: "Generic" + }, + [Symbol.for("name")]: "DisplayInfo" + }, + [Symbol.for("name")]: "ResponseNonLast" + }; + case /* CompilationOk */1 : + return { + TAG: 0, + _0: { + TAG: 9, + _0: { + TAG: 2, + _0: info._0, + _1: info._1, + [Symbol.for("name")]: "CompilationOkLSP" + }, + [Symbol.for("name")]: "DisplayInfo" + }, + [Symbol.for("name")]: "ResponseNonLast" + }; + case /* AllGoalsWarnings */2 : + return { + TAG: 0, + _0: { + TAG: 9, + _0: { + TAG: 5, + _0: info._0, + _1: info._1, + _2: info._2, + _3: info._3, + _4: info._4, + [Symbol.for("name")]: "AllGoalsWarningsLSP" + }, + [Symbol.for("name")]: "DisplayInfo" + }, + [Symbol.for("name")]: "ResponseNonLast" + }; + case /* CurrentGoal */3 : + return { + TAG: 0, + _0: { + TAG: 9, + _0: { + TAG: 16, + _0: info._0, + [Symbol.for("name")]: "CurrentGoalLSP" + }, + [Symbol.for("name")]: "DisplayInfo" + }, + [Symbol.for("name")]: "ResponseNonLast" + }; + case /* InferredType */4 : + return { + TAG: 0, + _0: { + TAG: 9, + _0: { + TAG: 18, + _0: info._0, + [Symbol.for("name")]: "InferredTypeLSP" + }, + [Symbol.for("name")]: "DisplayInfo" + }, + [Symbol.for("name")]: "ResponseNonLast" + }; + case /* Auto */5 : + return { + TAG: 0, + _0: { + TAG: 9, + _0: { + TAG: 9, + _0: info._0, + [Symbol.for("name")]: "Auto" + }, + [Symbol.for("name")]: "DisplayInfo" + }, + [Symbol.for("name")]: "ResponseNonLast" + }; + case /* Error' */6 : + return { + TAG: 0, + _0: { + TAG: 9, + _0: { + TAG: 7, + _0: info._0, + [Symbol.for("name")]: "Error" + }, + [Symbol.for("name")]: "DisplayInfo" + }, + [Symbol.for("name")]: "ResponseNonLast" + }; + case /* Time */7 : + return { + TAG: 0, + _0: { + TAG: 9, + _0: { + TAG: 6, + _0: info._0, + [Symbol.for("name")]: "Time" + }, + [Symbol.for("name")]: "DisplayInfo" + }, + [Symbol.for("name")]: "ResponseNonLast" + }; + case /* NormalForm */8 : + return { + TAG: 0, + _0: { + TAG: 9, + _0: { + TAG: 13, + _0: info._0, + [Symbol.for("name")]: "NormalForm" + }, + [Symbol.for("name")]: "DisplayInfo" + }, + [Symbol.for("name")]: "ResponseNonLast" + }; + + } + })), + [Symbol.for("name")]: "Payload" }; case "ResponseDoneAborting" : return { @@ -471,220 +419,178 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { case "ResponseGiveAction" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (param) { - return { - TAG: 0, - _0: { - TAG: 6, - _0: param[0], - _1: param[1], - [Symbol.for("name")]: "GiveAction" - }, - [Symbol.for("name")]: "ResponseNonLast" - }; - }), (function (param) { - return Json_decode.pair(Json_decode.$$int, (function (param) { - return Util$AgdaModeVscode.Decode.convert("Response.GiveAction.decode in ResponseGiveAction", Response$AgdaModeVscode.GiveAction.decode, param); - }), param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.$$int, Response$AgdaModeVscode.GiveAction.decode), (function (param) { + return { + TAG: 0, + _0: { + TAG: 6, + _0: param[0], + _1: param[1], + [Symbol.for("name")]: "GiveAction" + }, + [Symbol.for("name")]: "ResponseNonLast" + }; + })), + [Symbol.for("name")]: "Payload" }; case "ResponseHighlightingInfoDirect" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (param) { - return { - TAG: 0, - _0: { - TAG: 0, - _0: param[0], - _1: param[1], - [Symbol.for("name")]: "HighlightingInfoDirect" - }, - [Symbol.for("name")]: "ResponseNonLast" - }; - }), (function (param) { - return Util$AgdaModeVscode.Decode.convert("Tokens.Token.decodeResponseHighlightingInfoDirect in LSPResponse", Tokens$AgdaModeVscode.Token.decodeResponseHighlightingInfoDirect, param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Tokens$AgdaModeVscode.Token.decodeResponseHighlightingInfoDirect, (function (param) { + return { + TAG: 0, + _0: { + TAG: 0, + _0: param[0], + _1: param[1], + [Symbol.for("name")]: "HighlightingInfoDirect" + }, + [Symbol.for("name")]: "ResponseNonLast" + }; + })), + [Symbol.for("name")]: "Payload" }; case "ResponseHighlightingInfoIndirect" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (filePath) { - return { - TAG: 0, - _0: { - TAG: 2, - _0: filePath, - [Symbol.for("name")]: "HighlightingInfoIndirectJSON" - }, - [Symbol.for("name")]: "ResponseNonLast" - }; - }), Json_decode.string, param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (filePath) { + return { + TAG: 0, + _0: { + TAG: 2, + _0: filePath, + [Symbol.for("name")]: "HighlightingInfoIndirectJSON" + }, + [Symbol.for("name")]: "ResponseNonLast" + }; + })), + [Symbol.for("name")]: "Payload" }; case "ResponseInteractionPoints" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (ids) { - return { - TAG: 1, - _0: 1, - _1: { - TAG: 5, - _0: ids, - [Symbol.for("name")]: "InteractionPoints" - }, - [Symbol.for("name")]: "ResponseLast" - }; - }), (function (param) { - return Json_decode.array(Json_decode.$$int, param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.$$int), (function (ids) { + return { + TAG: 1, + _0: 1, + _1: { + TAG: 5, + _0: ids, + [Symbol.for("name")]: "InteractionPoints" + }, + [Symbol.for("name")]: "ResponseLast" + }; + })), + [Symbol.for("name")]: "Payload" }; case "ResponseJumpToError" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (param) { - return { - TAG: 1, - _0: 3, - _1: { - TAG: 4, - _0: param[0], - _1: param[1], - [Symbol.for("name")]: "JumpToError" - }, - [Symbol.for("name")]: "ResponseLast" - }; - }), (function (param) { - return Json_decode.pair(Json_decode.string, Json_decode.$$int, param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.string, Json_Decode$JsonCombinators.$$int), (function (param) { + return { + TAG: 1, + _0: 3, + _1: { + TAG: 4, + _0: param[0], + _1: param[1], + [Symbol.for("name")]: "JumpToError" + }, + [Symbol.for("name")]: "ResponseLast" + }; + })), + [Symbol.for("name")]: "Payload" }; case "ResponseMakeCaseExtendedLambda" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (payload) { - return { - TAG: 1, - _0: 2, - _1: { - TAG: 7, - _0: /* ExtendedLambda */1, - _1: payload, - [Symbol.for("name")]: "MakeCase" - }, - [Symbol.for("name")]: "ResponseLast" - }; - }), (function (param) { - return Json_decode.array(Json_decode.string, param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.string), (function (payload) { + return { + TAG: 1, + _0: 2, + _1: { + TAG: 7, + _0: /* ExtendedLambda */1, + _1: payload, + [Symbol.for("name")]: "MakeCase" + }, + [Symbol.for("name")]: "ResponseLast" + }; + })), + [Symbol.for("name")]: "Payload" }; case "ResponseMakeCaseFunction" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (payload) { - return { - TAG: 1, - _0: 2, - _1: { - TAG: 7, - _0: /* Function */0, - _1: payload, - [Symbol.for("name")]: "MakeCase" - }, - [Symbol.for("name")]: "ResponseLast" - }; - }), (function (param) { - return Json_decode.array(Json_decode.string, param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.string), (function (payload) { + return { + TAG: 1, + _0: 2, + _1: { + TAG: 7, + _0: /* Function */0, + _1: payload, + [Symbol.for("name")]: "MakeCase" + }, + [Symbol.for("name")]: "ResponseLast" + }; + })), + [Symbol.for("name")]: "Payload" }; case "ResponseRunningInfo" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (param) { - return { - TAG: 0, - _0: { - TAG: 10, - _0: param[0], - _1: param[1], - [Symbol.for("name")]: "RunningInfo" - }, - [Symbol.for("name")]: "ResponseNonLast" - }; - }), (function (param) { - return Json_decode.pair(Json_decode.$$int, Json_decode.string, param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.$$int, Json_Decode$JsonCombinators.string), (function (param) { + return { + TAG: 0, + _0: { + TAG: 10, + _0: param[0], + _1: param[1], + [Symbol.for("name")]: "RunningInfo" + }, + [Symbol.for("name")]: "ResponseNonLast" + }; + })), + [Symbol.for("name")]: "Payload" }; case "ResponseSolveAll" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (payloads) { - return { - TAG: 1, - _0: 2, - _1: { - TAG: 8, - _0: payloads, - [Symbol.for("name")]: "SolveAll" - }, - [Symbol.for("name")]: "ResponseLast" - }; - }), (function (param) { - return Json_decode.array((function (param) { - return Json_decode.pair(Json_decode.$$int, Json_decode.string, param); - }), param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.$$int, Json_Decode$JsonCombinators.string)), (function (payloads) { + return { + TAG: 1, + _0: 2, + _1: { + TAG: 8, + _0: payloads, + [Symbol.for("name")]: "SolveAll" + }, + [Symbol.for("name")]: "ResponseLast" + }; + })), + [Symbol.for("name")]: "Payload" }; case "ResponseStatus" : return { TAG: 0, - _0: (function (param) { - return Json_decode.map((function (param) { - return { - TAG: 0, - _0: { - TAG: 3, - _0: param[0], - _1: param[1], - [Symbol.for("name")]: "Status" - }, - [Symbol.for("name")]: "ResponseNonLast" - }; - }), (function (param) { - return Json_decode.pair(Json_decode.bool, Json_decode.bool, param); - }), param); - }), - [Symbol.for("name")]: "Contents" + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.bool, Json_Decode$JsonCombinators.bool), (function (param) { + return { + TAG: 0, + _0: { + TAG: 3, + _0: param[0], + _1: param[1], + [Symbol.for("name")]: "Status" + }, + [Symbol.for("name")]: "ResponseNonLast" + }; + })), + [Symbol.for("name")]: "Payload" }; default: throw { - RE_EXN_ID: Json_decode.DecodeError, + RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, _1: "[LSP.Response] Unknown constructor: " + x, Error: new Error() }; @@ -720,43 +626,25 @@ function decodeCommandRes(json) { } function decodeResponse(json) { - var reaction; - try { - reaction = Curry._1(decode$2, json); - } - catch (raw_msg){ - var msg = Caml_js_exceptions.internalToOCamlException(raw_msg); - if (msg.RE_EXN_ID === Util$AgdaModeVscode.Decode.TempDecodeError) { - return { - TAG: 1, - _0: { - TAG: 3, - _0: msg._2, - _1: json, - [Symbol.for("name")]: "CannotDecodeResponse" - }, - [Symbol.for("name")]: "Error" - }; - } - if (msg.RE_EXN_ID === Json_decode.DecodeError) { - return { - TAG: 1, - _0: { - TAG: 3, - _0: msg._1, - _1: json, - [Symbol.for("name")]: "CannotDecodeResponse" - }, - [Symbol.for("name")]: "Error" - }; - } - throw msg; + var reaction = Json$JsonCombinators.decode(json, decode$2); + if (reaction.TAG === /* Ok */0) { + return { + TAG: 0, + _0: reaction._0, + [Symbol.for("name")]: "Ok" + }; + } else { + return { + TAG: 1, + _0: { + TAG: 3, + _0: reaction._0, + _1: json, + [Symbol.for("name")]: "CannotDecodeResponse" + }, + [Symbol.for("name")]: "Error" + }; } - return { - TAG: 0, - _0: reaction, - [Symbol.for("name")]: "Ok" - }; } function sendRequestPrim(client, request) { diff --git a/lib/js/src/Connection/LSP/Connection__LSP__Error.bs.js b/lib/js/src/Connection/LSP/Connection__LSP__Error.bs.js index 16dcad7f..30f5b6dc 100644 --- a/lib/js/src/Connection/LSP/Connection__LSP__Error.bs.js +++ b/lib/js/src/Connection/LSP/Connection__LSP__Error.bs.js @@ -16,7 +16,7 @@ function toString(x) { } } -var decode = Util$AgdaModeVscode.Decode.sum_(function (x) { +var decode = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "CmdErrCannotDecodeJSON" : return { diff --git a/lib/js/src/Response.bs.js b/lib/js/src/Response.bs.js index 14e34160..e891995a 100644 --- a/lib/js/src/Response.bs.js +++ b/lib/js/src/Response.bs.js @@ -13,7 +13,7 @@ var Parser$AgdaModeVscode = require("./Parser/Parser.bs.js"); var Tokens$AgdaModeVscode = require("./Tokens.bs.js"); var Json_Decode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Decode.bs.js"); -var decode = Util$AgdaModeVscode.Decode.sum_(function (x) { +var decode = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "GiveNoParen" : return { diff --git a/lib/js/src/Tokens.bs.js b/lib/js/src/Tokens.bs.js index 94251701..6fa001ac 100644 --- a/lib/js/src/Tokens.bs.js +++ b/lib/js/src/Tokens.bs.js @@ -148,7 +148,7 @@ function parseDirectHighlightings(tokens) { })); } -var decodeToken = Json_Decode$JsonCombinators.map(Util$AgdaModeVscode.Decode.tuple6_(Json_Decode$JsonCombinators.$$int, Json_Decode$JsonCombinators.$$int, Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.string), Json_Decode$JsonCombinators.bool, Json_Decode$JsonCombinators.option(Json_Decode$JsonCombinators.string), Json_Decode$JsonCombinators.option(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.string, Json_Decode$JsonCombinators.$$int))), (function (param) { +var decodeToken = Json_Decode$JsonCombinators.map(Util$AgdaModeVscode.Decode.tuple6(Json_Decode$JsonCombinators.$$int, Json_Decode$JsonCombinators.$$int, Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.string), Json_Decode$JsonCombinators.bool, Json_Decode$JsonCombinators.option(Json_Decode$JsonCombinators.string), Json_Decode$JsonCombinators.option(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.string, Json_Decode$JsonCombinators.$$int))), (function (param) { return { start: param[0] - 1 | 0, end_: param[1] - 1 | 0, diff --git a/lib/js/src/Util/Util.bs.js b/lib/js/src/Util/Util.bs.js index 72b614ce..393e6ff9 100644 --- a/lib/js/src/Util/Util.bs.js +++ b/lib/js/src/Util/Util.bs.js @@ -9,12 +9,10 @@ var Belt_List = require("rescript/lib/js/belt_List.js"); var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); -var Json_decode = require("@glennsl/bs-json/lib/js/src/Json_decode.bs.js"); var Caml_exceptions = require("rescript/lib/js/caml_exceptions.js"); var Caml_splice_call = require("rescript/lib/js/caml_splice_call.js"); var CompareVersions = require("compare-versions"); var Caml_js_exceptions = require("rescript/lib/js/caml_js_exceptions.js"); -var Json$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json.bs.js"); var Json_Decode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Decode.bs.js"); function mapError(x, f) { @@ -39,25 +37,7 @@ var Result = { var $$Error = /* @__PURE__ */Caml_exceptions.create("Util-AgdaModeVscode.Error"); -var TempDecodeError = /* @__PURE__ */Caml_exceptions.create("Util-AgdaModeVscode.Decode.TempDecodeError"); - -function convert(label, translation, json) { - var translation$1 = Json$JsonCombinators.decode(json, translation); - if (translation$1.TAG === /* Ok */0) { - return translation$1._0; - } - var err = translation$1._0; - console.log(err); - throw { - RE_EXN_ID: TempDecodeError, - _1: label, - _2: err, - _3: json, - Error: new Error() - }; -} - -function sum_(decoder) { +function sum(decoder) { return Json_Decode$JsonCombinators.flatMap(Json_Decode$JsonCombinators.field("tag", Json_Decode$JsonCombinators.string), (function (tag) { var d = Curry._1(decoder, tag); if (d.TAG === /* Payload */0) { @@ -70,15 +50,15 @@ function sum_(decoder) { })); } -function tuple6_(decodeA, decodeB, decodeC, decodeD, decodeE, decodeF) { +function tuple5(decodeA, decodeB, decodeC, decodeD, decodeE) { return Json_Decode$JsonCombinators.custom(function (json) { if (!Array.isArray(json)) { Json_Decode$JsonCombinators.$$Error.expected("array", json); } - if (json.length !== 6) { + if (json.length !== 5) { throw { RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, - _1: "Expected array of length 6, got array of length " + String(json.length) + "", + _1: "Expected array of length 5, got array of length " + String(json.length) + "", Error: new Error() }; } @@ -107,8 +87,7 @@ function tuple6_(decodeA, decodeB, decodeC, decodeD, decodeE, decodeF) { run(decodeB, json, 1), run(decodeC, json, 2), run(decodeD, json, 3), - run(decodeE, json, 4), - run(decodeF, json, 5) + run(decodeE, json, 4) ]; } catch (raw_msg){ @@ -116,7 +95,7 @@ function tuple6_(decodeA, decodeB, decodeC, decodeD, decodeE, decodeF) { if (msg.RE_EXN_ID === Json_Decode$JsonCombinators.DecodeError) { throw { RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, - _1: "" + msg._1 + "\n\tin tuple6", + _1: "" + msg._1 + "\n\tin tuple5", Error: new Error() }; } @@ -125,15 +104,15 @@ function tuple6_(decodeA, decodeB, decodeC, decodeD, decodeE, decodeF) { }); } -function tuple5_(decodeA, decodeB, decodeC, decodeD, decodeE) { +function tuple6(decodeA, decodeB, decodeC, decodeD, decodeE, decodeF) { return Json_Decode$JsonCombinators.custom(function (json) { if (!Array.isArray(json)) { Json_Decode$JsonCombinators.$$Error.expected("array", json); } - if (json.length !== 5) { + if (json.length !== 6) { throw { RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, - _1: "Expected array of length 5, got array of length " + String(json.length) + "", + _1: "Expected array of length 6, got array of length " + String(json.length) + "", Error: new Error() }; } @@ -162,7 +141,8 @@ function tuple5_(decodeA, decodeB, decodeC, decodeD, decodeE) { run(decodeB, json, 1), run(decodeC, json, 2), run(decodeD, json, 3), - run(decodeE, json, 4) + run(decodeE, json, 4), + run(decodeF, json, 5) ]; } catch (raw_msg){ @@ -170,7 +150,7 @@ function tuple5_(decodeA, decodeB, decodeC, decodeD, decodeE) { if (msg.RE_EXN_ID === Json_Decode$JsonCombinators.DecodeError) { throw { RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, - _1: "" + msg._1 + "\n\tin tuple5", + _1: "" + msg._1 + "\n\tin tuple6", Error: new Error() }; } @@ -179,135 +159,8 @@ function tuple5_(decodeA, decodeB, decodeC, decodeD, decodeE) { }); } -function sum(decoder) { - return function (param) { - return Json_decode.andThen((function (tag) { - var d = Curry._1(decoder, tag); - if (d.TAG === /* Contents */0) { - var d$1 = d._0; - return function (param) { - return Json_decode.field("contents", d$1, param); - }; - } - var d$2 = d._0; - return function (param) { - return d$2; - }; - }), (function (param) { - return Json_decode.field("tag", Json_decode.string, param); - }), param); - }; -} - -function maybe(decoder) { - return sum(function (x) { - if (x === "Just") { - return { - TAG: 0, - _0: (function (json) { - return Caml_option.some(Curry._1(decoder, json)); - }), - [Symbol.for("name")]: "Contents" - }; - } else { - return { - TAG: 1, - _0: undefined, - [Symbol.for("name")]: "TagOnly" - }; - } - }); -} - -function tuple5(decodeA, decodeB, decodeC, decodeD, decodeE, json) { - if (Array.isArray(json)) { - var length = json.length; - if (length === 5) { - try { - return [ - Curry._1(decodeA, json[0]), - Curry._1(decodeB, json[1]), - Curry._1(decodeC, json[2]), - Curry._1(decodeD, json[3]), - Curry._1(decodeE, json[4]) - ]; - } - catch (raw_msg){ - var msg = Caml_js_exceptions.internalToOCamlException(raw_msg); - if (msg.RE_EXN_ID === Json_decode.DecodeError) { - throw { - RE_EXN_ID: Json_decode.DecodeError, - _1: msg._1 + "\n\tin tuple5", - Error: new Error() - }; - } - throw msg; - } - } else { - throw { - RE_EXN_ID: Json_decode.DecodeError, - _1: "Expected array of length 5, got array of length " + String(length) + "", - Error: new Error() - }; - } - } else { - throw { - RE_EXN_ID: Json_decode.DecodeError, - _1: "Expected array, got " + JSON.stringify(json), - Error: new Error() - }; - } -} - -function tuple6(decodeA, decodeB, decodeC, decodeD, decodeE, decodeF, json) { - if (Array.isArray(json)) { - var length = json.length; - if (length === 6) { - try { - return [ - Curry._1(decodeA, json[0]), - Curry._1(decodeB, json[1]), - Curry._1(decodeC, json[2]), - Curry._1(decodeD, json[3]), - Curry._1(decodeE, json[4]), - Curry._1(decodeF, json[5]) - ]; - } - catch (raw_msg){ - var msg = Caml_js_exceptions.internalToOCamlException(raw_msg); - if (msg.RE_EXN_ID === Json_decode.DecodeError) { - throw { - RE_EXN_ID: Json_decode.DecodeError, - _1: msg._1 + "\n\tin tuple6", - Error: new Error() - }; - } - throw msg; - } - } else { - throw { - RE_EXN_ID: Json_decode.DecodeError, - _1: "Expected array of length 6, got array of length " + String(length) + "", - Error: new Error() - }; - } - } else { - throw { - RE_EXN_ID: Json_decode.DecodeError, - _1: "Expected array, got " + JSON.stringify(json), - Error: new Error() - }; - } -} - var Decode = { - TempDecodeError: TempDecodeError, - convert: convert, - sum_: sum_, - tuple6_: tuple6_, - tuple5_: tuple5_, sum: sum, - maybe: maybe, tuple5: tuple5, tuple6: tuple6 }; diff --git a/lib/js/src/View/Common.bs.js b/lib/js/src/View/Common.bs.js index f892ce7c..264263f0 100644 --- a/lib/js/src/View/Common.bs.js +++ b/lib/js/src/View/Common.bs.js @@ -324,7 +324,7 @@ function toString$1(self) { } } -var decode$2 = Util$AgdaModeVscode.Decode.sum_(function (x) { +var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "NoRange" : return { diff --git a/lib/js/src/View/Component/Item.bs.js b/lib/js/src/View/Component/Item.bs.js index 2fc9dd1d..b4acf0c6 100644 --- a/lib/js/src/View/Component/Item.bs.js +++ b/lib/js/src/View/Component/Item.bs.js @@ -138,7 +138,7 @@ function Item(Props) { } } -var decode = Util$AgdaModeVscode.Decode.sum_(function (x) { +var decode = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "Header" : return { @@ -155,7 +155,7 @@ var decode = Util$AgdaModeVscode.Decode.sum_(function (x) { case "Labeled" : return { TAG: 0, - _0: Json_Decode$JsonCombinators.map(Util$AgdaModeVscode.Decode.tuple5_(RichText$AgdaModeVscode.decode, Json_Decode$JsonCombinators.option(Json_Decode$JsonCombinators.string), Json_Decode$JsonCombinators.option(Common$AgdaModeVscode.AgdaRange.decode), Json_Decode$JsonCombinators.string, Json_Decode$JsonCombinators.string), (function (param) { + _0: Json_Decode$JsonCombinators.map(Util$AgdaModeVscode.Decode.tuple5(RichText$AgdaModeVscode.decode, Json_Decode$JsonCombinators.option(Json_Decode$JsonCombinators.string), Json_Decode$JsonCombinators.option(Common$AgdaModeVscode.AgdaRange.decode), Json_Decode$JsonCombinators.string, Json_Decode$JsonCombinators.string), (function (param) { return { TAG: 0, _0: param[3], diff --git a/lib/js/src/View/Component/Link.bs.js b/lib/js/src/View/Component/Link.bs.js index 2669398a..b662fd2d 100644 --- a/lib/js/src/View/Component/Link.bs.js +++ b/lib/js/src/View/Component/Link.bs.js @@ -17,7 +17,7 @@ function toString(x) { } } -var decode = Util$AgdaModeVscode.Decode.sum_(function (x) { +var decode = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "LinkHole" : return { @@ -90,7 +90,7 @@ var Provider = { make: make }; -var decode$1 = Util$AgdaModeVscode.Decode.sum_(function (x) { +var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "JumpToTarget" : return { diff --git a/lib/js/src/View/Component/RichText.bs.js b/lib/js/src/View/Component/RichText.bs.js index 862d7ab1..d9521faa 100644 --- a/lib/js/src/View/Component/RichText.bs.js +++ b/lib/js/src/View/Component/RichText.bs.js @@ -139,7 +139,7 @@ var ClassNames = { }; function decodeRec(param) { - return Util$AgdaModeVscode.Decode.sum_(function (x) { + return Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "Hole" : return { diff --git a/lib/js/src/View/Root.bs.js b/lib/js/src/View/Root.bs.js index 1c995391..4953cd93 100644 --- a/lib/js/src/View/Root.bs.js +++ b/lib/js/src/View/Root.bs.js @@ -7,8 +7,8 @@ var ReactDom = require("react-dom"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); var Chan$AgdaModeVscode = require("../Util/Chan.bs.js"); -var Util$AgdaModeVscode = require("../Util/Util.bs.js"); var View$AgdaModeVscode = require("./View.bs.js"); +var Json$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json.bs.js"); var Panel$AgdaModeVscode = require("./Panel/Panel.bs.js"); var vscode = acquireVsCodeApi(); @@ -18,11 +18,16 @@ var onRequest = Chan$AgdaModeVscode.make(undefined); var onEventToView = Chan$AgdaModeVscode.make(undefined); VSCode.Api.onMessage(function (stringifiedJSON) { - var requestOrEvent = Util$AgdaModeVscode.Decode.convert("VSCode.Api.onMessage", View$AgdaModeVscode.RequestOrEventToView.decode, JSON.parse(stringifiedJSON)); - if (requestOrEvent.TAG === /* Request */0) { - return Chan$AgdaModeVscode.emit(onRequest, requestOrEvent._0); + var json = JSON.parse(stringifiedJSON); + var match = Json$JsonCombinators.decode(json, View$AgdaModeVscode.RequestOrEventToView.decode); + if (match.TAG !== /* Ok */0) { + return ; + } + var $$event = match._0; + if ($$event.TAG === /* Request */0) { + return Chan$AgdaModeVscode.emit(onRequest, $$event._0); } else { - return Chan$AgdaModeVscode.emit(onEventToView, requestOrEvent._0); + return Chan$AgdaModeVscode.emit(onEventToView, $$event._0); } }); diff --git a/lib/js/src/View/View.bs.js b/lib/js/src/View/View.bs.js index 09b6eb6b..99f0c7a1 100644 --- a/lib/js/src/View/View.bs.js +++ b/lib/js/src/View/View.bs.js @@ -15,7 +15,7 @@ function toString(x) { return x._0; } -var decode = Util$AgdaModeVscode.Decode.sum_(function (x) { +var decode = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "Error" : return { @@ -145,7 +145,7 @@ var Prompt = { var Body = {}; -var decode$2 = Util$AgdaModeVscode.Decode.sum_(function (x) { +var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "Activate" : return { @@ -289,7 +289,7 @@ function toString$1(x) { } } -var decode$3 = Util$AgdaModeVscode.Decode.sum_(function (x) { +var decode$3 = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "Append" : return { @@ -468,7 +468,7 @@ function toString$3(x) { } } -var decode$5 = Util$AgdaModeVscode.Decode.sum_(function (x) { +var decode$5 = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "Event" : return { @@ -529,7 +529,7 @@ var RequestOrEventToView = { encode: encode$5 }; -var decode$6 = Util$AgdaModeVscode.Decode.sum_(function (x) { +var decode$6 = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "PromptInterrupted" : return { @@ -581,7 +581,7 @@ var $$Response = { encode: encode$6 }; -var decode$7 = Util$AgdaModeVscode.Decode.sum_(function (x) { +var decode$7 = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "ChooseSymbol" : return { @@ -641,7 +641,7 @@ var InputMethod$1 = { encode: encode$7 }; -var decode$8 = Util$AgdaModeVscode.Decode.sum_(function (x) { +var decode$8 = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "BrowseDown" : return { @@ -784,7 +784,7 @@ var Provider = { make: make }; -var decode$9 = Util$AgdaModeVscode.Decode.sum_(function (x) { +var decode$9 = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "Destroyed" : return { @@ -897,7 +897,7 @@ var EventFromView = { encode: encode$9 }; -var decode$10 = Util$AgdaModeVscode.Decode.sum_(function (x) { +var decode$10 = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "Event" : return { diff --git a/package-lock.json b/package-lock.json index 0226bab5..5c4ff27c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,6 @@ "version": "0.4.4", "dependencies": { "@datastructures-js/binary-search-tree": "^4.3.0", - "@glennsl/bs-json": "^5.0.4", "@glennsl/rescript-json-combinators": "^1.3.0", "@rescript/react": "^0.10.3", "compare-versions": "^3.5.1", @@ -45,15 +44,13 @@ "node_modules/@datastructures-js/binary-search-tree": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/@datastructures-js/binary-search-tree/-/binary-search-tree-4.3.2.tgz", - "integrity": "sha512-fZV3GoZAPxfgGTky7Q+5oiMUtLhQoHxSlJt3DmUPbl+1pMpuopOSG/MymdcruWOBQU90kSzo0lN+3gmSaEYCTw==", - "license": "MIT" + "integrity": "sha512-fZV3GoZAPxfgGTky7Q+5oiMUtLhQoHxSlJt3DmUPbl+1pMpuopOSG/MymdcruWOBQU90kSzo0lN+3gmSaEYCTw==" }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.0.0" } @@ -62,13 +59,12 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@glennsl/bs-json": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@glennsl/bs-json/-/bs-json-5.0.4.tgz", - "integrity": "sha512-Th9DetZjRlMZrb74kgGJ44oWcoFyOTE884WlSuXft0Cd+J09vHRxiB7eVyK7Gthb4cSevsBBJDHYAbGGL25wPw==" + "version": "5.0.2", + "resolved": "git+ssh://git@github.com/banacorn/bs-json.git#0c900d3ad5c06eb2e6513a677096f1ec0411d282", + "license": "(LGPL-3.0 OR MPL-2.0)" }, "node_modules/@glennsl/rescript-json-combinators": { "version": "1.3.0", @@ -83,7 +79,6 @@ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -98,7 +93,6 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -108,7 +102,6 @@ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -118,7 +111,6 @@ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -128,15 +120,13 @@ "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.20", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -147,7 +137,6 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -161,7 +150,6 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "license": "MIT", "engines": { "node": ">= 8" } @@ -171,7 +159,6 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -185,34 +172,17 @@ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", "dev": true, - "license": "ISC", "dependencies": { "@gar/promisify": "^1.0.1", "semver": "^7.3.5" } }, - "node_modules/@npmcli/fs/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@npmcli/move-file": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "deprecated": "This functionality has been moved to @npmcli/fs", "dev": true, - "license": "MIT", "dependencies": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" @@ -225,7 +195,6 @@ "version": "0.10.3", "resolved": "https://registry.npmjs.org/@rescript/react/-/react-0.10.3.tgz", "integrity": "sha512-Lf9rzrR3bQPKJjOK3PBRa/B3xrJ7CqQ1HYr9VHPVxJidarIJJFZBhj0Dg1uZURX+Wg/xiP0PHFxXmdj2bK8Vxw==", - "license": "MIT", "peerDependencies": { "react": ">=16.8.1", "react-dom": ">=16.8.1" @@ -236,7 +205,6 @@ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 6" } @@ -246,7 +214,6 @@ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.8.tgz", "integrity": "sha512-4K8GavROwhrYl2QXDXm0Rv9epkA8GBFu0EI+XrrnnuCl7u8CWBRusX7fXJfanhZTDWSAL24gDI/UqXyUM0Injw==", "dev": true, - "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -257,7 +224,6 @@ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, - "license": "MIT", "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -267,22 +233,19 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/node": { - "version": "20.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.2.tgz", - "integrity": "sha512-37MXfxkb0vuIlRKHNxwCkb60PNBpR94u4efQuN4JgIAm66zfCDXGSAFCef9XUWFovX2R1ok6Z7MHhtdVXXkkIw==", + "version": "20.10.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.3.tgz", + "integrity": "sha512-XJavIpZqiXID5Yxnxv3RUDKTN5b81ddNC3ecsA0SoFXz/QU8OGBwZGMomiq0zw+uuqbL/krztv/DINAQ/EV4gg==", "dev": true, - "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } @@ -292,7 +255,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -302,29 +264,25 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -335,15 +293,13 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -356,7 +312,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, - "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -366,7 +321,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } @@ -375,15 +329,13 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -400,7 +352,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", @@ -414,7 +365,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -427,7 +377,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -442,7 +391,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" @@ -453,7 +401,6 @@ "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", "dev": true, - "license": "MIT", "peerDependencies": { "webpack": "4.x.x || 5.x.x", "webpack-cli": "4.x.x" @@ -464,7 +411,6 @@ "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", "dev": true, - "license": "MIT", "dependencies": { "envinfo": "^7.7.3" }, @@ -477,7 +423,6 @@ "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", "dev": true, - "license": "MIT", "peerDependencies": { "webpack-cli": "4.x.x" }, @@ -491,22 +436,19 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, - "license": "BSD-3-Clause" + "dev": true }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true, - "license": "Apache-2.0" + "dev": true }, "node_modules/acorn": { "version": "8.11.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true, - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -519,7 +461,6 @@ "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, - "license": "MIT", "peerDependencies": { "acorn": "^8" } @@ -529,7 +470,6 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, - "license": "MIT", "dependencies": { "debug": "4" }, @@ -542,7 +482,6 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, - "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -556,7 +495,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -573,7 +511,6 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } @@ -583,7 +520,6 @@ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", "dev": true, - "license": "BSD-3-Clause OR MIT", "engines": { "node": ">=0.4.2" } @@ -658,7 +594,6 @@ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -706,8 +641,7 @@ "node_modules/async": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", - "license": "MIT" + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, "node_modules/available-typed-arrays": { "version": "1.0.5", @@ -724,14 +658,12 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/big-integer": { "version": "1.6.52", "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", - "license": "Unlicense", "engines": { "node": ">=0.6" } @@ -741,7 +673,6 @@ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, - "license": "MIT", "engines": { "node": "*" } @@ -750,10 +681,12 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", - "license": "MIT", "dependencies": { "buffers": "~0.1.1", "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" } }, "node_modules/binary-extensions": { @@ -768,14 +701,12 @@ "node_modules/bluebird": { "version": "3.4.7", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", - "license": "MIT" + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -786,7 +717,6 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, - "license": "MIT", "dependencies": { "fill-range": "^7.0.1" }, @@ -798,8 +728,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/browserslist": { "version": "4.22.2", @@ -820,7 +749,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "caniuse-lite": "^1.0.30001565", "electron-to-chromium": "^1.4.601", @@ -1152,6 +1080,21 @@ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true }, + "node_modules/bs-mocha/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/bs-mocha/node_modules/p-locate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", @@ -1220,6 +1163,18 @@ "node": ">=6" } }, + "node_modules/bs-mocha/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/bs-mocha/node_modules/wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", @@ -1287,7 +1242,6 @@ "resolved": "https://registry.npmjs.org/bs-platform/-/bs-platform-9.0.2.tgz", "integrity": "sha512-Ye9JqJ4Oa7mcjjoOVRYI8Uc2Cf8N7jQLWDcdUplY7996d/YErSR7WitmV7XnSwr4EvdrbwjEsg1NxNjUQv3ChA==", "hasInstallScript": true, - "license": "SEE LICENSE IN LICENSE", "bin": { "bsb": "bsb", "bsc": "bsc", @@ -1299,14 +1253,12 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/buffer-indexof-polyfill": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", - "license": "MIT", "engines": { "node": ">=0.10" } @@ -1324,7 +1276,6 @@ "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/fs": "^1.0.0", "@npmcli/move-file": "^1.0.1", @@ -1376,9 +1327,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001565", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001565.tgz", - "integrity": "sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w==", + "version": "1.0.30001566", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001566.tgz", + "integrity": "sha512-ggIhCsTxmITBAMmK8yZjEhCO5/47jKXPu6Dha/wuCS4JePVL+3uiDEBuhu2aIoT+bqTOR8L76Ip1ARL9xYsEJA==", "dev": true, "funding": [ { @@ -1393,16 +1344,17 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ], - "license": "CC-BY-4.0" + ] }, "node_modules/chainsaw": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", - "license": "MIT/X11", "dependencies": { "traverse": ">=0.3.0 <0.4" + }, + "engines": { + "node": "*" } }, "node_modules/chalk": { @@ -1465,7 +1417,6 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } @@ -1475,7 +1426,6 @@ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.0" } @@ -1485,7 +1435,6 @@ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -1506,7 +1455,6 @@ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, - "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -1538,44 +1486,38 @@ "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, - "license": "MIT", "engines": { - "node": ">= 10" + "node": ">= 12" } }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/compare-versions": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", - "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", - "license": "MIT" + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==" }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "license": "MIT" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/copy-anything": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", "dev": true, - "license": "MIT", "dependencies": { "is-what": "^3.14.1" }, @@ -1588,7 +1530,6 @@ "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.4.1.tgz", "integrity": "sha512-MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA==", "dev": true, - "license": "MIT", "dependencies": { "cacache": "^15.0.5", "fast-glob": "^3.2.4", @@ -1613,34 +1554,16 @@ "webpack": "^4.37.0 || ^5.0.0" } }, - "node_modules/copy-webpack-plugin/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "license": "MIT" + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -1650,28 +1573,11 @@ "node": ">= 8" } }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -1688,8 +1594,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/decamelize": { "version": "4.0.0", @@ -1748,7 +1653,6 @@ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, - "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -1766,7 +1670,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "license": "BSD-3-Clause", "dependencies": { "readable-stream": "^2.0.2" } @@ -1775,8 +1678,7 @@ "version": "1.4.601", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.601.tgz", "integrity": "sha512-SpwUMDWe9tQu8JX5QCO1+p/hChAi9AE9UpoC3rcHVc+gdCGlbT3SGb5I1klgb952HRIyvt9wZhSz9bNBYz9swA==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -1789,7 +1691,6 @@ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } @@ -1799,7 +1700,6 @@ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -1813,7 +1713,6 @@ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz", "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==", "dev": true, - "license": "MIT", "bin": { "envinfo": "dist/cli.js" }, @@ -1826,7 +1725,6 @@ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "prr": "~1.0.1" @@ -1916,8 +1814,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/es-set-tostringtag": { "version": "2.0.2", @@ -1955,7 +1852,6 @@ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -1977,7 +1873,6 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -2004,7 +1899,6 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -2017,7 +1911,6 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -2027,7 +1920,6 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -2035,15 +1927,13 @@ "node_modules/eventemitter3": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "license": "MIT" + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.x" } @@ -2052,22 +1942,19 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -2083,15 +1970,13 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/fastest-levenshtein": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4.9.1" } @@ -2101,7 +1986,6 @@ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, - "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -2111,7 +1995,6 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, - "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -2124,7 +2007,6 @@ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, - "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -2137,32 +2019,6 @@ "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/find-cache-dir/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -2202,7 +2058,6 @@ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -2213,8 +2068,7 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "license": "ISC" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.3", @@ -2234,7 +2088,6 @@ "version": "1.0.12", "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "license": "ISC", "dependencies": { "graceful-fs": "^4.1.2", "inherits": "~2.0.0", @@ -2249,7 +2102,6 @@ "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "license": "MIT", "dependencies": { "minimist": "^1.2.6" }, @@ -2261,7 +2113,6 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -2274,7 +2125,6 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2350,7 +2200,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", - "license": "MIT", "dependencies": { "async": "^3.2.0" } @@ -2359,7 +2208,6 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2380,7 +2228,6 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -2392,27 +2239,13 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } + "dev": true }, "node_modules/global": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", "dev": true, - "license": "MIT", "dependencies": { "min-document": "^2.19.0", "process": "^0.11.10" @@ -2438,7 +2271,6 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, - "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -2469,8 +2301,7 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/growl": { "version": "1.10.5", @@ -2555,7 +2386,6 @@ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, - "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -2568,7 +2398,6 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, - "license": "MIT", "bin": { "he": "bin/he" } @@ -2578,7 +2407,6 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, - "license": "MIT", "dependencies": { "@tootallnate/once": "1", "agent-base": "6", @@ -2593,7 +2421,6 @@ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, - "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -2607,7 +2434,6 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -2621,7 +2447,6 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } @@ -2631,7 +2456,6 @@ "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", "dev": true, - "license": "MIT", "optional": true, "bin": { "image-size": "bin/image-size.js" @@ -2645,7 +2469,6 @@ "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, - "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -2665,7 +2488,6 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -2675,7 +2497,6 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -2684,14 +2505,12 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -2700,8 +2519,7 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/internal-slot": { "version": "1.0.6", @@ -2718,11 +2536,10 @@ } }, "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.10" } @@ -2821,7 +2638,6 @@ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, - "license": "MIT", "dependencies": { "hasown": "^2.0.0" }, @@ -2849,7 +2665,6 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2868,7 +2683,6 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -2893,7 +2707,6 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -2927,7 +2740,6 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, - "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -3036,28 +2848,24 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT" + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3067,7 +2875,6 @@ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -3080,8 +2887,7 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "license": "MIT" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "4.1.0", @@ -3099,22 +2905,19 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -3127,7 +2930,6 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3137,7 +2939,6 @@ "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 8" } @@ -3154,23 +2955,16 @@ "vscode-languageclient": "^8.0.0" } }, - "node_modules/language-server-mule/node_modules/@glennsl/bs-json": { - "version": "5.0.2", - "resolved": "git+ssh://git@github.com/banacorn/bs-json.git#0c900d3ad5c06eb2e6513a677096f1ec0411d282", - "license": "(LGPL-3.0 OR MPL-2.0)" - }, "node_modules/language-server-mule/node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "license": "MIT" + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" }, "node_modules/less": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "copy-anything": "^2.0.1", "parse-node-version": "^1.0.1", @@ -3197,7 +2991,6 @@ "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-7.3.0.tgz", "integrity": "sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==", "dev": true, - "license": "MIT", "dependencies": { "klona": "^2.0.4", "loader-utils": "^2.0.0", @@ -3220,7 +3013,6 @@ "resolved": "https://registry.npmjs.org/less-watch-compiler/-/less-watch-compiler-1.16.3.tgz", "integrity": "sha512-cxGUt8YdPpPPB72w1dfzPVXML5JYgfExXbFvDfG5XBU9qvj6uVjwTY2qOgwvf09Au5p2RvmWVcNps/cMTojJNQ==", "dev": true, - "license": "MIT", "dependencies": { "amdefine": ">= 0.1.0", "commander": "^8.0.0", @@ -3233,28 +3025,40 @@ "less-watch-compiler": "dist/less-watch-compiler.js" } }, - "node_modules/less-watch-compiler/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, - "license": "MIT", + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, "engines": { - "node": ">= 12" + "node": ">=6" + } + }, + "node_modules/less/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" } }, "node_modules/listenercount": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==", - "license": "ISC" + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.11.5" } @@ -3264,7 +3068,6 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, - "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -3315,7 +3118,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -3327,7 +3129,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -3336,33 +3137,40 @@ } }, "node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, - "license": "MIT", - "optional": true, "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "semver": "^6.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" } }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 8" } @@ -3372,7 +3180,6 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, - "license": "MIT", "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -3386,7 +3193,6 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, - "license": "MIT", "optional": true, "bin": { "mime": "cli.js" @@ -3400,7 +3206,6 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -3410,7 +3215,6 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, - "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -3428,31 +3232,20 @@ } }, "node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=10" - } - }, - "node_modules/minimatch/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "node": "*" } }, "node_modules/minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -3462,7 +3255,6 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -3475,7 +3267,6 @@ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -3488,7 +3279,6 @@ "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -3501,7 +3291,6 @@ "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -3514,7 +3303,6 @@ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, - "license": "MIT", "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -3528,7 +3316,6 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -3608,6 +3395,27 @@ "node": "*" } }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/mocha/node_modules/serialize-javascript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", @@ -3640,7 +3448,6 @@ "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "debug": "^3.2.6", @@ -3659,7 +3466,6 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "ms": "^2.1.1" @@ -3669,8 +3475,7 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/node-environment-flags": { "version": "1.0.5", @@ -3682,19 +3487,26 @@ "semver": "^5.7.0" } }, + "node_modules/node-environment-flags/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/node-releases": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3703,7 +3515,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3764,22 +3575,20 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3800,27 +3609,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, - "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -3836,7 +3629,6 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -3846,7 +3638,6 @@ "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.10" } @@ -3864,7 +3655,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3874,7 +3664,6 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -3883,15 +3672,13 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -3900,15 +3687,13 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.6" }, @@ -3921,7 +3706,6 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, - "license": "MIT", "optional": true, "engines": { "node": ">=6" @@ -3932,7 +3716,6 @@ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -3945,7 +3728,6 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -3959,7 +3741,6 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -3967,12 +3748,26 @@ "node": ">=8" } }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/pkg-dir/node_modules/p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -3985,7 +3780,6 @@ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6.0" } @@ -3993,21 +3787,18 @@ "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "license": "MIT" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -4019,7 +3810,6 @@ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true, - "license": "MIT", "optional": true }, "node_modules/punycode": { @@ -4027,7 +3817,6 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -4050,45 +3839,21 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } }, - "node_modules/randombytes/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, "node_modules/react": { "version": "16.14.0", "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -4102,7 +3867,6 @@ "version": "16.14.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -4116,14 +3880,12 @@ "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -4134,6 +3896,11 @@ "util-deprecate": "~1.0.1" } }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -4149,17 +3916,15 @@ "node_modules/reason-promise": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/reason-promise/-/reason-promise-1.1.5.tgz", - "integrity": "sha512-T4VI8e3WrQ30HbQcmQ8HvJPZckD4AeTcZ+1aNdpJ/pjjRwjlBy63hr4v8fMSID0/6kPh1KrhN+5+4n7MouoZKQ==", - "license": "MIT" + "integrity": "sha512-T4VI8e3WrQ30HbQcmQ8HvJPZckD4AeTcZ+1aNdpJ/pjjRwjlBy63hr4v8fMSID0/6kPh1KrhN+5+4n7MouoZKQ==" }, "node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dev": true, - "license": "MIT", "dependencies": { - "resolve": "^1.9.0" + "resolve": "^1.1.6" }, "engines": { "node": ">= 0.10" @@ -4202,7 +3967,6 @@ "resolved": "https://registry.npmjs.org/rescript/-/rescript-10.1.4.tgz", "integrity": "sha512-FFKlS9AG/XrLepWsyw7B+A9DtQBPWEPDPDKghV831Y2KGbie+eeFBOS0xtRHp0xbt7S0N2Dm6hhX+kTZQ/3Ybg==", "hasInstallScript": true, - "license": "SEE LICENSE IN LICENSE", "bin": { "bsc": "bsc", "bsrefmt": "bsrefmt", @@ -4213,8 +3977,7 @@ "node_modules/rescript-nodejs": { "version": "15.0.0", "resolved": "https://registry.npmjs.org/rescript-nodejs/-/rescript-nodejs-15.0.0.tgz", - "integrity": "sha512-VvvM8/lI90Dfu0x4886NyINbUcBBx8F6hmftH9UaMjUgYIPfsdVopG3d30OzcbroiOKySgo4wwVNEmtYDZs+nw==", - "license": "MIT" + "integrity": "sha512-VvvM8/lI90Dfu0x4886NyINbUcBBx8F6hmftH9UaMjUgYIPfsdVopG3d30OzcbroiOKySgo4wwVNEmtYDZs+nw==" }, "node_modules/rescript-vscode": { "version": "0.0.17", @@ -4228,15 +3991,13 @@ "node_modules/rescript-webapi": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/rescript-webapi/-/rescript-webapi-0.9.0.tgz", - "integrity": "sha512-Q6I0OqaboCT2Z9VMXYM6pjzYKJani8NEiD6e9TFzRqb2nPjO2I0p4FG/8ZkYRr2JZlgTF/VsMQGuQ7+buHAbDg==", - "license": "MIT" + "integrity": "sha512-Q6I0OqaboCT2Z9VMXYM6pjzYKJani8NEiD6e9TFzRqb2nPjO2I0p4FG/8ZkYRr2JZlgTF/VsMQGuQ7+buHAbDg==" }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, - "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -4254,7 +4015,6 @@ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, - "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" }, @@ -4267,7 +4027,6 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -4277,7 +4036,6 @@ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, - "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -4288,7 +4046,6 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -4318,7 +4075,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -4348,10 +4104,24 @@ "dev": true }, "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/safe-regex-test": { "version": "1.0.0", @@ -4372,7 +4142,6 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, - "license": "MIT", "optional": true }, "node_modules/sax": { @@ -4380,14 +4149,12 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", "dev": true, - "license": "ISC", "optional": true }, "node_modules/scheduler": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -4398,7 +4165,6 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -4413,13 +4179,17 @@ } }, "node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/serialize-javascript": { @@ -4427,7 +4197,6 @@ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -4470,15 +4239,13 @@ "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "license": "MIT" + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, - "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -4491,7 +4258,6 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -4504,7 +4270,6 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -4514,7 +4279,6 @@ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -4527,28 +4291,6 @@ "node": ">=4" } }, - "node_modules/shelljs/node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/shelljs/node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -4568,7 +4310,6 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -4577,15 +4318,13 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -4595,7 +4334,6 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -4612,7 +4350,6 @@ "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.1.1" }, @@ -4624,11 +4361,15 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -4732,7 +4473,6 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4745,7 +4485,6 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -4755,7 +4494,6 @@ "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", "dev": true, - "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -4773,7 +4511,6 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=8" } @@ -4783,7 +4520,6 @@ "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz", "integrity": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -4802,7 +4538,6 @@ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", @@ -4837,7 +4572,6 @@ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -4846,15 +4580,13 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -4866,14 +4598,15 @@ "version": "0.3.9", "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", - "license": "MIT/X11" + "engines": { + "node": "*" + } }, "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true, - "license": "0BSD" + "dev": true }, "node_modules/typed-array-buffer": { "version": "1.0.0", @@ -4959,15 +4692,13 @@ "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "dev": true, - "license": "ISC", "dependencies": { "unique-slug": "^2.0.0" } @@ -4977,7 +4708,6 @@ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" } @@ -4986,7 +4716,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "license": "MIT", "engines": { "node": ">=8" } @@ -4995,7 +4724,6 @@ "version": "0.10.14", "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz", "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", - "license": "MIT", "dependencies": { "big-integer": "^1.6.17", "binary": "~0.3.0", @@ -5028,7 +4756,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -5045,7 +4772,6 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -5053,19 +4779,18 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/vscode-codicons": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/vscode-codicons/-/vscode-codicons-0.0.7.tgz", - "integrity": "sha512-xqYypi4Ihth3bZgoE6961FYJBrmFErC+YouSC5Tn0pHqv0QSrP0PK++EIVNBi0I9Ted1OetZ3aWlNUWq1QaMBA==" + "integrity": "sha512-xqYypi4Ihth3bZgoE6961FYJBrmFErC+YouSC5Tn0pHqv0QSrP0PK++EIVNBi0I9Ted1OetZ3aWlNUWq1QaMBA==", + "deprecated": "This package is deprecated, please use @vscode/codicons https://www.npmjs.com/package/@vscode/codicons" }, "node_modules/vscode-jsonrpc": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz", "integrity": "sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==", - "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -5074,7 +4799,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.1.0.tgz", "integrity": "sha512-GL4QdbYUF/XxQlAsvYWZRV3V34kOkpRlvV60/72ghHfsYFnS/v2MANZ9P6sHmxFcZKOse8O+L9G7Czg0NUWing==", - "license": "MIT", "dependencies": { "minimatch": "^5.1.0", "semver": "^7.3.7", @@ -5088,7 +4812,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -5097,7 +4820,6 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -5105,26 +4827,10 @@ "node": ">=10" } }, - "node_modules/vscode-languageclient/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/vscode-languageserver-protocol": { "version": "3.17.3", "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz", "integrity": "sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==", - "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", "vscode-languageserver-types": "3.17.3" @@ -5133,15 +4839,14 @@ "node_modules/vscode-languageserver-types": { "version": "3.17.3", "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz", - "integrity": "sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==", - "license": "MIT" + "integrity": "sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==" }, "node_modules/vscode-test": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-1.6.1.tgz", "integrity": "sha512-086q88T2ca1k95mUzffvbzb7esqQNvJgiwY4h29ukPhFo8u+vXOOmelUoU5EQUHs3Of8+JuQ3oGdbVCqaxuTXA==", + "deprecated": "This package has been renamed to @vscode/test-electron, please update to the new name", "dev": true, - "license": "MIT", "dependencies": { "http-proxy-agent": "^4.0.1", "https-proxy-agent": "^5.0.0", @@ -5157,7 +4862,6 @@ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, - "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -5171,7 +4875,6 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", "dev": true, - "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.0", @@ -5219,7 +4922,6 @@ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", "dev": true, - "license": "MIT", "dependencies": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^1.2.0", @@ -5262,12 +4964,41 @@ } } }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-cli/node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/webpack-cli/node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/webpack-merge": { "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", "dev": true, - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -5282,7 +5013,6 @@ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, - "license": "MIT", "dependencies": { "source-list-map": "^2.0.0", "source-map": "~0.6.1" @@ -5293,21 +5023,23 @@ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.13.0" } }, "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { "isexe": "^2.0.0" }, "bin": { - "which": "bin/which" + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, "node_modules/which-boxed-primitive": { @@ -5407,8 +5139,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/workerpool": { "version": "6.2.1", @@ -5436,8 +5167,7 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/y18n": { "version": "5.0.8", @@ -5451,8 +5181,7 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yargs": { "version": "16.2.0", @@ -5501,7 +5230,6 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, diff --git a/package.json b/package.json index 44e9774e..0fae295c 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,6 @@ }, "dependencies": { "@datastructures-js/binary-search-tree": "^4.3.0", - "@glennsl/bs-json": "^5.0.4", "@glennsl/rescript-json-combinators": "^1.3.0", "@rescript/react": "^0.10.3", "compare-versions": "^3.5.1", diff --git a/src/Connection/LSP/Connection__LSP.res b/src/Connection/LSP/Connection__LSP.res index 40412428..65771778 100644 --- a/src/Connection/LSP/Connection__LSP.res +++ b/src/Connection/LSP/Connection__LSP.res @@ -27,7 +27,7 @@ module CommandRes = { let decode = { open JsonCombinators.Json.Decode - Util.Decode.sum_(x => + Util.Decode.sum(x => switch x { | "CmdResACK" => Payload(string->map((. version) => ACK(version))) | "CmdRes" => @@ -51,103 +51,47 @@ module LSPResponse = { | Time(string) | NormalForm(string) - // let decode = { - // open JsonCombinators.Json.Decode - // Util.Decode.sum_(x => - // switch x { - // | "DisplayInfoGeneric" => - // Payload( - // pair(string, array(Item.decode))->map((. (header, itmes)) => Generic(header, itmes)), - // ) - // | "DisplayInfoAllGoalsWarnings" => - // Payload( - // tuple5( - // string, - // array(Item.decode), - // array(Item.decode), - // array(string), - // array(string), - // )->map((. (header, goals, metas, warnings, errors)) => AllGoalsWarnings( - // header, - // goals, - // metas, - // warnings, - // errors, - // )), - // ) - // | "DisplayInfoCurrentGoal" => Payload(Item.decode->map((. body) => CurrentGoal(body))) - // | "DisplayInfoInferredType" => Payload(Item.decode->map((. body) => InferredType(body))) - // | "DisplayInfoCompilationOk" => - // Payload( - // pair(array(string), array(string))->map((. (warnings, errors)) => CompilationOk( - // warnings, - // errors, - // )), - // ) - // | "DisplayInfoAuto" => Payload(string->map((. body) => Auto(body))) - // | "DisplayInfoError" => Payload(string->map((. body) => Error'(body))) - // | "DisplayInfoTime" => Payload(string->map((. body) => Time(body))) - // | "DisplayInfoNormalForm" => Payload(string->map((. body) => NormalForm(body))) - // | tag => raise(DecodeError("[LSP.DisplayInfo] Unknown constructor: " ++ tag)) - // } - // ) - // } - - open Json.Decode - open Util.Decode - let decode: decoder = sum(x => - switch x { - | "DisplayInfoGeneric" => - Contents( - pair( - string, - array(Util.Decode.convert("Item.decode in DisplayInfoGeneric", Item.decode)), - ) |> map(((header, itmes)) => Generic(header, itmes)), - ) - | "DisplayInfoAllGoalsWarnings" => - Contents( - tuple5( - string, - array(Util.Decode.convert("Item.decode in DisplayInfoAllGoalsWarnings", Item.decode)), - array(Util.Decode.convert("Item.decode in DisplayInfoAllGoalsWarnings", Item.decode)), - array(string), - array(string), - ) |> map(((header, goals, metas, warnings, errors)) => AllGoalsWarnings( - header, - goals, - metas, - warnings, - errors, - )), - ) - | "DisplayInfoCurrentGoal" => - Contents( - Util.Decode.convert( - "Item.decode in DisplayInfoCurrentGoal", - Item.decode, - ) |> map(body => CurrentGoal(body)), - ) - | "DisplayInfoInferredType" => - Contents( - Util.Decode.convert( - "Item.decode in DisplayInfoInferredType", - Item.decode, - ) |> map(body => InferredType(body)), - ) - | "DisplayInfoCompilationOk" => - Contents( - pair(array(string), array(string)) |> map(((warnings, errors)) => CompilationOk( - warnings, - errors, - )), - ) - | "DisplayInfoAuto" => Contents(string |> map(body => Auto(body))) - | "DisplayInfoError" => Contents(string |> map(body => Error'(body))) - | "DisplayInfoTime" => Contents(string |> map(body => Time(body))) - | "DisplayInfoNormalForm" => Contents(string |> map(body => NormalForm(body))) - | tag => raise(DecodeError("[LSP.DisplayInfo] Unknown constructor: " ++ tag)) - } - ) + let decode = { + open JsonCombinators.Json.Decode + Util.Decode.sum(x => + switch x { + | "DisplayInfoGeneric" => + Payload( + pair(string, array(Item.decode))->map((. (header, itmes)) => Generic(header, itmes)), + ) + | "DisplayInfoAllGoalsWarnings" => + Payload( + Util.Decode.tuple5( + string, + array(Item.decode), + array(Item.decode), + array(string), + array(string), + )->map((. (header, goals, metas, warnings, errors)) => AllGoalsWarnings( + header, + goals, + metas, + warnings, + errors, + )), + ) + | "DisplayInfoCurrentGoal" => Payload(Item.decode->map((. body) => CurrentGoal(body))) + | "DisplayInfoInferredType" => Payload(Item.decode->map((. body) => InferredType(body))) + | "DisplayInfoCompilationOk" => + Payload( + pair(array(string), array(string))->map((. (warnings, errors)) => CompilationOk( + warnings, + errors, + )), + ) + | "DisplayInfoAuto" => Payload(string->map((. body) => Auto(body))) + | "DisplayInfoError" => Payload(string->map((. body) => Error'(body))) + | "DisplayInfoTime" => Payload(string->map((. body) => Time(body))) + | "DisplayInfoNormalForm" => Payload(string->map((. body) => NormalForm(body))) + | tag => raise(DecodeError("[LSP.DisplayInfo] Unknown constructor: " ++ tag)) + } + ) + } } type t = @@ -164,100 +108,100 @@ module LSPResponse = { | ResponseEnd => "========" } - open Json.Decode - open Util.Decode - let decode: decoder = sum(x => - switch x { - | "ResponseHighlightingInfoDirect" => - Contents( - Util.Decode.convert( - "Tokens.Token.decodeResponseHighlightingInfoDirect in LSPResponse", - Tokens.Token.decodeResponseHighlightingInfoDirect, - ) |> map(((keepHighlighting, infos)) => { - ResponseNonLast(Response.HighlightingInfoDirect(keepHighlighting, infos)) - }), - ) - | "ResponseHighlightingInfoIndirect" => - Contents( - string |> map(filePath => ResponseNonLast(Response.HighlightingInfoIndirectJSON(filePath))), - ) - | "ResponseDisplayInfo" => - open DisplayInfo - Contents( - DisplayInfo.decode |> map(info => - switch info { - | Generic(header, body) => ResponseNonLast(DisplayInfo(Generic(header, body))) - | AllGoalsWarnings(header, goals, metas, warnings, errors) => - ResponseNonLast( - Response.DisplayInfo(AllGoalsWarningsLSP(header, goals, metas, warnings, errors)), - ) - | CurrentGoal(item) => ResponseNonLast(Response.DisplayInfo(CurrentGoalLSP(item))) - | InferredType(item) => ResponseNonLast(Response.DisplayInfo(InferredTypeLSP(item))) - | CompilationOk(warnings, errors) => - ResponseNonLast(Response.DisplayInfo(CompilationOkLSP(warnings, errors))) - | Auto(body) => ResponseNonLast(Response.DisplayInfo(Auto(body))) - | Error'(body) => ResponseNonLast(Response.DisplayInfo(Error(body))) - | Time(body) => ResponseNonLast(Response.DisplayInfo(Time(body))) - | NormalForm(body) => ResponseNonLast(Response.DisplayInfo(NormalForm(body))) - } - ), - ) - | "ResponseStatus" => - Contents( - pair(bool, bool) |> map(((checked, displayImplicit)) => ResponseNonLast( - Response.Status(checked, displayImplicit), - )), - ) - | "ResponseRunningInfo" => - Contents( - pair(int, string) |> map(((verbosity, info)) => ResponseNonLast( - Response.RunningInfo(verbosity, info), - )), - ) - | "ResponseClearHighlightingTokenBased" => TagOnly(ResponseNonLast(Response.ClearHighlighting)) - | "ResponseClearHighlightingNotOnlyTokenBased" => - TagOnly(ResponseNonLast(Response.ClearHighlighting)) - | "ResponseClearRunningInfo" => TagOnly(ResponseNonLast(Response.ClearRunningInfo)) - | "ResponseDoneAborting" => TagOnly(ResponseNonLast(Response.DoneAborting)) - | "ResponseDoneExiting" => TagOnly(ResponseNonLast(Response.DoneExiting)) - | "ResponseGiveAction" => - Contents( - pair( - int, - Util.Decode.convert( - "Response.GiveAction.decode in ResponseGiveAction", - Response.GiveAction.decode, + let decode = { + open JsonCombinators.Json.Decode + Util.Decode.sum(x => + switch x { + | "ResponseHighlightingInfoDirect" => + Payload( + Tokens.Token.decodeResponseHighlightingInfoDirect->map((. ( + keepHighlighting, + infos, + )) => ResponseNonLast(Response.HighlightingInfoDirect(keepHighlighting, infos))), + ) + | "ResponseHighlightingInfoIndirect" => + Payload( + string->map((. filePath) => ResponseNonLast( + Response.HighlightingInfoIndirectJSON(filePath), + )), + ) + | "ResponseDisplayInfo" => + Payload( + DisplayInfo.decode->map((. info) => + switch info { + | Generic(header, body) => ResponseNonLast(DisplayInfo(Generic(header, body))) + | AllGoalsWarnings(header, goals, metas, warnings, errors) => + ResponseNonLast( + Response.DisplayInfo(AllGoalsWarningsLSP(header, goals, metas, warnings, errors)), + ) + | CurrentGoal(item) => ResponseNonLast(Response.DisplayInfo(CurrentGoalLSP(item))) + | InferredType(item) => ResponseNonLast(Response.DisplayInfo(InferredTypeLSP(item))) + | CompilationOk(warnings, errors) => + ResponseNonLast(Response.DisplayInfo(CompilationOkLSP(warnings, errors))) + | Auto(body) => ResponseNonLast(Response.DisplayInfo(Auto(body))) + | Error'(body) => ResponseNonLast(Response.DisplayInfo(Error(body))) + | Time(body) => ResponseNonLast(Response.DisplayInfo(Time(body))) + | NormalForm(body) => ResponseNonLast(Response.DisplayInfo(NormalForm(body))) + } ), - ) |> map(((id, giveAction)) => ResponseNonLast(Response.GiveAction(id, giveAction))), - ) - | "ResponseInteractionPoints" => - Contents(array(int) |> map(ids => ResponseLast(1, InteractionPoints(ids)))) - | "ResponseMakeCaseFunction" => - Contents( - array(string) |> map(payload => ResponseLast(2, Response.MakeCase(Function, payload))), - ) - | "ResponseMakeCaseExtendedLambda" => - Contents( - array(string) |> map(payload => ResponseLast( - 2, - Response.MakeCase(ExtendedLambda, payload), - )), - ) - | "ResponseSolveAll" => - Contents( - array(pair(int, string)) |> map(payloads => ResponseLast(2, Response.SolveAll(payloads))), - ) - | "ResponseJumpToError" => - Contents( - pair(string, int) |> map(((filePath, offset)) => ResponseLast( - 3, - Response.JumpToError(filePath, offset), - )), - ) - | "ResponseEnd" => TagOnly(ResponseEnd) - | tag => raise(DecodeError("[LSP.Response] Unknown constructor: " ++ tag)) - } - ) + ) + | "ResponseStatus" => + Payload( + pair(bool, bool)->map((. (checked, displayImplicit)) => ResponseNonLast( + Response.Status(checked, displayImplicit), + )), + ) + | "ResponseRunningInfo" => + Payload( + pair(int, string)->map((. (verbosity, info)) => ResponseNonLast( + Response.RunningInfo(verbosity, info), + )), + ) + | "ResponseClearHighlightingTokenBased" => + TagOnly(ResponseNonLast(Response.ClearHighlighting)) + | "ResponseClearHighlightingNotOnlyTokenBased" => + TagOnly(ResponseNonLast(Response.ClearHighlighting)) + | "ResponseClearRunningInfo" => TagOnly(ResponseNonLast(Response.ClearRunningInfo)) + | "ResponseDoneAborting" => TagOnly(ResponseNonLast(Response.DoneAborting)) + | "ResponseDoneExiting" => TagOnly(ResponseNonLast(Response.DoneExiting)) + | "ResponseGiveAction" => + Payload( + pair(int, Response.GiveAction.decode)->map((. (id, giveAction)) => ResponseNonLast( + Response.GiveAction(id, giveAction), + )), + ) + | "ResponseInteractionPoints" => + Payload(array(int)->map((. ids) => ResponseLast(1, InteractionPoints(ids)))) + | "ResponseMakeCaseFunction" => + Payload( + array(string)->map((. payload) => ResponseLast(2, Response.MakeCase(Function, payload))), + ) + | "ResponseMakeCaseExtendedLambda" => + Payload( + array(string)->map((. payload) => ResponseLast( + 2, + Response.MakeCase(ExtendedLambda, payload), + )), + ) + | "ResponseSolveAll" => + Payload( + array(pair(int, string))->map((. payloads) => ResponseLast( + 2, + Response.SolveAll(payloads), + )), + ) + | "ResponseJumpToError" => + Payload( + pair(string, int)->map((. (filePath, offset)) => ResponseLast( + 3, + Response.JumpToError(filePath, offset), + )), + ) + | "ResponseEnd" => TagOnly(ResponseEnd) + | tag => raise(DecodeError("[LSP.Response] Unknown constructor: " ++ tag)) + } + ) + } } module type Module = { @@ -292,10 +236,9 @@ module Module: Module = { } let decodeResponse = (json: Js.Json.t): result => - switch LSPResponse.decode(json) { - | reaction => Ok(reaction) - | exception Util.Decode.TempDecodeError(_, msg, _) => Error(CannotDecodeResponse(msg, json)) - | exception Json.Decode.DecodeError(msg) => Error(CannotDecodeResponse(msg, json)) + switch JsonCombinators.Json.decode(json, LSPResponse.decode) { + | Ok(reaction) => Ok(reaction) + | Error(msg) => Error(CannotDecodeResponse(msg, json)) } let sendRequestPrim = (client, request): Promise.t> => { diff --git a/src/Connection/LSP/Connection__LSP__Error.res b/src/Connection/LSP/Connection__LSP__Error.res index bfa82111..3e4e7c41 100644 --- a/src/Connection/LSP/Connection__LSP__Error.res +++ b/src/Connection/LSP/Connection__LSP__Error.res @@ -15,7 +15,7 @@ module CommandErr = { let decode = { open JsonCombinators.Json.Decode - Util.Decode.sum_(x => { + Util.Decode.sum(x => { switch x { | "CmdErrCannotDecodeJSON" => Payload(string->map((. version) => CannotDecodeJSON(version))) | "CmdErrCannotParseCommand" => diff --git a/src/Response.res b/src/Response.res index 01b3341f..9095c924 100644 --- a/src/Response.res +++ b/src/Response.res @@ -13,7 +13,7 @@ module GiveAction = { let decode = { open JsonCombinators.Json.Decode - Util.Decode.sum_(x => { + Util.Decode.sum(x => { switch x { | "GiveString" => Payload(string->map((. s) => GiveString(s))) | "GiveParen" => TagOnly(GiveParen) diff --git a/src/Tokens.res b/src/Tokens.res index a01937fa..149ca10f 100644 --- a/src/Tokens.res +++ b/src/Tokens.res @@ -81,7 +81,7 @@ module Token = { // from JSON let decodeToken = { open JsonCombinators.Json.Decode - Util.Decode.tuple6_( + Util.Decode.tuple6( int, int, array(string), diff --git a/src/Util/Util.res b/src/Util/Util.res index fe85011d..c31333de 100644 --- a/src/Util/Util.res +++ b/src/Util/Util.res @@ -11,21 +11,12 @@ module Result = { exception Error(string) module Decode = { - exception TempDecodeError(string, string, Js.Json.t) - let convert = (label, translation, json) => - switch json->JsonCombinators.Json.decode(translation) { - | Ok(translation) => translation - | Error(err) => - Js.log(err) - raise(TempDecodeError(label, err, json)) - } - + open JsonCombinators.Json.Decode type fieldType_<'a> = - | Payload(JsonCombinators.Json.Decode.t<'a>) + | Payload(t<'a>) | TagOnly('a) - let sum_ = decoder => { - open JsonCombinators.Json.Decode + let sum = decoder => { field("tag", string)->flatMap((. tag) => switch decoder(tag) { | Payload(d) => field("contents", d) @@ -34,18 +25,17 @@ module Decode = { ) } - let tuple6_ = (decodeA, decodeB, decodeC, decodeD, decodeE, decodeF) => { - open JsonCombinators.Json.Decode + let tuple5 = (decodeA, decodeB, decodeC, decodeD, decodeE) => { custom((. json) => { if !Js.Array.isArray(json) { Error.expected("array", json) } let arr: array = Obj.magic(json) - if Array.length(arr) != 6 { + if Array.length(arr) != 5 { raise( DecodeError( - `Expected array of length 6, got array of length ${Array.length(arr)->string_of_int}`, + `Expected array of length 5, got array of length ${Array.length(arr)->string_of_int}`, ), ) } @@ -60,33 +50,29 @@ module Decode = { | None => raise(DecodeError("Unable to get index " ++ string_of_int(i))) } - // arr[0]->Option.flatMap(x => decode(x, decodeA)) - try ( run(decodeA, arr, 0), run(decodeB, arr, 1), run(decodeC, arr, 2), run(decodeD, arr, 3), run(decodeE, arr, 4), - run(decodeF, arr, 5), ) catch { - | DecodeError(msg) => raise(DecodeError(`${msg}\n\tin tuple6`)) + | DecodeError(msg) => raise(DecodeError(`${msg}\n\tin tuple5`)) } }) } - let tuple5_ = (decodeA, decodeB, decodeC, decodeD, decodeE) => { - open JsonCombinators.Json.Decode + let tuple6 = (decodeA, decodeB, decodeC, decodeD, decodeE, decodeF) => { custom((. json) => { if !Js.Array.isArray(json) { Error.expected("array", json) } let arr: array = Obj.magic(json) - if Array.length(arr) != 5 { + if Array.length(arr) != 6 { raise( DecodeError( - `Expected array of length 5, got array of length ${Array.length(arr)->string_of_int}`, + `Expected array of length 6, got array of length ${Array.length(arr)->string_of_int}`, ), ) } @@ -101,88 +87,18 @@ module Decode = { | None => raise(DecodeError("Unable to get index " ++ string_of_int(i))) } - // arr[0]->Option.flatMap(x => decode(x, decodeA)) - try ( run(decodeA, arr, 0), run(decodeB, arr, 1), run(decodeC, arr, 2), run(decodeD, arr, 3), run(decodeE, arr, 4), + run(decodeF, arr, 5), ) catch { - | DecodeError(msg) => raise(DecodeError(`${msg}\n\tin tuple5`)) + | DecodeError(msg) => raise(DecodeError(`${msg}\n\tin tuple6`)) } }) } - - open Json.Decode - - type fieldType<'a> = - | Contents(decoder<'a>) - | TagOnly('a) - - let sum = decoder => - field("tag", string) |> andThen(tag => - switch decoder(tag) { - | Contents(d) => field("contents", d) - | TagOnly(d) => _ => d - } - ) - - let maybe: decoder<'a> => decoder> = decoder => - sum(x => - switch x { - | "Just" => Contents(json => Some(decoder(json))) - | _ => TagOnly(None) - } - ) - - let tuple5 = (decodeA, decodeB, decodeC, decodeD, decodeE, json) => - if Js.Array.isArray(json) { - let source: array = Obj.magic((json: Js.Json.t)) - let length = Js.Array.length(source) - if length == 5 { - try ( - decodeA(Js.Array.unsafe_get(source, 0)), - decodeB(Js.Array.unsafe_get(source, 1)), - decodeC(Js.Array.unsafe_get(source, 2)), - decodeD(Js.Array.unsafe_get(source, 3)), - decodeE(Js.Array.unsafe_get(source, 4)), - ) catch { - | DecodeError(msg) => raise(DecodeError(msg ++ "\n\tin tuple5")) - } - } else { - raise( - DecodeError(`Expected array of length 5, got array of length ${Int.toString(length)}`), - ) - } - } else { - raise(DecodeError("Expected array, got " ++ Js.Json.stringify(json))) - } - - let tuple6 = (decodeA, decodeB, decodeC, decodeD, decodeE, decodeF, json) => - if Js.Array.isArray(json) { - let source: array = Obj.magic((json: Js.Json.t)) - let length = Js.Array.length(source) - if length == 6 { - try ( - decodeA(Js.Array.unsafe_get(source, 0)), - decodeB(Js.Array.unsafe_get(source, 1)), - decodeC(Js.Array.unsafe_get(source, 2)), - decodeD(Js.Array.unsafe_get(source, 3)), - decodeE(Js.Array.unsafe_get(source, 4)), - decodeF(Js.Array.unsafe_get(source, 5)), - ) catch { - | DecodeError(msg) => raise(DecodeError(msg ++ "\n\tin tuple6")) - } - } else { - raise( - DecodeError(`Expected array of length 6, got array of length ${Int.toString(length)}`), - ) - } - } else { - raise(DecodeError("Expected array, got " ++ Js.Json.stringify(json))) - } } module Encode = { diff --git a/src/View/Common.res b/src/View/Common.res index f4e19d2f..09a13bca 100644 --- a/src/View/Common.res +++ b/src/View/Common.res @@ -276,7 +276,7 @@ module AgdaRange = { let decode = { open JsonCombinators.Json.Decode - Util.Decode.sum_(x => { + Util.Decode.sum(x => { switch x { | "Range" => Payload( diff --git a/src/View/Component/Item.res b/src/View/Component/Item.res index 0154cb98..ee9f6ef5 100644 --- a/src/View/Component/Item.res +++ b/src/View/Component/Item.res @@ -63,12 +63,13 @@ let make = (~item: t) => { let decode = { open! JsonCombinators.Json.Decode - Util.Decode.sum_(x => + Util.Decode.sum(x => switch x { | "Labeled" => Payload( - Util.Decode.tuple5_( - RichText.decode, option(string), + Util.Decode.tuple5( + RichText.decode, + option(string), JsonCombinators.Json.Decode.option(Common.AgdaRange.decode), string, string, @@ -96,7 +97,8 @@ let encode = { Payload(( "Labeled", Util.Encode.tuple5( - RichText.encode, option(string), + RichText.encode, + option(string), option(Common.AgdaRange.encode), string, string, diff --git a/src/View/Component/Link.res b/src/View/Component/Link.res index 543297b6..64c2bddf 100644 --- a/src/View/Component/Link.res +++ b/src/View/Component/Link.res @@ -12,7 +12,7 @@ let toString = x => let decode = { open JsonCombinators.Json.Decode - Util.Decode.sum_(x => { + Util.Decode.sum(x => { switch x { | "LinkRange" => Payload(AgdaRange.decode->map((. range) => SrcLoc(range))) | "LinkHole" => Payload(int->map((. index) => Hole(index))) @@ -51,7 +51,7 @@ module Event = { } let decode = { - Util.Decode.sum_(x => { + Util.Decode.sum(x => { switch x { | "JumpToTarget" => Payload(decode->JsonCombinators.Json.Decode.map((. target) => JumpToTarget(target))) diff --git a/src/View/Component/RichText.res b/src/View/Component/RichText.res index ef39a145..bb44ca6a 100644 --- a/src/View/Component/RichText.res +++ b/src/View/Component/RichText.res @@ -98,7 +98,7 @@ module Module = { let rec decodeRec = () => { open JsonCombinators.Json.Decode - Util.Decode.sum_(x => + Util.Decode.sum(x => switch x { | "Icon" => Payload(pair(string, ClassNames.decode)->map((. (s, cs)) => Icon(s, cs))) | "Text" => Payload(pair(string, ClassNames.decode)->map((. (s, cs)) => Text(s, cs))) diff --git a/src/View/Root.res b/src/View/Root.res index 311ce90d..cfa1ca16 100644 --- a/src/View/Root.res +++ b/src/View/Root.res @@ -8,15 +8,11 @@ let vscode = VSCode.Api.acquireVsCodeApi() let onRequest = Chan.make() let onEventToView = Chan.make() VSCode.Api.onMessage(stringifiedJSON => { - let requestOrEvent = Util.Decode.convert( - "VSCode.Api.onMessage", - View.RequestOrEventToView.decode, - stringifiedJSON->Js.Json.parseExn, - ) - - switch requestOrEvent { - | Event(event) => onEventToView->Chan.emit(event) - | Request(req) => onRequest->Chan.emit(req) + let json = stringifiedJSON->Js.Json.parseExn + switch JsonCombinators.Json.decode(json, View.RequestOrEventToView.decode) { + | Ok(Event(event)) => onEventToView->Chan.emit(event) + | Ok(Request(req)) => onRequest->Chan.emit(req) + | Error(_) => () // TODO: handle this decode error } }) diff --git a/src/View/View.res b/src/View/View.res index 03715e08..9a5ac3d3 100644 --- a/src/View/View.res +++ b/src/View/View.res @@ -17,7 +17,7 @@ module Header = { let decode = { open JsonCombinators.Json.Decode - Util.Decode.sum_(x => { + Util.Decode.sum(x => { switch x { | "Plain" => Payload(string->map((. text) => Plain(text))) | "Success" => Payload(string->map((. text) => Success(text))) @@ -85,7 +85,7 @@ module EventToView = { let decode = { open JsonCombinators.Json.Decode - Util.Decode.sum_(x => { + Util.Decode.sum(x => { switch x { | "Activate" => TagOnly(Activate) | "Deactivate" => TagOnly(Deactivate) @@ -143,7 +143,7 @@ module EventToView = { let decode = { open JsonCombinators.Json.Decode - Util.Decode.sum_(x => { + Util.Decode.sum(x => { switch x { | "Display" => Payload( @@ -221,7 +221,7 @@ module RequestOrEventToView = { // JSON encode/decode let decode = { open JsonCombinators.Json.Decode - Util.Decode.sum_(x => { + Util.Decode.sum(x => { switch x { | "Request" => Payload(Request.decode->map((. payload) => Request(payload))) | "Event" => Payload(EventToView.decode->map((. payload) => Event(payload))) @@ -247,7 +247,7 @@ module Response = { let decode = { open JsonCombinators.Json.Decode - Util.Decode.sum_(x => { + Util.Decode.sum(x => { switch x { | "PromptSuccess" => Payload(string->map((. result) => PromptSuccess(result))) | "PromptInterrupted" => TagOnly(PromptInterrupted) @@ -275,7 +275,7 @@ module EventFromView = { let decode = { open JsonCombinators.Json.Decode - Util.Decode.sum_(x => { + Util.Decode.sum(x => { switch x { | "InsertChar" => Payload(string->map((. char) => InsertChar(char))) | "ChooseSymbol" => Payload(string->map((. symbol) => ChooseSymbol(symbol))) @@ -307,7 +307,7 @@ module EventFromView = { let decode = { open JsonCombinators.Json.Decode - Util.Decode.sum_(x => { + Util.Decode.sum(x => { switch x { | "MouseSelect" => Payload(Interval.decode->map((. interval) => MouseSelect(interval))) | "KeyUpdate" => Payload(string->map((. char) => KeyUpdate(char))) @@ -359,7 +359,7 @@ module EventFromView = { let decode = { open JsonCombinators.Json.Decode - Util.Decode.sum_(x => { + Util.Decode.sum(x => { switch x { | "Initialized" => TagOnly(Initialized) | "Destroyed" => TagOnly(Destroyed) @@ -393,7 +393,7 @@ module ResponseOrEventFromView = { // JSON encode/decode let decode = { open JsonCombinators.Json.Decode - Util.Decode.sum_(x => { + Util.Decode.sum(x => { switch x { | "Response" => Payload(Response.decode->map((. payload) => Response(payload))) | "Event" => Payload(EventFromView.decode->map((. payload) => Event(payload))) From a5e9b018643a13ea7dca612479379084fd084b0d Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Mon, 4 Dec 2023 21:38:00 +0800 Subject: [PATCH 047/109] [ fix ] Replace `Json.stringify` with `Js.Json.stringify` --- lib/js/src/Connection/LSP/Connection__LSP__Error.bs.js | 5 ++--- src/Connection/LSP/Connection__LSP__Error.res | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/js/src/Connection/LSP/Connection__LSP__Error.bs.js b/lib/js/src/Connection/LSP/Connection__LSP__Error.bs.js index 30f5b6dc..e4947fdd 100644 --- a/lib/js/src/Connection/LSP/Connection__LSP__Error.bs.js +++ b/lib/js/src/Connection/LSP/Connection__LSP__Error.bs.js @@ -1,7 +1,6 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Json = require("@glennsl/bs-json/lib/js/src/Json.bs.js"); var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Util$AgdaModeVscode = require("../../Util/Util.bs.js"); @@ -88,12 +87,12 @@ function toString$1(error) { case /* CannotDecodeCommandRes */2 : return [ "Cannot Send Command", - "Cannot decode the result after sending command" + error._0 + "\n" + Json.stringify(error._1) + "Cannot decode the result after sending command" + error._0 + "\n" + JSON.stringify(error._1) ]; case /* CannotDecodeResponse */3 : return [ "Cannot Parse Response", - "Cannot decode responses from the server" + error._0 + "\n" + Json.stringify(error._1) + "Cannot decode responses from the server" + error._0 + "\n" + JSON.stringify(error._1) ]; case /* ResponseParseError */4 : return [ diff --git a/src/Connection/LSP/Connection__LSP__Error.res b/src/Connection/LSP/Connection__LSP__Error.res index 3e4e7c41..603f25f3 100644 --- a/src/Connection/LSP/Connection__LSP__Error.res +++ b/src/Connection/LSP/Connection__LSP__Error.res @@ -55,11 +55,11 @@ let toString = error => | Initialize => ("Cannot Initialize Connection", "") | CannotDecodeCommandRes(msg, json) => ( "Cannot Send Command", - "Cannot decode the result after sending command" ++ msg ++ "\n" ++ Json.stringify(json), + "Cannot decode the result after sending command" ++ msg ++ "\n" ++ Js.Json.stringify(json), ) | CannotDecodeResponse(msg, json) => ( "Cannot Parse Response", - "Cannot decode responses from the server" ++ msg ++ "\n" ++ Json.stringify(json), + "Cannot decode responses from the server" ++ msg ++ "\n" ++ Js.Json.stringify(json), ) | ResponseParseError(e) => ("Internal Parse Error", Parser.Error.toString(e)) } From 2ba2f85d5a8e20b7641f434a400ac41e7a6be0eb Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Mon, 4 Dec 2023 21:57:04 +0800 Subject: [PATCH 048/109] [ fix ] RegEx for handling TextDocumentChangeEvent --- lib/js/src/Highlighting.bs.js | 2 +- src/Highlighting.res | 2 +- src/Response.res | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/js/src/Highlighting.bs.js b/lib/js/src/Highlighting.bs.js index cc8620ef..0c139d19 100644 --- a/lib/js/src/Highlighting.bs.js +++ b/lib/js/src/Highlighting.bs.js @@ -56,7 +56,7 @@ function redecorate(self, editor) { function classify(change, token) { var removedRange = change.range; - var regex = /\\r\\n|\\r|\\n/; + var regex = /\r\n|\r|\n/; var lines = Js_string.splitByRe(regex, change.text); var lineDetalOfRemovedRange = removedRange.end.line - removedRange.start.line | 0; var lineDelta = (lines.length - 1 | 0) - lineDetalOfRemovedRange | 0; diff --git a/src/Highlighting.res b/src/Highlighting.res index 983e5a46..12982561 100644 --- a/src/Highlighting.res +++ b/src/Highlighting.res @@ -106,7 +106,7 @@ module Module: Module = { // +1 column for each charactor after the last linebreak // -1 column for each charactor in `removedRange` - let regex = %re("/\\r\\n|\\r|\\n/") + let regex = %re("/\r\n|\r|\n/") // RegEx updated to v10.1.4 let lines = Js.String.splitByRe(regex, change->VSCode.TextDocumentContentChangeEvent.text) let lineDetalOfRemovedRange = diff --git a/src/Response.res b/src/Response.res index 9095c924..e296daf6 100644 --- a/src/Response.res +++ b/src/Response.res @@ -83,7 +83,7 @@ module DisplayInfo = { let parse = (xs: array): option => switch xs[1] { | Some(A(rawPayload)) => - let payload = rawPayload |> Js.String.replaceByRe(%re("/\\r\\n|\\n/g"), "\n") // RegEx updated to v10.1.4 + let payload = rawPayload |> Js.String.replaceByRe(%re("/\\r\\n|\\n/g"), "\n") switch xs[0] { | Some(A("*Compilation result*")) => Some(CompilationOk(payload)) | Some(A("*Constraints*")) => From f8ae83e3224fd861affe6fa542e4e22029bfe662 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Tue, 5 Dec 2023 23:49:11 +0800 Subject: [PATCH 049/109] [ fix #171 ] Update `asset/keymap.js` to the latest --- asset/keymap.js | 2 +- asset/query.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/asset/keymap.js b/asset/keymap.js index d786da6f..7362433b 100644 --- a/asset/keymap.js +++ b/asset/keymap.js @@ -1 +1 @@ -module.exports.default = {" ":{">>":[" "]},"!":{"!":{">>":["‼"]},">>":["¡"],"?":{">>":["⁉"]}},"\"":{"'":{">>":["“"]},"<":{">>":["«"]},">":{">>":["»"]},">>":["̈"],"A":{">>":["Ä"]},"E":{">>":["Ë"]},"H":{">>":["Ḧ"]},"I":{">>":["Ï"]},"O":{">>":["Ö"]},"U":{">>":["Ü"]},"W":{">>":["Ẅ"]},"X":{">>":["Ẍ"]},"Y":{">>":["Ÿ"]},"\\":{"'":{"I":{">>":["Ḯ"]},"U":{">>":["Ǘ"]},"i":{">>":["ḯ"]},"u":{">>":["ǘ"]},"{":{"I":{"}":{">>":["Ḯ"]}},"U":{"}":{">>":["Ǘ"]}},"i":{"}":{">>":["ḯ"]}},"u":{"}":{">>":["ǘ"]}}}},"=":{"A":{">>":["Ǟ"]},"O":{">>":["Ȫ"]},"U":{">>":["Ǖ"]},"a":{">>":["ǟ"]},"o":{">>":["ȫ"]},"u":{">>":["ǖ"]},"{":{"A":{"}":{">>":["Ǟ"]}},"O":{"}":{">>":["Ȫ"]}},"U":{"}":{">>":["Ǖ"]}},"a":{"}":{">>":["ǟ"]}},"o":{"}":{">>":["ȫ"]}},"u":{"}":{">>":["ǖ"]}}}},"`":{"U":{">>":["Ǜ"]},"u":{">>":["ǜ"]},"{":{"U":{"}":{">>":["Ǜ"]}},"u":{"}":{">>":["ǜ"]}}}},"v":{"U":{">>":["Ǚ"]},"u":{">>":["ǚ"]},"{":{"U":{"}":{">>":["Ǚ"]}},"u":{"}":{">>":["ǚ"]}}}}},"`":{">>":["„"]},"a":{">>":["ä"]},"e":{">>":["ë"]},"h":{">>":["ḧ"]},"i":{">>":["ï"]},"o":{">>":["ö"]},"t":{">>":["ẗ"]},"u":{">>":["ü"]},"w":{">>":["ẅ"]},"x":{">>":["ẍ"]},"y":{">>":["ÿ"]},"{":{"A":{"}":{">>":["Ä"]}},"E":{"}":{">>":["Ë"]}},"H":{"}":{">>":["Ḧ"]}},"I":{"}":{">>":["Ï"]}},"O":{"}":{">>":["Ö"]}},"U":{"}":{">>":["Ü"]}},"W":{"}":{">>":["Ẅ"]}},"X":{"}":{">>":["Ẍ"]}},"Y":{"}":{">>":["Ÿ"]}},"a":{"}":{">>":["ä"]}},"e":{"}":{">>":["ë"]}},"h":{"}":{">>":["ḧ"]}},"i":{"}":{">>":["ï"]}},"o":{"}":{">>":["ö"]}},"t":{"}":{">>":["ẗ"]}},"u":{"}":{">>":["ü"]}},"w":{"}":{">>":["ẅ"]}},"x":{"}":{">>":["ẍ"]}},"y":{"}":{">>":["ÿ"]}},"}":{">>":["¨"]}}},"#":{">>":["♯"]},"&":{">>":["⅋"]},"'":{">>":["′","″","‴","⁗","́"],"A":{">>":["Á"]},"C":{">>":["Ć"]},"E":{">>":["É"]},"G":{">>":["Ǵ"]},"I":{">>":["Í"]},"K":{">>":["Ḱ"]},"L":{">>":["Ĺ"]},"M":{">>":["Ḿ"]},"N":{">>":["Ń"]},"O":{">>":["Ó"]},"P":{">>":["Ṕ"]},"R":{">>":["Ŕ"]},"S":{">>":["Ś"]},"U":{">>":["Ú"]},"W":{">>":["Ẃ"]},"Y":{">>":["Ý"]},"Z":{">>":["Ź"]},"\\":{".":{"S":{">>":["Ṥ"]},"s":{">>":["ṥ"]},"{":{"S":{"}":{">>":["Ṥ"]}},"s":{"}":{">>":["ṥ"]}}}},"A":{"E":{">>":["Ǽ"]}},"O":{">>":["Ǿ"]},"a":{"e":{">>":["ǽ"]}},"o":{">>":["ǿ"]}},"a":{">>":["á"]},"c":{">>":["ć"]},"e":{">>":["é"]},"g":{">>":["ǵ"]},"i":{">>":["í"]},"k":{">>":["ḱ"]},"l":{">>":["ĺ"]},"m":{">>":["ḿ"]},"n":{">>":["ń"]},"o":{">>":["ó"]},"p":{">>":["ṕ"]},"r":{">>":["ŕ"]},"s":{">>":["ś"]},"u":{">>":["ú"]},"w":{">>":["ẃ"]},"y":{">>":["ý"]},"z":{">>":["ź"]},"{":{"A":{"}":{">>":["Á"]}},"C":{"}":{">>":["Ć"]}},"E":{"}":{">>":["É"]}},"G":{"}":{">>":["Ǵ"]}},"I":{"}":{">>":["Í"]}},"K":{"}":{">>":["Ḱ"]}},"L":{"}":{">>":["Ĺ"]}},"M":{"}":{">>":["Ḿ"]}},"N":{"}":{">>":["Ń"]}},"O":{"}":{">>":["Ó"]}},"P":{"}":{">>":["Ṕ"]}},"R":{"}":{">>":["Ŕ"]}},"S":{"}":{">>":["Ś"]}},"U":{"}":{">>":["Ú"]}},"W":{"}":{">>":["Ẃ"]}},"Y":{"}":{">>":["Ý"]}},"Z":{"}":{">>":["Ź"]}},"\\":{"A":{"E":{"}":{">>":["Ǽ"]}}},"O":{"}":{">>":["Ǿ"]}},"a":{"e":{"}":{">>":["ǽ"]}}},"o":{"}":{">>":["ǿ"]}}},"a":{"}":{">>":["á"]}},"c":{"}":{">>":["ć"]}},"e":{"}":{">>":["é"]}},"g":{"}":{">>":["ǵ"]}},"i":{"}":{">>":["í"]}},"k":{"}":{">>":["ḱ"]}},"l":{"}":{">>":["ĺ"]}},"m":{"}":{">>":["ḿ"]}},"n":{"}":{">>":["ń"]}},"o":{"}":{">>":["ó"]}},"p":{"}":{">>":["ṕ"]}},"r":{"}":{">>":["ŕ"]}},"s":{"}":{">>":["ś"]}},"u":{"}":{">>":["ú"]}},"w":{"}":{">>":["ẃ"]}},"y":{"}":{">>":["ý"]}},"z":{"}":{">>":["ź"]}},"}":{">>":["´"]}}},"(":{"(":{">>":["⦅"]},"0":{")":{">>":["⓪"]}},"1":{")":{">>":["⑴","①","⒈","❶","➀","➊"]},"0":{")":{">>":["⑽","⑩","⒑","❿","➉","➓"]}},"1":{")":{">>":["⑾","⑪","⒒"]}},"2":{")":{">>":["⑿","⑫","⒓"]}},"3":{")":{">>":["⒀","⑬","⒔"]}},"4":{")":{">>":["⒁","⑭","⒕"]}},"5":{")":{">>":["⒂","⑮","⒖"]}},"6":{")":{">>":["⒃","⑯","⒗"]}},"7":{")":{">>":["⒄","⑰","⒘"]}},"8":{")":{">>":["⒅","⑱","⒙"]}},"9":{")":{">>":["⒆","⑲","⒚"]}}},"2":{")":{">>":["⑵","②","⒉","❷","➁","➋"]},"0":{")":{">>":["⒇","⑳","⒛"]}}},"3":{")":{">>":["⑶","③","⒊","❸","➂","➌"]}},"4":{")":{">>":["⑷","④","⒋","❹","➃","➍"]}},"5":{")":{">>":["⑸","⑤","⒌","❺","➄","➎"]}},"6":{")":{">>":["⑹","⑥","⒍","❻","➅","➏"]}},"7":{")":{">>":["⑺","⑦","⒎","❼","➆","➐"]}},"8":{")":{">>":["⑻","⑧","⒏","❽","➇","➑"]}},"9":{")":{">>":["⑼","⑨","⒐","❾","➈","➒"]}},"=":{">>":["≘"]},">>":["(","[","{","⁅","⁽","₍","〈","⎴","⟅","⟦","⟨","⟪","⦃","〈","《","「","『","【","〔","〖","〚","︵","︷","︹","︻","︽","︿","﹁","﹃","﹙","﹛","﹝","(","[","{","「"],"a":{")":{">>":["⒜","Ⓐ","ⓐ"]}},"b":{")":{">>":["⒝","Ⓑ","ⓑ"]},">>":["⟅"]},"c":{")":{">>":["⒞","Ⓒ","ⓒ"]}},"d":{")":{">>":["⒟","Ⓓ","ⓓ"]}},"e":{")":{">>":["⒠","Ⓔ","ⓔ"]}},"f":{")":{">>":["⒡","Ⓕ","ⓕ"]}},"g":{")":{">>":["⒢","Ⓖ","ⓖ"]}},"h":{")":{">>":["⒣","Ⓗ","ⓗ"]}},"i":{")":{">>":["⒤","Ⓘ","ⓘ"]}},"j":{")":{">>":["⒥","Ⓙ","ⓙ"]}},"k":{")":{">>":["⒦","Ⓚ","ⓚ"]}},"l":{")":{">>":["⒧","Ⓛ","ⓛ"]}},"m":{")":{">>":["⒨","Ⓜ","ⓜ"]}},"n":{")":{">>":["⒩","Ⓝ","ⓝ"]}},"o":{")":{">>":["⒪","Ⓞ","ⓞ"]}},"p":{")":{">>":["⒫","Ⓟ","ⓟ"]}},"q":{")":{">>":["⒬","Ⓠ","ⓠ"]}},"r":{")":{">>":["⒭","Ⓡ","ⓡ"]}},"s":{")":{">>":["⒮","Ⓢ","ⓢ"]}},"t":{")":{">>":["⒯","Ⓣ","ⓣ"]}},"u":{")":{">>":["⒰","Ⓤ","ⓤ"]}},"v":{")":{">>":["⒱","Ⓥ","ⓥ"]}},"w":{")":{">>":["⒲","Ⓦ","ⓦ"]}},"x":{")":{">>":["⒳","Ⓧ","ⓧ"]}},"y":{")":{">>":["⒴","Ⓨ","ⓨ"]}},"z":{")":{">>":["⒵","Ⓩ","ⓩ"]}},"|":{">>":["⦇"]}},")":{")":{">>":["⦆"]},">>":[")","]","}","⁆","⁾","₎","〉","⎵","⟆","⟧","⟩","⟫","⦄","〉","》","」","』","】","〕","〗","〛","︶","︸","︺","︼","︾","﹀","﹂","﹄","﹚","﹜","﹞",")","]","}","」"],"b":{">>":["⟆"]}},"*":{"=":{">>":["≛"]},">>":["⋆"]},"+":{" ":{">>":["⊹"]}},",":{">>":["ʻ","،","⸲","⸴","⹁","⹉","、","︐","︑","﹐","﹑",",","、"," "]},"-":{"-":{"-":{">>":["─","│","┌","┐","└","┘","├","┤","┬","┼","┴","╴","╵","╶","╷","╭","╮","╯","╰","╱","╲","╳"]},".":{">>":["╌","╎","┄","┆","┈","┊","╍","╏","┅","┇","┉","┋"]},"=":{">>":["═","║","╔","╗","╚","╝","╠","╣","╦","╬","╩","╒","╕","╘","╛","╞","╡","╤","╪","╧","╓","╖","╙","╜","╟","╢","╥","╫","╨"]},">":{">>":["⟶"]},"_":{">>":["━","┃","┏","┓","┗","┛","┣","┫","┳","╋","┻","╸","╹","╺","╻","┍","┯","┑","┕","┷","┙","┝","┿","┥","┎","┰","┒","┖","┸","┚","┠","╂","┨","┞","╀","┦","┟","╁","┧","┢","╈","┪","┡","╇","┩","┮","┭","┶","┵","┾","┽","┲","┱","┺","┹","╊","╉","╆","╅","╄","╃","╿","╽","╼","╾"]}},":":{">>":["∹"]},">":{">>":["→"],"n":{">>":["↛"]}},">>":["­"],"o":{">>":["⊸"]},"|":{">>":["⊣"]},"~":{">>":["≂"]}},".":{"+":{">>":["∔"]},"-":{">>":["∸"]},".":{".":{">>":["⋯","⋮","⋰","⋱"]}},"=":{".":{">>":["≑"]},">>":["≐"]},">>":["∙","̇"],"A":{">>":["Ȧ"]},"B":{">>":["Ḃ"]},"C":{">>":["Ċ"]},"D":{">>":["Ḋ"]},"E":{">>":["Ė"]},"F":{">>":["Ḟ"]},"G":{">>":["Ġ"]},"H":{">>":["Ḣ"]},"I":{">>":["İ"]},"M":{">>":["Ṁ"]},"N":{">>":["Ṅ"]},"O":{">>":["Ȯ"]},"P":{">>":["Ṗ"]},"R":{">>":["Ṙ"]},"S":{">>":["Ṡ"]},"T":{">>":["Ṫ"]},"W":{">>":["Ẇ"]},"X":{">>":["Ẋ"]},"Y":{">>":["Ẏ"]},"Z":{">>":["Ż"]},"\\":{"=":{"A":{">>":["Ǡ"]},"O":{">>":["Ȱ"]},"a":{">>":["ǡ"]},"o":{">>":["ȱ"]},"{":{"A":{"}":{">>":["Ǡ"]}},"O":{"}":{">>":["Ȱ"]}},"a":{"}":{">>":["ǡ"]}},"o":{"}":{">>":["ȱ"]}}}}},"a":{">>":["ȧ"]},"b":{">>":["ḃ"]},"c":{">>":["ċ"]},"d":{">>":["ḋ"]},"e":{">>":["ė"]},"f":{">>":["ḟ"]},"g":{">>":["ġ"]},"h":{">>":["ḣ"]},"m":{">>":["ṁ"]},"n":{">>":["ṅ"]},"o":{">>":["ȯ"]},"p":{">>":["ṗ"]},"r":{">>":["ṙ"]},"s":{">>":["ṡ"]},"t":{">>":["ṫ"]},"w":{">>":["ẇ"]},"x":{">>":["ẋ"]},"y":{">>":["ẏ"]},"z":{">>":["ż"]},"{":{"A":{"}":{">>":["Ȧ"]}},"B":{"}":{">>":["Ḃ"]}},"C":{"}":{">>":["Ċ"]}},"D":{"}":{">>":["Ḋ"]}},"E":{"}":{">>":["Ė"]}},"F":{"}":{">>":["Ḟ"]}},"G":{"}":{">>":["Ġ"]}},"H":{"}":{">>":["Ḣ"]}},"I":{"}":{">>":["İ"]}},"M":{"}":{">>":["Ṁ"]}},"N":{"}":{">>":["Ṅ"]}},"O":{"}":{">>":["Ȯ"]}},"P":{"}":{">>":["Ṗ"]}},"R":{"}":{">>":["Ṙ"]}},"S":{"}":{">>":["Ṡ"]}},"T":{"}":{">>":["Ṫ"]}},"W":{"}":{">>":["Ẇ"]}},"X":{"}":{">>":["Ẋ"]}},"Y":{"}":{">>":["Ẏ"]}},"Z":{"}":{">>":["Ż"]}},"a":{"}":{">>":["ȧ"]}},"b":{"}":{">>":["ḃ"]}},"c":{"}":{">>":["ċ"]}},"d":{"}":{">>":["ḋ"]}},"e":{"}":{">>":["ė"]}},"f":{"}":{">>":["ḟ"]}},"g":{"}":{">>":["ġ"]}},"h":{"}":{">>":["ḣ"]}},"m":{"}":{">>":["ṁ"]}},"n":{"}":{">>":["ṅ"]}},"o":{"}":{">>":["ȯ"]}},"p":{"}":{">>":["ṗ"]}},"r":{"}":{">>":["ṙ"]}},"s":{"}":{">>":["ṡ"]}},"t":{"}":{">>":["ṫ"]}},"w":{"}":{">>":["ẇ"]}},"x":{"}":{">>":["ẋ"]}},"y":{"}":{">>":["ẏ"]}},"z":{"}":{">>":["ż"]}},"}":{">>":["˙"]}}},"/":{">>":["‌"]},"0":{">>":["∅"]},"8":{"<":{">>":["✂","✄"]}},":":{":":{"-":{">>":["∺"]},">>":["∷"]},"=":{">>":["≔"]},">>":["∶","⦂","ː","꞉","˸","፥","፦",":","﹕","︓"," "],"~":{">>":["∻"]}},";":{">>":["؛","⁏","፤","꛶",";","︔","﹔","⍮","⸵",";"," "]},"<":{"-":{"-":{">":{">>":["⟷"]},">>":["⟵"]},">":{">>":["↔"],"n":{">>":["↮"]}},">>":["←"],"n":{">>":["↚"]}},"<":{">>":["⟪"]},"=":{">":{">>":["⇔"],"n":{">>":["⇎"]}},">>":["≤"],"n":{">>":["≰"]}},">>":["⟨"],"n":{">>":["≮"]},"~":{">>":["≲"],"n":{">>":["⋦"],"n":{">>":["≴"]}}}},"=":{":":{">>":["≕"]},"=":{"=":{">>":["≣"]},">>":["≡"],"n":{">>":["≢"]}},">":{">>":["⇒"],"n":{">>":["⇏"]}},">>":["̄"],"A":{">>":["Ā"]},"E":{">>":["Ē"]},"G":{">>":["Ḡ"]},"I":{">>":["Ī"]},"O":{">>":["Ō"]},"U":{">>":["Ū"]},"Y":{">>":["Ȳ"]},"\\":{"\"":{"U":{">>":["Ṻ"]},"u":{">>":["ṻ"]},"{":{"U":{"}":{">>":["Ṻ"]}},"u":{"}":{">>":["ṻ"]}}}},"'":{"E":{">>":["Ḗ"]},"O":{">>":["Ṓ"]},"e":{">>":["ḗ"]},"o":{">>":["ṓ"]},"{":{"E":{"}":{">>":["Ḗ"]}},"O":{"}":{">>":["Ṓ"]}},"e":{"}":{">>":["ḗ"]}},"o":{"}":{">>":["ṓ"]}}}},"A":{"E":{">>":["Ǣ"]}},"`":{"E":{">>":["Ḕ"]},"O":{">>":["Ṑ"]},"e":{">>":["ḕ"]},"o":{">>":["ṑ"]},"{":{"E":{"}":{">>":["Ḕ"]}},"O":{"}":{">>":["Ṑ"]}},"e":{"}":{">>":["ḕ"]}},"o":{"}":{">>":["ṑ"]}}}},"a":{"e":{">>":["ǣ"]}}},"a":{">>":["ā"]},"e":{">>":["ē"]},"g":{">>":["ḡ"]},"i":{">>":["ī"]},"n":{">>":["≠"]},"o":{">>":["≗","ō"]},"u":{">>":["ū"]},"y":{">>":["ȳ"]},"{":{"A":{"}":{">>":["Ā"]}},"E":{"}":{">>":["Ē"]}},"G":{"}":{">>":["Ḡ"]}},"I":{"}":{">>":["Ī"]}},"O":{"}":{">>":["Ō"]}},"U":{"}":{">>":["Ū"]}},"Y":{"}":{">>":["Ȳ"]}},"\\":{"A":{"E":{"}":{">>":["Ǣ"]}}},"a":{"e":{"}":{">>":["ǣ"]}}},"i":{"}":{">>":["ī"]}}},"a":{"}":{">>":["ā"]}},"e":{"}":{">>":["ē"]}},"g":{"}":{">>":["ḡ"]}},"i":{"}":{">>":["ī"]}},"o":{"}":{">>":["ō"]}},"u":{"}":{">>":["ū"]}},"y":{"}":{">>":["ȳ"]}},"}":{">>":["¯"]}}},">":{"=":{">>":["≥"],"n":{">>":["≱"]}},">":{">>":["⟫"]},">>":["⟩"],"n":{">>":["≯"]},"~":{">>":["≳"],"n":{">>":["⋧"],"n":{">>":["≵"]}}}},"?":{"!":{">>":["‽","⁈"]},"=":{">>":["≟"]},">>":["¿"],"?":{">>":["⁇"]}},"A":{"A":{">>":["Å"]},"E":{">>":["Æ"]},"l":{"p":{"h":{"a":{">>":["Α"]}}}},"n":{"d":{">>":["⋀"]}}},"B":{"0":{">>":["𝟎"]},"1":{">>":["𝟏"]},"2":{">>":["𝟐"]},"3":{">>":["𝟑"]},"4":{">>":["𝟒"]},"5":{">>":["𝟓"]},"6":{">>":["𝟔"]},"7":{">>":["𝟕"]},"8":{">>":["𝟖"]},"9":{">>":["𝟗"]},"b":{"b":{"{":{"N":{"}":{">>":["ℕ"]}},"P":{"}":{">>":["ℙ"]}},"R":{"}":{">>":["ℝ"]}},"Z":{"}":{">>":["ℤ"]}}}}},"e":{"t":{"a":{">>":["Β"]}}},"o":{"x":{">>":["□"]}},"u":{"m":{"p":{"e":{"q":{">>":["≎"]}}}}}},"C":{">>":["∁"],"a":{"p":{">>":["⋒"]}},"h":{"i":{">>":["Χ"]}},"u":{"p":{">>":["⋓"]}}},"D":{"H":{">>":["Ð"]},"e":{"i":{">>":["Ϯ"]},"l":{"t":{"a":{">>":["Δ"]}}}},"i":{"a":{"m":{"o":{"n":{"d":{">>":["◇"]}}}}},"g":{"a":{"m":{"m":{"a":{">>":["Ϝ"]}}}}}},"o":{"w":{"n":{"a":{"r":{"r":{"o":{"w":{">>":["⇓"]}}}}}}}}},"E":{"p":{"s":{"i":{"l":{"o":{"n":{">>":["Ε"]}}}}}},"t":{"a":{">>":["Η"]}}},"F":{"e":{"i":{">>":["Ϥ"]}},"r":{"o":{"w":{"n":{"y":{">>":["☹"]}}}}}},"G":{"A":{">>":["Α"]},"B":{">>":["Β"]},"C":{">>":["Χ"]},"D":{">>":["Δ"]},"E":{">>":["Ε"]},"F":{">>":["Φ"]},"G":{">>":["Γ"]},"H":{">>":["Η"]},"I":{">>":["Ι"]},"K":{">>":["Κ"]},"L":{">>":["Λ"]},"M":{">>":["Μ"]},"N":{">>":["Ν"]},"O":{">>":["Ω"]},"P":{">>":["Ψ"]},"R":{">>":["Ρ"]},"S":{">>":["Σ"]},"T":{">>":["Τ"],"H":{">>":["Θ"]}},"U":{">>":["Υ"]},"X":{">>":["Ξ"]},"Z":{">>":["Ζ"]},"a":{">>":["α"],"m":{"m":{"a":{">>":["Γ"]}}},"n":{"g":{"i":{"a":{">>":["Ϫ"]}}}}},"b":{">>":["β"]},"c":{">>":["χ"]},"d":{">>":["δ"]},"e":{">>":["ε"]},"f":{">>":["φ"]},"g":{">>":["γ"]},"h":{">>":["η"]},"i":{">>":["ι"]},"k":{">>":["κ"]},"l":{"-":{">>":["ƛ"]},">>":["λ"],"b":{">>":["⨅"]}},"m":{">>":["μ"]},"n":{">>":["ν"]},"o":{">>":["ω"]},"p":{">>":["ψ"]},"r":{">>":["ρ"]},"s":{">>":["σ"]},"t":{">>":["τ"],"h":{">>":["θ"]}},"u":{">>":["υ"]},"x":{">>":["ξ"]},"z":{">>":["ζ"]}},"H":{">>":["̋"],"O":{">>":["Ő"]},"U":{">>":["Ű"]},"e":{"t":{"a":{">>":["Ͱ"]}}},"o":{">>":["ő"],"r":{"i":{">>":["Ϩ"]}}},"u":{">>":["ű"]},"{":{"O":{"}":{">>":["Ő"]}},"U":{"}":{">>":["Ű"]}},"o":{"}":{">>":["ő"]}},"u":{"}":{">>":["ű"]}},"}":{">>":["˝"]}}},"I":{">>":["⋂"],"m":{">>":["ℑ"]},"o":{"t":{"a":{">>":["Ι"]}}}},"J":{"o":{"i":{"n":{">>":["⋈"]}}}},"K":{"a":{"p":{"p":{"a":{">>":["Κ"]}}}},"h":{"e":{"i":{">>":["Ϧ"]}}},"o":{"p":{"p":{"a":{">>":["Ϟ"]}}}}},"L":{">>":["Ł"],"a":{"m":{"b":{"d":{"a":{">>":["Λ"]}}},"d":{"a":{">>":["Λ"]}}}},"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇐"]}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇔"]}}}}}}}}}}}},"t":{"t":{"e":{"r":{">>":["✉"]}}}}},"l":{">>":["⋘"],"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇚"]}}}}}}}}},"o":{"n":{"g":{"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇐"]}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇔"]}}}}}}}}}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇒"]}}}}}}}}}}}}},"s":{"h":{">>":["↰"]}},"u":{"b":{">>":["⨆"]}}},"M":{"C":{"A":{">>":["𝓐"]},"B":{">>":["𝓑"]},"C":{">>":["𝓒"]},"D":{">>":["𝓓"]},"E":{">>":["𝓔"]},"F":{">>":["𝓕"]},"G":{">>":["𝓖"]},"H":{">>":["𝓗"]},"I":{">>":["𝓘"]},"J":{">>":["𝓙"]},"K":{">>":["𝓚"]},"L":{">>":["𝓛"]},"M":{">>":["𝓜"]},"N":{">>":["𝓝"]},"O":{">>":["𝓞"]},"P":{">>":["𝓟"]},"Q":{">>":["𝓠"]},"R":{">>":["𝓡"]},"S":{">>":["𝓢"]},"T":{">>":["𝓣"]},"U":{">>":["𝓤"]},"V":{">>":["𝓥"]},"W":{">>":["𝓦"]},"X":{">>":["𝓧"]},"Y":{">>":["𝓨"]},"Z":{">>":["𝓩"]},"a":{">>":["𝓪"]},"b":{">>":["𝓫"]},"c":{">>":["𝓬"]},"d":{">>":["𝓭"]},"e":{">>":["𝓮"]},"f":{">>":["𝓯"]},"g":{">>":["𝓰"]},"h":{">>":["𝓱"]},"i":{">>":["𝓲"]},"j":{">>":["𝓳"]},"k":{">>":["𝓴"]},"l":{">>":["𝓵"]},"m":{">>":["𝓶"]},"n":{">>":["𝓷"]},"o":{">>":["𝓸"]},"p":{">>":["𝓹"]},"q":{">>":["𝓺"]},"r":{">>":["𝓻"]},"s":{">>":["𝓼"]},"t":{">>":["𝓽"]},"u":{">>":["𝓾"]},"v":{">>":["𝓿"]},"w":{">>":["𝔀"]},"x":{">>":["𝔁"]},"y":{">>":["𝔂"]},"z":{">>":["𝔃"]}},"I":{"A":{">>":["𝑨"]},"B":{">>":["𝑩"]},"C":{">>":["𝑪"]},"D":{">>":["𝑫"]},"E":{">>":["𝑬"]},"F":{">>":["𝑭"]},"G":{">>":["𝑮"]},"H":{">>":["𝑯"]},"I":{">>":["𝑰"]},"J":{">>":["𝑱"]},"K":{">>":["𝑲"]},"L":{">>":["𝑳"]},"M":{">>":["𝑴"]},"N":{">>":["𝑵"]},"O":{">>":["𝑶"]},"P":{">>":["𝑷"]},"Q":{">>":["𝑸"]},"R":{">>":["𝑹"]},"S":{">>":["𝑺"]},"T":{">>":["𝑻"]},"U":{">>":["𝑼"]},"V":{">>":["𝑽"]},"W":{">>":["𝑾"]},"X":{">>":["𝑿"]},"Y":{">>":["𝒀"]},"Z":{">>":["𝒁"]},"a":{">>":["𝒂"]},"b":{">>":["𝒃"]},"c":{">>":["𝒄"]},"d":{">>":["𝒅"]},"e":{">>":["𝒆"]},"f":{">>":["𝒇"]},"g":{">>":["𝒈"]},"h":{">>":["𝒉"]},"i":{">>":["𝒊"]},"j":{">>":["𝒋"]},"k":{">>":["𝒌"]},"l":{">>":["𝒍"]},"m":{">>":["𝒎"]},"n":{">>":["𝒏"]},"o":{">>":["𝒐"]},"p":{">>":["𝒑"]},"q":{">>":["𝒒"]},"r":{">>":["𝒓"]},"s":{">>":["𝒔"]},"t":{">>":["𝒕"]},"u":{">>":["𝒖"]},"v":{">>":["𝒗"]},"w":{">>":["𝒘"]},"x":{">>":["𝒙"]},"y":{">>":["𝒚"]},"z":{">>":["𝒛"]}},"c":{"A":{">>":["𝒜"]},"B":{">>":["ℬ"]},"C":{">>":["𝒞"]},"D":{">>":["𝒟"]},"E":{">>":["ℰ"]},"F":{">>":["ℱ"]},"G":{">>":["𝒢"]},"H":{">>":["ℋ"]},"I":{">>":["ℐ"]},"J":{">>":["𝒥"]},"K":{">>":["𝒦"]},"L":{">>":["ℒ"]},"M":{">>":["ℳ"]},"N":{">>":["𝒩"]},"O":{">>":["𝒪"]},"P":{">>":["𝒫"]},"Q":{">>":["𝒬"]},"R":{">>":["ℛ"]},"S":{">>":["𝒮"]},"T":{">>":["𝒯"]},"U":{">>":["𝒰"]},"V":{">>":["𝒱"]},"W":{">>":["𝒲"]},"X":{">>":["𝒳"]},"Y":{">>":["𝒴"]},"Z":{">>":["𝒵"]},"a":{">>":["𝒶"]},"b":{">>":["𝒷"]},"c":{">>":["𝒸"]},"d":{">>":["𝒹"]},"e":{">>":["ℯ"]},"f":{">>":["𝒻"]},"g":{">>":["ℊ"]},"h":{">>":["𝒽"]},"i":{">>":["𝒾"]},"j":{">>":["𝒿"]},"k":{">>":["𝓀"]},"l":{">>":["𝓁"]},"m":{">>":["𝓂"]},"n":{">>":["𝓃"]},"o":{">>":["ℴ"]},"p":{">>":["𝓅"]},"q":{">>":["𝓆"]},"r":{">>":["𝓇"]},"s":{">>":["𝓈"]},"t":{">>":["𝓉"]},"u":{">>":["𝓊"]},"v":{">>":["𝓋"]},"w":{">>":["𝓌"]},"x":{">>":["𝓍"]},"y":{">>":["𝓎"]},"z":{">>":["𝓏"]}},"f":{"A":{">>":["𝔄"]},"B":{">>":["𝔅"]},"C":{">>":["ℭ"]},"D":{">>":["𝔇"]},"E":{">>":["𝔈"]},"F":{">>":["𝔉"]},"G":{">>":["𝔊"]},"H":{">>":["ℌ"]},"I":{">>":["ℑ"]},"J":{">>":["𝔍"]},"K":{">>":["𝔎"]},"L":{">>":["𝔏"]},"M":{">>":["𝔐"]},"N":{">>":["𝔑"]},"O":{">>":["𝔒"]},"P":{">>":["𝔓"]},"Q":{">>":["𝔔"]},"R":{">>":["ℜ"]},"S":{">>":["𝔖"]},"T":{">>":["𝔗"]},"U":{">>":["𝔘"]},"V":{">>":["𝔙"]},"W":{">>":["𝔚"]},"X":{">>":["𝔛"]},"Y":{">>":["𝔜"]},"Z":{">>":["ℨ"]},"a":{">>":["𝔞"]},"b":{">>":["𝔟"]},"c":{">>":["𝔠"]},"d":{">>":["𝔡"]},"e":{">>":["𝔢"]},"f":{">>":["𝔣"]},"g":{">>":["𝔤"]},"h":{">>":["𝔥"]},"i":{">>":["𝔦"]},"j":{">>":["𝔧"]},"k":{">>":["𝔨"]},"l":{">>":["𝔩"]},"m":{">>":["𝔪"]},"n":{">>":["𝔫"]},"o":{">>":["𝔬"]},"p":{">>":["𝔭"]},"q":{">>":["𝔮"]},"r":{">>":["𝔯"]},"s":{">>":["𝔰"]},"t":{">>":["𝔱"]},"u":{">>":["𝔲"]},"v":{">>":["𝔳"]},"w":{">>":["𝔴"]},"x":{">>":["𝔵"]},"y":{">>":["𝔶"]},"z":{">>":["𝔷"]}},"i":{"A":{">>":["𝐴"]},"B":{">>":["𝐵"]},"C":{">>":["𝐶"]},"D":{">>":["𝐷"]},"E":{">>":["𝐸"]},"F":{">>":["𝐹"]},"G":{">>":["𝐺"]},"H":{">>":["𝐻"]},"I":{">>":["𝐼"]},"J":{">>":["𝐽"]},"K":{">>":["𝐾"]},"L":{">>":["𝐿"]},"M":{">>":["𝑀"]},"N":{">>":["𝑁"]},"O":{">>":["𝑂"]},"P":{">>":["𝑃"]},"Q":{">>":["𝑄"]},"R":{">>":["𝑅"]},"S":{">>":["𝑆"]},"T":{">>":["𝑇"]},"U":{">>":["𝑈"]},"V":{">>":["𝑉"]},"W":{">>":["𝑊"]},"X":{">>":["𝑋"]},"Y":{">>":["𝑌"]},"Z":{">>":["𝑍"]},"a":{">>":["𝑎"]},"b":{">>":["𝑏"]},"c":{">>":["𝑐"]},"d":{">>":["𝑑"]},"e":{">>":["𝑒"]},"f":{">>":["𝑓"]},"g":{">>":["𝑔"]},"h":{">>":["ℎ"]},"i":{">>":["𝑖"]},"j":{">>":["𝑗"]},"k":{">>":["𝑘"]},"l":{">>":["𝑙"]},"m":{">>":["𝑚"]},"n":{">>":["𝑛"]},"o":{">>":["𝑜"]},"p":{">>":["𝑝"]},"q":{">>":["𝑞"]},"r":{">>":["𝑟"]},"s":{">>":["𝑠"]},"t":{">>":["𝑡"]},"u":{">>":["𝑢"]},"v":{">>":["𝑣"]},"w":{">>":["𝑤"]},"x":{">>":["𝑥"]},"y":{">>":["𝑦"]},"z":{">>":["𝑧"]}},"u":{">>":["Μ"]}},"N":{"u":{">>":["Ν"]}},"O":{"*":{">>":["⍟"]},"+":{">>":["⨁"]},".":{">>":["⨀"]},">>":["Ø"],"E":{">>":["Œ"]},"m":{"e":{"g":{"a":{">>":["Ω"]}}},"i":{"c":{"r":{"o":{"n":{">>":["Ο"]}}}}}},"r":{">>":["⋁"]},"x":{">>":["⨂"]}},"P":{">>":["¶"],"i":{">>":["Π"]},"s":{"i":{">>":["Ψ"]}}},"R":{"e":{">>":["ℜ"]},"h":{"o":{">>":["Ρ"]}},"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇒"]}}}}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇛"]}}}}}}}}}},"s":{"h":{">>":["↱"]}}},"S":{">>":["§"],"a":{"m":{"p":{"i":{">>":["Ϡ"]}}},"n":{">>":["Ϻ"]}},"h":{"e":{"i":{">>":["Ϣ"]}},"i":{"m":{"a":{">>":["Ϭ"]}}},"o":{">>":["Ϸ"]}},"i":{"g":{"m":{"a":{">>":["Σ"]}}}},"m":{"i":{"l":{"e":{"y":{">>":["☺"]}}}}},"t":{"i":{"g":{"m":{"a":{">>":["Ϛ"]}}}}},"u":{"b":{"s":{"e":{"t":{">>":["⋐"]}}}},"p":{"s":{"e":{"t":{">>":["⋑"]}}}}}},"T":{">>":["◀","◁","▶","▷","▲","△","▼","▽","◬","◭","◮"],"H":{">>":["Þ"]},"a":{"u":{">>":["Τ"]}},"b":{">>":["◀","▶","▲","▼"]},"h":{"e":{"t":{"a":{">>":["Θ"]}}}},"w":{">>":["◁","▷","△","▽"]}},"U":{"+":{">>":["⨄"]},".":{">>":["⨃"]},"n":{">>":["⋃"]},"o":{">>":["ő"]},"p":{"a":{"r":{"r":{"o":{"w":{">>":["⇑"]}}}}},"d":{"o":{"w":{"n":{"a":{"r":{"r":{"o":{"w":{">>":["⇕"]}}}}}}}}},"s":{"i":{"l":{"o":{"n":{">>":["Υ"]}}}}}},"{":{"o":{"}":{">>":["ő"]}}}},"V":{"d":{"a":{"s":{"h":{">>":["⊩"]}}}},"e":{"r":{"t":{">>":["‖"]}}},"v":{"d":{"a":{"s":{"h":{">>":["⊪"]}}}}}},"X":{"i":{">>":["Ξ"]}},"Y":{"o":{"t":{">>":["Ϳ"]}}},"Z":{"e":{"t":{"a":{">>":["Ζ"]}}}},"[":{"[":{">>":["⟦"]}},"]":{"]":{">>":["⟧"]}},"^":{"(":{">>":["⁽"]},")":{">>":["⁾"]},"+":{">>":["⁺"]},"-":{"-":{">>":["̅","̿"]},">>":["⁻"]},".":{">>":["̇","̈","⃛","⃜"]},"0":{">>":["⁰"]},"1":{">>":["¹"]},"2":{">>":["²"]},"3":{">>":["³"]},"4":{">>":["⁴"]},"5":{">>":["⁵"]},"6":{">>":["⁶"]},"7":{">>":["⁷"]},"8":{">>":["⁸"]},"9":{">>":["⁹"]},"=":{">>":["⁼"]},">>":["̂"],"A":{">>":["ᴬ","Â"]},"B":{">>":["ᴮ"]},"C":{">>":["Ĉ"]},"D":{">>":["ᴰ"]},"E":{">>":["ᴱ","Ê"]},"G":{">>":["ᴳ","Ĝ"]},"H":{">>":["ᴴ","Ĥ"]},"I":{">>":["ᴵ","Î"]},"J":{">>":["ᴶ","Ĵ"]},"K":{">>":["ᴷ"]},"L":{">>":["ᴸ"]},"M":{">>":["ᴹ"]},"N":{">>":["ᴺ"]},"O":{">>":["ᴼ","Ô"]},"P":{">>":["ᴾ"]},"R":{">>":["ᴿ"]},"S":{">>":["Ŝ"]},"T":{">>":["ᵀ"]},"U":{">>":["ᵁ","Û"]},"V":{">>":["ⱽ"]},"W":{">>":["ᵂ","Ŵ"]},"Y":{">>":["Ŷ"]},"Z":{">>":["Ẑ"]},"\\":{"'":{"A":{">>":["Ấ"]},"E":{">>":["Ế"]},"O":{">>":["Ố"]},"a":{">>":["ấ"]},"e":{">>":["ế"]},"o":{">>":["ố"]},"{":{"A":{"}":{">>":["Ấ"]}},"E":{"}":{">>":["Ế"]}},"O":{"}":{">>":["Ố"]}},"a":{"}":{">>":["ấ"]}},"e":{"}":{">>":["ế"]}},"o":{"}":{">>":["ố"]}}}},"A":{"e":{">>":["ᴭ"]}},"B":{"a":{"r":{"r":{"e":{"d":{" ":{"B":{">>":["ᴯ"]}}}}}}}},"H":{" ":{"W":{"i":{"t":{"h":{" ":{"S":{"t":{"r":{"o":{"k":{"e":{">>":["ꟸ"]}}}}}}}}}}}}},"O":{"u":{">>":["ᴽ"]}},"R":{"e":{"v":{"e":{"r":{"s":{"e":{"d":{" ":{"E":{">>":["ᴲ"]},"N":{">>":["ᴻ"]}}}}}}}}}},"`":{"A":{">>":["Ầ"]},"E":{">>":["Ề"]},"O":{">>":["Ồ"]},"a":{">>":["ầ"]},"e":{">>":["ề"]},"o":{">>":["ồ"]},"{":{"A":{"}":{">>":["Ầ"]}},"E":{"}":{">>":["Ề"]}},"O":{"}":{">>":["Ồ"]}},"a":{"}":{">>":["ầ"]}},"e":{"}":{">>":["ề"]}},"o":{"}":{">>":["ồ"]}}}},"a":{"i":{"n":{">>":["ᵜ"]}},"l":{"p":{"h":{"a":{">>":["ᵅ"]}}}}},"b":{"a":{"r":{"r":{"e":{"d":{" ":{"o":{">>":["ᶱ"]}}}}}}},"e":{"t":{"a":{">>":["ᵝ"]}}},"o":{"t":{"t":{"o":{"m":{" ":{"h":{"a":{"l":{"f":{" ":{"o":{">>":["ᵕ"]}}}}}}}}}}}}},"c":{" ":{"w":{"i":{"t":{"h":{" ":{"c":{"u":{"r":{"l":{">>":["ᶝ"]}}}}}}}}}},"a":{"p":{"i":{"t":{"a":{"l":{" ":{"i":{" ":{"w":{"i":{"t":{"h":{" ":{"s":{"t":{"r":{"o":{"k":{"e":{">>":["ᶧ"]}}}}}}}}}}}},">>":["ᶦ"],"n":{"v":{"e":{"r":{"t":{"e":{"d":{" ":{"r":{">>":["ʶ"]}}}}}}}}}},"l":{">>":["ᶫ"]},"n":{">>":["ᶰ"]},"u":{">>":["ᶸ"]}}}}}}}},"h":{"i":{">>":["ᵡ"]}}},"d":{"e":{"l":{"t":{"a":{">>":["ᵟ"]}}}},"o":{"t":{"l":{"e":{"s":{"s":{" ":{"j":{" ":{"w":{"i":{"t":{"h":{" ":{"s":{"t":{"r":{"o":{"k":{"e":{">>":["ᶡ"]}}}}}}}}}}}}}}}}}}}},"{":{"A":{"}":{">>":["Ậ"]}},"E":{"}":{">>":["Ệ"]}},"O":{"}":{">>":["Ộ"]}},"a":{"}":{">>":["ậ"]}},"e":{"}":{">>":["ệ"]}},"o":{"}":{">>":["ộ"]}}}},"e":{"n":{"g":{">>":["ᵑ"]}},"s":{"h":{">>":["ᶴ"]}},"t":{"h":{">>":["ᶞ"]}},"z":{"h":{">>":["ᶾ"]}}},"g":{"a":{"m":{"m":{"a":{">>":["ˠ"]}}}},"r":{"e":{"e":{"k":{" ":{"g":{"a":{"m":{"m":{"a":{">>":["ᵞ"]}}}}},"p":{"h":{"i":{">>":["ᵠ"]}}}}}}}}},"h":{" ":{"h":{"o":{"o":{"k":{">>":["ʱ"]}}}},"w":{"i":{"t":{"h":{" ":{"h":{"o":{"o":{"k":{">>":["ʱ"]}}}}}}}}}},"e":{"n":{"g":{">>":["ꭜ"]}}}},"i":{" ":{"w":{"i":{"t":{"h":{" ":{"s":{"t":{"r":{"o":{"k":{"e":{">>":["ᶤ"]}}}}}}}}}}}},"o":{"t":{"a":{">>":["ᶥ"]}}}},"j":{" ":{"w":{"i":{"t":{"h":{" ":{"c":{"r":{"o":{"s":{"s":{"e":{"d":{"-":{"t":{"a":{"i":{"l":{">>":["ᶨ"]}}}}}}}}}}}}}}}}}}},"l":{" ":{"w":{"i":{"t":{"h":{" ":{"i":{"n":{"v":{"e":{"r":{"t":{"e":{"d":{" ":{"l":{"a":{"z":{"y":{" ":{"s":{">>":["ꭝ"]}}}}}}}}}}}}}}},"m":{"i":{"d":{"d":{"l":{"e":{" ":{"t":{"i":{"l":{"d":{"e":{">>":["ꭞ"]}}}}}}}}}}}},"p":{"a":{"l":{"a":{"t":{"a":{"l":{" ":{"h":{"o":{"o":{"k":{">>":["ᶪ"]}}}}}}}}}}}},"r":{"e":{"t":{"r":{"o":{"f":{"l":{"e":{"x":{" ":{"h":{"o":{"o":{"k":{">>":["ᶩ"]}}}}}}}}}}}}}}}}}}}},"i":{"g":{"a":{"t":{"u":{"r":{"e":{" ":{"o":{"e":{">>":["ꟹ"]}}}}}}}}}}},"m":{" ":{"w":{"i":{"t":{"h":{" ":{"h":{"o":{"o":{"k":{">>":["ᶬ"]}}}}}}}}}}},"n":{" ":{"w":{"i":{"t":{"h":{" ":{"l":{"e":{"f":{"t":{" ":{"h":{"o":{"o":{"k":{">>":["ᶮ"]}}}}}}}}},"r":{"e":{"t":{"r":{"o":{"f":{"l":{"e":{"x":{" ":{"h":{"o":{"o":{"k":{">>":["ᶯ"]}}}}}}}}}}}}}}}}}}}}},"o":{"p":{"e":{"n":{" ":{"e":{">>":["ᵋ"]},"o":{">>":["ᵓ"]}}}}}},"p":{"h":{"i":{">>":["ᶲ"]}}},"r":{"e":{"v":{"e":{"r":{"s":{"e":{"d":{" ":{"g":{"l":{"o":{"t":{"t":{"a":{"l":{" ":{"s":{"t":{"o":{"p":{">>":["ˤ"]}}}}}}}}}}}},"o":{"p":{"e":{"n":{" ":{"e":{">>":["ᶟ"]}}}}}}}}}}}}}}},"s":{" ":{"w":{"i":{"t":{"h":{" ":{"h":{"o":{"o":{"k":{">>":["ᶳ"]}}}}}}}}}},"c":{"h":{"w":{"a":{">>":["ᵊ"]}}},"r":{"i":{"p":{"t":{" ":{"g":{">>":["ᶢ"]}}}}}}},"i":{"d":{"e":{"w":{"a":{"y":{"s":{" ":{"u":{">>":["ᵙ"]}}}}}}}}}},"t":{" ":{"w":{"i":{"t":{"h":{" ":{"p":{"a":{"l":{"a":{"t":{"a":{"l":{" ":{"h":{"o":{"o":{"k":{">>":["ᶵ"]}}}}}}}}}}}}}}}}}},"h":{"e":{"t":{"a":{">>":["ᶿ"]}}}},"o":{"p":{" ":{"h":{"a":{"l":{"f":{" ":{"o":{">>":["ᵔ"]}}}}}}}}},"u":{"r":{"n":{"e":{"d":{" ":{"a":{">>":["ᵄ"],"e":{">>":["ᵆ"]},"l":{"p":{"h":{"a":{">>":["ᶛ"]}}}}},"h":{">>":["ᶣ"]},"i":{">>":["ᵎ"]},"m":{" ":{"w":{"i":{"t":{"h":{" ":{"l":{"o":{"n":{"g":{" ":{"l":{"e":{"g":{">>":["ᶭ"]}}}}}}}}}}}}}},">>":["ᵚ"]},"o":{"p":{"e":{"n":{" ":{"e":{">>":["ᵌ"]}}}}}},"r":{" ":{"h":{"o":{"o":{"k":{">>":["ʵ"]}}}},"w":{"i":{"t":{"h":{" ":{"h":{"o":{"o":{"k":{">>":["ʵ"]}}}}}}}}}},">>":["ʴ"]},"v":{">>":["ᶺ"]}}}}}}}},"u":{" ":{"b":{"a":{"r":{">>":["ᶶ"]}}},"w":{"i":{"t":{"h":{" ":{"l":{"e":{"f":{"t":{" ":{"h":{"o":{"o":{"k":{">>":["ꭟ"]}}}}}}}}}}}}}}},"p":{"s":{"i":{"l":{"o":{"n":{">>":["ᶷ"]}}}}}}},"v":{" ":{"w":{"i":{"t":{"h":{" ":{"h":{"o":{"o":{"k":{">>":["ᶹ"]}}}}}}}}}}},"z":{" ":{"w":{"i":{"t":{"h":{" ":{"c":{"u":{"r":{"l":{">>":["ᶽ"]}}}},"r":{"e":{"t":{"r":{"o":{"f":{"l":{"e":{"x":{" ":{"h":{"o":{"o":{"k":{">>":["ᶼ"]}}}}}}}}}}}}}}}}}}}}},"~":{"A":{">>":["Ẫ"]},"E":{">>":["Ễ"]},"O":{">>":["Ỗ"]},"a":{">>":["ẫ"]},"e":{">>":["ễ"]},"o":{">>":["ỗ"]},"{":{"A":{"}":{">>":["Ẫ"]}},"E":{"}":{">>":["Ễ"]}},"O":{"}":{">>":["Ỗ"]}},"a":{"}":{">>":["ẫ"]}},"e":{"}":{">>":["ễ"]}},"o":{"}":{">>":["ỗ"]}}}}},"^":{">>":["̂","̑","͆"]},"a":{">>":["ᵃ","â"],"_":{">>":["ª"]}},"b":{">>":["ᵇ"]},"c":{">>":["ᶜ","ĉ"]},"d":{">>":["ᵈ"]},"e":{">>":["ᵉ","ê"]},"f":{">>":["ᶠ"]},"g":{">>":["ᵍ","ĝ"]},"h":{">>":["ʰ","ĥ"]},"i":{">>":["ⁱ","î"]},"j":{">>":["ʲ","ĵ"]},"k":{">>":["ᵏ"]},"l":{"-":{">>":["⃖"]},">>":["⃖","⃐","⃔","ˡ"],"r":{">>":["⃡"]}},"m":{">>":["ᵐ"]},"n":{">>":["ⁿ"]},"o":{">>":["ᵒ","ô"],"_":{">>":["º"]}},"p":{">>":["ᵖ"]},"r":{"-":{">>":["⃗"]},">>":["⃗","⃑","⃕","ʳ"]},"s":{">>":["ˢ","ŝ"]},"t":{">>":["ᵗ"]},"u":{">>":["ᵘ","û"]},"v":{">>":["̌","̆","ᵛ"]},"w":{">>":["ʷ","ŵ"]},"x":{">>":["ˣ"]},"y":{">>":["ʸ","ŷ"]},"z":{">>":["ᶻ","ẑ"]},"{":{"A":{"}":{">>":["Â"]}},"C":{"}":{">>":["Ĉ"]}},"E":{"}":{">>":["Ê"]}},"G":{"}":{">>":["Ĝ"]}},"H":{"}":{">>":["Ĥ"]}},"I":{"}":{">>":["Î"]}},"J":{"}":{">>":["Ĵ"]}},"O":{"}":{">>":["Ô"]}},"S":{"M":{"}":{">>":["℠"]}},"}":{">>":["Ŝ"]}},"T":{"E":{"L":{"}":{">>":["℡"]}}},"M":{"}":{">>":["™"]}}},"U":{"}":{">>":["Û"]}},"W":{"}":{">>":["Ŵ"]}},"Y":{"}":{">>":["Ŷ"]}},"Z":{"}":{">>":["Ẑ"]}},"\\":{"j":{"}":{">>":["ĵ"]}}},"a":{"}":{">>":["â"]}},"c":{"}":{">>":["ĉ"]}},"e":{"}":{">>":["ê"]}},"g":{"}":{">>":["ĝ"]}},"h":{"}":{">>":["ĥ"]}},"i":{"}":{">>":["î"]}},"j":{"}":{">>":["ĵ"]}},"o":{"}":{">>":["ô"]}},"s":{"}":{">>":["ŝ"]}},"u":{"}":{">>":["û"]}},"w":{"}":{">>":["ŵ"]}},"y":{"}":{">>":["ŷ"]}},"z":{"}":{">>":["ẑ"]}}},"~":{">>":["̃","͌"]}},"_":{"(":{">>":["₍"]},")":{">>":["₎"]},"+":{">>":["₊"]},"-":{"-":{">>":["̲","̳"]},">>":["₋"]},".":{">>":["̣","̤"]},"0":{">>":["₀"]},"1":{">>":["₁"]},"2":{">>":["₂"]},"3":{">>":["₃"]},"4":{">>":["₄"]},"5":{">>":["₅"]},"6":{">>":["₆"]},"7":{">>":["₇"]},"8":{">>":["₈"]},"9":{">>":["₉"]},"=":{">>":["₌"]},"^":{">>":["̭","̯","̪"]},"a":{">>":["ₐ"]},"e":{">>":["ₑ"]},"h":{">>":["ₕ"]},"i":{">>":["ᵢ"]},"j":{">>":["ⱼ"]},"k":{">>":["ₖ"]},"l":{">>":["ₗ"],"r":{">>":["͍"]}},"m":{">>":["ₘ"]},"n":{">>":["ₙ"]},"o":{">>":["ₒ"]},"p":{">>":["ₚ"]},"r":{">>":["ᵣ"]},"s":{">>":["ₛ"]},"t":{">>":["ₜ"]},"u":{">>":["ᵤ"]},"v":{">>":["̬","̮","̺","ᵥ","ᵥ"]},"x":{">>":["ₓ"]},"~":{">>":["̰"]}},"`":{">>":["‵","‶","‷","̀"],"A":{">>":["À"]},"E":{">>":["È"]},"I":{">>":["Ì"]},"N":{">>":["Ǹ"]},"O":{">>":["Ò"]},"U":{">>":["Ù"]},"W":{">>":["Ẁ"]},"Y":{">>":["Ỳ"]},"a":{">>":["à"]},"e":{">>":["è"]},"i":{">>":["ì"]},"n":{">>":["ǹ"]},"o":{">>":["ò"]},"u":{">>":["ù"]},"w":{">>":["ẁ"]},"y":{">>":["ỳ"]},"{":{"A":{"}":{">>":["À"]}},"E":{"}":{">>":["È"]}},"I":{"}":{">>":["Ì"]}},"N":{"}":{">>":["Ǹ"]}},"O":{"}":{">>":["Ò"]}},"U":{"}":{">>":["Ù"]}},"W":{"}":{">>":["Ẁ"]}},"Y":{"}":{">>":["Ỳ"]}},"a":{"}":{">>":["à"]}},"e":{"}":{">>":["è"]}},"i":{"}":{">>":["ì"]}},"n":{"}":{">>":["ǹ"]}},"o":{"}":{">>":["ò"]}},"u":{"}":{">>":["ù"]}},"w":{"}":{">>":["ẁ"]}},"y":{"}":{">>":["ỳ"]}}}},"a":{"a":{">>":["å"]},"e":{">>":["æ"]},"f":{"g":{"h":{"a":{"n":{"i":{">>":["؋"]}}}}}},"l":{"e":{"p":{"h":{">>":["ℵ"]}}},"l":{">>":["∀"]},"p":{"h":{"a":{">>":["α"]}}}},"m":{"a":{"l":{"g":{">>":["∐"]}}}},"n":{"d":{"=":{">>":["≙"]},">>":["∧"]},"g":{"l":{"e":{">>":["∟","∡","∢","⊾","⊿","∠"]}},"s":{"t":{"r":{"o":{"m":{">>":["Å"]}}}}}}},"p":{"l":{">>":["⌶","⌷","⌸","⌹","⌺","⌻","⌼","⌽","⌾","⌿","⍀","⍁","⍂","⍃","⍄","⍅","⍆","⍇","⍈","⍉","⍊","⍋","⍌","⍍","⍎","⍏","⍐","⍑","⍒","⍓","⍔","⍕","⍖","⍗","⍘","⍙","⍚","⍛","⍜","⍝","⍞","⍟","⍠","⍡","⍢","⍣","⍤","⍥","⍦","⍧","⍨","⍩","⍪","⍫","⍬","⍭","⍮","⍯","⍰","⍱","⍲","⍳","⍴","⍵","⍶","⍷","⍸","⍹","⍺","⎕"]},"p":{"r":{"o":{"x":{">>":["≈"],"e":{"q":{">>":["≊"]}}}}}}},"s":{"t":{">>":["∗"],"e":{"r":{"i":{"s":{"k":{">>":["⁎","⁑","⁂","✢","✣","✤","✥","✱","✲","✳","✺","✻","✼","✽","❃","❉","❊","❋"]}}}}}},"y":{"m":{"p":{">>":["≍"]}}}},"u":{"s":{"t":{"r":{"a":{"l":{">>":["₳"]}}}}}}},"b":{"+":{">>":["⊞"]},"-":{">>":["⊟"]},".":{">>":["⊡"]},"0":{">>":["𝟘"]},"1":{">>":["𝟙"]},"2":{">>":["𝟚"]},"3":{">>":["𝟛"]},"4":{">>":["𝟜"]},"5":{">>":["𝟝"]},"6":{">>":["𝟞"]},"7":{">>":["𝟟"]},"8":{">>":["𝟠"]},"9":{">>":["𝟡"]},">>":["♭","̱"],"A":{">>":["𝔸"]},"B":{">>":["𝔹"]},"C":{">>":["ℂ"]},"D":{">>":["𝔻"]},"E":{">>":["𝔼"]},"F":{">>":["𝔽"]},"G":{">>":["𝔾"],"G":{">>":["ℾ"]},"P":{">>":["ℿ"]},"S":{">>":["⅀"]},"g":{">>":["ℽ"]},"p":{">>":["ℼ"]}},"H":{">>":["ℍ"]},"I":{">>":["𝕀"]},"J":{">>":["𝕁"]},"K":{">>":["𝕂"]},"L":{">>":["𝕃"]},"M":{">>":["𝕄"]},"N":{">>":["ℕ"]},"O":{">>":["𝕆"]},"P":{">>":["ℙ"]},"Q":{">>":["ℚ"]},"R":{">>":["ℝ"]},"S":{">>":["𝕊"]},"T":{">>":["𝕋"]},"U":{">>":["𝕌"]},"V":{">>":["𝕍"]},"W":{">>":["𝕎"]},"X":{">>":["𝕏"]},"Y":{">>":["𝕐"]},"Z":{">>":["ℤ"]},"a":{">>":["𝕒"],"c":{"k":{"c":{"o":{"n":{"g":{">>":["≌"]}}}},"e":{"p":{"s":{"i":{"l":{"o":{"n":{">>":["∍"]}}}}}}},"p":{"r":{"i":{"m":{"e":{">>":["‵"]}}}}},"s":{"i":{"m":{">>":["∽"],"e":{"q":{">>":["⋍"]}}}}}}},"r":{"w":{"e":{"d":{"g":{"e":{">>":["⊼"]}}}}}}},"b":{">>":["𝕓"]},"c":{">>":["𝕔"]},"d":{">>":["𝕕"]},"e":{">>":["𝕖"],"c":{"a":{"u":{"s":{"e":{">>":["∵"]}}}}},"t":{"a":{">>":["β"]},"h":{">>":["ℶ"]},"w":{"e":{"e":{"n":{">>":["≬"]}}}}}},"f":{">>":["𝕗"]},"g":{">>":["𝕘"]},"h":{">>":["𝕙"]},"i":{">>":["𝕚"],"g":{"c":{"a":{"p":{">>":["⋂"]}},"i":{"r":{"c":{">>":["◯"]}}},"u":{"p":{">>":["⋃"]}}},"s":{"t":{"a":{"r":{">>":["★"]}}}},"t":{"r":{"i":{"a":{"n":{"g":{"l":{"e":{"d":{"o":{"w":{"n":{">>":["▽"]}}}},"u":{"p":{">>":["△"]}}}}}}}}}},"v":{"e":{"e":{">>":["⋁"]}}},"w":{"e":{"d":{"g":{"e":{">>":["⋀"]}}}}}},"o":{"h":{"a":{"z":{"a":{"r":{"d":{">>":["☣"]}}}}}}},"t":{"c":{"o":{"i":{"n":{">>":["₿"]}}}}}},"j":{">>":["𝕛"]},"k":{">>":["𝕜"]},"l":{">>":["𝕝"],"a":{"c":{"k":{"l":{"o":{"z":{"e":{"n":{"g":{"e":{">>":["✦"]}}}}}}},"s":{"m":{"i":{"l":{"e":{"y":{">>":["☻"]}}}}},"q":{"u":{"a":{"r":{"e":{">>":["▪"]}}}}}},"t":{"r":{"i":{"a":{"n":{"g":{"l":{"e":{">>":["▴"],"d":{"o":{"w":{"n":{">>":["▾"]}}}},"l":{"e":{"f":{"t":{">>":["◂"]}}}},"r":{"i":{"g":{"h":{"t":{">>":["▸"]}}}}}}}}}}}}}}}}},"m":{">>":["𝕞"]},"n":{">>":["𝕟"]},"o":{">>":["𝕠"],"t":{">>":["⊥"]},"w":{"t":{"i":{"e":{">>":["⋈"]}}}},"x":{"m":{"i":{"n":{"u":{"s":{">>":["⊟"]}}}}},"p":{"l":{"u":{"s":{">>":["⊞"]}}}},"t":{"i":{"m":{"e":{"s":{">>":["⊠"]}}}}}}},"p":{">>":["𝕡"]},"q":{">>":["𝕢"]},"r":{">>":["𝕣"],"o":{"k":{"e":{"n":{"b":{"a":{"r":{">>":["¦"]}}}}}}}},"s":{">>":["𝕤"]},"t":{">>":["𝕥"]},"u":{">>":["𝕦","•","◦","‣","⁌","⁍"],"b":{">>":["•"]},"m":{"p":{"e":{"q":{">>":["≏"]}}}},"t":{">>":["‣"]},"w":{">>":["◦"]}},"v":{">>":["𝕧"]},"w":{">>":["𝕨"]},"x":{">>":["⊠","𝕩"]},"y":{">>":["𝕪"]},"z":{">>":["𝕫"]}},"c":{">>":["⌜","⌝","⌞","⌟","⌈","⌉","⌊","⌋","̧"],"C":{">>":["Ç"]},"D":{">>":["Ḑ"]},"E":{">>":["Ȩ"]},"G":{">>":["Ģ"]},"H":{">>":["Ḩ"]},"K":{">>":["Ķ"]},"L":{">>":["Ļ"]},"N":{">>":["Ņ"]},"R":{">>":["Ŗ"]},"S":{">>":["Ş"]},"T":{">>":["Ţ"]},"\\":{"'":{"C":{">>":["Ḉ"]},"c":{">>":["ḉ"]},"{":{"C":{"}":{">>":["Ḉ"]}},"c":{"}":{">>":["ḉ"]}}}},"u":{"E":{">>":["Ḝ"]},"e":{">>":["ḝ"]},"{":{"E":{"}":{">>":["Ḝ"]}},"e":{"}":{">>":["ḝ"]}}}}},"a":{"p":{">>":["∩"]},"u":{"t":{"i":{"o":{"n":{">>":["☡"]}}}}}},"c":{">>":["ç"]},"d":{">>":["ḑ"],"o":{"t":{">>":["·"],"s":{">>":["⋯"]}}}},"e":{">>":["ȩ"],"d":{"i":{">>":["₵"]}},"l":{"s":{"i":{"u":{"s":{">>":["℃"]}}}}},"n":{"t":{">>":["¢"],"e":{"r":{"d":{"o":{"t":{">>":["·"]}}}}}}}},"g":{">>":["ģ"]},"h":{">>":["ḩ"],"e":{"c":{"k":{"m":{"a":{"r":{"k":{">>":["✓"]}}}}}}},"i":{">>":["χ"]}},"i":{".":{".":{">>":["◌"]},">>":["◎"]},">>":["●","○","◎","◌","◯","◍","◐","◑","◒","◓","◔","◕","◖","◗","◠","◡","◴","◵","◶","◷","⚆","⚇","⚈","⚉"],"O":{">>":["◯"]},"b":{">>":["●"]},"r":{"c":{">>":["∘"],"e":{"q":{">>":["≗"]}},"l":{"e":{"a":{"r":{"r":{"o":{"w":{"l":{"e":{"f":{"t":{">>":["↺"]}}}},"r":{"i":{"g":{"h":{"t":{">>":["↻"]}}}}}}}}}},"d":{"R":{">>":["®"]},"S":{">>":["Ⓢ"]},"a":{"s":{"t":{">>":["⊛"]}}},"c":{"i":{"r":{"c":{">>":["⊚"]}}}},"d":{"a":{"s":{"h":{">>":["⊝"]}}}}}}}}},"w":{">>":["○"]}},"k":{">>":["ķ"]},"l":{">>":["⌞","⌟","⌊","⌋","ļ"],"L":{">>":["⌊"]},"R":{">>":["⌋"]},"l":{">>":["⌞"]},"r":{">>":["⌟"]},"u":{"b":{"s":{"u":{"i":{"t":{">>":["♣"]}}}}}}},"n":{">>":["ņ"]},"o":{"l":{"o":{"n":{">>":["₡"],"e":{"q":{">>":["≔"]}}}}},"m":{"p":{">>":["∘"],"l":{"e":{"m":{"e":{"n":{"t":{">>":["∁"]}}}}}}}},"n":{"g":{">>":["≅"]},"s":{"t":{"r":{"u":{"c":{"t":{"i":{"o":{"n":{">>":["🚧"]}}}}}}}}}},"p":{"r":{"o":{"d":{">>":["∐"]}}},"y":{"r":{"i":{"g":{"h":{"t":{">>":["©"]}}}}}}}},"r":{">>":["ŗ"],"u":{"z":{"e":{"i":{"r":{"o":{">>":["₢"]}}}}}}},"s":{">>":["ş"]},"t":{">>":["ţ"]},"u":{">>":["⌜","⌝","⌈","⌉"],"L":{">>":["⌈"]},"R":{">>":["⌉"]},"l":{">>":["⌜"]},"p":{">>":["∪"]},"r":{">>":["⌝"],"l":{"y":{"e":{"q":{"p":{"r":{"e":{"c":{">>":["⋞"]}}}},"s":{"u":{"c":{"c":{">>":["⋟"]}}}}}},"p":{"r":{"e":{"c":{"e":{"q":{">>":["≼"]}}}}}},"v":{"e":{"e":{">>":["⋎"]}}},"w":{"e":{"d":{"g":{"e":{">>":["⋏"]}}}}}}},"r":{"e":{"n":{"c":{"y":{">>":["¤"]}}}}},"v":{"e":{"a":{"r":{"r":{"o":{"w":{"l":{"e":{"f":{"t":{">>":["↶"]}}}},"r":{"i":{"g":{"h":{"t":{">>":["↷"]}}}}}}}}}}}}}},"{":{"C":{"}":{">>":["Ç"]}},"D":{"}":{">>":["Ḑ"]}},"E":{"}":{">>":["Ȩ"]}},"G":{"}":{">>":["Ģ"]}},"H":{"}":{">>":["Ḩ"]}},"K":{"}":{">>":["Ķ"]}},"L":{"}":{">>":["Ļ"]}},"N":{"}":{">>":["Ņ"]}},"R":{"}":{">>":["Ŗ"]}},"S":{"}":{">>":["Ş"]}},"T":{"}":{">>":["Ţ"]}},"c":{"}":{">>":["ç"]}},"d":{"}":{">>":["ḑ"]}},"e":{"}":{">>":["ȩ"]}},"g":{"}":{">>":["ģ"]}},"h":{"}":{">>":["ḩ"]}},"k":{"}":{">>":["ķ"]}},"l":{"}":{">>":["ļ"]}},"n":{"}":{">>":["ņ"]}},"r":{"}":{">>":["ŗ"]}},"s":{"}":{">>":["ş"]}},"t":{"}":{">>":["ţ"]}},"}":{">>":["¸"]}}},"d":{"-":{"2":{">>":["⇊"]},">>":["↓"],"u":{"-":{">>":["⇵"]}},"|":{">>":["↧"]}},"=":{"=":{">>":["⟱"]},">>":["⇓"]},">>":["↓","⇓","⟱","⇊","⇵","↧","⇩","↡","⇃","⇂","⇣","⇟","↵","↲","↳","➥","↯","̣"],"\\":{".":{"S":{">>":["Ṩ"]},"s":{">>":["ṩ"]},"{":{"S":{"}":{">>":["Ṩ"]}},"s":{"}":{">>":["ṩ"]}}}},"=":{"L":{">>":["Ḹ"]},"R":{">>":["Ṝ"]},"l":{">>":["ḹ"]},"r":{">>":["ṝ"]},"{":{"L":{"}":{">>":["Ḹ"]}},"R":{"}":{">>":["Ṝ"]}},"l":{"}":{">>":["ḹ"]}},"r":{"}":{">>":["ṝ"]}}}}},"a":{"g":{">>":["†"],"g":{"e":{"r":{">>":["†"]}}}},"l":{"e":{"t":{"h":{">>":["ℸ"]}}}},"s":{"h":{"v":{">>":["⊣"]}}}},"d":{"-":{">>":["↡"]},"a":{"g":{">>":["‡"],"g":{"e":{"r":{">>":["‡"]}}}}},"o":{"t":{"s":{">>":["⋱"]}}}},"e":{"f":{"=":{">>":["≝"]},"s":{">>":["≙"]}},"g":{"r":{"e":{"e":{">>":["°"]}}}},"i":{">>":["ϯ"]},"l":{"t":{"a":{">>":["δ"]}}}},"h":{">>":["ð"]},"i":{".":{">>":["◈"]},">>":["◆","◇","◈"],"a":{"m":{"e":{"t":{"e":{"r":{">>":["⌀"]}}}},"o":{"n":{"d":{">>":["⋄"],"s":{"u":{"i":{"t":{">>":["♢"]}}}}}}}}},"b":{">>":["◆"]},"e":{">>":["⚀","⚁","⚂","⚃","⚄","⚅"]},"g":{"a":{"m":{"m":{"a":{">>":["ϝ"]}}}}},"v":{">>":["÷"],"i":{"d":{"e":{"o":{"n":{"t":{"i":{"m":{"e":{"s":{">>":["⋇"]}}}}}}}}},"s":{"i":{"o":{"n":{">>":["÷"]}}}}}},"w":{">>":["◇"]}},"l":{"-":{">>":["↙"]},"=":{">>":["⇙"]},">>":["↙","⇙"]},"o":{"n":{"g":{">>":["₫"]}},"t":{"e":{"q":{">>":["≐"],"d":{"o":{"t":{">>":["≑"]}}}}},"p":{"l":{"u":{"s":{">>":["∔"]}}}},"s":{"q":{"u":{"a":{"r":{"e":{">>":["⊡"]}}}}}}},"w":{"n":{"a":{"r":{"r":{"o":{"w":{">>":["↓"]}}}}},"d":{"o":{"w":{"n":{"a":{"r":{"r":{"o":{"w":{"s":{">>":["⇊"]}}}}}}}}}},"l":{"e":{"f":{"t":{"h":{"a":{"r":{"p":{"o":{"o":{"n":{">>":["⇃"]}}}}}}}}}}},"r":{"i":{"g":{"h":{"t":{"h":{"a":{"r":{"p":{"o":{"o":{"n":{">>":["⇂"]}}}}}}}}}}}}}}},"r":{"-":{">>":["↘"]},"=":{">>":["⇘"]},">>":["↘","⇘","⇲","➴","➷","➘"],"a":{"c":{"h":{"m":{"a":{">>":["₯"]}}}}}},"z":{">>":["↯"]},"{":{"A":{"}":{">>":["Ạ"]}},"B":{"}":{">>":["Ḅ"]}},"D":{"}":{">>":["Ḍ"]}},"E":{"}":{">>":["Ẹ"]}},"H":{"}":{">>":["Ḥ"]}},"I":{"}":{">>":["Ị"]}},"K":{"}":{">>":["Ḳ"]}},"L":{"}":{">>":["Ḷ"]}},"M":{"}":{">>":["Ṃ"]}},"N":{"}":{">>":["Ṇ"]}},"O":{"}":{">>":["Ọ"]}},"R":{"}":{">>":["Ṛ"]}},"S":{"}":{">>":["Ṣ"]}},"T":{"}":{">>":["Ṭ"]}},"U":{"}":{">>":["Ụ"]}},"V":{"}":{">>":["Ṿ"]}},"W":{"}":{">>":["Ẉ"]}},"Y":{"}":{">>":["Ỵ"]}},"Z":{"}":{">>":["Ẓ"]}},"a":{"}":{">>":["ạ"]}},"b":{"}":{">>":["ḅ"]}},"d":{"}":{">>":["ḍ"]}},"e":{"}":{">>":["ẹ"]}},"h":{"}":{">>":["ḥ"]}},"i":{"}":{">>":["ị"]}},"k":{"}":{">>":["ḳ"]}},"l":{"}":{">>":["ḷ"]}},"m":{"}":{">>":["ṃ"]}},"n":{"}":{">>":["ṇ"]}},"o":{"}":{">>":["ọ"]}},"r":{"}":{">>":["ṛ"]}},"s":{"}":{">>":["ṣ"]}},"t":{"}":{">>":["ṭ"]}},"u":{"}":{">>":["ụ"]}},"v":{"}":{">>":["ṿ"]}},"w":{"}":{">>":["ẉ"]}},"y":{"}":{">>":["ỵ"]}},"z":{"}":{">>":["ẓ"]}}}},"e":{"l":{"l":{">>":["ℓ"]}},"m":{">>":["—"],"p":{"t":{"y":{"s":{"e":{"t":{">>":["∅"]}}}}}}},"n":{">>":["–"],"t":{"a":{"i":{"l":{"s":{">>":["⊢","⊣","⊤","⊥","⊦","⊧","⊨","⊩","⊪","⊫","⊬","⊭","⊮","⊯"]}}}}}},"p":{"s":{"i":{"l":{"o":{"n":{">>":["ε"]}}}}}},"q":{">>":["=","∼","∽","≈","≋","∻","∾","∿","≀","≃","⋍","≂","≅","≌","≊","≡","≣","≐","≑","≒","≓","≔","≕","≖","≗","≘","≙","≚","≛","≜","≝","≞","≟","≍","≎","≏","≬","⋕"],"c":{"i":{"r":{"c":{">>":["≖"]}}},"o":{"l":{"o":{"n":{">>":["≕"]}}}}},"n":{">>":["≠","≁","≉","≄","≇","≆","≢","≭"]},"s":{"l":{"a":{"n":{"t":{"g":{"t":{"r":{">>":["⋝"]}}},"l":{"e":{"s":{"s":{">>":["⋜"]}}}}}}}}},"u":{"i":{"v":{">>":["≡"]}}}},"t":{"a":{">>":["η"]}},"u":{"r":{"o":{">>":["€"]}}},"x":{">>":["∃"],"i":{"s":{"t":{"s":{">>":["∃"]}}}},"n":{">>":["∄"]}}},"f":{"a":{"c":{"s":{"i":{"m":{"i":{"l":{"e":{">>":["℻"]}}}}}}},"l":{"l":{"i":{"n":{"g":{"d":{"o":{"t":{"s":{"e":{"q":{">>":["≒"]}}}}}}}}}}}},"e":{"i":{">>":["ϥ"]},"m":{"a":{"l":{"e":{">>":["♀"]}}}}},"l":{"a":{"t":{">>":["♭"]}},"q":{">>":["‹"],"q":{">>":["«"]}}},"o":{"r":{"a":{"l":{"l":{">>":["∀"]}}}}},"r":{"a":{"c":{"1":{"2":{">>":["½"]},"3":{">>":["⅓"]},"4":{">>":["¼"]},"5":{">>":["⅕"]},"6":{">>":["⅙"]},"8":{">>":["⅛"]},">>":["⅟"]},"2":{"3":{">>":["⅔"]},"5":{">>":["⅖"]}},"3":{"4":{">>":["¾"]},"5":{">>":["⅗"]},"8":{">>":["⅜"]}},"4":{"5":{">>":["⅘"]}},"5":{"6":{">>":["⅚"]},"8":{">>":["⅝"]}},"7":{"8":{">>":["⅞"]}},">>":["¼","½","¾","⅓","⅔","⅕","⅖","⅗","⅘","⅙","⅚","⅛","⅜","⅝","⅞","⅟"]}},"o":{"w":{"n":{">>":["⌢"]}}},"q":{">>":["›"],"q":{">>":["»"]}}}},"g":{"a":{"m":{"m":{"a":{">>":["γ"]}}},"n":{"g":{"i":{"a":{">>":["ϫ"]}}}}},"e":{">>":["≥"],"n":{">>":["≱"]},"q":{">>":[">","≫","⋙","≥","≧","≳","≷","≻","≽","≿","⊃","⊇","⋑","⊐","⊒","⊱","⊳","⊵","⋗","⋛","⋝","⋟"],"n":{">>":["≯","≱","≩","≵","⋧","≹","⊁","⋩","⊅","⊉","⊋","⋣","⋥","⋫","⋭","⋡"]},"q":{">>":["≧"]},"s":{"l":{"a":{"n":{"t":{">>":["≥"]}}}}}},"t":{"s":{">>":["←"]}}},"g":{">>":["≫"],"g":{">>":["⋙"]}},"i":{"m":{"e":{"l":{">>":["ℷ"]}}}},"l":{"b":{">>":["⊓"]},"q":{">>":["‚"],"q":{">>":["„"]}}},"n":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["⋧"]}}}}}},"e":{"q":{">>":["≩"],"q":{">>":["≩"]}}},"s":{"i":{"m":{">>":["⋧"]}}}},"r":{"q":{">>":["‘"],"q":{">>":["“"]}}},"t":{"r":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["≳"]}}}}}},"d":{"o":{"t":{">>":["⋗"]}}},"e":{"q":{"l":{"e":{"s":{"s":{">>":["⋛"]}}}},"q":{"l":{"e":{"s":{"s":{">>":["⋛"]}}}}}}},"l":{"e":{"s":{"s":{">>":["≷"]}}}},"s":{"i":{"m":{">>":["≳"]}}}}},"u":{"a":{"r":{"a":{"n":{"i":{">>":["₲"]}}}}}},"v":{"e":{"r":{"t":{"n":{"e":{"q":{"q":{">>":["≩"]}}}}}}}}},"h":{"b":{"a":{"r":{">>":["ℏ"]}}},"e":{"a":{"r":{"t":{"s":{"u":{"i":{"t":{">>":["♥"]}}}}}}},"t":{"a":{">>":["ͱ"]}}},"o":{"o":{"k":{"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↩"]}}}}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↪"]}}}}}}}}}}}},"r":{"i":{">>":["ϩ"]}}},"r":{"y":{"v":{"n":{"i":{"a":{">>":["₴"]}}}}}}},"i":{">>":["∩","ı"],"f":{"f":{">>":["⇔"]}},"m":{"a":{"t":{"h":{">>":["ı"]}}}},"n":{">>":["∈"],"c":{"r":{"e":{"m":{"e":{"n":{"t":{">>":["∆"]}}}}}}},"f":{">>":["∞"],"t":{"y":{">>":["∞"]}}},"n":{">>":["∉"]},"t":{">>":["∫"],"e":{"g":{"r":{"a":{"l":{">>":["∫","∬","∭","∮","∯","∰","∱","∲","∳"]}}}},"r":{"c":{"a":{"l":{">>":["⊺"]}}},"s":{"e":{"c":{"t":{"i":{"o":{"n":{">>":["∩","⋂","∧","⋀","⋏","⨇","⊓","⨅","⋒","∏","⊼","⨉"]}}}}}}}}}}},"o":{"t":{"a":{">>":["ι"]}}}},"j":{"o":{"i":{"n":{">>":["⋈","⋉","⋊","⋋","⋌","⨝","⟕","⟖","⟗"]}}}},"k":{">>":["̨"],"A":{">>":["Ą"]},"E":{">>":["Ę"]},"I":{">>":["Į"]},"O":{">>":["Ǫ"]},"U":{">>":["Ų"]},"\\":{"=":{"O":{">>":["Ǭ"]},"o":{">>":["ǭ"]},"{":{"O":{"}":{">>":["Ǭ"]}},"o":{"}":{">>":["ǭ"]}}}}},"a":{">>":["ą"],"p":{"p":{"a":{">>":["κ"]}}}},"e":{">>":["ę"],"l":{"v":{"i":{"n":{">>":["K"]}}}}},"h":{"e":{"i":{">>":["ϧ"]}}},"i":{">>":["į"],"p":{">>":["₭"]}},"o":{">>":["ǫ"],"p":{"p":{"a":{">>":["ϟ"]}}}},"u":{">>":["ų"]},"{":{"A":{"}":{">>":["Ą"]}},"E":{"}":{">>":["Ę"]}},"I":{"}":{">>":["Į"]}},"O":{"}":{">>":["Ǫ"]}},"U":{"}":{">>":["Ų"]}},"a":{"}":{">>":["ą"]}},"e":{"}":{">>":["ę"]}},"i":{"}":{">>":["į"]}},"o":{"}":{">>":["ǫ"]}},"u":{"}":{">>":["ų"]}},"}":{">>":["˛"]}}},"l":{"-":{"-":{">>":["⟵"]},"2":{">>":["⇇"]},">":{">>":["↢"]},">>":["←"],"n":{">>":["↚"]},"r":{"-":{">>":["⇆"]}},"|":{">>":["↤"]}},"=":{"=":{">>":["⇚"]},">>":["⇐"],"n":{">>":["⇍"]}},">>":["←","⇐","⇚","⇇","⇆","↤","⇦","↞","↼","↽","⇠","⇺","↜","⇽","⟵","⟸","↚","⇍","⇷","↹","↢","↩","↫","⇋","⇜","⇤","⟻","⟽","⤆","↶","↺","⟲","ł"],"a":{"m":{"b":{"d":{"a":{">>":["λ"],"b":{"a":{"r":{">>":["ƛ"]}}}}}},"d":{"a":{">>":["λ"]}}},"n":{"g":{"l":{"e":{">>":["⟨"]}}}},"r":{"i":{">>":["₾"]}}},"b":{"a":{"g":{">>":["⟅"]}}},"c":{"e":{"i":{"l":{">>":["⌈"]}}}},"d":{"a":{"t":{"a":{">>":["《"]}}},"o":{"t":{"s":{">>":["…"]}}},"q":{">>":["“"]}},"e":{">>":["≤"],"a":{"d":{"s":{"t":{"o":{">>":["↝"]}}}}},"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["←"],"t":{"a":{"i":{"l":{">>":["↢"]}}}}}}}}},"h":{"a":{"r":{"p":{"o":{"o":{"n":{"d":{"o":{"w":{"n":{">>":["↽"]}}}},"u":{"p":{">>":["↼"]}}}}}}}}},"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{"s":{">>":["⇇"]}}}}}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↔"],"s":{">>":["⇆"]}}}}}},"h":{"a":{"r":{"p":{"o":{"o":{"n":{"s":{">>":["⇋"]}}}}}}}},"s":{"q":{"u":{"i":{"g":{"a":{"r":{"r":{"o":{"w":{">>":["↭"]}}}}}}}}}}}}}}},"t":{"h":{"r":{"e":{"e":{"t":{"i":{"m":{"e":{"s":{">>":["⋋"]}}}}}}}}}}}},"n":{">>":["≰"]},"q":{">>":["<","≪","⋘","≤","≦","≲","≶","≺","≼","≾","⊂","⊆","⋐","⊏","⊑","⊰","⊲","⊴","⋖","⋚","⋜","⋞"],"n":{">>":["≮","≰","≨","≴","⋦","≸","⊀","⋨","⊄","⊈","⊊","⋢","⋤","⋪","⋬","⋠"]},"q":{">>":["≦"]},"s":{"l":{"a":{"n":{"t":{">>":["≤"]}}}}}},"s":{"s":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["≲"]}}}}}},"d":{"o":{"t":{">>":["⋖"]}}},"e":{"q":{"g":{"t":{"r":{">>":["⋚"]}}},"q":{"g":{"t":{"r":{">>":["⋚"]}}}}}},"g":{"t":{"r":{">>":["≶"]}}},"s":{"i":{"m":{">>":["≲"]}}}}}},"f":{"l":{"o":{"o":{"r":{">>":["⌊"]}}}}},"h":{"d":{">>":["◁"]}},"i":{"r":{"a":{">>":["₤"]}}},"l":{"-":{">>":["↞"]},">>":["≪"],"b":{"r":{"a":{"c":{"k":{"e":{"t":{">>":["〚"]}}}}}}},"c":{"o":{"r":{"n":{"e":{"r":{">>":["⌞"]}}}}}}},"n":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["⋦"]}}}}}},"e":{"q":{">>":["≨"],"q":{">>":["≨"]}}},"o":{"t":{">>":["¬"]}},"s":{"i":{"m":{">>":["⋦"]}}}},"o":{"n":{"g":{"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["←"]}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↔"]}}}}}}}}}}}}}},"m":{"a":{"p":{"s":{"t":{"o":{">>":["↦"]}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["→"]}}}}}}}}}}}},"o":{"p":{"a":{"r":{"r":{"o":{"w":{"l":{"e":{"f":{"t":{">>":["↫"]}}}},"r":{"i":{"g":{"h":{"t":{">>":["↬"]}}}}}}}}}}}},"z":{"e":{"n":{"g":{"e":{">>":["✧"]}}}}}},"q":{">>":["‘"]},"r":{"-":{"-":{">>":["⟷"]},">>":["↔"],"n":{">>":["↮"]}},"=":{">>":["⇔"],"n":{">>":["⇎"]}},">>":["↔","⇔","⇼","↭","⇿","⟷","⟺","↮","⇎","⇹"],"c":{"o":{"r":{"n":{"e":{"r":{">>":["⌟"]}}}}}},"~":{">>":["↭"]}},"t":{"i":{"m":{"e":{"s":{">>":["⋉"]}}}}},"u":{"b":{">>":["⊔"]}},"v":{"e":{"r":{"t":{"n":{"e":{"q":{"q":{">>":["≨"]}}}}}}}},"~":{">>":["↜","⇜"]}},"m":{"=":{">>":["≞"]},"a":{"l":{"e":{">>":["♂"]},"t":{"e":{"s":{"e":{">>":["✠"]}}}}},"n":{"a":{"t":{">>":["₼"]}}},"p":{"s":{"t":{"o":{">>":["↦"]}}}},"t":{"h":{"s":{"c":{"r":{"{":{"I":{"}":{">>":["ℐ"]}}}}}}}}},"e":{"a":{"s":{"u":{"r":{"e":{"d":{"a":{"n":{"g":{"l":{"e":{">>":["∡"]}}}}}}}}}}},"m":{"b":{"e":{"r":{">>":["∈","∉","∊","∋","∌","∍","⋲","⋳","⋴","⋵","⋶","⋷","⋸","⋹","⋺","⋻","⋼","⋽","⋾","⋿"]}}}}},"h":{"o":{">>":["℧"]}},"i":{"c":{"r":{"o":{">>":["µ"]}}},"d":{">>":["∣"]},"l":{"l":{">>":["₥"]}},"n":{"u":{"s":{">>":["−"]}}}},"o":{"d":{"e":{"l":{"s":{">>":["⊧"]}}}}},"p":{">>":["∓"]},"u":{">>":["μ"],"l":{"t":{"i":{"m":{"a":{"p":{">>":["⊸"]}}},"p":{"l":{"i":{"c":{"a":{"t":{"i":{"o":{"n":{">>":["×"]}}}}}}}}}}}}}},"n":{"L":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇍"]}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇎"]}}}}}}}}}}}}}},"R":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇏"]}}}}}}}}}},"V":{"D":{"a":{"s":{"h":{">>":["⊯"]}}}},"d":{"a":{"s":{"h":{">>":["⊮"]}}}}},"a":{"b":{"l":{"a":{">>":["∇"]}}},"i":{"r":{"a":{">>":["₦"]}}},"p":{"p":{"r":{"o":{"x":{">>":["≉"]}}}}},"t":{"u":{"r":{"a":{"l":{">>":["♮"]}}}}}},"c":{"o":{"n":{"g":{">>":["≇"]}}}},"e":{">>":["≠"],"a":{"r":{"r":{"o":{"w":{">>":["↗"]}}}}},"g":{">>":["¬"]},"q":{">>":["≠"],"u":{"i":{"v":{">>":["≢"]}}}},"w":{"l":{"i":{"n":{"e":{">>":["\u2028"]}}}}},"x":{"i":{"s":{"t":{"s":{">>":["∄"]}}}}}},"g":{"e":{"q":{">>":["≱"],"q":{">>":["≱"]},"s":{"l":{"a":{"n":{"t":{">>":["≱"]}}}}}}},"t":{"r":{">>":["≯"]}}},"i":{">>":["∋"],"n":{">>":["∌"]}},"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↚"]}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↮"]}}}}}}}}}}}},"q":{">>":["≰"],"q":{">>":["≰"]},"s":{"l":{"a":{"n":{"t":{">>":["≰"]}}}}}},"s":{"s":{">>":["≮"]}}}},"m":{"i":{"d":{">>":["∤"]}}},"o":{"m":{"i":{"s":{"m":{"a":{">>":["𐆎"]}}}}},"t":{">>":["̸"],"e":{">>":["♩","♪","♫","♬"]},"i":{"n":{">>":["∉"]}}}},"p":{"a":{"r":{"a":{"l":{"l":{"e":{"l":{">>":["∦"]}}}}}}},"r":{"e":{"c":{">>":["⊀"],"e":{"q":{">>":["⋠"]}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↛"]}}}}}}}}}},"s":{"h":{"o":{"r":{"t":{"m":{"i":{"d":{">>":["∤"]}}},"p":{"a":{"r":{"a":{"l":{"l":{"e":{"l":{">>":["∦"]}}}}}}}}}}}},"i":{"m":{">>":["≁"],"e":{"q":{">>":["≄"]}}}},"u":{"b":{"s":{"e":{"t":{">>":["⊄"],"e":{"q":{">>":["⊈"],"q":{">>":["⊈"]}}}}}}},"c":{"c":{">>":["⊁"],"e":{"q":{">>":["⋡"]}}}},"p":{"s":{"e":{"t":{">>":["⊅"],"e":{"q":{">>":["⊉"],"q":{">>":["⊉"]}}}}}}}}},"t":{"r":{"i":{"a":{"n":{"g":{"l":{"e":{"l":{"e":{"f":{"t":{">>":["⋪"],"e":{"q":{">>":["⋬"]}}}}}},"r":{"i":{"g":{"h":{"t":{">>":["⋫"],"e":{"q":{">>":["⋭"]}}}}}}}}}}}}}}},"u":{">>":["ν"],"m":{"e":{"r":{"o":{">>":["№"]}}}}},"v":{"D":{"a":{"s":{"h":{">>":["⊭"]}}}},"d":{"a":{"s":{"h":{">>":["⊬"]}}}}},"w":{"a":{"r":{"r":{"o":{"w":{">>":["↖"]}}}}}}},"o":{"*":{">>":["⊛"]},"+":{">>":["⊕"]},"-":{"-":{">>":["⊖"]},">>":["⊝"]},".":{">>":["⊙"]},"/":{">>":["⊘"]},"=":{">>":["⊜"]},">>":["∘","ø"],"c":{"t":{"a":{"g":{"o":{"n":{"a":{"l":{">>":["🛑"]}}}}}}}},"d":{"o":{"t":{">>":["⊙"]}}},"e":{">>":["œ"]},"h":{"m":{">>":["Ω"]}},"i":{"n":{"t":{">>":["∮"]}}},"m":{"e":{"g":{"a":{">>":["ω"]}}},"i":{"c":{"r":{"o":{"n":{">>":["ο"]}}}},"n":{"u":{"s":{">>":["⊖"]}}}}},"o":{">>":["⊚"]},"p":{"l":{"u":{"s":{">>":["⊕"]}}}},"r":{"=":{">>":["≚"]},">>":["∨"],"d":{"f":{"e":{"m":{"i":{"n":{"i":{"n":{"e":{">>":["ª"]}}}}}}}},"m":{"a":{"s":{"c":{"u":{"l":{"i":{"n":{"e":{">>":["º"]}}}}}}}}}}},"s":{"l":{"a":{"s":{"h":{">>":["⊘"]}}}}},"t":{"i":{"m":{"e":{"s":{">>":["⊗"]}}}}},"u":{"n":{"c":{"e":{">>":["℥"]}}}},"x":{">>":["⊗"]}},"p":{"a":{">>":["▰","▱"],"b":{">>":["▰"]},"r":{"a":{"g":{"r":{"a":{"p":{"h":{">>":["¶"]}}}}},"l":{"l":{"e":{"l":{">>":["∥"]}}}}},"t":{"i":{"a":{"l":{">>":["∂"]}}},"n":{"e":{"r":{"s":{"h":{"i":{"p":{">>":["㉐"]}}}}}}}}},"w":{">>":["▱"]}},"e":{"r":{">>":["⅌"],"m":{"i":{"l":{">>":["‰"]}}},"p":{">>":["⊥"]}},"s":{"e":{"t":{"a":{">>":["₧"]}}},"o":{">>":["₱"]}}},"h":{"i":{">>":["ϕ"]}},"i":{">>":["π"],"l":{"c":{"r":{"o":{"w":{">>":["¶"]}}}}},"t":{"c":{"h":{"f":{"o":{"r":{"k":{">>":["⋔"]}}}}}}}},"m":{">>":["±"]},"o":{"u":{"n":{"d":{">>":["£"],"s":{">>":["£"]}}}}},"r":{"e":{"c":{">>":["≺"],"a":{"p":{"p":{"r":{"o":{"x":{">>":["≾"]}}}}}},"e":{"q":{">>":["≼"]}},"n":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["⋨"]}}}}}},"s":{"i":{"m":{">>":["⋨"]}}}},"s":{"i":{"m":{">>":["≾"]}}}}},"i":{"m":{"e":{">>":["′"]}}},"o":{"d":{">>":["∏"]},"h":{"i":{"b":{"i":{"t":{"e":{"d":{">>":["🛇"]}}}}}}},"p":{"t":{"o":{">>":["∝"]}}}}},"s":{"i":{">>":["ψ"]}}},"q":{"e":{"d":{">>":["∎"]}},"u":{"a":{"d":{">>":[" "]}}}},"r":{"-":{"-":{">>":["⟶"]},"2":{">>":["⇉"]},"3":{">>":["⇶"]},">":{">>":["↣"]},">>":["→"],"l":{"-":{">>":["⇄"]}},"n":{">>":["↛"]},"o":{">>":["⊸"]},"|":{">>":["↦"]}},"=":{"=":{">>":["⇛"]},">>":["⇒"],"n":{">>":["⇏"]}},">>":["→","⇒","⇛","⇉","⇄","↦","⇨","↠","⇀","⇁","⇢","⇻","↝","⇾","⟶","⟹","↛","⇏","⇸","⇶","↴","↣","↪","↬","⇌","⇝","⇥","⟼","⟾","⤇","↷","↻","⟳","⇰","⇴","⟴","⟿","➵","➸","➙","➔","➛","➜","➝","➞","➟","➠","➡","➢","➣","➤","➧","➨","➩","➪","➫","➬","➭","➮","➯","➱","➲","➳","➺","➻","➼","➽","➾","⊸"],"a":{"d":{"i":{"o":{"a":{"c":{"t":{"i":{"v":{"e":{">>":["☢"]}}}}}}}}},"n":{"g":{"l":{"e":{">>":["⟩"]}}}}},"b":{"a":{"g":{">>":["⟆"]}}},"c":{"e":{"i":{"l":{">>":["⌉"]}}}},"d":{"a":{"t":{"a":{">>":["》"]}}},"q":{">>":["”"]}},"e":{">>":["▬","▭","▮","▯"],"b":{">>":["▬","▮"]},"g":{"i":{"s":{"t":{"e":{"r":{"e":{"d":{">>":["®"]}}}}}}}},"w":{">>":["▭","▯"]}},"f":{"l":{"o":{"o":{"r":{">>":["⌋"]}}}}},"h":{"d":{">>":["▷"]},"o":{">>":["ρ"]}},"i":{"a":{"l":{">>":["﷼"]}},"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["→"],"t":{"a":{"i":{"l":{">>":["↣"]}}}}}}}}},"h":{"a":{"r":{"p":{"o":{"o":{"n":{"d":{"o":{"w":{"n":{">>":["⇁"]}}}},"u":{"p":{">>":["⇀"]}}}}}}}}},"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{"s":{">>":["⇄"]}}}}}},"h":{"a":{"r":{"p":{"o":{"o":{"n":{"s":{">>":["⇌"]}}}}}}}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{"s":{">>":["⇉"]}}}}}}}}}}},"t":{"h":{"r":{"e":{"e":{"t":{"i":{"m":{"e":{"s":{">>":["⋌"]}}}}}}}}}}}}},"s":{"i":{"n":{"g":{"d":{"o":{"t":{"s":{"e":{"q":{">>":["≓"]}}}}}}}}}}},"q":{">>":["’"]},"r":{"-":{">>":["↠"]},"b":{"r":{"a":{"c":{"k":{"e":{"t":{">>":["〛"]}}}}}}}},"t":{"i":{"m":{"e":{"s":{">>":["⋊"]}}}}},"u":{"b":{"l":{"e":{">>":["₽"]}}},"p":{"e":{"e":{">>":["₨"]}}}},"~":{">>":["↝","⇝","⟿"]}},"s":{"a":{"m":{"p":{"i":{">>":["ϡ"]}}},"n":{">>":["ϻ"]}},"b":{"s":{">>":["﹨"]}},"e":{"a":{"r":{"r":{"o":{"w":{">>":["↘"]}}}}},"c":{"t":{"i":{"o":{"n":{">>":["§"]}}}}},"t":{"m":{"i":{"n":{"u":{"s":{">>":["∖"]}}}}}}},"h":{"a":{"r":{"p":{">>":["♯"]}}},"e":{"i":{">>":["ϣ"]}},"i":{"m":{"a":{">>":["ϭ"]}}},"o":{">>":["ϸ"],"r":{"t":{"m":{"i":{"d":{">>":["∣"]}}},"p":{"a":{"r":{"a":{"l":{"l":{"e":{"l":{">>":["∥"]}}}}}}}}}}}},"i":{"g":{"m":{"a":{">>":["σ"]}}},"m":{">>":["∼"],"e":{"q":{">>":["≃"]}}}},"m":{"a":{"l":{"l":{"a":{"m":{"a":{"l":{"g":{">>":["∐"]}}}}},"s":{"e":{"t":{"m":{"i":{"n":{"u":{"s":{">>":["∖"]}}}}}}},"m":{"i":{"l":{"e":{">>":["⌣"]}}}}}}}},"i":{"l":{"e":{">>":["⌣"]}}}},"p":{"a":{"d":{"e":{"s":{"u":{"i":{"t":{">>":["♠"]}}}}}}},"e":{"s":{"m":{"i":{"l":{"o":{">>":["₷"]}}}}}},"h":{"e":{"r":{"i":{"c":{"a":{"l":{"a":{"n":{"g":{"l":{"e":{">>":["∢"]}}}}}}}}}}}}},"q":{".":{">>":["▣"]},">>":["■","□","◼","◻","◾","◽","▣","▢","▤","▥","▦","▧","▨","▩","◧","◨","◩","◪","◫","◰","◱","◲","◳"],"b":{">>":["■","◼","◾"]},"c":{"a":{"p":{">>":["⊓"]}},"u":{"p":{">>":["⊔"]}}},"o":{">>":["▢"]},"s":{"u":{"b":{"s":{"e":{"t":{">>":["⊏"],"e":{"q":{">>":["⊑"]}}}}}},"p":{"s":{"e":{"t":{">>":["⊐"],"e":{"q":{">>":["⊒"]}}}}}}}},"u":{"a":{"r":{"e":{">>":["□"]}}},"b":{"=":{">>":["⊑"],"n":{">>":["⋢"]}},">>":["⊏"]},"i":{"g":{"a":{"r":{"r":{"o":{"w":{"r":{"i":{"g":{"h":{"t":{">>":["⇝"]}}}}}}}}}}}},"p":{"=":{">>":["⊒"],"n":{">>":["⋣"]}},">>":["⊐"]}},"w":{">>":["□","◻","◽"]}},"s":{">>":["ß"]},"t":{"1":{"2":{">>":["✹"]}},"4":{">>":["✦","✧"]},"6":{">>":["✶"]},"8":{">>":["✴"]},">>":["⋆","✦","✧","✶","✴","✹","★","☆","✪","✫","✯","✰","✵","✷","✸"],"a":{"r":{">>":["⋆"]}},"i":{"g":{"m":{"a":{">>":["ϛ"]}}}},"r":{"a":{"i":{"g":{"h":{"t":{"p":{"h":{"i":{">>":["φ"]}}}}}}}}}},"u":{"b":{"=":{">>":["⊆"],"n":{">>":["⊈"]}},">>":["⊂"],"n":{">>":["⊄"]},"s":{"e":{"t":{">>":["⊂"],"e":{"q":{">>":["⊆"],"q":{">>":["⊆"]}}},"n":{"e":{"q":{">>":["⊊"],"q":{">>":["⊊"]}}}}}}}},"c":{"c":{">>":["≻"],"a":{"p":{"p":{"r":{"o":{"x":{">>":["≿"]}}}}}},"c":{"u":{"r":{"l":{"y":{"e":{"q":{">>":["≽"]}}}}}}},"e":{"q":{">>":["≽"]}},"n":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["⋩"]}}}}}},"s":{"i":{"m":{">>":["⋩"]}}}},"s":{"i":{"m":{">>":["≿"]}}}}},"m":{">>":["∑"]},"p":{"=":{">>":["⊇"],"n":{">>":["⊉"]}},">>":["⊃"],"n":{">>":["⊅"]},"s":{"e":{"t":{">>":["⊃"],"e":{"q":{">>":["⊇"],"q":{">>":["⊇"]}}},"n":{"e":{"q":{">>":["⊋"],"q":{">>":["⊋"]}}}}}}}},"r":{"d":{"3":{">>":["∛"]},"4":{">>":["∜"]},">>":["√"]}}},"w":{"a":{"r":{"r":{"o":{"w":{">>":["↙"]}}}}}}},"t":{"=":{">>":["≜"]},">>":["◂","◃","◄","◅","▸","▹","►","▻","▴","▵","▾","▿","◢","◿","◣","◺","◤","◸","◥","◹"],"a":{"u":{">>":["τ"]}},"b":{">>":["◂","▸","▴","▾","◄","►","◢","◣","◤","◥"]},"e":{"l":{"e":{"p":{"h":{"o":{"n":{"e":{">>":["℡"]}}}}}}},"n":{"g":{"e":{">>":["₸"]}}},"x":{"t":{"b":{"a":{"h":{"t":{">>":["฿"]}}},"i":{"g":{"c":{"i":{"r":{"c":{"l":{"e":{">>":["⃝"]}}}}}}}}},"c":{"i":{"r":{"c":{"l":{"e":{"d":{"P":{">>":["℗"]}}}}}}},"o":{"l":{"o":{"n":{"m":{"o":{"n":{"e":{"t":{"a":{"r":{"y":{">>":["₡"]}}}}}}}}}}}}},"d":{"i":{"e":{"d":{">>":["✝"]}},"s":{"c":{"o":{"u":{"n":{"t":{">>":["⁒"]}}}}}}}},"e":{"s":{"t":{"i":{"m":{"a":{"t":{"e":{"d":{">>":["℮"]}}}}}}}}},"f":{"r":{"a":{"c":{"t":{"i":{"o":{"n":{"s":{"o":{"l":{"i":{"d":{"u":{"s":{">>":["⁄"]}}}}}}}}}}}}}}},"i":{"n":{"t":{"e":{"r":{"r":{"o":{"b":{"a":{"n":{"g":{">>":["‽"]}}}}}}}}}}},"l":{"i":{"r":{"a":{">>":["₤"]}}},"q":{"u":{"i":{"l":{"l":{">>":["⁅"]}}}}}},"m":{"u":{">>":["µ"],"s":{"i":{"c":{"a":{"l":{"n":{"o":{"t":{"e":{">>":["♪"]}}}}}}}}}}},"n":{"a":{"i":{"r":{"a":{">>":["₦"]}}}},"u":{"m":{"e":{"r":{"o":{">>":["№"]}}}}}},"o":{"p":{"e":{"n":{"b":{"u":{"l":{"l":{"e":{"t":{">>":["◦"]}}}}}}}}}},"p":{"e":{"r":{"t":{"e":{"n":{"t":{"h":{"o":{"u":{"s":{"a":{"n":{"d":{">>":["‱"]}}}}}}}}}}}},"s":{"o":{">>":["₱"]}}}},"r":{"e":{"c":{"i":{"p":{"e":{">>":["℞"]}}}},"f":{"e":{"r":{"e":{"n":{"c":{"e":{"m":{"a":{"r":{"k":{">>":["※"]}}}}}}}}}}}},"q":{"u":{"i":{"l":{"l":{">>":["⁆"]}}}}}},"w":{"o":{"n":{">>":["₩"]}}}}}},"h":{">>":["þ"],"e":{"r":{"e":{"f":{"o":{"r":{"e":{">>":["∴"]}}}}}},"t":{"a":{">>":["θ"]}}},"i":{"c":{"k":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["≈"]}}}}}},"s":{"i":{"m":{">>":["∼"]}}}}}}},"i":{"e":{">>":["⁀"]},"m":{"e":{"s":{">>":["×"]}}}},"o":{">>":["→"],"p":{">>":["⊤"]}},"r":{"i":{"a":{"n":{"g":{"l":{"e":{">>":["▵"],"d":{"o":{"w":{"n":{">>":["▿"]}}}},"l":{"e":{"f":{"t":{">>":["◃"],"e":{"q":{">>":["⊴"]}}}}}},"q":{">>":["≜"]},"r":{"i":{"g":{"h":{"t":{">>":["▹"],"e":{"q":{">>":["⊵"]}}}}}}}}}}}}}},"u":{"g":{"r":{"i":{"k":{">>":["₮"]}}}}},"w":{">>":["◃","▹","▵","▿","◅","▻","◿","◺","◸","◹"],"o":{"h":{"e":{"a":{"d":{"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↞"]}}}}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↠"]}}}}}}}}}}}}}}}}},"u":{"+":{">>":["⊎"]},"-":{"2":{">>":["⇈"]},">>":["↑"],"d":{"-":{">>":["⇅"]}},"|":{">>":["↥"]}},".":{">>":["⊍"]},"=":{"=":{">>":["⟰"]},">>":["⇑"]},">>":["↑","⇑","⟰","⇈","⇅","↥","⇧","↟","↿","↾","⇡","⇞","↰","↱","➦","⇪","⇫","⇬","⇭","⇮","⇯","̆"],"A":{">>":["Ă"]},"E":{">>":["Ĕ"]},"G":{">>":["Ğ"]},"I":{">>":["Ĭ"]},"O":{">>":["Ŏ"]},"U":{">>":["Ŭ"]},"\\":{"'":{"A":{">>":["Ắ"]},"a":{">>":["ắ"]},"{":{"A":{"}":{">>":["Ắ"]}},"a":{"}":{">>":["ắ"]}}}},"`":{"A":{">>":["Ằ"]},"a":{">>":["ằ"]},"{":{"A":{"}":{">>":["Ằ"]}},"a":{"}":{">>":["ằ"]}}}},"d":{"{":{"A":{"}":{">>":["Ặ"]}},"a":{"}":{">>":["ặ"]}}}},"~":{"A":{">>":["Ẵ"]},"a":{">>":["ẵ"]},"{":{"A":{"}":{">>":["Ẵ"]}},"a":{"}":{">>":["ẵ"]}}}}},"a":{">>":["ă"]},"d":{"-":{">>":["↕"],"|":{">>":["↨"]}},"=":{">>":["⇕"]},">>":["↕","⇕","↨","⇳"]},"e":{">>":["ĕ"]},"g":{">>":["ğ"]},"i":{">>":["ĭ"]},"l":{"-":{">>":["↖"]},"=":{">>":["⇖"]},">>":["↖","⇖","⇱","↸"],"c":{"o":{"r":{"n":{"e":{"r":{">>":["⌜"]}}}}}}},"n":{">>":["∪"],"c":{"e":{"r":{"t":{"a":{"i":{"n":{"t":{"y":{">>":["⯑"]}}}}}}}}},"d":{"e":{"r":{"t":{"i":{"e":{">>":["‿"]}}}}}},"i":{"o":{"n":{">>":["∪","⋃","∨","⋁","⋎","⨈","⊔","⨆","⋓","∐","⨿","⊽","⊻","⊍","⨃","⊎","⨄","⊌","∑","⅀"]}}}},"o":{">>":["ŏ"]},"p":{"a":{"r":{"r":{"o":{"w":{">>":["↑"]}}}}},"d":{"o":{"w":{"n":{"a":{"r":{"r":{"o":{"w":{">>":["↕"]}}}}}}}}},"l":{"e":{"f":{"t":{"h":{"a":{"r":{"p":{"o":{"o":{"n":{">>":["↿"]}}}}}}}}}},"u":{"s":{">>":["⊎"]}}},"r":{"i":{"g":{"h":{"t":{"h":{"a":{"r":{"p":{"o":{"o":{"n":{">>":["↾"]}}}}}}}}}}}},"s":{"i":{"l":{"o":{"n":{">>":["υ"]}}}}},"u":{"p":{"a":{"r":{"r":{"o":{"w":{"s":{">>":["⇈"]}}}}}}}}},"r":{"-":{">>":["↗"]},"=":{">>":["⇗"]},">>":["↗","⇗","➶","➹","➚"],"c":{"o":{"r":{"n":{"e":{"r":{">>":["⌝"]}}}}}}},"u":{"-":{">>":["↟"]},">>":["ŭ"]},"{":{"A":{"}":{">>":["Ă"]}},"E":{"}":{">>":["Ĕ"]}},"G":{"}":{">>":["Ğ"]}},"I":{"}":{">>":["Ĭ"]}},"O":{"}":{">>":["Ŏ"]}},"U":{"}":{">>":["Ŭ"]}},"\\":{"i":{"}":{">>":["ĭ"]}}},"a":{"}":{">>":["ă"]}},"e":{"}":{">>":["ĕ"]}},"g":{"}":{">>":["ğ"]}},"i":{"}":{">>":["ĭ"]}},"o":{"}":{">>":["ŏ"]}},"u":{"}":{">>":["ŭ"]}},"}":{">>":["˘"]}}},"v":{">>":["̌"],"A":{">>":["Ǎ"]},"C":{">>":["Č"]},"D":{">>":["Ď"],"a":{"s":{"h":{">>":["⊨"]}}}},"E":{">>":["Ě"]},"G":{">>":["Ǧ"]},"H":{">>":["Ȟ"]},"I":{">>":["Ǐ"]},"K":{">>":["Ǩ"]},"L":{">>":["Ľ"]},"N":{">>":["Ň"]},"O":{">>":["Ǒ"]},"R":{">>":["Ř"]},"S":{">>":["Š"]},"T":{">>":["Ť"]},"U":{">>":["Ǔ"]},"Z":{">>":["Ž"]},"\\":{".":{"S":{">>":["Ṧ"]},"s":{">>":["ṧ"]},"{":{"S":{"}":{">>":["Ṧ"]}},"s":{"}":{">>":["ṧ"]}}}}},"a":{">>":["ǎ"],"r":{"b":{"e":{"t":{"a":{">>":["ϐ"]}}}},"k":{"a":{"i":{">>":["ϗ"]},"p":{"p":{"a":{">>":["ϰ"]}}}}},"p":{"h":{"i":{">>":["φ"]}},"i":{">>":["ϖ"]},"r":{"i":{"m":{"e":{">>":["′"]}}},"o":{"p":{"t":{"o":{">>":["∝"]}}}}}},"r":{"h":{"o":{">>":["ϱ"]}}},"s":{"i":{"g":{"m":{"a":{">>":["ς"]}}}}},"t":{"h":{"e":{"t":{"a":{">>":["ϑ"]}}}},"r":{"i":{"a":{"n":{"g":{"l":{"e":{"l":{"e":{"f":{"t":{">>":["⊲"]}}}},"r":{"i":{"g":{"h":{"t":{">>":["⊳"]}}}}}}}}}}}}}}},"c":{">>":["č"]},"d":{">>":["ď"],"a":{"s":{"h":{">>":["⊢"]}}},"o":{"t":{"s":{">>":["⋮"]}}}},"e":{">>":["ě"],"e":{">>":["∨"],"b":{"a":{"r":{">>":["⊻"]}}}}},"g":{">>":["ǧ"]},"h":{">>":["ȟ"]},"i":{">>":["ǐ"]},"j":{">>":["ǰ"]},"k":{">>":["ǩ"]},"l":{">>":["ľ"]},"n":{">>":["ň"]},"o":{">>":["ǒ"]},"r":{">>":["ř"]},"s":{">>":["š"]},"t":{">>":["ť"]},"u":{">>":["ǔ"]},"z":{">>":["ž"]},"{":{"A":{"}":{">>":["Ǎ"]}},"C":{"}":{">>":["Č"]}},"D":{"}":{">>":["Ď"]}},"E":{"}":{">>":["Ě"]}},"G":{"}":{">>":["Ǧ"]}},"H":{"}":{">>":["Ȟ"]}},"I":{"}":{">>":["Ǐ"]}},"K":{"}":{">>":["Ǩ"]}},"L":{"}":{">>":["Ľ"]}},"N":{"}":{">>":["Ň"]}},"O":{"}":{">>":["Ǒ"]}},"R":{"}":{">>":["Ř"]}},"S":{"}":{">>":["Š"]}},"T":{"}":{">>":["Ť"]}},"U":{"}":{">>":["Ǔ"]}},"Z":{"}":{">>":["Ž"]}},"\\":{"i":{"}":{">>":["ǐ"]}},"j":{"}":{">>":["ǰ"]}}},"a":{"}":{">>":["ǎ"]}},"c":{"}":{">>":["č"]}},"d":{"}":{">>":["ď"]}},"e":{"}":{">>":["ě"]}},"g":{"}":{">>":["ǧ"]}},"h":{"}":{">>":["ȟ"]}},"i":{"}":{">>":["ǐ"]}},"j":{"}":{">>":["ǰ"]}},"k":{"}":{">>":["ǩ"]}},"l":{"}":{">>":["ľ"]}},"n":{"}":{">>":["ň"]}},"o":{"}":{">>":["ǒ"]}},"r":{"}":{">>":["ř"]}},"s":{"}":{">>":["š"]}},"t":{"}":{">>":["ť"]}},"u":{"}":{">>":["ǔ"]}},"z":{"}":{">>":["ž"]}},"}":{">>":["ˇ"]}}},"w":{"a":{"r":{"n":{"i":{"n":{"g":{">>":["⚠"]}}}}}},"e":{"d":{"g":{"e":{">>":["∧"]}}}},"o":{"n":{">>":["₩"]}},"p":{">>":["℘"]},"r":{">>":["≀"]}},"x":{">>":["×"],"i":{">>":["ξ"]}},"y":{"e":{"n":{">>":["¥"]}}},"z":{"e":{"t":{"a":{">>":["ζ"]}}}},"{":{"{":{">>":["⦃"]}},"|":{")":{">>":["⦈"]},"-":{">>":["⊢"],"n":{">>":["⊬"]}},"=":{">>":["⊨"],"n":{">>":["⊭"]}},">>":["∣"],"n":{">>":["∤"]},"|":{"-":{">>":["⊩"],"n":{">>":["⊮"]}},"=":{">>":["⊫"],"n":{">>":["⊯"]}},">>":["∥"],"n":{">>":["∦"]},"|":{"-":{">>":["⊪"]}}}},"}":{"}":{">>":["⦄"]}},"~":{"-":{">>":["≃"],"n":{">>":["≄"]}},"=":{">>":["≅"],"n":{">>":["≇"]}},">>":["∼","̃"],"A":{">>":["Ã"]},"E":{">>":["Ẽ"]},"I":{">>":["Ĩ"]},"N":{">>":["Ñ"]},"O":{">>":["Õ"]},"U":{">>":["Ũ"]},"V":{">>":["Ṽ"]},"Y":{">>":["Ỹ"]},"\\":{"\"":{"O":{">>":["Ṏ"]},"o":{">>":["ṏ"]},"{":{"O":{"}":{">>":["Ṏ"]}},"o":{"}":{">>":["ṏ"]}}}},"'":{"O":{">>":["Ṍ"]},"U":{">>":["Ṹ"]},"o":{">>":["ṍ"]},"u":{">>":["ṹ"]},"{":{"O":{"}":{">>":["Ṍ"]}},"U":{"}":{">>":["Ṹ"]}},"o":{"}":{">>":["ṍ"]}},"u":{"}":{">>":["ṹ"]}}}},"=":{"O":{">>":["Ȭ"]},"o":{">>":["ȭ"]},"{":{"O":{"}":{">>":["Ȭ"]}},"o":{"}":{">>":["ȭ"]}}}}},"a":{">>":["ã"]},"e":{">>":["ẽ"]},"i":{">>":["ĩ"]},"n":{">>":["≁","ñ"]},"o":{">>":["õ"]},"u":{">>":["ũ"]},"v":{">>":["ṽ"]},"y":{">>":["ỹ"]},"{":{"A":{"}":{">>":["Ã"]}},"E":{"}":{">>":["Ẽ"]}},"I":{"}":{">>":["Ĩ"]}},"N":{"}":{">>":["Ñ"]}},"O":{"}":{">>":["Õ"]}},"U":{"}":{">>":["Ũ"]}},"V":{"}":{">>":["Ṽ"]}},"Y":{"}":{">>":["Ỹ"]}},"\\":{"i":{"}":{">>":["ĩ"]}}},"a":{"}":{">>":["ã"]}},"e":{"}":{">>":["ẽ"]}},"i":{"}":{">>":["ĩ"]}},"n":{"}":{">>":["ñ"]}},"o":{"}":{">>":["õ"]}},"u":{"}":{">>":["ũ"]}},"v":{"}":{">>":["ṽ"]}},"y":{"}":{">>":["ỹ"]}},"}":{">>":["˜"]}},"~":{"-":{">>":["≊"]},">>":["≈"],"n":{">>":["≉"]},"~":{">>":["≋"]}}}}; +module.exports.default = {" ":{">>":[" "]},"!":{"!":{">>":["‼"]},">>":["!"],"?":{">>":["⁉"]},"`":{">>":["¡"]}},"\"":{"'":{">>":["“"]},"<":{">>":["«"]},">":{">>":["»"]},">>":["̈"],"A":{">>":["Ä"]},"E":{">>":["Ë"]},"H":{">>":["Ḧ"]},"I":{">>":["Ï"]},"O":{">>":["Ö"]},"U":{">>":["Ü"]},"W":{">>":["Ẅ"]},"X":{">>":["Ẍ"]},"Y":{">>":["Ÿ"]},"`":{">>":["„"]},"a":{">>":["ä"]},"e":{">>":["ë"]},"h":{">>":["ḧ"]},"i":{">>":["ï"]},"o":{">>":["ö"]},"t":{">>":["ẗ"]},"u":{">>":["ü"]},"w":{">>":["ẅ"]},"x":{">>":["ẍ"]},"y":{">>":["ÿ"]},"{":{"A":{"}":{">>":["Ä"]}},"E":{"}":{">>":["Ë"]}},"I":{"}":{">>":["Ï"]}},"O":{"}":{">>":["Ö"]}},"U":{"}":{">>":["Ü"]}},"Y":{"}":{">>":["Ÿ"]}},"\\":{"i":{"}":{">>":["ï"]}}},"a":{"}":{">>":["ä"]}},"e":{"}":{">>":["ë"]}},"o":{"}":{">>":["ö"]}},"u":{"}":{">>":["ü"]}},"y":{"}":{">>":["ÿ"]}},"}":{">>":["¨"]}}},"#":{">>":["♯","#"]},"%":{">>":["%"]},"&":{">>":["⅋","&"]},"'":{">>":["′","″","‴","⁗","'","́"],"A":{">>":["Á"]},"C":{">>":["Ć"]},"E":{">>":["É"]},"G":{">>":["Ǵ"]},"I":{">>":["Í"]},"K":{">>":["Ḱ"]},"L":{">>":["Ĺ"]},"M":{">>":["Ḿ"]},"N":{">>":["Ń"]},"O":{">>":["Ó"]},"P":{">>":["Ṕ"]},"R":{">>":["Ŕ"]},"S":{">>":["Ś"]},"U":{">>":["Ú"]},"W":{">>":["Ẃ"]},"Y":{">>":["Ý"]},"Z":{">>":["Ź"]},"\\":{"A":{"E":{">>":["Ǽ"]}},"O":{">>":["Ǿ"]},"a":{"e":{">>":["ǽ"]}},"o":{">>":["ǿ"]}},"a":{">>":["á"]},"c":{">>":["ć"]},"e":{">>":["é"]},"g":{">>":["ǵ"]},"i":{">>":["í"]},"k":{">>":["ḱ"]},"l":{">>":["ĺ"]},"m":{">>":["ḿ"]},"n":{">>":["ń"]},"o":{">>":["ó"]},"p":{">>":["ṕ"]},"r":{">>":["ŕ"]},"s":{">>":["ś"]},"u":{">>":["ú"]},"w":{">>":["ẃ"]},"y":{">>":["ý"]},"z":{">>":["ź"]},"{":{"A":{"}":{">>":["Á"]}},"C":{"}":{">>":["Ć"]}},"E":{"}":{">>":["É"]}},"G":{"}":{">>":["Ǵ"]}},"I":{"}":{">>":["Í"]}},"L":{"}":{">>":["Ĺ"]}},"N":{"}":{">>":["Ń"]}},"O":{"}":{">>":["Ó"]}},"R":{"}":{">>":["Ŕ"]}},"S":{"}":{">>":["Ś"]}},"U":{"}":{">>":["Ú"]}},"Y":{"}":{">>":["Ý"]}},"Z":{"}":{">>":["Ź"]}},"\\":{"A":{"E":{"}":{">>":["Ǽ"]}}},"O":{"}":{">>":["Ǿ"]}},"a":{"e":{"}":{">>":["ǽ"]}}},"i":{"}":{">>":["í"]}},"o":{"}":{">>":["ǿ"]}}},"a":{"}":{">>":["á"]}},"c":{"}":{">>":["ć"]}},"e":{"}":{">>":["é"]}},"g":{"}":{">>":["ǵ"]}},"l":{"}":{">>":["ĺ"]}},"n":{"}":{">>":["ń"]}},"o":{"}":{">>":["ó"]}},"r":{"}":{">>":["ŕ"]}},"s":{"}":{">>":["ś"]}},"u":{"}":{">>":["ú"]}},"y":{"}":{">>":["ý"]}},"z":{"}":{">>":["ź"]}},"}":{">>":["´"]}}},"(":{"(":{">>":["⦅","⦅"]},"=":{">>":["≘"]},">>":["(","[","{","⁅","⁽","₍","〈","⎴","⟅","⟦","⟨","⟪","⦃","〈","《","「","『","【","〔","〖","〚","︵","︷","︹","︻","︽","︿","﹁","﹃","﹙","﹛","﹝","(","[","{","「","❪","❬","❰","❲","❴","⟮","⦅","⦗","⧼","⸨","❮","⦇","⦉"],"b":{">>":["⟅"]},"|":{">>":["⦇"]}},")":{")":{">>":["⦆","⦆"]},">>":[")","]","}","⁆","⁾","₎","〉","⎵","⟆","⟧","⟩","⟫","⦄","〉","》","」","』","】","〕","〗","〛","︶","︸","︺","︼","︾","﹀","﹂","﹄","﹚","﹜","﹞",")","]","}","」","❫","❭","❱","❳","❵","⟯","⦆","⦘","⧽","⸩","❯","⦈","⦊"],"b":{">>":["⟆"]}},"*":{"=":{">>":["≛"]},">>":["⋆","*"]},"+":{" ":{">>":["⊹"]},">>":["+"]},",":{">>":["ʻ","،","⸲","⸴","⹁","⹉","、","︐","︑","﹐","﹑",",","、"," "]},"-":{"-":{"-":{">>":["─","│","┌","┐","└","┘","├","┤","┬","┼","┴","╴","╵","╶","╷","╭","╮","╯","╰","╱","╲","╳","—"]},".":{">>":["╌","╎","┄","┆","┈","┊","╍","╏","┅","┇","┉","┋"]},"=":{">>":["═","║","╔","╗","╚","╝","╠","╣","╦","╬","╩","╒","╕","╘","╛","╞","╡","╤","╪","╧","╓","╖","╙","╜","╟","╢","╥","╫","╨"]},">":{">>":["⟶"]},">>":["–"],"_":{">>":["━","┃","┏","┓","┗","┛","┣","┫","┳","╋","┻","╸","╹","╺","╻","┍","┯","┑","┕","┷","┙","┝","┿","┥","┎","┰","┒","┖","┸","┚","┠","╂","┨","┞","╀","┦","┟","╁","┧","┢","╈","┪","┡","╇","┩","┮","┭","┶","┵","┾","┽","┲","┱","┺","┹","╊","╉","╆","╅","╄","╃","╿","╽","╼","╾"]}},":":{">>":["∹"]},">":{">>":["→"],"n":{">>":["↛"]}},">>":["­"],"o":{">>":["⊸"]},"|":{">>":["⊣"]},"~":{">>":["≂"]}},".":{"+":{">>":["∔"]},"-":{">>":["∸"]},".":{".":{">>":["⋯","⋮","⋰","⋱"]}},"=":{".":{">>":["≑"]},">>":["≐"]},">>":["∙",".","̇"],"A":{">>":["Ȧ"]},"B":{">>":["Ḃ"]},"C":{">>":["Ċ"]},"D":{">>":["Ḋ"]},"E":{">>":["Ė"]},"F":{">>":["Ḟ"]},"G":{">>":["Ġ"]},"H":{">>":["Ḣ"]},"I":{">>":["İ"]},"M":{">>":["Ṁ"]},"N":{">>":["Ṅ"]},"O":{">>":["Ȯ"]},"P":{">>":["Ṗ"]},"R":{">>":["Ṙ"]},"S":{">>":["Ṡ"]},"T":{">>":["Ṫ"]},"W":{">>":["Ẇ"]},"X":{">>":["Ẋ"]},"Y":{">>":["Ẏ"]},"Z":{">>":["Ż"]},"a":{">>":["ȧ"]},"b":{">>":["ḃ"]},"c":{">>":["ċ"]},"d":{">>":["ḋ"]},"e":{">>":["ė"]},"f":{">>":["ḟ"]},"g":{">>":["ġ"]},"h":{">>":["ḣ"]},"m":{">>":["ṁ"]},"n":{">>":["ṅ"]},"o":{">>":["ȯ"]},"p":{">>":["ṗ"]},"r":{">>":["ṙ"]},"s":{">>":["ṡ"]},"t":{">>":["ṫ"]},"w":{">>":["ẇ"]},"x":{">>":["ẋ"]},"y":{">>":["ẏ"]},"z":{">>":["ż"]},"{":{"A":{"}":{">>":["Ȧ"]}},"C":{"}":{">>":["Ċ"]}},"E":{"}":{">>":["Ė"]}},"G":{"}":{">>":["Ġ"]}},"I":{"}":{">>":["İ"]}},"O":{"}":{">>":["Ȯ"]}},"Z":{"}":{">>":["Ż"]}},"a":{"}":{">>":["ȧ"]}},"c":{"}":{">>":["ċ"]}},"g":{"}":{">>":["ġ"]}},"o":{"}":{">>":["ȯ"]}},"z":{"}":{">>":["ż"]}},"}":{">>":["˙"]}}},"/":{">>":["/","\","‌"]},"0":{">>":["∅"]},"8":{"<":{">>":["✂","✄"]}},":":{":":{"-":{">>":["∺"]},">>":["∷"]},"=":{">>":["≔"]},">>":["∶","⦂","ː","꞉","˸","፥","፦",":","﹕","︓"," "],"~":{">>":["∻"]}},";":{">>":["⨾","⨟","⁏","፤","꛶",";","︔","﹔","⍮","⸵",";"," "]},"<":{"-":{"-":{">":{">>":["⟷"]},">>":["⟵"]},">":{">>":["↔"],"n":{">>":["↮"]}},">>":["←"],"n":{">>":["↚"]}},"<":{">>":["⟪"]},"=":{">":{">>":["⇔"],"n":{">>":["⇎"]}},">>":["≤","⇐"],"n":{">>":["≰"]}},">>":["⟨","<","≪","⋘","≺","⊂","⋐","⊏","⊰","⊲","⋖","<"],"n":{">>":["≮"]},"|":{">>":["⦉"]},"~":{">>":["≲"],"n":{">>":["⋦"],"n":{">>":["≴"]}}}},"=":{":":{">>":["≕"]},"=":{"=":{">>":["≣"]},">>":["≡"],"n":{">>":["≢"]}},">":{">>":["⇒"],"n":{">>":["⇏"]}},">>":["=","̄"],"A":{">>":["Ā"]},"E":{">>":["Ē"]},"G":{">>":["Ḡ"]},"I":{">>":["Ī"]},"O":{">>":["Ō"]},"U":{">>":["Ū"]},"Y":{">>":["Ȳ"]},"\\":{"A":{"E":{">>":["Ǣ"]}},"a":{"e":{">>":["ǣ"]}}},"a":{">>":["ā"]},"e":{">>":["ē"]},"g":{">>":["ḡ"]},"i":{">>":["ī"]},"n":{">>":["≠"]},"o":{">>":["≗","ō"]},"u":{">>":["ū"]},"y":{">>":["ȳ"]},"{":{"A":{"}":{">>":["Ā"]}},"E":{"}":{">>":["Ē"]}},"I":{"}":{">>":["Ī"]}},"O":{"}":{">>":["Ō"]}},"U":{"}":{">>":["Ū"]}},"Y":{"}":{">>":["Ȳ"]}},"\\":{"A":{"E":{"}":{">>":["Ǣ"]}}},"a":{"e":{"}":{">>":["ǣ"]}}},"i":{"}":{">>":["ī"]}}},"a":{"}":{">>":["ā"]}},"e":{"}":{">>":["ē"]}},"o":{"}":{">>":["ō"]}},"u":{"}":{">>":["ū"]}},"y":{"}":{">>":["ȳ"]}},"}":{">>":["¯"]}}},">":{"=":{">>":["≥"],"n":{">>":["≱"]}},">":{">>":["⟫"]},">>":["⟩",">","≫","⋙","≻","⊃","⋑","⊐","⊱","⊳","⋗",">"],"n":{">>":["≯"]},"~":{">>":["≳"],"n":{">>":["⋧"],"n":{">>":["≵"]}}}},"?":{"!":{">>":["‽","⁈"]},"=":{">>":["≟"]},">>":["?"],"?":{">>":["⁇"]},"`":{">>":["¿"]}},"@":{">>":["@"]},"A":{"A":{">>":["Å"]},"E":{">>":["Æ"]},"n":{"d":{">>":["⋀"]}}},"B":{"0":{">>":["𝟎"]},"1":{">>":["𝟏"]},"2":{">>":["𝟐"]},"3":{">>":["𝟑"]},"4":{">>":["𝟒"]},"5":{">>":["𝟓"]},"6":{">>":["𝟔"]},"7":{">>":["𝟕"]},"8":{">>":["𝟖"]},"9":{">>":["𝟗"]},"A":{">>":["𝐀"]},"B":{">>":["𝐁"]},"C":{">>":["𝐂"]},"D":{">>":["𝐃"]},"E":{">>":["𝐄"]},"F":{">>":["𝐅"]},"G":{">>":["𝐆"],"A":{">>":["𝚨"]},"B":{">>":["𝚩"]},"C":{">>":["𝚾"]},"D":{">>":["𝚫"]},"E":{">>":["𝚬"]},"F":{">>":["𝚽"]},"G":{">>":["𝚪"]},"H":{">>":["𝚮"]},"I":{">>":["𝚰"]},"K":{">>":["𝚱"]},"L":{">>":["𝚲"]},"M":{">>":["𝚳"]},"N":{">>":["𝚴"]},"O":{">>":["𝛀"]},"P":{">>":["𝚿"]},"R":{">>":["𝚸"]},"S":{">>":["𝚺"]},"T":{">>":["𝚻"],"H":{">>":["𝚯"]}},"U":{">>":["𝚼"]},"X":{">>":["𝚵"]},"Z":{">>":["𝚭"]},"a":{">>":["𝛂"]},"b":{">>":["𝛃"]},"c":{">>":["𝛘"]},"d":{">>":["𝛅"]},"e":{">>":["𝛆"]},"f":{">>":["𝛗"]},"g":{">>":["𝛄"]},"h":{">>":["𝛈"]},"i":{">>":["𝛊"]},"k":{">>":["𝛋"]},"l":{">>":["𝛌"]},"m":{">>":["𝛍"]},"n":{">>":["𝛎"]},"o":{">>":["𝛚"]},"p":{">>":["𝛙"]},"r":{">>":["𝛒"]},"s":{">>":["𝛔"]},"t":{">>":["𝛕"],"h":{">>":["𝛉"]}},"u":{">>":["𝛖"]},"x":{">>":["𝛏"]},"z":{">>":["𝛇"]}},"H":{">>":["𝐇"]},"I":{">>":["𝐈"]},"J":{">>":["𝐉"]},"K":{">>":["𝐊"]},"L":{">>":["𝐋"]},"M":{">>":["𝐌"]},"N":{">>":["𝐍"]},"O":{">>":["𝐎"],"m":{"i":{"c":{"r":{"o":{"n":{">>":["𝚶"]}}}}}}},"P":{">>":["𝐏"],"i":{">>":["𝚷"]}},"Q":{">>":["𝐐"]},"R":{">>":["𝐑"]},"S":{">>":["𝐒"]},"T":{">>":["𝐓"]},"U":{">>":["𝐔"]},"V":{">>":["𝐕"]},"W":{">>":["𝐖"]},"X":{">>":["𝐗"]},"Y":{">>":["𝐘"]},"Z":{">>":["𝐙"]},"a":{">>":["𝐚"]},"b":{">>":["𝐛"],"b":{"{":{"N":{"}":{">>":["ℕ"]}},"P":{"}":{">>":["ℙ"]}},"R":{"}":{">>":["ℝ"]}},"Z":{"}":{">>":["ℤ"]}}}}},"c":{">>":["𝐜"]},"d":{">>":["𝐝"]},"e":{">>":["𝐞"]},"f":{">>":["𝐟"]},"g":{">>":["𝐠"]},"h":{">>":["𝐡"]},"i":{">>":["𝐢"]},"j":{">>":["𝐣"]},"k":{">>":["𝐤"]},"l":{">>":["𝐥"]},"m":{">>":["𝐦"]},"n":{">>":["𝐧"]},"o":{">>":["𝐨"],"m":{"i":{"c":{"r":{"o":{"n":{">>":["𝛐"]}}}}}},"x":{">>":["□"]}},"p":{">>":["𝐩"],"i":{">>":["𝛑"]}},"q":{">>":["𝐪"]},"r":{">>":["𝐫"]},"s":{">>":["𝐬"]},"t":{">>":["𝐭"]},"u":{">>":["𝐮"],"m":{"p":{"e":{"q":{">>":["≎"]}}}}},"v":{">>":["𝐯"]},"w":{">>":["𝐰"]},"x":{">>":["𝐱"]},"y":{">>":["𝐲"]},"z":{">>":["𝐳"]}},"C":{">>":["∁"],"a":{"p":{">>":["⋒"]}},"u":{"p":{">>":["⋓"]}}},"D":{"H":{">>":["Ð"]},"e":{"l":{"t":{"a":{">>":["Δ"]}}}},"i":{"a":{"m":{"o":{"n":{"d":{">>":["◇"]}}}}}},"o":{"w":{"n":{"a":{"r":{"r":{"o":{"w":{">>":["⇓"]}}}}}}}}},"F":{"0":{">>":["0"]},"1":{">>":["1"]},"2":{">>":["2"]},"3":{">>":["3"]},"4":{">>":["4"]},"5":{">>":["5"]},"6":{">>":["6"]},"7":{">>":["7"]},"8":{">>":["8"]},"9":{">>":["9"]},"A":{">>":["A"]},"B":{">>":["B"]},"C":{">>":["C"]},"D":{">>":["D"]},"E":{">>":["E"]},"F":{">>":["F"]},"G":{">>":["G"]},"H":{">>":["H"]},"I":{">>":["I"]},"J":{">>":["J"]},"K":{">>":["K"]},"L":{">>":["L"]},"M":{">>":["M"]},"N":{">>":["N"]},"O":{">>":["O"]},"P":{">>":["P"]},"Q":{">>":["Q"]},"R":{">>":["R"]},"S":{">>":["S"]},"T":{">>":["T"]},"U":{">>":["U"]},"V":{">>":["V"]},"W":{">>":["W"]},"X":{">>":["X"]},"Y":{">>":["Y"]},"Z":{">>":["Z"]},"a":{">>":["a"]},"b":{">>":["b"]},"c":{">>":["c"]},"d":{">>":["d"]},"e":{">>":["e"]},"f":{">>":["f"]},"g":{">>":["g"]},"h":{">>":["h"]},"i":{">>":["i"]},"j":{">>":["j"]},"k":{">>":["k"]},"l":{">>":["l"]},"m":{">>":["m"]},"n":{">>":["n"]},"o":{">>":["o"]},"p":{">>":["p"]},"q":{">>":["q"]},"r":{">>":["r"],"o":{"w":{"n":{"y":{">>":["☹"]}}}}},"s":{">>":["s"]},"t":{">>":["t"]},"u":{">>":["u"]},"v":{">>":["v"]},"w":{">>":["w"]},"x":{">>":["x"]},"y":{">>":["y"]},"z":{">>":["z"]}},"G":{"a":{"m":{"m":{"a":{">>":["Γ"]}}}},"l":{"b":{">>":["⨅"]}}},"H":{">>":["̋"],"O":{">>":["Ő"]},"U":{">>":["Ű"]},"u":{">>":["ű"]},"{":{"O":{"}":{">>":["Ő"]}},"U":{"}":{">>":["Ű"]}},"o":{"}":{">>":["ő"]}},"u":{"}":{">>":["ű"]}},"}":{">>":["˝"]}}},"I":{">>":["⋂"],"m":{">>":["ℑ"]}},"J":{"o":{"i":{"n":{">>":["⋈"]}}}},"L":{">>":["Ł"],"a":{"m":{"b":{"d":{"a":{">>":["Λ"]}}}}},"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇐"]}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇔"]}}}}}}}}}}}},"t":{"t":{"e":{"r":{">>":["✉"]}}}}},"l":{">>":["⋘"],"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇚"]}}}}}}}}},"o":{"n":{"g":{"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇐"]}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇔"]}}}}}}}}}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇒"]}}}}}}}}}}}}},"s":{"h":{">>":["↰"]}},"u":{"b":{">>":["⨆"]}}},"M":{"c":{"B":{">>":["ℬ"]},"E":{">>":["ℰ"]},"F":{">>":["ℱ"]},"H":{">>":["ℋ"]},"I":{">>":["ℐ"]},"L":{">>":["ℒ"]},"M":{">>":["ℳ"]},"R":{">>":["ℛ"]},"e":{">>":["ℯ"]},"g":{">>":["ℊ"]},"o":{">>":["ℴ"]}},"f":{"C":{">>":["ℭ"]},"H":{">>":["ℌ"]},"I":{">>":["ℑ"]},"R":{">>":["ℜ"]},"Z":{">>":["ℨ"]}},"i":{"i":{">>":["ℎ"]}}},"O":{"*":{">>":["⍟"]},"+":{">>":["⨁"]},".":{">>":["⨀"]},">>":["Ø"],"E":{">>":["Œ"]},"m":{"e":{"g":{"a":{">>":["Ω"]}}}},"r":{">>":["⋁"]},"x":{">>":["⨂"]}},"P":{">>":["¶"],"h":{"i":{">>":["Φ"]}},"i":{">>":["Π"]},"s":{"i":{">>":["Ψ"]}}},"R":{"e":{">>":["ℜ"]},"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇒"]}}}}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇛"]}}}}}}}}}},"s":{"h":{">>":["↱"]}}},"S":{">>":["§"],"i":{"g":{"m":{"a":{">>":["Σ"]}}}},"m":{"i":{"l":{"e":{"y":{">>":["☺"]}}}}},"u":{"b":{"s":{"e":{"t":{">>":["⋐"]}}}},"p":{"s":{"e":{"t":{">>":["⋑"]}}}}}},"T":{">>":["◀","◁","▶","▷","▲","△","▼","▽","◬","◭","◮"],"H":{">>":["Þ"]},"b":{">>":["◀","▶","▲","▼"]},"h":{"e":{"t":{"a":{">>":["Θ"]}}}},"w":{">>":["◁","▷","△","▽"]}},"U":{"+":{">>":["⨄"]},".":{">>":["⨃"]},"n":{">>":["⋃"]},"o":{">>":["ő"]},"p":{"a":{"r":{"r":{"o":{"w":{">>":["⇑"]}}}}},"d":{"o":{"w":{"n":{"a":{"r":{"r":{"o":{"w":{">>":["⇕"]}}}}}}}}},"s":{"i":{"l":{"o":{"n":{">>":["Υ"]}}}}}},"{":{"o":{"}":{">>":["ő"]}}}},"V":{"d":{"a":{"s":{"h":{">>":["⊩"]}}}},"e":{"r":{"t":{">>":["‖"]}}},"v":{"d":{"a":{"s":{"h":{">>":["⊪"]}}}}}},"X":{"i":{">>":["Ξ"]}},"[":{"[":{">>":["⟦"]}},"\\":{">>":["\\"],"\\":{">>":["\\\\"]}},"]":{"]":{">>":["⟧"]}},"^":{"(":{">>":["⁽"]},")":{">>":["⁾"]},"+":{">>":["⁺"]},"-":{">>":["⁻"]},"0":{">>":["⁰"]},"1":{">>":["¹"]},"2":{">>":["²"]},"3":{">>":["³"]},"4":{">>":["⁴"]},"5":{">>":["⁵"]},"6":{">>":["⁶"]},"7":{">>":["⁷"]},"8":{">>":["⁸"]},"9":{">>":["⁹"]},"=":{">>":["⁼"]},">>":["̂"],"A":{">>":["Â"]},"C":{">>":["Ĉ"]},"E":{">>":["Ê"]},"G":{">>":["Ĝ"]},"H":{">>":["Ĥ"]},"I":{">>":["Î"]},"J":{">>":["Ĵ"]},"O":{">>":["Ô"]},"S":{">>":["Ŝ"]},"U":{">>":["Û"]},"W":{">>":["Ŵ"]},"Y":{">>":["Ŷ"]},"Z":{">>":["Ẑ"]},"\\":{"g":{"a":{"m":{"m":{"a":{">>":["ˠ"]}}}}}},"a":{">>":["ª","â"]},"c":{">>":["ĉ"]},"e":{">>":["ê"]},"g":{">>":["ĝ"]},"h":{">>":["ĥ","ʰ"]},"i":{">>":["î"]},"j":{">>":["ĵ","ʲ"]},"l":{">>":["ˡ"]},"n":{">>":["ⁿ"]},"o":{">>":["º","ô"]},"r":{">>":["ʳ"]},"s":{">>":["ŝ","ˢ"]},"u":{">>":["û"]},"w":{">>":["ŵ","ʷ"]},"x":{">>":["ˣ"]},"y":{">>":["ŷ","ʸ"]},"z":{">>":["ẑ"]},"{":{"A":{"}":{">>":["Â"]}},"C":{"}":{">>":["Ĉ"]}},"E":{"}":{">>":["Ê"]}},"G":{"}":{">>":["Ĝ"]}},"H":{"}":{">>":["Ĥ"]}},"I":{"}":{">>":["Î"]}},"J":{"}":{">>":["Ĵ"]}},"O":{"}":{">>":["Ô"]}},"S":{"M":{"}":{">>":["℠"]}},"}":{">>":["Ŝ"]}},"T":{"E":{"L":{"}":{">>":["℡"]}}},"M":{"}":{">>":["™"]}}},"U":{"}":{">>":["Û"]}},"W":{"}":{">>":["Ŵ"]}},"Y":{"}":{">>":["Ŷ"]}},"\\":{"i":{"}":{">>":["î"]}},"j":{"}":{">>":["ĵ"]}}},"a":{"}":{">>":["â"]}},"c":{"}":{">>":["ĉ"]}},"e":{"}":{">>":["ê"]}},"g":{"}":{">>":["ĝ"]}},"h":{"}":{">>":["ĥ"]}},"o":{"}":{">>":["ô"]}},"s":{"}":{">>":["ŝ"]}},"u":{"}":{">>":["û"]}},"w":{"}":{">>":["ŵ"]}},"y":{"}":{">>":["ŷ"]}}}},"_":{"(":{">>":["₍"]},")":{">>":["₎"]},"+":{">>":["₊"]},"-":{">>":["₋"]},"0":{">>":["₀"]},"1":{">>":["₁"]},"2":{">>":["₂"]},"3":{">>":["₃"]},"4":{">>":["₄"]},"5":{">>":["₅"]},"6":{">>":["₆"]},"7":{">>":["₇"]},"8":{">>":["₈"]},"9":{">>":["₉"]},"=":{">>":["₌"]},"_":{">>":["_"]}},"`":{">>":["‵","‶","‷","`","̀"],"A":{">>":["À"]},"E":{">>":["È"]},"I":{">>":["Ì"]},"N":{">>":["Ǹ"]},"O":{">>":["Ò"]},"U":{">>":["Ù"]},"W":{">>":["Ẁ"]},"Y":{">>":["Ỳ"]},"a":{">>":["à"]},"e":{">>":["è"]},"i":{">>":["ì"]},"n":{">>":["ǹ"]},"o":{">>":["ò"]},"u":{">>":["ù"]},"w":{">>":["ẁ"]},"y":{">>":["ỳ"]},"{":{"A":{"}":{">>":["À"]}},"E":{"}":{">>":["È"]}},"I":{"}":{">>":["Ì"]}},"N":{"}":{">>":["Ǹ"]}},"O":{"}":{">>":["Ò"]}},"U":{"}":{">>":["Ù"]}},"\\":{"i":{"}":{">>":["ì"]}}},"a":{"}":{">>":["à"]}},"e":{"}":{">>":["è"]}},"n":{"}":{">>":["ǹ"]}},"o":{"}":{">>":["ò"]}},"u":{"}":{">>":["ù"]}}}},"a":{"a":{">>":["å"]},"e":{">>":["æ"]},"l":{"e":{"p":{"h":{">>":["א"]}}},"l":{">>":["∀"]},"p":{"h":{"a":{">>":["α"]}}}},"m":{"a":{"l":{"g":{">>":["∐"]}}}},"n":{"d":{"=":{">>":["≙"]},">>":["∧"]},"g":{"l":{"e":{">>":["∟","∡","∢","⊾","⊿","∠"]}}}},"p":{"l":{">>":["⌶","⌷","⌸","⌹","⌺","⌻","⌼","⌽","⌾","⌿","⍀","⍁","⍂","⍃","⍄","⍅","⍆","⍇","⍈","⍉","⍊","⍋","⍌","⍍","⍎","⍏","⍐","⍑","⍒","⍓","⍔","⍕","⍖","⍗","⍘","⍙","⍚","⍛","⍜","⍝","⍞","⍟","⍠","⍡","⍢","⍣","⍤","⍥","⍦","⍧","⍨","⍩","⍪","⍫","⍬","⍭","⍮","⍯","⍰","⍱","⍲","⍳","⍴","⍵","⍶","⍷","⍸","⍹","⍺","⎕"]},"p":{"r":{"o":{"x":{">>":["≈"],"e":{"q":{">>":["≊"]}}}}}}},"s":{"t":{">>":["∗"],"e":{"r":{"i":{"s":{"k":{">>":["⁎","⁑","⁂","✢","✣","✤","✥","✱","✲","✳","✺","✻","✼","✽","❃","❉","❊","❋","*"]}}}}}},"y":{"m":{"p":{">>":["≍"]}}}}},"b":{"+":{">>":["⊞"]},"-":{">>":["⊟"]},".":{">>":["⊡"]},"0":{">>":["𝟘"]},"1":{">>":["𝟙"]},"2":{">>":["𝟚"]},"3":{">>":["𝟛"]},"4":{">>":["𝟜"]},"5":{">>":["𝟝"]},"6":{">>":["𝟞"]},"7":{">>":["𝟟"]},"8":{">>":["𝟠"]},"9":{">>":["𝟡"]},">>":["♭","̱"],"A":{">>":["𝔸"]},"B":{">>":["𝔹"]},"C":{">>":["ℂ"]},"D":{">>":["𝔻"]},"E":{">>":["𝔼"]},"F":{">>":["𝔽"]},"G":{">>":["𝔾"],"G":{">>":["ℾ"]},"P":{">>":["ℿ"]},"S":{">>":["⅀"]},"g":{">>":["ℽ"]},"p":{">>":["ℼ"]}},"H":{">>":["ℍ"]},"I":{">>":["𝕀"]},"J":{">>":["𝕁"]},"K":{">>":["𝕂"]},"L":{">>":["𝕃"]},"M":{">>":["𝕄"]},"N":{">>":["ℕ"]},"O":{">>":["𝕆"]},"P":{">>":["ℙ"]},"Q":{">>":["ℚ"]},"R":{">>":["ℝ"]},"S":{">>":["𝕊"]},"T":{">>":["𝕋"]},"U":{">>":["𝕌"]},"V":{">>":["𝕍"]},"W":{">>":["𝕎"]},"X":{">>":["𝕏"]},"Y":{">>":["𝕐"]},"Z":{">>":["ℤ"]},"a":{">>":["𝕒"],"c":{"k":{"c":{"o":{"n":{"g":{">>":["≌"]}}}},"e":{"p":{"s":{"i":{"l":{"o":{"n":{">>":["∍"]}}}}}}},"p":{"r":{"i":{"m":{"e":{">>":["‵"]}}}}},"s":{"i":{"m":{">>":["∽"],"e":{"q":{">>":["⋍"]}}}},"l":{"a":{"s":{"h":{">>":["\\"]}}}}}}},"r":{"w":{"e":{"d":{"g":{"e":{">>":["⊼"]}}}}}}},"b":{">>":["𝕓"]},"c":{">>":["𝕔"]},"d":{">>":["𝕕"]},"e":{">>":["𝕖"],"c":{"a":{"u":{"s":{"e":{">>":["∵"]}}}}},"t":{"a":{">>":["β"]},"h":{">>":["ב"]},"w":{"e":{"e":{"n":{">>":["≬"]}}}}}},"f":{">>":["𝕗"]},"g":{">>":["𝕘"]},"h":{">>":["𝕙"]},"i":{">>":["𝕚"],"g":{"c":{"a":{"p":{">>":["⋂"]}},"i":{"r":{"c":{">>":["◯"]}}},"u":{"p":{">>":["⋃"]}}},"s":{"t":{"a":{"r":{">>":["★"]}}}},"t":{"r":{"i":{"a":{"n":{"g":{"l":{"e":{"d":{"o":{"w":{"n":{">>":["▽"]}}}},"u":{"p":{">>":["△"]}}}}}}}}}},"v":{"e":{"e":{">>":["⋁"]}}},"w":{"e":{"d":{"g":{"e":{">>":["⋀"]}}}}}}},"j":{">>":["𝕛"]},"k":{">>":["𝕜"]},"l":{">>":["𝕝"],"a":{"c":{"k":{"l":{"o":{"z":{"e":{"n":{"g":{"e":{">>":["✦"]}}}}}}},"s":{"m":{"i":{"l":{"e":{"y":{">>":["☻"]}}}}},"q":{"u":{"a":{"r":{"e":{">>":["▪"]}}}}}},"t":{"r":{"i":{"a":{"n":{"g":{"l":{"e":{">>":["▴"],"d":{"o":{"w":{"n":{">>":["▾"]}}}},"l":{"e":{"f":{"t":{">>":["◂"]}}}},"r":{"i":{"g":{"h":{"t":{">>":["▸"]}}}}}}}}}}}}}}}}},"m":{">>":["𝕞"]},"n":{">>":["𝕟"]},"o":{">>":["𝕠"],"t":{">>":["⊥"]},"w":{"t":{"i":{"e":{">>":["⋈"]}}}},"x":{"'":{">>":["⍞"]},"/":{">>":["⍁"]},":":{">>":["⍠"]},"<":{">>":["⍃"]},"=":{">>":["⌸"]},">":{">>":["⍄"]},"?":{">>":["⍰"]},"O":{">>":["⌼"]},"\\":{"\\":{">>":["⍂"]}},"c":{"i":{"r":{"c":{"l":{"e":{">>":["⌼"]}}}}},"o":{"m":{"p":{">>":["⌻"]}}}},"d":{">>":["⍗"],"e":{"l":{"t":{"a":{">>":["⍍"]}}}},"i":{">>":["⌺"],"v":{">>":["⌹"]}}},"e":{"q":{">>":["⌸"],"n":{">>":["⍯"]}}},"l":{">>":["⍇"]},"m":{"i":{"n":{"u":{"s":{">>":["⊟"]}}}}},"n":{"a":{"b":{"l":{"a":{">>":["⍔"]}}}},"e":{"q":{">>":["⍯"]}}},"o":{">>":["⌻"]},"p":{"l":{"u":{"s":{">>":["⊞"]}}}},"r":{">>":["⍈"]},"t":{"i":{"m":{"e":{"s":{">>":["⊠"]}}}}},"u":{">>":["⍐"]},"v":{"e":{"e":{">>":["⍌"]}}},"w":{"e":{"d":{"g":{"e":{">>":["⍓"]}}}}}}},"p":{">>":["𝕡"]},"q":{">>":["𝕢"]},"r":{">>":["𝕣"]},"s":{">>":["𝕤"]},"t":{">>":["𝕥"]},"u":{">>":["𝕦","•","◦","‣","⁌","⁍"],"b":{">>":["•"]},"l":{"l":{"e":{"t":{">>":["•"]}}}},"m":{"p":{"e":{"q":{">>":["≏"]}}}},"t":{">>":["‣"]},"w":{">>":["◦"]}},"v":{">>":["𝕧"]},"w":{">>":["𝕨"]},"x":{">>":["⊠","𝕩"]},"y":{">>":["𝕪"]},"z":{">>":["𝕫"]}},"c":{">>":["⌜","⌝","⌞","⌟","⌈","⌉","⌊","⌋","̧"],"C":{">>":["Ç"]},"E":{">>":["Ȩ"]},"G":{">>":["Ģ"]},"K":{">>":["Ķ"]},"L":{">>":["Ļ"]},"N":{">>":["Ņ"]},"R":{">>":["Ŗ"]},"S":{">>":["Ş"]},"T":{">>":["Ţ"]},"a":{"p":{">>":["∩"]}},"c":{">>":["ç"]},"d":{"o":{"t":{">>":["·"],"s":{">>":["⋯"]}}}},"e":{">>":["ȩ"],"l":{"s":{"i":{"u":{"s":{">>":["℃"]}}}}},"n":{"t":{"e":{"r":{"d":{"o":{"t":{">>":["·"]}}}}}}}},"g":{">>":["ģ"]},"h":{"e":{"c":{"k":{"m":{"a":{"r":{"k":{">>":["✓"]}}}}}}},"i":{">>":["χ"]}},"i":{".":{".":{">>":["◌"]},">>":["◎"]},">>":["●","○","◎","◌","◯","◍","◐","◑","◒","◓","◔","◕","◖","◗","◠","◡","◴","◵","◶","◷","⚆","⚇","⚈","⚉"],"O":{">>":["◯"]},"b":{">>":["●"]},"r":{"c":{">>":["∘"],"e":{"q":{">>":["≗"]}},"l":{"e":{"a":{"r":{"r":{"o":{"w":{"l":{"e":{"f":{"t":{">>":["↺"]}}}},"r":{"i":{"g":{"h":{"t":{">>":["↻"]}}}}}}}}}},"d":{"R":{">>":["®"]},"S":{">>":["Ⓢ"]},"a":{"s":{"t":{">>":["⊛"]}}},"c":{"i":{"r":{"c":{">>":["⊚"]}}}},"d":{"a":{"s":{"h":{">>":["⊝"]}}}}}}}}},"w":{">>":["○"]}},"k":{">>":["ķ"]},"l":{">>":["⌞","⌟","⌊","⌋","ļ"],"L":{">>":["⌊"]},"R":{">>":["⌋"]},"l":{">>":["⌞"]},"r":{">>":["⌟"]},"u":{"b":{"s":{"u":{"i":{"t":{">>":["♣"]}}}}}}},"n":{">>":["ņ"]},"o":{"l":{"o":{"n":{">>":[":"],"e":{"q":{">>":["≔"]}}}}},"m":{"p":{">>":["∘"],"l":{"e":{"m":{"e":{"n":{"t":{">>":["∁"]}}}}}}}},"n":{"g":{">>":["≅"]}},"p":{"r":{"o":{"d":{">>":["∐"]}}},"y":{"r":{"i":{"g":{"h":{"t":{">>":["©"]}}}}}}}},"r":{">>":["ŗ"]},"s":{">>":["ş"]},"t":{">>":["ţ"]},"u":{">>":["⌜","⌝","⌈","⌉"],"L":{">>":["⌈"]},"R":{">>":["⌉"]},"l":{">>":["⌜"]},"p":{">>":["∪"]},"r":{">>":["⌝"],"l":{"y":{"e":{"q":{"p":{"r":{"e":{"c":{">>":["⋞"]}}}},"s":{"u":{"c":{"c":{">>":["⋟"]}}}}}},"p":{"r":{"e":{"c":{"e":{"q":{">>":["≼"]}}}}}},"v":{"e":{"e":{">>":["⋎"]}}},"w":{"e":{"d":{"g":{"e":{">>":["⋏"]}}}}}}},"r":{"e":{"n":{"c":{"y":{">>":["¤"]}}}}},"v":{"e":{"a":{"r":{"r":{"o":{"w":{"l":{"e":{"f":{"t":{">>":["↶"]}}}},"r":{"i":{"g":{"h":{"t":{">>":["↷"]}}}}}}}}}}}}}},"{":{"C":{"}":{">>":["Ç"]}},"D":{"}":{">>":["Ḑ"]}},"E":{"}":{">>":["Ȩ"]}},"G":{"}":{">>":["Ģ"]}},"H":{"}":{">>":["Ḩ"]}},"K":{"}":{">>":["Ķ"]}},"L":{"}":{">>":["Ļ"]}},"N":{"}":{">>":["Ņ"]}},"R":{"}":{">>":["Ŗ"]}},"S":{"}":{">>":["Ş"]}},"T":{"}":{">>":["Ţ"]}},"c":{"}":{">>":["ç"]}},"d":{"}":{">>":["ḑ"]}},"e":{"}":{">>":["ȩ"]}},"g":{"}":{">>":["ģ"]}},"h":{"}":{">>":["ḩ"]}},"k":{"}":{">>":["ķ"]}},"l":{"}":{">>":["ļ"]}},"n":{"}":{">>":["ņ"]}},"r":{"}":{">>":["ŗ"]}},"s":{"}":{">>":["ş"]}},"t":{"}":{">>":["ţ"]}},"}":{">>":["¸"]}}},"d":{"-":{"2":{">>":["⇊"]},">>":["↓"],"u":{"-":{">>":["⇵"]}},"|":{">>":["↧"]}},"=":{"=":{">>":["⟱"]},">>":["⇓"]},">>":["↓","⇓","⤋","⟱","⇊","⇵","↧","⇩","↡","⇃","⇂","⇣","⇟","↵","↲","↳","➥","↯","̣"],"a":{"g":{">>":["†"],"g":{"e":{"r":{">>":["†"]}}}},"l":{"e":{"t":{"h":{">>":["ד"]}}}},"s":{"h":{"v":{">>":["⊣"]}}}},"d":{"-":{">>":["↡"]},"a":{"g":{">>":["‡"],"g":{"e":{"r":{">>":["‡"]}}}}},"o":{"t":{"s":{">>":["⋱"]}}}},"e":{"f":{"=":{">>":["≝"]},"s":{">>":["≙"]}},"l":{"t":{"a":{">>":["δ"]}}}},"h":{">>":["ð"]},"i":{".":{">>":["◈"]},">>":["◆","◇","◈"],"a":{"m":{"o":{"n":{"d":{">>":["⋄"],"s":{"u":{"i":{"t":{">>":["♢"]}}}}}}}}},"b":{">>":["◆"]},"e":{">>":["⚀","⚁","⚂","⚃","⚄","⚅"]},"g":{"a":{"m":{"m":{"a":{">>":["Ϝ"]}}}}},"v":{">>":["÷"],"i":{"d":{"e":{"o":{"n":{"t":{"i":{"m":{"e":{"s":{">>":["⋇"]}}}}}}}}}}},"w":{">>":["◇"]}},"l":{"-":{">>":["↙"]},"=":{">>":["⇙"]},">>":["↙","⇙"]},"o":{"t":{"e":{"q":{">>":["≐"],"d":{"o":{"t":{">>":["≑"]}}}}},"p":{"l":{"u":{"s":{">>":["∔"]}}}},"s":{"q":{"u":{"a":{"r":{"e":{">>":["⊡"]}}}}}}},"w":{"n":{"a":{"r":{"r":{"o":{"w":{">>":["↓"]}}}}},"d":{"o":{"w":{"n":{"a":{"r":{"r":{"o":{"w":{"s":{">>":["⇊"]}}}}}}}}}},"l":{"e":{"f":{"t":{"h":{"a":{"r":{"p":{"o":{"o":{"n":{">>":["⇃"]}}}}}}}}}}},"r":{"i":{"g":{"h":{"t":{"h":{"a":{"r":{"p":{"o":{"o":{"n":{">>":["⇂"]}}}}}}}}}}}}}}},"r":{"-":{">>":["↘"]},"=":{">>":["⇘"]},">>":["↘","⇘","⇲","➴","➷","➘"]},"z":{">>":["↯"]},"{":{"A":{"}":{">>":["Ạ"]}},"B":{"}":{">>":["Ḅ"]}},"D":{"}":{">>":["Ḍ"]}},"E":{"}":{">>":["Ẹ"]}},"H":{"}":{">>":["Ḥ"]}},"I":{"}":{">>":["Ị"]}},"K":{"}":{">>":["Ḳ"]}},"L":{"}":{">>":["Ḷ"]}},"M":{"}":{">>":["Ṃ"]}},"N":{"}":{">>":["Ṇ"]}},"O":{"}":{">>":["Ọ"]}},"R":{"}":{">>":["Ṛ"]}},"S":{"}":{">>":["Ṣ"]}},"T":{"}":{">>":["Ṭ"]}},"U":{"}":{">>":["Ụ"]}},"V":{"}":{">>":["Ṿ"]}},"W":{"}":{">>":["Ẉ"]}},"Y":{"}":{">>":["Ỵ"]}},"Z":{"}":{">>":["Ẓ"]}},"a":{"}":{">>":["ạ"]}},"b":{"}":{">>":["ḅ"]}},"d":{"}":{">>":["ḍ"]}},"e":{"}":{">>":["ẹ"]}},"h":{"}":{">>":["ḥ"]}},"i":{"}":{">>":["ị"]}},"k":{"}":{">>":["ḳ"]}},"l":{"}":{">>":["ḷ"]}},"m":{"}":{">>":["ṃ"]}},"n":{"}":{">>":["ṇ"]}},"o":{"}":{">>":["ọ"]}},"r":{"}":{">>":["ṛ"]}},"s":{"}":{">>":["ṣ"]}},"t":{"}":{">>":["ṭ"]}},"u":{"}":{">>":["ụ"]}},"v":{"}":{">>":["ṿ"]}},"w":{"}":{">>":["ẉ"]}},"y":{"}":{">>":["ỵ"]}},"z":{"}":{">>":["ẓ"]}}}},"e":{"e":{">>":["ė"]},"l":{"l":{">>":["ℓ"]}},"m":{">>":["—"],"p":{"t":{"y":{"s":{"e":{"t":{">>":["∅"]}}}}}}},"n":{">>":["–"],"t":{"a":{"i":{"l":{"s":{">>":["⊢","⊣","⊤","⊥","⊦","⊧","⊨","⊩","⊪","⊫","⊬","⊭","⊮","⊯"]}}}}}},"p":{"s":{"i":{"l":{"o":{"n":{">>":["ε"]}}}}}},"q":{">>":["=","∼","∽","≈","≋","∻","∾","∿","≀","≃","⋍","≂","≅","≌","≊","≡","≣","≐","≑","≒","≓","≔","≕","≖","≗","≘","≙","≚","≛","≜","≝","≞","≟","≍","≎","≏","≬","⋕","="],"c":{"i":{"r":{"c":{">>":["≖"]}}},"o":{"l":{"o":{"n":{">>":["≕"]}}}}},"n":{">>":["≠","≁","≉","≄","≇","≆","≢","≭"]},"s":{"l":{"a":{"n":{"t":{"g":{"t":{"r":{">>":["⋝"]}}},"l":{"e":{"s":{"s":{">>":["⋜"]}}}}}}}}},"u":{"i":{"v":{">>":["≡"]}}}},"t":{"a":{">>":["η"]}},"u":{"r":{"o":{">>":["€"]}}},"x":{">>":["∃"],"i":{"s":{"t":{"s":{">>":["∃"]}}}},"n":{">>":["∄"]}},"{":{"e":{"}":{">>":["ė"]}}}},"f":{"a":{"l":{"l":{"i":{"n":{"g":{"d":{"o":{"t":{"s":{"e":{"q":{">>":["≒"]}}}}}}}}}}}},"l":{"a":{"t":{">>":["♭"]}},"q":{">>":["‹"],"q":{">>":["«"]}}},"o":{"r":{"a":{"l":{"l":{">>":["∀"]}}}}},"r":{"a":{"c":{"1":{"2":{">>":["½"]},"3":{">>":["⅓"]},"4":{">>":["¼"]},"5":{">>":["⅕"]},"6":{">>":["⅙"]},"8":{">>":["⅛"]},">>":["⅟"]},"2":{"3":{">>":["⅔"]},"5":{">>":["⅖"]}},"3":{"4":{">>":["¾"]},"5":{">>":["⅗"]},"8":{">>":["⅜"]}},"4":{"5":{">>":["⅘"]}},"5":{"6":{">>":["⅚"]},"8":{">>":["⅝"]}},"7":{"8":{">>":["⅞"]}},">>":["¼","½","¾","⅓","⅔","⅕","⅖","⅗","⅘","⅙","⅚","⅛","⅜","⅝","⅞","⅟"]}},"o":{"w":{"n":{">>":["⌢"]}}},"q":{">>":["›"],"q":{">>":["»"]}}}},"g":{"a":{"m":{"m":{"a":{">>":["γ"]}}}},"e":{">>":["≥"],"n":{">>":["≱"]},"q":{">>":[">","≫","⋙","≥","≧","≳","≷","≻","≽","≿","⊃","⊇","⋑","⊐","⊒","⊱","⊳","⊵","⋗","⋛","⋝","⋟",">"],"n":{">>":["≯","≱","≩","≵","⋧","≹","⊁","⋩","⊅","⊉","⊋","⋣","⋥","⋫","⋭","⋡"]},"q":{">>":["≧"]},"s":{"l":{"a":{"n":{"t":{">>":["≥"]}}}}}},"t":{"s":{">>":["←"]}}},"g":{">>":["≫"],"g":{">>":["⋙"]}},"i":{"m":{"e":{"l":{">>":["ג"]}}}},"l":{"b":{">>":["⊓"]},"q":{">>":["‚"],"q":{">>":["„"]}}},"n":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["⋧"]}}}}}},"e":{"q":{">>":["≩"],"q":{">>":["≩"]}}},"s":{"i":{"m":{">>":["⋧"]}}}},"r":{"q":{">>":["‘"],"q":{">>":["“"]}}},"t":{"r":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["≳"]}}}}}},"d":{"o":{"t":{">>":["⋗"]}}},"e":{"q":{"l":{"e":{"s":{"s":{">>":["⋛"]}}}},"q":{"l":{"e":{"s":{"s":{">>":["⋛"]}}}}}}},"l":{"e":{"s":{"s":{">>":["≷"]}}}},"s":{"i":{"m":{">>":["≳"]}}}}},"v":{"e":{"r":{"t":{"n":{"e":{"q":{"q":{">>":["≩"]}}}}}}}}},"h":{"b":{"a":{"r":{">>":["ℏ"]}}},"e":{"a":{"r":{"t":{"s":{"u":{"i":{"t":{">>":["♥"]}}}}}}}},"o":{"o":{"k":{"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↩"]}}}}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↪"]}}}}}}}}}}}}}},"i":{">>":["∩","ı"],"f":{"f":{">>":["⇔"]}},"m":{"a":{"t":{"h":{">>":["ı"]}}}},"n":{">>":["∈"],"c":{"r":{"e":{"m":{"e":{"n":{"t":{">>":["∆"]}}}}}}},"f":{">>":["∞"],"t":{"y":{">>":["∞"]}}},"n":{">>":["∉"]},"t":{">>":["∫"],"e":{"g":{"r":{"a":{"l":{">>":["∫","∬","∭","∮","∯","∰","∱","∲","∳"]}}}},"r":{"c":{"a":{"l":{">>":["⊺"]}}},"s":{"e":{"c":{"t":{"i":{"o":{"n":{">>":["∩","⋂","∧","⋀","⋏","⨇","⊓","⨅","⋒","∏","⊼","⨉"]}}}}}}}}}}},"o":{"t":{"a":{">>":["ι"]}}}},"j":{"o":{"i":{"n":{">>":["⋈","⋉","⋊","⋋","⋌","⨝","⟕","⟖","⟗"]}}}},"k":{"a":{"p":{"p":{"a":{">>":["κ"]}}}},"{":{"A":{"}":{">>":["Ą"]}},"E":{"}":{">>":["Ę"]}},"I":{"}":{">>":["Į"]}},"O":{"}":{">>":["Ǫ"]}},"U":{"}":{">>":["Ų"]}},"a":{"}":{">>":["ą"]}},"e":{"}":{">>":["ę"]}},"i":{"}":{">>":["į"]}},"o":{"}":{">>":["ǫ"]}},"u":{"}":{">>":["ų"]}}}},"l":{"-":{"-":{">>":["⟵"]},"2":{">>":["⇇"]},">":{">>":["↢"]},">>":["←"],"n":{">>":["↚"]},"r":{"-":{">>":["⇆"]}},"|":{">>":["↤"]}},"=":{"=":{">>":["⇚"]},">>":["⇐"],"n":{">>":["⇍"]}},">>":["←","⇐","⇚","⭅","⇇","⇆","↤","⇦","↞","↼","↽","⇠","⇺","↜","⇽","⟵","⟸","↚","⇍","⇷","↹","↢","↩","↫","⇋","⇜","⇤","⟻","⟽","⤆","↶","↺","⟲","ł"],"a":{"m":{"b":{"d":{"a":{">>":["λ"],"b":{"a":{"r":{">>":["ƛ"]}}}}}}},"n":{"g":{"l":{"e":{">>":["〈"]}}}}},"b":{"a":{"g":{">>":["⟅"]}},"r":{"a":{"c":{"e":{">>":["{"]},"k":{">>":["["]}}}}},"c":{"e":{"i":{"l":{">>":["⌈"]}}}},"d":{"a":{"t":{"a":{">>":["《"]}}},"o":{"t":{"s":{">>":["…"]}}},"q":{">>":["“"]}},"e":{">>":["≤"],"a":{"d":{"s":{"t":{"o":{">>":["↝"]}}}}},"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["←"],"t":{"a":{"i":{"l":{">>":["↢"]}}}}}}}}},"h":{"a":{"r":{"p":{"o":{"o":{"n":{"d":{"o":{"w":{"n":{">>":["↽"]}}}},"u":{"p":{">>":["↼"]}}}}}}}}},"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{"s":{">>":["⇇"]}}}}}}}}}},"p":{"a":{"r":{"e":{"n":{"g":{"t":{"r":{">>":["〈"]}}}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↔"],"s":{">>":["⇆"]}}}}}},"h":{"a":{"r":{"p":{"o":{"o":{"n":{"s":{">>":["⇋"]}}}}}}}},"s":{"q":{"u":{"i":{"g":{"a":{"r":{"r":{"o":{"w":{">>":["↭"]}}}}}}}}}}}}}}},"t":{"h":{"r":{"e":{"e":{"t":{"i":{"m":{"e":{"s":{">>":["⋋"]}}}}}}}}}}}},"n":{">>":["≰"]},"q":{">>":["<","≪","⋘","≤","≦","≲","≶","≺","≼","≾","⊂","⊆","⋐","⊏","⊑","⊰","⊲","⊴","⋖","⋚","⋜","⋞","<"],"n":{">>":["≮","≰","≨","≴","⋦","≸","⊀","⋨","⊄","⊈","⊊","⋢","⋤","⋪","⋬","⋠"]},"q":{">>":["≦"]},"s":{"l":{"a":{"n":{"t":{">>":["≤"]}}}}}},"s":{"s":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["≲"]}}}}}},"d":{"o":{"t":{">>":["⋖"]}}},"e":{"q":{"g":{"t":{"r":{">>":["⋚"]}}},"q":{"g":{"t":{"r":{">>":["⋚"]}}}}}},"g":{"t":{"r":{">>":["≶"]}}},"s":{"i":{"m":{">>":["≲"]}}}}}},"f":{"l":{"o":{"o":{"r":{">>":["⌊"]}}}}},"h":{"d":{">>":["◁"]}},"l":{"-":{">>":["↞"]},">>":["≪"],"b":{"r":{"a":{"c":{"k":{"e":{"t":{">>":["〚"]}}}}}}},"c":{"o":{"r":{"n":{"e":{"r":{">>":["⌞"]}}}}}}},"n":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["⋦"]}}}}}},"e":{"q":{">>":["≨"],"q":{">>":["≨"]}}},"o":{"t":{">>":["¬"]}},"s":{"i":{"m":{">>":["⋦"]}}}},"o":{"n":{"g":{"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["←"]}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↔"]}}}}}}}}}}}}}},"m":{"a":{"p":{"s":{"t":{"o":{">>":["↦"]}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["→"]}}}}}}}}}}}},"o":{"p":{"a":{"r":{"r":{"o":{"w":{"l":{"e":{"f":{"t":{">>":["↫"]}}}},"r":{"i":{"g":{"h":{"t":{">>":["↬"]}}}}}}}}}}}},"z":{"e":{"n":{"g":{"e":{">>":["✧"]}}}}}},"q":{">>":["‘"]},"r":{"-":{"-":{">>":["⟷"]},">>":["↔"],"n":{">>":["↮"]}},"=":{">>":["⇔"],"n":{">>":["⇎"]}},">>":["↔","⇔","⇼","↭","⇿","⟷","⟺","↮","⇎","⇹"],"c":{"o":{"r":{"n":{"e":{"r":{">>":["⌟"]}}}}}},"~":{">>":["↭"]}},"t":{"i":{"m":{"e":{"s":{">>":["⋉"]}}}}},"u":{"b":{">>":["⊔"]}},"v":{"e":{"r":{"t":{"n":{"e":{"q":{"q":{">>":["≨"]}}}}}}}},"~":{">>":["↜","⇜"]}},"m":{"=":{">>":["≞"]},"a":{"l":{"t":{"e":{"s":{"e":{">>":["✠"]}}}}},"p":{"s":{"t":{"o":{">>":["↦"]}}}},"t":{"h":{"s":{"c":{"r":{"{":{"I":{"}":{">>":["ℐ"]}}}}}}}}},"e":{"a":{"s":{"u":{"r":{"e":{"d":{"a":{"n":{"g":{"l":{"e":{">>":["∡"]}}}}}}}}}}},"m":{"b":{"e":{"r":{">>":["∈","∉","∊","∋","∌","∍","⋲","⋳","⋴","⋵","⋶","⋷","⋸","⋹","⋺","⋻","⋼","⋽","⋾","⋿"]}}}}},"h":{"o":{">>":["℧"]}},"i":{"c":{"r":{"o":{">>":["µ"]}}},"d":{">>":["∣"]},"n":{"u":{"s":{">>":["−"]}}}},"o":{"d":{"e":{"l":{"s":{">>":["⊧"]}}}}},"p":{">>":["∓"]},"u":{">>":["μ"],"l":{"t":{"i":{"m":{"a":{"p":{">>":["⊸"]}}}}}}}},"n":{"L":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇍"]}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇎"]}}}}}}}}}}}}}},"R":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇏"]}}}}}}}}}},"V":{"D":{"a":{"s":{"h":{">>":["⊯"]}}}},"d":{"a":{"s":{"h":{">>":["⊮"]}}}}},"a":{"b":{"l":{"a":{">>":["∇"]}}},"p":{"p":{"r":{"o":{"x":{">>":["≉"]}}}}},"t":{"u":{"r":{"a":{"l":{">>":["♮"]}}}}}},"c":{"o":{"n":{"g":{">>":["≇"]}}}},"e":{">>":["≠"],"a":{"r":{"r":{"o":{"w":{">>":["↗"]}}}}},"g":{">>":["¬"]},"q":{">>":["≠"],"u":{"i":{"v":{">>":["≢"]}}}},"w":{"l":{"i":{"n":{"e":{">>":["\n"]}}}}},"x":{"i":{"s":{"t":{"s":{">>":["∄"]}}}}}},"g":{"e":{"q":{">>":["≱"],"q":{">>":["≱"]},"s":{"l":{"a":{"n":{"t":{">>":["≱"]}}}}}}},"t":{"r":{">>":["≯"]}}},"i":{">>":["∋"],"n":{">>":["∌"]}},"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↚"]}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↮"]}}}}}}}}}}}},"q":{">>":["≰"],"q":{">>":["≰"]},"s":{"l":{"a":{"n":{"t":{">>":["≰"]}}}}}},"s":{"s":{">>":["≮"]}}}},"m":{"i":{"d":{">>":["∤"]}}},"o":{"t":{">>":["̸"],"e":{">>":["♩","♪","♫","♬"]},"i":{"n":{">>":["∉"]}}}},"p":{"a":{"r":{"a":{"l":{"l":{"e":{"l":{">>":["∦"]}}}}}}},"r":{"e":{"c":{">>":["⊀"],"e":{"q":{">>":["⋠"]}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↛"]}}}}}}}}}},"s":{"h":{"o":{"r":{"t":{"m":{"i":{"d":{">>":["∤"]}}},"p":{"a":{"r":{"a":{"l":{"l":{"e":{"l":{">>":["∦"]}}}}}}}}}}}},"i":{"m":{">>":["≁"],"e":{"q":{">>":["≄"]}}}},"u":{"b":{"s":{"e":{"t":{">>":["⊄"],"e":{"q":{">>":["⊈"],"q":{">>":["⊈"]}}}}}}},"c":{"c":{">>":["⊁"],"e":{"q":{">>":["⋡"]}}}},"p":{"s":{"e":{"t":{">>":["⊅"],"e":{"q":{">>":["⊉"],"q":{">>":["⊉"]}}}}}}}}},"t":{"r":{"i":{"a":{"n":{"g":{"l":{"e":{"l":{"e":{"f":{"t":{">>":["⋪"],"e":{"q":{">>":["⋬"]}}}}}},"r":{"i":{"g":{"h":{"t":{">>":["⋫"],"e":{"q":{">>":["⋭"]}}}}}}}}}}}}}}},"u":{">>":["ν"]},"v":{"D":{"a":{"s":{"h":{">>":["⊭"]}}}},"d":{"a":{"s":{"h":{">>":["⊬"]}}}}},"w":{"a":{"r":{"r":{"o":{"w":{">>":["↖"]}}}}}}},"o":{"*":{">>":["⊛"]},"+":{">>":["⊕"]},"-":{"-":{">>":["⊖"]},">>":["⊝"]},".":{">>":["⊙"]},"/":{">>":["⊘"]},"=":{">>":["⊜"]},">>":["∘","ø"],"d":{"o":{"t":{">>":["⊙"]}}},"e":{">>":["œ"]},"i":{"n":{"t":{">>":["∮"]}}},"m":{"e":{"g":{"a":{">>":["ω"]}}},"i":{"n":{"u":{"s":{">>":["⊖"]}}}}},"o":{">>":["⊚"]},"p":{"l":{"u":{"s":{">>":["⊕"]}}}},"r":{"=":{">>":["≚"]},">>":["∨"],"d":{"f":{"e":{"m":{"i":{"n":{"i":{"n":{"e":{">>":["ª"]}}}}}}}},"m":{"a":{"s":{"c":{"u":{"l":{"i":{"n":{"e":{">>":["º"]}}}}}}}}}}},"s":{"l":{"a":{"s":{"h":{">>":["⊘"]}}}}},"t":{"i":{"m":{"e":{"s":{">>":["⊗"]}}}}},"x":{">>":["⊗"]}},"p":{"a":{">>":["▰","▱"],"b":{">>":["▰"]},"r":{">>":["\n"],"a":{"l":{"l":{"e":{"l":{">>":["∥"]}}}}},"t":{"i":{"a":{"l":{">>":["∂"]}}}}},"w":{">>":["▱"]}},"e":{"r":{"m":{"i":{"l":{">>":["‰"]}}},"p":{">>":["⊥"]}}},"h":{"i":{">>":["φ"]}},"i":{">>":["π"],"t":{"c":{"h":{"f":{"o":{"r":{"k":{">>":["⋔"]}}}}}}}},"m":{">>":["±"]},"o":{"u":{"n":{"d":{"s":{">>":["£"]}}}}},"r":{"e":{"c":{">>":["≺"],"a":{"p":{"p":{"r":{"o":{"x":{">>":["≾"]}}}}}},"e":{"q":{">>":["≼"]}},"n":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["⋨"]}}}}}},"s":{"i":{"m":{">>":["⋨"]}}}},"s":{"i":{"m":{">>":["≾"]}}}}},"i":{"m":{"e":{">>":["′"]}}},"o":{"d":{">>":["∏"]},"p":{"t":{"o":{">>":["∝"]}}}}},"s":{"i":{">>":["ψ"]}}},"q":{"e":{"d":{">>":["∎"]}},"u":{"a":{"d":{">>":[" "]}}}},"r":{"-":{"-":{">>":["⟶"]},"2":{">>":["⇉"]},"3":{">>":["⇶"]},">":{">>":["↣"]},">>":["→"],"l":{"-":{">>":["⇄"]}},"n":{">>":["↛"]},"o":{">>":["⊸"]},"|":{">>":["↦"]}},"=":{"=":{">>":["⇛"]},">>":["⇒"],"n":{">>":["⇏"]}},">>":["→","⇒","⇛","⭆","⇉","⇄","↦","⇨","↠","⇀","⇁","⇢","⇻","↝","⇾","⟶","⟹","↛","⇏","⇸","⇶","↴","↣","↪","↬","⇌","⇝","⇥","⟼","⟾","⤇","↷","↻","⟳","⇰","⇴","⟴","⟿","➵","➸","➙","➔","➛","➜","➝","➞","➟","➠","➡","➢","➣","➤","➧","➨","➩","➪","➫","➬","➭","➮","➯","➱","➲","➳","➺","➻","➼","➽","➾","⊸"],"a":{"n":{"g":{"l":{"e":{">>":["〉"]}}}}},"b":{"a":{"g":{">>":["⟆"]}},"r":{"a":{"c":{"e":{">>":["}"]},"k":{">>":["]"]}}}}},"c":{"e":{"i":{"l":{">>":["⌉"]}}}},"d":{"a":{"t":{"a":{">>":["》"]}}},"q":{">>":["”"]}},"e":{">>":["▬","▭","▮","▯"],"b":{">>":["▬","▮"]},"g":{"i":{"s":{"t":{"e":{"r":{"e":{"d":{">>":["®"]}}}}}}}},"w":{">>":["▭","▯"]}},"f":{"l":{"o":{"o":{"r":{">>":["⌋"]}}}}},"h":{"d":{">>":["▷"]},"o":{">>":["ρ"]}},"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["→"],"t":{"a":{"i":{"l":{">>":["↣"]}}}}}}}}},"h":{"a":{"r":{"p":{"o":{"o":{"n":{"d":{"o":{"w":{"n":{">>":["⇁"]}}}},"u":{"p":{">>":["⇀"]}}}}}}}}},"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{"s":{">>":["⇄"]}}}}}},"h":{"a":{"r":{"p":{"o":{"o":{"n":{"s":{">>":["⇌"]}}}}}}}}}}}},"p":{"a":{"r":{"e":{"n":{"g":{"t":{"r":{">>":["〉"]}}}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{"s":{">>":["⇉"]}}}}}}}}}}},"t":{"h":{"r":{"e":{"e":{"t":{"i":{"m":{"e":{"s":{">>":["⋌"]}}}}}}}}}}}}},"s":{"i":{"n":{"g":{"d":{"o":{"t":{"s":{"e":{"q":{">>":["≓"]}}}}}}}}}}},"q":{">>":["’"]},"r":{"-":{">>":["↠"]},"b":{"r":{"a":{"c":{"k":{"e":{"t":{">>":["〛"]}}}}}}}},"t":{"i":{"m":{"e":{"s":{">>":["⋊"]}}}}},"~":{">>":["↝","⇝","⟿"]}},"s":{"b":{"s":{">>":["﹨"]}},"e":{"a":{"r":{"r":{"o":{"w":{">>":["↘"]}}}}},"t":{"m":{"i":{"n":{"u":{"s":{">>":["∖"]}}}}}}},"h":{"a":{"r":{"p":{">>":["♯"]}}},"o":{"r":{"t":{"m":{"i":{"d":{">>":["∣"]}}},"p":{"a":{"r":{"a":{"l":{"l":{"e":{"l":{">>":["∥"]}}}}}}}}}}}},"i":{"g":{"m":{"a":{">>":["σ"]}}},"m":{">>":["∼"],"e":{"q":{">>":["≃"]}}}},"m":{"a":{"l":{"l":{"a":{"m":{"a":{"l":{"g":{">>":["∐"]}}}}},"s":{"e":{"t":{"m":{"i":{"n":{"u":{"s":{">>":["∖"]}}}}}}},"m":{"i":{"l":{"e":{">>":["⌣"]}}}}}}}},"i":{"l":{"e":{">>":["⌣"]}}}},"p":{"a":{"d":{"e":{"s":{"u":{"i":{"t":{">>":["♠"]}}}}}}},"h":{"e":{"r":{"i":{"c":{"a":{"l":{"a":{"n":{"g":{"l":{"e":{">>":["∢"]}}}}}}}}}}}}},"q":{".":{">>":["▣"]},">>":["■","□","◼","◻","◾","◽","▣","▢","▤","▥","▦","▧","▨","▩","◧","◨","◩","◪","◫","◰","◱","◲","◳"],"b":{">>":["■","◼","◾"]},"c":{"a":{"p":{">>":["⊓"]}},"u":{"p":{">>":["⊔"]}}},"o":{">>":["▢"]},"r":{"t":{">>":["√"]}},"s":{"u":{"b":{"s":{"e":{"t":{">>":["⊏"],"e":{"q":{">>":["⊑"]}}}}}},"p":{"s":{"e":{"t":{">>":["⊐"],"e":{"q":{">>":["⊒"]}}}}}}}},"u":{"a":{"r":{"e":{">>":["□"]}}},"b":{"=":{">>":["⊑"],"n":{">>":["⋢"]}},">>":["⊏"]},"i":{"g":{"a":{"r":{"r":{"o":{"w":{"r":{"i":{"g":{"h":{"t":{">>":["⇝"]}}}}}}}}}}}},"p":{"=":{">>":["⊒"],"n":{">>":["⋣"]}},">>":["⊐"]}},"w":{">>":["□","◻","◽"]}},"s":{">>":["ß"]},"t":{"1":{"2":{">>":["✹"]}},"4":{">>":["✦","✧"]},"6":{">>":["✶"]},"8":{">>":["✴"]},">>":["⋆","✦","✧","✶","✴","✹","★","☆","✪","✫","✯","✰","✵","✷","✸"],"a":{"r":{">>":["⋆"]}},"r":{"a":{"i":{"g":{"h":{"t":{"p":{"h":{"i":{">>":["φ"]}}}}}}}}}},"u":{"b":{"=":{">>":["⊆"],"n":{">>":["⊈"]}},">>":["⊂"],"n":{">>":["⊄"]},"s":{"e":{"t":{">>":["⊂"],"e":{"q":{">>":["⊆"],"q":{">>":["⊆"]}}},"n":{"e":{"q":{">>":["⊊"],"q":{">>":["⊊"]}}}}}}}},"c":{"c":{">>":["≻"],"a":{"p":{"p":{"r":{"o":{"x":{">>":["≿"]}}}}}},"c":{"u":{"r":{"l":{"y":{"e":{"q":{">>":["≽"]}}}}}}},"e":{"q":{">>":["≽"]}},"n":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["⋩"]}}}}}},"s":{"i":{"m":{">>":["⋩"]}}}},"s":{"i":{"m":{">>":["≿"]}}}}},"m":{">>":["∑"]},"p":{"=":{">>":["⊇"],"n":{">>":["⊉"]}},">>":["⊃"],"n":{">>":["⊅"]},"s":{"e":{"t":{">>":["⊃"],"e":{"q":{">>":["⊇"],"q":{">>":["⊇"]}}},"n":{"e":{"q":{">>":["⊋"],"q":{">>":["⊋"]}}}}}}}},"r":{"d":{"3":{">>":["∛"]},"4":{">>":["∜"]},">>":["√"]}}},"w":{"a":{"r":{"r":{"o":{"w":{">>":["↙"]}}}}}}},"t":{"=":{">>":["≜"]},">>":["◂","◃","◄","◅","▸","▹","►","▻","▴","▵","▾","▿","◢","◿","◣","◺","◤","◸","◥","◹"],"a":{"u":{">>":["τ"]}},"b":{">>":["◂","▸","▴","▾","◄","►","◢","◣","◤","◥"]},"e":{"x":{"t":{"b":{"a":{"h":{"t":{">>":["฿"]}}},"i":{"g":{"c":{"i":{"r":{"c":{"l":{"e":{">>":["⃝"]}}}}}}}}},"c":{"i":{"r":{"c":{"l":{"e":{"d":{"P":{">>":["℗"]}}}}}}},"o":{"l":{"o":{"n":{"m":{"o":{"n":{"e":{"t":{"a":{"r":{"y":{">>":["₡"]}}}}}}}}}}}}},"d":{"i":{"e":{"d":{">>":["✝"]}},"s":{"c":{"o":{"u":{"n":{"t":{">>":["⁒"]}}}}}}}},"e":{"s":{"t":{"i":{"m":{"a":{"t":{"e":{"d":{">>":["℮"]}}}}}}}}},"f":{"r":{"a":{"c":{"t":{"i":{"o":{"n":{"s":{"o":{"l":{"i":{"d":{"u":{"s":{">>":["⁄"]}}}}}}}}}}}}}}},"i":{"n":{"t":{"e":{"r":{"r":{"o":{"b":{"a":{"n":{"g":{">>":["‽"]}}}}}}}}}}},"l":{"i":{"r":{"a":{">>":["₤"]}}},"q":{"u":{"i":{"l":{"l":{">>":["⁅"]}}}}}},"m":{"u":{">>":["µ"],"s":{"i":{"c":{"a":{"l":{"n":{"o":{"t":{"e":{">>":["♪"]}}}}}}}}}}},"n":{"a":{"i":{"r":{"a":{">>":["₦"]}}}},"u":{"m":{"e":{"r":{"o":{">>":["№"]}}}}}},"o":{"p":{"e":{"n":{"b":{"u":{"l":{"l":{"e":{"t":{">>":["◦"]}}}}}}}}}},"p":{"e":{"r":{"t":{"e":{"n":{"t":{"h":{"o":{"u":{"s":{"a":{"n":{"d":{">>":["‱"]}}}}}}}}}}}},"s":{"o":{">>":["₱"]}}}},"r":{"e":{"c":{"i":{"p":{"e":{">>":["℞"]}}}},"f":{"e":{"r":{"e":{"n":{"c":{"e":{"m":{"a":{"r":{"k":{">>":["※"]}}}}}}}}}}}},"q":{"u":{"i":{"l":{"l":{">>":["⁆"]}}}}}},"w":{"o":{"n":{">>":["₩"]}}}}}},"h":{">>":["þ"],"e":{"r":{"e":{"f":{"o":{"r":{"e":{">>":["∴"]}}}}}},"t":{"a":{">>":["θ"]}}},"i":{"c":{"k":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["≈"]}}}}}},"s":{"i":{"m":{">>":["∼"]}}}}}}},"i":{"e":{">>":["⁀"]},"m":{"e":{"s":{">>":["×"]}}}},"o":{">>":["→"],"p":{">>":["⊤"]}},"r":{"i":{"a":{"n":{"g":{"l":{"e":{">>":["▵"],"d":{"o":{"w":{"n":{">>":["▿"]}}}},"l":{"e":{"f":{"t":{">>":["◃"],"e":{"q":{">>":["⊴"]}}}}}},"q":{">>":["≜"]},"r":{"i":{"g":{"h":{"t":{">>":["▹"],"e":{"q":{">>":["⊵"]}}}}}}}}}}}}}},"w":{">>":["◃","▹","▵","▿","◅","▻","◿","◺","◸","◹"],"o":{"h":{"e":{"a":{"d":{"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↞"]}}}}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↠"]}}}}}}}}}}}}}}}}},"u":{"+":{">>":["⊎"]},"-":{"2":{">>":["⇈"]},">>":["↑"],"d":{"-":{">>":["⇅"]}},"|":{">>":["↥"]}},".":{">>":["⊍"]},"=":{"=":{">>":["⟰"]},">>":["⇑"]},">>":["↑","⇑","⤊","⟰","⇈","⇅","↥","⇧","↟","↿","↾","⇡","⇞","↰","↱","➦","⇪","⇫","⇬","⇭","⇮","⇯","̆"],"A":{">>":["Ă"]},"E":{">>":["Ĕ"]},"G":{">>":["Ğ"]},"I":{">>":["Ĭ"]},"O":{">>":["Ŏ"]},"U":{">>":["Ŭ"]},"a":{">>":["ă"]},"d":{"-":{">>":["↕"],"|":{">>":["↨"]}},"=":{">>":["⇕"]},">>":["↕","⇕","↨","⇳"]},"e":{">>":["ĕ"]},"g":{">>":["ğ"]},"i":{">>":["ĭ"]},"l":{"-":{">>":["↖"]},"=":{">>":["⇖"]},">>":["↖","⇖","⇱","↸"],"c":{"o":{"r":{"n":{"e":{"r":{">>":["⌜"]}}}}}}},"n":{">>":["∪"],"d":{"e":{"r":{"t":{"i":{"e":{">>":["‿"]}}}}}},"i":{"o":{"n":{">>":["∪","⋃","∨","⋁","⋎","⨈","⊔","⨆","⋓","∐","⨿","⊽","⊻","⊍","⨃","⊎","⨄","⊌","∑","⅀"]}}}},"o":{">>":["ŏ"]},"p":{"a":{"r":{"r":{"o":{"w":{">>":["↑"]}}}}},"d":{"o":{"w":{"n":{"a":{"r":{"r":{"o":{"w":{">>":["↕"]}}}}}}}}},"l":{"e":{"f":{"t":{"h":{"a":{"r":{"p":{"o":{"o":{"n":{">>":["↿"]}}}}}}}}}},"u":{"s":{">>":["⊎"]}}},"r":{"i":{"g":{"h":{"t":{"h":{"a":{"r":{"p":{"o":{"o":{"n":{">>":["↾"]}}}}}}}}}}}},"s":{"i":{"l":{"o":{"n":{">>":["υ"]}}}}},"u":{"p":{"a":{"r":{"r":{"o":{"w":{"s":{">>":["⇈"]}}}}}}}}},"r":{"-":{">>":["↗"]},"=":{">>":["⇗"]},">>":["↗","⇗","➶","➹","➚"],"c":{"o":{"r":{"n":{"e":{"r":{">>":["⌝"]}}}}}}},"u":{"-":{">>":["↟"]},">>":["ŭ"]},"{":{"A":{"}":{">>":["Ă"]}},"E":{"}":{">>":["Ĕ"]}},"G":{"}":{">>":["Ğ"]}},"I":{"}":{">>":["Ĭ"]}},"O":{"}":{">>":["Ŏ"]}},"U":{"}":{">>":["Ŭ"]}},"\\":{"i":{"}":{">>":["ĭ"]}}},"a":{"}":{">>":["ă"]}},"e":{"}":{">>":["ĕ"]}},"g":{"}":{">>":["ğ"]}},"i":{"}":{">>":["ĭ"]}},"o":{"}":{">>":["ŏ"]}},"u":{"}":{">>":["ŭ"]}},"}":{">>":["˘"]}}},"v":{">>":["̌"],"A":{">>":["Ǎ"]},"C":{">>":["Č"]},"D":{">>":["Ď"],"a":{"s":{"h":{">>":["⊨"]}}}},"E":{">>":["Ě"]},"G":{">>":["Ǧ"]},"H":{">>":["Ȟ"]},"I":{">>":["Ǐ"]},"K":{">>":["Ǩ"]},"N":{">>":["Ň"]},"O":{">>":["Ǒ"]},"R":{">>":["Ř"]},"S":{">>":["Š"]},"T":{">>":["Ť"]},"U":{">>":["Ǔ"]},"Z":{">>":["Ž"]},"a":{">>":["ǎ"],"r":{"k":{"a":{"p":{"p":{"a":{">>":["ϰ"]}}}}},"p":{"h":{"i":{">>":["ϕ"]}},"i":{">>":["ϖ"]},"r":{"i":{"m":{"e":{">>":["′"]}}},"o":{"p":{"t":{"o":{">>":["∝"]}}}}}},"r":{"h":{"o":{">>":["ϱ"]}}},"s":{"i":{"g":{"m":{"a":{">>":["ς"]}}}}},"t":{"h":{"e":{"t":{"a":{">>":["ϑ"]}}}},"r":{"i":{"a":{"n":{"g":{"l":{"e":{"l":{"e":{"f":{"t":{">>":["⊲"]}}}},"r":{"i":{"g":{"h":{"t":{">>":["⊳"]}}}}}}}}}}}}}}},"c":{">>":["č"]},"d":{">>":["ď"],"a":{"s":{"h":{">>":["⊢"]}}},"o":{"t":{"s":{">>":["⋮"]}}}},"e":{">>":["ě"],"e":{">>":["∨"],"b":{"a":{"r":{">>":["⊻"]}}}},"r":{"t":{">>":["|"]}}},"g":{">>":["ǧ"]},"h":{">>":["ȟ"]},"i":{">>":["ǐ"]},"j":{">>":["ǰ"]},"k":{">>":["ǩ"]},"n":{">>":["ň"]},"o":{">>":["ǒ"]},"r":{">>":["ř"]},"s":{">>":["š"]},"t":{">>":["ť"]},"u":{">>":["ǔ"]},"z":{">>":["ž"]},"{":{"A":{"}":{">>":["Ǎ"]}},"C":{"}":{">>":["Č"]}},"D":{"}":{">>":["Ď"]}},"E":{"}":{">>":["Ě"]}},"G":{"}":{">>":["Ǧ"]}},"H":{"}":{">>":["Ȟ"]}},"I":{"}":{">>":["Ǐ"]}},"K":{"}":{">>":["Ǩ"]}},"L":{"}":{">>":["Ľ"]}},"N":{"}":{">>":["Ň"]}},"O":{"}":{">>":["Ǒ"]}},"R":{"}":{">>":["Ř"]}},"S":{"}":{">>":["Š"]}},"T":{"}":{">>":["Ť"]}},"U":{"}":{">>":["Ǔ"]}},"Z":{"}":{">>":["Ž"]}},"\\":{"i":{"}":{">>":["ǐ"]}},"j":{"}":{">>":["ǰ"]}}},"a":{"}":{">>":["ǎ"]}},"c":{"}":{">>":["č"]}},"d":{"}":{">>":["ď"]}},"e":{"}":{">>":["ě"]}},"g":{"}":{">>":["ǧ"]}},"h":{"}":{">>":["ȟ"]}},"i":{"}":{">>":["ǐ"]}},"j":{"}":{">>":["ǰ"]}},"k":{"}":{">>":["ǩ"]}},"l":{"}":{">>":["ľ"]}},"n":{"}":{">>":["ň"]}},"o":{"}":{">>":["ǒ"]}},"r":{"}":{">>":["ř"]}},"s":{"}":{">>":["š"]}},"t":{"}":{">>":["ť"]}},"u":{"}":{">>":["ǔ"]}},"z":{"}":{">>":["ž"]}},"}":{">>":["ˇ"]}}},"w":{"e":{"d":{"g":{"e":{">>":["∧"]}}}},"p":{">>":["℘"]},"r":{">>":["≀"]}},"x":{">>":["×"],"i":{">>":["ξ"]}},"y":{"e":{"n":{">>":["¥"]}}},"z":{":":{">>":["⦂"]},";":{">>":["⨟","⨾"]},"e":{"t":{"a":{">>":["ζ"]}}}},"{":{"{":{">>":["⦃"]}},"|":{")":{">>":["⦈"]},"-":{">>":["⊢"],"n":{">>":["⊬"]}},"=":{">>":["⊨"],"n":{">>":["⊭"]}},">":{">>":["⦊"]},">>":["∣"],"n":{">>":["∤"]},"|":{"-":{">>":["⊩"],"n":{">>":["⊮"]}},"=":{">>":["⊫"],"n":{">>":["⊯"]}},">>":["∥"],"n":{">>":["∦"]},"|":{"-":{">>":["⊪"]}}}},"}":{"}":{">>":["⦄"]}},"~":{"-":{">>":["≃"],"n":{">>":["≄"]}},"=":{">>":["≅"],"n":{">>":["≇"]}},">>":["∼","~","̃"],"A":{">>":["Ã"]},"E":{">>":["Ẽ"]},"I":{">>":["Ĩ"]},"N":{">>":["Ñ"]},"O":{">>":["Õ"]},"U":{">>":["Ũ"]},"V":{">>":["Ṽ"]},"Y":{">>":["Ỹ"]},"a":{">>":["ã"]},"e":{">>":["ẽ"]},"i":{">>":["ĩ"]},"n":{">>":["≁","ñ"]},"o":{">>":["õ"]},"u":{">>":["ũ"]},"v":{">>":["ṽ"]},"y":{">>":["ỹ"]},"{":{"A":{"}":{">>":["Ã"]}},"I":{"}":{">>":["Ĩ"]}},"N":{"}":{">>":["Ñ"]}},"O":{"}":{">>":["Õ"]}},"U":{"}":{">>":["Ũ"]}},"\\":{"i":{"}":{">>":["ĩ"]}}},"a":{"}":{">>":["ã"]}},"n":{"}":{">>":["ñ"]}},"o":{"}":{">>":["õ"]}},"u":{"}":{">>":["ũ"]}},"}":{">>":["˜"]}},"~":{"-":{">>":["≊"]},">>":["≈"],"n":{">>":["≉"]},"~":{">>":["≋"]}}}} \ No newline at end of file diff --git a/asset/query.js b/asset/query.js index acff8fa2..103e0090 100644 --- a/asset/query.js +++ b/asset/query.js @@ -1 +1 @@ -module.exports.default = {"1000":["Hori"],"10003":["checkmark"],"1001":["hori"],"10013":["textdied"],"10016":["maltese"],"10018":["asterisk"],"10019":["asterisk"],"1002":["Gangia"],"10020":["asterisk"],"10021":["asterisk"],"10022":["blacklozenge","st","st4"],"10023":["st","st4","lozenge"],"10026":["st"],"10027":["st"],"1003":["gangia"],"10031":["st"],"10032":["st"],"10033":["asterisk"],"10034":["asterisk"],"10035":["asterisk"],"10036":["st","st8"],"10037":["st"],"10038":["st","st6"],"10039":["st"],"1004":["Shima"],"10040":["st"],"10041":["st","st12"],"10042":["asterisk"],"10043":["asterisk"],"10044":["asterisk"],"10045":["asterisk"],"1005":["shima"],"10051":["asterisk"],"10057":["asterisk"],"10058":["asterisk"],"10059":["asterisk"],"1006":["Dei"],"1007":["dei"],"1008":["varkappa"],"1009":["varrho"],"10102":["(1)"],"10103":["(2)"],"10104":["(3)"],"10105":["(4)"],"10106":["(5)"],"10107":["(6)"],"10108":["(7)"],"10109":["(8)"],"10110":["(9)"],"10111":["(10)"],"10112":["(1)"],"10113":["(2)"],"10114":["(3)"],"10115":["(4)"],"10116":["(5)"],"10117":["(6)"],"10118":["(7)"],"10119":["(8)"],"10120":["(9)"],"10121":["(10)"],"10122":["(1)"],"10123":["(2)"],"10124":["(3)"],"10125":["(4)"],"10126":["(5)"],"10127":["(6)"],"10128":["(7)"],"10129":["(8)"],"10130":["(9)"],"10131":["(10)"],"10132":["r"],"10136":["dr"],"10137":["r"],"10138":["ur"],"10139":["r"],"10140":["r"],"10141":["r"],"10142":["r"],"10143":["r"],"10144":["r"],"10145":["r"],"10146":["r"],"10147":["r"],"10148":["r"],"10149":["d"],"1015":["Sho"],"10150":["u"],"10151":["r"],"10152":["r"],"10153":["r"],"10154":["r"],"10155":["r"],"10156":["r"],"10157":["r"],"10158":["r"],"10159":["r"],"1016":["sho"],"10161":["r"],"10162":["r"],"10163":["r"],"10164":["dr"],"10165":["r"],"10166":["ur"],"10167":["dr"],"10168":["r"],"10169":["ur"],"10170":["r"],"10171":["r"],"10172":["r"],"10173":["r"],"10174":["r"],"1018":["San"],"10181":["lbag","(","(b"],"10182":[")",")b","rbag"],"1019":["san"],"10197":["join"],"10198":["join"],"10199":["join"],"10214":["[[","("],"10215":["]]",")"],"10216":["<","langle","("],"10217":[")","rangle",">"],"10218":["<<","("],"10219":[")",">>"],"10224":["u","u=="],"10225":["d","d=="],"10226":["l"],"10227":["r"],"10228":["r"],"10229":["<--","l","l--"],"10230":["r","r--","-->"],"10231":["<-->","lr","lr--"],"10232":["l"],"10233":["r"],"10234":["lr"],"10235":["l"],"10236":["r"],"10237":["l"],"10238":["r"],"10239":["r","r~"],"10502":["l"],"10503":["r"],"10626":[":"],"10627":["{{","("],"10628":["}}",")"],"10629":["(("],"10630":["))"],"10631":["(|"],"10632":["|)"],"10752":["O."],"10753":["O+"],"10754":["Ox"],"10755":["U.","union"],"10756":["U+","union"],"10757":["Glb","intersection"],"10758":["Lub","union"],"10759":["intersection"],"10760":["union"],"10761":["intersection"],"10781":["join"],"10815":["union"],"11217":["uncertainty"],"11388":["_j"],"11389":["^V"],"11826":[","],"11828":[","],"11829":[";"],"11841":[","],"11849":[","],"119860":["MiA"],"119861":["MiB"],"119862":["MiC"],"119863":["MiD"],"119864":["MiE"],"119865":["MiF"],"119866":["MiG"],"119867":["MiH"],"119868":["MiI"],"119869":["MiJ"],"119870":["MiK"],"119871":["MiL"],"119872":["MiM"],"119873":["MiN"],"119874":["MiO"],"119875":["MiP"],"119876":["MiQ"],"119877":["MiR"],"119878":["MiS"],"119879":["MiT"],"119880":["MiU"],"119881":["MiV"],"119882":["MiW"],"119883":["MiX"],"119884":["MiY"],"119885":["MiZ"],"119886":["Mia"],"119887":["Mib"],"119888":["Mic"],"119889":["Mid"],"119890":["Mie"],"119891":["Mif"],"119892":["Mig"],"119894":["Mii"],"119895":["Mij"],"119896":["Mik"],"119897":["Mil"],"119898":["Mim"],"119899":["Min"],"119900":["Mio"],"119901":["Mip"],"119902":["Miq"],"119903":["Mir"],"119904":["Mis"],"119905":["Mit"],"119906":["Miu"],"119907":["Miv"],"119908":["Miw"],"119909":["Mix"],"119910":["Miy"],"119911":["Miz"],"119912":["MIA"],"119913":["MIB"],"119914":["MIC"],"119915":["MID"],"119916":["MIE"],"119917":["MIF"],"119918":["MIG"],"119919":["MIH"],"119920":["MII"],"119921":["MIJ"],"119922":["MIK"],"119923":["MIL"],"119924":["MIM"],"119925":["MIN"],"119926":["MIO"],"119927":["MIP"],"119928":["MIQ"],"119929":["MIR"],"119930":["MIS"],"119931":["MIT"],"119932":["MIU"],"119933":["MIV"],"119934":["MIW"],"119935":["MIX"],"119936":["MIY"],"119937":["MIZ"],"119938":["MIa"],"119939":["MIb"],"119940":["MIc"],"119941":["MId"],"119942":["MIe"],"119943":["MIf"],"119944":["MIg"],"119945":["MIh"],"119946":["MIi"],"119947":["MIj"],"119948":["MIk"],"119949":["MIl"],"119950":["MIm"],"119951":["MIn"],"119952":["MIo"],"119953":["MIp"],"119954":["MIq"],"119955":["MIr"],"119956":["MIs"],"119957":["MIt"],"119958":["MIu"],"119959":["MIv"],"119960":["MIw"],"119961":["MIx"],"119962":["MIy"],"119963":["MIz"],"119964":["McA"],"119966":["McC"],"119967":["McD"],"119970":["McG"],"119973":["McJ"],"119974":["McK"],"119977":["McN"],"119978":["McO"],"119979":["McP"],"119980":["McQ"],"119982":["McS"],"119983":["McT"],"119984":["McU"],"119985":["McV"],"119986":["McW"],"119987":["McX"],"119988":["McY"],"119989":["McZ"],"119990":["Mca"],"119991":["Mcb"],"119992":["Mcc"],"119993":["Mcd"],"119995":["Mcf"],"119997":["Mch"],"119998":["Mci"],"119999":["Mcj"],"120000":["Mck"],"120001":["Mcl"],"120002":["Mcm"],"120003":["Mcn"],"120005":["Mcp"],"120006":["Mcq"],"120007":["Mcr"],"120008":["Mcs"],"120009":["Mct"],"120010":["Mcu"],"120011":["Mcv"],"120012":["Mcw"],"120013":["Mcx"],"120014":["Mcy"],"120015":["Mcz"],"120016":["MCA"],"120017":["MCB"],"120018":["MCC"],"120019":["MCD"],"120020":["MCE"],"120021":["MCF"],"120022":["MCG"],"120023":["MCH"],"120024":["MCI"],"120025":["MCJ"],"120026":["MCK"],"120027":["MCL"],"120028":["MCM"],"120029":["MCN"],"120030":["MCO"],"120031":["MCP"],"120032":["MCQ"],"120033":["MCR"],"120034":["MCS"],"120035":["MCT"],"120036":["MCU"],"120037":["MCV"],"120038":["MCW"],"120039":["MCX"],"120040":["MCY"],"120041":["MCZ"],"120042":["MCa"],"120043":["MCb"],"120044":["MCc"],"120045":["MCd"],"120046":["MCe"],"120047":["MCf"],"120048":["MCg"],"120049":["MCh"],"120050":["MCi"],"120051":["MCj"],"120052":["MCk"],"120053":["MCl"],"120054":["MCm"],"120055":["MCn"],"120056":["MCo"],"120057":["MCp"],"120058":["MCq"],"120059":["MCr"],"120060":["MCs"],"120061":["MCt"],"120062":["MCu"],"120063":["MCv"],"120064":["MCw"],"120065":["MCx"],"120066":["MCy"],"120067":["MCz"],"120068":["MfA"],"120069":["MfB"],"120071":["MfD"],"120072":["MfE"],"120073":["MfF"],"120074":["MfG"],"120077":["MfJ"],"120078":["MfK"],"120079":["MfL"],"120080":["MfM"],"120081":["MfN"],"120082":["MfO"],"120083":["MfP"],"120084":["MfQ"],"120086":["MfS"],"120087":["MfT"],"120088":["MfU"],"120089":["MfV"],"120090":["MfW"],"120091":["MfX"],"120092":["MfY"],"120094":["Mfa"],"120095":["Mfb"],"120096":["Mfc"],"120097":["Mfd"],"120098":["Mfe"],"120099":["Mff"],"120100":["Mfg"],"120101":["Mfh"],"120102":["Mfi"],"120103":["Mfj"],"120104":["Mfk"],"120105":["Mfl"],"120106":["Mfm"],"120107":["Mfn"],"120108":["Mfo"],"120109":["Mfp"],"120110":["Mfq"],"120111":["Mfr"],"120112":["Mfs"],"120113":["Mft"],"120114":["Mfu"],"120115":["Mfv"],"120116":["Mfw"],"120117":["Mfx"],"120118":["Mfy"],"120119":["Mfz"],"120120":["bA"],"120121":["bB"],"120123":["bD"],"120124":["bE"],"120125":["bF"],"120126":["bG"],"120128":["bI"],"120129":["bJ"],"120130":["bK"],"120131":["bL"],"120132":["bM"],"120134":["bO"],"120138":["bS"],"120139":["bT"],"120140":["bU"],"120141":["bV"],"120142":["bW"],"120143":["bX"],"120144":["bY"],"120146":["ba"],"120147":["bb"],"120148":["bc"],"120149":["bd"],"120150":["be"],"120151":["bf"],"120152":["bg"],"120153":["bh"],"120154":["bi"],"120155":["bj"],"120156":["bk"],"120157":["bl"],"120158":["bm"],"120159":["bn"],"120160":["bo"],"120161":["bp"],"120162":["bq"],"120163":["br"],"120164":["bs"],"120165":["bt"],"120166":["bu"],"120167":["bv"],"120168":["bw"],"120169":["bx"],"120170":["by"],"120171":["bz"],"120782":["B0"],"120783":["B1"],"120784":["B2"],"120785":["B3"],"120786":["B4"],"120787":["B5"],"120788":["B6"],"120789":["B7"],"120790":["B8"],"120791":["B9"],"120792":["b0"],"120793":["b1"],"120794":["b2"],"120795":["b3"],"120796":["b4"],"120797":["b5"],"120798":["b6"],"120799":["b7"],"120800":["b8"],"120801":["b9"],"12289":[","],"12296":["("],"12297":[")"],"12298":["ldata","("],"12299":[")","rdata"],"123":["("],"12300":["("],"12301":[")"],"12302":["("],"12303":[")"],"12304":["("],"12305":[")"],"12308":["("],"12309":[")"],"12310":["("],"12311":[")"],"12314":["llbracket","("],"12315":[")","rrbracket"],"125":[")"],"128679":["construction"],"128711":["prohibited"],"128721":["octagonal"],"12880":["partnership"],"1547":["afghani"],"1548":[","],"1563":[";"],"160":[" "],"161":["!"],"162":["cent"],"163":["pound","pounds"],"164":["currency"],"165":["yen"],"166":["brokenbar"],"167":["S","section"],"168":["\"{}"],"169":["copyright"],"170":["^a_","ordfeminine"],"171":["\"<","flqq"],"172":["neg","lnot"],"173":["-"],"174":["registered","circledR"],"175":["={}"],"176":["degree"],"177":["pm"],"178":["^2"],"179":["^3"],"180":["'{}"],"181":["micro","textmu"],"182":["P","pilcrow","paragraph"],"183":["cdot","centerdot"],"184":["c{}"],"185":["^1"],"186":["^o_","ordmasculine"],"187":["\">","frqq"],"188":["frac","frac14"],"189":["frac","frac12"],"190":["frac","frac34"],"191":["?"],"192":["`A","`{A}"],"193":["'A","'{A}"],"194":["^{A}","^A"],"195":["~A","~{A}"],"196":["\"A","\"{A}"],"197":["AA"],"198":["AE"],"199":["cC","c{C}"],"200":["`E","`{E}"],"201":["'E","'{E}"],"202":["^{E}","^E"],"203":["\"E","\"{E}"],"204":["`I","`{I}"],"205":["'I","'{I}"],"206":["^{I}","^I"],"207":["\"I","\"{I}"],"208":["DH"],"209":["~N","~{N}"],"210":["`O","`{O}"],"211":["'O","'{O}"],"212":["^{O}","^O"],"213":["~O","~{O}"],"214":["\"O","\"{O}"],"215":["x","multiplication","times"],"216":["O"],"217":["`U","`{U}"],"218":["'U","'{U}"],"219":["^{U}","^U"],"220":["\"U","\"{U}"],"221":["'Y","'{Y}"],"222":["TH"],"223":["ss"],"224":["`a","`{a}"],"225":["'a","'{a}"],"226":["^{a}","^a"],"227":["~a","~{a}"],"228":["\"a","\"{a}"],"229":["aa"],"230":["ae"],"231":["cc","c{c}"],"232":["`e","`{e}"],"233":["'e","'{e}"],"234":["^{e}","^e"],"235":["\"e","\"{e}"],"236":["`i","`{i}"],"237":["'i","'{i}"],"238":["^{i}","^i"],"239":["\"i","\"{i}"],"240":["dh"],"241":["~{n}","~n"],"242":["`o","`{o}"],"243":["'o","'{o}"],"244":["^{o}","^o"],"245":["~o","~{o}"],"246":["\"o","\"{o}"],"247":["div","division"],"248":["o"],"249":["`u","`{u}"],"250":["'u","'{u}"],"251":["^{u}","^u"],"252":["\"u","\"{u}"],"253":["'y","'{y}"],"254":["th"],"255":["\"y","\"{y}"],"256":["=A","={A}"],"257":["=a","={a}"],"258":["uA","u{A}"],"259":["ua","u{a}"],"260":["kA","k{A}"],"261":["ka","k{a}"],"262":["'C","'{C}"],"263":["'c","'{c}"],"264":["^C","^{C}"],"265":["^{c}","^c"],"266":[".C",".{C}"],"267":[".c",".{c}"],"268":["vC","v{C}"],"269":["vc","v{c}"],"270":["vD","v{D}"],"271":["vd","v{d}"],"274":["=E","={E}"],"275":["=e","={e}"],"276":["uE","u{E}"],"277":["ue","u{e}"],"278":[".E",".{E}"],"279":[".e",".{e}"],"280":["kE","k{E}"],"281":["ke","k{e}"],"282":["vE","v{E}"],"283":["ve","v{e}"],"284":["^{G}","^G"],"285":["^{g}","^g"],"286":["uG","u{G}"],"287":["ug","u{g}"],"288":[".G",".{G}"],"289":[".g",".{g}"],"290":["cG","c{G}"],"291":["cg","c{g}"],"292":["^{H}","^H"],"293":["^{h}","^h"],"296":["~I","~{I}"],"297":["~i","~{\\i}","~{i}"],"298":["=I","={I}"],"299":["=i","={\\i}","={i}"],"300":["uI","u{I}"],"301":["ui","u{i}","u{\\i}"],"302":["kI","k{I}"],"303":["ki","k{i}"],"304":[".I",".{I}"],"305":["i","imath"],"308":["^{J}","^J"],"309":["^{\\j}","^{j}","^j"],"310":["cK","c{K}"],"311":["ck","c{k}"],"313":["'L","'{L}"],"314":["'l","'{l}"],"315":["cL","c{L}"],"316":["c{l}","cl"],"317":["vL","v{L}"],"318":["vl","v{l}"],"321":["L"],"322":["l"],"323":["'N","'{N}"],"324":["'n","'{n}"],"325":["cN","c{N}"],"326":["cn","c{n}"],"327":["vN","v{N}"],"328":["vn","v{n}"],"332":["=O","={O}"],"333":["={o}","=o"],"334":["uO","u{O}"],"335":["uo","u{o}"],"336":["HO","H{O}"],"337":["Ho","H{o}","Uo","U{o}"],"338":["OE"],"339":["oe"],"340":["'R","'{R}"],"341":["'r","'{r}"],"342":["cR","c{R}"],"343":["cr","c{r}"],"344":["vR","v{R}"],"345":["vr","v{r}"],"346":["'S","'{S}"],"347":["'s","'{s}"],"348":["^S","^{S}"],"349":["^{s}","^s"],"350":["cS","c{S}"],"351":["cs","c{s}"],"352":["vS","v{S}"],"353":["vs","v{s}"],"354":["cT","c{T}"],"355":["ct","c{t}"],"356":["vT","v{T}"],"357":["vt","v{t}"],"360":["~U","~{U}"],"361":["~u","~{u}"],"362":["=U","={U}"],"363":["=u","={u}"],"364":["uU","u{U}"],"3647":["textbaht"],"365":["u{u}","uu"],"368":["HU","H{U}"],"369":["Hu","H{u}"],"370":["kU","k{U}"],"371":["ku","k{u}"],"372":["^{W}","^W"],"373":["^{w}","^w"],"374":["^Y","^{Y}"],"375":["^{y}","^y"],"376":["\"Y","\"{Y}"],"377":["'Z","'{Z}"],"378":["'z","'{z}"],"379":[".Z",".{Z}"],"380":[".z",".{z}"],"381":["vZ","v{Z}"],"382":["vz","v{z}"],"40":["("],"41":[")"],"411":["Gl-","lambdabar"],"42742":[";"],"42889":[":"],"43000":["^\\H With Stroke"],"43001":["^\\ligature oe"],"43868":["^\\heng"],"43869":["^\\l with inverted lazy s"],"43870":["^\\l with middle tilde"],"43871":["^\\u with left hook"],"461":["vA","v{A}"],"462":["va","v{a}"],"463":["vI","v{I}"],"464":["vi","v{\\i}","v{i}"],"465":["vO","v{O}"],"466":["vo","v{o}"],"467":["vU","v{U}"],"468":["vu","v{u}"],"469":["\"\\=U","\"\\={U}"],"470":["\"\\=u","\"\\={u}"],"471":["\"\\'U","\"\\'{U}"],"472":["\"\\'u","\"\\'{u}"],"473":["\"\\vU","\"\\v{U}"],"474":["\"\\vu","\"\\v{u}"],"475":["\"\\`U","\"\\`{U}"],"476":["\"\\`u","\"\\`{u}"],"478":["\"\\=A","\"\\={A}"],"479":["\"\\=a","\"\\={a}"],"480":[".\\=A",".\\={A}"],"481":[".\\=a",".\\={a}"],"482":["=\\AE","={\\AE}"],"483":["=\\ae","={\\ae}"],"486":["vG","v{G}"],"487":["vg","v{g}"],"488":["vK","v{K}"],"489":["vk","v{k}"],"490":["kO","k{O}"],"491":["ko","k{o}"],"492":["k\\=O","k\\={O}"],"493":["k\\=o","k\\={o}"],"496":["vj","v{\\j}","v{j}"],"4964":[";"],"4965":[":"],"4966":[":"],"500":["'G","'{G}"],"501":["'g","'{g}"],"504":["`N","`{N}"],"505":["`n","`{n}"],"508":["'\\AE","'{\\AE}"],"509":["'\\ae","'{\\ae}"],"510":["'\\O","'{\\O}"],"511":["'\\o","'{\\o}"],"542":["vH","v{H}"],"543":["vh","v{h}"],"550":[".A",".{A}"],"551":[".a",".{a}"],"552":["cE","c{E}"],"553":["c{e}","ce"],"554":["\"\\=O","\"\\={O}"],"555":["\"\\=o","\"\\={o}"],"556":["~\\=O","~\\={O}"],"557":["~\\=o","~\\={o}"],"558":[".O",".{O}"],"559":[".o",".{o}"],"560":[".\\=O",".\\={O}"],"561":[".\\=o",".\\={o}"],"562":["=Y","={Y}"],"563":["=y","={y}"],"60":["leq"],"61":["eq"],"62":["geq"],"65020":["rial"],"65040":[","],"65041":[","],"65043":[":"],"65044":[";"],"65077":["("],"65078":[")"],"65079":["("],"65080":[")"],"65081":["("],"65082":[")"],"65083":["("],"65084":[")"],"65085":["("],"65086":[")"],"65087":["("],"65088":[")"],"65089":["("],"65090":[")"],"65091":["("],"65092":[")"],"65104":[","],"65105":[","],"65108":[";"],"65109":[":"],"65113":["("],"65114":[")"],"65115":["("],"65116":[")"],"65117":["("],"65118":[")"],"65128":["sbs"],"65288":["("],"65289":[")"],"65292":[","],"65306":[":"],"65307":[";"],"65339":["("],"65341":[")"],"65371":["("],"65373":[")"],"65378":["("],"65379":[")"],"65380":[","],"65934":["nomisma"],"688":["^h"],"689":["^\\h hook","^\\h with hook"],"690":["^j"],"691":["^r"],"692":["^\\turned r"],"693":["^\\turned r hook","^\\turned r with hook"],"694":["^\\capital inverted r"],"695":["^w"],"696":["^y"],"699":[","],"711":["v{}"],"720":[":"],"728":["u{}"],"729":[".{}"],"731":["k{}"],"732":["~{}"],"733":["H{}"],"736":["^\\gamma"],"737":["^l"],"738":["^s"],"739":["^x"],"740":["^\\reversed glottal stop"],"7468":["^A"],"7469":["^\\Ae"],"7470":["^B"],"7471":["^\\Barred B"],"7472":["^D"],"7473":["^E"],"7474":["^\\Reversed E"],"7475":["^G"],"7476":["^H"],"7477":["^I"],"7478":["^J"],"7479":["^K"],"7480":["^L"],"7481":["^M"],"7482":["^N"],"7483":["^\\Reversed N"],"7484":["^O"],"7485":["^\\Ou"],"7486":["^P"],"7487":["^R"],"7488":["^T"],"7489":["^U"],"7490":["^W"],"7491":["^a"],"7492":["^\\turned a"],"7493":["^\\alpha"],"7494":["^\\turned ae"],"7495":["^b"],"7496":["^d"],"7497":["^e"],"7498":["^\\schwa"],"7499":["^\\open e"],"7500":["^\\turned open e"],"7501":["^g"],"7502":["^\\turned i"],"7503":["^k"],"7504":["^m"],"7505":["^\\eng"],"7506":["^o"],"7507":["^\\open o"],"7508":["^\\top half o"],"7509":["^\\bottom half o"],"7510":["^p"],"7511":["^t"],"7512":["^u"],"7513":["^\\sideways u"],"7514":["^\\turned m"],"7515":["^v"],"7516":["^\\ain"],"7517":["^\\beta"],"7518":["^\\greek gamma"],"7519":["^\\delta"],"7520":["^\\greek phi"],"7521":["^\\chi"],"7522":["_i"],"7523":["_r"],"7524":["_u"],"7525":["_v","_v"],"7579":["^\\turned alpha"],"7580":["^c"],"7581":["^\\c with curl"],"7582":["^\\eth"],"7583":["^\\reversed open e"],"7584":["^f"],"7585":["^\\dotless j with stroke"],"7586":["^\\script g"],"7587":["^\\turned h"],"7588":["^\\i with stroke"],"7589":["^\\iota"],"7590":["^\\capital i"],"7591":["^\\capital i with stroke"],"7592":["^\\j with crossed-tail"],"7593":["^\\l with retroflex hook"],"7594":["^\\l with palatal hook"],"7595":["^\\capital l"],"7596":["^\\m with hook"],"7597":["^\\turned m with long leg"],"7598":["^\\n with left hook"],"7599":["^\\n with retroflex hook"],"760":[":"],"7600":["^\\capital n"],"7601":["^\\barred o"],"7602":["^\\phi"],"7603":["^\\s with hook"],"7604":["^\\esh"],"7605":["^\\t with palatal hook"],"7606":["^\\u bar"],"7607":["^\\upsilon"],"7608":["^\\capital u"],"7609":["^\\v with hook"],"7610":["^\\turned v"],"7611":["^z"],"7612":["^\\z with retroflex hook"],"7613":["^\\z with curl"],"7614":["^\\ezh"],"7615":["^\\theta"],"768":["`"],"7682":[".B",".{B}"],"7683":[".b",".{b}"],"7684":["d{B}"],"7685":["d{b}"],"7688":["c\\'C","c\\'{C}"],"7689":["c\\'c","c\\'{c}"],"769":["'"],"7690":[".D",".{D}"],"7691":[".d",".{d}"],"7692":["d{D}"],"7693":["d{d}"],"7696":["cD","c{D}"],"7697":["c{d}","cd"],"770":["^","^^"],"7700":["=\\`E","=\\`{E}"],"7701":["=\\`e","=\\`{e}"],"7702":["=\\'E","=\\'{E}"],"7703":["=\\'e","=\\'{e}"],"7708":["c\\uE","c\\u{E}"],"7709":["c\\ue","c\\u{e}"],"771":["^~","~"],"7710":[".F",".{F}"],"7711":[".f",".{f}"],"7712":["=G","={G}"],"7713":["=g","={g}"],"7714":[".H",".{H}"],"7715":[".h",".{h}"],"7716":["d{H}"],"7717":["d{h}"],"7718":["\"H","\"{H}"],"7719":["\"h","\"{h}"],"772":["="],"7720":["cH","c{H}"],"7721":["ch","c{h}"],"7726":["\"\\'I","\"\\'{I}"],"7727":["\"\\'i","\"\\'{i}"],"7728":["'K","'{K}"],"7729":["'k","'{k}"],"773":["^--"],"7730":["d{K}"],"7731":["d{k}"],"7734":["d{L}"],"7735":["d{l}"],"7736":["d\\=L","d\\={L}"],"7737":["d\\=l","d\\={l}"],"774":["^v","u"],"7742":["'M","'{M}"],"7743":["'m","'{m}"],"7744":[".M",".{M}"],"7745":[".m",".{m}"],"7746":["d{M}"],"7747":["d{m}"],"7748":[".N",".{N}"],"7749":[".n",".{n}"],"775":["^.","."],"7750":["d{N}"],"7751":["d{n}"],"7756":["~\\'O","~\\'{O}"],"7757":["~\\'o","~\\'{o}"],"7758":["~\\\"O","~\\\"{O}"],"7759":["~\\\"o","~\\\"{o}"],"776":["\"","^."],"7760":["=\\`O","=\\`{O}"],"7761":["=\\`o","=\\`{o}"],"7762":["=\\'O","=\\'{O}"],"7763":["=\\'o","=\\'{o}"],"7764":["'P","'{P}"],"7765":["'p","'{p}"],"7766":[".P",".{P}"],"7767":[".p",".{p}"],"7768":[".R",".{R}"],"7769":[".r",".{r}"],"7770":["d{R}"],"7771":["d{r}"],"7772":["d\\=R","d\\={R}"],"7773":["d\\=r","d\\={r}"],"7776":[".S",".{S}"],"7777":[".s",".{s}"],"7778":["d{S}"],"7779":["d{s}"],"7780":["'\\.S","'\\.{S}"],"7781":["'\\.s","'\\.{s}"],"7782":["v\\.S","v\\.{S}"],"7783":["v\\.s","v\\.{s}"],"7784":["d\\.S","d\\.{S}"],"7785":["d\\.s","d\\.{s}"],"7786":[".T",".{T}"],"7787":[".t",".{t}"],"7788":["d{T}"],"7789":["d{t}"],"779":["H"],"780":["v","^v"],"7800":["~\\'U","~\\'{U}"],"7801":["~\\'u","~\\'{u}"],"7802":["=\\\"U","=\\\"{U}"],"7803":["=\\\"u","=\\\"{u}"],"7804":["~V","~{V}"],"7805":["~v","~{v}"],"7806":["d{V}"],"7807":["d{v}"],"7808":["`W","`{W}"],"7809":["`w","`{w}"],"7810":["'W","'{W}"],"7811":["'w","'{w}"],"7812":["\"W","\"{W}"],"7813":["\"w","\"{w}"],"7814":[".W",".{W}"],"7815":[".w",".{w}"],"7816":["d{W}"],"7817":["d{w}"],"7818":[".X",".{X}"],"7819":[".x",".{x}"],"7820":["\"X","\"{X}"],"7821":["\"x","\"{x}"],"7822":[".Y",".{Y}"],"7823":[".y",".{y}"],"7824":["^Z","^{Z}"],"7825":["^{z}","^z"],"7826":["d{Z}"],"7827":["d{z}"],"7831":["\"t","\"{t}"],"7840":["d{A}"],"7841":["d{a}"],"7844":["^\\'A","^\\'{A}"],"7845":["^\\'a","^\\'{a}"],"7846":["^\\`A","^\\`{A}"],"7847":["^\\`a","^\\`{a}"],"785":["^^"],"7850":["^\\~A","^\\~{A}"],"7851":["^\\~a","^\\~{a}"],"7852":["^\\d{A}"],"7853":["^\\d{a}"],"7854":["u\\'A","u\\'{A}"],"7855":["u\\'a","u\\'{a}"],"7856":["u\\`A","u\\`{A}"],"7857":["u\\`a","u\\`{a}"],"7860":["u\\~A","u\\~{A}"],"7861":["u\\~a","u\\~{a}"],"7862":["u\\d{A}"],"7863":["u\\d{a}"],"7864":["d{E}"],"7865":["d{e}"],"7868":["~E","~{E}"],"7869":["~e","~{e}"],"7870":["^\\'E","^\\'{E}"],"7871":["^\\'e","^\\'{e}"],"7872":["^\\`E","^\\`{E}"],"7873":["^\\`e","^\\`{e}"],"7876":["^\\~E","^\\~{E}"],"7877":["^\\~e","^\\~{e}"],"7878":["^\\d{E}"],"7879":["^\\d{e}"],"7882":["d{I}"],"7883":["d{i}"],"7884":["d{O}"],"7885":["d{o}"],"7888":["^\\'O","^\\'{O}"],"7889":["^\\'o","^\\'{o}"],"7890":["^\\`O","^\\`{O}"],"7891":["^\\`o","^\\`{o}"],"7894":["^\\~O","^\\~{O}"],"7895":["^\\~o","^\\~{o}"],"7896":["^\\d{O}"],"7897":["^\\d{o}"],"7908":["d{U}"],"7909":["d{u}"],"7922":["`Y","`{Y}"],"7923":["`y","`{y}"],"7924":["d{Y}"],"7925":["d{y}"],"7928":["~Y","~{Y}"],"7929":["~y","~{y}"],"803":["_.","d"],"804":["_."],"807":["c"],"808":["k"],"810":["_^"],"812":["_v"],"813":["_^"],"814":["_v"],"815":["_^"],"816":["_~"],"817":["b"],"818":["_--"],"819":["_--"],"8193":["quad"],"8196":[";"],"8197":[":"],"8204":["/"],"8211":["en"],"8212":["em"],"8214":["Vert"],"8216":["grq","lq"],"8217":["rq"],"8218":["glq"],"8220":["\"'","grqq","ldq"],"8221":["rdq"],"8222":["\"`","glqq"],"8224":["dag","dagger"],"8225":["ddag","ddagger"],"8226":["bu","bub"],"8227":["bu","but"],"8230":["ldots"],"8232":["newline"],"8239":[","],"824":["not"],"8240":["permil"],"8241":["textpertenthousand"],"8242":["varprime","'","prime"],"8243":["'"],"8244":["'"],"8245":["`","backprime"],"8246":["`"],"8247":["`"],"8249":["flq"],"8250":["frq"],"8251":["textreferencemark"],"8252":["!!"],"8253":["?!","textinterrobang"],"8255":["undertie"],"8256":["tie"],"8258":["asterisk"],"826":["_v"],"8260":["textfractionsolidus"],"8261":["textlquill","("],"8262":[")","textrquill"],"8263":["??"],"8264":["?!"],"8265":["!?"],"8268":["bu"],"8269":["bu"],"8270":["asterisk"],"8271":[";"],"8273":["asterisk"],"8274":["textdiscount"],"8279":["'"],"8304":["^0"],"8305":["^i"],"8308":["^4"],"8309":["^5"],"831":["^--"],"8310":["^6"],"8311":["^7"],"8312":["^8"],"8313":["^9"],"8314":["^+"],"8315":["^-"],"8316":["^="],"8317":["^(","("],"8318":["^)",")"],"8319":["^n"],"8320":["_0"],"8321":["_1"],"8322":["_2"],"8323":["_3"],"8324":["_4"],"8325":["_5"],"8326":["_6"],"8327":["_7"],"8328":["_8"],"8329":["_9"],"8330":["_+"],"8331":["_-"],"8332":["_="],"8333":["_(","("],"8334":["_)",")"],"8336":["_a"],"8337":["_e"],"8338":["_o"],"8339":["_x"],"8341":["_h"],"8342":["_k"],"8343":["_l"],"8344":["_m"],"8345":["_n"],"8346":["_p"],"8347":["_s"],"8348":["_t"],"8353":["colon","textcolonmonetary"],"8354":["cruzeiro"],"8356":["lira","textlira"],"8357":["mill"],"8358":["naira","textnaira"],"8359":["peseta"],"8360":["rupee"],"8361":["won","textwon"],"8363":["dong"],"8364":["euro"],"8365":["kip"],"8366":["tugrik"],"8367":["drachma"],"8369":["peso","textpeso"],"8370":["guarani"],"8371":["austral"],"8372":["hryvnia"],"8373":["cedi"],"8375":["spesmilo"],"8376":["tenge"],"838":["^^"],"8380":["manat"],"8381":["ruble"],"8382":["lari"],"8383":["bitcoin"],"8400":["^l"],"8401":["^r"],"8404":["^l"],"8405":["^r"],"8406":["^l","^l-"],"8407":["^r","^r-"],"8411":["^."],"8412":["^."],"8413":["textbigcircle"],"8417":["^lr"],"844":["^~"],"845":["_lr"],"8450":["bC"],"8451":["celsius"],"8458":["Mcg"],"8459":["McH"],"8460":["MfH"],"8461":["bH"],"8462":["Mih"],"8463":["hbar"],"8464":["McI","mathscr{I}"],"8465":["MfI","Im"],"8466":["McL"],"8467":["ell"],"8469":["Bbb{N}","bN"],"8470":["numero","textnumero"],"8471":["textcircledP"],"8472":["wp"],"8473":["Bbb{P}","bP"],"8474":["bQ"],"8475":["McR"],"8476":["Re","MfR"],"8477":["Bbb{R}","bR"],"8478":["textrecipe"],"8480":["^{SM}"],"8481":["^{TEL}","telephone"],"8482":["^{TM}"],"8484":["Bbb{Z}","bZ"],"8485":["ounce"],"8486":["ohm"],"8487":["mho"],"8488":["MfZ"],"8490":["kelvin"],"8491":["angstrom"],"8492":["McB"],"8493":["MfC"],"8494":["textestimated"],"8495":["Mce"],"8496":["McE"],"8497":["McF"],"8499":["McM"],"8500":["Mco"],"8501":["aleph"],"8502":["beth"],"8503":["gimel"],"8504":["daleth"],"8507":["facsimile"],"8508":["bGp"],"8509":["bGg"],"8510":["bGG"],"8511":["bGP"],"8512":["bGS","union"],"8523":["&"],"8524":["per"],"8531":["frac","frac13"],"8532":["frac","frac23"],"8533":["frac","frac15"],"8534":["frac","frac25"],"8535":["frac","frac35"],"8536":["frac","frac45"],"8537":["frac","frac16"],"8538":["frac","frac56"],"8539":["frac","frac18"],"8540":["frac","frac38"],"8541":["frac","frac58"],"8542":["frac","frac78"],"8543":["frac","frac1"],"8592":["<-","gets","l","longleftarrow","l-","leftarrow"],"8593":["u","uparrow","u-"],"8594":["r","rightarrow","r-","longrightarrow","to","->"],"8595":["d","downarrow","d-"],"8596":["<->","longleftrightarrow","lr","lr-","leftrightarrow"],"8597":["updownarrow","ud","ud-"],"8598":["ul","ul-","nwarrow"],"8599":["ur","ur-","nearrow"],"8600":["searrow","dr","dr-"],"8601":["swarrow","dl","dl-"],"8602":["nleftarrow","<-n","l","l-n"],"8603":["r","r-n","nrightarrow","->n"],"8604":["l","l~"],"8605":["r","r~","leadsto"],"8606":["l","ll-","twoheadleftarrow"],"8607":["u","uu-"],"8608":["r","rr-","twoheadrightarrow"],"8609":["d","dd-"],"8610":["l","l->","leftarrowtail"],"8611":["r","rightarrowtail","r->"],"8612":["l","l-|"],"8613":["u","u-|"],"8614":["r","r-|","longmapsto","mapsto"],"8615":["d","d-|"],"8616":["ud","ud-|"],"8617":["hookleftarrow","l"],"8618":["hookrightarrow","r"],"8619":["l","looparrowleft"],"8620":["r","looparrowright"],"8621":["lr","lr~","leftrightsquigarrow"],"8622":["nleftrightarrow","<->n","lr","lr-n"],"8623":["d","dz"],"8624":["Lsh","u"],"8625":["Rsh","u"],"8626":["d"],"8627":["d"],"8628":["r"],"8629":["d"],"8630":["curvearrowleft","l"],"8631":["r","curvearrowright"],"8632":["ul"],"8633":["l"],"8634":["circlearrowleft","l"],"8635":["r","circlearrowright"],"8636":["l","leftharpoonup"],"8637":["l","leftharpoondown"],"8638":["u","uprightharpoon"],"8639":["u","upleftharpoon"],"8640":["r","rightharpoonup"],"8641":["r","rightharpoondown"],"8642":["d","downrightharpoon"],"8643":["d","downleftharpoon"],"8644":["r","rightleftarrows","r-l-"],"8645":["u","u-d-"],"8646":["l","l-r-","leftrightarrows"],"8647":["l","l-2","leftleftarrows"],"8648":["u","upuparrows","u-2"],"8649":["r","rightrightarrows","r-2"],"8650":["d","downdownarrows","d-2"],"8651":["l","leftrightharpoons"],"8652":["r","rightleftharpoons"],"8653":["nLeftarrow","l","l=n"],"8654":["nLeftrightarrow","<=>n","lr","lr=n"],"8655":["r","r=n","nRightarrow","=>n"],"8656":["Longleftarrow","Leftarrow","l","l="],"8657":["Uparrow","u","u="],"8658":["Rightarrow","r","r=","Longrightarrow","=>"],"8659":["Downarrow","d","d="],"8660":["Longleftrightarrow","Leftrightarrow","iff","<=>","lr","lr="],"8661":["Updownarrow","ud","ud="],"8662":["ul","ul="],"8663":["ur","ur="],"8664":["dr","dr="],"8665":["dl","dl="],"8666":["Lleftarrow","l","l=="],"8667":["Rrightarrow","r","r=="],"8668":["l","l~"],"8669":["r","r~","squigarrowright"],"8670":["u"],"8671":["d"],"8672":["l"],"8673":["u"],"8674":["r"],"8675":["d"],"8676":["l"],"8677":["r"],"8678":["l"],"8679":["u"],"8680":["r"],"8681":["d"],"8682":["u"],"8683":["u"],"8684":["u"],"8685":["u"],"8686":["u"],"8687":["u"],"8688":["r"],"8689":["ul"],"8690":["dr"],"8691":["ud"],"8692":["r"],"8693":["d","d-u-"],"8694":["r","r-3"],"8695":["l"],"8696":["r"],"8697":["lr"],"8698":["l"],"8699":["r"],"8700":["lr"],"8701":["l"],"8702":["r"],"8703":["lr"],"8704":["forall","all"],"8705":["complement","C"],"8706":["partial"],"8707":["ex","exists"],"8708":["nexists","exn"],"8709":["0","emptyset"],"8710":["increment"],"8711":["nabla"],"8712":["in","member"],"8713":["notin","inn","member"],"8714":["member"],"8715":["ni","member"],"8716":["nin","member"],"8717":["backepsilon","member"],"8718":["qed"],"8719":["prod","intersection"],"8720":["coprod","union","smallamalg","amalg"],"8721":["union","sum"],"8722":["minus"],"8723":["mp"],"8724":["dotplus",".+"],"8726":["smallsetminus","setminus"],"8727":["ast"],"8728":["circ","comp","o"],"8729":["."],"8730":["surd"],"8731":["surd3"],"8732":["surd4"],"8733":["varpropto","propto"],"8734":["inf","infty"],"8735":["angle"],"8736":["angle"],"8737":["measuredangle","angle"],"8738":["sphericalangle","angle"],"8739":["|","shortmid","mid"],"8740":["|n","nshortmid","nmid"],"8741":["parallel","||","shortparallel"],"8742":["||n","nshortparallel","nparallel"],"8743":["wedge","intersection","and"],"8744":["vee","union","or"],"8745":["cap","i","intersection"],"8746":["cup","un","union"],"8747":["int","integral"],"8748":["integral"],"8749":["integral"],"8750":["integral","oint"],"8751":["integral"],"8752":["integral"],"8753":["integral"],"8754":["integral"],"8755":["integral"],"8756":["therefore"],"8757":["because"],"8758":[":"],"8759":["::"],"8760":[".-"],"8761":["-:"],"8762":["::-"],"8763":[":~","eq"],"8764":["sim","thicksim","~","eq"],"8765":["backsim","eq"],"8766":["eq"],"8767":["eq"],"8768":["wr","eq"],"8769":["nsim","~n","eqn"],"8770":["-~","eq"],"8771":["simeq","~-","eq"],"8772":["nsimeq","~-n","eqn"],"8773":["cong","~=","eq"],"8774":["eqn"],"8775":["ncong","~=n","eqn"],"8776":["thickapprox","approx","~~","eq"],"8777":["napprox","~~n","eqn"],"8778":["approxeq","~~-","eq"],"8779":["~~~","eq"],"8780":["backcong","eq"],"8781":["asymp","eq"],"8782":["Bumpeq","eq"],"8783":["bumpeq","eq"],"8784":["doteq",".=","eq"],"8785":["doteqdot",".=.","eq"],"8786":["fallingdotseq","eq"],"8787":["risingdotseq","eq"],"8788":["coloneq",":=","eq"],"8789":["=:","eq","eqcolon"],"8790":["eq","eqcirc"],"8791":["circeq","=o","eq"],"8792":["(=","eq"],"8793":["defs","and=","eq"],"8794":["or=","eq"],"8795":["*=","eq"],"8796":["triangleq","t=","eq"],"8797":["def=","eq"],"8798":["m=","eq"],"8799":["?=","eq"],"880":["Heta"],"8800":["ne","neq","=n","eqn"],"8801":["==","eq","equiv"],"8802":["nequiv","==n","eqn"],"8803":["===","eq"],"8804":["<=","le","leq","leqslant"],"8805":[">=","ge","geq","geqslant"],"8806":["leq","leqq"],"8807":["geq","geqq"],"8808":["lvertneqq","lneq","lneqq","leqn"],"8809":["gvertneqq","gneq","gneqq","geqn"],"881":["heta"],"8810":["ll","leq"],"8811":["gg","geq"],"8812":["between","eq"],"8813":["eqn"],"8814":["nless","n","geqn"],"8816":["nleq","nleqslant","nleqq","<=n","len","leqn"],"8817":["ngeq","ngeqslant","ngeqq",">=n","gen","geqn"],"8818":["<~","lesssim","lessapprox","leq"],"8819":[">~","gtrsim","gtrapprox","geq"],"8820":["<~nn","leqn"],"8821":[">~nn","geqn"],"8822":["lessgtr","leq"],"8823":["gtrless","geq"],"8824":["leqn"],"8825":["geqn"],"8826":["prec","leq"],"8827":["succ","geq"],"8828":["preceq","curlypreceq","leq"],"8829":["succeq","succcurlyeq","geq"],"8830":["precsim","precapprox","leq"],"8831":["succsim","succapprox","geq"],"8832":["nprec","leqn"],"8833":["nsucc","geqn"],"8834":["sub","subset","leq"],"8835":["sup","supset","geq"],"8836":["nsubset","subn","leqn"],"8837":["nsupset","supn","geqn"],"8838":["subseteq","subseteqq","sub=","leq"],"8839":["supseteq","supseteqq","sup=","geq"],"8840":["nsubseteq","nsubseteqq","sub=n","leqn"],"8841":["nsupseteq","nsupseteqq","sup=n","geqn"],"8842":["subsetneq","subsetneqq","leqn"],"8843":["supsetneq","supsetneqq","geqn"],"8844":["union"],"8845":["u.","union"],"8846":["uplus","u+","union"],"8847":["sqsubset","squb","leq"],"8848":["sqsupset","squp","geq"],"8849":["sqsubseteq","squb=","leq"],"8850":["sqsupseteq","squp=","geq"],"8851":["intersection","sqcap","glb"],"8852":["union","sqcup","lub"],"8853":["oplus","o+"],"8854":["ominus","o--"],"8855":["otimes","ox"],"8856":["oslash","o/"],"8857":["odot","o."],"8858":["circledcirc","oo"],"8859":["circledast","o*"],"8860":["o="],"8861":["circleddash","o-"],"8862":["boxplus","b+"],"8863":["boxminus","b-"],"8864":["boxtimes","bx"],"8865":["b.","dotsquare"],"8866":["vdash","|-","entails"],"8867":["dashv","-|","entails"],"8868":["top","entails"],"8869":["perp","bot","entails"],"8870":["entails"],"8871":["models","entails"],"8872":["vDash","|=","entails"],"8873":["Vdash","||-","entails"],"8874":["Vvdash","|||-","entails"],"8875":["||=","entails"],"8876":["|-n","nvdash","entails"],"8877":["|=n","nvDash","entails"],"8878":["||-n","nVdash","entails"],"8879":["||=n","nVDash","entails"],"8880":["leq"],"8881":["geq"],"8882":["vartriangleleft","leq"],"8883":["vartriangleright","geq"],"8884":["leq","trianglelefteq"],"8885":["geq","trianglerighteq"],"8888":["r","r-o","multimap","-o"],"8889":["+ "],"8890":["intercal"],"8891":["veebar","union"],"8892":["barwedge","intersection"],"8893":["union"],"8894":["angle"],"8895":["angle"],"8896":["bigwedge","And","intersection"],"8897":["bigvee","Or","union"],"8898":["bigcap","I","intersection"],"8899":["bigcup","Un","union"],"8900":["diamond"],"8902":["st","star","*"],"8903":["divideontimes"],"8904":["Join","join","bowtie"],"8905":["join","ltimes"],"8906":["rtimes","join"],"8907":["join","leftthreetimes"],"8908":["rightthreetimes","join"],"8909":["backsimeq","eq"],"8910":["curlyvee","union"],"8911":["curlywedge","intersection"],"8912":["Subset","leq"],"8913":["Supset","geq"],"8914":["Cap","intersection"],"8915":["Cup","union"],"8916":["pitchfork"],"8917":["eq"],"8918":["lessdot","leq"],"8919":["gtrdot","geq"],"8920":["Ll","leq"],"8921":["ggg","geq"],"8922":["lesseqqgtr","lesseqgtr","leq"],"8923":["gtreqqless","gtreqless","geq"],"8924":["leq","eqslantless"],"8925":["geq","eqslantgtr"],"8926":["curlyeqprec","leq"],"8927":["curlyeqsucc","geq"],"8928":["npreceq","leqn"],"8929":["nsucceq","geqn"],"8930":["squb=n","leqn"],"8931":["squp=n","geqn"],"8932":["leqn"],"8933":["geqn"],"8934":["<~n","lnsim","lnapprox","leqn"],"8935":[">~n","gnsim","gnapprox","geqn"],"8936":["precnsim","precnapprox","leqn"],"8937":["succnsim","succnapprox","geqn"],"8938":["ntriangleleft","leqn"],"8939":["ntriangleright","geqn"],"894":[";"],"8940":["ntrianglelefteq","leqn"],"8941":["ntrianglerighteq","geqn"],"8942":["vdots","..."],"8943":["cdots","..."],"8944":["..."],"8945":["ddots","..."],"8946":["member"],"8947":["member"],"8948":["member"],"8949":["member"],"895":["Yot"],"8950":["member"],"8951":["member"],"8952":["member"],"8953":["member"],"8954":["member"],"8955":["member"],"8956":["member"],"8957":["member"],"8958":["member"],"8959":["member"],"8960":["diameter"],"8968":["c","cu","cuL","lceil"],"8969":["rceil","c","cu","cuR"],"8970":["c","cl","clL","lfloor"],"8971":["rfloor","c","cl","clR"],"8988":["c","cu","cul","ulcorner"],"8989":["c","cu","cur","urcorner"],"8990":["c","cl","cll","llcorner"],"8991":["c","cl","clr","lrcorner"],"8994":["frown"],"8995":["smile","smallsmile"],"9001":["("],"9002":[")"],"9014":["apl"],"9015":["apl"],"9016":["apl"],"9017":["apl"],"9018":["apl"],"9019":["apl"],"9020":["apl"],"9021":["apl"],"9022":["apl"],"9023":["apl"],"9024":["apl"],"9025":["apl"],"9026":["apl"],"9027":["apl"],"9028":["apl"],"9029":["apl"],"9030":["apl"],"9031":["apl"],"9032":["apl"],"9033":["apl"],"9034":["apl"],"9035":["apl"],"9036":["apl"],"9037":["apl"],"9038":["apl"],"9039":["apl"],"9040":["apl"],"9041":["apl"],"9042":["apl"],"9043":["apl"],"9044":["apl"],"9045":["apl"],"9046":["apl"],"9047":["apl"],"9048":["apl"],"9049":["apl"],"9050":["apl"],"9051":["apl"],"9052":["apl"],"9053":["apl"],"9054":["apl"],"9055":["O*","apl"],"9056":["apl"],"9057":["apl"],"9058":["apl"],"9059":["apl"],"9060":["apl"],"9061":["apl"],"9062":["apl"],"9063":["apl"],"9064":["apl"],"9065":["apl"],"9066":["apl"],"9067":["apl"],"9068":["apl"],"9069":["apl"],"9070":[";","apl"],"9071":["apl"],"9072":["apl"],"9073":["apl"],"9074":["apl"],"9075":["apl"],"9076":["apl"],"9077":["apl"],"9078":["apl"],"9079":["apl"],"9080":["apl"],"9081":["apl"],"9082":["apl"],"91":["("],"9109":["apl"],"913":["GA","Alpha"],"914":["Beta","GB"],"9140":["("],"9141":[")"],"915":["GG","Gamma"],"916":["Delta","GD"],"917":["Epsilon","GE"],"918":["Zeta","GZ"],"919":["Eta","GH"],"920":["Theta","GTH"],"921":["GI","Iota"],"922":["Kappa","GK"],"923":["Lambda","Lamda","GL"],"924":["Mu","GM"],"925":["Nu","GN"],"926":["Xi","GX"],"927":["Omicron"],"928":["Pi"],"929":["Rho","GR"],"93":[")"],"931":["Sigma","GS"],"9312":["(1)"],"9313":["(2)"],"9314":["(3)"],"9315":["(4)"],"9316":["(5)"],"9317":["(6)"],"9318":["(7)"],"9319":["(8)"],"932":["Tau","GT"],"9320":["(9)"],"9321":["(10)"],"9322":["(11)"],"9323":["(12)"],"9324":["(13)"],"9325":["(14)"],"9326":["(15)"],"9327":["(16)"],"9328":["(17)"],"9329":["(18)"],"933":["GU","Upsilon"],"9330":["(19)"],"9331":["(20)"],"9332":["(1)"],"9333":["(2)"],"9334":["(3)"],"9335":["(4)"],"9336":["(5)"],"9337":["(6)"],"9338":["(7)"],"9339":["(8)"],"934":["GF"],"9340":["(9)"],"9341":["(10)"],"9342":["(11)"],"9343":["(12)"],"9344":["(13)"],"9345":["(14)"],"9346":["(15)"],"9347":["(16)"],"9348":["(17)"],"9349":["(18)"],"935":["Chi","GC"],"9350":["(19)"],"9351":["(20)"],"9352":["(1)"],"9353":["(2)"],"9354":["(3)"],"9355":["(4)"],"9356":["(5)"],"9357":["(6)"],"9358":["(7)"],"9359":["(8)"],"936":["Psi","GP"],"9360":["(9)"],"9361":["(10)"],"9362":["(11)"],"9363":["(12)"],"9364":["(13)"],"9365":["(14)"],"9366":["(15)"],"9367":["(16)"],"9368":["(17)"],"9369":["(18)"],"937":["GO","Omega"],"9370":["(19)"],"9371":["(20)"],"9372":["(a)"],"9373":["(b)"],"9374":["(c)"],"9375":["(d)"],"9376":["(e)"],"9377":["(f)"],"9378":["(g)"],"9379":["(h)"],"9380":["(i)"],"9381":["(j)"],"9382":["(k)"],"9383":["(l)"],"9384":["(m)"],"9385":["(n)"],"9386":["(o)"],"9387":["(p)"],"9388":["(q)"],"9389":["(r)"],"9390":["(s)"],"9391":["(t)"],"9392":["(u)"],"9393":["(v)"],"9394":["(w)"],"9395":["(x)"],"9396":["(y)"],"9397":["(z)"],"9398":["(a)"],"9399":["(b)"],"9400":["(c)"],"9401":["(d)"],"9402":["(e)"],"9403":["(f)"],"9404":["(g)"],"9405":["(h)"],"9406":["(i)"],"9407":["(j)"],"9408":["(k)"],"9409":["(l)"],"9410":["(m)"],"9411":["(n)"],"9412":["(o)"],"9413":["(p)"],"9414":["(q)"],"9415":["(r)"],"9416":["circledS","(s)"],"9417":["(t)"],"9418":["(u)"],"9419":["(v)"],"9420":["(w)"],"9421":["(x)"],"9422":["(y)"],"9423":["(z)"],"9424":["(a)"],"9425":["(b)"],"9426":["(c)"],"9427":["(d)"],"9428":["(e)"],"9429":["(f)"],"9430":["(g)"],"9431":["(h)"],"9432":["(i)"],"9433":["(j)"],"9434":["(k)"],"9435":["(l)"],"9436":["(m)"],"9437":["(n)"],"9438":["(o)"],"9439":["(p)"],"9440":["(q)"],"9441":["(r)"],"9442":["(s)"],"9443":["(t)"],"9444":["(u)"],"9445":["(v)"],"9446":["(w)"],"9447":["(x)"],"9448":["(y)"],"9449":["(z)"],"945":["Ga","alpha"],"9450":["(0)"],"946":["beta","Gb"],"947":["Gg","gamma"],"9472":["---"],"9473":["--_"],"9474":["---"],"9475":["--_"],"9476":["--."],"9477":["--."],"9478":["--."],"9479":["--."],"948":["Gd","delta"],"9480":["--."],"9481":["--."],"9482":["--."],"9483":["--."],"9484":["---"],"9485":["--_"],"9486":["--_"],"9487":["--_"],"9488":["---"],"9489":["--_"],"949":["Ge","epsilon"],"9490":["--_"],"9491":["--_"],"9492":["---"],"9493":["--_"],"9494":["--_"],"9495":["--_"],"9496":["---"],"9497":["--_"],"9498":["--_"],"9499":["--_"],"950":["zeta","Gz"],"9500":["---"],"9501":["--_"],"9502":["--_"],"9503":["--_"],"9504":["--_"],"9505":["--_"],"9506":["--_"],"9507":["--_"],"9508":["---"],"9509":["--_"],"951":["Gh","eta"],"9510":["--_"],"9511":["--_"],"9512":["--_"],"9513":["--_"],"9514":["--_"],"9515":["--_"],"9516":["---"],"9517":["--_"],"9518":["--_"],"9519":["--_"],"952":["Gth","theta"],"9520":["--_"],"9521":["--_"],"9522":["--_"],"9523":["--_"],"9524":["---"],"9525":["--_"],"9526":["--_"],"9527":["--_"],"9528":["--_"],"9529":["--_"],"953":["Gi","iota"],"9530":["--_"],"9531":["--_"],"9532":["---"],"9533":["--_"],"9534":["--_"],"9535":["--_"],"9536":["--_"],"9537":["--_"],"9538":["--_"],"9539":["--_"],"954":["kappa","Gk"],"9540":["--_"],"9541":["--_"],"9542":["--_"],"9543":["--_"],"9544":["--_"],"9545":["--_"],"9546":["--_"],"9547":["--_"],"9548":["--."],"9549":["--."],"955":["Gl","lambda","lamda"],"9550":["--."],"9551":["--."],"9552":["--="],"9553":["--="],"9554":["--="],"9555":["--="],"9556":["--="],"9557":["--="],"9558":["--="],"9559":["--="],"956":["Gm","mu"],"9560":["--="],"9561":["--="],"9562":["--="],"9563":["--="],"9564":["--="],"9565":["--="],"9566":["--="],"9567":["--="],"9568":["--="],"9569":["--="],"957":["Gn","nu"],"9570":["--="],"9571":["--="],"9572":["--="],"9573":["--="],"9574":["--="],"9575":["--="],"9576":["--="],"9577":["--="],"9578":["--="],"9579":["--="],"958":["xi","Gx"],"9580":["--="],"9581":["---"],"9582":["---"],"9583":["---"],"9584":["---"],"9585":["---"],"9586":["---"],"9587":["---"],"9588":["---"],"9589":["---"],"959":["omicron"],"9590":["---"],"9591":["---"],"9592":["--_"],"9593":["--_"],"9594":["--_"],"9595":["--_"],"9596":["--_"],"9597":["--_"],"9598":["--_"],"9599":["--_"],"960":["pi"],"961":["rho","Gr"],"962":["varsigma"],"963":["Gs","sigma"],"9632":["sq","sqb"],"9633":["Box","sq","sqw","square"],"9634":["sq","sqo"],"9635":["sq","sq."],"9636":["sq"],"9637":["sq"],"9638":["sq"],"9639":["sq"],"964":["Gt","tau"],"9640":["sq"],"9641":["sq"],"9642":["blacksquare"],"9644":["re","reb"],"9645":["re","rew"],"9646":["re","reb"],"9647":["re","rew"],"9648":["pa","pab"],"9649":["pa","paw"],"965":["Gu","upsilon"],"9650":["T","Tb"],"9651":["T","Tw","bigtriangleup"],"9652":["blacktriangle","t","tb"],"9653":["t","triangle","tw"],"9654":["T","Tb"],"9655":["T","Tw","rhd"],"9656":["blacktriangleright","t","tb"],"9657":["t","triangleright","tw"],"9658":["t","tb"],"9659":["t","tw"],"966":["varphi","Gf","straightphi"],"9660":["T","Tb"],"9661":["T","Tw","bigtriangledown"],"9662":["blacktriangledown","t","tb"],"9663":["t","triangledown","tw"],"9664":["T","Tb"],"9665":["T","Tw","lhd"],"9666":["blacktriangleleft","t","tb"],"9667":["t","triangleleft","tw"],"9668":["t","tb"],"9669":["t","tw"],"967":["chi","Gc"],"9670":["di","dib"],"9671":["Diamond","di","diw"],"9672":["di","di."],"9675":["ci","ciw"],"9676":["ci","ci.."],"9677":["ci"],"9678":["ci","ci."],"9679":["ci","cib"],"968":["psi","Gp"],"9680":["ci"],"9681":["ci"],"9682":["ci"],"9683":["ci"],"9684":["ci"],"9685":["ci"],"9686":["ci"],"9687":["ci"],"969":["Go","omega"],"9696":["ci"],"9697":["ci"],"9698":["t","tb"],"9699":["t","tb"],"9700":["t","tb"],"9701":["t","tb"],"9702":["bu","buw","textopenbullet"],"9703":["sq"],"9704":["sq"],"9705":["sq"],"9706":["sq"],"9707":["sq"],"9708":["T"],"9709":["T"],"9710":["T"],"9711":["bigcirc","ci","ciO"],"9712":["sq"],"9713":["sq"],"9714":["sq"],"9715":["sq"],"9716":["ci"],"9717":["ci"],"9718":["ci"],"9719":["ci"],"9720":["t","tw"],"9721":["t","tw"],"9722":["t","tw"],"9723":["sq","sqw"],"9724":["sq","sqb"],"9725":["sq","sqw"],"9726":["sq","sqb"],"9727":["t","tw"],"9733":["bigstar","st"],"9734":["st"],"976":["varbeta"],"9761":["caution"],"9762":["radioactive"],"9763":["biohazard"],"977":["vartheta"],"9785":["Frowny"],"9786":["Smiley"],"9787":["blacksmiley"],"9792":["female"],"9794":["male"],"981":["phi"],"982":["varpi"],"9824":["spadesuit"],"9826":["diamondsuit"],"9827":["clubsuit"],"9829":["heartsuit"],"983":["varkai"],"9833":["note"],"9834":["note","textmusicalnote"],"9835":["note"],"9836":["note"],"9837":["flat","b"],"9838":["natural"],"9839":["#","sharp"],"9856":["die"],"9857":["die"],"9858":["die"],"9859":["die"],"986":["Stigma"],"9860":["die"],"9861":["die"],"9862":["ci"],"9863":["ci"],"9864":["ci"],"9865":["ci"],"987":["stigma"],"988":["Digamma"],"9888":["warning"],"989":["digamma"],"990":["Koppa"],"991":["koppa"],"992":["Sampi"],"993":["sampi"],"994":["Shei"],"995":["shei"],"996":["Fei"],"997":["fei"],"998":["Khei"],"9986":["8<"],"9988":["8<"],"999":["khei"],"9993":["Letter"]}; +module.exports.default = {"10":["newline","par"],"10003":["checkmark"],"10013":["textdied"],"10016":["maltese"],"10018":["asterisk"],"10019":["asterisk"],"10020":["asterisk"],"10021":["asterisk"],"10022":["st","st4","blacklozenge"],"10023":["st","st4","lozenge"],"10026":["st"],"10027":["st"],"10031":["st"],"10032":["st"],"10033":["asterisk"],"10034":["asterisk"],"10035":["asterisk"],"10036":["st","st8"],"10037":["st"],"10038":["st","st6"],"10039":["st"],"10040":["st"],"10041":["st","st12"],"10042":["asterisk"],"10043":["asterisk"],"10044":["asterisk"],"10045":["asterisk"],"10051":["asterisk"],"10057":["asterisk"],"10058":["asterisk"],"10059":["asterisk"],"1008":["varkappa"],"1009":["varrho"],"10090":["("],"10091":[")"],"10092":["("],"10093":[")"],"10094":["("],"10095":[")"],"10096":["("],"10097":[")"],"10098":["("],"10099":[")"],"10100":["("],"10101":[")"],"10132":["r"],"10136":["dr"],"10137":["r"],"10138":["ur"],"10139":["r"],"10140":["r"],"10141":["r"],"10142":["r"],"10143":["r"],"10144":["r"],"10145":["r"],"10146":["r"],"10147":["r"],"10148":["r"],"10149":["d"],"10150":["u"],"10151":["r"],"10152":["r"],"10153":["r"],"10154":["r"],"10155":["r"],"10156":["r"],"10157":["r"],"10158":["r"],"10159":["r"],"10161":["r"],"10162":["r"],"10163":["r"],"10164":["dr"],"10165":["r"],"10166":["ur"],"10167":["dr"],"10168":["r"],"10169":["ur"],"10170":["r"],"10171":["r"],"10172":["r"],"10173":["r"],"10174":["r"],"10181":["(","(b","lbag"],"10182":[")",")b","rbag"],"10197":["join"],"10198":["join"],"10199":["join"],"10214":["(","[["],"10215":[")","]]"],"10216":["(","<"],"10217":[")",">"],"10218":["(","<<"],"10219":[")",">>"],"10222":["("],"10223":[")"],"10224":["u","u=="],"10225":["d","d=="],"10226":["l"],"10227":["r"],"10228":["r"],"10229":["l","l--","<--"],"10230":["r","r--","-->"],"10231":["lr","lr--","<-->"],"10232":["l"],"10233":["r"],"10234":["lr"],"10235":["l"],"10236":["r"],"10237":["l"],"10238":["r"],"10239":["r","r~"],"10502":["l"],"10503":["r"],"10506":["u"],"10507":["d"],"10626":[":","z:"],"10627":["(","{{"],"10628":[")","}}"],"10629":["(","(("],"10630":[")","))"],"10631":["(","(|"],"10632":[")","|)"],"10633":["(","<|"],"10634":[")","|>"],"10647":["("],"10648":[")"],"10748":["("],"10749":[")"],"10752":["O."],"10753":["O+"],"10754":["Ox"],"10755":["union","U."],"10756":["union","U+"],"10757":["intersection","Glb"],"10758":["union","Lub"],"10759":["intersection"],"10760":["union"],"10761":["intersection"],"10781":["join"],"10783":[";","z;"],"10814":[";","z;"],"10815":["union"],"11077":["l"],"11078":["r"],"11816":["("],"11817":[")"],"11826":[","],"11828":[","],"11829":[";"],"11841":[","],"11849":[","],"119808":["BA"],"119809":["BB"],"119810":["BC"],"119811":["BD"],"119812":["BE"],"119813":["BF"],"119814":["BG"],"119815":["BH"],"119816":["BI"],"119817":["BJ"],"119818":["BK"],"119819":["BL"],"119820":["BM"],"119821":["BN"],"119822":["BO"],"119823":["BP"],"119824":["BQ"],"119825":["BR"],"119826":["BS"],"119827":["BT"],"119828":["BU"],"119829":["BV"],"119830":["BW"],"119831":["BX"],"119832":["BY"],"119833":["BZ"],"119834":["Ba"],"119835":["Bb"],"119836":["Bc"],"119837":["Bd"],"119838":["Be"],"119839":["Bf"],"119840":["Bg"],"119841":["Bh"],"119842":["Bi"],"119843":["Bj"],"119844":["Bk"],"119845":["Bl"],"119846":["Bm"],"119847":["Bn"],"119848":["Bo"],"119849":["Bp"],"119850":["Bq"],"119851":["Br"],"119852":["Bs"],"119853":["Bt"],"119854":["Bu"],"119855":["Bv"],"119856":["Bw"],"119857":["Bx"],"119858":["By"],"119859":["Bz"],"120120":["bA"],"120121":["bB"],"120123":["bD"],"120124":["bE"],"120125":["bF"],"120126":["bG"],"120128":["bI"],"120129":["bJ"],"120130":["bK"],"120131":["bL"],"120132":["bM"],"120134":["bO"],"120138":["bS"],"120139":["bT"],"120140":["bU"],"120141":["bV"],"120142":["bW"],"120143":["bX"],"120144":["bY"],"120146":["ba"],"120147":["bb"],"120148":["bc"],"120149":["bd"],"120150":["be"],"120151":["bf"],"120152":["bg"],"120153":["bh"],"120154":["bi"],"120155":["bj"],"120156":["bk"],"120157":["bl"],"120158":["bm"],"120159":["bn"],"120160":["bo"],"120161":["bp"],"120162":["bq"],"120163":["br"],"120164":["bs"],"120165":["bt"],"120166":["bu"],"120167":["bv"],"120168":["bw"],"120169":["bx"],"120170":["by"],"120171":["bz"],"120488":["BGA"],"120489":["BGB"],"120490":["BGG"],"120491":["BGD"],"120492":["BGE"],"120493":["BGZ"],"120494":["BGH"],"120495":["BGTH"],"120496":["BGI"],"120497":["BGK"],"120498":["BGL"],"120499":["BGM"],"120500":["BGN"],"120501":["BGX"],"120502":["BOmicron"],"120503":["BPi"],"120504":["BGR"],"120506":["BGS"],"120507":["BGT"],"120508":["BGU"],"120509":["BGF"],"120510":["BGC"],"120511":["BGP"],"120512":["BGO"],"120514":["BGa"],"120515":["BGb"],"120516":["BGg"],"120517":["BGd"],"120518":["BGe"],"120519":["BGz"],"120520":["BGh"],"120521":["BGth"],"120522":["BGi"],"120523":["BGk"],"120524":["BGl"],"120525":["BGm"],"120526":["BGn"],"120527":["BGx"],"120528":["Bomicron"],"120529":["Bpi"],"120530":["BGr"],"120532":["BGs"],"120533":["BGt"],"120534":["BGu"],"120535":["BGf"],"120536":["BGc"],"120537":["BGp"],"120538":["BGo"],"120782":["B0"],"120783":["B1"],"120784":["B2"],"120785":["B3"],"120786":["B4"],"120787":["B5"],"120788":["B6"],"120789":["B7"],"120790":["B8"],"120791":["B9"],"120792":["b0"],"120793":["b1"],"120794":["b2"],"120795":["b3"],"120796":["b4"],"120797":["b5"],"120798":["b6"],"120799":["b7"],"120800":["b8"],"120801":["b9"],"12289":[","],"12296":["("],"12297":[")"],"12298":["(","ldata"],"12299":[")","rdata"],"123":["(","lbrace"],"12300":["("],"12301":[")"],"12302":["("],"12303":[")"],"12304":["("],"12305":[")"],"12308":["("],"12309":[")"],"12310":["("],"12311":[")"],"12314":["(","llbracket"],"12315":[")","rrbracket"],"124":["vert"],"125":[")","rbrace"],"1488":["aleph"],"1489":["beth"],"1490":["gimel"],"1491":["daleth"],"1548":[","],"161":["!`"],"163":["pounds"],"164":["currency"],"165":["yen"],"167":["S"],"168":["\"{}"],"169":["copyright"],"170":["^a","ordfeminine"],"171":["flqq","\"<"],"172":["neg","lnot"],"173":["-"],"174":["circledR","registered"],"175":["={}"],"177":["pm","pm"],"178":["^2","^2"],"179":["^3","^3"],"180":["'{}"],"181":["micro","textmu"],"182":["P"],"183":["cdot","cdot","centerdot"],"184":["c{}"],"185":["^1","^1"],"186":["^o","^o","ordmasculine"],"187":["frqq","\">"],"188":["frac","frac14"],"189":["frac","frac12"],"190":["frac","frac34"],"191":["?`"],"192":["`{A}","`A"],"193":["'{A}","'A"],"194":["^{A}","^A"],"195":["~{A}","~A"],"196":["\"{A}","\"A"],"197":["AA"],"198":["AE"],"199":["c{C}","cC"],"200":["`{E}","`E"],"201":["'{E}","'E"],"202":["^{E}","^E"],"203":["\"{E}","\"E"],"204":["`{I}","`I"],"205":["'{I}","'I"],"206":["^{I}","^I"],"207":["\"{I}","\"I"],"208":["DH"],"209":["~{N}","~N"],"210":["`{O}","`O"],"211":["'{O}","'O"],"212":["^{O}","^O"],"213":["~{O}","~O"],"214":["\"{O}","\"O"],"215":["x","times","times"],"216":["O"],"217":["`{U}","`U"],"218":["'{U}","'U"],"219":["^{U}","^U"],"220":["\"{U}","\"U"],"221":["'{Y}","'Y"],"222":["TH"],"223":["ss"],"224":["`{a}","`a"],"225":["'{a}","'a"],"226":["^{a}","^a"],"227":["~{a}","~a"],"228":["\"{a}","\"a"],"229":["aa"],"230":["ae"],"231":["c{c}","cc"],"232":["`{e}","`e"],"233":["'{e}","'e"],"234":["^{e}","^e"],"235":["\"{e}","\"e"],"236":["`{\\i}","`i"],"237":["'{\\i}","'i"],"238":["^{\\i}","^i"],"239":["\"{\\i}","\"i"],"240":["dh"],"241":["~{n}","~n"],"242":["`{o}","`o"],"243":["'{o}","'o"],"244":["^{o}","^o"],"245":["~{o}","~o"],"246":["\"{o}","\"o"],"247":["div","div"],"248":["o"],"249":["`{u}","`u"],"250":["'{u}","'u"],"251":["^{u}","^u"],"252":["\"{u}","\"u"],"253":["'{y}","'y"],"254":["th"],"255":["\"{y}","\"y"],"256":["={A}","=A"],"257":["={a}","=a"],"258":["u{A}","uA"],"259":["u{a}","ua"],"260":["k{A}"],"261":["k{a}"],"262":["'{C}","'C"],"263":["'{c}","'c"],"264":["^{C}","^C"],"265":["^{c}","^c"],"266":[".{C}",".C"],"267":[".{c}",".c"],"268":["v{C}","vC"],"269":["v{c}","vc"],"270":["v{D}","vD"],"271":["v{d}","vd"],"274":["={E}","=E"],"275":["={e}","=e"],"276":["u{E}","uE"],"277":["u{e}","ue"],"278":[".{E}",".E"],"279":["e{e}","ee",".e"],"280":["k{E}"],"281":["k{e}"],"282":["v{E}","vE"],"283":["v{e}","ve"],"284":["^{G}","^G"],"285":["^{g}","^g"],"286":["u{G}","uG"],"287":["u{g}","ug"],"288":[".{G}",".G"],"289":[".{g}",".g"],"290":["c{G}","cG"],"291":["c{g}","cg"],"292":["^{H}","^H"],"293":["^{h}","^h"],"296":["~{I}","~I"],"297":["~{\\i}","~i"],"298":["={I}","=I"],"299":["={\\i}","=i"],"300":["u{I}","uI"],"301":["u{\\i}","ui","u{i}"],"302":["k{I}"],"303":["k{i}"],"304":[".{I}",".I"],"305":["i","imath"],"308":["^{J}","^J"],"309":["^{\\j}","^j"],"310":["c{K}","cK"],"311":["c{k}","ck"],"313":["'{L}","'L"],"314":["'{l}","'l"],"315":["c{L}","cL"],"316":["c{l}","cl"],"317":["v{L}"],"318":["v{l}"],"32":[" "],"321":["L"],"322":["l"],"323":["'{N}","'N"],"324":["'{n}","'n"],"325":["c{N}","cN"],"326":["c{n}","cn"],"327":["v{N}","vN"],"328":["v{n}","vn"],"332":["={O}","=O"],"333":["={o}","=o"],"334":["u{O}","uO"],"335":["u{o}","uo"],"336":["H{O}","HO"],"337":["U{o}","Uo","H{o}"],"338":["OE"],"339":["oe"],"340":["'{R}","'R"],"341":["'{r}","'r"],"342":["c{R}","cR"],"343":["c{r}","cr"],"344":["v{R}","vR"],"345":["v{r}","vr"],"346":["'{S}","'S"],"347":["'{s}","'s"],"348":["^{S}","^S"],"349":["^{s}","^s"],"350":["c{S}","cS"],"351":["c{s}","cs"],"352":["v{S}","vS"],"353":["v{s}","vs"],"354":["c{T}","cT"],"355":["c{t}","ct"],"356":["v{T}","vT"],"357":["v{t}","vt"],"360":["~{U}","~U"],"361":["~{u}","~u"],"362":["={U}","=U"],"363":["={u}","=u"],"364":["u{U}","uU"],"3647":["textbaht"],"365":["u{u}","uu"],"368":["H{U}","HU"],"369":["H{u}","Hu"],"370":["k{U}"],"371":["k{u}"],"372":["^{W}","^W"],"373":["^{w}","^w"],"374":["^{Y}","^Y"],"375":["^{y}","^y"],"376":["\"{Y}","\"Y"],"377":["'{Z}","'Z"],"378":["'{z}","'z"],"379":[".{Z}",".Z"],"380":[".{z}",".z"],"381":["v{Z}","vZ"],"382":["v{z}","vz"],"40":["("],"41":[")"],"411":["lambdabar"],"42742":[";"],"42889":[":"],"461":["v{A}","vA"],"462":["v{a}","va"],"463":["v{I}","vI"],"464":["v{\\i}","vi","v{i}"],"465":["v{O}","vO"],"466":["v{o}","vo"],"467":["v{U}","vU"],"468":["v{u}","vu"],"482":["={\\AE}","=\\AE"],"483":["={\\ae}","=\\ae"],"486":["v{G}","vG"],"487":["v{g}","vg"],"488":["v{K}","vK"],"489":["v{k}","vk"],"490":["k{O}"],"491":["k{o}"],"496":["v{\\j}","vj","v{j}"],"4964":[";"],"4965":[":"],"4966":[":"],"500":["'{G}","'G"],"501":["'{g}","'g"],"504":["`{N}","`N"],"505":["`{n}","`n"],"508":["'{\\AE}","'\\AE"],"509":["'{\\ae}","'\\ae"],"510":["'{\\O}","'\\O"],"511":["'{\\o}","'\\o"],"542":["v{H}","vH"],"543":["v{h}","vh"],"550":[".{A}",".A"],"551":[".{a}",".a"],"552":["c{E}","cE"],"553":["c{e}","ce"],"558":[".{O}",".O"],"559":[".{o}",".o"],"562":["={Y}","=Y"],"563":["={y}","=y"],"58":["colon"],"60":["leq","<"],"61":["eq"],"62":["geq",">"],"65040":[","],"65041":[","],"65043":[":"],"65044":[";"],"65077":["("],"65078":[")"],"65079":["("],"65080":[")"],"65081":["("],"65082":[")"],"65083":["("],"65084":[")"],"65085":["("],"65086":[")"],"65087":["("],"65088":[")"],"65089":["("],"65090":[")"],"65091":["("],"65092":[")"],"65104":[","],"65105":[","],"65108":[";"],"65109":[":"],"65113":["("],"65114":[")"],"65115":["("],"65116":[")"],"65117":["("],"65118":[")"],"65128":["sbs"],"65281":["!"],"65283":["#"],"65285":["%"],"65286":["&"],"65287":["'"],"65288":["("],"65289":[")"],"65290":["asterisk","*"],"65291":["+"],"65292":[","],"65294":["."],"65295":["/"],"65296":["F0"],"65297":["F1"],"65298":["F2"],"65299":["F3"],"65300":["F4"],"65301":["F5"],"65302":["F6"],"65303":["F7"],"65304":["F8"],"65305":["F9"],"65306":[":"],"65307":[";"],"65308":["leq","<"],"65309":["eq","="],"65310":["geq",">"],"65311":["?"],"65312":["@"],"65313":["FA"],"65314":["FB"],"65315":["FC"],"65316":["FD"],"65317":["FE"],"65318":["FF"],"65319":["FG"],"65320":["FH"],"65321":["FI"],"65322":["FJ"],"65323":["FK"],"65324":["FL"],"65325":["FM"],"65326":["FN"],"65327":["FO"],"65328":["FP"],"65329":["FQ"],"65330":["FR"],"65331":["FS"],"65332":["FT"],"65333":["FU"],"65334":["FV"],"65335":["FW"],"65336":["FX"],"65337":["FY"],"65338":["FZ"],"65339":["("],"65340":["/"],"65341":[")"],"65343":["__"],"65344":["`"],"65345":["Fa"],"65346":["Fb"],"65347":["Fc"],"65348":["Fd"],"65349":["Fe"],"65350":["Ff"],"65351":["Fg"],"65352":["Fh"],"65353":["Fi"],"65354":["Fj"],"65355":["Fk"],"65356":["Fl"],"65357":["Fm"],"65358":["Fn"],"65359":["Fo"],"65360":["Fp"],"65361":["Fq"],"65362":["Fr"],"65363":["Fs"],"65364":["Ft"],"65365":["Fu"],"65366":["Fv"],"65367":["Fw"],"65368":["Fx"],"65369":["Fy"],"65370":["Fz"],"65371":["("],"65373":[")"],"65374":["~"],"65375":["(("],"65376":["))"],"65378":["("],"65379":[")"],"65380":[","],"688":["^h"],"690":["^j"],"691":["^r"],"695":["^w"],"696":["^y"],"699":[","],"711":["v{}"],"720":[":"],"728":["u{}"],"729":[".{}"],"732":["~{}"],"733":["H{}"],"736":["^\\gamma"],"737":["^l"],"738":["^s"],"739":["^x"],"760":[":"],"768":["`"],"7682":[".B"],"7683":[".b"],"7684":["d{B}"],"7685":["d{b}"],"769":["'"],"7690":[".D"],"7691":[".d"],"7692":["d{D}"],"7693":["d{d}"],"7696":["c{D}"],"7697":["c{d}"],"770":["^"],"771":["~"],"7710":[".F"],"7711":[".f"],"7712":["=G"],"7713":["=g"],"7714":[".H"],"7715":[".h"],"7716":["d{H}"],"7717":["d{h}"],"7718":["\"H"],"7719":["\"h"],"772":["="],"7720":["c{H}"],"7721":["c{h}"],"7728":["'K"],"7729":["'k"],"7730":["d{K}"],"7731":["d{k}"],"7734":["d{L}"],"7735":["d{l}"],"774":["u"],"7742":["'M"],"7743":["'m"],"7744":[".M"],"7745":[".m"],"7746":["d{M}"],"7747":["d{m}"],"7748":[".N"],"7749":[".n"],"775":["."],"7750":["d{N}"],"7751":["d{n}"],"776":["\""],"7764":["'P"],"7765":["'p"],"7766":[".P"],"7767":[".p"],"7768":[".R"],"7769":[".r"],"7770":["d{R}"],"7771":["d{r}"],"7776":[".S"],"7777":[".s"],"7778":["d{S}"],"7779":["d{s}"],"7786":[".T"],"7787":[".t"],"7788":["d{T}"],"7789":["d{t}"],"779":["H"],"780":["v"],"7804":["~V"],"7805":["~v"],"7806":["d{V}"],"7807":["d{v}"],"7808":["`W"],"7809":["`w"],"7810":["'W"],"7811":["'w"],"7812":["\"W"],"7813":["\"w"],"7814":[".W"],"7815":[".w"],"7816":["d{W}"],"7817":["d{w}"],"7818":[".X"],"7819":[".x"],"7820":["\"X"],"7821":["\"x"],"7822":[".Y"],"7823":[".y"],"7824":["^Z"],"7825":["^z"],"7826":["d{Z}"],"7827":["d{z}"],"7831":["\"t"],"7840":["d{A}"],"7841":["d{a}"],"7864":["d{E}"],"7865":["d{e}"],"7868":["~E"],"7869":["~e"],"7882":["d{I}"],"7883":["d{i}"],"7884":["d{O}"],"7885":["d{o}"],"7908":["d{U}"],"7909":["d{u}"],"7922":["`Y"],"7923":["`y"],"7924":["d{Y}"],"7925":["d{y}"],"7928":["~Y"],"7929":["~y"],"803":["d"],"807":["c"],"817":["b"],"8193":["quad"],"8196":[";"],"8197":[":"],"8204":["/"],"8211":["en","--"],"8212":["em","---"],"8214":["Vert"],"8216":["lq","grq"],"8217":["rq"],"8218":["glq"],"8220":["ldq","grqq","\"'"],"8221":["rdq"],"8222":["glqq","\"`"],"8224":["dag","dagger"],"8225":["ddag","ddagger"],"8226":["bu","bub","bullet"],"8227":["bu","but"],"8230":["ldots"],"8239":[","],"824":["not"],"8240":["permil"],"8241":["textpertenthousand"],"8242":["'","prime","varprime"],"8243":["'"],"8244":["'"],"8245":["`","backprime"],"8246":["`"],"8247":["`"],"8249":["flq"],"8250":["frq"],"8251":["textreferencemark"],"8252":["!!"],"8253":["?!","textinterrobang"],"8255":["undertie"],"8256":["tie"],"8258":["asterisk"],"8260":["textfractionsolidus"],"8261":["(","textlquill"],"8262":[")","textrquill"],"8263":["??"],"8264":["?!"],"8265":["!?"],"8268":["bu"],"8269":["bu"],"8270":["asterisk"],"8271":[";"],"8273":["asterisk"],"8274":["textdiscount"],"8279":["'"],"8304":["^0"],"8308":["^4"],"8309":["^5"],"8310":["^6"],"8311":["^7"],"8312":["^8"],"8313":["^9"],"8314":["^+"],"8315":["^-"],"8316":["^="],"8317":["(","^("],"8318":[")","^)"],"8319":["^n"],"8320":["_0"],"8321":["_1"],"8322":["_2"],"8323":["_3"],"8324":["_4"],"8325":["_5"],"8326":["_6"],"8327":["_7"],"8328":["_8"],"8329":["_9"],"8330":["_+"],"8331":["_-"],"8332":["_="],"8333":["(","_("],"8334":[")","_)"],"8353":["textcolonmonetary"],"8356":["textlira"],"8358":["textnaira"],"8361":["textwon"],"8364":["euro"],"8369":["textpeso"],"8413":["textbigcircle"],"8450":["bC"],"8451":["celsius"],"8458":["Mcg"],"8459":["McH"],"8460":["MfH"],"8461":["bH"],"8462":["Mii"],"8463":["hbar"],"8464":["mathscr{I}","McI"],"8465":["Im","MfI"],"8466":["McL"],"8467":["ell"],"8469":["bN","Bbb{N}"],"8470":["textnumero"],"8471":["textcircledP"],"8472":["wp"],"8473":["bP","Bbb{P}"],"8474":["bQ"],"8475":["McR"],"8476":["Re","MfR"],"8477":["bR","Bbb{R}"],"8478":["textrecipe"],"8480":["^{SM}"],"8481":["^{TEL}"],"8482":["^{TM}"],"8484":["bZ","Bbb{Z}"],"8487":["mho"],"8488":["MfZ"],"8492":["McB"],"8493":["MfC"],"8494":["textestimated"],"8495":["Mce"],"8496":["McE"],"8497":["McF"],"8499":["McM"],"8500":["Mco"],"8508":["bGp"],"8509":["bGg"],"8510":["bGG"],"8511":["bGP"],"8512":["union","bGS"],"8523":["&"],"8531":["frac","frac13"],"8532":["frac","frac23"],"8533":["frac","frac15"],"8534":["frac","frac25"],"8535":["frac","frac35"],"8536":["frac","frac45"],"8537":["frac","frac16"],"8538":["frac","frac56"],"8539":["frac","frac18"],"8540":["frac","frac38"],"8541":["frac","frac58"],"8542":["frac","frac78"],"8543":["frac","frac1"],"8592":["l","l-","<-","gets","leftarrow","longleftarrow"],"8593":["u","u-","uparrow"],"8594":["r","r-","->","longrightarrow","rightarrow","to"],"8595":["d","d-","downarrow"],"8596":["lr","lr-","<->","leftrightarrow","longleftrightarrow"],"8597":["ud","ud-","updownarrow"],"8598":["ul","ul-","nwarrow"],"8599":["ur","ur-","nearrow"],"8600":["dr","dr-","searrow"],"8601":["dl","dl-","swarrow"],"8602":["l","l-n","<-n","nleftarrow"],"8603":["r","r-n","->n","nrightarrow"],"8604":["l","l~"],"8605":["r","r~","leadsto"],"8606":["l","ll-","twoheadleftarrow"],"8607":["u","uu-"],"8608":["r","rr-","twoheadrightarrow"],"8609":["d","dd-"],"8610":["l","l->","leftarrowtail"],"8611":["r","r->","rightarrowtail"],"8612":["l","l-|"],"8613":["u","u-|"],"8614":["r","r-|","longmapsto","mapsto"],"8615":["d","d-|"],"8616":["ud","ud-|"],"8617":["l","hookleftarrow"],"8618":["r","hookrightarrow"],"8619":["l","looparrowleft"],"8620":["r","looparrowright"],"8621":["lr","lr~","leftrightsquigarrow"],"8622":["lr","lr-n","<->n","nleftrightarrow"],"8623":["d","dz"],"8624":["u","Lsh"],"8625":["u","Rsh"],"8626":["d"],"8627":["d"],"8628":["r"],"8629":["d"],"8630":["l","curvearrowleft"],"8631":["r","curvearrowright"],"8632":["ul"],"8633":["l"],"8634":["l","circlearrowleft"],"8635":["r","circlearrowright"],"8636":["l","leftharpoonup"],"8637":["l","leftharpoondown"],"8638":["u","uprightharpoon"],"8639":["u","upleftharpoon"],"8640":["r","rightharpoonup"],"8641":["r","rightharpoondown"],"8642":["d","downrightharpoon"],"8643":["d","downleftharpoon"],"8644":["r","r-l-","rightleftarrows"],"8645":["u","u-d-"],"8646":["l","l-r-","leftrightarrows"],"8647":["l","l-2","leftleftarrows"],"8648":["u","u-2","upuparrows"],"8649":["r","r-2","rightrightarrows"],"8650":["d","d-2","downdownarrows"],"8651":["l","leftrightharpoons"],"8652":["r","rightleftharpoons"],"8653":["l","l=n","nLeftarrow"],"8654":["lr","lr=n","<=>n","nLeftrightarrow"],"8655":["r","r=n","=>n","nRightarrow"],"8656":["l","l=","<=","Leftarrow","Longleftarrow"],"8657":["u","u=","Uparrow"],"8658":["r","r=","=>","Longrightarrow","Rightarrow"],"8659":["d","d=","Downarrow"],"8660":["lr","lr=","<=>","Leftrightarrow","Longleftrightarrow","iff"],"8661":["ud","ud=","Updownarrow"],"8662":["ul","ul="],"8663":["ur","ur="],"8664":["dr","dr="],"8665":["dl","dl="],"8666":["l","l==","Lleftarrow"],"8667":["r","r==","Rrightarrow"],"8668":["l","l~"],"8669":["r","r~","squigarrowright"],"8670":["u"],"8671":["d"],"8672":["l"],"8673":["u"],"8674":["r"],"8675":["d"],"8676":["l"],"8677":["r"],"8678":["l"],"8679":["u"],"8680":["r"],"8681":["d"],"8682":["u"],"8683":["u"],"8684":["u"],"8685":["u"],"8686":["u"],"8687":["u"],"8688":["r"],"8689":["ul"],"8690":["dr"],"8691":["ud"],"8692":["r"],"8693":["d","d-u-"],"8694":["r","r-3"],"8695":["l"],"8696":["r"],"8697":["lr"],"8698":["l"],"8699":["r"],"8700":["lr"],"8701":["l"],"8702":["r"],"8703":["lr"],"8704":["all","forall"],"8705":["C","complement"],"8706":["partial"],"8707":["ex","exists"],"8708":["exn","nexists"],"8709":["0","emptyset"],"8710":["increment"],"8711":["nabla"],"8712":["member","in"],"8713":["member","inn","notin"],"8714":["member"],"8715":["member","ni"],"8716":["member","nin"],"8717":["member","backepsilon"],"8718":["qed","qed"],"8719":["intersection","prod"],"8720":["union","amalg","coprod","smallamalg"],"8721":["union","sum"],"8722":["minus"],"8723":["mp"],"8724":[".+","dotplus"],"8726":["setminus","smallsetminus"],"8727":["ast"],"8728":["o","comp","circ"],"8729":["."],"8730":["sqrt","surd"],"8731":["surd3"],"8732":["surd4"],"8733":["propto","varpropto"],"8734":["inf","infty"],"8735":["angle"],"8736":["angle"],"8737":["angle","measuredangle"],"8738":["angle","sphericalangle"],"8739":["|","mid","shortmid"],"8740":["|n","nmid","nshortmid"],"8741":["||","parallel","shortparallel"],"8742":["||n","nparallel","nshortparallel"],"8743":["intersection","and","wedge"],"8744":["union","or","vee"],"8745":["intersection","i","cap"],"8746":["union","un","cup"],"8747":["integral","int"],"8748":["integral"],"8749":["integral"],"8750":["integral","oint"],"8751":["integral"],"8752":["integral"],"8753":["integral"],"8754":["integral"],"8755":["integral"],"8756":["therefore"],"8757":["because"],"8758":[":"],"8759":["::"],"8760":[".-"],"8761":["-:"],"8762":["::-"],"8763":["eq",":~"],"8764":["eq","~","sim","thicksim"],"8765":["eq","backsim"],"8766":["eq"],"8767":["eq"],"8768":["eq","wr"],"8769":["eqn","~n","nsim"],"8770":["eq","-~"],"8771":["eq","~-","simeq"],"8772":["eqn","~-n","nsimeq"],"8773":["eq","~=","cong"],"8774":["eqn"],"8775":["eqn","~=n","ncong"],"8776":["eq","~~","approx","thickapprox"],"8777":["eqn","~~n","napprox"],"8778":["eq","~~-","approxeq"],"8779":["eq","~~~"],"8780":["eq","backcong"],"8781":["eq","asymp"],"8782":["eq","Bumpeq"],"8783":["eq","bumpeq"],"8784":["eq",".=","doteq"],"8785":["eq",".=.","doteqdot"],"8786":["eq","fallingdotseq"],"8787":["eq","risingdotseq"],"8788":["eq",":=","coloneq"],"8789":["eq","=:","eqcolon"],"8790":["eq","eqcirc"],"8791":["eq","=o","circeq"],"8792":["eq","(="],"8793":["eq","and=","defs"],"8794":["eq","or="],"8795":["eq","*="],"8796":["eq","t=","triangleq"],"8797":["eq","def="],"8798":["eq","m="],"8799":["eq","?="],"8800":["eqn","=n","ne","neq"],"8801":["eq","==","equiv"],"8802":["eqn","==n","nequiv"],"8803":["eq","==="],"8804":["leq","<=","le","leq","leqslant"],"8805":["geq",">=","ge","geq","geqslant"],"8806":["leq","leqq"],"8807":["geq","geqq"],"8808":["leqn","lneq","lneqq","lvertneqq"],"8809":["geqn","gneq","gneqq","gvertneqq"],"8810":["leq","<","ll"],"8811":["geq",">","gg"],"8812":["eq","between"],"8813":["eqn"],"8814":["leqn","n","ngtr"],"8816":["leqn","<=n","len","nleq","nleqq","nleqslant"],"8817":["geqn",">=n","gen","ngeq","ngeqq","ngeqslant"],"8818":["leq","<~","lessapprox","lesssim"],"8819":["geq",">~","gtrapprox","gtrsim"],"8820":["leqn","<~nn"],"8821":["geqn",">~nn"],"8822":["leq","lessgtr"],"8823":["geq","gtrless"],"8824":["leqn"],"8825":["geqn"],"8826":["leq","<","prec"],"8827":["geq",">","succ"],"8828":["leq","curlypreceq","preceq"],"8829":["geq","succcurlyeq","succeq"],"8830":["leq","precapprox","precsim"],"8831":["geq","succapprox","succsim"],"8832":["leqn","nprec"],"8833":["geqn","nsucc"],"8834":["leq","sub","<","subset"],"8835":["geq","sup",">","supset"],"8836":["leqn","subn","nsubset"],"8837":["geqn","supn","nsupset"],"8838":["leq","sub=","subseteq","subseteqq"],"8839":["geq","sup=","supseteq","supseteqq"],"8840":["leqn","sub=n","nsubseteq","nsubseteqq"],"8841":["geqn","sup=n","nsupseteq","nsupseteqq"],"8842":["leqn","subsetneq","subsetneqq"],"8843":["geqn","supsetneq","supsetneqq"],"8844":["union"],"8845":["union","u."],"8846":["union","u+","uplus"],"8847":["leq","squb","<","sqsubset"],"8848":["geq","squp",">","sqsupset"],"8849":["leq","squb=","sqsubseteq"],"8850":["geq","squp=","sqsupseteq"],"8851":["intersection","glb","sqcap"],"8852":["union","lub","sqcup"],"8853":["o+","oplus"],"8854":["o--","ominus"],"8855":["ox","otimes"],"8856":["o/","oslash"],"8857":["o.","odot"],"8858":["oo","circledcirc"],"8859":["o*","circledast"],"8860":["o="],"8861":["o-","circleddash"],"8862":["b+","boxplus"],"8863":["b-","boxminus"],"8864":["bx","boxtimes"],"8865":["b.","dotsquare"],"8866":["entails","|-","vdash"],"8867":["entails","-|","dashv"],"8868":["entails","top"],"8869":["entails","bot","perp"],"8870":["entails"],"8871":["entails","models"],"8872":["entails","|=","vDash"],"8873":["entails","||-","Vdash"],"8874":["entails","|||-","Vvdash"],"8875":["entails","||="],"8876":["entails","|-n","nvdash"],"8877":["entails","|=n","nvDash"],"8878":["entails","||-n","nVdash"],"8879":["entails","||=n","nVDash"],"8880":["leq","<"],"8881":["geq",">"],"8882":["leq","<","vartriangleleft"],"8883":["geq",">","vartriangleright"],"8884":["leq","trianglelefteq"],"8885":["geq","trianglerighteq"],"8888":["r","r-o","-o","multimap"],"8889":["+ "],"8890":["intercal"],"8891":["union","veebar"],"8892":["intersection","barwedge"],"8893":["union"],"8894":["angle"],"8895":["angle"],"8896":["intersection","And","bigwedge"],"8897":["union","Or","bigvee"],"8898":["intersection","I","bigcap"],"8899":["union","Un","bigcup"],"8900":["diamond"],"8902":["*","st","star"],"8903":["divideontimes"],"8904":["join","Join","bowtie"],"8905":["join","ltimes"],"8906":["join","rtimes"],"8907":["join","leftthreetimes"],"8908":["join","rightthreetimes"],"8909":["eq","backsimeq"],"8910":["union","curlyvee"],"8911":["intersection","curlywedge"],"8912":["leq","<","Subset"],"8913":["geq",">","Supset"],"8914":["intersection","Cap"],"8915":["union","Cup"],"8916":["pitchfork"],"8917":["eq"],"8918":["leq","<","lessdot"],"8919":["geq",">","gtrdot"],"8920":["leq","<","Ll"],"8921":["geq",">","ggg"],"8922":["leq","lesseqgtr","lesseqqgtr"],"8923":["geq","gtreqless","gtreqqless"],"8924":["leq","eqslantless"],"8925":["geq","eqslantgtr"],"8926":["leq","curlyeqprec"],"8927":["geq","curlyeqsucc"],"8928":["leqn","npreceq"],"8929":["geqn","nsucceq"],"8930":["leqn","squb=n"],"8931":["geqn","squp=n"],"8932":["leqn"],"8933":["geqn"],"8934":["leqn","<~n","lnapprox","lnsim"],"8935":["geqn",">~n","gnapprox","gnsim"],"8936":["leqn","precnapprox","precnsim"],"8937":["geqn","succnapprox","succnsim"],"8938":["leqn","ntriangleleft"],"8939":["geqn","ntriangleright"],"894":[";"],"8940":["leqn","ntrianglelefteq"],"8941":["geqn","ntrianglerighteq"],"8942":["...","vdots"],"8943":["...","cdots"],"8944":["..."],"8945":["...","ddots"],"8946":["member"],"8947":["member"],"8948":["member"],"8949":["member"],"8950":["member"],"8951":["member"],"8952":["member"],"8953":["member"],"8954":["member"],"8955":["member"],"8956":["member"],"8957":["member"],"8958":["member"],"8959":["member"],"8968":["c","cu","cuL","lceil"],"8969":["c","cu","cuR","rceil"],"8970":["c","cl","clL","lfloor"],"8971":["c","cl","clR","rfloor"],"8988":["c","cu","cul","ulcorner"],"8989":["c","cu","cur","urcorner"],"8990":["c","cl","cll","llcorner"],"8991":["c","cl","clr","lrcorner"],"8994":["frown"],"8995":["smallsmile","smile"],"9001":["(","langle","leftparengtr"],"9002":[")","rangle","rightparengtr"],"9014":["apl"],"9015":["apl"],"9016":["box=","boxeq","apl"],"9017":["boxdiv","apl"],"9018":["boxdi","apl"],"9019":["boxo","boxcomp","apl"],"9020":["boxO","boxcircle","apl"],"9021":["apl"],"9022":["apl"],"9023":["apl"],"9024":["apl"],"9025":["box/","apl"],"9026":["box\\\\","apl"],"9027":["box<","apl"],"9028":["box>","apl"],"9029":["apl"],"9030":["apl"],"9031":["boxl","apl"],"9032":["boxr","apl"],"9033":["apl"],"9034":["apl"],"9035":["apl"],"9036":["boxvee","apl"],"9037":["boxdelta","apl"],"9038":["apl"],"9039":["apl"],"9040":["boxu","apl"],"9041":["apl"],"9042":["apl"],"9043":["boxwedge","apl"],"9044":["boxnabla","apl"],"9045":["apl"],"9046":["apl"],"9047":["boxd","apl"],"9048":["apl"],"9049":["apl"],"9050":["apl"],"9051":["apl"],"9052":["apl"],"9053":["apl"],"9054":["box'","apl"],"9055":["O*","apl"],"9056":["box:","apl"],"9057":["apl"],"9058":["apl"],"9059":["apl"],"9060":["apl"],"9061":["apl"],"9062":["apl"],"9063":["apl"],"9064":["apl"],"9065":["apl"],"9066":["apl"],"9067":["apl"],"9068":["apl"],"9069":["apl"],"9070":[";","apl"],"9071":["boxneq","boxeqn","apl"],"9072":["box?","apl"],"9073":["apl"],"9074":["apl"],"9075":["apl"],"9076":["apl"],"9077":["apl"],"9078":["apl"],"9079":["apl"],"9080":["apl"],"9081":["apl"],"9082":["apl"],"91":["(","lbrack"],"9109":["apl"],"9140":["("],"9141":[")"],"915":["Gamma"],"916":["Delta"],"92":["\\\\","backslash","\\"],"920":["Theta"],"923":["Lambda"],"926":["Xi"],"928":["Pi"],"93":[")","rbrack"],"931":["Sigma"],"933":["Upsilon"],"934":["Phi"],"936":["Psi"],"937":["Omega"],"9416":["circledS"],"945":["alpha"],"946":["beta"],"947":["gamma"],"9472":["---"],"9473":["--_"],"9474":["---"],"9475":["--_"],"9476":["--."],"9477":["--."],"9478":["--."],"9479":["--."],"948":["delta"],"9480":["--."],"9481":["--."],"9482":["--."],"9483":["--."],"9484":["---"],"9485":["--_"],"9486":["--_"],"9487":["--_"],"9488":["---"],"9489":["--_"],"949":["epsilon"],"9490":["--_"],"9491":["--_"],"9492":["---"],"9493":["--_"],"9494":["--_"],"9495":["--_"],"9496":["---"],"9497":["--_"],"9498":["--_"],"9499":["--_"],"950":["zeta"],"9500":["---"],"9501":["--_"],"9502":["--_"],"9503":["--_"],"9504":["--_"],"9505":["--_"],"9506":["--_"],"9507":["--_"],"9508":["---"],"9509":["--_"],"951":["eta"],"9510":["--_"],"9511":["--_"],"9512":["--_"],"9513":["--_"],"9514":["--_"],"9515":["--_"],"9516":["---"],"9517":["--_"],"9518":["--_"],"9519":["--_"],"952":["theta"],"9520":["--_"],"9521":["--_"],"9522":["--_"],"9523":["--_"],"9524":["---"],"9525":["--_"],"9526":["--_"],"9527":["--_"],"9528":["--_"],"9529":["--_"],"953":["iota"],"9530":["--_"],"9531":["--_"],"9532":["---"],"9533":["--_"],"9534":["--_"],"9535":["--_"],"9536":["--_"],"9537":["--_"],"9538":["--_"],"9539":["--_"],"954":["kappa"],"9540":["--_"],"9541":["--_"],"9542":["--_"],"9543":["--_"],"9544":["--_"],"9545":["--_"],"9546":["--_"],"9547":["--_"],"9548":["--."],"9549":["--."],"955":["lambda"],"9550":["--."],"9551":["--."],"9552":["--="],"9553":["--="],"9554":["--="],"9555":["--="],"9556":["--="],"9557":["--="],"9558":["--="],"9559":["--="],"956":["mu"],"9560":["--="],"9561":["--="],"9562":["--="],"9563":["--="],"9564":["--="],"9565":["--="],"9566":["--="],"9567":["--="],"9568":["--="],"9569":["--="],"957":["nu"],"9570":["--="],"9571":["--="],"9572":["--="],"9573":["--="],"9574":["--="],"9575":["--="],"9576":["--="],"9577":["--="],"9578":["--="],"9579":["--="],"958":["xi"],"9580":["--="],"9581":["---"],"9582":["---"],"9583":["---"],"9584":["---"],"9585":["---"],"9586":["---"],"9587":["---"],"9588":["---"],"9589":["---"],"9590":["---"],"9591":["---"],"9592":["--_"],"9593":["--_"],"9594":["--_"],"9595":["--_"],"9596":["--_"],"9597":["--_"],"9598":["--_"],"9599":["--_"],"960":["pi"],"961":["rho"],"962":["varsigma"],"963":["sigma"],"9632":["sq","sqb"],"9633":["sq","sqw","Box","square"],"9634":["sq","sqo"],"9635":["sq","sq."],"9636":["sq"],"9637":["sq"],"9638":["sq"],"9639":["sq"],"964":["tau"],"9640":["sq"],"9641":["sq"],"9642":["blacksquare"],"9644":["re","reb"],"9645":["re","rew"],"9646":["re","reb"],"9647":["re","rew"],"9648":["pa","pab"],"9649":["pa","paw"],"965":["upsilon"],"9650":["T","Tb"],"9651":["T","Tw","bigtriangleup"],"9652":["t","tb","blacktriangle"],"9653":["t","tw","triangle"],"9654":["T","Tb"],"9655":["T","Tw","rhd"],"9656":["t","tb","blacktriangleright"],"9657":["t","tw","triangleright"],"9658":["t","tb"],"9659":["t","tw"],"966":["phi","straightphi"],"9660":["T","Tb"],"9661":["T","Tw","bigtriangledown"],"9662":["t","tb","blacktriangledown"],"9663":["t","tw","triangledown"],"9664":["T","Tb"],"9665":["T","Tw","lhd"],"9666":["t","tb","blacktriangleleft"],"9667":["t","tw","triangleleft"],"9668":["t","tb"],"9669":["t","tw"],"967":["chi"],"9670":["di","dib"],"9671":["di","diw","Diamond"],"9672":["di","di."],"9675":["ci","ciw"],"9676":["ci","ci.."],"9677":["ci"],"9678":["ci","ci."],"9679":["ci","cib"],"968":["psi"],"9680":["ci"],"9681":["ci"],"9682":["ci"],"9683":["ci"],"9684":["ci"],"9685":["ci"],"9686":["ci"],"9687":["ci"],"969":["omega"],"9696":["ci"],"9697":["ci"],"9698":["t","tb"],"9699":["t","tb"],"9700":["t","tb"],"9701":["t","tb"],"9702":["bu","buw","textopenbullet"],"9703":["sq"],"9704":["sq"],"9705":["sq"],"9706":["sq"],"9707":["sq"],"9708":["T"],"9709":["T"],"9710":["T"],"9711":["ci","ciO","bigcirc"],"9712":["sq"],"9713":["sq"],"9714":["sq"],"9715":["sq"],"9716":["ci"],"9717":["ci"],"9718":["ci"],"9719":["ci"],"9720":["t","tw"],"9721":["t","tw"],"9722":["t","tw"],"9723":["sq","sqw"],"9724":["sq","sqb"],"9725":["sq","sqw"],"9726":["sq","sqb"],"9727":["t","tw"],"9733":["st","bigstar"],"9734":["st"],"977":["vartheta"],"9785":["Frowny"],"9786":["Smiley"],"9787":["blacksmiley"],"981":["varphi"],"982":["varpi"],"9824":["spadesuit"],"9826":["diamondsuit"],"9827":["clubsuit"],"9829":["heartsuit"],"9833":["note"],"9834":["note","textmusicalnote"],"9835":["note"],"9836":["note"],"9837":["b","flat"],"9838":["natural"],"9839":["#","sharp"],"9856":["die"],"9857":["die"],"9858":["die"],"9859":["die"],"9860":["die"],"9861":["die"],"9862":["ci"],"9863":["ci"],"9864":["ci"],"9865":["ci"],"988":["digamma"],"9986":["8<"],"9988":["8<"],"9993":["Letter"]} \ No newline at end of file From b814e2f6193c6836421cf604f7ccbdb89b9c4f81 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Wed, 6 Dec 2023 11:27:21 +0800 Subject: [PATCH 050/109] [ change ] Seperate EmacsTop output parsing from Reactjs component rendering to make testing easier --- lib/js/src/State/State__Response.bs.js | 2 +- .../src/View/Panel/Emacs/Emacs__Parser2.bs.js | 6 +- .../tests/Parser/Test__Parser__Emacs2.bs.js | 90 ++++--------------- src/State/State__Response.res | 2 +- src/View/Panel/Emacs/Emacs__Parser2.res | 14 +-- test/tests/Parser/Test__Parser__Emacs2.res | 43 ++------- 6 files changed, 43 insertions(+), 114 deletions(-) diff --git a/lib/js/src/State/State__Response.bs.js b/lib/js/src/State/State__Response.bs.js index 9dbc794e..25ab078d 100644 --- a/lib/js/src/State/State__Response.bs.js +++ b/lib/js/src/State/State__Response.bs.js @@ -81,7 +81,7 @@ function handle(state, x) { [Symbol.for("name")]: "Success" }, []); } - var items$1 = Emacs__Parser2$AgdaModeVscode.parseAllGoalsWarnings(header, body$1); + var items$1 = Emacs__Parser2$AgdaModeVscode.renderAllGoalsWarnings(Emacs__Parser2$AgdaModeVscode.parseAllGoalsWarnings(header, body$1)); return State__View$AgdaModeVscode.Panel.display(state, { TAG: 0, _0: header, diff --git a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js index 77707f1f..78a83909 100644 --- a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js +++ b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js @@ -274,7 +274,10 @@ function parseAllGoalsWarnings(title, body) { })); }; - var dictionary = partiteWarningsOrErrors(partiteWarningsOrErrors(partiteMetas(partiteAllGoalsWarnings(title, body)), "warnings"), "errors"); + return partiteWarningsOrErrors(partiteWarningsOrErrors(partiteMetas(partiteAllGoalsWarnings(title, body)), "warnings"), "errors"); +} + +function renderAllGoalsWarnings(dictionary) { return Js_array.concatMany(Belt_Array.map(Js_dict.entries(dictionary), (function (param) { var lines = param[1]; switch (param[0]) { @@ -378,6 +381,7 @@ exports.partiteWarningsOrErrors = partiteWarningsOrErrors; exports.parseError = parseError; exports.parseGoalType = parseGoalType; exports.parseAllGoalsWarnings = parseAllGoalsWarnings; +exports.renderAllGoalsWarnings = renderAllGoalsWarnings; exports.parseOutputs = parseOutputs; exports.parseTextWithLocation = parseTextWithLocation; exports.parseSearchAbout = parseSearchAbout; diff --git a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js index 384059c7..62ad99e4 100644 --- a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js @@ -1,6 +1,7 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; +var Js_dict = require("rescript/lib/js/js_dict.js"); var Mocha$BsMocha = require("bs-mocha/lib/js/src/Mocha.bs.js"); var Assert$BsMocha = require("bs-mocha/lib/js/src/Assert.bs.js"); var RichText$AgdaModeVscode = require("../../../src/View/Component/RichText.bs.js"); @@ -95,81 +96,28 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseGoalType")(undefined, u Mocha$BsMocha.describe("when running Emacs__Parser2.parseAllGoalsWarnings")(undefined, undefined, undefined, (function (param) { Mocha$BsMocha.it("should should parse goals only")(undefined, undefined, undefined, (function (param) { var actual = Emacs__Parser2$AgdaModeVscode.parseAllGoalsWarnings("*All Goals*", "\n?0 : ℕ\n?1 : ℕ\nSort _0 [ at /Users/banacorn/agda/examples/A.agda:11,5-20 ]\n"); - var expected = [ - { - TAG: 1, - _0: RichText$AgdaModeVscode.concatMany([ - RichText$AgdaModeVscode.hole(0), - RichText$AgdaModeVscode.string(" : "), - RichText$AgdaModeVscode.string("ℕ") - ]), - _1: undefined, - _2: undefined, - [Symbol.for("name")]: "Unlabeled" - }, - { - TAG: 1, - _0: RichText$AgdaModeVscode.concatMany([ - RichText$AgdaModeVscode.hole(1), - RichText$AgdaModeVscode.string(" : "), - RichText$AgdaModeVscode.string("ℕ") - ]), - _1: undefined, - _2: undefined, - [Symbol.for("name")]: "Unlabeled" - }, - { - TAG: 1, - _0: RichText$AgdaModeVscode.concatMany([ - RichText$AgdaModeVscode.string("Sort "), - RichText$AgdaModeVscode.string("_0") - ]), - _1: undefined, - _2: { - _0: "/Users/banacorn/agda/examples/A.agda", - _1: [{ - start: { - line: 11, - col: 5, - pos: 0 - }, - end_: { - line: 11, - col: 20, - pos: 0 - } - }], - [Symbol.for("name")]: "Range" - }, - [Symbol.for("name")]: "Unlabeled" - } - ]; + var expected = Js_dict.fromArray([[ + "metas", + [ + "?0 : ℕ", + "?1 : ℕ", + "Sort _0 [ at /Users/banacorn/agda/examples/A.agda:11,5-20 ]" + ] + ]]); Assert$BsMocha.deep_equal(undefined, actual, expected); })); Mocha$BsMocha.it("should should parse goals + errors")(undefined, undefined, undefined, (function (param) { var actual = Emacs__Parser2$AgdaModeVscode.parseAllGoalsWarnings("*All Goals, Errors*", "?0 : _2\n\n———— Errors ————————————————————————————————————————————————\nUnsolved constraints"); - var expected = [ - { - TAG: 1, - _0: RichText$AgdaModeVscode.concatMany([ - RichText$AgdaModeVscode.hole(0), - RichText$AgdaModeVscode.string(" : "), - RichText$AgdaModeVscode.string("_2") - ]), - _1: undefined, - _2: undefined, - [Symbol.for("name")]: "Unlabeled" - }, - { - TAG: 0, - _0: "Error", - _1: "error", - _2: RichText$AgdaModeVscode.string("Unsolved constraints"), - _3: undefined, - _4: undefined, - [Symbol.for("name")]: "Labeled" - } - ]; + var expected = Js_dict.fromArray([ + [ + "metas", + ["?0 : _2"] + ], + [ + "errors", + ["Unsolved constraints"] + ] + ]); Assert$BsMocha.deep_equal(undefined, actual, expected); })); })); diff --git a/src/State/State__Response.res b/src/State/State__Response.res index 58bf39fb..ebe5a26d 100644 --- a/src/State/State__Response.res +++ b/src/State/State__Response.res @@ -26,7 +26,7 @@ module DisplayInfo = { State.View.Panel.display(state, Plain("Constraints"), items) | AllGoalsWarnings(header, "nil") => State.View.Panel.display(state, Success(header), []) | AllGoalsWarnings(header, body) => - let items = Emacs__Parser2.parseAllGoalsWarnings(header, body) + let items = Emacs__Parser2.parseAllGoalsWarnings(header, body)->Emacs__Parser2.renderAllGoalsWarnings State.View.Panel.display(state, Plain(header), items) | AllGoalsWarningsLSP(header, goals, metas, warnings, errors) => let errors = errors->Array.map(raw => Item.error(RichText.string(raw), Some(raw))) diff --git a/src/View/Panel/Emacs/Emacs__Parser2.res b/src/View/Panel/Emacs/Emacs__Parser2.res index 7469ec00..883044f8 100644 --- a/src/View/Panel/Emacs/Emacs__Parser2.res +++ b/src/View/Panel/Emacs/Emacs__Parser2.res @@ -168,7 +168,7 @@ let parseGoalType: string => array = raw => { ->Js.Array.concatMany([]) } -let parseAllGoalsWarnings = (title, body): array => { +let parseAllGoalsWarnings = (title, body): Js.Dict.t> => { let partiteAllGoalsWarnings: (string, string) => Js.Dict.t> = (title, body) => { let lines = Js.String.split("\n", body) /* examine the header to see what's in the body */ @@ -219,11 +219,13 @@ let parseAllGoalsWarnings = (title, body): array => { } ) } - let dictionary: Js.Dict.t> = - partiteAllGoalsWarnings(title, body) - ->partiteMetas - ->partiteWarningsOrErrors("warnings") - ->partiteWarningsOrErrors("errors") + partiteAllGoalsWarnings(title, body) + ->partiteMetas + ->partiteWarningsOrErrors("warnings") + ->partiteWarningsOrErrors("errors") +} + +let renderAllGoalsWarnings = dictionary => { // convert entries in the dictionary to Items for rendering dictionary ->Js.Dict.entries diff --git a/test/tests/Parser/Test__Parser__Emacs2.res b/test/tests/Parser/Test__Parser__Emacs2.res index 889a144e..21569aca 100644 --- a/test/tests/Parser/Test__Parser__Emacs2.res +++ b/test/tests/Parser/Test__Parser__Emacs2.res @@ -57,33 +57,12 @@ describe("when running Emacs__Parser2.parseAllGoalsWarnings", () => { Sort _0 [ at /Users/banacorn/agda/examples/A.agda:11,5-20 ] ` let actual = Emacs__Parser2.parseAllGoalsWarnings("*All Goals*", raw) - let expected = [ - Item.Unlabeled( - RichText.concatMany([RichText.hole(0), RichText.string(" : "), RichText.string("ℕ")]), - None, - None, - ), - Item.Unlabeled( - RichText.concatMany([RichText.hole(1), RichText.string(" : "), RichText.string("ℕ")]), - None, - None, + let expected = Js.Dict.fromArray([ + ( + "metas", + ["?0 : ℕ", "?1 : ℕ", "Sort _0 [ at /Users/banacorn/agda/examples/A.agda:11,5-20 ]"], ), - Item.Unlabeled( - RichText.concatMany([RichText.string("Sort "), RichText.string("_0")]), - None, - Some( - Common.AgdaRange.Range( - Some("/Users/banacorn/agda/examples/A.agda"), - [ - { - start: {col: 5, line: 11, pos: 0}, - end_: {col: 20, line: 11, pos: 0}, - }, - ], - ), - ), - ), - ] + ]) Assert.deep_equal(actual, expected) }) @@ -93,14 +72,10 @@ Sort _0 [ at /Users/banacorn/agda/examples/A.agda:11,5-20 ] ———— Errors ———————————————————————————————————————————————— Unsolved constraints` let actual = Emacs__Parser2.parseAllGoalsWarnings("*All Goals, Errors*", raw) - let expected = [ - Item.Unlabeled( - RichText.concatMany([RichText.hole(0), RichText.string(" : "), RichText.string("_2")]), - None, - None, - ), - Item.Labeled("Error", "error", RichText.string("Unsolved constraints"), None, None), - ] + let expected = Js.Dict.fromArray([ + ("metas", ["?0 : _2"]), + ("errors", ["Unsolved constraints"]), + ]) Assert.deep_equal(actual, expected) }) }) From 92807ab1c6735c0294bf858b50255604a90e4390 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Wed, 6 Dec 2023 14:21:18 +0800 Subject: [PATCH 051/109] [ dep ] Replace vscode-test#1.3.0 with @vscode/test-electron#2.3.8 --- lib/js/test/RunTestFromCLI.bs.js | 4 +- package-lock.json | 64 ++++++++++++++++++++++++-------- package.json | 4 +- src/Main.res | 7 +--- test/RunTestFromCLI.res | 23 +++++++----- test/tests/Test__Util.res | 2 +- 6 files changed, 69 insertions(+), 35 deletions(-) diff --git a/lib/js/test/RunTestFromCLI.bs.js b/lib/js/test/RunTestFromCLI.bs.js index ff01dc1f..8bae02b6 100644 --- a/lib/js/test/RunTestFromCLI.bs.js +++ b/lib/js/test/RunTestFromCLI.bs.js @@ -5,7 +5,7 @@ var Path = require("path"); var Process = require("process"); var Js_promise = require("rescript/lib/js/js_promise.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); -var VscodeTest = require("vscode-test"); +var TestElectron = require("@vscode/test-electron"); var dirname = typeof __dirname === "undefined" ? undefined : __dirname; @@ -21,7 +21,7 @@ Js_promise.$$catch((function (error) { console.log(error); console.log("Failed to run tests"); return Process.exit(1); - }), VscodeTest.runTests({ + }), TestElectron.runTests({ extensionDevelopmentPath: extensionDevelopmentPath, extensionTestsPath: extensionTestsPath })); diff --git a/package-lock.json b/package-lock.json index 6ba738fb..47755c19 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,6 +26,7 @@ "vscode-codicons": "^0.0.7" }, "devDependencies": { + "@vscode/test-electron": "^2.3.8", "bs-mocha": "^1.0.0", "copy-webpack-plugin": "^6.0.3", "glob": "^7.1.6", @@ -33,7 +34,6 @@ "less-loader": "^7.0.2", "less-watch-compiler": "^1.14.6", "mocha": "^10.2.0", - "vscode-test": "^1.3.0", "webpack": "^5.76.0", "webpack-cli": "^4.2.0" }, @@ -222,6 +222,21 @@ "undici-types": "~5.26.4" } }, + "node_modules/@vscode/test-electron": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.8.tgz", + "integrity": "sha512-b4aZZsBKtMGdDljAsOPObnAi7+VWIaYl3ylCz1jTs+oV6BZ4TNHcVNC3xUn0azPeszBmwSBDQYfFESIaUQnrOg==", + "dev": true, + "dependencies": { + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "jszip": "^3.10.1", + "semver": "^7.5.2" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/@webassemblyjs/ast": { "version": "1.11.6", "dev": true, @@ -2232,6 +2247,12 @@ "node": ">=0.10.0" } }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true + }, "node_modules/import-local": { "version": "3.1.0", "dev": true, @@ -2652,6 +2673,18 @@ "node": ">=6" } }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dev": true, + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, "node_modules/kind-of": { "version": "6.0.3", "dev": true, @@ -2768,6 +2801,15 @@ "semver": "bin/semver" } }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/listenercount": { "version": "1.0.1", "license": "ISC" @@ -3301,6 +3343,12 @@ "node": ">=6" } }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, "node_modules/parse-node-version": { "version": "1.0.1", "dev": true, @@ -4396,20 +4444,6 @@ "version": "3.17.3", "license": "MIT" }, - "node_modules/vscode-test": { - "version": "1.6.1", - "dev": true, - "license": "MIT", - "dependencies": { - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "rimraf": "^3.0.2", - "unzipper": "^0.10.11" - }, - "engines": { - "node": ">=8.9.3" - } - }, "node_modules/watchpack": { "version": "2.4.0", "dev": true, diff --git a/package.json b/package.json index 6b9278a3..007c6c42 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "less-loader": "^7.0.2", "less-watch-compiler": "^1.14.6", "mocha": "^10.2.0", - "vscode-test": "^1.3.0", + "@vscode/test-electron": "^2.3.8", "webpack": "^5.76.0", "webpack-cli": "^4.2.0" }, @@ -925,4 +925,4 @@ "publisherDisplayName": "Ting-Gian LUA", "publisherId": "22df016e-6b4f-49b2-9856-3336695d1289" } -} +} \ No newline at end of file diff --git a/src/Main.res b/src/Main.res index 09cfcb82..ae68ac69 100644 --- a/src/Main.res +++ b/src/Main.res @@ -5,7 +5,6 @@ let isAgda = (fileName): bool => { let fileName = fileName->Parser.filepath Js.Re.test_(%re("/\.agda$|\.lagda/i"), fileName) // RegEx updated to v10.1.4 } - module Inputs: { let onOpenEditor: (VSCode.TextEditor.t => unit) => VSCode.Disposable.t let onCloseDocument: (VSCode.TextDocument.t => unit) => VSCode.Disposable.t @@ -22,7 +21,7 @@ module Inputs: { // 1. the triggered command has prefix "agda-mode." // 2. there's an active text edtior // 3. the active text editor is an Agda file - let onTriggerCommand = callback => + let onTriggerCommand = callback => { Command.names->Array.map(((command, name)) => VSCode.Commands.registerCommand("agda-mode." ++ name, () => { VSCode.Window.activeTextEditor->Option.map( @@ -38,6 +37,7 @@ module Inputs: { ) }) ) + } } let initialize = (debugChan, extensionPath, globalStoragePath, editor, fileName) => { @@ -246,7 +246,6 @@ let activateWithoutContext = (subscriptions, extensionPath, globalStoragePath) = finalize(false)->ignore } })->subscribe - // on triggering commands Inputs.onTriggerCommand((command, editor) => { let fileName = editor->VSCode.TextEditor.document->VSCode.TextDocument.fileName->Parser.filepath @@ -286,7 +285,6 @@ let activateWithoutContext = (subscriptions, extensionPath, globalStoragePath) = } }) })->subscribeMany - // registerDocumentSemanticTokensProvider registerDocumentSemanticTokensProvider()->subscribe @@ -299,7 +297,6 @@ let activate = context => { let subscriptions = VSCode.ExtensionContext.subscriptions(context) let extensionPath = VSCode.ExtensionContext.extensionPath(context) let globalStoragePath = VSCode.ExtensionContext.globalStoragePath(context) - activateWithoutContext(subscriptions, extensionPath, globalStoragePath) } diff --git a/test/RunTestFromCLI.res b/test/RunTestFromCLI.res index da536d5f..206cc26f 100644 --- a/test/RunTestFromCLI.res +++ b/test/RunTestFromCLI.res @@ -1,10 +1,10 @@ -// bindings of module 'vscode-test' +// bindings of module '@vscode/test-electron' type options = { extensionDevelopmentPath: string, extensionTestsPath: string, } -@bs.module("vscode-test") +@module("@vscode/test-electron") external runTests: options => Js.Promise.t = "runTests" let dirname: option = %bs.node(__dirname) @@ -31,11 +31,14 @@ Js.log( ("\n extensionTestsPath: " ++ extensionTestsPath)), ) -Js.Promise.catch(error => { - Js.log(error) - Js.log("Failed to run tests") - Node.Process.exit(1) -}, runTests({ - extensionDevelopmentPath: extensionDevelopmentPath, - extensionTestsPath: extensionTestsPath, -}))->ignore +Js.Promise.catch( + error => { + Js.log(error) + Js.log("Failed to run tests") + Node.Process.exit(1) + }, + runTests({ + extensionDevelopmentPath, + extensionTestsPath, + }), +)->ignore diff --git a/test/tests/Test__Util.res b/test/tests/Test__Util.res index da511b7e..ad1c7a25 100644 --- a/test/tests/Test__Util.res +++ b/test/tests/Test__Util.res @@ -370,7 +370,7 @@ module Agda = { ->Promise.flatMap(() => Config.Connection.setUseAgdaLanguageServer(als)) ->Promise.flatMap(() => exists("agda")) ->Promise.map(_ => { - filepath: filepath, + filepath, channels: activateExtension(), }) } From 018015d22be6e263692bbe2193ae770e63848169 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Wed, 6 Dec 2023 15:54:43 +0800 Subject: [PATCH 052/109] [ fix ] Restores the parsing long ass outputs from EmacsTops --- lib/js/src/Registry.bs.js | 7 ++- lib/js/src/Util/Util.bs.js | 7 +++ .../src/View/Panel/Emacs/Emacs__Parser.bs.js | 26 ++++++----- .../src/View/Panel/Emacs/Emacs__Parser2.bs.js | 3 +- .../tests/Parser/Test__Parser__Emacs2.bs.js | 39 ++++++++++------ src/Registry.res | 5 +-- src/Util/Util.res | 5 +++ src/View/Panel/Emacs/Emacs__Parser.res | 44 ++++++++++++------- src/View/Panel/Emacs/Emacs__Parser2.res | 11 +++-- test/tests/Parser/Test__Parser__Emacs2.res | 41 ++++++++++++----- 10 files changed, 125 insertions(+), 63 deletions(-) diff --git a/lib/js/src/Registry.bs.js b/lib/js/src/Registry.bs.js index bb28f065..a04322bf 100644 --- a/lib/js/src/Registry.bs.js +++ b/lib/js/src/Registry.bs.js @@ -46,8 +46,7 @@ function add(fileName, state) { } function remove(fileName) { - var delete_ = (function (dict, key) {delete dict[key]}); - delete_(dict, fileName); + Util$AgdaModeVscode.Dict.$$delete(dict, fileName); } function removeAndDestroy(fileName) { @@ -56,11 +55,11 @@ function removeAndDestroy(fileName) { return $$Promise.resolved(undefined); } if (match.TAG === /* PendingInit */0) { - remove(fileName); + Util$AgdaModeVscode.Dict.$$delete(dict, fileName); Curry._1(match._1, []); return $$Promise.resolved(undefined); } - remove(fileName); + Util$AgdaModeVscode.Dict.$$delete(dict, fileName); return $$Promise.map(State$AgdaModeVscode.destroy(match._0, false), (function (param) { })); diff --git a/lib/js/src/Util/Util.bs.js b/lib/js/src/Util/Util.bs.js index 393e6ff9..cabfa04f 100644 --- a/lib/js/src/Util/Util.bs.js +++ b/lib/js/src/Util/Util.bs.js @@ -423,6 +423,12 @@ var P = { toPromise: toPromise }; +var $$delete = (function (dict, key) {delete dict[key]}); + +var Dict = { + $$delete: $$delete +}; + var React$p; exports.Result = Result; @@ -438,4 +444,5 @@ exports.oneByOne = oneByOne; exports.JsError = JsError; exports.List = List; exports.P = P; +exports.Dict = Dict; /* react Not a pure module */ diff --git a/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js b/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js index 6c3f095e..59940a61 100644 --- a/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js +++ b/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js @@ -7,6 +7,7 @@ var Js_array = require("rescript/lib/js/js_array.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); +var Util$AgdaModeVscode = require("../../../Util/Util.bs.js"); function partite(xs, tagEntry) { var keys = Belt_Array.keepMap(Belt_Array.mapWithIndex(xs, (function (i, x) { @@ -60,6 +61,7 @@ function split(dict, key, splitter) { Belt_Array.forEach(Js_dict.entries(Curry._1(splitter, value)), (function (param) { dict[param[0]] = param[1]; })); + Util$AgdaModeVscode.Dict.$$delete(dict, key); return dict; } else { return dict; @@ -149,17 +151,21 @@ function unindent(lines) { })), (function (param) { var line = param[0]; var nextLine = param[1]; - var sort = /^Sort \\S*/; - var delimeter = /^\\u2014{4}/g; - var completeJudgement = /^(?:(?:[^\\(\\{\\s]+\\s+\\:=?)|Have\\:|Goal\\:)\\s* \\S*/; - var reallyLongTermIdentifier = /^\\S+$/; - var restOfTheJudgement = /^\\s*\\:=?\\s* \\S*/; - if (sort.test(line) || delimeter.test(line) || reallyLongTermIdentifier.test(line) && Belt_Option.mapWithDefault(nextLine, false, (function (line) { - return restOfTheJudgement.test(line); - }))) { + var sort = /^Sort \S*/; + var delimeter = /^\u2014{4}/g; + var completeJudgement = /^(?:(?:[^\(\{\s]+\s+\:=?)|Have\:|Goal\:)\s* \S*/; + var reallyLongTermIdentifier = /^\S+$/; + var restOfTheJudgement = /^\s*\:=?\s* \S*/; + var isDelimeter = delimeter.test(line); + var isSort = sort.test(line); + var isCompleteJudgement = completeJudgement.test(line); + var isReallyLongTermIdentifier = reallyLongTermIdentifier.test(line) && Belt_Option.mapWithDefault(nextLine, false, (function (line) { + return restOfTheJudgement.test(line); + })); + if (isDelimeter || isSort || isCompleteJudgement) { return true; } else { - return completeJudgement.test(line); + return isReallyLongTermIdentifier; } })), (function (param) { return param[2]; @@ -220,4 +226,4 @@ exports.unindent = unindent; exports.captures = captures; exports.choice = choice; exports.at = at; -/* No side effect */ +/* Util-AgdaModeVscode Not a pure module */ diff --git a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js index 78a83909..11ca317e 100644 --- a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js +++ b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js @@ -274,7 +274,8 @@ function parseAllGoalsWarnings(title, body) { })); }; - return partiteWarningsOrErrors(partiteWarningsOrErrors(partiteMetas(partiteAllGoalsWarnings(title, body)), "warnings"), "errors"); + var x = partiteMetas(partiteAllGoalsWarnings(title, body)); + return partiteWarningsOrErrors(partiteWarningsOrErrors((console.log(body), console.log(x), x), "warnings"), "errors"); } function renderAllGoalsWarnings(dictionary) { diff --git a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js index 62ad99e4..adc179f6 100644 --- a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js @@ -8,7 +8,7 @@ var RichText$AgdaModeVscode = require("../../../src/View/Component/RichText.bs.j var Emacs__Parser2$AgdaModeVscode = require("../../../src/View/Panel/Emacs/Emacs__Parser2.bs.js"); Mocha$BsMocha.describe("when running Emacs__Parser2.parseGoalType")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.it("should should parse goal only")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should parse goal only")(undefined, undefined, undefined, (function (param) { var actual = Emacs__Parser2$AgdaModeVscode.parseGoalType("Goal: ℕ\n————————————————————————————————————————————————————————————"); var expected = [{ TAG: 0, @@ -21,7 +21,7 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseGoalType")(undefined, u }]; Assert$BsMocha.deep_equal(undefined, actual, expected); })); - Mocha$BsMocha.it("should should parse goal + have")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should parse goal + have")(undefined, undefined, undefined, (function (param) { var actual = Emacs__Parser2$AgdaModeVscode.parseGoalType("Goal: ℕ\nHave: ℕ\n————————————————————————————————————————————————————————————"); var expected = [ { @@ -45,7 +45,7 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseGoalType")(undefined, u ]; Assert$BsMocha.deep_equal(undefined, actual, expected); })); - Mocha$BsMocha.it("should should parse goal + have + context")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should parse goal + have + context")(undefined, undefined, undefined, (function (param) { var actual = Emacs__Parser2$AgdaModeVscode.parseGoalType("Goal: ℕ\nHave: ℕ\n————————————————————————————————————————————————————————————\ny : ℕ\nx : ℕ"); var expected = [ { @@ -94,23 +94,28 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseGoalType")(undefined, u })); Mocha$BsMocha.describe("when running Emacs__Parser2.parseAllGoalsWarnings")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.it("should should parse goals only")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should parse goals only")(undefined, undefined, undefined, (function (param) { var actual = Emacs__Parser2$AgdaModeVscode.parseAllGoalsWarnings("*All Goals*", "\n?0 : ℕ\n?1 : ℕ\nSort _0 [ at /Users/banacorn/agda/examples/A.agda:11,5-20 ]\n"); - var expected = Js_dict.fromArray([[ - "metas", + var expected = Js_dict.fromArray([ + [ + "interactionMetas", [ "?0 : ℕ", - "?1 : ℕ", - "Sort _0 [ at /Users/banacorn/agda/examples/A.agda:11,5-20 ]" + "?1 : ℕ" ] - ]]); + ], + [ + "hiddenMetas", + ["Sort _0 [ at /Users/banacorn/agda/examples/A.agda:11,5-20 ]"] + ] + ]); Assert$BsMocha.deep_equal(undefined, actual, expected); })); - Mocha$BsMocha.it("should should parse goals + errors")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should parse goals + errors")(undefined, undefined, undefined, (function (param) { var actual = Emacs__Parser2$AgdaModeVscode.parseAllGoalsWarnings("*All Goals, Errors*", "?0 : _2\n\n———— Errors ————————————————————————————————————————————————\nUnsolved constraints"); var expected = Js_dict.fromArray([ [ - "metas", + "interactionMetas", ["?0 : _2"] ], [ @@ -120,10 +125,18 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseAllGoalsWarnings")(unde ]); Assert$BsMocha.deep_equal(undefined, actual, expected); })); + Mocha$BsMocha.it("should parse goals that span multiple lines")(undefined, undefined, undefined, (function (param) { + var actual = Emacs__Parser2$AgdaModeVscode.parseAllGoalsWarnings("*All Goals, Errors*", "?0\n : BoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBool"); + var expected = Js_dict.fromArray([[ + "interactionMetas", + ["?0\n : BoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBool"] + ]]); + Assert$BsMocha.deep_equal(undefined, actual, expected); + })); })); Mocha$BsMocha.describe("when running Emacs__Parser2.parseError")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.it("should should parse an error only")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should parse an error only")(undefined, undefined, undefined, (function (param) { var actual = Emacs__Parser2$AgdaModeVscode.parseError("/Users/banacorn/agda/examples/A.agda:15,1-2\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8"); var expected = [{ TAG: 0, @@ -155,7 +168,7 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseError")(undefined, unde }]; Assert$BsMocha.deep_equal(undefined, actual, expected); })); - Mocha$BsMocha.it("should should parse an error + warnings")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should parse an error + warnings")(undefined, undefined, undefined, (function (param) { var actual = Emacs__Parser2$AgdaModeVscode.parseError("———— Error —————————————————————————————————————————————————\n/Users/banacorn/agda/examples/A.agda:15,1-2\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8\n\n———— Warning(s) ————————————————————————————————————————————\n/Users/banacorn/agda/examples/A.agda:17,1-8\nThe following names are declared but not accompanied by a\ndefinition: boo\n/Users/banacorn/agda/examples/A.agda:9,1-10\nUnreachable clause\nwhen checking the definition of _+_"); var expected = [ { diff --git a/src/Registry.res b/src/Registry.res index cc13d06c..75d53417 100644 --- a/src/Registry.res +++ b/src/Registry.res @@ -53,10 +53,7 @@ module Module: { } // Removes the entry (but without triggering State.destroy() ) - let remove = fileName => { - let delete_: (Js.Dict.t<'a>, string) => unit = %raw("function (dict, key) {delete dict[key]}") - delete_(dict, fileName) - } + let remove = fileName => Util.Dict.delete(dict, fileName) let removeAndDestroy = fileName => switch get'(fileName) { diff --git a/src/Util/Util.res b/src/Util/Util.res index c31333de..cd8decbe 100644 --- a/src/Util/Util.res +++ b/src/Util/Util.res @@ -249,3 +249,8 @@ module P = { ) } } + + +module Dict = { + let delete: (Js.Dict.t<'a>, string) => unit = %raw("function (dict, key) {delete dict[key]}") +} \ No newline at end of file diff --git a/src/View/Panel/Emacs/Emacs__Parser.res b/src/View/Panel/Emacs/Emacs__Parser.res index 0c77b786..6b0a81d6 100644 --- a/src/View/Panel/Emacs/Emacs__Parser.res +++ b/src/View/Panel/Emacs/Emacs__Parser.res @@ -13,15 +13,20 @@ module Dict = { | None => (key, index, Array.length(xs)) } ) - intervals->Array.map(((key, start, end_)) => (key, xs->Js.Array.slice(~start, ~end_)->Array.keep(x => x !== ""))) - |> fromArray + intervals->Array.map(((key, start, end_)) => ( + key, + xs->Js.Array.slice(~start, ~end_)->Array.keep(x => x !== ""), + )) |> fromArray } - /* split an entry */ + // given a key and a splitter function, split the value of the key into multiple entries + // and replace the old entry with the new ones let split = (dict: t<'a>, key: key, splitter: 'a => t<'a>): t> => switch get(dict, key) { | Some(value) => - /* insert new entries */ + // insert new entries entries(splitter(value))->Array.forEach(((k, v)) => set(dict, k, v)) + // remove old entry + Util.Dict.delete(dict, key) dict | None => dict } @@ -72,34 +77,41 @@ module Array_ = { let unindent: array => array = lines => { let isNewline = (line, nextLine) => { - let sort = %re("/^Sort \\S*/") - let delimeter = %re("/^\\u2014{4}/g") + let sort = %re("/^Sort \S*/") + let delimeter = %re("/^\u2014{4}/g") /* banana : Banana */ - let completeJudgement = %re("/^(?:(?:[^\\(\\{\\s]+\\s+\\:=?)|Have\\:|Goal\\:)\\s* \\S*/") + let completeJudgement = %re("/^(?:(?:[^\(\{\s]+\s+\:=?)|Have\:|Goal\:)\s* \S*/") /* case when the term's name is too long, the rest of the judgement would go to the next line, e.g: banananananananananananananananana : Banana */ - let reallyLongTermIdentifier = %re("/^\\S+$/") - let restOfTheJudgement = %re("/^\\s*\\:=?\\s* \\S*/") - Js.Re.test_(sort, line) || - (Js.Re.test_(delimeter, line) || - ((Js.Re.test_(reallyLongTermIdentifier, line) && - nextLine->Option.mapWithDefault(false, line => Js.Re.test_(restOfTheJudgement, line))) || - Js.Re.test_(completeJudgement, line))) + let reallyLongTermIdentifier = %re("/^\S+$/") + let restOfTheJudgement = %re("/^\s*\:=?\s* \S*/") + + // predicates + let isDelimeter = Js.Re.test_(delimeter, line) + let isSort = Js.Re.test_(sort, line) + let isCompleteJudgement = Js.Re.test_(completeJudgement, line) + let isReallyLongTermIdentifier = + Js.Re.test_(reallyLongTermIdentifier, line) && + nextLine->Option.mapWithDefault(false, line => Js.Re.test_(restOfTheJudgement, line)) + + isDelimeter || isSort || isCompleteJudgement || isReallyLongTermIdentifier } let newLineIndices: array = lines ->Array.mapWithIndex((index, line) => (line, lines[index + 1], index)) ->Array.keep(((line, nextLine, _)) => isNewline(line, nextLine)) ->Array.map(((_, _, index)) => index) - newLineIndices->Array.mapWithIndex((i, index) => + newLineIndices + ->Array.mapWithIndex((i, index) => switch newLineIndices[i + 1] { | None => (index, Array.length(lines) + 1) | Some(n) => (index, n) } - )->Array.map(((start, end_)) => lines |> Js.Array.slice(~start, ~end_) |> Js.Array.joinWith("\n")) + ) + ->Array.map(((start, end_)) => lines |> Js.Array.slice(~start, ~end_) |> Js.Array.joinWith("\n")) } let captures = (regex, handler, raw) => diff --git a/src/View/Panel/Emacs/Emacs__Parser2.res b/src/View/Panel/Emacs/Emacs__Parser2.res index 883044f8..9d27793a 100644 --- a/src/View/Panel/Emacs/Emacs__Parser2.res +++ b/src/View/Panel/Emacs/Emacs__Parser2.res @@ -2,8 +2,7 @@ open Emacs__Parser open Belt -let partiteMetas = xs => - xs->Dict.split("metas", (rawMetas: array) => { +let partiteMetas = xs => xs->Dict.split("metas", (rawMetas: array) => { let metas = unindent(rawMetas) let indexOfHiddenMetas = metas->Array.getIndexBy(s => Agda.Output.parseOutputWithLocation(s)->Option.isSome) @@ -18,7 +17,7 @@ let partiteMetas = xs => None } | None => - /* All interaction metas */ + // all metas are interaction metas if i === 0 { Some("interactionMetas") } else { @@ -219,8 +218,14 @@ let parseAllGoalsWarnings = (title, body): Js.Dict.t> => { } ) } + partiteAllGoalsWarnings(title, body) ->partiteMetas + ->(x => { + Js.log(body) + Js.log(x) + x + }) ->partiteWarningsOrErrors("warnings") ->partiteWarningsOrErrors("errors") } diff --git a/test/tests/Parser/Test__Parser__Emacs2.res b/test/tests/Parser/Test__Parser__Emacs2.res index 21569aca..ae48c81a 100644 --- a/test/tests/Parser/Test__Parser__Emacs2.res +++ b/test/tests/Parser/Test__Parser__Emacs2.res @@ -4,7 +4,7 @@ open! Belt module Assert = BsMocha.Assert describe("when running Emacs__Parser2.parseGoalType", () => { - it("should should parse goal only", () => { + it("should parse goal only", () => { let raw = `Goal: ℕ ————————————————————————————————————————————————————————————` let actual = Emacs__Parser2.parseGoalType(raw) @@ -12,7 +12,7 @@ describe("when running Emacs__Parser2.parseGoalType", () => { Assert.deep_equal(actual, expected) }) - it("should should parse goal + have", () => { + it("should parse goal + have", () => { let raw = `Goal: ℕ Have: ℕ ————————————————————————————————————————————————————————————` @@ -24,7 +24,7 @@ Have: ℕ Assert.deep_equal(actual, expected) }) - it("should should parse goal + have + context", () => { + it("should parse goal + have + context", () => { let raw = `Goal: ℕ Have: ℕ ———————————————————————————————————————————————————————————— @@ -50,7 +50,7 @@ x : ℕ` }) describe("when running Emacs__Parser2.parseAllGoalsWarnings", () => { - it("should should parse goals only", () => { + it("should parse goals only", () => { let raw = ` ?0 : ℕ ?1 : ℕ @@ -58,30 +58,47 @@ Sort _0 [ at /Users/banacorn/agda/examples/A.agda:11,5-20 ] ` let actual = Emacs__Parser2.parseAllGoalsWarnings("*All Goals*", raw) let expected = Js.Dict.fromArray([ - ( - "metas", - ["?0 : ℕ", "?1 : ℕ", "Sort _0 [ at /Users/banacorn/agda/examples/A.agda:11,5-20 ]"], - ), + ("interactionMetas", ["?0 : ℕ", "?1 : ℕ"]), + ("hiddenMetas", ["Sort _0 [ at /Users/banacorn/agda/examples/A.agda:11,5-20 ]"]), ]) Assert.deep_equal(actual, expected) }) - it("should should parse goals + errors", () => { + it("should parse goals + errors", () => { let raw = `?0 : _2 ———— Errors ———————————————————————————————————————————————— Unsolved constraints` let actual = Emacs__Parser2.parseAllGoalsWarnings("*All Goals, Errors*", raw) let expected = Js.Dict.fromArray([ - ("metas", ["?0 : _2"]), + ("interactionMetas", ["?0 : _2"]), ("errors", ["Unsolved constraints"]), ]) Assert.deep_equal(actual, expected) }) + + it("should parse goals that span multiple lines", () => { + let raw = `?0 + : BoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBool` + let actual = Emacs__Parser2.parseAllGoalsWarnings("*All Goals, Errors*", raw) + let expected = Js.Dict.fromArray([ + ( + "interactionMetas", + [ + `?0 + : BoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBool`, + ], + ), + ]) + Assert.deep_equal(actual, expected) + }) + + // ?0 + // : BoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBool }) describe("when running Emacs__Parser2.parseError", () => { - it("should should parse an error only", () => { + it("should parse an error only", () => { let raw = `/Users/banacorn/agda/examples/A.agda:15,1-2 The right-hand side can only be omitted if there is an absurd pattern, () or {}, in the left-hand side. @@ -114,7 +131,7 @@ when checking that the clause a has type _8` ] Assert.deep_equal(actual, expected) }) - it("should should parse an error + warnings", () => { + it("should parse an error + warnings", () => { let raw = `———— Error ————————————————————————————————————————————————— /Users/banacorn/agda/examples/A.agda:15,1-2 The right-hand side can only be omitted if there is an absurd From 14489b2b737eb4a779fc899025085426c56d61a7 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Wed, 6 Dec 2023 16:12:02 +0800 Subject: [PATCH 053/109] [ refactor ] Unified rendering function for all parsed result from EmacTops --- lib/js/src/State/State__Response.bs.js | 6 +- .../src/View/Panel/Emacs/Emacs__Parser2.bs.js | 124 +++------ .../tests/Parser/Test__Parser__Emacs2.bs.js | 236 ++++-------------- src/State/State__Response.res | 13 +- src/View/Panel/Emacs/Emacs__Parser2.res | 65 ++--- test/tests/Parser/Test__Parser__Emacs2.res | 149 +++-------- 6 files changed, 156 insertions(+), 437 deletions(-) diff --git a/lib/js/src/State/State__Response.bs.js b/lib/js/src/State/State__Response.bs.js index 25ab078d..85be7e60 100644 --- a/lib/js/src/State/State__Response.bs.js +++ b/lib/js/src/State/State__Response.bs.js @@ -81,7 +81,7 @@ function handle(state, x) { [Symbol.for("name")]: "Success" }, []); } - var items$1 = Emacs__Parser2$AgdaModeVscode.renderAllGoalsWarnings(Emacs__Parser2$AgdaModeVscode.parseAllGoalsWarnings(header, body$1)); + var items$1 = Emacs__Parser2$AgdaModeVscode.render(Emacs__Parser2$AgdaModeVscode.parseAllGoalsWarnings(header, body$1)); return State__View$AgdaModeVscode.Panel.display(state, { TAG: 0, _0: header, @@ -112,7 +112,7 @@ function handle(state, x) { [Symbol.for("name")]: "Plain" }, items$2); case /* Error */7 : - var items$3 = Emacs__Parser2$AgdaModeVscode.parseError(x._0); + var items$3 = Emacs__Parser2$AgdaModeVscode.render(Emacs__Parser2$AgdaModeVscode.parseError(x._0)); return State__View$AgdaModeVscode.Panel.display(state, { TAG: 3, _0: "Error", @@ -161,7 +161,7 @@ function handle(state, x) { [Symbol.for("name")]: "Plain" }, items$9); case /* GoalType */14 : - var items$10 = Emacs__Parser2$AgdaModeVscode.parseGoalType(x._0); + var items$10 = Emacs__Parser2$AgdaModeVscode.render(Emacs__Parser2$AgdaModeVscode.parseGoalType(x._0)); return State__View$AgdaModeVscode.Panel.display(state, { TAG: 0, _0: "Goal and Context", diff --git a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js index 11ca317e..9f7a002c 100644 --- a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js +++ b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js @@ -75,52 +75,35 @@ function parseError(raw) { return Js_string.match_(partial_arg, param); }))); }; - var dictionary; - if (hasBothErrorsAndWarnings) { - var isWarning = function (line) { - return Belt_Option.isSome(Js_string.match_(/^\u2014{4} Warning\(s\)/, line)); - }; - var predicate = function (param) { - if (param[1] === 0) { - return "errors"; - } else if (isWarning(param[0])) { - return "warnings"; - } else { - return ; - } - }; - dictionary = Emacs__Parser$AgdaModeVscode.Dict.update(Emacs__Parser$AgdaModeVscode.Dict.update(Emacs__Parser$AgdaModeVscode.Dict.partite(lines, predicate), "errors", (function (xs) { - return [xs.slice(1).join("\n")]; - })), "warnings", (function (xs) { - return Belt_Array.map(Emacs__Parser$AgdaModeVscode.Array_.mergeWithNext(Emacs__Parser$AgdaModeVscode.Array_.partite(xs.slice(1), markWarningStart), glueBack), (function (param) { - return Js_array.joinWith("\n", param); - })); - })); - } else { - dictionary = Emacs__Parser$AgdaModeVscode.Dict.update(Emacs__Parser$AgdaModeVscode.Dict.partite(lines, (function (param) { - if (param[1] === 0) { - return "errors"; - } - - })), "errors", (function (xs) { - return [xs.join("\n")]; - })); + if (!hasBothErrorsAndWarnings) { + return Emacs__Parser$AgdaModeVscode.Dict.update(Emacs__Parser$AgdaModeVscode.Dict.partite(lines, (function (param) { + if (param[1] === 0) { + return "errors"; + } + + })), "errors", (function (xs) { + return [xs.join("\n")]; + })); } - return Js_array.concatMany(Belt_Array.map(Js_dict.entries(dictionary), (function (param) { - var lines = param[1]; - switch (param[0]) { - case "errors" : - return Belt_Array.map(lines, (function (line) { - return Item$AgdaModeVscode.error(RichText$AgdaModeVscode.parse(line), undefined); - })); - case "warnings" : - return Belt_Array.map(lines, (function (line) { - return Item$AgdaModeVscode.warning(RichText$AgdaModeVscode.parse(line), undefined); - })); - default: - return []; - } - })), []); + var isWarning = function (line) { + return Belt_Option.isSome(Js_string.match_(/^\u2014{4} Warning\(s\)/, line)); + }; + var predicate = function (param) { + if (param[1] === 0) { + return "errors"; + } else if (isWarning(param[0])) { + return "warnings"; + } else { + return ; + } + }; + return Emacs__Parser$AgdaModeVscode.Dict.update(Emacs__Parser$AgdaModeVscode.Dict.update(Emacs__Parser$AgdaModeVscode.Dict.partite(lines, predicate), "errors", (function (xs) { + return [xs.slice(1).join("\n")]; + })), "warnings", (function (xs) { + return Belt_Array.map(Emacs__Parser$AgdaModeVscode.Array_.mergeWithNext(Emacs__Parser$AgdaModeVscode.Array_.partite(xs.slice(1), markWarningStart), glueBack), (function (param) { + return Js_array.joinWith("\n", param); + })); + })); } function parseGoalType(raw) { @@ -162,10 +145,17 @@ function parseGoalType(raw) { })); }; var lines = Js_string.split("\n", raw); - var dictionary = partiteMetas(removeDelimeter(partiteGoalTypeContext(lines))); + return partiteMetas(removeDelimeter(partiteGoalTypeContext(lines))); +} + +function render(dictionary) { return Js_array.concatMany(Belt_Array.map(Js_dict.entries(dictionary), (function (param) { var lines = param[1]; switch (param[0]) { + case "errors" : + return Belt_Array.map(lines, (function (line) { + return Item$AgdaModeVscode.error(RichText$AgdaModeVscode.parse(line), undefined); + })); case "goal" : return Belt_Option.mapWithDefault(Agda$AgdaModeVscode.Expr.parse(Js_string.sliceToEnd(5, Js_array.joinWith("\n", lines))), [], (function (expr) { return [{ @@ -208,6 +198,10 @@ function parseGoalType(raw) { })), (function (output) { return Agda$AgdaModeVscode.Output.renderItem(output); })); + case "warnings" : + return Belt_Array.map(lines, (function (line) { + return Item$AgdaModeVscode.warning(RichText$AgdaModeVscode.parse(line), undefined); + })); default: return []; } @@ -278,42 +272,6 @@ function parseAllGoalsWarnings(title, body) { return partiteWarningsOrErrors(partiteWarningsOrErrors((console.log(body), console.log(x), x), "warnings"), "errors"); } -function renderAllGoalsWarnings(dictionary) { - return Js_array.concatMany(Belt_Array.map(Js_dict.entries(dictionary), (function (param) { - var lines = param[1]; - switch (param[0]) { - case "errors" : - return Belt_Array.map(lines, (function (line) { - return Item$AgdaModeVscode.error(RichText$AgdaModeVscode.parse(line), undefined); - })); - case "hiddenMetas" : - return Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(lines, Agda$AgdaModeVscode.Output.parseOutputWithLocation), (function (x) { - return x; - })), (function (output) { - return Agda$AgdaModeVscode.Output.renderItem(output); - })); - case "interactionMetas" : - return Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(lines, Agda$AgdaModeVscode.Output.parseOutputWithoutLocation), (function (x) { - return x; - })), (function (output) { - return Agda$AgdaModeVscode.Output.renderItem(output); - })); - case "metas" : - return Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(lines, Agda$AgdaModeVscode.Output.parse), (function (x) { - return x; - })), (function (output) { - return Agda$AgdaModeVscode.Output.renderItem(output); - })); - case "warnings" : - return Belt_Array.map(lines, (function (line) { - return Item$AgdaModeVscode.warning(RichText$AgdaModeVscode.parse(line), undefined); - })); - default: - return []; - } - })), []); -} - function parseOutputs(raw) { var lines = Emacs__Parser$AgdaModeVscode.unindent(Js_string.split("\n", raw)); return Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(lines, Agda$AgdaModeVscode.Output.parse), (function (x) { @@ -381,8 +339,8 @@ exports.partiteMetas = partiteMetas; exports.partiteWarningsOrErrors = partiteWarningsOrErrors; exports.parseError = parseError; exports.parseGoalType = parseGoalType; +exports.render = render; exports.parseAllGoalsWarnings = parseAllGoalsWarnings; -exports.renderAllGoalsWarnings = renderAllGoalsWarnings; exports.parseOutputs = parseOutputs; exports.parseTextWithLocation = parseTextWithLocation; exports.parseSearchAbout = parseSearchAbout; diff --git a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js index adc179f6..0c7fe79a 100644 --- a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js @@ -4,91 +4,50 @@ var Js_dict = require("rescript/lib/js/js_dict.js"); var Mocha$BsMocha = require("bs-mocha/lib/js/src/Mocha.bs.js"); var Assert$BsMocha = require("bs-mocha/lib/js/src/Assert.bs.js"); -var RichText$AgdaModeVscode = require("../../../src/View/Component/RichText.bs.js"); var Emacs__Parser2$AgdaModeVscode = require("../../../src/View/Panel/Emacs/Emacs__Parser2.bs.js"); Mocha$BsMocha.describe("when running Emacs__Parser2.parseGoalType")(undefined, undefined, undefined, (function (param) { Mocha$BsMocha.it("should parse goal only")(undefined, undefined, undefined, (function (param) { var actual = Emacs__Parser2$AgdaModeVscode.parseGoalType("Goal: ℕ\n————————————————————————————————————————————————————————————"); - var expected = [{ - TAG: 0, - _0: "Goal", - _1: "special", - _2: RichText$AgdaModeVscode.string("ℕ"), - _3: undefined, - _4: undefined, - [Symbol.for("name")]: "Labeled" - }]; + var expected = Js_dict.fromArray([[ + "goal", + ["Goal: ℕ"] + ]]); Assert$BsMocha.deep_equal(undefined, actual, expected); })); Mocha$BsMocha.it("should parse goal + have")(undefined, undefined, undefined, (function (param) { var actual = Emacs__Parser2$AgdaModeVscode.parseGoalType("Goal: ℕ\nHave: ℕ\n————————————————————————————————————————————————————————————"); - var expected = [ - { - TAG: 0, - _0: "Goal", - _1: "special", - _2: RichText$AgdaModeVscode.string("ℕ"), - _3: undefined, - _4: undefined, - [Symbol.for("name")]: "Labeled" - }, - { - TAG: 0, - _0: "Have", - _1: "special", - _2: RichText$AgdaModeVscode.string("ℕ"), - _3: undefined, - _4: undefined, - [Symbol.for("name")]: "Labeled" - } - ]; + var expected = Js_dict.fromArray([ + [ + "goal", + ["Goal: ℕ"] + ], + [ + "have", + ["Have: ℕ"] + ] + ]); Assert$BsMocha.deep_equal(undefined, actual, expected); })); Mocha$BsMocha.it("should parse goal + have + context")(undefined, undefined, undefined, (function (param) { var actual = Emacs__Parser2$AgdaModeVscode.parseGoalType("Goal: ℕ\nHave: ℕ\n————————————————————————————————————————————————————————————\ny : ℕ\nx : ℕ"); - var expected = [ - { - TAG: 0, - _0: "Goal", - _1: "special", - _2: RichText$AgdaModeVscode.string("ℕ"), - _3: undefined, - _4: undefined, - [Symbol.for("name")]: "Labeled" - }, - { - TAG: 0, - _0: "Have", - _1: "special", - _2: RichText$AgdaModeVscode.string("ℕ"), - _3: undefined, - _4: undefined, - [Symbol.for("name")]: "Labeled" - }, - { - TAG: 1, - _0: RichText$AgdaModeVscode.concatMany([ - RichText$AgdaModeVscode.string("y"), - RichText$AgdaModeVscode.string(" : "), - RichText$AgdaModeVscode.string("ℕ") - ]), - _1: undefined, - _2: undefined, - [Symbol.for("name")]: "Unlabeled" - }, - { - TAG: 1, - _0: RichText$AgdaModeVscode.concatMany([ - RichText$AgdaModeVscode.string("x"), - RichText$AgdaModeVscode.string(" : "), - RichText$AgdaModeVscode.string("ℕ") - ]), - _1: undefined, - _2: undefined, - [Symbol.for("name")]: "Unlabeled" - } - ]; + var expected = Js_dict.fromArray([ + [ + "goal", + ["Goal: ℕ"] + ], + [ + "have", + ["Have: ℕ"] + ], + [ + "interactionMetas", + [ + "y : ℕ", + "x : ℕ" + ] + ] + ]); Assert$BsMocha.deep_equal(undefined, actual, expected); })); })); @@ -138,124 +97,27 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseAllGoalsWarnings")(unde Mocha$BsMocha.describe("when running Emacs__Parser2.parseError")(undefined, undefined, undefined, (function (param) { Mocha$BsMocha.it("should parse an error only")(undefined, undefined, undefined, (function (param) { var actual = Emacs__Parser2$AgdaModeVscode.parseError("/Users/banacorn/agda/examples/A.agda:15,1-2\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8"); - var expected = [{ - TAG: 0, - _0: "Error", - _1: "error", - _2: RichText$AgdaModeVscode.concatMany([ - RichText$AgdaModeVscode.string(""), - RichText$AgdaModeVscode.srcLoc({ - _0: "/Users/banacorn/agda/examples/A.agda", - _1: [{ - start: { - line: 15, - col: 1, - pos: 0 - }, - end_: { - line: 15, - col: 2, - pos: 0 - } - }], - [Symbol.for("name")]: "Range" - }), - RichText$AgdaModeVscode.string("\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8") - ]), - _3: undefined, - _4: undefined, - [Symbol.for("name")]: "Labeled" - }]; + var expected = Js_dict.fromArray([[ + "errors", + ["/Users/banacorn/agda/examples/A.agda:15,1-2\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8"] + ]]); Assert$BsMocha.deep_equal(undefined, actual, expected); })); - Mocha$BsMocha.it("should parse an error + warnings")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it_only("should parse an error + warnings")(undefined, undefined, undefined, (function (param) { var actual = Emacs__Parser2$AgdaModeVscode.parseError("———— Error —————————————————————————————————————————————————\n/Users/banacorn/agda/examples/A.agda:15,1-2\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8\n\n———— Warning(s) ————————————————————————————————————————————\n/Users/banacorn/agda/examples/A.agda:17,1-8\nThe following names are declared but not accompanied by a\ndefinition: boo\n/Users/banacorn/agda/examples/A.agda:9,1-10\nUnreachable clause\nwhen checking the definition of _+_"); - var expected = [ - { - TAG: 0, - _0: "Error", - _1: "error", - _2: RichText$AgdaModeVscode.concatMany([ - RichText$AgdaModeVscode.string(""), - RichText$AgdaModeVscode.srcLoc({ - _0: "/Users/banacorn/agda/examples/A.agda", - _1: [{ - start: { - line: 15, - col: 1, - pos: 0 - }, - end_: { - line: 15, - col: 2, - pos: 0 - } - }], - [Symbol.for("name")]: "Range" - }), - RichText$AgdaModeVscode.string("\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8") - ]), - _3: undefined, - _4: undefined, - [Symbol.for("name")]: "Labeled" - }, - { - TAG: 0, - _0: "Warning", - _1: "warning", - _2: RichText$AgdaModeVscode.concatMany([ - RichText$AgdaModeVscode.string(""), - RichText$AgdaModeVscode.srcLoc({ - _0: "/Users/banacorn/agda/examples/A.agda", - _1: [{ - start: { - line: 9, - col: 1, - pos: 0 - }, - end_: { - line: 9, - col: 10, - pos: 0 - } - }], - [Symbol.for("name")]: "Range" - }), - RichText$AgdaModeVscode.string("\nUnreachable clause\nwhen checking the definition of _+_") - ]), - _3: undefined, - _4: undefined, - [Symbol.for("name")]: "Labeled" - }, - { - TAG: 0, - _0: "Warning", - _1: "warning", - _2: RichText$AgdaModeVscode.concatMany([ - RichText$AgdaModeVscode.string(""), - RichText$AgdaModeVscode.srcLoc({ - _0: "/Users/banacorn/agda/examples/A.agda", - _1: [{ - start: { - line: 17, - col: 1, - pos: 0 - }, - end_: { - line: 17, - col: 8, - pos: 0 - } - }], - [Symbol.for("name")]: "Range" - }), - RichText$AgdaModeVscode.string("\nThe following names are declared but not accompanied by a\ndefinition: boo") - ]), - _3: undefined, - _4: undefined, - [Symbol.for("name")]: "Labeled" - } - ]; + var expected = Js_dict.fromArray([ + [ + "errors", + ["/Users/banacorn/agda/examples/A.agda:15,1-2\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8"] + ], + [ + "warnings", + [ + "/Users/banacorn/agda/examples/A.agda:9,1-10\nUnreachable clause\nwhen checking the definition of _+_", + "/Users/banacorn/agda/examples/A.agda:17,1-8\nThe following names are declared but not accompanied by a\ndefinition: boo" + ] + ] + ]); Assert$BsMocha.deep_equal(undefined, actual, expected); })); })); diff --git a/src/State/State__Response.res b/src/State/State__Response.res index ebe5a26d..24c56900 100644 --- a/src/State/State__Response.res +++ b/src/State/State__Response.res @@ -26,7 +26,8 @@ module DisplayInfo = { State.View.Panel.display(state, Plain("Constraints"), items) | AllGoalsWarnings(header, "nil") => State.View.Panel.display(state, Success(header), []) | AllGoalsWarnings(header, body) => - let items = Emacs__Parser2.parseAllGoalsWarnings(header, body)->Emacs__Parser2.renderAllGoalsWarnings + let items = + Emacs__Parser2.parseAllGoalsWarnings(header, body)->Emacs__Parser2.render State.View.Panel.display(state, Plain(header), items) | AllGoalsWarningsLSP(header, goals, metas, warnings, errors) => let errors = errors->Array.map(raw => Item.error(RichText.string(raw), Some(raw))) @@ -40,7 +41,7 @@ module DisplayInfo = { let items = Emacs__Parser2.parseTextWithLocation(body) State.View.Panel.display(state, Plain("Time"), items) | Error(body) => - let items = Emacs__Parser2.parseError(body) + let items = Emacs__Parser2.parseError(body)->Emacs__Parser2.render State.View.Panel.display(state, Error("Error"), items) | Intro(body) => let items = Emacs__Parser2.parseTextWithLocation(body) @@ -61,7 +62,7 @@ module DisplayInfo = { let items = Emacs__Parser2.parseTextWithLocation(body) State.View.Panel.display(state, Plain("Normal form"), items) | GoalType(body) => - let items = Emacs__Parser2.parseGoalType(body) + let items = Emacs__Parser2.parseGoalType(body)->Emacs__Parser2.render State.View.Panel.display(state, Plain("Goal and Context"), items) | CurrentGoalLSP(item) => State.View.Panel.display(state, Plain("Current Goal"), [item]) | CurrentGoal(payload) => @@ -205,7 +206,11 @@ let rec handle = ( | DisplayInfo(info) => DisplayInfo.handle(state, info)->Promise.map(() => Ok()) | RunningInfo(1, message) => let message = removeNewlines(message) - State.View.Panel.displayInAppendMode(state, Plain("Type-checking"), [Item.plainText(message)])->Promise.map(() => Ok()) + State.View.Panel.displayInAppendMode( + state, + Plain("Type-checking"), + [Item.plainText(message)], + )->Promise.map(() => Ok()) | RunningInfo(verbosity, message) => let message = removeNewlines(message) state.runningInfoLog->Js.Array2.push((verbosity, message))->ignore diff --git a/src/View/Panel/Emacs/Emacs__Parser2.res b/src/View/Panel/Emacs/Emacs__Parser2.res index 9d27793a..3decea64 100644 --- a/src/View/Panel/Emacs/Emacs__Parser2.res +++ b/src/View/Panel/Emacs/Emacs__Parser2.res @@ -2,7 +2,8 @@ open Emacs__Parser open Belt -let partiteMetas = xs => xs->Dict.split("metas", (rawMetas: array) => { +let partiteMetas = xs => + xs->Dict.split("metas", (rawMetas: array) => { let metas = unindent(rawMetas) let indexOfHiddenMetas = metas->Array.getIndexBy(s => Agda.Output.parseOutputWithLocation(s)->Option.isSome) @@ -42,7 +43,7 @@ let partiteWarningsOrErrors = (xs, key) => ->Array.map(Js.Array.joinWith("\n")) }) -let parseError: string => array = raw => { +let parseError: string => Js.Dict.t> = raw => { // if the first line has delimeter, // then the message has both an error and possibly many warnings // all warnings start with a range @@ -60,7 +61,7 @@ let parseError: string => array = raw => { let glueBack = xs => xs[Array.length(xs) - 1]->Option.flatMap(Js.String.match_(%re("/at$/")))->Option.isSome - let dictionary = if hasBothErrorsAndWarnings { + if hasBothErrorsAndWarnings { let isWarning = line => Js.String.match_(%re("/^\u2014{4} Warning\(s\)/"), line)->Option.isSome let predicate = ((line, i)) => { if i === 0 { @@ -91,20 +92,9 @@ let parseError: string => array = raw => { // unlines ->Emacs__Parser.Dict.update("errors", xs => [xs->Js.Array2.joinWith("\n")]) } - // convert entries in the dictionary to Items for rendering - dictionary - ->Js.Dict.entries - ->Array.map(((key, lines)) => - switch key { - | "warnings" => lines->Array.map(line => Item.warning(RichText.parse(line), None)) - | "errors" => lines->Array.map(line => Item.error(RichText.parse(line), None)) - | _ => [] - } - ) - ->Js.Array.concatMany([]) } -let parseGoalType: string => array = raw => { +let parseGoalType: string => Js.Dict.t> = raw => { let markGoal = ((line, _)) => Js.String.match_(%re("/^Goal:/"), line)->Option.map(_ => "goal") let markHave = ((line, _)) => Js.String.match_(%re("/^Have:/"), line)->Option.map(_ => "have") let markMetas = ((line, _)) => @@ -126,7 +116,11 @@ let parseGoalType: string => array = raw => { ) let removeDelimeter = xs => xs->Emacs__Parser.Dict.update("metas", Js.Array.sliceFrom(1)) let lines = Js.String.split("\n", raw) - let dictionary = lines->partiteGoalTypeContext->removeDelimeter->partiteMetas + lines->partiteGoalTypeContext->removeDelimeter->partiteMetas +} + +// convert entries in the dictionary to Items for rendering +let render: Js.Dict.t> => array = dictionary => { // convert entries in the dictionary to Items for render dictionary ->Js.Dict.entries @@ -146,14 +140,14 @@ let parseGoalType: string => array = raw => { ->Option.mapWithDefault([], expr => [ Item.Labeled("Have", "special", Agda.Expr.render(expr), None, None), ]) - | "interactionMetas" => + | "metas" => lines - ->Array.map(Agda.Output.parseOutputWithoutLocation) + ->Array.map(Agda.Output.parse) ->Array.keepMap(x => x) ->Array.map(output => Agda.Output.renderItem(output)) - | "metas" => + | "interactionMetas" => lines - ->Array.map(Agda.Output.parse) + ->Array.map(Agda.Output.parseOutputWithoutLocation) ->Array.keepMap(x => x) ->Array.map(output => Agda.Output.renderItem(output)) | "hiddenMetas" => @@ -161,6 +155,8 @@ let parseGoalType: string => array = raw => { ->Array.map(Agda.Output.parseOutputWithLocation) ->Array.keepMap(x => x) ->Array.map(output => Agda.Output.renderItem(output)) + | "warnings" => lines->Array.map(line => Item.warning(RichText.parse(line), None)) + | "errors" => lines->Array.map(line => Item.error(RichText.parse(line), None)) | _ => [] } ) @@ -230,35 +226,6 @@ let parseAllGoalsWarnings = (title, body): Js.Dict.t> => { ->partiteWarningsOrErrors("errors") } -let renderAllGoalsWarnings = dictionary => { - // convert entries in the dictionary to Items for rendering - dictionary - ->Js.Dict.entries - ->Array.map(((key, lines)) => - switch key { - | "warnings" => lines->Array.map(line => Item.warning(RichText.parse(line), None)) - | "errors" => lines->Array.map(line => Item.error(RichText.parse(line), None)) - | "interactionMetas" => - lines - ->Array.map(Agda.Output.parseOutputWithoutLocation) - ->Array.keepMap(x => x) - ->Array.map(output => Agda.Output.renderItem(output)) - | "metas" => - lines - ->Array.map(Agda.Output.parse) - ->Array.keepMap(x => x) - ->Array.map(output => Agda.Output.renderItem(output)) - | "hiddenMetas" => - lines - ->Array.map(Agda.Output.parseOutputWithLocation) - ->Array.keepMap(x => x) - ->Array.map(output => Agda.Output.renderItem(output)) - | _ => [] - } - ) - ->Js.Array.concatMany([]) -} - let parseOutputs: string => array = raw => { let lines = Js.String.split("\n", raw)->Emacs__Parser.unindent lines diff --git a/test/tests/Parser/Test__Parser__Emacs2.res b/test/tests/Parser/Test__Parser__Emacs2.res index ae48c81a..02e293e8 100644 --- a/test/tests/Parser/Test__Parser__Emacs2.res +++ b/test/tests/Parser/Test__Parser__Emacs2.res @@ -8,7 +8,7 @@ describe("when running Emacs__Parser2.parseGoalType", () => { let raw = `Goal: ℕ ————————————————————————————————————————————————————————————` let actual = Emacs__Parser2.parseGoalType(raw) - let expected = [Item.Labeled("Goal", "special", RichText.string("ℕ"), None, None)] + let expected = Js.Dict.fromArray([("goal", ["Goal: ℕ"])]) Assert.deep_equal(actual, expected) }) @@ -17,10 +17,7 @@ describe("when running Emacs__Parser2.parseGoalType", () => { Have: ℕ ————————————————————————————————————————————————————————————` let actual = Emacs__Parser2.parseGoalType(raw) - let expected = [ - Item.Labeled("Goal", "special", RichText.string("ℕ"), None, None), - Item.Labeled("Have", "special", RichText.string("ℕ"), None, None), - ] + let expected = Js.Dict.fromArray([("goal", ["Goal: ℕ"]), ("have", ["Have: ℕ"])]) Assert.deep_equal(actual, expected) }) @@ -31,20 +28,11 @@ Have: ℕ y : ℕ x : ℕ` let actual = Emacs__Parser2.parseGoalType(raw) - let expected = [ - Item.Labeled("Goal", "special", RichText.string("ℕ"), None, None), - Item.Labeled("Have", "special", RichText.string("ℕ"), None, None), - Item.Unlabeled( - RichText.concatMany([RichText.string("y"), RichText.string(" : "), RichText.string("ℕ")]), - None, - None, - ), - Item.Unlabeled( - RichText.concatMany([RichText.string("x"), RichText.string(" : "), RichText.string("ℕ")]), - None, - None, - ), - ] + let expected = Js.Dict.fromArray([ + ("goal", ["Goal: ℕ"]), + ("have", ["Have: ℕ"]), + ("interactionMetas", ["y : ℕ", "x : ℕ"]), + ]) Assert.deep_equal(actual, expected) }) }) @@ -104,34 +92,20 @@ The right-hand side can only be omitted if there is an absurd pattern, () or {}, in the left-hand side. when checking that the clause a has type _8` let actual = Emacs__Parser2.parseError(raw) - let expected = [ - Item.Labeled( - "Error", - "error", - RichText.concatMany([ - RichText.string(""), - RichText.srcLoc( - Common.AgdaRange.Range( - Some("/Users/banacorn/agda/examples/A.agda"), - [ - { - start: {col: 1, line: 15, pos: 0}, - end_: {col: 2, line: 15, pos: 0}, - }, - ], - ), - ), - RichText.string( - "\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8", - ), - ]), - None, - None, + let expected = Js.Dict.fromArray([ + ( + "errors", + [ + `/Users/banacorn/agda/examples/A.agda:15,1-2 +The right-hand side can only be omitted if there is an absurd +pattern, () or {}, in the left-hand side. +when checking that the clause a has type _8`, + ], ), - ] + ]) Assert.deep_equal(actual, expected) }) - it("should parse an error + warnings", () => { + it_only("should parse an error + warnings", () => { let raw = `———— Error ————————————————————————————————————————————————— /Users/banacorn/agda/examples/A.agda:15,1-2 The right-hand side can only be omitted if there is an absurd @@ -146,75 +120,28 @@ definition: boo Unreachable clause when checking the definition of _+_` let actual = Emacs__Parser2.parseError(raw) - let expected = [ - Item.Labeled( - "Error", - "error", - RichText.concatMany([ - RichText.string(""), - RichText.srcLoc( - Common.AgdaRange.Range( - Some("/Users/banacorn/agda/examples/A.agda"), - [ - { - start: {col: 1, line: 15, pos: 0}, - end_: {col: 2, line: 15, pos: 0}, - }, - ], - ), - ), - RichText.string( - "\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8", - ), - ]), - None, - None, - ), - Item.Labeled( - "Warning", - "warning", - RichText.concatMany([ - RichText.string(""), - RichText.srcLoc( - Common.AgdaRange.Range( - Some("/Users/banacorn/agda/examples/A.agda"), - [ - { - start: {col: 1, line: 9, pos: 0}, - end_: {col: 10, line: 9, pos: 0}, - }, - ], - ), - ), - RichText.string("\nUnreachable clause\nwhen checking the definition of _+_"), - ]), - None, - None, + let expected = Js.Dict.fromArray([ + ( + "errors", + [ + `/Users/banacorn/agda/examples/A.agda:15,1-2 +The right-hand side can only be omitted if there is an absurd +pattern, () or {}, in the left-hand side. +when checking that the clause a has type _8`, + ], ), - Item.Labeled( - "Warning", - "warning", - RichText.concatMany([ - RichText.string(""), - RichText.srcLoc( - Common.AgdaRange.Range( - Some("/Users/banacorn/agda/examples/A.agda"), - [ - { - start: {col: 1, line: 17, pos: 0}, - end_: {col: 8, line: 17, pos: 0}, - }, - ], - ), - ), - RichText.string( - "\nThe following names are declared but not accompanied by a\ndefinition: boo", - ), - ]), - None, - None, + ( + "warnings", + [ + `/Users/banacorn/agda/examples/A.agda:9,1-10 +Unreachable clause +when checking the definition of _+_`, + `/Users/banacorn/agda/examples/A.agda:17,1-8 +The following names are declared but not accompanied by a +definition: boo`, + ], ), - ] + ]) Assert.deep_equal(actual, expected) }) }) From 5ed58213dab1f625abc158435e5bb07b17c03b29 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Thu, 7 Dec 2023 11:18:54 +0800 Subject: [PATCH 054/109] [ fix #125 ] Modal bindings are not shown in the goal context --- lib/js/src/State/State__Response.bs.js | 14 ++++---- .../src/View/Panel/Emacs/Emacs__Parser.bs.js | 35 ++++++------------ .../src/View/Panel/Emacs/Emacs__Parser2.bs.js | 17 +++++---- .../tests/Parser/Test__Parser__Emacs2.bs.js | 2 +- lib/js/test/tests/Test__Tokens.bs.js | 2 +- src/State/State__Response.res | 17 +++++---- src/View/Panel/Emacs/Emacs__Parser.res | 36 +++++-------------- src/View/Panel/Emacs/Emacs__Parser2.res | 15 +++----- test/tests/Parser/Test__Parser__Emacs2.res | 2 +- test/tests/Test__Tokens.res | 2 +- 10 files changed, 51 insertions(+), 91 deletions(-) diff --git a/lib/js/src/State/State__Response.bs.js b/lib/js/src/State/State__Response.bs.js index 85be7e60..f5a6645b 100644 --- a/lib/js/src/State/State__Response.bs.js +++ b/lib/js/src/State/State__Response.bs.js @@ -105,7 +105,7 @@ function handle(state, x) { warnings$1 ])); case /* Time */6 : - var items$2 = Emacs__Parser2$AgdaModeVscode.parseTextWithLocation(x._0); + var items$2 = Emacs__Parser2$AgdaModeVscode.parseAndRenderTextWithLocation(x._0); return State__View$AgdaModeVscode.Panel.display(state, { TAG: 0, _0: "Time", @@ -119,42 +119,42 @@ function handle(state, x) { [Symbol.for("name")]: "Error" }, items$3); case /* Intro */8 : - var items$4 = Emacs__Parser2$AgdaModeVscode.parseTextWithLocation(x._0); + var items$4 = Emacs__Parser2$AgdaModeVscode.parseAndRenderTextWithLocation(x._0); return State__View$AgdaModeVscode.Panel.display(state, { TAG: 0, _0: "Intro", [Symbol.for("name")]: "Plain" }, items$4); case /* Auto */9 : - var items$5 = Emacs__Parser2$AgdaModeVscode.parseTextWithLocation(x._0); + var items$5 = Emacs__Parser2$AgdaModeVscode.parseAndRenderTextWithLocation(x._0); return State__View$AgdaModeVscode.Panel.display(state, { TAG: 0, _0: "Auto", [Symbol.for("name")]: "Plain" }, items$5); case /* ModuleContents */10 : - var items$6 = Emacs__Parser2$AgdaModeVscode.parseTextWithLocation(x._0); + var items$6 = Emacs__Parser2$AgdaModeVscode.parseAndRenderTextWithLocation(x._0); return State__View$AgdaModeVscode.Panel.display(state, { TAG: 0, _0: "Module Contents", [Symbol.for("name")]: "Plain" }, items$6); case /* SearchAbout */11 : - var items$7 = Emacs__Parser2$AgdaModeVscode.parseSearchAbout(x._0); + var items$7 = Emacs__Parser2$AgdaModeVscode.parseAndRenderSearchAbout(x._0); return State__View$AgdaModeVscode.Panel.display(state, { TAG: 0, _0: "Search About", [Symbol.for("name")]: "Plain" }, items$7); case /* WhyInScope */12 : - var items$8 = Emacs__Parser2$AgdaModeVscode.parseTextWithLocation(x._0); + var items$8 = Emacs__Parser2$AgdaModeVscode.parseAndRenderTextWithLocation(x._0); return State__View$AgdaModeVscode.Panel.display(state, { TAG: 0, _0: "Scope info", [Symbol.for("name")]: "Plain" }, items$8); case /* NormalForm */13 : - var items$9 = Emacs__Parser2$AgdaModeVscode.parseTextWithLocation(x._0); + var items$9 = Emacs__Parser2$AgdaModeVscode.parseAndRenderTextWithLocation(x._0); return State__View$AgdaModeVscode.Panel.display(state, { TAG: 0, _0: "Normal form", diff --git a/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js b/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js index 59940a61..bb141127 100644 --- a/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js +++ b/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js @@ -141,34 +141,19 @@ var Array_ = { mergeWithNext: mergeWithNext }; -function unindent(lines) { +function aggregateLines(lines) { + var newlineRegEx = function (line) { + return /^\S/.test(line); + }; var newLineIndices = Belt_Array.map(Belt_Array.keep(Belt_Array.mapWithIndex(lines, (function (index, line) { return [ - line, - Belt_Array.get(lines, index + 1 | 0), - index + index, + newlineRegEx(line) ]; })), (function (param) { - var line = param[0]; - var nextLine = param[1]; - var sort = /^Sort \S*/; - var delimeter = /^\u2014{4}/g; - var completeJudgement = /^(?:(?:[^\(\{\s]+\s+\:=?)|Have\:|Goal\:)\s* \S*/; - var reallyLongTermIdentifier = /^\S+$/; - var restOfTheJudgement = /^\s*\:=?\s* \S*/; - var isDelimeter = delimeter.test(line); - var isSort = sort.test(line); - var isCompleteJudgement = completeJudgement.test(line); - var isReallyLongTermIdentifier = reallyLongTermIdentifier.test(line) && Belt_Option.mapWithDefault(nextLine, false, (function (line) { - return restOfTheJudgement.test(line); - })); - if (isDelimeter || isSort || isCompleteJudgement) { - return true; - } else { - return isReallyLongTermIdentifier; - } - })), (function (param) { - return param[2]; + return param[1]; + })), (function (prim) { + return prim[0]; })); return Belt_Array.map(Belt_Array.mapWithIndex(newLineIndices, (function (i, index) { var n = Belt_Array.get(newLineIndices, i + 1 | 0); @@ -222,7 +207,7 @@ function at(captured, i, parser) { exports.Dict = Dict; exports.Array_ = Array_; -exports.unindent = unindent; +exports.aggregateLines = aggregateLines; exports.captures = captures; exports.choice = choice; exports.at = at; diff --git a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js index 9f7a002c..fc90ccdf 100644 --- a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js +++ b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js @@ -15,7 +15,7 @@ var Emacs__Parser$AgdaModeVscode = require("./Emacs__Parser.bs.js"); function partiteMetas(xs) { return Emacs__Parser$AgdaModeVscode.Dict.split(xs, "metas", (function (rawMetas) { - var metas = Emacs__Parser$AgdaModeVscode.unindent(rawMetas); + var metas = Emacs__Parser$AgdaModeVscode.aggregateLines(rawMetas); var indexOfHiddenMetas = Belt_Array.getIndexBy(metas, (function (s) { return Belt_Option.isSome(Curry._1(Agda$AgdaModeVscode.Output.parseOutputWithLocation, s)); })); @@ -268,12 +268,11 @@ function parseAllGoalsWarnings(title, body) { })); }; - var x = partiteMetas(partiteAllGoalsWarnings(title, body)); - return partiteWarningsOrErrors(partiteWarningsOrErrors((console.log(body), console.log(x), x), "warnings"), "errors"); + return partiteWarningsOrErrors(partiteWarningsOrErrors(partiteMetas(partiteAllGoalsWarnings(title, body)), "warnings"), "errors"); } function parseOutputs(raw) { - var lines = Emacs__Parser$AgdaModeVscode.unindent(Js_string.split("\n", raw)); + var lines = Emacs__Parser$AgdaModeVscode.aggregateLines(Js_string.split("\n", raw)); return Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(lines, Agda$AgdaModeVscode.Output.parse), (function (x) { return x; })), (function (output) { @@ -281,7 +280,7 @@ function parseOutputs(raw) { })); } -function parseTextWithLocation(raw) { +function parseAndRenderTextWithLocation(raw) { return [{ TAG: 1, _0: RichText$AgdaModeVscode.parse(raw), @@ -291,9 +290,9 @@ function parseTextWithLocation(raw) { }]; } -function parseSearchAbout(raw) { +function parseAndRenderSearchAbout(raw) { var lines = Js_string.split("\n", raw); - var outputs = Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(Emacs__Parser$AgdaModeVscode.unindent(Belt_Array.map(Js_array.sliceFrom(1, lines), (function (param) { + var outputs = Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(Emacs__Parser$AgdaModeVscode.aggregateLines(Belt_Array.map(Js_array.sliceFrom(1, lines), (function (param) { return Js_string.sliceToEnd(2, param); }))), Agda$AgdaModeVscode.Output.parse), (function (x) { return x; @@ -342,6 +341,6 @@ exports.parseGoalType = parseGoalType; exports.render = render; exports.parseAllGoalsWarnings = parseAllGoalsWarnings; exports.parseOutputs = parseOutputs; -exports.parseTextWithLocation = parseTextWithLocation; -exports.parseSearchAbout = parseSearchAbout; +exports.parseAndRenderTextWithLocation = parseAndRenderTextWithLocation; +exports.parseAndRenderSearchAbout = parseAndRenderSearchAbout; /* Agda-AgdaModeVscode Not a pure module */ diff --git a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js index 0c7fe79a..ad3ac62b 100644 --- a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js @@ -103,7 +103,7 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseError")(undefined, unde ]]); Assert$BsMocha.deep_equal(undefined, actual, expected); })); - Mocha$BsMocha.it_only("should parse an error + warnings")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should parse an error + warnings")(undefined, undefined, undefined, (function (param) { var actual = Emacs__Parser2$AgdaModeVscode.parseError("———— Error —————————————————————————————————————————————————\n/Users/banacorn/agda/examples/A.agda:15,1-2\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8\n\n———— Warning(s) ————————————————————————————————————————————\n/Users/banacorn/agda/examples/A.agda:17,1-8\nThe following names are declared but not accompanied by a\ndefinition: boo\n/Users/banacorn/agda/examples/A.agda:9,1-10\nUnreachable clause\nwhen checking the definition of _+_"); var expected = Js_dict.fromArray([ [ diff --git a/lib/js/test/tests/Test__Tokens.bs.js b/lib/js/test/tests/Test__Tokens.bs.js index f3369413..333f82e5 100644 --- a/lib/js/test/tests/Test__Tokens.bs.js +++ b/lib/js/test/tests/Test__Tokens.bs.js @@ -31,7 +31,7 @@ Mocha$BsMocha.describe("Tokens")(10000, undefined, undefined, (function (param) "1:0-4 Token (28, 32) [Keyword]", "1:5-6 Token (33, 34) [Datatype] [src: 34]", "1:7-8 Token (35, 36) [Symbol]", - "1:9-12 Token (37, 40) [Primitive] [src: 326]", + "1:9-12 Token (37, 40) [Primitive] [src: 388]", "1:13-18 Token (41, 46) [Keyword]", "2:2-3 Token (49, 50) [ConstructorInductive] [src: 50]", "2:4-5 Token (51, 52) [Symbol]", diff --git a/src/State/State__Response.res b/src/State/State__Response.res index 24c56900..210fe07c 100644 --- a/src/State/State__Response.res +++ b/src/State/State__Response.res @@ -26,8 +26,7 @@ module DisplayInfo = { State.View.Panel.display(state, Plain("Constraints"), items) | AllGoalsWarnings(header, "nil") => State.View.Panel.display(state, Success(header), []) | AllGoalsWarnings(header, body) => - let items = - Emacs__Parser2.parseAllGoalsWarnings(header, body)->Emacs__Parser2.render + let items = Emacs__Parser2.parseAllGoalsWarnings(header, body)->Emacs__Parser2.render State.View.Panel.display(state, Plain(header), items) | AllGoalsWarningsLSP(header, goals, metas, warnings, errors) => let errors = errors->Array.map(raw => Item.error(RichText.string(raw), Some(raw))) @@ -38,28 +37,28 @@ module DisplayInfo = { Array.concatMany([goals, metas, errors, warnings]), ) | Time(body) => - let items = Emacs__Parser2.parseTextWithLocation(body) + let items = Emacs__Parser2.parseAndRenderTextWithLocation(body) State.View.Panel.display(state, Plain("Time"), items) | Error(body) => let items = Emacs__Parser2.parseError(body)->Emacs__Parser2.render State.View.Panel.display(state, Error("Error"), items) | Intro(body) => - let items = Emacs__Parser2.parseTextWithLocation(body) + let items = Emacs__Parser2.parseAndRenderTextWithLocation(body) State.View.Panel.display(state, Plain("Intro"), items) | Auto(body) => - let items = Emacs__Parser2.parseTextWithLocation(body) + let items = Emacs__Parser2.parseAndRenderTextWithLocation(body) State.View.Panel.display(state, Plain("Auto"), items) | ModuleContents(body) => - let items = Emacs__Parser2.parseTextWithLocation(body) + let items = Emacs__Parser2.parseAndRenderTextWithLocation(body) State.View.Panel.display(state, Plain("Module Contents"), items) | SearchAbout(body) => - let items = Emacs__Parser2.parseSearchAbout(body) + let items = Emacs__Parser2.parseAndRenderSearchAbout(body) State.View.Panel.display(state, Plain("Search About"), items) | WhyInScope(body) => - let items = Emacs__Parser2.parseTextWithLocation(body) + let items = Emacs__Parser2.parseAndRenderTextWithLocation(body) State.View.Panel.display(state, Plain("Scope info"), items) | NormalForm(body) => - let items = Emacs__Parser2.parseTextWithLocation(body) + let items = Emacs__Parser2.parseAndRenderTextWithLocation(body) State.View.Panel.display(state, Plain("Normal form"), items) | GoalType(body) => let items = Emacs__Parser2.parseGoalType(body)->Emacs__Parser2.render diff --git a/src/View/Panel/Emacs/Emacs__Parser.res b/src/View/Panel/Emacs/Emacs__Parser.res index 6b0a81d6..d58b4c71 100644 --- a/src/View/Panel/Emacs/Emacs__Parser.res +++ b/src/View/Panel/Emacs/Emacs__Parser.res @@ -75,35 +75,17 @@ module Array_ = { }) } -let unindent: array => array = lines => { - let isNewline = (line, nextLine) => { - let sort = %re("/^Sort \S*/") - let delimeter = %re("/^\u2014{4}/g") - /* banana : Banana */ - let completeJudgement = %re("/^(?:(?:[^\(\{\s]+\s+\:=?)|Have\:|Goal\:)\s* \S*/") - /* case when the term's name is too long, the rest of the judgement - would go to the next line, e.g: - banananananananananananananananana - : Banana - */ - let reallyLongTermIdentifier = %re("/^\S+$/") - let restOfTheJudgement = %re("/^\s*\:=?\s* \S*/") - - // predicates - let isDelimeter = Js.Re.test_(delimeter, line) - let isSort = Js.Re.test_(sort, line) - let isCompleteJudgement = Js.Re.test_(completeJudgement, line) - let isReallyLongTermIdentifier = - Js.Re.test_(reallyLongTermIdentifier, line) && - nextLine->Option.mapWithDefault(false, line => Js.Re.test_(restOfTheJudgement, line)) - - isDelimeter || isSort || isCompleteJudgement || isReallyLongTermIdentifier - } +// A meta may be split into multiple entries because it's too long +// this function glues them back together +let aggregateLines: array => array = lines => { + // A line is considered a new line if it starts with a non-whitespace character + // otherwise it's a continuation of the previous line + let newlineRegEx = line => Js.Re.test_(%re("/^\S/"), line) let newLineIndices: array = lines - ->Array.mapWithIndex((index, line) => (line, lines[index + 1], index)) - ->Array.keep(((line, nextLine, _)) => isNewline(line, nextLine)) - ->Array.map(((_, _, index)) => index) + ->Array.mapWithIndex((index, line) => (index, newlineRegEx(line))) + ->Array.keep(((_, isNewline)) => isNewline) + ->Array.map(fst) newLineIndices ->Array.mapWithIndex((i, index) => switch newLineIndices[i + 1] { diff --git a/src/View/Panel/Emacs/Emacs__Parser2.res b/src/View/Panel/Emacs/Emacs__Parser2.res index 3decea64..7a256d60 100644 --- a/src/View/Panel/Emacs/Emacs__Parser2.res +++ b/src/View/Panel/Emacs/Emacs__Parser2.res @@ -4,7 +4,7 @@ open Belt let partiteMetas = xs => xs->Dict.split("metas", (rawMetas: array) => { - let metas = unindent(rawMetas) + let metas = aggregateLines(rawMetas) let indexOfHiddenMetas = metas->Array.getIndexBy(s => Agda.Output.parseOutputWithLocation(s)->Option.isSome) metas->Dict.partite(((_, i)) => @@ -217,34 +217,29 @@ let parseAllGoalsWarnings = (title, body): Js.Dict.t> => { partiteAllGoalsWarnings(title, body) ->partiteMetas - ->(x => { - Js.log(body) - Js.log(x) - x - }) ->partiteWarningsOrErrors("warnings") ->partiteWarningsOrErrors("errors") } let parseOutputs: string => array = raw => { - let lines = Js.String.split("\n", raw)->Emacs__Parser.unindent + let lines = Js.String.split("\n", raw)->Emacs__Parser.aggregateLines lines ->Array.map(Agda.Output.parse) ->Array.keepMap(x => x) ->Array.map(output => Agda.Output.renderItem(output)) } -let parseTextWithLocation: string => array = raw => [ +let parseAndRenderTextWithLocation: string => array = raw => [ Item.Unlabeled(RichText.parse(raw), None, None), ] -let parseSearchAbout: string => array = raw => { +let parseAndRenderSearchAbout: string => array = raw => { let lines = Js.String.split("\n", raw) let outputs = lines ->Js.Array.sliceFrom(1, _) ->Array.map(Js.String.sliceToEnd(~from=2)) - ->Emacs__Parser.unindent + ->Emacs__Parser.aggregateLines ->Array.map(Agda.Output.parse) ->Array.keepMap(x => x) ->Array.map(output => Agda.Output.renderItem(output)) diff --git a/test/tests/Parser/Test__Parser__Emacs2.res b/test/tests/Parser/Test__Parser__Emacs2.res index 02e293e8..ec96c997 100644 --- a/test/tests/Parser/Test__Parser__Emacs2.res +++ b/test/tests/Parser/Test__Parser__Emacs2.res @@ -105,7 +105,7 @@ when checking that the clause a has type _8`, ]) Assert.deep_equal(actual, expected) }) - it_only("should parse an error + warnings", () => { + it("should parse an error + warnings", () => { let raw = `———— Error ————————————————————————————————————————————————— /Users/banacorn/agda/examples/A.agda:15,1-2 The right-hand side can only be omitted if there is an absurd diff --git a/test/tests/Test__Tokens.res b/test/tests/Test__Tokens.res index 4bbc15a2..3ab2cafb 100644 --- a/test/tests/Test__Tokens.res +++ b/test/tests/Test__Tokens.res @@ -38,7 +38,7 @@ describe("Tokens", ~timeout=10000, () => { "1:0-4 Token (28, 32) [Keyword]", "1:5-6 Token (33, 34) [Datatype] [src: 34]", "1:7-8 Token (35, 36) [Symbol]", - "1:9-12 Token (37, 40) [Primitive] [src: 326]", + "1:9-12 Token (37, 40) [Primitive] [src: 388]", "1:13-18 Token (41, 46) [Keyword]", "2:2-3 Token (49, 50) [ConstructorInductive] [src: 50]", "2:4-5 Token (51, 52) [Symbol]", From 59ece69c497ef0e2e35829debc0893fc753b6dde Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Thu, 7 Dec 2023 11:26:06 +0800 Subject: [PATCH 055/109] [ ci ] Upgrade actions/setup-node to @4 and node-version to 20.x --- .github/workflows/test-macos.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml index 387688c9..0e619cbe 100644 --- a/.github/workflows/test-macos.yml +++ b/.github/workflows/test-macos.yml @@ -46,9 +46,9 @@ jobs: # actions: - name: ⏬ Install Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v4 with: - node-version: 10.x + node-version: 20.x - name: ⏬ Install stack run: | From cf4011d052f957b50f6276596951cca3d0fdc06f Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Thu, 7 Dec 2023 11:51:33 +0800 Subject: [PATCH 056/109] [ ci ] Using Agda-2.6.4 for testing instead --- .github/workflows/test-macos.yml | 2 +- .github/workflows/test-windows.yml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml index 0e619cbe..3395a2b5 100644 --- a/.github/workflows/test-macos.yml +++ b/.github/workflows/test-macos.yml @@ -59,7 +59,7 @@ jobs: stack --version - name: ⏬ Install Agda - run: stack install --resolver lts-18.2 Agda-2.6.2 + run: stack install --resolver lts-20.26 Agda-2.6.4 - name: ⏬ Install NPM Dependencies run: npm install diff --git a/.github/workflows/test-windows.yml b/.github/workflows/test-windows.yml index 0a3ef8ee..5c989041 100644 --- a/.github/workflows/test-windows.yml +++ b/.github/workflows/test-windows.yml @@ -48,9 +48,9 @@ jobs: # actions: - name: ⏬ Install Node.js - uses: actions/setup-node@v1 + uses: actions/setup-node@v4 with: - node-version: 10.x + node-version: 20.x - name: ⏬ Install stack #if: steps.stack-programs-dir.outputs.cache-hit != 'true' @@ -67,7 +67,7 @@ jobs: - name: ⏬ Install Agda run: | - stack install --resolver lts-18.2 Agda-2.6.2 + stack install --resolver lts-20.26 Agda-2.6.4 # copy Agda (stack path --local-bin) to somewhere in the PATH cp C:\Users\runneradmin\AppData\Roaming\local\bin\agda.exe C:\ghcup\bin which agda From e8748f9d5cbd8ed5ed66c6e2f2ce9aaa2b89a987 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Thu, 7 Dec 2023 11:53:46 +0800 Subject: [PATCH 057/109] [ ci ] Let GitHub Actions cache Agda-2.6.4 first --- .github/workflows/test-macos.yml | 20 ++++++++++---------- .github/workflows/test-windows.yml | 12 ++++++------ 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml index 3395a2b5..f68dbf90 100644 --- a/.github/workflows/test-macos.yml +++ b/.github/workflows/test-macos.yml @@ -61,16 +61,16 @@ jobs: - name: ⏬ Install Agda run: stack install --resolver lts-20.26 Agda-2.6.4 - - name: ⏬ Install NPM Dependencies - run: npm install + # - name: ⏬ Install NPM Dependencies + # run: npm install - - name: 🔨 Build stuff - run: npm run build + # - name: 🔨 Build stuff + # run: npm run build - - name: 🚗 Run tests - run: | - # adding $(stack path --local-bin) to the PATH - PATH=$(stack path --local-bin):$PATH - which agda + # - name: 🚗 Run tests + # run: | + # # adding $(stack path --local-bin) to the PATH + # PATH=$(stack path --local-bin):$PATH + # which agda - npm test \ No newline at end of file + # npm test \ No newline at end of file diff --git a/.github/workflows/test-windows.yml b/.github/workflows/test-windows.yml index 5c989041..09d290e4 100644 --- a/.github/workflows/test-windows.yml +++ b/.github/workflows/test-windows.yml @@ -72,11 +72,11 @@ jobs: cp C:\Users\runneradmin\AppData\Roaming\local\bin\agda.exe C:\ghcup\bin which agda - - name: ⏬ Install NPM Dependencies - run: npm install + # - name: ⏬ Install NPM Dependencies + # run: npm install - - name: 🔨 Build stuff - run: npm run build + # - name: 🔨 Build stuff + # run: npm run build - - name: 🚗 Run tests (Windows) - run: npm test + # - name: 🚗 Run tests (Windows) + # run: npm test From be6d268a0b19b376e923086ac5693238798f2430 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Thu, 7 Dec 2023 13:27:23 +0800 Subject: [PATCH 058/109] [ ci ] Add `npm test ` into the workflow --- .github/workflows/test-macos.yml | 20 ++++++++++---------- .github/workflows/test-windows.yml | 12 ++++++------ 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml index f68dbf90..3395a2b5 100644 --- a/.github/workflows/test-macos.yml +++ b/.github/workflows/test-macos.yml @@ -61,16 +61,16 @@ jobs: - name: ⏬ Install Agda run: stack install --resolver lts-20.26 Agda-2.6.4 - # - name: ⏬ Install NPM Dependencies - # run: npm install + - name: ⏬ Install NPM Dependencies + run: npm install - # - name: 🔨 Build stuff - # run: npm run build + - name: 🔨 Build stuff + run: npm run build - # - name: 🚗 Run tests - # run: | - # # adding $(stack path --local-bin) to the PATH - # PATH=$(stack path --local-bin):$PATH - # which agda + - name: 🚗 Run tests + run: | + # adding $(stack path --local-bin) to the PATH + PATH=$(stack path --local-bin):$PATH + which agda - # npm test \ No newline at end of file + npm test \ No newline at end of file diff --git a/.github/workflows/test-windows.yml b/.github/workflows/test-windows.yml index 09d290e4..5c989041 100644 --- a/.github/workflows/test-windows.yml +++ b/.github/workflows/test-windows.yml @@ -72,11 +72,11 @@ jobs: cp C:\Users\runneradmin\AppData\Roaming\local\bin\agda.exe C:\ghcup\bin which agda - # - name: ⏬ Install NPM Dependencies - # run: npm install + - name: ⏬ Install NPM Dependencies + run: npm install - # - name: 🔨 Build stuff - # run: npm run build + - name: 🔨 Build stuff + run: npm run build - # - name: 🚗 Run tests (Windows) - # run: npm test + - name: 🚗 Run tests (Windows) + run: npm test From 3823d377e395a9af5891483435deb21534db5337 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Thu, 7 Dec 2023 14:26:25 +0800 Subject: [PATCH 059/109] [ fix ] Fix newline handling on Windows --- lib/js/src/Connection/Emacs/Connection__Emacs.bs.js | 2 +- lib/js/src/Parser/Parser.bs.js | 6 +++--- lib/js/src/Response.bs.js | 2 +- lib/js/src/State/State__Goal.bs.js | 3 ++- lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js | 11 ++++++----- .../test/tests/Parser/Test__Parser__SExpression.bs.js | 2 +- src/Connection/Emacs/Connection__Emacs.res | 2 +- src/Highlighting.res | 7 ++----- src/Parser/Parser.res | 4 ++-- src/Response.res | 4 ++-- src/State/State__Goal.res | 2 +- src/View/Panel/Emacs/Emacs__Parser2.res | 10 +++++----- test/tests/Parser/Test__Parser__Agda.res | 7 ++++++- test/tests/Parser/Test__Parser__SExpression.res | 2 +- 14 files changed, 34 insertions(+), 30 deletions(-) diff --git a/lib/js/src/Connection/Emacs/Connection__Emacs.bs.js b/lib/js/src/Connection/Emacs/Connection__Emacs.bs.js index 1e501759..a5c859e7 100644 --- a/lib/js/src/Connection/Emacs/Connection__Emacs.bs.js +++ b/lib/js/src/Connection/Emacs/Connection__Emacs.bs.js @@ -185,7 +185,7 @@ function wire(self) { [Symbol.for("name")]: "Error" }); } else { - return Belt_Array.forEach(Parser$AgdaModeVscode.split(rawText), (function (param) { + return Belt_Array.forEach(Parser$AgdaModeVscode.splitToLines(rawText), (function (param) { return Parser$AgdaModeVscode.Incr.feed(incrParser, param); })); } diff --git a/lib/js/src/Parser/Parser.bs.js b/lib/js/src/Parser/Parser.bs.js index d702bd18..df245a2f 100644 --- a/lib/js/src/Parser/Parser.bs.js +++ b/lib/js/src/Parser/Parser.bs.js @@ -8,7 +8,7 @@ var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); -function split(s) { +function splitToLines(s) { return Belt_Array.keepMap(Belt_Array.map(Js_string.splitByRe(/\r\n|\n/, s), (function (x) { if (x !== undefined && x !== "") { return x; @@ -319,7 +319,7 @@ function parse(input) { var continuation = { contents: undefined }; - Belt_Array.forEach(split(input), (function (line) { + Belt_Array.forEach(splitToLines(input), (function (line) { var $$continue = Belt_Option.getWithDefault(continuation.contents, parseWithContinuation); var err = Curry._1($$continue, line); switch (err.TAG | 0) { @@ -392,7 +392,7 @@ function commandLineArgs(s) { return Js_string.split(" ", Js_string.replaceByRe(/\\s+/g, " ", s)); } -exports.split = split; +exports.splitToLines = splitToLines; exports.Incr = Incr; exports.SExpression = SExpression; exports.$$Error = $$Error; diff --git a/lib/js/src/Response.bs.js b/lib/js/src/Response.bs.js index e891995a..47a623a4 100644 --- a/lib/js/src/Response.bs.js +++ b/lib/js/src/Response.bs.js @@ -114,7 +114,7 @@ function parse(xs) { if (match.TAG !== /* A */0) { return ; } - var payload = Js_string.replaceByRe(/\\r\\n|\\n/g, "\n", match._0); + var payload = match._0; var match$1 = Belt_Array.get(xs, 0); if (match$1 === undefined) { return ; diff --git a/lib/js/src/State/State__Goal.bs.js b/lib/js/src/State/State__Goal.bs.js index d9a78484..49498862 100644 --- a/lib/js/src/State/State__Goal.bs.js +++ b/lib/js/src/State/State__Goal.bs.js @@ -14,6 +14,7 @@ var Goal$AgdaModeVscode = require("../Goal.bs.js"); var Item$AgdaModeVscode = require("../View/Component/Item.bs.js"); var Common$AgdaModeVscode = require("../View/Common.bs.js"); var Editor$AgdaModeVscode = require("../Editor.bs.js"); +var Parser$AgdaModeVscode = require("../Parser/Parser.bs.js"); var State__View$AgdaModeVscode = require("./State__View.bs.js"); function getOffsets(state) { @@ -257,7 +258,7 @@ function pointed(state) { } function placeCursorAtFirstNewGoal(state, rewriteText, rewriteRange) { - var splittedLines = Js_string.split("\n", rewriteText); + var splittedLines = Parser$AgdaModeVscode.splitToLines(rewriteText); Belt_Option.forEach(Belt_Array.get(splittedLines, 0), (function (line) { var col = line.length - 1 | 0; var lastChar = Js_string.charAt(col, line); diff --git a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js index fc90ccdf..8b20ec72 100644 --- a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js +++ b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js @@ -10,6 +10,7 @@ var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Agda$AgdaModeVscode = require("../../../Agda.bs.js"); var Item$AgdaModeVscode = require("../../Component/Item.bs.js"); var Common$AgdaModeVscode = require("../../Common.bs.js"); +var Parser$AgdaModeVscode = require("../../../Parser/Parser.bs.js"); var RichText$AgdaModeVscode = require("../../Component/RichText.bs.js"); var Emacs__Parser$AgdaModeVscode = require("./Emacs__Parser.bs.js"); @@ -61,7 +62,7 @@ function partiteWarningsOrErrors(xs, key) { } function parseError(raw) { - var lines = Js_string.split("\n", raw); + var lines = Parser$AgdaModeVscode.splitToLines(raw); var partial_arg = /^\u2014{4} Error/; var hasBothErrorsAndWarnings = Belt_Option.isSome(Belt_Option.flatMap(Belt_Array.get(lines, 0), (function (param) { return Js_string.match_(partial_arg, param); @@ -144,7 +145,7 @@ function parseGoalType(raw) { return Js_array.sliceFrom(1, param); })); }; - var lines = Js_string.split("\n", raw); + var lines = Parser$AgdaModeVscode.splitToLines(raw); return partiteMetas(removeDelimeter(partiteGoalTypeContext(lines))); } @@ -210,7 +211,7 @@ function render(dictionary) { function parseAllGoalsWarnings(title, body) { var partiteAllGoalsWarnings = function (title, body) { - var lines = Js_string.split("\n", body); + var lines = Parser$AgdaModeVscode.splitToLines(body); var hasMetas = Belt_Option.isSome(Js_string.match_(/Goals/, title)); var hasWarnings = Belt_Option.isSome(Js_string.match_(/Warnings/, title)); var hasErrors = Belt_Option.isSome(Js_string.match_(/Errors/, title)); @@ -272,7 +273,7 @@ function parseAllGoalsWarnings(title, body) { } function parseOutputs(raw) { - var lines = Emacs__Parser$AgdaModeVscode.aggregateLines(Js_string.split("\n", raw)); + var lines = Emacs__Parser$AgdaModeVscode.aggregateLines(Parser$AgdaModeVscode.splitToLines(raw)); return Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(lines, Agda$AgdaModeVscode.Output.parse), (function (x) { return x; })), (function (output) { @@ -291,7 +292,7 @@ function parseAndRenderTextWithLocation(raw) { } function parseAndRenderSearchAbout(raw) { - var lines = Js_string.split("\n", raw); + var lines = Parser$AgdaModeVscode.splitToLines(raw); var outputs = Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(Emacs__Parser$AgdaModeVscode.aggregateLines(Belt_Array.map(Js_array.sliceFrom(1, lines), (function (param) { return Js_string.sliceToEnd(2, param); }))), Agda$AgdaModeVscode.Output.parse), (function (x) { diff --git a/lib/js/test/tests/Parser/Test__Parser__SExpression.bs.js b/lib/js/test/tests/Parser/Test__Parser__SExpression.bs.js index 8fa7b2a8..6a49dafe 100644 --- a/lib/js/test/tests/Parser/Test__Parser__SExpression.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__SExpression.bs.js @@ -31,7 +31,7 @@ function parseSExpression(breakpoints, input) { [Symbol.for("name")]: "SExpression" })); }); - Belt_Array.forEach(Belt_Array.concatMany(Belt_Array.map(Test__Util$AgdaModeVscode.Strings.breakInput(input.trim(), breakpoints), Parser$AgdaModeVscode.split)), (function (param) { + Belt_Array.forEach(Belt_Array.concatMany(Belt_Array.map(Test__Util$AgdaModeVscode.Strings.breakInput(input.trim(), breakpoints), Parser$AgdaModeVscode.splitToLines)), (function (param) { return Parser$AgdaModeVscode.Incr.feed(parser, param); })); return output.contents; diff --git a/src/Connection/Emacs/Connection__Emacs.res b/src/Connection/Emacs/Connection__Emacs.res index 3261be79..c0e71847 100644 --- a/src/Connection/Emacs/Connection__Emacs.res +++ b/src/Connection/Emacs/Connection__Emacs.res @@ -152,7 +152,7 @@ module Module: Module = { self.chan->Chan.emit(Error(AgdaError(rawText))) } else { // split the raw text into pieces and feed it to the parser - rawText->Parser.split->Array.forEach(Parser.Incr.feed(incrParser)) + rawText->Parser.splitToLines->Array.forEach(Parser.Incr.feed(incrParser)) } | Stderr(_) => () | Event(e) => self.chan->Chan.emit(Error(Process(e))) diff --git a/src/Highlighting.res b/src/Highlighting.res index 12982561..7686b14c 100644 --- a/src/Highlighting.res +++ b/src/Highlighting.res @@ -101,14 +101,11 @@ module Module: Module = { let removedRange = change->VSCode.TextDocumentContentChangeEvent.range let (lineDelta, columnDelta) = { - // +1 line for each linebreak ('\n', '\r', and '\r\n') + // +1 line for each linebreak ('\n' or '\r\n') // -1 line for each line in `removedRange` // +1 column for each charactor after the last linebreak // -1 column for each charactor in `removedRange` - - let regex = %re("/\r\n|\r|\n/") // RegEx updated to v10.1.4 - let lines = Js.String.splitByRe(regex, change->VSCode.TextDocumentContentChangeEvent.text) - + let lines = Parser.splitToLines(change->VSCode.TextDocumentContentChangeEvent.text) let lineDetalOfRemovedRange = VSCode.Position.line(VSCode.Range.end_(removedRange)) - VSCode.Position.line(VSCode.Range.start(removedRange)) diff --git a/src/Parser/Parser.res b/src/Parser/Parser.res index e2fba1b1..ed445ace 100644 --- a/src/Parser/Parser.res +++ b/src/Parser/Parser.res @@ -1,6 +1,6 @@ open Belt -let split = s => +let splitToLines = s => // RegEx updated to v10.1.4 s ->Js.String.splitByRe(%re("/\r\n|\n/"), _) @@ -203,7 +203,7 @@ module SExpression = { let resultAccum: ref>> = ref([]) let continuation = ref(None) input - ->split + ->splitToLines ->Array.forEach(line => { // get the parsing continuation or initialize a new one let continue = continuation.contents->Option.getWithDefault(parseWithContinuation) diff --git a/src/Response.res b/src/Response.res index e296daf6..acbff335 100644 --- a/src/Response.res +++ b/src/Response.res @@ -82,8 +82,8 @@ module DisplayInfo = { let parse = (xs: array): option => switch xs[1] { - | Some(A(rawPayload)) => - let payload = rawPayload |> Js.String.replaceByRe(%re("/\\r\\n|\\n/g"), "\n") + | Some(A(payload)) => + // let payload = rawPayload |> Js.String.replaceByRe(%re("/\r\\n|\\n/g"), "\n") switch xs[0] { | Some(A("*Compilation result*")) => Some(CompilationOk(payload)) | Some(A("*Constraints*")) => diff --git a/src/State/State__Goal.res b/src/State/State__Goal.res index 334a875a..ff94afb9 100644 --- a/src/State/State__Goal.res +++ b/src/State/State__Goal.res @@ -312,7 +312,7 @@ module Module: Module = { let placeCursorAtFirstNewGoal = (state: State.t, rewriteText, rewriteRange) => { // locate the first new goal and place the cursor there - let splittedLines = Js.String.split("\n", rewriteText) + let splittedLines = Parser.splitToLines(rewriteText) splittedLines[0]->Option.forEach(line => { let col = Js.String.length(line) - 1 let lastChar = Js.String.charAt(col, line) diff --git a/src/View/Panel/Emacs/Emacs__Parser2.res b/src/View/Panel/Emacs/Emacs__Parser2.res index 7a256d60..f176545d 100644 --- a/src/View/Panel/Emacs/Emacs__Parser2.res +++ b/src/View/Panel/Emacs/Emacs__Parser2.res @@ -53,7 +53,7 @@ let parseError: string => Js.Dict.t> = raw => { // ... // else, the message has only an error // ... - let lines = Js.String.split("\n", raw) + let lines = Parser.splitToLines(raw) let hasBothErrorsAndWarnings = lines[0]->Option.flatMap(Js.String.match_(%re("/^\u2014{4} Error/")))->Option.isSome let markWarningStart = line => line->Common.AgdaRange.parse->Option.isSome @@ -115,7 +115,7 @@ let parseGoalType: string => Js.Dict.t> = raw => { } ) let removeDelimeter = xs => xs->Emacs__Parser.Dict.update("metas", Js.Array.sliceFrom(1)) - let lines = Js.String.split("\n", raw) + let lines = Parser.splitToLines(raw) lines->partiteGoalTypeContext->removeDelimeter->partiteMetas } @@ -165,7 +165,7 @@ let render: Js.Dict.t> => array = dictionary => { let parseAllGoalsWarnings = (title, body): Js.Dict.t> => { let partiteAllGoalsWarnings: (string, string) => Js.Dict.t> = (title, body) => { - let lines = Js.String.split("\n", body) + let lines = Parser.splitToLines(body) /* examine the header to see what's in the body */ let hasMetas = title->Js.String.match_(%re("/Goals/"), _)->Option.isSome let hasWarnings = title->Js.String.match_(%re("/Warnings/"), _)->Option.isSome @@ -222,7 +222,7 @@ let parseAllGoalsWarnings = (title, body): Js.Dict.t> => { } let parseOutputs: string => array = raw => { - let lines = Js.String.split("\n", raw)->Emacs__Parser.aggregateLines + let lines = Parser.splitToLines(raw)->Emacs__Parser.aggregateLines lines ->Array.map(Agda.Output.parse) ->Array.keepMap(x => x) @@ -234,7 +234,7 @@ let parseAndRenderTextWithLocation: string => array = raw => [ ] let parseAndRenderSearchAbout: string => array = raw => { - let lines = Js.String.split("\n", raw) + let lines = Parser.splitToLines(raw) let outputs = lines ->Js.Array.sliceFrom(1, _) diff --git a/test/tests/Parser/Test__Parser__Agda.res b/test/tests/Parser/Test__Parser__Agda.res index db99711d..0fe8b57a 100644 --- a/test/tests/Parser/Test__Parser__Agda.res +++ b/test/tests/Parser/Test__Parser__Agda.res @@ -43,7 +43,12 @@ describe("when running Agda.OutputConstraint.parse", () => { it("should should parse JustSort", () => { let raw = `Sort ℕ ℕ` - let expected = Some(Agda.OutputConstraint.JustSort(RichText.string("ℕ\n ℕ"))) + let expected = Some( + Agda.OutputConstraint.JustSort( + RichText.string(`ℕ + ℕ`), + ), + ) let actual = Agda.OutputConstraint.parse(raw) Assert.deep_equal(actual, expected) }) diff --git a/test/tests/Parser/Test__Parser__SExpression.res b/test/tests/Parser/Test__Parser__SExpression.res index 02b58458..2e65838f 100644 --- a/test/tests/Parser/Test__Parser__SExpression.res +++ b/test/tests/Parser/Test__Parser__SExpression.res @@ -25,7 +25,7 @@ let parseSExpression = (breakpoints, input) => { input ->Js.String.trim ->Strings.breakInput(breakpoints) - ->Array.map(Parser.split) + ->Array.map(Parser.splitToLines) ->Array.concatMany ->Array.forEach(Parser.Incr.feed(parser)) From 38f03ec2897c8e87f385663c543efde899a8a16a Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Thu, 7 Dec 2023 14:36:37 +0800 Subject: [PATCH 060/109] [ fix ] ReScript type error in Highlighting.res --- lib/js/src/Highlighting.bs.js | 16 ++++------------ src/Highlighting.res | 2 +- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/lib/js/src/Highlighting.bs.js b/lib/js/src/Highlighting.bs.js index 0c139d19..ea03dce2 100644 --- a/lib/js/src/Highlighting.bs.js +++ b/lib/js/src/Highlighting.bs.js @@ -4,12 +4,11 @@ var Curry = require("rescript/lib/js/curry.js"); var Vscode = require("vscode"); var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); -var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Pervasives = require("rescript/lib/js/pervasives.js"); -var Caml_option = require("rescript/lib/js/caml_option.js"); var Config$AgdaModeVscode = require("./Config.bs.js"); var Editor$AgdaModeVscode = require("./Editor.bs.js"); +var Parser$AgdaModeVscode = require("./Parser/Parser.bs.js"); var Tokens$AgdaModeVscode = require("./Tokens.bs.js"); var Highlighting__SemanticToken$AgdaModeVscode = require("./Highlighting/Highlighting__SemanticToken.bs.js"); @@ -56,8 +55,7 @@ function redecorate(self, editor) { function classify(change, token) { var removedRange = change.range; - var regex = /\r\n|\r|\n/; - var lines = Js_string.splitByRe(regex, change.text); + var lines = Parser$AgdaModeVscode.splitToLines(change.text); var lineDetalOfRemovedRange = removedRange.end.line - removedRange.start.line | 0; var lineDelta = (lines.length - 1 | 0) - lineDetalOfRemovedRange | 0; var match; @@ -74,14 +72,8 @@ function classify(change, token) { ]; } else { var columnDeltaOfRemovedRange = removedRange.end.character - removedRange.start.character | 0; - var match$1 = Belt_Array.get(lines, lineDelta); - var columnDelta$1; - if (match$1 !== undefined) { - var line = Caml_option.valFromOption(match$1); - columnDelta$1 = line !== undefined ? line.length - columnDeltaOfRemovedRange | 0 : 0; - } else { - columnDelta$1 = 0; - } + var line = Belt_Array.get(lines, lineDelta); + var columnDelta$1 = line !== undefined ? line.length - columnDeltaOfRemovedRange | 0 : 0; match = [ 0, columnDelta$1 diff --git a/src/Highlighting.res b/src/Highlighting.res index 7686b14c..abaa66c8 100644 --- a/src/Highlighting.res +++ b/src/Highlighting.res @@ -127,7 +127,7 @@ module Module: Module = { VSCode.Position.character(VSCode.Range.start(removedRange)) let columnDelta = switch lines[lineDelta] { - | Some(Some(line)) => + | Some(line) => // number of characters after the last linebreak String.length(line) - columnDeltaOfRemovedRange | _ => 0 From 37d86a313b3a8db2fede1baafffb826613a24c4e Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Thu, 7 Dec 2023 14:48:52 +0800 Subject: [PATCH 061/109] [ change ] Preprocess all strings from EmacsTop DisplayInfo and replace all `\r\n`s with `\n`s --- lib/js/src/Response.bs.js | 2 +- lib/js/test/tests/Parser/Test__Parser__Agda.bs.js | 2 +- src/Response.res | 5 +++-- test/tests/Parser/Test__Parser__Agda.res | 2 +- test/tests/Parser/Test__Parser__Emacs2.res | 3 --- 5 files changed, 6 insertions(+), 8 deletions(-) diff --git a/lib/js/src/Response.bs.js b/lib/js/src/Response.bs.js index 47a623a4..dd7afbd2 100644 --- a/lib/js/src/Response.bs.js +++ b/lib/js/src/Response.bs.js @@ -114,7 +114,7 @@ function parse(xs) { if (match.TAG !== /* A */0) { return ; } - var payload = match._0; + var payload = Js_string.replaceByRe(/\r\n|\n/g, "\n", match._0); var match$1 = Belt_Array.get(xs, 0); if (match$1 === undefined) { return ; diff --git a/lib/js/test/tests/Parser/Test__Parser__Agda.bs.js b/lib/js/test/tests/Parser/Test__Parser__Agda.bs.js index b24e2758..b3104479 100644 --- a/lib/js/test/tests/Parser/Test__Parser__Agda.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__Agda.bs.js @@ -60,7 +60,7 @@ Mocha$BsMocha.describe("when running Agda.OutputConstraint.parse")(undefined, un Mocha$BsMocha.it("should should parse JustSort")(undefined, undefined, undefined, (function (param) { var expected = { TAG: 2, - _0: RichText$AgdaModeVscode.string("ℕ\n ℕ"), + _0: RichText$AgdaModeVscode.string("Sort ℕ\n ℕ"), [Symbol.for("name")]: "JustSort" }; var actual = Curry._1(Agda$AgdaModeVscode.OutputConstraint.parse, "Sort ℕ\n ℕ"); diff --git a/src/Response.res b/src/Response.res index acbff335..d4acc185 100644 --- a/src/Response.res +++ b/src/Response.res @@ -82,8 +82,9 @@ module DisplayInfo = { let parse = (xs: array): option => switch xs[1] { - | Some(A(payload)) => - // let payload = rawPayload |> Js.String.replaceByRe(%re("/\r\\n|\\n/g"), "\n") + | Some(A(rawPayload)) => + // replace all "\r\n" and "\n" with "\n" + let payload = Js.String.replaceByRe(%re("/\r\n|\n/g"), "\n", rawPayload) switch xs[0] { | Some(A("*Compilation result*")) => Some(CompilationOk(payload)) | Some(A("*Constraints*")) => diff --git a/test/tests/Parser/Test__Parser__Agda.res b/test/tests/Parser/Test__Parser__Agda.res index 0fe8b57a..fa3786b1 100644 --- a/test/tests/Parser/Test__Parser__Agda.res +++ b/test/tests/Parser/Test__Parser__Agda.res @@ -45,7 +45,7 @@ describe("when running Agda.OutputConstraint.parse", () => { ℕ` let expected = Some( Agda.OutputConstraint.JustSort( - RichText.string(`ℕ + RichText.string(`Sort ℕ ℕ`), ), ) diff --git a/test/tests/Parser/Test__Parser__Emacs2.res b/test/tests/Parser/Test__Parser__Emacs2.res index ec96c997..5f1426f5 100644 --- a/test/tests/Parser/Test__Parser__Emacs2.res +++ b/test/tests/Parser/Test__Parser__Emacs2.res @@ -80,9 +80,6 @@ Unsolved constraints` ]) Assert.deep_equal(actual, expected) }) - - // ?0 - // : BoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBool }) describe("when running Emacs__Parser2.parseError", () => { From 6819d53cec862eccfd0738fe06dce5da14c41514 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sat, 9 Dec 2023 00:33:03 +0800 Subject: [PATCH 062/109] [ fix ] Golden tests & OutputConstraint parsers --- lib/js/src/Agda.bs.js | 6 +++--- lib/js/src/State/State__Response.bs.js | 2 +- .../tests/Parser/Test__Parser__Agda.bs.js | 13 +++++++++++-- lib/js/test/tests/Test__Util.bs.js | 2 +- src/Agda.res | 6 +++--- src/State/State__Response.res | 2 +- .../Parser/Response/Issue95-2.6.1-Unix.out | 4 +--- .../Response/QuotationMark-2.6.0-Unix.out | 4 +--- test/tests/Parser/Test__Parser__Agda.res | 19 ++++++++++++++----- test/tests/Test__Util.res | 2 +- 10 files changed, 37 insertions(+), 23 deletions(-) diff --git a/lib/js/src/Agda.bs.js b/lib/js/src/Agda.bs.js index c8e3524f..a6557a87 100644 --- a/lib/js/src/Agda.bs.js +++ b/lib/js/src/Agda.bs.js @@ -77,7 +77,7 @@ var Expr = { render: render$1 }; -var partial_arg = /^([^\:]*) \: ((?:\n|.)+)/; +var partial_arg = /^([^\:]*) \: ((?:\r\n|\n|.)+)/; function parseOfType(param) { return Emacs__Parser$AgdaModeVscode.captures(partial_arg, (function (captured) { @@ -94,7 +94,7 @@ function parseOfType(param) { }), param); } -var partial_arg$1 = /^Type ((?:\n|.)+)/; +var partial_arg$1 = /^Type ((?:\r\n|\n|.)+)/; function parseJustType(param) { return Emacs__Parser$AgdaModeVscode.captures(partial_arg$1, (function (captured) { @@ -108,7 +108,7 @@ function parseJustType(param) { }), param); } -var partial_arg$2 = /^Sort ((?:\n|.)+)/; +var partial_arg$2 = /^Sort ((?:\r\n|\n|.)+)/; function parseJustSort(param) { return Emacs__Parser$AgdaModeVscode.captures(partial_arg$2, (function (captured) { diff --git a/lib/js/src/State/State__Response.bs.js b/lib/js/src/State/State__Response.bs.js index f5a6645b..6bee3df9 100644 --- a/lib/js/src/State/State__Response.bs.js +++ b/lib/js/src/State/State__Response.bs.js @@ -20,7 +20,7 @@ var Highlighting$AgdaModeVscode = require("../Highlighting.bs.js"); var Emacs__Parser2$AgdaModeVscode = require("../View/Panel/Emacs/Emacs__Parser2.bs.js"); function removeNewlines(string) { - return Belt_Array.joinWith(string.split("\\n"), "\n", (function (x) { + return Belt_Array.joinWith(string.split("\n"), "\n", (function (x) { return x; })); } diff --git a/lib/js/test/tests/Parser/Test__Parser__Agda.bs.js b/lib/js/test/tests/Parser/Test__Parser__Agda.bs.js index b3104479..bb9c060a 100644 --- a/lib/js/test/tests/Parser/Test__Parser__Agda.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__Agda.bs.js @@ -57,10 +57,19 @@ Mocha$BsMocha.describe("when running Agda.OutputConstraint.parse")(undefined, un var actual = Curry._1(Agda$AgdaModeVscode.OutputConstraint.parse, "Type ℕ"); Assert$BsMocha.deep_equal(undefined, actual, expected); })); - Mocha$BsMocha.it("should should parse JustSort")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should should parse JustSort on Windows")(undefined, undefined, undefined, (function (param) { var expected = { TAG: 2, - _0: RichText$AgdaModeVscode.string("Sort ℕ\n ℕ"), + _0: RichText$AgdaModeVscode.string("ℕ\r\n ℕ"), + [Symbol.for("name")]: "JustSort" + }; + var actual = Curry._1(Agda$AgdaModeVscode.OutputConstraint.parse, "Sort ℕ\r\n ℕ"); + Assert$BsMocha.deep_equal(undefined, actual, expected); + })); + Mocha$BsMocha.it("should should parse JustSort on Unix")(undefined, undefined, undefined, (function (param) { + var expected = { + TAG: 2, + _0: RichText$AgdaModeVscode.string("ℕ\n ℕ"), [Symbol.for("name")]: "JustSort" }; var actual = Curry._1(Agda$AgdaModeVscode.OutputConstraint.parse, "Sort ℕ\n ℕ"); diff --git a/lib/js/test/tests/Test__Util.bs.js b/lib/js/test/tests/Test__Util.bs.js index 1c71de68..6f666a56 100644 --- a/lib/js/test/tests/Test__Util.bs.js +++ b/lib/js/test/tests/Test__Util.bs.js @@ -222,7 +222,7 @@ var A = { }; function normalize(string) { - return Js_string.replaceByRe(/\\r\\n|\\r/g, "\n", string.trim()); + return Js_string.replaceByRe(/\r\n|\n/g, "\n", string.trim()); } function serialize(xs) { diff --git a/src/Agda.res b/src/Agda.res index 138bfccc..09ad663a 100644 --- a/src/Agda.res +++ b/src/Agda.res @@ -68,7 +68,7 @@ module OutputConstraint: { | Others(RichText.t) let parseOfType = - %re("/^([^\:]*) \: ((?:\n|.)+)/")->Emacs__Parser.captures(captured => + %re("/^([^\:]*) \: ((?:\r\n|\n|.)+)/")->Emacs__Parser.captures(captured => captured ->Emacs__Parser.at(2, Expr.parse) ->Option.flatMap(type_ => @@ -78,11 +78,11 @@ module OutputConstraint: { ) ) let parseJustType = - %re("/^Type ((?:\n|.)+)/")->Emacs__Parser.captures(captured => + %re("/^Type ((?:\r\n|\n|.)+)/")->Emacs__Parser.captures(captured => captured->Emacs__Parser.at(1, Expr.parse)->Option.map(type_ => JustType(Expr.render(type_))) ) let parseJustSort = - %re("/^Sort ((?:\n|.)+)/")->Emacs__Parser.captures(captured => + %re("/^Sort ((?:\r\n|\n|.)+)/")->Emacs__Parser.captures(captured => captured->Emacs__Parser.at(1, Expr.parse)->Option.map(sort => JustSort(Expr.render(sort))) ) let parseOthers = raw => raw->Expr.parse->Option.map(raw' => Others(Expr.render(raw'))) diff --git a/src/State/State__Response.res b/src/State/State__Response.res index 210fe07c..67c1d28f 100644 --- a/src/State/State__Response.res +++ b/src/State/State__Response.res @@ -1,7 +1,7 @@ // from Agda Response to Tasks open Belt -let removeNewlines = string => string->Js.String2.split("\\n")->Belt.Array.joinWith("\n", x => x) +let removeNewlines = string => string->Js.String2.split("\n")->Belt.Array.joinWith("\n", x => x) open Response module DisplayInfo = { diff --git a/test/tests/Parser/Response/Issue95-2.6.1-Unix.out b/test/tests/Parser/Response/Issue95-2.6.1-Unix.out index 90bf728a..a9ff6cfa 100644 --- a/test/tests/Parser/Response/Issue95-2.6.1-Unix.out +++ b/test/tests/Parser/Response/Issue95-2.6.1-Unix.out @@ -7,9 +7,7 @@ NonLast HighlightingInfoIndirect /var/folders/r2/lx4mzz2x1kn940m7lhnv0b_h0000gn/ NonLast HighlightingInfoIndirect /var/folders/r2/lx4mzz2x1kn940m7lhnv0b_h0000gn/T/agda2-mode39869-2 NonLast HighlightingInfoIndirect /var/folders/r2/lx4mzz2x1kn940m7lhnv0b_h0000gn/T/agda2-mode39869-3 NonLast HighlightingInfoIndirect /var/folders/r2/lx4mzz2x1kn940m7lhnv0b_h0000gn/T/agda2-mode39869-4 -NonLast DisplayInfo Error /Users/omega/github/agda-mode/test/ManualTests/Issue95.agda:8,5-9 -String != List Char -when checking that the expression "\\" has type List Char +NonLast DisplayInfo Error /Users/omega/github/agda-mode/test/ManualTests/Issue95.agda:8,5-9\nString != List Char\nwhen checking that the expression "\\" has type List Char Last(3) JumpToError /Users/omega/github/agda-mode/test/ManualTests/Issue95.agda 144 NonLast HighlightingInfoIndirect /var/folders/r2/lx4mzz2x1kn940m7lhnv0b_h0000gn/T/agda2-mode39869-5 NonLast Status: implicit arguments not displayed, module not type checked diff --git a/test/tests/Parser/Response/QuotationMark-2.6.0-Unix.out b/test/tests/Parser/Response/QuotationMark-2.6.0-Unix.out index a8b2739d..ca358361 100644 --- a/test/tests/Parser/Response/QuotationMark-2.6.0-Unix.out +++ b/test/tests/Parser/Response/QuotationMark-2.6.0-Unix.out @@ -7,9 +7,7 @@ NonLast HighlightingInfoIndirect /var/folders/r2/lx4mzz2x1kn940m7lhnv0b_h0000gn/ NonLast HighlightingInfoIndirect /var/folders/r2/lx4mzz2x1kn940m7lhnv0b_h0000gn/T/agda2-mode19020-2 NonLast HighlightingInfoIndirect /var/folders/r2/lx4mzz2x1kn940m7lhnv0b_h0000gn/T/agda2-mode19020-3 NonLast HighlightingInfoIndirect /var/folders/r2/lx4mzz2x1kn940m7lhnv0b_h0000gn/T/agda2-mode19020-4 -NonLast DisplayInfo Error /Users/omega/github/agda-mode/test/ManualTests/QuotationMark.agda:8,5-8 -String != List Char -when checking that the expression ")" has type List Char +NonLast DisplayInfo Error /Users/omega/github/agda-mode/test/ManualTests/QuotationMark.agda:8,5-8\nString != List Char\nwhen checking that the expression ")" has type List Char Last(3) JumpToError /Users/omega/github/agda-mode/test/ManualTests/QuotationMark.agda 150 Last(3) JumpToError /Users/omega/github/agda-mode/test/ManualTests/QuotationMark.agda 150 NonLast HighlightingInfoIndirect /var/folders/r2/lx4mzz2x1kn940m7lhnv0b_h0000gn/T/agda2-mode19020-5 diff --git a/test/tests/Parser/Test__Parser__Agda.res b/test/tests/Parser/Test__Parser__Agda.res index fa3786b1..0118b776 100644 --- a/test/tests/Parser/Test__Parser__Agda.res +++ b/test/tests/Parser/Test__Parser__Agda.res @@ -40,13 +40,22 @@ describe("when running Agda.OutputConstraint.parse", () => { Assert.deep_equal(actual, expected) }) - it("should should parse JustSort", () => { - let raw = `Sort ℕ - ℕ` + it("should should parse JustSort on Windows", () => { + let raw = "Sort ℕ\r\n ℕ" let expected = Some( Agda.OutputConstraint.JustSort( - RichText.string(`Sort ℕ - ℕ`), + RichText.string(`ℕ\r\n ℕ`), + ), + ) + let actual = Agda.OutputConstraint.parse(raw) + Assert.deep_equal(actual, expected) + }) + + it("should should parse JustSort on Unix", () => { + let raw = "Sort ℕ\n ℕ" + let expected = Some( + Agda.OutputConstraint.JustSort( + RichText.string("ℕ\n ℕ"), ), ) let actual = Agda.OutputConstraint.parse(raw) diff --git a/test/tests/Test__Util.res b/test/tests/Test__Util.res index ad1c7a25..7c942758 100644 --- a/test/tests/Test__Util.res +++ b/test/tests/Test__Util.res @@ -131,7 +131,7 @@ module Strings = { // trim and replace all occurences of line breaks with "\n" let normalize = string => { open Js.String - replaceByRe(%re("/\\r\\n|\\r/g"), "\n", trim(string)) + replaceByRe(%re("/\r\n|\n/g"), "\n", trim(string)) } let serialize = xs => Js.Array.joinWith("\n", xs) From d7ce006f471fe13c83c26006370b9f5d01f92da5 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sat, 9 Dec 2023 01:12:30 +0800 Subject: [PATCH 063/109] =?UTF-8?q?[=20fix=20#175=20]=20Refining=20a=20goa?= =?UTF-8?q?l=20having=20\=20(instead=20of=20=CE=BB)=20results=20in=20an=20?= =?UTF-8?q?Internal=20Parse=20Error?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/js/src/Parser/Parser.bs.js | 18 +++--------------- lib/js/src/Request.bs.js | 34 +++++++++++++++++----------------- lib/js/src/Response.bs.js | 2 +- src/Parser/Parser.res | 14 ++++---------- src/Request.res | 34 +++++++++++++++++----------------- src/Response.res | 9 +++++---- 6 files changed, 47 insertions(+), 64 deletions(-) diff --git a/lib/js/src/Parser/Parser.bs.js b/lib/js/src/Parser/Parser.bs.js index df245a2f..b8cb72e2 100644 --- a/lib/js/src/Parser/Parser.bs.js +++ b/lib/js/src/Parser/Parser.bs.js @@ -372,8 +372,8 @@ var $$Error = { toString: toString$1 }; -function userInput(s) { - return Js_string.replaceByRe(/\\n/g, "\\n", Js_string.replaceByRe(/\\\"/g, "\\\"", Js_string.replaceByRe(/\\\\/g, "\\\\", s))).trim(); +function userInputToSExpr(s) { + return Js_string.replaceByRe(/\n/g, "\\n", Js_string.replaceByRe(/\"/g, "\\\"", Js_string.replaceByRe(/\\/g, "\\\\", s))).trim(); } function filepath(s) { @@ -382,22 +382,10 @@ function filepath(s) { return Js_string.replaceByRe(/\\\\/g, "/", normalized); } -var partial_arg = /\\\\n/g; - -function agdaOutput(param) { - return Js_string.replaceByRe(partial_arg, "\n", param); -} - -function commandLineArgs(s) { - return Js_string.split(" ", Js_string.replaceByRe(/\\s+/g, " ", s)); -} - exports.splitToLines = splitToLines; exports.Incr = Incr; exports.SExpression = SExpression; exports.$$Error = $$Error; -exports.userInput = userInput; +exports.userInputToSExpr = userInputToSExpr; exports.filepath = filepath; -exports.agdaOutput = agdaOutput; -exports.commandLineArgs = commandLineArgs; /* path Not a pure module */ diff --git a/lib/js/src/Request.bs.js b/lib/js/src/Request.bs.js index 9c5ff66c..3dfccd5e 100644 --- a/lib/js/src/Request.bs.js +++ b/lib/js/src/Request.bs.js @@ -142,12 +142,12 @@ function encode($$document, version, filepath, backend, libraryPath, highlightin } case /* SearchAbout */3 : var normalization$3 = Command$AgdaModeVscode.Normalization.encode(request._0); - var content = Parser$AgdaModeVscode.userInput(request._1); + var content = Parser$AgdaModeVscode.userInputToSExpr(request._1); return "" + commonPart(/* NonInteractive */1) + "( Cmd_search_about_toplevel " + normalization$3 + " \"" + content + "\" )"; case /* Give */4 : var goal = request._0; var index$1 = String(goal.index); - var content$1 = Parser$AgdaModeVscode.userInput(Goal$AgdaModeVscode.getContent(goal, $$document)); + var content$1 = Parser$AgdaModeVscode.userInputToSExpr(Goal$AgdaModeVscode.getContent(goal, $$document)); var range = buildRange(goal); if (Util$AgdaModeVscode.Version.gte(version, "2.5.3")) { return "" + commonPart(/* NonInteractive */1) + "( Cmd_give WithoutForce " + index$1 + " " + range + " \"" + content$1 + "\" )"; @@ -157,18 +157,18 @@ function encode($$document, version, filepath, backend, libraryPath, highlightin case /* Refine */5 : var goal$1 = request._0; var index$2 = String(goal$1.index); - var content$2 = Parser$AgdaModeVscode.userInput(Goal$AgdaModeVscode.getContent(goal$1, $$document)); + var content$2 = Parser$AgdaModeVscode.userInputToSExpr(Goal$AgdaModeVscode.getContent(goal$1, $$document)); var range$1 = buildRange(goal$1); return "" + commonPart(/* NonInteractive */1) + "( Cmd_refine_or_intro False " + index$2 + " " + range$1 + " \"" + content$2 + "\" )"; case /* ElaborateAndGive */6 : var index$3 = String(request._2.index); var normalization$4 = Command$AgdaModeVscode.Normalization.encode(request._0); - var content$3 = Parser$AgdaModeVscode.userInput(request._1); + var content$3 = Parser$AgdaModeVscode.userInputToSExpr(request._1); return "" + commonPart(/* NonInteractive */1) + "( Cmd_elaborate_give " + normalization$4 + " " + index$3 + " noRange \"" + content$3 + "\" )"; case /* Auto */7 : var goal$2 = request._0; var index$4 = String(goal$2.index); - var content$4 = Parser$AgdaModeVscode.userInput(Goal$AgdaModeVscode.getContent(goal$2, $$document)); + var content$4 = Parser$AgdaModeVscode.userInputToSExpr(Goal$AgdaModeVscode.getContent(goal$2, $$document)); var range$2 = buildRange(goal$2); if (Util$AgdaModeVscode.Version.gte(version, "2.6.0.1")) { return "" + commonPart(/* NonInteractive */1) + "( Cmd_autoOne " + index$4 + " " + range$2 + " \"" + content$4 + "\" )"; @@ -178,22 +178,22 @@ function encode($$document, version, filepath, backend, libraryPath, highlightin case /* Case */8 : var goal$3 = request._0; var index$5 = String(goal$3.index); - var content$5 = Parser$AgdaModeVscode.userInput(Goal$AgdaModeVscode.getContent(goal$3, $$document)); + var content$5 = Parser$AgdaModeVscode.userInputToSExpr(Goal$AgdaModeVscode.getContent(goal$3, $$document)); var range$3 = buildRange(goal$3); return "" + commonPart(/* NonInteractive */1) + "( Cmd_make_case " + index$5 + " " + range$3 + " \"" + content$5 + "\" )"; case /* HelperFunctionType */9 : var index$6 = String(request._2.index); var normalization$5 = Command$AgdaModeVscode.Normalization.encode(request._0); - var content$6 = Parser$AgdaModeVscode.userInput(request._1); + var content$6 = Parser$AgdaModeVscode.userInputToSExpr(request._1); return "" + commonPart(/* NonInteractive */1) + "( Cmd_helper_function " + normalization$5 + " " + index$6 + " noRange \"" + content$6 + "\" )"; case /* InferType */10 : var index$7 = String(request._2.index); var normalization$6 = Command$AgdaModeVscode.Normalization.encode(request._0); - var content$7 = Parser$AgdaModeVscode.userInput(request._1); + var content$7 = Parser$AgdaModeVscode.userInputToSExpr(request._1); return "" + commonPart(/* NonInteractive */1) + "( Cmd_infer " + normalization$6 + " " + index$7 + " noRange \"" + content$7 + "\" )"; case /* InferTypeGlobal */11 : var normalization$7 = Command$AgdaModeVscode.Normalization.encode(request._0); - var content$8 = Parser$AgdaModeVscode.userInput(request._1); + var content$8 = Parser$AgdaModeVscode.userInputToSExpr(request._1); return "" + commonPart(/* None */0) + "( Cmd_infer_toplevel " + normalization$7 + " \"" + content$8 + "\" )"; case /* Context */12 : var index$8 = String(request._1.index); @@ -210,28 +210,28 @@ function encode($$document, version, filepath, backend, libraryPath, highlightin case /* GoalTypeContextAndInferredType */15 : var index$11 = String(request._2.index); var normalization$11 = Command$AgdaModeVscode.Normalization.encode(request._0); - var content$9 = Parser$AgdaModeVscode.userInput(request._1); + var content$9 = Parser$AgdaModeVscode.userInputToSExpr(request._1); return "" + commonPart(/* NonInteractive */1) + "( Cmd_goal_type_context_infer " + normalization$11 + " " + index$11 + " noRange \"" + content$9 + "\" )"; case /* GoalTypeContextAndCheckedType */16 : var index$12 = String(request._2.index); var normalization$12 = Command$AgdaModeVscode.Normalization.encode(request._0); - var content$10 = Parser$AgdaModeVscode.userInput(request._1); + var content$10 = Parser$AgdaModeVscode.userInputToSExpr(request._1); return "" + commonPart(/* NonInteractive */1) + "( Cmd_goal_type_context_check " + normalization$12 + " " + index$12 + " noRange \"" + content$10 + "\" )"; case /* ModuleContents */17 : var index$13 = String(request._2.index); var normalization$13 = Command$AgdaModeVscode.Normalization.encode(request._0); - var content$11 = Parser$AgdaModeVscode.userInput(request._1); + var content$11 = Parser$AgdaModeVscode.userInputToSExpr(request._1); return "" + commonPart(/* NonInteractive */1) + "( Cmd_show_module_contents " + normalization$13 + " " + index$13 + " noRange \"" + content$11 + "\" )"; case /* ModuleContentsGlobal */18 : var normalization$14 = Command$AgdaModeVscode.Normalization.encode(request._0); - var content$12 = Parser$AgdaModeVscode.userInput(request._1); + var content$12 = Parser$AgdaModeVscode.userInputToSExpr(request._1); return "" + commonPart(/* None */0) + "( Cmd_show_module_contents_toplevel " + normalization$14 + " \"" + content$12 + "\" )"; case /* ComputeNormalForm */19 : var computeMode = request._0; var index$14 = String(request._2.index); var ignoreAbstract = Pervasives.string_of_bool(Command$AgdaModeVscode.ComputeMode.ignoreAbstract(computeMode)); var computeMode$1 = Command$AgdaModeVscode.ComputeMode.encode(computeMode); - var content$13 = Parser$AgdaModeVscode.userInput(request._1); + var content$13 = Parser$AgdaModeVscode.userInputToSExpr(request._1); if (Util$AgdaModeVscode.Version.gte(version, "2.5.2")) { return "" + commonPart(/* NonInteractive */1) + "( Cmd_compute " + computeMode$1 + " " + index$14 + " noRange \"" + content$13 + "\" )"; } else { @@ -241,7 +241,7 @@ function encode($$document, version, filepath, backend, libraryPath, highlightin var computeMode$2 = request._0; var ignoreAbstract$1 = Pervasives.string_of_bool(Command$AgdaModeVscode.ComputeMode.ignoreAbstract(computeMode$2)); var computeMode$3 = Command$AgdaModeVscode.ComputeMode.encode(computeMode$2); - var content$14 = Parser$AgdaModeVscode.userInput(request._1); + var content$14 = Parser$AgdaModeVscode.userInputToSExpr(request._1); if (Util$AgdaModeVscode.Version.gte(version, "2.5.2")) { return "" + commonPart(/* NonInteractive */1) + "( Cmd_compute_toplevel " + computeMode$3 + " \"" + content$14 + "\" )"; } else { @@ -249,10 +249,10 @@ function encode($$document, version, filepath, backend, libraryPath, highlightin } case /* WhyInScope */21 : var index$15 = String(request._1.index); - var content$15 = Parser$AgdaModeVscode.userInput(request._0); + var content$15 = Parser$AgdaModeVscode.userInputToSExpr(request._0); return "" + commonPart(/* NonInteractive */1) + "( Cmd_why_in_scope " + index$15 + " noRange \"" + content$15 + "\" )"; case /* WhyInScopeGlobal */22 : - var content$16 = Parser$AgdaModeVscode.userInput(request._0); + var content$16 = Parser$AgdaModeVscode.userInputToSExpr(request._0); return "" + commonPart(/* None */0) + "( Cmd_why_in_scope_toplevel \"" + content$16 + "\" )"; } diff --git a/lib/js/src/Response.bs.js b/lib/js/src/Response.bs.js index dd7afbd2..d046190e 100644 --- a/lib/js/src/Response.bs.js +++ b/lib/js/src/Response.bs.js @@ -114,7 +114,7 @@ function parse(xs) { if (match.TAG !== /* A */0) { return ; } - var payload = Js_string.replaceByRe(/\r\n|\n/g, "\n", match._0); + var payload = Js_string.replaceByRe(/\\n|\\r\\n/g, "\n", match._0); var match$1 = Belt_Array.get(xs, 0); if (match$1 === undefined) { return ; diff --git a/src/Parser/Parser.res b/src/Parser/Parser.res index ed445ace..e8a0ae34 100644 --- a/src/Parser/Parser.res +++ b/src/Parser/Parser.res @@ -243,13 +243,11 @@ module Error = { } } -let userInput = (s: string): string => - // let trim = s => - // Atom.Config.get("agda-mode.trimSpaces") ? String.trim(s) : s; +let userInputToSExpr = (s: string): string => s - |> Js.String.replaceByRe(%re("/\\\\/g"), "\\\\") - |> Js.String.replaceByRe(%re("/\\\"/g"), "\\\"") - |> Js.String.replaceByRe(%re("/\\n/g"), "\\n") + |> Js.String.replaceByRe(%re("/\\/g"), "\\\\") + |> Js.String.replaceByRe(%re("/\"/g"), "\\\"") + |> Js.String.replaceByRe(%re("/\n/g"), "\\n") |> Js.String.trim let filepath = s => { @@ -268,7 +266,3 @@ let filepath = s => { replaced } - -let agdaOutput = Js.String.replaceByRe(%re("/\\\\n/g"), "\n") - -let commandLineArgs = s => s |> Js.String.replaceByRe(%re("/\\s+/g"), " ") |> Js.String.split(" ") diff --git a/src/Request.res b/src/Request.res index 9d14671d..c9d512ca 100644 --- a/src/Request.res +++ b/src/Request.res @@ -143,7 +143,7 @@ let encode = ( } | SearchAbout(normalization, expr) => let normalization = Command.Normalization.encode(normalization) - let content = Parser.userInput(expr) + let content = Parser.userInputToSExpr(expr) `${commonPart(NonInteractive)}( Cmd_search_about_toplevel ${normalization} "${content}" )` // Related issue and commit of agda/agda @@ -151,7 +151,7 @@ let encode = ( // https://github.com/agda/agda/commit/021e6d24f47bac462d8bc88e2ea685d6156197c4 | Give(goal) => let index: string = string_of_int(goal.index) - let content: string = Goal.getContent(goal, document)->Parser.userInput + let content: string = Goal.getContent(goal, document)->Parser.userInputToSExpr let range: string = buildRange(goal) if Util.Version.gte(version, "2.5.3") { `${commonPart(NonInteractive)}( Cmd_give WithoutForce ${index} ${range} "${content}" )` @@ -161,14 +161,14 @@ let encode = ( | Refine(goal) => let index: string = string_of_int(goal.index) - let content: string = Goal.getContent(goal, document)->Parser.userInput + let content: string = Goal.getContent(goal, document)->Parser.userInputToSExpr let range: string = buildRange(goal) `${commonPart(NonInteractive)}( Cmd_refine_or_intro False ${index} ${range} "${content}" )` | ElaborateAndGive(normalization, expr, goal) => let index = string_of_int(goal.index) let normalization = Command.Normalization.encode(normalization) - let content = Parser.userInput(expr) + let content = Parser.userInputToSExpr(expr) `${commonPart( NonInteractive, @@ -176,7 +176,7 @@ let encode = ( | Auto(goal) => let index: string = string_of_int(goal.index) - let content: string = Goal.getContent(goal, document)->Parser.userInput + let content: string = Goal.getContent(goal, document)->Parser.userInputToSExpr let range: string = buildRange(goal) if Util.Version.gte(version, "2.6.0.1") { // after 2.6.0.1 @@ -188,14 +188,14 @@ let encode = ( | Case(goal) => let index: string = string_of_int(goal.index) - let content: string = Goal.getContent(goal, document)->Parser.userInput + let content: string = Goal.getContent(goal, document)->Parser.userInputToSExpr let range: string = buildRange(goal) `${commonPart(NonInteractive)}( Cmd_make_case ${index} ${range} "${content}" )` | HelperFunctionType(normalization, expr, goal) => let index = string_of_int(goal.index) let normalization = Command.Normalization.encode(normalization) - let content = Parser.userInput(expr) + let content = Parser.userInputToSExpr(expr) `${commonPart( NonInteractive, @@ -204,12 +204,12 @@ let encode = ( | InferType(normalization, expr, goal) => let index = string_of_int(goal.index) let normalization = Command.Normalization.encode(normalization) - let content = Parser.userInput(expr) + let content = Parser.userInputToSExpr(expr) `${commonPart(NonInteractive)}( Cmd_infer ${normalization} ${index} noRange "${content}" )` | InferTypeGlobal(normalization, expr) => let normalization = Command.Normalization.encode(normalization) - let content = Parser.userInput(expr) + let content = Parser.userInputToSExpr(expr) `${commonPart(None)}( Cmd_infer_toplevel ${normalization} "${content}" )` @@ -231,7 +231,7 @@ let encode = ( | GoalTypeContextAndInferredType(normalization, expr, goal) => let index: string = string_of_int(goal.index) let normalization: string = Command.Normalization.encode(normalization) - let content = Parser.userInput(expr) + let content = Parser.userInputToSExpr(expr) `${commonPart( NonInteractive, @@ -240,7 +240,7 @@ let encode = ( | GoalTypeContextAndCheckedType(normalization, expr, goal) => let index: string = string_of_int(goal.index) let normalization: string = Command.Normalization.encode(normalization) - let content = Parser.userInput(expr) + let content = Parser.userInputToSExpr(expr) `${commonPart( NonInteractive, @@ -249,7 +249,7 @@ let encode = ( | ModuleContents(normalization, expr, goal) => let index: string = string_of_int(goal.index) let normalization: string = Command.Normalization.encode(normalization) - let content = Parser.userInput(expr) + let content = Parser.userInputToSExpr(expr) `${commonPart( NonInteractive, @@ -257,7 +257,7 @@ let encode = ( | ModuleContentsGlobal(normalization, expr) => let normalization: string = Command.Normalization.encode(normalization) - let content = Parser.userInput(expr) + let content = Parser.userInputToSExpr(expr) `${commonPart(None)}( Cmd_show_module_contents_toplevel ${normalization} "${content}" )` @@ -265,7 +265,7 @@ let encode = ( let index: string = string_of_int(goal.index) let ignoreAbstract: string = string_of_bool(Command.ComputeMode.ignoreAbstract(computeMode)) let computeMode: string = Command.ComputeMode.encode(computeMode) - let content: string = Parser.userInput(expr) + let content: string = Parser.userInputToSExpr(expr) if Util.Version.gte(version, "2.5.2") { `${commonPart(NonInteractive)}( Cmd_compute ${computeMode} ${index} noRange "${content}" )` @@ -276,7 +276,7 @@ let encode = ( | ComputeNormalFormGlobal(computeMode, expr) => let ignoreAbstract: string = string_of_bool(Command.ComputeMode.ignoreAbstract(computeMode)) let computeMode: string = Command.ComputeMode.encode(computeMode) - let content = Parser.userInput(expr) + let content = Parser.userInputToSExpr(expr) if Util.Version.gte(version, "2.5.2") { `${commonPart(NonInteractive)}( Cmd_compute_toplevel ${computeMode} "${content}" )` @@ -286,12 +286,12 @@ let encode = ( | WhyInScope(expr, goal) => let index: string = string_of_int(goal.index) - let content: string = Parser.userInput(expr) + let content: string = Parser.userInputToSExpr(expr) `${commonPart(NonInteractive)}( Cmd_why_in_scope ${index} noRange "${content}" )` | WhyInScopeGlobal(expr) => - let content = Parser.userInput(expr) + let content = Parser.userInputToSExpr(expr) `${commonPart(None)}( Cmd_why_in_scope_toplevel "${content}" )` } } diff --git a/src/Response.res b/src/Response.res index d4acc185..37834559 100644 --- a/src/Response.res +++ b/src/Response.res @@ -80,11 +80,12 @@ module DisplayInfo = { | Version(string) => "Version " ++ string } - let parse = (xs: array): option => + let parse = (xs: array): option =>{ switch xs[1] { | Some(A(rawPayload)) => - // replace all "\r\n" and "\n" with "\n" - let payload = Js.String.replaceByRe(%re("/\r\n|\n/g"), "\n", rawPayload) + // there are some explicitly escaped EOLs like "\n" or "\r\n" in the s-expressions + // we need to replace them with actual EOLs + let payload = Js.String.replaceByRe(%re("/\\n|\\r\\n/g"), "\n", rawPayload) switch xs[0] { | Some(A("*Compilation result*")) => Some(CompilationOk(payload)) | Some(A("*Constraints*")) => @@ -110,7 +111,7 @@ module DisplayInfo = { | _ => None } | _ => None - } + }} } // Here's the corresponding datatype in Haskell: From b3605ef25edc1ddea50108336fceed49d2af001e Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sat, 9 Dec 2023 01:16:32 +0800 Subject: [PATCH 064/109] [ new ] Tests for issue#175 --- lib/js/src/Parser/Parser.bs.js | 2 +- lib/js/test/tests/Parser/Test__Parser.bs.js | 30 ++++++++++++++++ .../tests/Parser/Test__Parser__Agda.bs.js | 14 ++++---- src/Parser/Parser.res | 1 + .../Parser/Response/Issue95-2.6.1-Unix.out | 4 ++- .../Response/QuotationMark-2.6.0-Unix.out | 4 ++- test/tests/Parser/Test__Parser.res | 35 +++++++++++++++++++ test/tests/Parser/Test__Parser__Agda.res | 14 ++++---- 8 files changed, 87 insertions(+), 17 deletions(-) create mode 100644 lib/js/test/tests/Parser/Test__Parser.bs.js create mode 100644 test/tests/Parser/Test__Parser.res diff --git a/lib/js/src/Parser/Parser.bs.js b/lib/js/src/Parser/Parser.bs.js index b8cb72e2..f7632bb0 100644 --- a/lib/js/src/Parser/Parser.bs.js +++ b/lib/js/src/Parser/Parser.bs.js @@ -373,7 +373,7 @@ var $$Error = { }; function userInputToSExpr(s) { - return Js_string.replaceByRe(/\n/g, "\\n", Js_string.replaceByRe(/\"/g, "\\\"", Js_string.replaceByRe(/\\/g, "\\\\", s))).trim(); + return Js_string.replaceByRe(/\n/g, "\\n", Js_string.replaceByRe(/\r\n/g, "\\r\\n", Js_string.replaceByRe(/\"/g, "\\\"", Js_string.replaceByRe(/\\/g, "\\\\", s)))).trim(); } function filepath(s) { diff --git a/lib/js/test/tests/Parser/Test__Parser.bs.js b/lib/js/test/tests/Parser/Test__Parser.bs.js new file mode 100644 index 00000000..b4026d5f --- /dev/null +++ b/lib/js/test/tests/Parser/Test__Parser.bs.js @@ -0,0 +1,30 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Mocha$BsMocha = require("bs-mocha/lib/js/src/Mocha.bs.js"); +var Assert$BsMocha = require("bs-mocha/lib/js/src/Assert.bs.js"); +var Parser$AgdaModeVscode = require("../../../src/Parser/Parser.bs.js"); + +Mocha$BsMocha.describe("when running Parser.userInputToSExpr")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should make escaped backslash explicit")(undefined, undefined, undefined, (function (param) { + var actual = Parser$AgdaModeVscode.userInputToSExpr("\\ x -> x"); + Assert$BsMocha.deep_equal(undefined, actual, "\\\\ x -> x"); + })); + Mocha$BsMocha.it("should make escaped newline on Unix explicit")(undefined, undefined, undefined, (function (param) { + var actual = Parser$AgdaModeVscode.userInputToSExpr("x\ny"); + Assert$BsMocha.deep_equal(undefined, actual, "x\\ny"); + })); + Mocha$BsMocha.it("should make escaped newline on Windows explicit")(undefined, undefined, undefined, (function (param) { + var actual = Parser$AgdaModeVscode.userInputToSExpr("x\r\ny"); + Assert$BsMocha.deep_equal(undefined, actual, "x\\r\\ny"); + })); + Mocha$BsMocha.it("should make escaped double quote explicit")(undefined, undefined, undefined, (function (param) { + var actual = Parser$AgdaModeVscode.userInputToSExpr("\"x\""); + Assert$BsMocha.deep_equal(undefined, actual, "\\\"x\\\""); + })); + })); + +var Assert; + +exports.Assert = Assert; +/* Not a pure module */ diff --git a/lib/js/test/tests/Parser/Test__Parser__Agda.bs.js b/lib/js/test/tests/Parser/Test__Parser__Agda.bs.js index bb9c060a..d71cdd84 100644 --- a/lib/js/test/tests/Parser/Test__Parser__Agda.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__Agda.bs.js @@ -8,7 +8,7 @@ var Agda$AgdaModeVscode = require("../../../src/Agda.bs.js"); var RichText$AgdaModeVscode = require("../../../src/View/Component/RichText.bs.js"); Mocha$BsMocha.describe("when running Agda.Expr.parse")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.it("should should parse a plain string")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should parse a plain string")(undefined, undefined, undefined, (function (param) { var expected = [{ TAG: 0, _0: "ℕ", @@ -17,7 +17,7 @@ Mocha$BsMocha.describe("when running Agda.Expr.parse")(undefined, undefined, und var actual = Agda$AgdaModeVscode.Expr.parse("ℕ"); Assert$BsMocha.deep_equal(undefined, actual, expected); })); - Mocha$BsMocha.it("should should parse a question mark")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should parse a question mark")(undefined, undefined, undefined, (function (param) { var expected = [{ TAG: 1, _0: 3, @@ -26,7 +26,7 @@ Mocha$BsMocha.describe("when running Agda.Expr.parse")(undefined, undefined, und var actual = Agda$AgdaModeVscode.Expr.parse("?3"); Assert$BsMocha.deep_equal(undefined, actual, expected); })); - Mocha$BsMocha.it("should should parse a underscore")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should parse a underscore")(undefined, undefined, undefined, (function (param) { var expected = [{ TAG: 2, _0: "_4hi", @@ -38,7 +38,7 @@ Mocha$BsMocha.describe("when running Agda.Expr.parse")(undefined, undefined, und })); Mocha$BsMocha.describe("when running Agda.OutputConstraint.parse")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.it("should should parse OfType")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should parse OfType")(undefined, undefined, undefined, (function (param) { var expected = { TAG: 0, _0: RichText$AgdaModeVscode.string("x"), @@ -48,7 +48,7 @@ Mocha$BsMocha.describe("when running Agda.OutputConstraint.parse")(undefined, un var actual = Curry._1(Agda$AgdaModeVscode.OutputConstraint.parse, "x : ℕ"); Assert$BsMocha.deep_equal(undefined, actual, expected); })); - Mocha$BsMocha.it("should should parse JustType")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should parse JustType")(undefined, undefined, undefined, (function (param) { var expected = { TAG: 1, _0: RichText$AgdaModeVscode.string("ℕ"), @@ -57,7 +57,7 @@ Mocha$BsMocha.describe("when running Agda.OutputConstraint.parse")(undefined, un var actual = Curry._1(Agda$AgdaModeVscode.OutputConstraint.parse, "Type ℕ"); Assert$BsMocha.deep_equal(undefined, actual, expected); })); - Mocha$BsMocha.it("should should parse JustSort on Windows")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should parse JustSort on Windows")(undefined, undefined, undefined, (function (param) { var expected = { TAG: 2, _0: RichText$AgdaModeVscode.string("ℕ\r\n ℕ"), @@ -66,7 +66,7 @@ Mocha$BsMocha.describe("when running Agda.OutputConstraint.parse")(undefined, un var actual = Curry._1(Agda$AgdaModeVscode.OutputConstraint.parse, "Sort ℕ\r\n ℕ"); Assert$BsMocha.deep_equal(undefined, actual, expected); })); - Mocha$BsMocha.it("should should parse JustSort on Unix")(undefined, undefined, undefined, (function (param) { + Mocha$BsMocha.it("should parse JustSort on Unix")(undefined, undefined, undefined, (function (param) { var expected = { TAG: 2, _0: RichText$AgdaModeVscode.string("ℕ\n ℕ"), diff --git a/src/Parser/Parser.res b/src/Parser/Parser.res index e8a0ae34..8d42ec85 100644 --- a/src/Parser/Parser.res +++ b/src/Parser/Parser.res @@ -247,6 +247,7 @@ let userInputToSExpr = (s: string): string => s |> Js.String.replaceByRe(%re("/\\/g"), "\\\\") |> Js.String.replaceByRe(%re("/\"/g"), "\\\"") + |> Js.String.replaceByRe(%re("/\r\n/g"), "\\r\\n") |> Js.String.replaceByRe(%re("/\n/g"), "\\n") |> Js.String.trim diff --git a/test/tests/Parser/Response/Issue95-2.6.1-Unix.out b/test/tests/Parser/Response/Issue95-2.6.1-Unix.out index a9ff6cfa..90bf728a 100644 --- a/test/tests/Parser/Response/Issue95-2.6.1-Unix.out +++ b/test/tests/Parser/Response/Issue95-2.6.1-Unix.out @@ -7,7 +7,9 @@ NonLast HighlightingInfoIndirect /var/folders/r2/lx4mzz2x1kn940m7lhnv0b_h0000gn/ NonLast HighlightingInfoIndirect /var/folders/r2/lx4mzz2x1kn940m7lhnv0b_h0000gn/T/agda2-mode39869-2 NonLast HighlightingInfoIndirect /var/folders/r2/lx4mzz2x1kn940m7lhnv0b_h0000gn/T/agda2-mode39869-3 NonLast HighlightingInfoIndirect /var/folders/r2/lx4mzz2x1kn940m7lhnv0b_h0000gn/T/agda2-mode39869-4 -NonLast DisplayInfo Error /Users/omega/github/agda-mode/test/ManualTests/Issue95.agda:8,5-9\nString != List Char\nwhen checking that the expression "\\" has type List Char +NonLast DisplayInfo Error /Users/omega/github/agda-mode/test/ManualTests/Issue95.agda:8,5-9 +String != List Char +when checking that the expression "\\" has type List Char Last(3) JumpToError /Users/omega/github/agda-mode/test/ManualTests/Issue95.agda 144 NonLast HighlightingInfoIndirect /var/folders/r2/lx4mzz2x1kn940m7lhnv0b_h0000gn/T/agda2-mode39869-5 NonLast Status: implicit arguments not displayed, module not type checked diff --git a/test/tests/Parser/Response/QuotationMark-2.6.0-Unix.out b/test/tests/Parser/Response/QuotationMark-2.6.0-Unix.out index ca358361..a8b2739d 100644 --- a/test/tests/Parser/Response/QuotationMark-2.6.0-Unix.out +++ b/test/tests/Parser/Response/QuotationMark-2.6.0-Unix.out @@ -7,7 +7,9 @@ NonLast HighlightingInfoIndirect /var/folders/r2/lx4mzz2x1kn940m7lhnv0b_h0000gn/ NonLast HighlightingInfoIndirect /var/folders/r2/lx4mzz2x1kn940m7lhnv0b_h0000gn/T/agda2-mode19020-2 NonLast HighlightingInfoIndirect /var/folders/r2/lx4mzz2x1kn940m7lhnv0b_h0000gn/T/agda2-mode19020-3 NonLast HighlightingInfoIndirect /var/folders/r2/lx4mzz2x1kn940m7lhnv0b_h0000gn/T/agda2-mode19020-4 -NonLast DisplayInfo Error /Users/omega/github/agda-mode/test/ManualTests/QuotationMark.agda:8,5-8\nString != List Char\nwhen checking that the expression ")" has type List Char +NonLast DisplayInfo Error /Users/omega/github/agda-mode/test/ManualTests/QuotationMark.agda:8,5-8 +String != List Char +when checking that the expression ")" has type List Char Last(3) JumpToError /Users/omega/github/agda-mode/test/ManualTests/QuotationMark.agda 150 Last(3) JumpToError /Users/omega/github/agda-mode/test/ManualTests/QuotationMark.agda 150 NonLast HighlightingInfoIndirect /var/folders/r2/lx4mzz2x1kn940m7lhnv0b_h0000gn/T/agda2-mode19020-5 diff --git a/test/tests/Parser/Test__Parser.res b/test/tests/Parser/Test__Parser.res new file mode 100644 index 00000000..4e22df12 --- /dev/null +++ b/test/tests/Parser/Test__Parser.res @@ -0,0 +1,35 @@ +open! BsMocha.Mocha +open! Belt + +module Assert = BsMocha.Assert + +describe("when running Parser.userInputToSExpr", () => { + it("should make escaped backslash explicit", () => { + let raw = "\\ x -> x" + let expected = "\\\\ x -> x" + let actual = Parser.userInputToSExpr(raw) + Assert.deep_equal(actual, expected) + }) + + it("should make escaped newline on Unix explicit", () => { + let raw = "x\ny" + let expected = "x\\ny" + let actual = Parser.userInputToSExpr(raw) + Assert.deep_equal(actual, expected) + }) + + it("should make escaped newline on Windows explicit", () => { + let raw = "x\r\ny" + let expected = "x\\r\\ny" + let actual = Parser.userInputToSExpr(raw) + Assert.deep_equal(actual, expected) + }) + + it("should make escaped double quote explicit", () => { + let raw = "\"x\"" + let expected = "\\\"x\\\"" + let actual = Parser.userInputToSExpr(raw) + Assert.deep_equal(actual, expected) + }) + +}) \ No newline at end of file diff --git a/test/tests/Parser/Test__Parser__Agda.res b/test/tests/Parser/Test__Parser__Agda.res index 0118b776..ebe6942d 100644 --- a/test/tests/Parser/Test__Parser__Agda.res +++ b/test/tests/Parser/Test__Parser__Agda.res @@ -4,20 +4,20 @@ open! Belt module Assert = BsMocha.Assert describe("when running Agda.Expr.parse", () => { - it("should should parse a plain string", () => { + it("should parse a plain string", () => { let raw = `ℕ` let expected = Some([Agda.Term.Plain("ℕ")]) let actual = Agda.Expr.parse(raw) Assert.deep_equal(actual, expected) }) - it("should should parse a question mark", () => { + it("should parse a question mark", () => { let raw = `?3` let expected = Some([Agda.Term.QuestionMark(3)]) let actual = Agda.Expr.parse(raw) Assert.deep_equal(actual, expected) }) - it("should should parse a underscore", () => { + it("should parse a underscore", () => { let raw = ` _4hi ` let expected = Some([Agda.Term.Underscore("_4hi")]) let actual = Agda.Expr.parse(raw) @@ -26,21 +26,21 @@ describe("when running Agda.Expr.parse", () => { }) describe("when running Agda.OutputConstraint.parse", () => { - it("should should parse OfType", () => { + it("should parse OfType", () => { let raw = `x : ℕ` let expected = Some(Agda.OutputConstraint.OfType(RichText.string("x"), RichText.string("ℕ"))) let actual = Agda.OutputConstraint.parse(raw) Assert.deep_equal(actual, expected) }) - it("should should parse JustType", () => { + it("should parse JustType", () => { let raw = `Type ℕ` let expected = Some(Agda.OutputConstraint.JustType(RichText.string("ℕ"))) let actual = Agda.OutputConstraint.parse(raw) Assert.deep_equal(actual, expected) }) - it("should should parse JustSort on Windows", () => { + it("should parse JustSort on Windows", () => { let raw = "Sort ℕ\r\n ℕ" let expected = Some( Agda.OutputConstraint.JustSort( @@ -51,7 +51,7 @@ describe("when running Agda.OutputConstraint.parse", () => { Assert.deep_equal(actual, expected) }) - it("should should parse JustSort on Unix", () => { + it("should parse JustSort on Unix", () => { let raw = "Sort ℕ\n ℕ" let expected = Some( Agda.OutputConstraint.JustSort( From e676b934fa88310e3abc2e72bd16e6c18dff160d Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sat, 9 Dec 2023 13:01:48 +0800 Subject: [PATCH 065/109] [ new ] Join strings with OS-specific EOLs --- lib/js/src/Util/Util.bs.js | 17 ++++++++++++++++- lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js | 2 +- .../tests/Parser/Test__Parser__Response.bs.js | 2 +- .../Parser/Test__Parser__SExpression.bs.js | 4 ++-- .../tests/Parser/Test__Parser__SourceFile.bs.js | 2 +- lib/js/test/tests/Test__Util.bs.js | 8 ++++---- src/Util/Util.res | 8 ++++++-- src/View/Panel/Emacs/Emacs__Parser.res | 2 +- test/tests/Parser/Test__Parser__Response.res | 2 +- test/tests/Parser/Test__Parser__SExpression.res | 4 ++-- test/tests/Parser/Test__Parser__SourceFile.res | 2 +- test/tests/Test__Util.res | 4 ++-- 12 files changed, 38 insertions(+), 19 deletions(-) diff --git a/lib/js/src/Util/Util.bs.js b/lib/js/src/Util/Util.bs.js index cabfa04f..8caafaef 100644 --- a/lib/js/src/Util/Util.bs.js +++ b/lib/js/src/Util/Util.bs.js @@ -1,6 +1,7 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; +var Os = require("os"); var Curry = require("rescript/lib/js/curry.js"); var React = require("react"); var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); @@ -429,6 +430,19 @@ var Dict = { $$delete: $$delete }; +function lines(s) { + return s.split(Os.EOL); +} + +function unlines(xs) { + return xs.join(Os.EOL); +} + +var $$String$1 = { + lines: lines, + unlines: unlines +}; + var React$p; exports.Result = Result; @@ -445,4 +459,5 @@ exports.JsError = JsError; exports.List = List; exports.P = P; exports.Dict = Dict; -/* react Not a pure module */ +exports.$$String = $$String$1; +/* os Not a pure module */ diff --git a/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js b/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js index bb141127..6e7d8e7f 100644 --- a/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js +++ b/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js @@ -169,7 +169,7 @@ function aggregateLines(lines) { ]; } })), (function (param) { - return Js_array.joinWith("\n", Js_array.slice(param[0], param[1], lines)); + return Util$AgdaModeVscode.$$String.unlines(lines.slice(param[0], param[1])); })); } diff --git a/lib/js/test/tests/Parser/Test__Parser__Response.bs.js b/lib/js/test/tests/Parser/Test__Parser__Response.bs.js index e5555df0..64393878 100644 --- a/lib/js/test/tests/Parser/Test__Parser__Response.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__Response.bs.js @@ -29,7 +29,7 @@ Mocha$BsMocha.describe("when parsing responses")(undefined, undefined, undefined return Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (param) { return Test__Parser__SExpression$AgdaModeVscode.parseSExpression(partial_arg, param); })), toPrioritizedResponses), (function (param) { - return Test__Util$AgdaModeVscode.Strings.serializeWith(Response$AgdaModeVscode.Prioritized.toString, param); + return Test__Util$AgdaModeVscode.Strings.unlinesWith(Response$AgdaModeVscode.Prioritized.toString, param); }))); }), Test__Util$AgdaModeVscode.Golden.readFile(filepath)); })); diff --git a/lib/js/test/tests/Parser/Test__Parser__SExpression.bs.js b/lib/js/test/tests/Parser/Test__Parser__SExpression.bs.js index 6a49dafe..ed33280d 100644 --- a/lib/js/test/tests/Parser/Test__Parser__SExpression.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__SExpression.bs.js @@ -45,7 +45,7 @@ Mocha$BsMocha.describe("when parsing S-expressions as a whole")(undefined, undef return Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (param) { return parseSExpression(partial_arg, param); })), (function (param) { - return Test__Util$AgdaModeVscode.Strings.serializeWith(Parser$AgdaModeVscode.SExpression.toString, param); + return Test__Util$AgdaModeVscode.Strings.unlinesWith(Parser$AgdaModeVscode.SExpression.toString, param); }))); }), Test__Util$AgdaModeVscode.Golden.readFile(filepath)); })); @@ -68,7 +68,7 @@ Mocha$BsMocha.describe("when parsing S-expressions incrementally")(undefined, un return Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (param) { return parseSExpression(partial_arg, param); })), (function (param) { - return Test__Util$AgdaModeVscode.Strings.serializeWith(Parser$AgdaModeVscode.SExpression.toString, param); + return Test__Util$AgdaModeVscode.Strings.unlinesWith(Parser$AgdaModeVscode.SExpression.toString, param); }))); }), Test__Util$AgdaModeVscode.Golden.readFile(filepath)); })); diff --git a/lib/js/test/tests/Parser/Test__Parser__SourceFile.bs.js b/lib/js/test/tests/Parser/Test__Parser__SourceFile.bs.js index 232c2422..b8be6670 100644 --- a/lib/js/test/tests/Parser/Test__Parser__SourceFile.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__SourceFile.bs.js @@ -62,7 +62,7 @@ if (Test__Util$AgdaModeVscode.onUnix) { return Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (param) { return SourceFile$AgdaModeVscode.parse(partial_arg, filepath, param); })), (function (param) { - return Test__Util$AgdaModeVscode.Strings.serializeWith(SourceFile$AgdaModeVscode.Diff.toString, param); + return Test__Util$AgdaModeVscode.Strings.unlinesWith(SourceFile$AgdaModeVscode.Diff.toString, param); }))); }), Test__Util$AgdaModeVscode.Golden.readFile(filepath)); })); diff --git a/lib/js/test/tests/Test__Util.bs.js b/lib/js/test/tests/Test__Util.bs.js index 6f666a56..2e0fdef3 100644 --- a/lib/js/test/tests/Test__Util.bs.js +++ b/lib/js/test/tests/Test__Util.bs.js @@ -225,11 +225,11 @@ function normalize(string) { return Js_string.replaceByRe(/\r\n|\n/g, "\n", string.trim()); } -function serialize(xs) { +function unlines(xs) { return Js_array.joinWith("\n", xs); } -function serializeWith(f, xs) { +function unlinesWith(f, xs) { return Js_array.joinWith("\n", Belt_Array.map(xs, f)); } @@ -255,8 +255,8 @@ function breakInput(input, breakpoints) { var Strings = { normalize: normalize, - serialize: serialize, - serializeWith: serializeWith, + unlines: unlines, + unlinesWith: unlinesWith, breakInput: breakInput }; diff --git a/src/Util/Util.res b/src/Util/Util.res index cd8decbe..342d1576 100644 --- a/src/Util/Util.res +++ b/src/Util/Util.res @@ -250,7 +250,11 @@ module P = { } } - module Dict = { let delete: (Js.Dict.t<'a>, string) => unit = %raw("function (dict, key) {delete dict[key]}") -} \ No newline at end of file +} + +module String = { + let lines = s => s->Js.String2.split(NodeJs.Os.eol) + let unlines = xs => xs->Js.Array2.joinWith(NodeJs.Os.eol) +} diff --git a/src/View/Panel/Emacs/Emacs__Parser.res b/src/View/Panel/Emacs/Emacs__Parser.res index d58b4c71..b4359689 100644 --- a/src/View/Panel/Emacs/Emacs__Parser.res +++ b/src/View/Panel/Emacs/Emacs__Parser.res @@ -93,7 +93,7 @@ let aggregateLines: array => array = lines => { | Some(n) => (index, n) } ) - ->Array.map(((start, end_)) => lines |> Js.Array.slice(~start, ~end_) |> Js.Array.joinWith("\n")) + ->Array.map(((start, end_)) => lines->Js.Array2.slice(~start, ~end_)->Util.String.unlines) } let captures = (regex, handler, raw) => diff --git a/test/tests/Parser/Test__Parser__Response.res b/test/tests/Parser/Test__Parser__Response.res index 45000210..366a9484 100644 --- a/test/tests/Parser/Test__Parser__Response.res +++ b/test/tests/Parser/Test__Parser__Response.res @@ -28,7 +28,7 @@ describe("when parsing responses", () => raw ->Golden.map(parseSExpression([])) ->Golden.map(toPrioritizedResponses) - ->Golden.map(Strings.serializeWith(Response.Prioritized.toString)) + ->Golden.map(Strings.unlinesWith(Response.Prioritized.toString)) ->Golden.compare ) ) diff --git a/test/tests/Parser/Test__Parser__SExpression.res b/test/tests/Parser/Test__Parser__SExpression.res index 2e65838f..06fb3929 100644 --- a/test/tests/Parser/Test__Parser__SExpression.res +++ b/test/tests/Parser/Test__Parser__SExpression.res @@ -40,7 +40,7 @@ describe("when parsing S-expressions as a whole", () => Golden.readFile(filepath) |> then_(raw => raw ->Golden.map(parseSExpression([])) - ->Golden.map(Strings.serializeWith(Parser.SExpression.toString)) + ->Golden.map(Strings.unlinesWith(Parser.SExpression.toString)) ->Golden.compare ) ) @@ -55,7 +55,7 @@ describe("when parsing S-expressions incrementally", () => Golden.readFile(filepath) |> then_(raw => raw ->Golden.map(parseSExpression([3, 23, 171, 217, 1234, 2342, 3453])) - ->Golden.map(Strings.serializeWith(Parser.SExpression.toString)) + ->Golden.map(Strings.unlinesWith(Parser.SExpression.toString)) ->Golden.compare ) ) diff --git a/test/tests/Parser/Test__Parser__SourceFile.res b/test/tests/Parser/Test__Parser__SourceFile.res index c320789e..0b381b27 100644 --- a/test/tests/Parser/Test__Parser__SourceFile.res +++ b/test/tests/Parser/Test__Parser__SourceFile.res @@ -51,7 +51,7 @@ if onUnix { Golden.readFile(filepath) |> then_(raw => raw ->Golden.map(SourceFile.parse([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], filepath)) - ->Golden.map(Strings.serializeWith(SourceFile.Diff.toString)) + ->Golden.map(Strings.unlinesWith(SourceFile.Diff.toString)) ->Golden.compare ) ) diff --git a/test/tests/Test__Util.res b/test/tests/Test__Util.res index 7c942758..9b5d822f 100644 --- a/test/tests/Test__Util.res +++ b/test/tests/Test__Util.res @@ -134,9 +134,9 @@ module Strings = { replaceByRe(%re("/\r\n|\n/g"), "\n", trim(string)) } - let serialize = xs => Js.Array.joinWith("\n", xs) + let unlines = xs => Js.Array.joinWith("\n", xs) - let serializeWith = (f, xs) => xs->Array.map(f)->serialize + let unlinesWith = (f, xs) => xs->Array.map(f)->unlines let breakInput = (input: string, breakpoints: array) => { let breakpoints' = Array.concat([0], breakpoints) From f9eb3833d8b89670441287cc81bcc76cd87ff83f Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sat, 9 Dec 2023 13:24:19 +0800 Subject: [PATCH 066/109] [ fix ] Parser for Windows filepath backslash --- lib/js/src/Parser/Parser.bs.js | 2 +- .../src/View/Panel/Emacs/Emacs__Parser2.bs.js | 17 +++++++---------- lib/js/test/tests/Test__Util.bs.js | 8 ++------ src/Parser/Parser.res | 4 ++-- src/View/Panel/Emacs/Emacs__Parser2.res | 16 ++++++++-------- test/tests/Test__Util.res | 4 +--- 6 files changed, 21 insertions(+), 30 deletions(-) diff --git a/lib/js/src/Parser/Parser.bs.js b/lib/js/src/Parser/Parser.bs.js index f7632bb0..ad4d59fd 100644 --- a/lib/js/src/Parser/Parser.bs.js +++ b/lib/js/src/Parser/Parser.bs.js @@ -379,7 +379,7 @@ function userInputToSExpr(s) { function filepath(s) { var removedBidi = Js_string.charCodeAt(0, s) === 8234.0 ? Js_string.sliceToEnd(1, s) : s; var normalized = Path.normalize(removedBidi); - return Js_string.replaceByRe(/\\\\/g, "/", normalized); + return Js_string.replaceByRe(/\\/g, "/", normalized); } exports.splitToLines = splitToLines; diff --git a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js index 8b20ec72..560b66b3 100644 --- a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js +++ b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js @@ -9,6 +9,7 @@ var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Agda$AgdaModeVscode = require("../../../Agda.bs.js"); var Item$AgdaModeVscode = require("../../Component/Item.bs.js"); +var Util$AgdaModeVscode = require("../../../Util/Util.bs.js"); var Common$AgdaModeVscode = require("../../Common.bs.js"); var Parser$AgdaModeVscode = require("../../../Parser/Parser.bs.js"); var RichText$AgdaModeVscode = require("../../Component/RichText.bs.js"); @@ -55,9 +56,7 @@ function partiteWarningsOrErrors(xs, key) { return Js_string.match_(partial_arg, param); }))); }; - return Belt_Array.map(Emacs__Parser$AgdaModeVscode.Array_.mergeWithNext(Emacs__Parser$AgdaModeVscode.Array_.partite(lines, markWarningStart), glueBack), (function (param) { - return Js_array.joinWith("\n", param); - })); + return Belt_Array.map(Emacs__Parser$AgdaModeVscode.Array_.mergeWithNext(Emacs__Parser$AgdaModeVscode.Array_.partite(lines, markWarningStart), glueBack), Util$AgdaModeVscode.$$String.unlines); })); } @@ -83,7 +82,7 @@ function parseError(raw) { } })), "errors", (function (xs) { - return [xs.join("\n")]; + return [Util$AgdaModeVscode.$$String.unlines(xs)]; })); } var isWarning = function (line) { @@ -99,11 +98,9 @@ function parseError(raw) { } }; return Emacs__Parser$AgdaModeVscode.Dict.update(Emacs__Parser$AgdaModeVscode.Dict.update(Emacs__Parser$AgdaModeVscode.Dict.partite(lines, predicate), "errors", (function (xs) { - return [xs.slice(1).join("\n")]; + return [Util$AgdaModeVscode.$$String.unlines(xs.slice(1))]; })), "warnings", (function (xs) { - return Belt_Array.map(Emacs__Parser$AgdaModeVscode.Array_.mergeWithNext(Emacs__Parser$AgdaModeVscode.Array_.partite(xs.slice(1), markWarningStart), glueBack), (function (param) { - return Js_array.joinWith("\n", param); - })); + return Belt_Array.map(Emacs__Parser$AgdaModeVscode.Array_.mergeWithNext(Emacs__Parser$AgdaModeVscode.Array_.partite(xs.slice(1), markWarningStart), glueBack), Util$AgdaModeVscode.$$String.unlines); })); } @@ -158,7 +155,7 @@ function render(dictionary) { return Item$AgdaModeVscode.error(RichText$AgdaModeVscode.parse(line), undefined); })); case "goal" : - return Belt_Option.mapWithDefault(Agda$AgdaModeVscode.Expr.parse(Js_string.sliceToEnd(5, Js_array.joinWith("\n", lines))), [], (function (expr) { + return Belt_Option.mapWithDefault(Agda$AgdaModeVscode.Expr.parse(Js_string.sliceToEnd(5, Util$AgdaModeVscode.$$String.unlines(lines))), [], (function (expr) { return [{ TAG: 0, _0: "Goal", @@ -170,7 +167,7 @@ function render(dictionary) { }]; })); case "have" : - return Belt_Option.mapWithDefault(Agda$AgdaModeVscode.Expr.parse(Js_string.sliceToEnd(5, Js_array.joinWith("\n", lines))), [], (function (expr) { + return Belt_Option.mapWithDefault(Agda$AgdaModeVscode.Expr.parse(Js_string.sliceToEnd(5, Util$AgdaModeVscode.$$String.unlines(lines))), [], (function (expr) { return [{ TAG: 0, _0: "Have", diff --git a/lib/js/test/tests/Test__Util.bs.js b/lib/js/test/tests/Test__Util.bs.js index 2e0fdef3..a77d920e 100644 --- a/lib/js/test/tests/Test__Util.bs.js +++ b/lib/js/test/tests/Test__Util.bs.js @@ -21,6 +21,7 @@ var Caml_exceptions = require("rescript/lib/js/caml_exceptions.js"); var Promise$BsMocha = require("bs-mocha/lib/js/src/Promise.bs.js"); var Chan$AgdaModeVscode = require("../../src/Util/Chan.bs.js"); var Main$AgdaModeVscode = require("../../src/Main.bs.js"); +var Util$AgdaModeVscode = require("../../src/Util/Util.bs.js"); var Config$AgdaModeVscode = require("../../src/Config.bs.js"); var Editor$AgdaModeVscode = require("../../src/Editor.bs.js"); var Source$LanguageServerMule = require("language-server-mule/lib/js/src/Source.bs.js"); @@ -225,12 +226,8 @@ function normalize(string) { return Js_string.replaceByRe(/\r\n|\n/g, "\n", string.trim()); } -function unlines(xs) { - return Js_array.joinWith("\n", xs); -} - function unlinesWith(f, xs) { - return Js_array.joinWith("\n", Belt_Array.map(xs, f)); + return Util$AgdaModeVscode.$$String.unlines(Belt_Array.map(xs, f)); } function breakInput(input, breakpoints) { @@ -255,7 +252,6 @@ function breakInput(input, breakpoints) { var Strings = { normalize: normalize, - unlines: unlines, unlinesWith: unlinesWith, breakInput: breakInput }; diff --git a/src/Parser/Parser.res b/src/Parser/Parser.res index 8d42ec85..7c5a104a 100644 --- a/src/Parser/Parser.res +++ b/src/Parser/Parser.res @@ -260,10 +260,10 @@ let filepath = s => { } // normalize the path with Node.Path.normalize - let normalized = Node.Path.normalize(removedBidi) + let normalized = NodeJs.Path.normalize(removedBidi) // replace Windows' stupid backslash with slash - let replaced = Js.String.replaceByRe(%re("/\\\\/g"), "/", normalized) + let replaced = Js.String.replaceByRe(%re("/\\/g"), "/", normalized) replaced } diff --git a/src/View/Panel/Emacs/Emacs__Parser2.res b/src/View/Panel/Emacs/Emacs__Parser2.res index f176545d..2200a321 100644 --- a/src/View/Panel/Emacs/Emacs__Parser2.res +++ b/src/View/Panel/Emacs/Emacs__Parser2.res @@ -40,7 +40,7 @@ let partiteWarningsOrErrors = (xs, key) => lines ->Array_.partite(markWarningStart) ->Array_.mergeWithNext(glueBack) - ->Array.map(Js.Array.joinWith("\n")) + ->Array.map(Util.String.unlines) }) let parseError: string => Js.Dict.t> = raw => { @@ -75,22 +75,20 @@ let parseError: string => Js.Dict.t> = raw => { lines ->Emacs__Parser.Dict.partite(predicate) // remove the delimeter in the first line of errors and unlines the rest - ->Emacs__Parser.Dict.update("errors", xs => [ - xs->Js.Array2.sliceFrom(1)->Js.Array2.joinWith("\n"), - ]) + ->Emacs__Parser.Dict.update("errors", xs => [xs->Js.Array2.sliceFrom(1)->Util.String.unlines]) // remove the delimeter in the first line of warnings and unlines the rest ->Emacs__Parser.Dict.update("warnings", xs => xs ->Js.Array2.sliceFrom(1) ->Array_.partite(markWarningStart) ->Array_.mergeWithNext(glueBack) - ->Array.map(Js.Array.joinWith("\n")) + ->Array.map(Util.String.unlines) ) } else { lines ->Emacs__Parser.Dict.partite(((_, i)) => i === 0 ? Some("errors") : None) // unlines - ->Emacs__Parser.Dict.update("errors", xs => [xs->Js.Array2.joinWith("\n")]) + ->Emacs__Parser.Dict.update("errors", xs => [xs->Util.String.unlines]) } } @@ -127,14 +125,16 @@ let render: Js.Dict.t> => array = dictionary => { ->Array.map(((key, lines)) => switch key { | "goal" => - Js.Array.joinWith("\n", lines) + lines + ->Util.String.unlines ->Js.String.sliceToEnd(~from=5, _) ->Agda.Expr.parse ->Option.mapWithDefault([], expr => [ Item.Labeled("Goal", "special", Agda.Expr.render(expr), None, None), ]) | "have" => - Js.Array.joinWith("\n", lines) + lines + ->Util.String.unlines ->Js.String.sliceToEnd(~from=5, _) ->Agda.Expr.parse ->Option.mapWithDefault([], expr => [ diff --git a/test/tests/Test__Util.res b/test/tests/Test__Util.res index 9b5d822f..86ef9b53 100644 --- a/test/tests/Test__Util.res +++ b/test/tests/Test__Util.res @@ -134,9 +134,7 @@ module Strings = { replaceByRe(%re("/\r\n|\n/g"), "\n", trim(string)) } - let unlines = xs => Js.Array.joinWith("\n", xs) - - let unlinesWith = (f, xs) => xs->Array.map(f)->unlines + let unlinesWith = (f, xs) => xs->Array.map(f)->Util.String.unlines let breakInput = (input: string, breakpoints: array) => { let breakpoints' = Array.concat([0], breakpoints) From 14ee971d20ad993834b7e49f7cd39428afcc9489 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sat, 9 Dec 2023 13:38:39 +0800 Subject: [PATCH 067/109] [ ci ] Update macOS CI caching --- .github/workflows/test-macos.yml | 37 ++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml index 3395a2b5..a2d9fa77 100644 --- a/.github/workflows/test-macos.yml +++ b/.github/workflows/test-macos.yml @@ -15,33 +15,42 @@ jobs: steps: - name: 📥 Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - # things to be cached/restored: + - name: Determine stack resolver + run: | + STACK_RESOLVER=$(yq .resolver stack.yaml) + echo STACK_RESOLVER="${STACK_RESOLVER}" >> "${GITHUB_ENV}" + + # things to be restored: + # Include STACK_RESOLVER in cache key, otherwise caches accumulate build products for different resolvers. - - name: 💾 Cache stack global package db + - name: 💾 Restore cached stack global package db id: stack-global - uses: actions/cache@v2 + uses: actions/cache/restore@v3 with: path: ~/.stack - key: ${{ runner.os }}-stack-global-after20210110-${{ hashFiles('**.yaml') }} + key: ${{ runner.os }}-stack-resolver-${{ env.STACK_RESOLVER }}-global-${{ hashFiles('**.yaml') }} restore-keys: | - ${{ runner.os }}-stack-global-after202110110 - - name: 💾 Cache stack-installed programs in ~/.local/bin + ${{ runner.os }}-stack-resolver-${{ env.STACK_RESOLVER }}-global + + - name: 💾 Restore stack-installed programs in ~/.local/bin id: stack-programs - uses: actions/cache@v2 + uses: actions/cache/restore@v3 with: path: ~/.local/bin - key: ${{ runner.os }}-stack-programs-${{ hashFiles('**.yaml') }} + key: ${{ runner.os }}-stack-resolver-${{ env.STACK_RESOLVER }}-work-${{ hashFiles('**.yaml') }} restore-keys: | - ${{ runner.os }}-stack-programs - - name: 💾 Cache .stack-work - uses: actions/cache@v2 + ${{ runner.os }}-stack-resolver-${{ env.STACK_RESOLVER }}-work + + - name: 💾 Restore cached .stack-work + id: stack-work + uses: actions/cache/restore@v3 with: path: .stack-work - key: ${{ runner.os }}-stack-work-${{ hashFiles('**.yaml') }} + key: ${{ runner.os }}-stack-resolver-${{ env.STACK_RESOLVER }}-work-${{ hashFiles('**.yaml') }} restore-keys: | - ${{ runner.os }}-stack-work + ${{ runner.os }}-stack-resolver-${{ env.STACK_RESOLVER }}-work # actions: From aa2bf94e41c5d18a3844f7086db092685897606d Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sat, 9 Dec 2023 13:45:14 +0800 Subject: [PATCH 068/109] [ ci ] Remove env.STACK_RESOLVER --- .github/workflows/test-macos.yml | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml index a2d9fa77..cde777ba 100644 --- a/.github/workflows/test-macos.yml +++ b/.github/workflows/test-macos.yml @@ -17,40 +17,33 @@ jobs: - name: 📥 Checkout repository uses: actions/checkout@v4 - - name: Determine stack resolver - run: | - STACK_RESOLVER=$(yq .resolver stack.yaml) - echo STACK_RESOLVER="${STACK_RESOLVER}" >> "${GITHUB_ENV}" - # things to be restored: - # Include STACK_RESOLVER in cache key, otherwise caches accumulate build products for different resolvers. - - name: 💾 Restore cached stack global package db id: stack-global uses: actions/cache/restore@v3 with: path: ~/.stack - key: ${{ runner.os }}-stack-resolver-${{ env.STACK_RESOLVER }}-global-${{ hashFiles('**.yaml') }} + key: ${{ runner.os }}-stack-resolver-global-${{ hashFiles('**.yaml') }} restore-keys: | - ${{ runner.os }}-stack-resolver-${{ env.STACK_RESOLVER }}-global + ${{ runner.os }}-stack-resolver-global - name: 💾 Restore stack-installed programs in ~/.local/bin id: stack-programs uses: actions/cache/restore@v3 with: path: ~/.local/bin - key: ${{ runner.os }}-stack-resolver-${{ env.STACK_RESOLVER }}-work-${{ hashFiles('**.yaml') }} + key: ${{ runner.os }}-stack-resolver-work-${{ hashFiles('**.yaml') }} restore-keys: | - ${{ runner.os }}-stack-resolver-${{ env.STACK_RESOLVER }}-work + ${{ runner.os }}-stack-resolver-work - name: 💾 Restore cached .stack-work id: stack-work uses: actions/cache/restore@v3 with: path: .stack-work - key: ${{ runner.os }}-stack-resolver-${{ env.STACK_RESOLVER }}-work-${{ hashFiles('**.yaml') }} + key: ${{ runner.os }}-stack-resolver-work-${{ hashFiles('**.yaml') }} restore-keys: | - ${{ runner.os }}-stack-resolver-${{ env.STACK_RESOLVER }}-work + ${{ runner.os }}-stack-resolver-work # actions: From bdcdbcfba60ff7bb4230a2f14388b8ce150da138 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sat, 9 Dec 2023 13:50:11 +0800 Subject: [PATCH 069/109] [ ci ] Upgrade actions/cache to v3 on Windows --- .github/workflows/test-macos.yml | 12 ++++++------ .github/workflows/test-windows.yml | 23 ++++++++++++----------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml index cde777ba..59a05b30 100644 --- a/.github/workflows/test-macos.yml +++ b/.github/workflows/test-macos.yml @@ -23,27 +23,27 @@ jobs: uses: actions/cache/restore@v3 with: path: ~/.stack - key: ${{ runner.os }}-stack-resolver-global-${{ hashFiles('**.yaml') }} + key: ${{ runner.os }}-stack-global-${{ hashFiles('**.yaml') }} restore-keys: | - ${{ runner.os }}-stack-resolver-global + ${{ runner.os }}-stack-global - name: 💾 Restore stack-installed programs in ~/.local/bin id: stack-programs uses: actions/cache/restore@v3 with: path: ~/.local/bin - key: ${{ runner.os }}-stack-resolver-work-${{ hashFiles('**.yaml') }} + key: ${{ runner.os }}-stack-work-${{ hashFiles('**.yaml') }} restore-keys: | - ${{ runner.os }}-stack-resolver-work + ${{ runner.os }}-stack-work - name: 💾 Restore cached .stack-work id: stack-work uses: actions/cache/restore@v3 with: path: .stack-work - key: ${{ runner.os }}-stack-resolver-work-${{ hashFiles('**.yaml') }} + key: ${{ runner.os }}-stack-work-${{ hashFiles('**.yaml') }} restore-keys: | - ${{ runner.os }}-stack-resolver-work + ${{ runner.os }}-stack-work # actions: diff --git a/.github/workflows/test-windows.yml b/.github/workflows/test-windows.yml index 5c989041..e5500ae5 100644 --- a/.github/workflows/test-windows.yml +++ b/.github/workflows/test-windows.yml @@ -14,22 +14,21 @@ jobs: steps: - name: 📥 Checkout repository - uses: actions/checkout@v2 - + uses: actions/checkout@v4 # things to be cached/restored: - - - name: 💾 Cache stack global package db - id: stack-global-package-db - uses: actions/cache@v2 + - name: 💾 Restore cached stack global package db + id: stack-global + uses: actions/cache/restore@v3 with: path: C:\Users\runneradmin\AppData\Roaming\stack\ key: ${{ runner.os }}-appdata-roaming-stack-${{ hashFiles('**.yaml') }} restore-keys: | ${{ runner.os }}-appdata-roaming-stack - - name: 💾 Cache stack programs dir # ghc, ghc-included packages and their haddocks, mingw, msys2 - id: stack-programs-dir - uses: actions/cache@v2 + + - name: 💾 Restore stack-installed programs # ghc, ghc-included packages and their haddocks, mingw, msys2 + id: stack-programs + uses: actions/cache/restore@v3 with: path: C:\Users\runneradmin\AppData\Local\Programs\stack\ # which files signal a change in stack's global db ? @@ -37,8 +36,10 @@ jobs: key: ${{ runner.os }}-appdata-local-programs-stack-${{ hashFiles('**.yaml') }} restore-keys: | ${{ runner.os }}-appdata-local-programs-stack - - name: 💾 Cache .stack-work - uses: actions/cache@v2 + + - name: 💾 Restore cached .stack-work + id: stack-work + uses: actions/cache/restore@v3 with: path: .stack-work key: ${{ runner.os }}-stack-work-${{ hashFiles('**.yaml') }} From becffc208b6bceccbe76bfa39ab66c3635e828ed Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sat, 9 Dec 2023 15:12:42 +0800 Subject: [PATCH 070/109] [ fix #173 ] C-c C-r results in wrong character when applied to character outside of BMP --- lib/js/src/Goal.bs.js | 6 +-- lib/js/src/State.bs.js | 2 +- lib/js/src/State/State__Goal.bs.js | 11 +++-- lib/js/test/tests/Test__Util.bs.js | 47 ++++++++++++++++++++- src/Goal.res | 4 +- src/State.res | 2 +- src/State/State__Goal.res | 66 ++++++++++++------------------ test/tests/Test__Util.res | 28 +++++++++++++ test/tests/assets/Issue173.agda | 4 ++ 9 files changed, 116 insertions(+), 54 deletions(-) create mode 100644 test/tests/assets/Issue173.agda diff --git a/lib/js/src/Goal.bs.js b/lib/js/src/Goal.bs.js index d21fa744..2fa17301 100644 --- a/lib/js/src/Goal.bs.js +++ b/lib/js/src/Goal.bs.js @@ -108,7 +108,7 @@ function refreshDecoration(self, editor) { Editor$AgdaModeVscode.Decoration.decorate(editor, self.decorationIndex, [range$1]); } -function destroy(self) { +function destroyDecoration(self) { Editor$AgdaModeVscode.Decoration.destroy(self.decorationBackground); Editor$AgdaModeVscode.Decoration.destroy(self.decorationIndex); } @@ -122,7 +122,7 @@ var Module = { setCursor: setCursor, getInnerRange: getInnerRange, refreshDecoration: refreshDecoration, - destroy: destroy + destroyDecoration: destroyDecoration }; exports.Module = Module; @@ -134,5 +134,5 @@ exports.setContent = setContent; exports.setCursor = setCursor; exports.getInnerRange = getInnerRange; exports.refreshDecoration = refreshDecoration; -exports.destroy = destroy; +exports.destroyDecoration = destroyDecoration; /* VSCode Not a pure module */ diff --git a/lib/js/src/State.bs.js b/lib/js/src/State.bs.js index 03fd3356..05b73857 100644 --- a/lib/js/src/State.bs.js +++ b/lib/js/src/State.bs.js @@ -73,7 +73,7 @@ function destroy(state, alsoRemoveFromRegistry) { Chan$AgdaModeVscode.emit(state.onRemoveFromRegistry, undefined); } Chan$AgdaModeVscode.destroy(state.onRemoveFromRegistry); - Belt_Array.forEach(state.goals, Goal$AgdaModeVscode.destroy); + Belt_Array.forEach(state.goals, Goal$AgdaModeVscode.destroyDecoration); Highlighting$AgdaModeVscode.destroy(state.highlighting); Belt_Array.forEach(state.subscriptions, (function (prim) { return prim.dispose(); diff --git a/lib/js/src/State/State__Goal.bs.js b/lib/js/src/State/State__Goal.bs.js index 49498862..e66687ac 100644 --- a/lib/js/src/State/State__Goal.bs.js +++ b/lib/js/src/State/State__Goal.bs.js @@ -3,7 +3,6 @@ var Caml = require("rescript/lib/js/caml.js"); var Curry = require("rescript/lib/js/curry.js"); -var $$String = require("rescript/lib/js/string.js"); var Vscode = require("vscode"); var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Js_array = require("rescript/lib/js/js_array.js"); @@ -223,7 +222,7 @@ function previous(state) { } function instantiate(state, indices) { - Belt_Array.forEach(state.goals, Goal$AgdaModeVscode.destroy); + Belt_Array.forEach(state.goals, Goal$AgdaModeVscode.destroyDecoration); var selection = state.editor.selection; var cursorStart = state.document.offsetAt(selection.start); var cursorEnd = state.document.offsetAt(selection.end); @@ -277,7 +276,7 @@ function replaceWithLambda(state, goal, lines) { var rewriteRange = Editor$AgdaModeVscode.$$Range.fromInterval(state.document, match[2]); return $$Promise.flatMap(Editor$AgdaModeVscode.$$Text.replace(state.document, rewriteRange, rewriteText), (function (x) { if (x) { - Goal$AgdaModeVscode.destroy(goal); + Goal$AgdaModeVscode.destroyDecoration(goal); placeCursorAtFirstNewGoal(state, rewriteText, rewriteRange); return $$Promise.resolved(undefined); } else { @@ -302,7 +301,7 @@ function replaceWithLines(state, goal, lines) { var rangeToBeReplaced = new Vscode.Range(start$1, end_); return $$Promise.flatMap(Editor$AgdaModeVscode.$$Text.replace(state.document, rangeToBeReplaced, indentedLines), (function (x) { if (x) { - Goal$AgdaModeVscode.destroy(goal); + Goal$AgdaModeVscode.destroyDecoration(goal); placeCursorAtFirstNewGoal(state, indentedLines, rangeToBeReplaced); return $$Promise.resolved(undefined); } else { @@ -319,10 +318,10 @@ function removeBoundaryAndDestroy(state, goal) { updateIntervals(state); var innerRange = Goal$AgdaModeVscode.getInnerRange(goal, state.document); var outerRange = Editor$AgdaModeVscode.$$Range.fromInterval(state.document, goal.interval); - var content = $$String.trim(Editor$AgdaModeVscode.$$Text.get(state.document, innerRange)); + var content = Editor$AgdaModeVscode.$$Text.get(state.document, innerRange).trim(); return $$Promise.flatMap(Editor$AgdaModeVscode.$$Text.replace(state.document, outerRange, content), (function (x) { if (x) { - Goal$AgdaModeVscode.destroy(goal); + Goal$AgdaModeVscode.destroyDecoration(goal); return $$Promise.resolved(undefined); } else { return State__View$AgdaModeVscode.Panel.display(state, { diff --git a/lib/js/test/tests/Test__Util.bs.js b/lib/js/test/tests/Test__Util.bs.js index a77d920e..b58342f1 100644 --- a/lib/js/test/tests/Test__Util.bs.js +++ b/lib/js/test/tests/Test__Util.bs.js @@ -567,12 +567,57 @@ function $$case(cursorAndPayload, param) { })); } +function refine(cursorAndPayload, param) { + var state = param[1]; + var self = param[0]; + return $$Promise.flatMap($$Promise.flatMap($$Promise.flatMap(Vscode.window.showTextDocument(Vscode.Uri.file(self.filepath), undefined), (function (editor) { + if (cursorAndPayload === undefined) { + return $$Promise.resolved(false); + } + var payload = cursorAndPayload[1]; + var cursor = cursorAndPayload[0]; + if (payload !== undefined) { + return $$Promise.tap(Editor$AgdaModeVscode.$$Text.insert(state.document, cursor, payload), (function (param) { + Editor$AgdaModeVscode.Cursor.set(editor, cursor); + })); + } else { + Editor$AgdaModeVscode.Cursor.set(editor, cursor); + return $$Promise.resolved(false); + } + })), (function (param) { + return Vscode.commands.executeCommand("agda-mode.refine"); + })), (function (result) { + if (result !== undefined) { + if (result.TAG === /* Ok */0) { + return $$Promise.resolved({ + TAG: 0, + _0: [ + self, + result._0 + ], + [Symbol.for("name")]: "Ok" + }); + } + var match = Connection__Error$AgdaModeVscode.toString(result._0); + var value = match[0] + "\n" + match[1]; + return runner(function (param) { + Assert$BsMocha.fail(value); + }); + } + var value$1 = "Cannot case refine " + self.filepath; + return runner(function (param) { + Assert$BsMocha.fail(value$1); + }); + })); +} + var Agda = { $$Error: $$Error, exists: exists, make: make, load: load, - $$case: $$case + $$case: $$case, + refine: refine }; function readFile$1(filepath, $$var) { diff --git a/src/Goal.res b/src/Goal.res index 9d700b54..dbe910d6 100644 --- a/src/Goal.res +++ b/src/Goal.res @@ -23,7 +23,7 @@ module type Module = { let setCursor: (t, VSCode.TextEditor.t) => unit let getInnerRange: (t, VSCode.TextDocument.t) => VSCode.Range.t let refreshDecoration: (t, VSCode.TextEditor.t) => unit - let destroy: t => unit + let destroyDecoration: t => unit } module Module: Module = { @@ -148,7 +148,7 @@ module Module: Module = { Editor.Decoration.decorate(editor, self.decorationIndex, [range]) } - let destroy = self => { + let destroyDecoration = self => { self.decorationBackground->Editor.Decoration.destroy self.decorationIndex->Editor.Decoration.destroy } diff --git a/src/State.res b/src/State.res index efb73916..e6e5aacd 100644 --- a/src/State.res +++ b/src/State.res @@ -79,7 +79,7 @@ let destroy = (state, alsoRemoveFromRegistry) => { state.onRemoveFromRegistry->Chan.emit() } state.onRemoveFromRegistry->Chan.destroy - state.goals->Array.forEach(Goal.destroy) + state.goals->Array.forEach(Goal.destroyDecoration) state.highlighting->Highlighting.destroy state.subscriptions->Array.forEach(VSCode.Disposable.dispose) Connection.stop() diff --git a/src/State/State__Goal.res b/src/State/State__Goal.res index ff94afb9..1842ebba 100644 --- a/src/State/State__Goal.res +++ b/src/State/State__Goal.res @@ -19,7 +19,7 @@ module Module: Module = { let getOffsets = (state: State.t): array => state.goals->Array.map(goal => { let (from, to) = goal.interval - from + min(3, (to - from)/2) + from + min(3, (to - from) / 2) }) // There are two kinds of lambda abstraction @@ -187,11 +187,7 @@ module Module: Module = { State.View.Panel.display( state, Error("Goal-related Error"), - [ - Item.plainText( - "Failed to modify the content of goal #" ++ string_of_int(goal.index), - ), - ], + [Item.plainText("Failed to modify the content of goal #" ++ string_of_int(goal.index))], ) } }) @@ -257,34 +253,36 @@ module Module: Module = { let instantiate = (state: State.t, indices) => { // destroy all existing goals - state.goals->Array.forEach(Goal.destroy) + state.goals->Array.forEach(Goal.destroyDecoration) // get ther cursor position before editing the text buffer // so that we can place the cursor inside a goal later let selection = VSCode.TextEditor.selection(state.editor) - let cursorStart = VSCode.TextDocument.offsetAt(state.document, VSCode.Selection.start(selection)) + let cursorStart = VSCode.TextDocument.offsetAt( + state.document, + VSCode.Selection.start(selection), + ) let cursorEnd = VSCode.TextDocument.offsetAt(state.document, VSCode.Selection.end_(selection)) // instantiate new ones Goal.makeMany(state.editor, indices)->Promise.map(goals => { - goals->Array.forEach(goal => { // if there's a cursor that touches the hole's "boundary" - // + // // {! some hole !} // ^^ ^^ - // + // // move the cursor inside the hole - // + // // {! some hole !} // ^ - // - let (left, right) = goal.interval - let touched = - (left <= cursorStart && cursorStart <= left + 2) || - (right - 2 <= cursorStart && cursorStart <= right) || - (left <= cursorEnd && cursorEnd <= left + 2) || - (right - 2 <= cursorEnd && cursorEnd <= right) + // + let (left, right) = goal.interval + let touched = + (left <= cursorStart && cursorStart <= left + 2) || + right - 2 <= cursorStart && cursorStart <= right || + left <= cursorEnd && cursorEnd <= left + 2 || + (right - 2 <= cursorEnd && cursorEnd <= right) if touched { Goal.setCursor(goal, state.editor) @@ -344,8 +342,8 @@ module Module: Module = { Editor.Text.replace(state.document, rewriteRange, rewriteText)->Promise.flatMap(x => switch x { | true => - // destroy the old goal - Goal.destroy(goal) + // destroy the old goal + Goal.destroyDecoration(goal) // locate the first new goal and place the cursor there placeCursorAtFirstNewGoal(state, rewriteText, rewriteRange) Promise.resolved() @@ -353,11 +351,7 @@ module Module: Module = { State.View.Panel.display( state, Error("Goal-related Error"), - [ - Item.plainText( - "Unable to replace the lines of goal #" ++ string_of_int(goal.index), - ), - ], + [Item.plainText("Unable to replace the lines of goal #" ++ string_of_int(goal.index))], ) } ) @@ -383,8 +377,8 @@ module Module: Module = { Editor.Text.replace(state.document, rangeToBeReplaced, indentedLines)->Promise.flatMap(x => switch x { | true => - // destroy the old goal - Goal.destroy(goal) + // destroy the old goal + Goal.destroyDecoration(goal) // locate the first new goal and place the cursor there placeCursorAtFirstNewGoal(state, indentedLines, rangeToBeReplaced) Promise.resolved() @@ -392,11 +386,7 @@ module Module: Module = { State.View.Panel.display( state, Error("Goal-related Error"), - [ - Item.plainText( - "Unable to replace the lines of goal #" ++ string_of_int(goal.index), - ), - ], + [Item.plainText("Unable to replace the lines of goal #" ++ string_of_int(goal.index))], ) } ) @@ -407,21 +397,17 @@ module Module: Module = { let innerRange = Goal.getInnerRange(goal, state.document) let outerRange = Editor.Range.fromInterval(state.document, goal.interval) - let content = Editor.Text.get(state.document, innerRange)->String.trim + let content = Editor.Text.get(state.document, innerRange)->Js.String.trim Editor.Text.replace(state.document, outerRange, content)->Promise.flatMap(x => switch x { | true => - Goal.destroy(goal) + Goal.destroyDecoration(goal) Promise.resolved() | false => State.View.Panel.display( state, Error("Goal-related Error"), - [ - Item.plainText( - "Unable to remove the boundary of goal #" ++ string_of_int(goal.index), - ), - ], + [Item.plainText("Unable to remove the boundary of goal #" ++ string_of_int(goal.index))], ) } ) diff --git a/test/tests/Test__Util.res b/test/tests/Test__Util.res index 86ef9b53..8c88657d 100644 --- a/test/tests/Test__Util.res +++ b/test/tests/Test__Util.res @@ -426,6 +426,34 @@ module Agda = { } ) } + + let refine = (cursorAndPayload, (self, state: State__Type.t)): Promise.promise< + result<(t, AgdaModeVscode.State.t), exn>, + > => { + openFile(self.filepath) + ->Promise.flatMap(editor => + switch cursorAndPayload { + | None => Promise.resolved(false) + | Some(cursor, None) => + Editor.Cursor.set(editor, cursor) + Promise.resolved(false) + | Some(cursor, Some(payload)) => + Editor.Text.insert(state.document, cursor, payload)->Promise.tap(_ => + Editor.Cursor.set(editor, cursor) + ) + } + ) + ->Promise.flatMap(_ => executeCommand("agda-mode.refine")) + ->Promise.flatMap(result => + switch result { + | None => A.fail("Cannot case refine " ++ self.filepath) + | Some(Ok(state)) => Promise.resolved(Ok(self, state)) + | Some(Error(error)) => + let (header, body) = Connection.Error.toString(error) + A.fail(header ++ "\n" ++ body) + } + ) + } } // store file content before testing so that we can restore it later diff --git a/test/tests/assets/Issue173.agda b/test/tests/assets/Issue173.agda new file mode 100644 index 00000000..a0f822b5 --- /dev/null +++ b/test/tests/assets/Issue173.agda @@ -0,0 +1,4 @@ +module Issue173 where + +_ : {A : Set} → A → A +_ = λ 𝒶 → {! 𝒶 !} \ No newline at end of file From 915a3dea94e26d3e1b7875c6f67673f9d9d23ad0 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sat, 9 Dec 2023 15:20:52 +0800 Subject: [PATCH 071/109] [ ci ] Forgot to cache built stuff on macOs & Windows --- .github/workflows/test-macos.yml | 31 +++++++++++++++++++++---- .github/workflows/test-windows.yml | 36 +++++++++++++++++++++++++----- 2 files changed, 57 insertions(+), 10 deletions(-) diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml index 59a05b30..0890a365 100644 --- a/.github/workflows/test-macos.yml +++ b/.github/workflows/test-macos.yml @@ -27,14 +27,14 @@ jobs: restore-keys: | ${{ runner.os }}-stack-global - - name: 💾 Restore stack-installed programs in ~/.local/bin - id: stack-programs + - name: 💾 Restore stack-installed binaries in ~/.local/bin + id: stack-binaries uses: actions/cache/restore@v3 with: path: ~/.local/bin - key: ${{ runner.os }}-stack-work-${{ hashFiles('**.yaml') }} + key: ${{ runner.os }}-stack-binaries-${{ hashFiles('**.yaml') }} restore-keys: | - ${{ runner.os }}-stack-work + ${{ runner.os }}-stack-binaries - name: 💾 Restore cached .stack-work id: stack-work @@ -63,6 +63,29 @@ jobs: - name: ⏬ Install Agda run: stack install --resolver lts-20.26 Agda-2.6.4 + # things to be cached + + - name: 💾 Cache stack global package db + if: always() && steps.stack-global.outputs.cache-hit != 'true' + uses: actions/cache/save@v3 + with: + path: ~/.stack + key: ${{ steps.stack-global.outputs.cache-primary-key }} + + - name: 💾 Cache stack-installed binaries + if: always() && steps.stack-binaries.outputs.cache-hit != 'true' + uses: actions/cache/save@v3 + with: + path: ~/.local/bin + key: ${{ steps.stack-binaries.outputs.cache-primary-key }} + + - name: 💾 Cache .stack-work + if: always() && steps.stack-work.outputs.cache-hit != 'true' + uses: actions/cache/save@v3 + with: + path: .stack-work + key: ${{ steps.stack-work.outputs.cache-primary-key }} + - name: ⏬ Install NPM Dependencies run: npm install diff --git a/.github/workflows/test-windows.yml b/.github/workflows/test-windows.yml index e5500ae5..f5df2f1c 100644 --- a/.github/workflows/test-windows.yml +++ b/.github/workflows/test-windows.yml @@ -22,20 +22,20 @@ jobs: uses: actions/cache/restore@v3 with: path: C:\Users\runneradmin\AppData\Roaming\stack\ - key: ${{ runner.os }}-appdata-roaming-stack-${{ hashFiles('**.yaml') }} + key: ${{ runner.os }}-stack-global-${{ hashFiles('**.yaml') }} restore-keys: | - ${{ runner.os }}-appdata-roaming-stack + ${{ runner.os }}-stack-global - - name: 💾 Restore stack-installed programs # ghc, ghc-included packages and their haddocks, mingw, msys2 - id: stack-programs + - name: 💾 Restore stack-installed binaries # ghc, ghc-included packages and their haddocks, mingw, msys2 + id: stack-binaries uses: actions/cache/restore@v3 with: path: C:\Users\runneradmin\AppData\Local\Programs\stack\ # which files signal a change in stack's global db ? # **.yaml includes */package.yaml and stack.yaml* (too many), and hopefully no other changing yamls - key: ${{ runner.os }}-appdata-local-programs-stack-${{ hashFiles('**.yaml') }} + key: ${{ runner.os }}-stack-binaries-${{ hashFiles('**.yaml') }} restore-keys: | - ${{ runner.os }}-appdata-local-programs-stack + ${{ runner.os }}-stack-binaries - name: 💾 Restore cached .stack-work id: stack-work @@ -73,6 +73,30 @@ jobs: cp C:\Users\runneradmin\AppData\Roaming\local\bin\agda.exe C:\ghcup\bin which agda + # things to be cached + + - name: 💾 Cache stack global package db + if: always() && steps.stack-global.outputs.cache-hit != 'true' + uses: actions/cache/save@v3 + with: + path: C:\Users\runneradmin\AppData\Roaming\stack\ + key: ${{ steps.stack-global.outputs.cache-primary-key }} + + - name: 💾 Cache stack-installed binaries + if: always() && steps.stack-binaries.outputs.cache-hit != 'true' + uses: actions/cache/save@v3 + with: + path: C:\Users\runneradmin\AppData\Local\Programs\stack\ + key: ${{ steps.stack-binaries.outputs.cache-primary-key }} + + - name: 💾 Cache .stack-work + if: always() && steps.stack-work.outputs.cache-hit != 'true' + uses: actions/cache/save@v3 + with: + path: .stack-work + key: ${{ steps.stack-work.outputs.cache-primary-key }} + + - name: ⏬ Install NPM Dependencies run: npm install From 7518ee648bc94cf0494795e9c3846694ac19970d Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sat, 9 Dec 2023 16:31:36 +0800 Subject: [PATCH 072/109] [ new ] Release v0.4.5 --- CHANGELOG.md | 17 + package-lock.json | 4800 --------------------------------------------- package.json | 2 +- 3 files changed, 18 insertions(+), 4801 deletions(-) delete mode 100644 package-lock.json diff --git a/CHANGELOG.md b/CHANGELOG.md index a8ace9d0..20e15b6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,20 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html) +## v0.4.5 - 2023-12-09 + +### Changed +- #126: Update language-server-mule to 0.2.4 (Fixes LSP) by [@jul1u5](https://github.com/jul1u5) +- Replaced [@glennsl/bs-json](https://github.com/glennsl/bs-json) with [@glennsl/rescript-json-combinators](rescript-json-combinators) + +### Fixed +- #173: `C-c C-r` results in wrong character when applied to character outside of BMP +- #175: Refining a goal having `\` (instead of `λ`) results in an Internal Parse Error +- #125: Modal bindings are not shown in the goal context +- #171: Update `asset/keymap.js` to the latest +- #159: Holes spanning multiple lines are not handled +- Restore highlighting after tokens have been moved around + ## v0.4.3 - 2023-12-03 ### Changed @@ -28,15 +42,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - #161: Compact UI by [@fredrik-bakke](https://github.com/fredrik-bakke) + ### Added - #163: Define auto indentation rules by [@fredrik-bakke](https://github.com/fredrik-bakke) - #151: Update language configuration by [@fredrik-bakke](https://github.com/fredrik-bakke) + ### Fixed - #155: Re #79: Disable activating input method inside the search box by [@vic0103520](https://github.com/vic0103520) - #154: Fix issue #76: Input method is reactivated after entering a backslash… by [@vic0103520](https://github.com/vic0103520) - #153: Fix issue #117: Allow numeric input to complete ambiguous key bindings by [@vic0103520](https://github.com/vic0103520) + ## v0.4.0 - 2023-08-02 The version number v0.4.0 was bumped by accident. diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 47755c19..00000000 --- a/package-lock.json +++ /dev/null @@ -1,4800 +0,0 @@ -{ - "name": "agda-mode", - "version": "0.4.4", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "agda-mode", - "version": "0.4.4", - "dependencies": { - "@datastructures-js/binary-search-tree": "^4.3.0", - "@glennsl/rescript-json-combinators": "^1.3.0", - "@rescript/react": "^0.10.3", - "compare-versions": "^3.5.1", - "eventemitter3": ">=4.0.0", - "getos": "^3.2.1", - "language-server-mule": "github:banacorn/language-server-mule#v0.3.4", - "react": "^16.9.0", - "react-dom": "^16.9.0", - "reason-promise": ">=1.1.0", - "rescript": "^10.1.4", - "rescript-nodejs": "^15.0.0", - "rescript-vscode": "github:banacorn/rescript-vscode#v0.0.17", - "rescript-webapi": ">=0.2.0", - "untildify": "^4.0.0", - "vscode-codicons": "^0.0.7" - }, - "devDependencies": { - "@vscode/test-electron": "^2.3.8", - "bs-mocha": "^1.0.0", - "copy-webpack-plugin": "^6.0.3", - "glob": "^7.1.6", - "less": "^4.1.1", - "less-loader": "^7.0.2", - "less-watch-compiler": "^1.14.6", - "mocha": "^10.2.0", - "webpack": "^5.76.0", - "webpack-cli": "^4.2.0" - }, - "engines": { - "vscode": "^1.74.0" - } - }, - "node_modules/@datastructures-js/binary-search-tree": { - "version": "4.3.2", - "license": "MIT" - }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@glennsl/rescript-json-combinators": { - "version": "1.3.0", - "license": "(LGPL-3.0 OR MPL-2.0)", - "engines": { - "node": "*" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@npmcli/fs": { - "version": "1.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "node_modules/@npmcli/move-file": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@rescript/react": { - "version": "0.10.3", - "license": "MIT", - "peerDependencies": { - "react": ">=16.8.1", - "react-dom": ">=16.8.1" - } - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/@types/eslint": { - "version": "8.44.8", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.5", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "20.10.3", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@vscode/test-electron": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.8.tgz", - "integrity": "sha512-b4aZZsBKtMGdDljAsOPObnAi7+VWIaYl3ylCz1jTs+oV6BZ4TNHcVNC3xUn0azPeszBmwSBDQYfFESIaUQnrOg==", - "dev": true, - "dependencies": { - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "jszip": "^3.10.1", - "semver": "^7.5.2" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webpack-cli/configtest": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/info": { - "version": "1.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "envinfo": "^7.7.3" - }, - "peerDependencies": { - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/serve": { - "version": "1.7.0", - "dev": true, - "license": "MIT", - "peerDependencies": { - "webpack-cli": "4.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/acorn": { - "version": "8.11.2", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/amdefine": { - "version": "1.0.1", - "dev": true, - "license": "BSD-3-Clause OR MIT", - "engines": { - "node": ">=0.4.2" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.reduce": { - "version": "1.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/async": { - "version": "3.2.5", - "license": "MIT" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "license": "MIT" - }, - "node_modules/big-integer": { - "version": "1.6.52", - "license": "Unlicense", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/binary": { - "version": "0.3.0", - "license": "MIT", - "dependencies": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/bluebird": { - "version": "3.4.7", - "license": "MIT" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "dev": true, - "license": "ISC" - }, - "node_modules/browserslist": { - "version": "4.22.2", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001565", - "electron-to-chromium": "^1.4.601", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-mocha": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "mocha": "^6.2.0" - } - }, - "node_modules/bs-mocha/node_modules/ansi-colors": { - "version": "3.2.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/bs-mocha/node_modules/ansi-regex": { - "version": "4.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/bs-mocha/node_modules/ansi-styles": { - "version": "3.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/bs-mocha/node_modules/argparse": { - "version": "1.0.10", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/bs-mocha/node_modules/camelcase": { - "version": "5.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/bs-mocha/node_modules/chalk": { - "version": "2.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/bs-mocha/node_modules/chalk/node_modules/supports-color": { - "version": "5.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/bs-mocha/node_modules/cliui": { - "version": "5.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/bs-mocha/node_modules/color-convert": { - "version": "1.9.3", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/bs-mocha/node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/bs-mocha/node_modules/debug": { - "version": "3.2.6", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/bs-mocha/node_modules/decamelize": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/bs-mocha/node_modules/diff": { - "version": "3.5.0", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/bs-mocha/node_modules/emoji-regex": { - "version": "7.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/bs-mocha/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/bs-mocha/node_modules/find-up": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/bs-mocha/node_modules/flat": { - "version": "4.1.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "is-buffer": "~2.0.3" - }, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/bs-mocha/node_modules/glob": { - "version": "7.1.3", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/bs-mocha/node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/bs-mocha/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/bs-mocha/node_modules/js-yaml": { - "version": "3.13.1", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/bs-mocha/node_modules/locate-path": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/bs-mocha/node_modules/log-symbols": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/bs-mocha/node_modules/minimatch": { - "version": "3.0.4", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/bs-mocha/node_modules/mkdirp": { - "version": "0.5.4", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/bs-mocha/node_modules/mocha": { - "version": "6.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "2.2.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.4", - "ms": "2.1.1", - "node-environment-flags": "1.0.5", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/bs-mocha/node_modules/ms": { - "version": "2.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/bs-mocha/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bs-mocha/node_modules/p-locate": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/bs-mocha/node_modules/path-exists": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/bs-mocha/node_modules/string-width": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/bs-mocha/node_modules/strip-ansi": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/bs-mocha/node_modules/strip-json-comments": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/bs-mocha/node_modules/supports-color": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/bs-mocha/node_modules/which": { - "version": "1.3.1", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/bs-mocha/node_modules/wrap-ansi": { - "version": "5.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/bs-mocha/node_modules/y18n": { - "version": "4.0.3", - "dev": true, - "license": "ISC" - }, - "node_modules/bs-mocha/node_modules/yargs": { - "version": "13.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/bs-mocha/node_modules/yargs-parser": { - "version": "13.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/bs-mocha/node_modules/yargs-unparser": { - "version": "1.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/bs-platform": { - "version": "9.0.2", - "hasInstallScript": true, - "license": "SEE LICENSE IN LICENSE", - "bin": { - "bsb": "bsb", - "bsc": "bsc", - "bsrefmt": "bsrefmt", - "bstracing": "lib/bstracing" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/buffer-indexof-polyfill": { - "version": "1.0.2", - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/buffers": { - "version": "0.1.1", - "engines": { - "node": ">=0.2.0" - } - }, - "node_modules/cacache": { - "version": "15.3.0", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/call-bind": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001566", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chainsaw": { - "version": "0.1.0", - "license": "MIT/X11", - "dependencies": { - "traverse": ">=0.3.0 <0.4" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chownr": { - "version": "2.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/colorette": { - "version": "2.0.20", - "dev": true, - "license": "MIT" - }, - "node_modules/commander": { - "version": "8.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/compare-versions": { - "version": "3.6.0", - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "license": "MIT" - }, - "node_modules/copy-anything": { - "version": "2.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "is-what": "^3.14.1" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/copy-webpack-plugin": { - "version": "6.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "cacache": "^15.0.5", - "fast-glob": "^3.2.4", - "find-cache-dir": "^3.3.1", - "glob-parent": "^5.1.1", - "globby": "^11.0.1", - "loader-utils": "^2.0.0", - "normalize-path": "^3.0.0", - "p-limit": "^3.0.2", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "webpack-sources": "^1.4.3" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/decamelize": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-data-property": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/diff": { - "version": "5.0.0", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dom-walk": { - "version": "0.1.2", - "dev": true - }, - "node_modules/duplexer2": { - "version": "0.1.4", - "license": "BSD-3-Clause", - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.601", - "dev": true, - "license": "ISC" - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.15.0", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/envinfo": { - "version": "7.11.0", - "dev": true, - "license": "MIT", - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/errno": { - "version": "0.1.8", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/es-abstract": { - "version": "1.22.3", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.5", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.2", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-abstract/node_modules/object.assign": { - "version": "4.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/es-module-lexer": { - "version": "1.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "license": "MIT" - }, - "node_modules/events": { - "version": "3.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/fastq": { - "version": "1.15.0", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "dev": true, - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/fstream": { - "version": "1.0.12", - "license": "ISC", - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/fstream/node_modules/mkdirp": { - "version": "0.5.6", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/fstream/node_modules/rimraf": { - "version": "2.7.1", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/getos": { - "version": "3.2.1", - "license": "MIT", - "dependencies": { - "async": "^3.2.0" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/global": { - "version": "4.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "license": "ISC" - }, - "node_modules/growl": { - "version": "1.10.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.x" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/he": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "bin": { - "he": "bin/he" - } - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "5.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/image-size": { - "version": "0.5.5", - "dev": true, - "license": "MIT", - "optional": true, - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "dev": true - }, - "node_modules/import-local": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/infer-owner": { - "version": "1.0.4", - "dev": true, - "license": "ISC" - }, - "node_modules/inflight": { - "version": "1.0.6", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" - }, - "node_modules/internal-slot": { - "version": "1.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.2", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/interpret": { - "version": "1.4.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "2.0.5", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.12", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-what": { - "version": "3.14.1", - "dev": true, - "license": "MIT" - }, - "node_modules/isarray": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/isobject": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "dev": true, - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klona": { - "version": "2.0.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/language-server-mule": { - "version": "0.3.4", - "resolved": "git+ssh://git@github.com/banacorn/language-server-mule.git#69846c1e35377e171d6d1208912f0b7e91d0a296", - "license": "MIT", - "dependencies": { - "@glennsl/rescript-json-combinators": "^1.3.0", - "eventemitter3": "^4.0.7", - "rescript-nodejs": "^15.0.0", - "unzipper": "^0.10.11", - "vscode-languageclient": "^8.0.0" - } - }, - "node_modules/language-server-mule/node_modules/eventemitter3": { - "version": "4.0.7", - "license": "MIT" - }, - "node_modules/less": { - "version": "4.2.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "copy-anything": "^2.0.1", - "parse-node-version": "^1.0.1", - "tslib": "^2.3.0" - }, - "bin": { - "lessc": "bin/lessc" - }, - "engines": { - "node": ">=6" - }, - "optionalDependencies": { - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "needle": "^3.1.0", - "source-map": "~0.6.0" - } - }, - "node_modules/less-loader": { - "version": "7.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "less": "^3.5.0 || ^4.0.0", - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/less-watch-compiler": { - "version": "1.16.3", - "dev": true, - "license": "MIT", - "dependencies": { - "amdefine": ">= 0.1.0", - "commander": "^8.0.0", - "extend": ">= 2.0.0", - "global": "^4.3.1", - "less": "^4.0.0", - "shelljs": ">= 0.4.0" - }, - "bin": { - "less-watch-compiler": "dist/less-watch-compiler.js" - } - }, - "node_modules/less/node_modules/make-dir": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/less/node_modules/semver": { - "version": "5.7.2", - "dev": true, - "license": "ISC", - "optional": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "dev": true, - "dependencies": { - "immediate": "~3.0.5" - } - }, - "node_modules/listenercount": { - "version": "1.0.1", - "license": "ISC" - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loader-utils": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "dev": true, - "license": "MIT" - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "dev": true, - "license": "MIT", - "optional": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/min-document": { - "version": "2.19.0", - "dev": true, - "dependencies": { - "dom-walk": "^0.1.0" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { - "version": "2.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha": { - "version": "10.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha/node_modules/glob": { - "version": "7.2.0", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/mocha/node_modules/serialize-javascript": { - "version": "6.0.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.3", - "dev": true, - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/needle": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "debug": "^3.2.6", - "iconv-lite": "^0.6.3", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, - "node_modules/needle/node_modules/debug": { - "version": "3.2.7", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "dev": true, - "license": "MIT" - }, - "node_modules/node-environment-flags": { - "version": "1.0.5", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - } - }, - "node_modules/node-environment-flags/node_modules/semver": { - "version": "5.7.2", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/node-releases": { - "version": "2.0.14", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.7", - "dev": true, - "license": "MIT", - "dependencies": { - "array.prototype.reduce": "^1.0.6", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "safe-array-concat": "^1.0.0" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "dev": true, - "license": "MIT" - }, - "node_modules/path-type": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/process": { - "version": "0.11.10", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "license": "MIT" - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "dev": true, - "license": "ISC" - }, - "node_modules/prop-types": { - "version": "15.8.1", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/punycode": { - "version": "2.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/randombytes": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/react": { - "version": "16.14.0", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "16.14.0", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - }, - "peerDependencies": { - "react": "^16.14.0" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "license": "MIT" - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "license": "MIT" - }, - "node_modules/readdirp": { - "version": "3.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/reason-promise": { - "version": "1.1.5", - "license": "MIT" - }, - "node_modules/rechoir": { - "version": "0.6.2", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/rescript": { - "version": "10.1.4", - "hasInstallScript": true, - "license": "SEE LICENSE IN LICENSE", - "bin": { - "bsc": "bsc", - "bsrefmt": "bsrefmt", - "bstracing": "lib/bstracing", - "rescript": "rescript" - } - }, - "node_modules/rescript-nodejs": { - "version": "15.0.0", - "license": "MIT" - }, - "node_modules/rescript-vscode": { - "version": "0.0.17", - "resolved": "git+ssh://git@github.com/banacorn/rescript-vscode.git#316ce927cd34f8a3ad7cc84b5d1fe6b97fa01e02", - "license": "MIT", - "dependencies": { - "bs-platform": ">=8.2.0", - "reason-promise": ">=1.1.0" - } - }, - "node_modules/rescript-webapi": { - "version": "0.9.0", - "license": "MIT" - }, - "node_modules/resolve": { - "version": "1.22.8", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "dev": true, - "license": "MIT" - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/sax": { - "version": "1.3.0", - "dev": true, - "license": "ISC", - "optional": true - }, - "node_modules/scheduler": { - "version": "0.19.1", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "node_modules/schema-utils": { - "version": "3.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/semver": { - "version": "7.5.4", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/serialize-javascript": { - "version": "5.0.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/set-function-length": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "license": "MIT" - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/shelljs": { - "version": "0.8.5", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/ssri": { - "version": "8.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "license": "MIT" - }, - "node_modules/string-width": { - "version": "4.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.8", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "8.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/tar": { - "version": "6.2.0", - "dev": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/terser": { - "version": "5.24.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.9", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { - "version": "6.0.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "dev": true, - "license": "MIT" - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/traverse": { - "version": "0.3.9", - "license": "MIT/X11" - }, - "node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, - "node_modules/typed-array-buffer": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "dev": true, - "license": "MIT" - }, - "node_modules/unique-filename": { - "version": "1.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/unique-slug": { - "version": "2.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "node_modules/untildify": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/unzipper": { - "version": "0.10.14", - "license": "MIT", - "dependencies": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "license": "MIT" - }, - "node_modules/vscode-codicons": { - "version": "0.0.7" - }, - "node_modules/vscode-jsonrpc": { - "version": "8.1.0", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/vscode-languageclient": { - "version": "8.1.0", - "license": "MIT", - "dependencies": { - "minimatch": "^5.1.0", - "semver": "^7.3.7", - "vscode-languageserver-protocol": "3.17.3" - }, - "engines": { - "vscode": "^1.67.0" - } - }, - "node_modules/vscode-languageclient/node_modules/brace-expansion": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/vscode-languageclient/node_modules/minimatch": { - "version": "5.1.6", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/vscode-languageserver-protocol": { - "version": "3.17.3", - "license": "MIT", - "dependencies": { - "vscode-jsonrpc": "8.1.0", - "vscode-languageserver-types": "3.17.3" - } - }, - "node_modules/vscode-languageserver-types": { - "version": "3.17.3", - "license": "MIT" - }, - "node_modules/watchpack": { - "version": "2.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack": { - "version": "5.89.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "4.10.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "cross-spawn": "^7.0.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/migrate": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/webpack-cli/node_modules/interpret": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/webpack-cli/node_modules/rechoir": { - "version": "0.7.1", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve": "^1.9.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/webpack-merge": { - "version": "5.10.0", - "dev": true, - "license": "MIT", - "dependencies": { - "clone-deep": "^4.0.1", - "flat": "^5.0.2", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "1.4.3", - "dev": true, - "license": "MIT", - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/webpack/node_modules/webpack-sources": { - "version": "3.2.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.1", - "dev": true, - "license": "ISC" - }, - "node_modules/which-typed-array": { - "version": "1.1.13", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wide-align": { - "version": "1.1.3", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2" - } - }, - "node_modules/wide-align/node_modules/ansi-regex": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/wide-align/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/wide-align/node_modules/string-width": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/wide-align/node_modules/strip-ansi": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/wildcard": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/workerpool": { - "version": "6.2.1", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "license": "ISC" - }, - "node_modules/y18n": { - "version": "5.0.8", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "license": "ISC" - }, - "node_modules/yargs": { - "version": "16.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/package.json b/package.json index 007c6c42..42e502ff 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "agda-mode on vscode", "icon": "asset/logo.png", "publisher": "banacorn", - "version": "0.4.4", + "version": "0.4.5", "engines": { "vscode": "^1.74.0" }, From 19eba5f48c6c1e3f9bc0f62d7a99708e8f362f8e Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sat, 9 Dec 2023 17:47:44 +0800 Subject: [PATCH 073/109] [ fix ] Remove rescript-nodejs from dependencies --- bsconfig.json | 3 +-- lib/js/src/Util/Util.bs.js | 7 +++---- src/Util/Util.res | 6 ++++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/bsconfig.json b/bsconfig.json index 9da9b80c..905f38da 100644 --- a/bsconfig.json +++ b/bsconfig.json @@ -28,8 +28,7 @@ "rescript-webapi", "language-server-mule", "reason-promise", - "@rescript/react", - "rescript-nodejs" + "@rescript/react" ], "bs-dev-dependencies": [ "bs-mocha", diff --git a/lib/js/src/Util/Util.bs.js b/lib/js/src/Util/Util.bs.js index 8caafaef..5990dc6e 100644 --- a/lib/js/src/Util/Util.bs.js +++ b/lib/js/src/Util/Util.bs.js @@ -1,7 +1,6 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Os = require("os"); var Curry = require("rescript/lib/js/curry.js"); var React = require("react"); var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); @@ -431,11 +430,11 @@ var Dict = { }; function lines(s) { - return s.split(Os.EOL); + return s.split(/\r\n|\n/g); } function unlines(xs) { - return xs.join(Os.EOL); + return xs.join("\n"); } var $$String$1 = { @@ -460,4 +459,4 @@ exports.List = List; exports.P = P; exports.Dict = Dict; exports.$$String = $$String$1; -/* os Not a pure module */ +/* react Not a pure module */ diff --git a/src/Util/Util.res b/src/Util/Util.res index 342d1576..1125422d 100644 --- a/src/Util/Util.res +++ b/src/Util/Util.res @@ -255,6 +255,8 @@ module Dict = { } module String = { - let lines = s => s->Js.String2.split(NodeJs.Os.eol) - let unlines = xs => xs->Js.Array2.joinWith(NodeJs.Os.eol) + // let lines = s => s->Js.String2.split(NodeJs.Os.eol) + let lines = s => s->Js.String2.splitByRe(%re("/\r\n|\n/g")) + // let unlines = xs => xs->Js.Array2.joinWith(NodeJs.Os.eol) + let unlines = xs => xs->Js.Array2.joinWith("\n") } From fcadb15e01a23d0708f70eb166880a5281a9c1f9 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sat, 9 Dec 2023 17:53:43 +0800 Subject: [PATCH 074/109] [ fix ] Remove rescript-nodejs from dependencies --- src/Connection/Connection__Probe.res | 4 ++-- src/Parser/Parser.res | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Connection/Connection__Probe.res b/src/Connection/Connection__Probe.res index ccea84e2..7f68b2a6 100644 --- a/src/Connection/Connection__Probe.res +++ b/src/Connection/Connection__Probe.res @@ -89,10 +89,10 @@ let chooseFromReleases = (platform: Platform.t, releases: array): opt } let afterDownload = (fromCached, (path, target)) => { - let execPath = NodeJs.Path.join2(path, "als") + let execPath = Node.Path.join2(path, "als") // include "Agda_datadir" in the environment variable let options = { - let assetPath = NodeJs.Path.join2(path, "data") + let assetPath = Node.Path.join2(path, "data") let env = Js.Dict.fromArray([("Agda_datadir", assetPath)]) Client__LSP__Binding.ExecutableOptions.make(~env, ()) } diff --git a/src/Parser/Parser.res b/src/Parser/Parser.res index 7c5a104a..68b84114 100644 --- a/src/Parser/Parser.res +++ b/src/Parser/Parser.res @@ -260,7 +260,7 @@ let filepath = s => { } // normalize the path with Node.Path.normalize - let normalized = NodeJs.Path.normalize(removedBidi) + let normalized = Node.Path.normalize(removedBidi) // replace Windows' stupid backslash with slash let replaced = Js.String.replaceByRe(%re("/\\/g"), "/", normalized) From 9be4b1cd34b528dc94dcbaffd2eec03617a6a95d Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sat, 9 Dec 2023 18:08:54 +0800 Subject: [PATCH 075/109] [ fix ] Normalize expected results in tests for the moment --- .../tests/Parser/Test__Parser__Emacs2.bs.js | 53 +++++++++++-------- src/Util/Util.res | 9 +++- test/tests/Parser/Test__Parser__Emacs2.res | 12 +++-- 3 files changed, 49 insertions(+), 25 deletions(-) diff --git a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js index ad3ac62b..13999c9e 100644 --- a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js @@ -2,10 +2,20 @@ 'use strict'; var Js_dict = require("rescript/lib/js/js_dict.js"); +var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Mocha$BsMocha = require("bs-mocha/lib/js/src/Mocha.bs.js"); var Assert$BsMocha = require("bs-mocha/lib/js/src/Assert.bs.js"); +var Util$AgdaModeVscode = require("../../../src/Util/Util.bs.js"); var Emacs__Parser2$AgdaModeVscode = require("../../../src/View/Panel/Emacs/Emacs__Parser2.bs.js"); +function tempNormalize(xs) { + return Js_dict.map((function (value) { + return Belt_Array.map(value, (function (x) { + return Util$AgdaModeVscode.$$String.unlines(Util$AgdaModeVscode.$$String.lines(x)); + })); + }), xs); +} + Mocha$BsMocha.describe("when running Emacs__Parser2.parseGoalType")(undefined, undefined, undefined, (function (param) { Mocha$BsMocha.it("should parse goal only")(undefined, undefined, undefined, (function (param) { var actual = Emacs__Parser2$AgdaModeVscode.parseGoalType("Goal: ℕ\n————————————————————————————————————————————————————————————"); @@ -86,10 +96,10 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseAllGoalsWarnings")(unde })); Mocha$BsMocha.it("should parse goals that span multiple lines")(undefined, undefined, undefined, (function (param) { var actual = Emacs__Parser2$AgdaModeVscode.parseAllGoalsWarnings("*All Goals, Errors*", "?0\n : BoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBool"); - var expected = Js_dict.fromArray([[ - "interactionMetas", - ["?0\n : BoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBool"] - ]]); + var expected = tempNormalize(Js_dict.fromArray([[ + "interactionMetas", + ["?0\n : BoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBool"] + ]])); Assert$BsMocha.deep_equal(undefined, actual, expected); })); })); @@ -97,27 +107,27 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseAllGoalsWarnings")(unde Mocha$BsMocha.describe("when running Emacs__Parser2.parseError")(undefined, undefined, undefined, (function (param) { Mocha$BsMocha.it("should parse an error only")(undefined, undefined, undefined, (function (param) { var actual = Emacs__Parser2$AgdaModeVscode.parseError("/Users/banacorn/agda/examples/A.agda:15,1-2\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8"); - var expected = Js_dict.fromArray([[ - "errors", - ["/Users/banacorn/agda/examples/A.agda:15,1-2\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8"] - ]]); + var expected = tempNormalize(Js_dict.fromArray([[ + "errors", + ["/Users/banacorn/agda/examples/A.agda:15,1-2\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8"] + ]])); Assert$BsMocha.deep_equal(undefined, actual, expected); })); Mocha$BsMocha.it("should parse an error + warnings")(undefined, undefined, undefined, (function (param) { var actual = Emacs__Parser2$AgdaModeVscode.parseError("———— Error —————————————————————————————————————————————————\n/Users/banacorn/agda/examples/A.agda:15,1-2\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8\n\n———— Warning(s) ————————————————————————————————————————————\n/Users/banacorn/agda/examples/A.agda:17,1-8\nThe following names are declared but not accompanied by a\ndefinition: boo\n/Users/banacorn/agda/examples/A.agda:9,1-10\nUnreachable clause\nwhen checking the definition of _+_"); - var expected = Js_dict.fromArray([ - [ - "errors", - ["/Users/banacorn/agda/examples/A.agda:15,1-2\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8"] - ], - [ - "warnings", - [ - "/Users/banacorn/agda/examples/A.agda:9,1-10\nUnreachable clause\nwhen checking the definition of _+_", - "/Users/banacorn/agda/examples/A.agda:17,1-8\nThe following names are declared but not accompanied by a\ndefinition: boo" - ] - ] - ]); + var expected = tempNormalize(Js_dict.fromArray([ + [ + "errors", + ["/Users/banacorn/agda/examples/A.agda:15,1-2\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8"] + ], + [ + "warnings", + [ + "/Users/banacorn/agda/examples/A.agda:9,1-10\nUnreachable clause\nwhen checking the definition of _+_", + "/Users/banacorn/agda/examples/A.agda:17,1-8\nThe following names are declared but not accompanied by a\ndefinition: boo" + ] + ] + ])); Assert$BsMocha.deep_equal(undefined, actual, expected); })); })); @@ -125,4 +135,5 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseError")(undefined, unde var Assert; exports.Assert = Assert; +exports.tempNormalize = tempNormalize; /* Not a pure module */ diff --git a/src/Util/Util.res b/src/Util/Util.res index 1125422d..87f28914 100644 --- a/src/Util/Util.res +++ b/src/Util/Util.res @@ -255,8 +255,15 @@ module Dict = { } module String = { + // let eol = switch VSCode.TextDocument.eol { + // | VSCode.EndOfLine.LF => "\n" + // | VSCode.EndOfLine.CRLF => "\r\n" + // } + // let lines = s => s->Js.String2.split(NodeJs.Os.eol) - let lines = s => s->Js.String2.splitByRe(%re("/\r\n|\n/g")) + let lines = s => { + s->Js.String2.splitByRe(%re("/\r\n|\n/g")) + } // let unlines = xs => xs->Js.Array2.joinWith(NodeJs.Os.eol) let unlines = xs => xs->Js.Array2.joinWith("\n") } diff --git a/test/tests/Parser/Test__Parser__Emacs2.res b/test/tests/Parser/Test__Parser__Emacs2.res index 5f1426f5..2b0e48bf 100644 --- a/test/tests/Parser/Test__Parser__Emacs2.res +++ b/test/tests/Parser/Test__Parser__Emacs2.res @@ -3,6 +3,12 @@ open! Belt module Assert = BsMocha.Assert +let tempNormalize = xs => { + Js.Dict.map((. value) => { + value->Array.map(x => x->Util.String.lines->Util.String.unlines) + }, xs) +} + describe("when running Emacs__Parser2.parseGoalType", () => { it("should parse goal only", () => { let raw = `Goal: ℕ @@ -77,7 +83,7 @@ Unsolved constraints` : BoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBool`, ], ), - ]) + ])->tempNormalize Assert.deep_equal(actual, expected) }) }) @@ -99,7 +105,7 @@ pattern, () or {}, in the left-hand side. when checking that the clause a has type _8`, ], ), - ]) + ])->tempNormalize Assert.deep_equal(actual, expected) }) it("should parse an error + warnings", () => { @@ -138,7 +144,7 @@ The following names are declared but not accompanied by a definition: boo`, ], ), - ]) + ])->tempNormalize Assert.deep_equal(actual, expected) }) }) From 403784ff420d9f5388546f890c39605e05c1eeed Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sat, 9 Dec 2023 18:17:29 +0800 Subject: [PATCH 076/109] [ new ] Release v0.4.6 --- CHANGELOG.md | 5 +++++ package.json | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 20e15b6c..68eca801 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html) +## v0.4.6 - 2023-12-09 + +### Fixed +- Remove `rescript-nodejs` from dependencies to fix the polyfill issue + ## v0.4.5 - 2023-12-09 ### Changed diff --git a/package.json b/package.json index 42e502ff..8dcb518f 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "agda-mode on vscode", "icon": "asset/logo.png", "publisher": "banacorn", - "version": "0.4.5", + "version": "0.4.6", "engines": { "vscode": "^1.74.0" }, From bf5bc4bd91101d5bd338df820d655bfb98a49dc2 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sun, 10 Dec 2023 22:19:44 +0800 Subject: [PATCH 077/109] [ change ] Fetch the latest release of Agda Language Server --- lib/js/src/Connection/Connection__Probe.bs.js | 34 +- lib/js/src/State/State__View.bs.js | 2 +- package-lock.json | 4830 +++++++++++++++++ package.json | 2 +- src/Connection/Connection__Probe.res | 44 +- src/State/State__View.res | 2 +- 6 files changed, 4858 insertions(+), 56 deletions(-) create mode 100644 package-lock.json diff --git a/lib/js/src/Connection/Connection__Probe.bs.js b/lib/js/src/Connection/Connection__Probe.bs.js index 4f00afcb..f3c87a73 100644 --- a/lib/js/src/Connection/Connection__Probe.bs.js +++ b/lib/js/src/Connection/Connection__Probe.bs.js @@ -1,6 +1,7 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; +var Caml = require("rescript/lib/js/caml.js"); var Path = require("path"); var Curry = require("rescript/lib/js/curry.js"); var Getos = require("getos"); @@ -11,7 +12,6 @@ var Js_array = require("rescript/lib/js/js_array.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); -var Util$AgdaModeVscode = require("../Util/Util.bs.js"); var Config$AgdaModeVscode = require("../Config.bs.js"); var Source$LanguageServerMule = require("language-server-mule/lib/js/src/Source.bs.js"); var Source__GitHub$LanguageServerMule = require("language-server-mule/lib/js/src/Source/Source__GitHub.bs.js"); @@ -63,29 +63,12 @@ var Platform = { function chooseFromReleases(platform, releases) { var chooseRelease = function (releases) { - var matched = Belt_Array.keep(releases, (function (release) { - var x = release.tagName; - var lower = Util$AgdaModeVscode.Version.compare(x, "v0.2.0.0"); - var upper = Util$AgdaModeVscode.Version.compare(x, "v0.3.0.0"); - if (lower === /* EQ */1 || lower === /* GT */2) { - return upper === /* LT */0; - } else { - return false; - } - })); var compare = function (x, y) { - var match = Util$AgdaModeVscode.Version.compare(x.tagName, y.tagName); - switch (match) { - case /* LT */0 : - return 1; - case /* EQ */1 : - return 0; - case /* GT */2 : - return -1; - - } + var xTime = new Date(x.created_at).getTime(); + var yTime = new Date(y.created_at).getTime(); + return Caml.float_compare(yTime, xTime); }; - var sorted = Js_array.sortInPlaceWith(compare, matched); + var sorted = Js_array.sortInPlaceWith(compare, releases); return Belt_Array.get(sorted, 0); }; var chooseAsset = function (release) { @@ -114,8 +97,7 @@ function chooseFromReleases(platform, releases) { return { release: release, asset: asset, - srcUrl: asset.url, - fileName: release.tagName + "-" + Process.platform + saveAsFileName: release.tag_name + "-" + Process.platform }; })); }; @@ -167,9 +149,9 @@ function probeLSP(globalStoragePath, onDownload) { { TAG: 3, _0: { - username: "banacorn", + username: "agda", repository: "agda-language-server", - userAgent: "agda-mode-vscode", + userAgent: "agda/agda-mode-vscode", globalStoragePath: globalStoragePath, chooseFromReleases: (function (param) { return chooseFromReleases(platform, param); diff --git a/lib/js/src/State/State__View.bs.js b/lib/js/src/State/State__View.bs.js index 632cd408..578375e5 100644 --- a/lib/js/src/State/State__View.bs.js +++ b/lib/js/src/State/State__View.bs.js @@ -90,7 +90,7 @@ function displayConnectionStatus(state, status) { if (match$1.TAG === /* FromGitHub */3) { return sendEvent(state, { TAG: 2, - _0: "ALS prebuilt " + match$1._1.tagName + " (Agda v" + version + ")", + _0: "ALS prebuilt " + match$1._1.tag_name + " (Agda v" + version + ")", [Symbol.for("name")]: "SetStatus" }); } else { diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..25d2ed5b --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4830 @@ +{ + "name": "agda-mode", + "version": "0.4.6", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "agda-mode", + "version": "0.4.6", + "dependencies": { + "@datastructures-js/binary-search-tree": "^4.3.0", + "@glennsl/rescript-json-combinators": "^1.3.0", + "@rescript/react": "^0.10.3", + "compare-versions": "^3.5.1", + "eventemitter3": ">=4.0.0", + "getos": "^3.2.1", + "language-server-mule": "github:banacorn/language-server-mule#v0.4.1", + "react": "^16.9.0", + "react-dom": "^16.9.0", + "reason-promise": ">=1.1.0", + "rescript": "^10.1.4", + "rescript-nodejs": "^15.0.0", + "rescript-vscode": "github:banacorn/rescript-vscode#v0.0.17", + "rescript-webapi": ">=0.2.0", + "untildify": "^4.0.0", + "vscode-codicons": "^0.0.7" + }, + "devDependencies": { + "@vscode/test-electron": "^2.3.8", + "bs-mocha": "^1.0.0", + "copy-webpack-plugin": "^6.0.3", + "glob": "^7.1.6", + "less": "^4.1.1", + "less-loader": "^7.0.2", + "less-watch-compiler": "^1.14.6", + "mocha": "^10.2.0", + "webpack": "^5.76.0", + "webpack-cli": "^4.2.0" + }, + "engines": { + "vscode": "^1.74.0" + } + }, + "node_modules/@datastructures-js/binary-search-tree": { + "version": "4.3.2", + "license": "MIT" + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@glennsl/rescript-json-combinators": { + "version": "1.3.0", + "license": "(LGPL-3.0 OR MPL-2.0)", + "engines": { + "node": "*" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/fs": { + "version": "1.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@rescript/react": { + "version": "0.10.3", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.1", + "react-dom": ">=16.8.1" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/eslint": { + "version": "8.44.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.10.3", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@vscode/test-electron": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.8.tgz", + "integrity": "sha512-b4aZZsBKtMGdDljAsOPObnAi7+VWIaYl3ylCz1jTs+oV6BZ4TNHcVNC3xUn0azPeszBmwSBDQYfFESIaUQnrOg==", + "dev": true, + "dependencies": { + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "jszip": "^3.10.1", + "semver": "^7.5.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.7.0", + "dev": true, + "license": "MIT", + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/acorn": { + "version": "8.11.2", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/amdefine": { + "version": "1.0.1", + "dev": true, + "license": "BSD-3-Clause OR MIT", + "engines": { + "node": ">=0.4.2" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.reduce": { + "version": "1.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/async": { + "version": "3.2.5", + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "dev": true, + "license": "ISC" + }, + "node_modules/browserslist": { + "version": "4.22.2", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-mocha": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "mocha": "^6.2.0" + } + }, + "node_modules/bs-mocha/node_modules/ansi-colors": { + "version": "3.2.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/bs-mocha/node_modules/ansi-regex": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/bs-mocha/node_modules/ansi-styles": { + "version": "3.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bs-mocha/node_modules/argparse": { + "version": "1.0.10", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/bs-mocha/node_modules/camelcase": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/bs-mocha/node_modules/chalk": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bs-mocha/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bs-mocha/node_modules/cliui": { + "version": "5.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/bs-mocha/node_modules/color-convert": { + "version": "1.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/bs-mocha/node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/bs-mocha/node_modules/debug": { + "version": "3.2.6", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/bs-mocha/node_modules/decamelize": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bs-mocha/node_modules/diff": { + "version": "3.5.0", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/bs-mocha/node_modules/emoji-regex": { + "version": "7.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/bs-mocha/node_modules/escape-string-regexp": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/bs-mocha/node_modules/find-up": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/bs-mocha/node_modules/flat": { + "version": "4.1.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "is-buffer": "~2.0.3" + }, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/bs-mocha/node_modules/glob": { + "version": "7.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/bs-mocha/node_modules/has-flag": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/bs-mocha/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/bs-mocha/node_modules/js-yaml": { + "version": "3.13.1", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/bs-mocha/node_modules/locate-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/bs-mocha/node_modules/log-symbols": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bs-mocha/node_modules/minimatch": { + "version": "3.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/bs-mocha/node_modules/mkdirp": { + "version": "0.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/bs-mocha/node_modules/mocha": { + "version": "6.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "2.2.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.4", + "ms": "2.1.1", + "node-environment-flags": "1.0.5", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/bs-mocha/node_modules/ms": { + "version": "2.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/bs-mocha/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bs-mocha/node_modules/p-locate": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/bs-mocha/node_modules/path-exists": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/bs-mocha/node_modules/string-width": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/bs-mocha/node_modules/strip-ansi": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/bs-mocha/node_modules/strip-json-comments": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bs-mocha/node_modules/supports-color": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/bs-mocha/node_modules/which": { + "version": "1.3.1", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/bs-mocha/node_modules/wrap-ansi": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/bs-mocha/node_modules/y18n": { + "version": "4.0.3", + "dev": true, + "license": "ISC" + }, + "node_modules/bs-mocha/node_modules/yargs": { + "version": "13.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/bs-mocha/node_modules/yargs-parser": { + "version": "13.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/bs-mocha/node_modules/yargs-unparser": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/bs-platform": { + "version": "9.0.2", + "hasInstallScript": true, + "license": "SEE LICENSE IN LICENSE", + "bin": { + "bsb": "bsb", + "bsc": "bsc", + "bsrefmt": "bsrefmt", + "bstracing": "lib/bstracing" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "engines": { + "node": ">=0.2.0" + } + }, + "node_modules/cacache": { + "version": "15.3.0", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001566", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "dependencies": { + "traverse": ">=0.3.0 <0.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "8.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/compare-versions": { + "version": "3.6.0", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "license": "MIT" + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "6.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "cacache": "^15.0.5", + "fast-glob": "^3.2.4", + "find-cache-dir": "^3.3.1", + "glob-parent": "^5.1.1", + "globby": "^11.0.1", + "loader-utils": "^2.0.0", + "normalize-path": "^3.0.0", + "p-limit": "^3.0.2", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "webpack-sources": "^1.4.3" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/decamelize": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/diff": { + "version": "5.0.0", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "dev": true + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.601", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/envinfo": { + "version": "7.11.0", + "dev": true, + "license": "MIT", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/es-abstract": { + "version": "1.22.3", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract/node_modules/object.assign": { + "version": "4.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/es-module-lexer": { + "version": "1.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/fstream/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/fstream/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/getos": { + "version": "3.2.1", + "license": "MIT", + "dependencies": { + "async": "^3.2.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/global": { + "version": "4.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "license": "ISC" + }, + "node_modules/growl": { + "version": "1.10.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.x" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true + }, + "node_modules/import-local": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "dev": true, + "license": "ISC" + }, + "node_modules/inflight": { + "version": "1.0.6", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "dev": true, + "license": "MIT" + }, + "node_modules/isarray": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dev": true, + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/language-server-mule": { + "version": "0.4.0", + "resolved": "git+ssh://git@github.com/banacorn/language-server-mule.git#bcbfc1959fa54fdb47f9e363fd8587efc871c8c6", + "license": "MIT", + "dependencies": { + "@glennsl/rescript-json-combinators": "^1.3.0", + "eventemitter3": "^4.0.7", + "rescript-nodejs": "^15.0.0", + "unzipper": "^0.10.11", + "vscode-languageclient": "^8.0.0" + } + }, + "node_modules/language-server-mule/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/less": { + "version": "4.2.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/less-loader": { + "version": "7.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/less-watch-compiler": { + "version": "1.16.3", + "dev": true, + "license": "MIT", + "dependencies": { + "amdefine": ">= 0.1.0", + "commander": "^8.0.0", + "extend": ">= 2.0.0", + "global": "^4.3.1", + "less": "^4.0.0", + "shelljs": ">= 0.4.0" + }, + "bin": { + "less-watch-compiler": "dist/less-watch-compiler.js" + } + }, + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/semver": { + "version": "5.7.2", + "dev": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/min-document": { + "version": "2.19.0", + "dev": true, + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha": { + "version": "10.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "7.2.0", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/serialize-javascript": { + "version": "6.0.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.3", + "dev": true, + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/needle": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/node-environment-flags": { + "version": "1.0.5", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + } + }, + "node_modules/node-environment-flags/node_modules/semver": { + "version": "5.7.2", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.7", + "dev": true, + "license": "MIT", + "dependencies": { + "array.prototype.reduce": "^1.0.6", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "safe-array-concat": "^1.0.0" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/process": { + "version": "0.11.10", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/prop-types": { + "version": "15.8.1", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/punycode": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/react": { + "version": "16.14.0", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "16.14.0", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + }, + "peerDependencies": { + "react": "^16.14.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reason-promise": { + "version": "1.1.5", + "license": "MIT" + }, + "node_modules/rechoir": { + "version": "0.6.2", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/rescript": { + "version": "10.1.4", + "hasInstallScript": true, + "license": "SEE LICENSE IN LICENSE", + "bin": { + "bsc": "bsc", + "bsrefmt": "bsrefmt", + "bstracing": "lib/bstracing", + "rescript": "rescript" + } + }, + "node_modules/rescript-nodejs": { + "version": "15.0.0", + "license": "MIT" + }, + "node_modules/rescript-vscode": { + "version": "0.0.17", + "resolved": "git+ssh://git@github.com/banacorn/rescript-vscode.git#316ce927cd34f8a3ad7cc84b5d1fe6b97fa01e02", + "license": "MIT", + "dependencies": { + "bs-platform": ">=8.2.0", + "reason-promise": ">=1.1.0" + } + }, + "node_modules/rescript-webapi": { + "version": "0.9.0", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.8", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/sax": { + "version": "1.3.0", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/scheduler": { + "version": "0.19.1", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "5.0.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "license": "MIT" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/ssri": { + "version": "8.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "license": "MIT" + }, + "node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.2.0", + "dev": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/terser": { + "version": "5.24.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { + "version": "6.0.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "dev": true, + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "engines": { + "node": "*" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "dev": true, + "license": "0BSD" + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "dev": true, + "license": "MIT" + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/unzipper": { + "version": "0.10.14", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz", + "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", + "dependencies": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/vscode-codicons": { + "version": "0.0.7" + }, + "node_modules/vscode-jsonrpc": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz", + "integrity": "sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageclient": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.1.0.tgz", + "integrity": "sha512-GL4QdbYUF/XxQlAsvYWZRV3V34kOkpRlvV60/72ghHfsYFnS/v2MANZ9P6sHmxFcZKOse8O+L9G7Czg0NUWing==", + "dependencies": { + "minimatch": "^5.1.0", + "semver": "^7.3.7", + "vscode-languageserver-protocol": "3.17.3" + }, + "engines": { + "vscode": "^1.67.0" + } + }, + "node_modules/vscode-languageclient/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/vscode-languageclient/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz", + "integrity": "sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==", + "dependencies": { + "vscode-jsonrpc": "8.1.0", + "vscode-languageserver-types": "3.17.3" + } + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz", + "integrity": "sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==" + }, + "node_modules/watchpack": { + "version": "2.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.89.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "4.10.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "cross-spawn": "^7.0.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-cli/node_modules/interpret": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/webpack-cli/node_modules/rechoir": { + "version": "0.7.1", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "1.4.3", + "dev": true, + "license": "MIT", + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/webpack/node_modules/webpack-sources": { + "version": "3.2.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/which-typed-array": { + "version": "1.1.13", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wide-align": { + "version": "1.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/wide-align/node_modules/ansi-regex": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align/node_modules/string-width": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align/node_modules/strip-ansi": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/workerpool": { + "version": "6.2.1", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "license": "ISC" + }, + "node_modules/y18n": { + "version": "5.0.8", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "license": "ISC" + }, + "node_modules/yargs": { + "version": "16.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json index 8dcb518f..2f02fba4 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "compare-versions": "^3.5.1", "eventemitter3": ">=4.0.0", "getos": "^3.2.1", - "language-server-mule": "github:banacorn/language-server-mule#v0.3.4", + "language-server-mule": "github:banacorn/language-server-mule#v0.4.1", "react": "^16.9.0", "react-dom": "^16.9.0", "reason-promise": ">=1.1.0", diff --git a/src/Connection/Connection__Probe.res b/src/Connection/Connection__Probe.res index 7f68b2a6..17a3053f 100644 --- a/src/Connection/Connection__Probe.res +++ b/src/Connection/Connection__Probe.res @@ -13,10 +13,10 @@ module Platform = { let runAsPromise = (): Promise.Js.t => { let (promise, resolve, reject) = Promise.Js.pending() getos((e, os) => { - let e = Js.Nullable.toOption(e); + let e = Js.Nullable.toOption(e) switch e { - | Some(e) => reject(e) - | None => resolve(os) + | Some(e) => reject(e) + | None => resolve(os) } }) promise @@ -42,23 +42,14 @@ module Platform = { } let chooseFromReleases = (platform: Platform.t, releases: array): option => { - // CURRENTLY ACCEPTED RANGE OF ALS: [v0.2, v0.3) let chooseRelease = (releases: array) => { - let lowerBound = "v0.2.0.0" - let upperBound = "v0.3.0.0" - let withinBound = x => { - let lower = Version.compare(x, lowerBound) - let upper = Version.compare(x, upperBound) - (lower == Version.EQ || lower == Version.GT) && upper == Version.LT + // fetch the latest release + let compare = (x: Release.t, y: Release.t) => { + let xTime = Js.Date.getTime(Js.Date.fromString(x.created_at)) + let yTime = Js.Date.getTime(Js.Date.fromString(y.created_at)) + compare(yTime, xTime) } - let matched = releases->Array.keep(release => withinBound(release.tagName)) - let compare = (x: Release.t, y: Release.t) => - switch Version.compare(x.tagName, y.tagName) { - | Version.GT => -1 - | Version.EQ => 0 - | Version.LT => 1 - } - let sorted = Js.Array.sortInPlaceWith(compare, matched) + let sorted = Js.Array.sortInPlaceWith(compare, releases) sorted[0] } @@ -78,10 +69,9 @@ let chooseFromReleases = (platform: Platform.t, releases: array): opt matched[0] }) ->Option.map(asset => { - Target.srcUrl: asset.url, - fileName: release.tagName ++ "-" ++ Node_process.process["platform"], - release: release, - asset: asset, + saveAsFileName: release.tag_name ++ "-" ++ Node_process.process["platform"], + Target.release, + asset, }) } @@ -120,13 +110,13 @@ let probeLSP = (globalStoragePath, onDownload) => { // https://github.com/banacorn/agda-mode-vscode/issues/71 Source.FromCommand(name), Source.FromGitHub({ - username: "banacorn", + username: "agda", repository: "agda-language-server", - userAgent: "agda-mode-vscode", - globalStoragePath: globalStoragePath, + userAgent: "agda/agda-mode-vscode", + globalStoragePath, chooseFromReleases: chooseFromReleases(platform), - onDownload: onDownload, - afterDownload: afterDownload, + onDownload, + afterDownload, log: Js.log, cacheInvalidateExpirationSecs: 86400, }), diff --git a/src/State/State__View.res b/src/State/State__View.res index ff85eec5..8ca89f08 100644 --- a/src/State/State__View.res +++ b/src/State/State__View.res @@ -57,7 +57,7 @@ module Panel: Panel = { switch status { | Connection.Emacs(version, _) => displayStatus(state, "Emacs v" ++ version) | LSP(version, ViaCommand(_, _, _, LanguageServerMule.Method.FromGitHub(_, release, _))) => - displayStatus(state, "ALS prebuilt " ++ release.tagName ++ " (Agda v" ++ version ++ ")") + displayStatus(state, "ALS prebuilt " ++ release.tag_name ++ " (Agda v" ++ version ++ ")") | LSP(version, ViaCommand(_)) => displayStatus(state, "ALS v" ++ version) | LSP(_, ViaTCP(_)) => displayStatus(state, "ALS (TCP)") } From 7362de17341d8859620959cb115d460ecbe34ab5 Mon Sep 17 00:00:00 2001 From: Szumi Xie Date: Sun, 10 Dec 2023 21:16:17 +0100 Subject: [PATCH 078/109] [ fix #176 ] Update `asset/keymap.js` --- asset/keymap.js | 2 +- asset/query.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/asset/keymap.js b/asset/keymap.js index 7362433b..44646b3e 100644 --- a/asset/keymap.js +++ b/asset/keymap.js @@ -1 +1 @@ -module.exports.default = {" ":{">>":[" "]},"!":{"!":{">>":["‼"]},">>":["!"],"?":{">>":["⁉"]},"`":{">>":["¡"]}},"\"":{"'":{">>":["“"]},"<":{">>":["«"]},">":{">>":["»"]},">>":["̈"],"A":{">>":["Ä"]},"E":{">>":["Ë"]},"H":{">>":["Ḧ"]},"I":{">>":["Ï"]},"O":{">>":["Ö"]},"U":{">>":["Ü"]},"W":{">>":["Ẅ"]},"X":{">>":["Ẍ"]},"Y":{">>":["Ÿ"]},"`":{">>":["„"]},"a":{">>":["ä"]},"e":{">>":["ë"]},"h":{">>":["ḧ"]},"i":{">>":["ï"]},"o":{">>":["ö"]},"t":{">>":["ẗ"]},"u":{">>":["ü"]},"w":{">>":["ẅ"]},"x":{">>":["ẍ"]},"y":{">>":["ÿ"]},"{":{"A":{"}":{">>":["Ä"]}},"E":{"}":{">>":["Ë"]}},"I":{"}":{">>":["Ï"]}},"O":{"}":{">>":["Ö"]}},"U":{"}":{">>":["Ü"]}},"Y":{"}":{">>":["Ÿ"]}},"\\":{"i":{"}":{">>":["ï"]}}},"a":{"}":{">>":["ä"]}},"e":{"}":{">>":["ë"]}},"o":{"}":{">>":["ö"]}},"u":{"}":{">>":["ü"]}},"y":{"}":{">>":["ÿ"]}},"}":{">>":["¨"]}}},"#":{">>":["♯","#"]},"%":{">>":["%"]},"&":{">>":["⅋","&"]},"'":{">>":["′","″","‴","⁗","'","́"],"A":{">>":["Á"]},"C":{">>":["Ć"]},"E":{">>":["É"]},"G":{">>":["Ǵ"]},"I":{">>":["Í"]},"K":{">>":["Ḱ"]},"L":{">>":["Ĺ"]},"M":{">>":["Ḿ"]},"N":{">>":["Ń"]},"O":{">>":["Ó"]},"P":{">>":["Ṕ"]},"R":{">>":["Ŕ"]},"S":{">>":["Ś"]},"U":{">>":["Ú"]},"W":{">>":["Ẃ"]},"Y":{">>":["Ý"]},"Z":{">>":["Ź"]},"\\":{"A":{"E":{">>":["Ǽ"]}},"O":{">>":["Ǿ"]},"a":{"e":{">>":["ǽ"]}},"o":{">>":["ǿ"]}},"a":{">>":["á"]},"c":{">>":["ć"]},"e":{">>":["é"]},"g":{">>":["ǵ"]},"i":{">>":["í"]},"k":{">>":["ḱ"]},"l":{">>":["ĺ"]},"m":{">>":["ḿ"]},"n":{">>":["ń"]},"o":{">>":["ó"]},"p":{">>":["ṕ"]},"r":{">>":["ŕ"]},"s":{">>":["ś"]},"u":{">>":["ú"]},"w":{">>":["ẃ"]},"y":{">>":["ý"]},"z":{">>":["ź"]},"{":{"A":{"}":{">>":["Á"]}},"C":{"}":{">>":["Ć"]}},"E":{"}":{">>":["É"]}},"G":{"}":{">>":["Ǵ"]}},"I":{"}":{">>":["Í"]}},"L":{"}":{">>":["Ĺ"]}},"N":{"}":{">>":["Ń"]}},"O":{"}":{">>":["Ó"]}},"R":{"}":{">>":["Ŕ"]}},"S":{"}":{">>":["Ś"]}},"U":{"}":{">>":["Ú"]}},"Y":{"}":{">>":["Ý"]}},"Z":{"}":{">>":["Ź"]}},"\\":{"A":{"E":{"}":{">>":["Ǽ"]}}},"O":{"}":{">>":["Ǿ"]}},"a":{"e":{"}":{">>":["ǽ"]}}},"i":{"}":{">>":["í"]}},"o":{"}":{">>":["ǿ"]}}},"a":{"}":{">>":["á"]}},"c":{"}":{">>":["ć"]}},"e":{"}":{">>":["é"]}},"g":{"}":{">>":["ǵ"]}},"l":{"}":{">>":["ĺ"]}},"n":{"}":{">>":["ń"]}},"o":{"}":{">>":["ó"]}},"r":{"}":{">>":["ŕ"]}},"s":{"}":{">>":["ś"]}},"u":{"}":{">>":["ú"]}},"y":{"}":{">>":["ý"]}},"z":{"}":{">>":["ź"]}},"}":{">>":["´"]}}},"(":{"(":{">>":["⦅","⦅"]},"=":{">>":["≘"]},">>":["(","[","{","⁅","⁽","₍","〈","⎴","⟅","⟦","⟨","⟪","⦃","〈","《","「","『","【","〔","〖","〚","︵","︷","︹","︻","︽","︿","﹁","﹃","﹙","﹛","﹝","(","[","{","「","❪","❬","❰","❲","❴","⟮","⦅","⦗","⧼","⸨","❮","⦇","⦉"],"b":{">>":["⟅"]},"|":{">>":["⦇"]}},")":{")":{">>":["⦆","⦆"]},">>":[")","]","}","⁆","⁾","₎","〉","⎵","⟆","⟧","⟩","⟫","⦄","〉","》","」","』","】","〕","〗","〛","︶","︸","︺","︼","︾","﹀","﹂","﹄","﹚","﹜","﹞",")","]","}","」","❫","❭","❱","❳","❵","⟯","⦆","⦘","⧽","⸩","❯","⦈","⦊"],"b":{">>":["⟆"]}},"*":{"=":{">>":["≛"]},">>":["⋆","*"]},"+":{" ":{">>":["⊹"]},">>":["+"]},",":{">>":["ʻ","،","⸲","⸴","⹁","⹉","、","︐","︑","﹐","﹑",",","、"," "]},"-":{"-":{"-":{">>":["─","│","┌","┐","└","┘","├","┤","┬","┼","┴","╴","╵","╶","╷","╭","╮","╯","╰","╱","╲","╳","—"]},".":{">>":["╌","╎","┄","┆","┈","┊","╍","╏","┅","┇","┉","┋"]},"=":{">>":["═","║","╔","╗","╚","╝","╠","╣","╦","╬","╩","╒","╕","╘","╛","╞","╡","╤","╪","╧","╓","╖","╙","╜","╟","╢","╥","╫","╨"]},">":{">>":["⟶"]},">>":["–"],"_":{">>":["━","┃","┏","┓","┗","┛","┣","┫","┳","╋","┻","╸","╹","╺","╻","┍","┯","┑","┕","┷","┙","┝","┿","┥","┎","┰","┒","┖","┸","┚","┠","╂","┨","┞","╀","┦","┟","╁","┧","┢","╈","┪","┡","╇","┩","┮","┭","┶","┵","┾","┽","┲","┱","┺","┹","╊","╉","╆","╅","╄","╃","╿","╽","╼","╾"]}},":":{">>":["∹"]},">":{">>":["→"],"n":{">>":["↛"]}},">>":["­"],"o":{">>":["⊸"]},"|":{">>":["⊣"]},"~":{">>":["≂"]}},".":{"+":{">>":["∔"]},"-":{">>":["∸"]},".":{".":{">>":["⋯","⋮","⋰","⋱"]}},"=":{".":{">>":["≑"]},">>":["≐"]},">>":["∙",".","̇"],"A":{">>":["Ȧ"]},"B":{">>":["Ḃ"]},"C":{">>":["Ċ"]},"D":{">>":["Ḋ"]},"E":{">>":["Ė"]},"F":{">>":["Ḟ"]},"G":{">>":["Ġ"]},"H":{">>":["Ḣ"]},"I":{">>":["İ"]},"M":{">>":["Ṁ"]},"N":{">>":["Ṅ"]},"O":{">>":["Ȯ"]},"P":{">>":["Ṗ"]},"R":{">>":["Ṙ"]},"S":{">>":["Ṡ"]},"T":{">>":["Ṫ"]},"W":{">>":["Ẇ"]},"X":{">>":["Ẋ"]},"Y":{">>":["Ẏ"]},"Z":{">>":["Ż"]},"a":{">>":["ȧ"]},"b":{">>":["ḃ"]},"c":{">>":["ċ"]},"d":{">>":["ḋ"]},"e":{">>":["ė"]},"f":{">>":["ḟ"]},"g":{">>":["ġ"]},"h":{">>":["ḣ"]},"m":{">>":["ṁ"]},"n":{">>":["ṅ"]},"o":{">>":["ȯ"]},"p":{">>":["ṗ"]},"r":{">>":["ṙ"]},"s":{">>":["ṡ"]},"t":{">>":["ṫ"]},"w":{">>":["ẇ"]},"x":{">>":["ẋ"]},"y":{">>":["ẏ"]},"z":{">>":["ż"]},"{":{"A":{"}":{">>":["Ȧ"]}},"C":{"}":{">>":["Ċ"]}},"E":{"}":{">>":["Ė"]}},"G":{"}":{">>":["Ġ"]}},"I":{"}":{">>":["İ"]}},"O":{"}":{">>":["Ȯ"]}},"Z":{"}":{">>":["Ż"]}},"a":{"}":{">>":["ȧ"]}},"c":{"}":{">>":["ċ"]}},"g":{"}":{">>":["ġ"]}},"o":{"}":{">>":["ȯ"]}},"z":{"}":{">>":["ż"]}},"}":{">>":["˙"]}}},"/":{">>":["/","\","‌"]},"0":{">>":["∅"]},"8":{"<":{">>":["✂","✄"]}},":":{":":{"-":{">>":["∺"]},">>":["∷"]},"=":{">>":["≔"]},">>":["∶","⦂","ː","꞉","˸","፥","፦",":","﹕","︓"," "],"~":{">>":["∻"]}},";":{">>":["⨾","⨟","⁏","፤","꛶",";","︔","﹔","⍮","⸵",";"," "]},"<":{"-":{"-":{">":{">>":["⟷"]},">>":["⟵"]},">":{">>":["↔"],"n":{">>":["↮"]}},">>":["←"],"n":{">>":["↚"]}},"<":{">>":["⟪"]},"=":{">":{">>":["⇔"],"n":{">>":["⇎"]}},">>":["≤","⇐"],"n":{">>":["≰"]}},">>":["⟨","<","≪","⋘","≺","⊂","⋐","⊏","⊰","⊲","⋖","<"],"n":{">>":["≮"]},"|":{">>":["⦉"]},"~":{">>":["≲"],"n":{">>":["⋦"],"n":{">>":["≴"]}}}},"=":{":":{">>":["≕"]},"=":{"=":{">>":["≣"]},">>":["≡"],"n":{">>":["≢"]}},">":{">>":["⇒"],"n":{">>":["⇏"]}},">>":["=","̄"],"A":{">>":["Ā"]},"E":{">>":["Ē"]},"G":{">>":["Ḡ"]},"I":{">>":["Ī"]},"O":{">>":["Ō"]},"U":{">>":["Ū"]},"Y":{">>":["Ȳ"]},"\\":{"A":{"E":{">>":["Ǣ"]}},"a":{"e":{">>":["ǣ"]}}},"a":{">>":["ā"]},"e":{">>":["ē"]},"g":{">>":["ḡ"]},"i":{">>":["ī"]},"n":{">>":["≠"]},"o":{">>":["≗","ō"]},"u":{">>":["ū"]},"y":{">>":["ȳ"]},"{":{"A":{"}":{">>":["Ā"]}},"E":{"}":{">>":["Ē"]}},"I":{"}":{">>":["Ī"]}},"O":{"}":{">>":["Ō"]}},"U":{"}":{">>":["Ū"]}},"Y":{"}":{">>":["Ȳ"]}},"\\":{"A":{"E":{"}":{">>":["Ǣ"]}}},"a":{"e":{"}":{">>":["ǣ"]}}},"i":{"}":{">>":["ī"]}}},"a":{"}":{">>":["ā"]}},"e":{"}":{">>":["ē"]}},"o":{"}":{">>":["ō"]}},"u":{"}":{">>":["ū"]}},"y":{"}":{">>":["ȳ"]}},"}":{">>":["¯"]}}},">":{"=":{">>":["≥"],"n":{">>":["≱"]}},">":{">>":["⟫"]},">>":["⟩",">","≫","⋙","≻","⊃","⋑","⊐","⊱","⊳","⋗",">"],"n":{">>":["≯"]},"~":{">>":["≳"],"n":{">>":["⋧"],"n":{">>":["≵"]}}}},"?":{"!":{">>":["‽","⁈"]},"=":{">>":["≟"]},">>":["?"],"?":{">>":["⁇"]},"`":{">>":["¿"]}},"@":{">>":["@"]},"A":{"A":{">>":["Å"]},"E":{">>":["Æ"]},"n":{"d":{">>":["⋀"]}}},"B":{"0":{">>":["𝟎"]},"1":{">>":["𝟏"]},"2":{">>":["𝟐"]},"3":{">>":["𝟑"]},"4":{">>":["𝟒"]},"5":{">>":["𝟓"]},"6":{">>":["𝟔"]},"7":{">>":["𝟕"]},"8":{">>":["𝟖"]},"9":{">>":["𝟗"]},"A":{">>":["𝐀"]},"B":{">>":["𝐁"]},"C":{">>":["𝐂"]},"D":{">>":["𝐃"]},"E":{">>":["𝐄"]},"F":{">>":["𝐅"]},"G":{">>":["𝐆"],"A":{">>":["𝚨"]},"B":{">>":["𝚩"]},"C":{">>":["𝚾"]},"D":{">>":["𝚫"]},"E":{">>":["𝚬"]},"F":{">>":["𝚽"]},"G":{">>":["𝚪"]},"H":{">>":["𝚮"]},"I":{">>":["𝚰"]},"K":{">>":["𝚱"]},"L":{">>":["𝚲"]},"M":{">>":["𝚳"]},"N":{">>":["𝚴"]},"O":{">>":["𝛀"]},"P":{">>":["𝚿"]},"R":{">>":["𝚸"]},"S":{">>":["𝚺"]},"T":{">>":["𝚻"],"H":{">>":["𝚯"]}},"U":{">>":["𝚼"]},"X":{">>":["𝚵"]},"Z":{">>":["𝚭"]},"a":{">>":["𝛂"]},"b":{">>":["𝛃"]},"c":{">>":["𝛘"]},"d":{">>":["𝛅"]},"e":{">>":["𝛆"]},"f":{">>":["𝛗"]},"g":{">>":["𝛄"]},"h":{">>":["𝛈"]},"i":{">>":["𝛊"]},"k":{">>":["𝛋"]},"l":{">>":["𝛌"]},"m":{">>":["𝛍"]},"n":{">>":["𝛎"]},"o":{">>":["𝛚"]},"p":{">>":["𝛙"]},"r":{">>":["𝛒"]},"s":{">>":["𝛔"]},"t":{">>":["𝛕"],"h":{">>":["𝛉"]}},"u":{">>":["𝛖"]},"x":{">>":["𝛏"]},"z":{">>":["𝛇"]}},"H":{">>":["𝐇"]},"I":{">>":["𝐈"]},"J":{">>":["𝐉"]},"K":{">>":["𝐊"]},"L":{">>":["𝐋"]},"M":{">>":["𝐌"]},"N":{">>":["𝐍"]},"O":{">>":["𝐎"],"m":{"i":{"c":{"r":{"o":{"n":{">>":["𝚶"]}}}}}}},"P":{">>":["𝐏"],"i":{">>":["𝚷"]}},"Q":{">>":["𝐐"]},"R":{">>":["𝐑"]},"S":{">>":["𝐒"]},"T":{">>":["𝐓"]},"U":{">>":["𝐔"]},"V":{">>":["𝐕"]},"W":{">>":["𝐖"]},"X":{">>":["𝐗"]},"Y":{">>":["𝐘"]},"Z":{">>":["𝐙"]},"a":{">>":["𝐚"]},"b":{">>":["𝐛"],"b":{"{":{"N":{"}":{">>":["ℕ"]}},"P":{"}":{">>":["ℙ"]}},"R":{"}":{">>":["ℝ"]}},"Z":{"}":{">>":["ℤ"]}}}}},"c":{">>":["𝐜"]},"d":{">>":["𝐝"]},"e":{">>":["𝐞"]},"f":{">>":["𝐟"]},"g":{">>":["𝐠"]},"h":{">>":["𝐡"]},"i":{">>":["𝐢"]},"j":{">>":["𝐣"]},"k":{">>":["𝐤"]},"l":{">>":["𝐥"]},"m":{">>":["𝐦"]},"n":{">>":["𝐧"]},"o":{">>":["𝐨"],"m":{"i":{"c":{"r":{"o":{"n":{">>":["𝛐"]}}}}}},"x":{">>":["□"]}},"p":{">>":["𝐩"],"i":{">>":["𝛑"]}},"q":{">>":["𝐪"]},"r":{">>":["𝐫"]},"s":{">>":["𝐬"]},"t":{">>":["𝐭"]},"u":{">>":["𝐮"],"m":{"p":{"e":{"q":{">>":["≎"]}}}}},"v":{">>":["𝐯"]},"w":{">>":["𝐰"]},"x":{">>":["𝐱"]},"y":{">>":["𝐲"]},"z":{">>":["𝐳"]}},"C":{">>":["∁"],"a":{"p":{">>":["⋒"]}},"u":{"p":{">>":["⋓"]}}},"D":{"H":{">>":["Ð"]},"e":{"l":{"t":{"a":{">>":["Δ"]}}}},"i":{"a":{"m":{"o":{"n":{"d":{">>":["◇"]}}}}}},"o":{"w":{"n":{"a":{"r":{"r":{"o":{"w":{">>":["⇓"]}}}}}}}}},"F":{"0":{">>":["0"]},"1":{">>":["1"]},"2":{">>":["2"]},"3":{">>":["3"]},"4":{">>":["4"]},"5":{">>":["5"]},"6":{">>":["6"]},"7":{">>":["7"]},"8":{">>":["8"]},"9":{">>":["9"]},"A":{">>":["A"]},"B":{">>":["B"]},"C":{">>":["C"]},"D":{">>":["D"]},"E":{">>":["E"]},"F":{">>":["F"]},"G":{">>":["G"]},"H":{">>":["H"]},"I":{">>":["I"]},"J":{">>":["J"]},"K":{">>":["K"]},"L":{">>":["L"]},"M":{">>":["M"]},"N":{">>":["N"]},"O":{">>":["O"]},"P":{">>":["P"]},"Q":{">>":["Q"]},"R":{">>":["R"]},"S":{">>":["S"]},"T":{">>":["T"]},"U":{">>":["U"]},"V":{">>":["V"]},"W":{">>":["W"]},"X":{">>":["X"]},"Y":{">>":["Y"]},"Z":{">>":["Z"]},"a":{">>":["a"]},"b":{">>":["b"]},"c":{">>":["c"]},"d":{">>":["d"]},"e":{">>":["e"]},"f":{">>":["f"]},"g":{">>":["g"]},"h":{">>":["h"]},"i":{">>":["i"]},"j":{">>":["j"]},"k":{">>":["k"]},"l":{">>":["l"]},"m":{">>":["m"]},"n":{">>":["n"]},"o":{">>":["o"]},"p":{">>":["p"]},"q":{">>":["q"]},"r":{">>":["r"],"o":{"w":{"n":{"y":{">>":["☹"]}}}}},"s":{">>":["s"]},"t":{">>":["t"]},"u":{">>":["u"]},"v":{">>":["v"]},"w":{">>":["w"]},"x":{">>":["x"]},"y":{">>":["y"]},"z":{">>":["z"]}},"G":{"a":{"m":{"m":{"a":{">>":["Γ"]}}}},"l":{"b":{">>":["⨅"]}}},"H":{">>":["̋"],"O":{">>":["Ő"]},"U":{">>":["Ű"]},"u":{">>":["ű"]},"{":{"O":{"}":{">>":["Ő"]}},"U":{"}":{">>":["Ű"]}},"o":{"}":{">>":["ő"]}},"u":{"}":{">>":["ű"]}},"}":{">>":["˝"]}}},"I":{">>":["⋂"],"m":{">>":["ℑ"]}},"J":{"o":{"i":{"n":{">>":["⋈"]}}}},"L":{">>":["Ł"],"a":{"m":{"b":{"d":{"a":{">>":["Λ"]}}}}},"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇐"]}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇔"]}}}}}}}}}}}},"t":{"t":{"e":{"r":{">>":["✉"]}}}}},"l":{">>":["⋘"],"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇚"]}}}}}}}}},"o":{"n":{"g":{"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇐"]}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇔"]}}}}}}}}}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇒"]}}}}}}}}}}}}},"s":{"h":{">>":["↰"]}},"u":{"b":{">>":["⨆"]}}},"M":{"c":{"B":{">>":["ℬ"]},"E":{">>":["ℰ"]},"F":{">>":["ℱ"]},"H":{">>":["ℋ"]},"I":{">>":["ℐ"]},"L":{">>":["ℒ"]},"M":{">>":["ℳ"]},"R":{">>":["ℛ"]},"e":{">>":["ℯ"]},"g":{">>":["ℊ"]},"o":{">>":["ℴ"]}},"f":{"C":{">>":["ℭ"]},"H":{">>":["ℌ"]},"I":{">>":["ℑ"]},"R":{">>":["ℜ"]},"Z":{">>":["ℨ"]}},"i":{"i":{">>":["ℎ"]}}},"O":{"*":{">>":["⍟"]},"+":{">>":["⨁"]},".":{">>":["⨀"]},">>":["Ø"],"E":{">>":["Œ"]},"m":{"e":{"g":{"a":{">>":["Ω"]}}}},"r":{">>":["⋁"]},"x":{">>":["⨂"]}},"P":{">>":["¶"],"h":{"i":{">>":["Φ"]}},"i":{">>":["Π"]},"s":{"i":{">>":["Ψ"]}}},"R":{"e":{">>":["ℜ"]},"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇒"]}}}}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇛"]}}}}}}}}}},"s":{"h":{">>":["↱"]}}},"S":{">>":["§"],"i":{"g":{"m":{"a":{">>":["Σ"]}}}},"m":{"i":{"l":{"e":{"y":{">>":["☺"]}}}}},"u":{"b":{"s":{"e":{"t":{">>":["⋐"]}}}},"p":{"s":{"e":{"t":{">>":["⋑"]}}}}}},"T":{">>":["◀","◁","▶","▷","▲","△","▼","▽","◬","◭","◮"],"H":{">>":["Þ"]},"b":{">>":["◀","▶","▲","▼"]},"h":{"e":{"t":{"a":{">>":["Θ"]}}}},"w":{">>":["◁","▷","△","▽"]}},"U":{"+":{">>":["⨄"]},".":{">>":["⨃"]},"n":{">>":["⋃"]},"o":{">>":["ő"]},"p":{"a":{"r":{"r":{"o":{"w":{">>":["⇑"]}}}}},"d":{"o":{"w":{"n":{"a":{"r":{"r":{"o":{"w":{">>":["⇕"]}}}}}}}}},"s":{"i":{"l":{"o":{"n":{">>":["Υ"]}}}}}},"{":{"o":{"}":{">>":["ő"]}}}},"V":{"d":{"a":{"s":{"h":{">>":["⊩"]}}}},"e":{"r":{"t":{">>":["‖"]}}},"v":{"d":{"a":{"s":{"h":{">>":["⊪"]}}}}}},"X":{"i":{">>":["Ξ"]}},"[":{"[":{">>":["⟦"]}},"\\":{">>":["\\"],"\\":{">>":["\\\\"]}},"]":{"]":{">>":["⟧"]}},"^":{"(":{">>":["⁽"]},")":{">>":["⁾"]},"+":{">>":["⁺"]},"-":{">>":["⁻"]},"0":{">>":["⁰"]},"1":{">>":["¹"]},"2":{">>":["²"]},"3":{">>":["³"]},"4":{">>":["⁴"]},"5":{">>":["⁵"]},"6":{">>":["⁶"]},"7":{">>":["⁷"]},"8":{">>":["⁸"]},"9":{">>":["⁹"]},"=":{">>":["⁼"]},">>":["̂"],"A":{">>":["Â"]},"C":{">>":["Ĉ"]},"E":{">>":["Ê"]},"G":{">>":["Ĝ"]},"H":{">>":["Ĥ"]},"I":{">>":["Î"]},"J":{">>":["Ĵ"]},"O":{">>":["Ô"]},"S":{">>":["Ŝ"]},"U":{">>":["Û"]},"W":{">>":["Ŵ"]},"Y":{">>":["Ŷ"]},"Z":{">>":["Ẑ"]},"\\":{"g":{"a":{"m":{"m":{"a":{">>":["ˠ"]}}}}}},"a":{">>":["ª","â"]},"c":{">>":["ĉ"]},"e":{">>":["ê"]},"g":{">>":["ĝ"]},"h":{">>":["ĥ","ʰ"]},"i":{">>":["î"]},"j":{">>":["ĵ","ʲ"]},"l":{">>":["ˡ"]},"n":{">>":["ⁿ"]},"o":{">>":["º","ô"]},"r":{">>":["ʳ"]},"s":{">>":["ŝ","ˢ"]},"u":{">>":["û"]},"w":{">>":["ŵ","ʷ"]},"x":{">>":["ˣ"]},"y":{">>":["ŷ","ʸ"]},"z":{">>":["ẑ"]},"{":{"A":{"}":{">>":["Â"]}},"C":{"}":{">>":["Ĉ"]}},"E":{"}":{">>":["Ê"]}},"G":{"}":{">>":["Ĝ"]}},"H":{"}":{">>":["Ĥ"]}},"I":{"}":{">>":["Î"]}},"J":{"}":{">>":["Ĵ"]}},"O":{"}":{">>":["Ô"]}},"S":{"M":{"}":{">>":["℠"]}},"}":{">>":["Ŝ"]}},"T":{"E":{"L":{"}":{">>":["℡"]}}},"M":{"}":{">>":["™"]}}},"U":{"}":{">>":["Û"]}},"W":{"}":{">>":["Ŵ"]}},"Y":{"}":{">>":["Ŷ"]}},"\\":{"i":{"}":{">>":["î"]}},"j":{"}":{">>":["ĵ"]}}},"a":{"}":{">>":["â"]}},"c":{"}":{">>":["ĉ"]}},"e":{"}":{">>":["ê"]}},"g":{"}":{">>":["ĝ"]}},"h":{"}":{">>":["ĥ"]}},"o":{"}":{">>":["ô"]}},"s":{"}":{">>":["ŝ"]}},"u":{"}":{">>":["û"]}},"w":{"}":{">>":["ŵ"]}},"y":{"}":{">>":["ŷ"]}}}},"_":{"(":{">>":["₍"]},")":{">>":["₎"]},"+":{">>":["₊"]},"-":{">>":["₋"]},"0":{">>":["₀"]},"1":{">>":["₁"]},"2":{">>":["₂"]},"3":{">>":["₃"]},"4":{">>":["₄"]},"5":{">>":["₅"]},"6":{">>":["₆"]},"7":{">>":["₇"]},"8":{">>":["₈"]},"9":{">>":["₉"]},"=":{">>":["₌"]},"_":{">>":["_"]}},"`":{">>":["‵","‶","‷","`","̀"],"A":{">>":["À"]},"E":{">>":["È"]},"I":{">>":["Ì"]},"N":{">>":["Ǹ"]},"O":{">>":["Ò"]},"U":{">>":["Ù"]},"W":{">>":["Ẁ"]},"Y":{">>":["Ỳ"]},"a":{">>":["à"]},"e":{">>":["è"]},"i":{">>":["ì"]},"n":{">>":["ǹ"]},"o":{">>":["ò"]},"u":{">>":["ù"]},"w":{">>":["ẁ"]},"y":{">>":["ỳ"]},"{":{"A":{"}":{">>":["À"]}},"E":{"}":{">>":["È"]}},"I":{"}":{">>":["Ì"]}},"N":{"}":{">>":["Ǹ"]}},"O":{"}":{">>":["Ò"]}},"U":{"}":{">>":["Ù"]}},"\\":{"i":{"}":{">>":["ì"]}}},"a":{"}":{">>":["à"]}},"e":{"}":{">>":["è"]}},"n":{"}":{">>":["ǹ"]}},"o":{"}":{">>":["ò"]}},"u":{"}":{">>":["ù"]}}}},"a":{"a":{">>":["å"]},"e":{">>":["æ"]},"l":{"e":{"p":{"h":{">>":["א"]}}},"l":{">>":["∀"]},"p":{"h":{"a":{">>":["α"]}}}},"m":{"a":{"l":{"g":{">>":["∐"]}}}},"n":{"d":{"=":{">>":["≙"]},">>":["∧"]},"g":{"l":{"e":{">>":["∟","∡","∢","⊾","⊿","∠"]}}}},"p":{"l":{">>":["⌶","⌷","⌸","⌹","⌺","⌻","⌼","⌽","⌾","⌿","⍀","⍁","⍂","⍃","⍄","⍅","⍆","⍇","⍈","⍉","⍊","⍋","⍌","⍍","⍎","⍏","⍐","⍑","⍒","⍓","⍔","⍕","⍖","⍗","⍘","⍙","⍚","⍛","⍜","⍝","⍞","⍟","⍠","⍡","⍢","⍣","⍤","⍥","⍦","⍧","⍨","⍩","⍪","⍫","⍬","⍭","⍮","⍯","⍰","⍱","⍲","⍳","⍴","⍵","⍶","⍷","⍸","⍹","⍺","⎕"]},"p":{"r":{"o":{"x":{">>":["≈"],"e":{"q":{">>":["≊"]}}}}}}},"s":{"t":{">>":["∗"],"e":{"r":{"i":{"s":{"k":{">>":["⁎","⁑","⁂","✢","✣","✤","✥","✱","✲","✳","✺","✻","✼","✽","❃","❉","❊","❋","*"]}}}}}},"y":{"m":{"p":{">>":["≍"]}}}}},"b":{"+":{">>":["⊞"]},"-":{">>":["⊟"]},".":{">>":["⊡"]},"0":{">>":["𝟘"]},"1":{">>":["𝟙"]},"2":{">>":["𝟚"]},"3":{">>":["𝟛"]},"4":{">>":["𝟜"]},"5":{">>":["𝟝"]},"6":{">>":["𝟞"]},"7":{">>":["𝟟"]},"8":{">>":["𝟠"]},"9":{">>":["𝟡"]},">>":["♭","̱"],"A":{">>":["𝔸"]},"B":{">>":["𝔹"]},"C":{">>":["ℂ"]},"D":{">>":["𝔻"]},"E":{">>":["𝔼"]},"F":{">>":["𝔽"]},"G":{">>":["𝔾"],"G":{">>":["ℾ"]},"P":{">>":["ℿ"]},"S":{">>":["⅀"]},"g":{">>":["ℽ"]},"p":{">>":["ℼ"]}},"H":{">>":["ℍ"]},"I":{">>":["𝕀"]},"J":{">>":["𝕁"]},"K":{">>":["𝕂"]},"L":{">>":["𝕃"]},"M":{">>":["𝕄"]},"N":{">>":["ℕ"]},"O":{">>":["𝕆"]},"P":{">>":["ℙ"]},"Q":{">>":["ℚ"]},"R":{">>":["ℝ"]},"S":{">>":["𝕊"]},"T":{">>":["𝕋"]},"U":{">>":["𝕌"]},"V":{">>":["𝕍"]},"W":{">>":["𝕎"]},"X":{">>":["𝕏"]},"Y":{">>":["𝕐"]},"Z":{">>":["ℤ"]},"a":{">>":["𝕒"],"c":{"k":{"c":{"o":{"n":{"g":{">>":["≌"]}}}},"e":{"p":{"s":{"i":{"l":{"o":{"n":{">>":["∍"]}}}}}}},"p":{"r":{"i":{"m":{"e":{">>":["‵"]}}}}},"s":{"i":{"m":{">>":["∽"],"e":{"q":{">>":["⋍"]}}}},"l":{"a":{"s":{"h":{">>":["\\"]}}}}}}},"r":{"w":{"e":{"d":{"g":{"e":{">>":["⊼"]}}}}}}},"b":{">>":["𝕓"]},"c":{">>":["𝕔"]},"d":{">>":["𝕕"]},"e":{">>":["𝕖"],"c":{"a":{"u":{"s":{"e":{">>":["∵"]}}}}},"t":{"a":{">>":["β"]},"h":{">>":["ב"]},"w":{"e":{"e":{"n":{">>":["≬"]}}}}}},"f":{">>":["𝕗"]},"g":{">>":["𝕘"]},"h":{">>":["𝕙"]},"i":{">>":["𝕚"],"g":{"c":{"a":{"p":{">>":["⋂"]}},"i":{"r":{"c":{">>":["◯"]}}},"u":{"p":{">>":["⋃"]}}},"s":{"t":{"a":{"r":{">>":["★"]}}}},"t":{"r":{"i":{"a":{"n":{"g":{"l":{"e":{"d":{"o":{"w":{"n":{">>":["▽"]}}}},"u":{"p":{">>":["△"]}}}}}}}}}},"v":{"e":{"e":{">>":["⋁"]}}},"w":{"e":{"d":{"g":{"e":{">>":["⋀"]}}}}}}},"j":{">>":["𝕛"]},"k":{">>":["𝕜"]},"l":{">>":["𝕝"],"a":{"c":{"k":{"l":{"o":{"z":{"e":{"n":{"g":{"e":{">>":["✦"]}}}}}}},"s":{"m":{"i":{"l":{"e":{"y":{">>":["☻"]}}}}},"q":{"u":{"a":{"r":{"e":{">>":["▪"]}}}}}},"t":{"r":{"i":{"a":{"n":{"g":{"l":{"e":{">>":["▴"],"d":{"o":{"w":{"n":{">>":["▾"]}}}},"l":{"e":{"f":{"t":{">>":["◂"]}}}},"r":{"i":{"g":{"h":{"t":{">>":["▸"]}}}}}}}}}}}}}}}}},"m":{">>":["𝕞"]},"n":{">>":["𝕟"]},"o":{">>":["𝕠"],"t":{">>":["⊥"]},"w":{"t":{"i":{"e":{">>":["⋈"]}}}},"x":{"'":{">>":["⍞"]},"/":{">>":["⍁"]},":":{">>":["⍠"]},"<":{">>":["⍃"]},"=":{">>":["⌸"]},">":{">>":["⍄"]},"?":{">>":["⍰"]},"O":{">>":["⌼"]},"\\":{"\\":{">>":["⍂"]}},"c":{"i":{"r":{"c":{"l":{"e":{">>":["⌼"]}}}}},"o":{"m":{"p":{">>":["⌻"]}}}},"d":{">>":["⍗"],"e":{"l":{"t":{"a":{">>":["⍍"]}}}},"i":{">>":["⌺"],"v":{">>":["⌹"]}}},"e":{"q":{">>":["⌸"],"n":{">>":["⍯"]}}},"l":{">>":["⍇"]},"m":{"i":{"n":{"u":{"s":{">>":["⊟"]}}}}},"n":{"a":{"b":{"l":{"a":{">>":["⍔"]}}}},"e":{"q":{">>":["⍯"]}}},"o":{">>":["⌻"]},"p":{"l":{"u":{"s":{">>":["⊞"]}}}},"r":{">>":["⍈"]},"t":{"i":{"m":{"e":{"s":{">>":["⊠"]}}}}},"u":{">>":["⍐"]},"v":{"e":{"e":{">>":["⍌"]}}},"w":{"e":{"d":{"g":{"e":{">>":["⍓"]}}}}}}},"p":{">>":["𝕡"]},"q":{">>":["𝕢"]},"r":{">>":["𝕣"]},"s":{">>":["𝕤"]},"t":{">>":["𝕥"]},"u":{">>":["𝕦","•","◦","‣","⁌","⁍"],"b":{">>":["•"]},"l":{"l":{"e":{"t":{">>":["•"]}}}},"m":{"p":{"e":{"q":{">>":["≏"]}}}},"t":{">>":["‣"]},"w":{">>":["◦"]}},"v":{">>":["𝕧"]},"w":{">>":["𝕨"]},"x":{">>":["⊠","𝕩"]},"y":{">>":["𝕪"]},"z":{">>":["𝕫"]}},"c":{">>":["⌜","⌝","⌞","⌟","⌈","⌉","⌊","⌋","̧"],"C":{">>":["Ç"]},"E":{">>":["Ȩ"]},"G":{">>":["Ģ"]},"K":{">>":["Ķ"]},"L":{">>":["Ļ"]},"N":{">>":["Ņ"]},"R":{">>":["Ŗ"]},"S":{">>":["Ş"]},"T":{">>":["Ţ"]},"a":{"p":{">>":["∩"]}},"c":{">>":["ç"]},"d":{"o":{"t":{">>":["·"],"s":{">>":["⋯"]}}}},"e":{">>":["ȩ"],"l":{"s":{"i":{"u":{"s":{">>":["℃"]}}}}},"n":{"t":{"e":{"r":{"d":{"o":{"t":{">>":["·"]}}}}}}}},"g":{">>":["ģ"]},"h":{"e":{"c":{"k":{"m":{"a":{"r":{"k":{">>":["✓"]}}}}}}},"i":{">>":["χ"]}},"i":{".":{".":{">>":["◌"]},">>":["◎"]},">>":["●","○","◎","◌","◯","◍","◐","◑","◒","◓","◔","◕","◖","◗","◠","◡","◴","◵","◶","◷","⚆","⚇","⚈","⚉"],"O":{">>":["◯"]},"b":{">>":["●"]},"r":{"c":{">>":["∘"],"e":{"q":{">>":["≗"]}},"l":{"e":{"a":{"r":{"r":{"o":{"w":{"l":{"e":{"f":{"t":{">>":["↺"]}}}},"r":{"i":{"g":{"h":{"t":{">>":["↻"]}}}}}}}}}},"d":{"R":{">>":["®"]},"S":{">>":["Ⓢ"]},"a":{"s":{"t":{">>":["⊛"]}}},"c":{"i":{"r":{"c":{">>":["⊚"]}}}},"d":{"a":{"s":{"h":{">>":["⊝"]}}}}}}}}},"w":{">>":["○"]}},"k":{">>":["ķ"]},"l":{">>":["⌞","⌟","⌊","⌋","ļ"],"L":{">>":["⌊"]},"R":{">>":["⌋"]},"l":{">>":["⌞"]},"r":{">>":["⌟"]},"u":{"b":{"s":{"u":{"i":{"t":{">>":["♣"]}}}}}}},"n":{">>":["ņ"]},"o":{"l":{"o":{"n":{">>":[":"],"e":{"q":{">>":["≔"]}}}}},"m":{"p":{">>":["∘"],"l":{"e":{"m":{"e":{"n":{"t":{">>":["∁"]}}}}}}}},"n":{"g":{">>":["≅"]}},"p":{"r":{"o":{"d":{">>":["∐"]}}},"y":{"r":{"i":{"g":{"h":{"t":{">>":["©"]}}}}}}}},"r":{">>":["ŗ"]},"s":{">>":["ş"]},"t":{">>":["ţ"]},"u":{">>":["⌜","⌝","⌈","⌉"],"L":{">>":["⌈"]},"R":{">>":["⌉"]},"l":{">>":["⌜"]},"p":{">>":["∪"]},"r":{">>":["⌝"],"l":{"y":{"e":{"q":{"p":{"r":{"e":{"c":{">>":["⋞"]}}}},"s":{"u":{"c":{"c":{">>":["⋟"]}}}}}},"p":{"r":{"e":{"c":{"e":{"q":{">>":["≼"]}}}}}},"v":{"e":{"e":{">>":["⋎"]}}},"w":{"e":{"d":{"g":{"e":{">>":["⋏"]}}}}}}},"r":{"e":{"n":{"c":{"y":{">>":["¤"]}}}}},"v":{"e":{"a":{"r":{"r":{"o":{"w":{"l":{"e":{"f":{"t":{">>":["↶"]}}}},"r":{"i":{"g":{"h":{"t":{">>":["↷"]}}}}}}}}}}}}}},"{":{"C":{"}":{">>":["Ç"]}},"D":{"}":{">>":["Ḑ"]}},"E":{"}":{">>":["Ȩ"]}},"G":{"}":{">>":["Ģ"]}},"H":{"}":{">>":["Ḩ"]}},"K":{"}":{">>":["Ķ"]}},"L":{"}":{">>":["Ļ"]}},"N":{"}":{">>":["Ņ"]}},"R":{"}":{">>":["Ŗ"]}},"S":{"}":{">>":["Ş"]}},"T":{"}":{">>":["Ţ"]}},"c":{"}":{">>":["ç"]}},"d":{"}":{">>":["ḑ"]}},"e":{"}":{">>":["ȩ"]}},"g":{"}":{">>":["ģ"]}},"h":{"}":{">>":["ḩ"]}},"k":{"}":{">>":["ķ"]}},"l":{"}":{">>":["ļ"]}},"n":{"}":{">>":["ņ"]}},"r":{"}":{">>":["ŗ"]}},"s":{"}":{">>":["ş"]}},"t":{"}":{">>":["ţ"]}},"}":{">>":["¸"]}}},"d":{"-":{"2":{">>":["⇊"]},">>":["↓"],"u":{"-":{">>":["⇵"]}},"|":{">>":["↧"]}},"=":{"=":{">>":["⟱"]},">>":["⇓"]},">>":["↓","⇓","⤋","⟱","⇊","⇵","↧","⇩","↡","⇃","⇂","⇣","⇟","↵","↲","↳","➥","↯","̣"],"a":{"g":{">>":["†"],"g":{"e":{"r":{">>":["†"]}}}},"l":{"e":{"t":{"h":{">>":["ד"]}}}},"s":{"h":{"v":{">>":["⊣"]}}}},"d":{"-":{">>":["↡"]},"a":{"g":{">>":["‡"],"g":{"e":{"r":{">>":["‡"]}}}}},"o":{"t":{"s":{">>":["⋱"]}}}},"e":{"f":{"=":{">>":["≝"]},"s":{">>":["≙"]}},"l":{"t":{"a":{">>":["δ"]}}}},"h":{">>":["ð"]},"i":{".":{">>":["◈"]},">>":["◆","◇","◈"],"a":{"m":{"o":{"n":{"d":{">>":["⋄"],"s":{"u":{"i":{"t":{">>":["♢"]}}}}}}}}},"b":{">>":["◆"]},"e":{">>":["⚀","⚁","⚂","⚃","⚄","⚅"]},"g":{"a":{"m":{"m":{"a":{">>":["Ϝ"]}}}}},"v":{">>":["÷"],"i":{"d":{"e":{"o":{"n":{"t":{"i":{"m":{"e":{"s":{">>":["⋇"]}}}}}}}}}}},"w":{">>":["◇"]}},"l":{"-":{">>":["↙"]},"=":{">>":["⇙"]},">>":["↙","⇙"]},"o":{"t":{"e":{"q":{">>":["≐"],"d":{"o":{"t":{">>":["≑"]}}}}},"p":{"l":{"u":{"s":{">>":["∔"]}}}},"s":{"q":{"u":{"a":{"r":{"e":{">>":["⊡"]}}}}}}},"w":{"n":{"a":{"r":{"r":{"o":{"w":{">>":["↓"]}}}}},"d":{"o":{"w":{"n":{"a":{"r":{"r":{"o":{"w":{"s":{">>":["⇊"]}}}}}}}}}},"l":{"e":{"f":{"t":{"h":{"a":{"r":{"p":{"o":{"o":{"n":{">>":["⇃"]}}}}}}}}}}},"r":{"i":{"g":{"h":{"t":{"h":{"a":{"r":{"p":{"o":{"o":{"n":{">>":["⇂"]}}}}}}}}}}}}}}},"r":{"-":{">>":["↘"]},"=":{">>":["⇘"]},">>":["↘","⇘","⇲","➴","➷","➘"]},"z":{">>":["↯"]},"{":{"A":{"}":{">>":["Ạ"]}},"B":{"}":{">>":["Ḅ"]}},"D":{"}":{">>":["Ḍ"]}},"E":{"}":{">>":["Ẹ"]}},"H":{"}":{">>":["Ḥ"]}},"I":{"}":{">>":["Ị"]}},"K":{"}":{">>":["Ḳ"]}},"L":{"}":{">>":["Ḷ"]}},"M":{"}":{">>":["Ṃ"]}},"N":{"}":{">>":["Ṇ"]}},"O":{"}":{">>":["Ọ"]}},"R":{"}":{">>":["Ṛ"]}},"S":{"}":{">>":["Ṣ"]}},"T":{"}":{">>":["Ṭ"]}},"U":{"}":{">>":["Ụ"]}},"V":{"}":{">>":["Ṿ"]}},"W":{"}":{">>":["Ẉ"]}},"Y":{"}":{">>":["Ỵ"]}},"Z":{"}":{">>":["Ẓ"]}},"a":{"}":{">>":["ạ"]}},"b":{"}":{">>":["ḅ"]}},"d":{"}":{">>":["ḍ"]}},"e":{"}":{">>":["ẹ"]}},"h":{"}":{">>":["ḥ"]}},"i":{"}":{">>":["ị"]}},"k":{"}":{">>":["ḳ"]}},"l":{"}":{">>":["ḷ"]}},"m":{"}":{">>":["ṃ"]}},"n":{"}":{">>":["ṇ"]}},"o":{"}":{">>":["ọ"]}},"r":{"}":{">>":["ṛ"]}},"s":{"}":{">>":["ṣ"]}},"t":{"}":{">>":["ṭ"]}},"u":{"}":{">>":["ụ"]}},"v":{"}":{">>":["ṿ"]}},"w":{"}":{">>":["ẉ"]}},"y":{"}":{">>":["ỵ"]}},"z":{"}":{">>":["ẓ"]}}}},"e":{"e":{">>":["ė"]},"l":{"l":{">>":["ℓ"]}},"m":{">>":["—"],"p":{"t":{"y":{"s":{"e":{"t":{">>":["∅"]}}}}}}},"n":{">>":["–"],"t":{"a":{"i":{"l":{"s":{">>":["⊢","⊣","⊤","⊥","⊦","⊧","⊨","⊩","⊪","⊫","⊬","⊭","⊮","⊯"]}}}}}},"p":{"s":{"i":{"l":{"o":{"n":{">>":["ε"]}}}}}},"q":{">>":["=","∼","∽","≈","≋","∻","∾","∿","≀","≃","⋍","≂","≅","≌","≊","≡","≣","≐","≑","≒","≓","≔","≕","≖","≗","≘","≙","≚","≛","≜","≝","≞","≟","≍","≎","≏","≬","⋕","="],"c":{"i":{"r":{"c":{">>":["≖"]}}},"o":{"l":{"o":{"n":{">>":["≕"]}}}}},"n":{">>":["≠","≁","≉","≄","≇","≆","≢","≭"]},"s":{"l":{"a":{"n":{"t":{"g":{"t":{"r":{">>":["⋝"]}}},"l":{"e":{"s":{"s":{">>":["⋜"]}}}}}}}}},"u":{"i":{"v":{">>":["≡"]}}}},"t":{"a":{">>":["η"]}},"u":{"r":{"o":{">>":["€"]}}},"x":{">>":["∃"],"i":{"s":{"t":{"s":{">>":["∃"]}}}},"n":{">>":["∄"]}},"{":{"e":{"}":{">>":["ė"]}}}},"f":{"a":{"l":{"l":{"i":{"n":{"g":{"d":{"o":{"t":{"s":{"e":{"q":{">>":["≒"]}}}}}}}}}}}},"l":{"a":{"t":{">>":["♭"]}},"q":{">>":["‹"],"q":{">>":["«"]}}},"o":{"r":{"a":{"l":{"l":{">>":["∀"]}}}}},"r":{"a":{"c":{"1":{"2":{">>":["½"]},"3":{">>":["⅓"]},"4":{">>":["¼"]},"5":{">>":["⅕"]},"6":{">>":["⅙"]},"8":{">>":["⅛"]},">>":["⅟"]},"2":{"3":{">>":["⅔"]},"5":{">>":["⅖"]}},"3":{"4":{">>":["¾"]},"5":{">>":["⅗"]},"8":{">>":["⅜"]}},"4":{"5":{">>":["⅘"]}},"5":{"6":{">>":["⅚"]},"8":{">>":["⅝"]}},"7":{"8":{">>":["⅞"]}},">>":["¼","½","¾","⅓","⅔","⅕","⅖","⅗","⅘","⅙","⅚","⅛","⅜","⅝","⅞","⅟"]}},"o":{"w":{"n":{">>":["⌢"]}}},"q":{">>":["›"],"q":{">>":["»"]}}}},"g":{"a":{"m":{"m":{"a":{">>":["γ"]}}}},"e":{">>":["≥"],"n":{">>":["≱"]},"q":{">>":[">","≫","⋙","≥","≧","≳","≷","≻","≽","≿","⊃","⊇","⋑","⊐","⊒","⊱","⊳","⊵","⋗","⋛","⋝","⋟",">"],"n":{">>":["≯","≱","≩","≵","⋧","≹","⊁","⋩","⊅","⊉","⊋","⋣","⋥","⋫","⋭","⋡"]},"q":{">>":["≧"]},"s":{"l":{"a":{"n":{"t":{">>":["≥"]}}}}}},"t":{"s":{">>":["←"]}}},"g":{">>":["≫"],"g":{">>":["⋙"]}},"i":{"m":{"e":{"l":{">>":["ג"]}}}},"l":{"b":{">>":["⊓"]},"q":{">>":["‚"],"q":{">>":["„"]}}},"n":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["⋧"]}}}}}},"e":{"q":{">>":["≩"],"q":{">>":["≩"]}}},"s":{"i":{"m":{">>":["⋧"]}}}},"r":{"q":{">>":["‘"],"q":{">>":["“"]}}},"t":{"r":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["≳"]}}}}}},"d":{"o":{"t":{">>":["⋗"]}}},"e":{"q":{"l":{"e":{"s":{"s":{">>":["⋛"]}}}},"q":{"l":{"e":{"s":{"s":{">>":["⋛"]}}}}}}},"l":{"e":{"s":{"s":{">>":["≷"]}}}},"s":{"i":{"m":{">>":["≳"]}}}}},"v":{"e":{"r":{"t":{"n":{"e":{"q":{"q":{">>":["≩"]}}}}}}}}},"h":{"b":{"a":{"r":{">>":["ℏ"]}}},"e":{"a":{"r":{"t":{"s":{"u":{"i":{"t":{">>":["♥"]}}}}}}}},"o":{"o":{"k":{"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↩"]}}}}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↪"]}}}}}}}}}}}}}},"i":{">>":["∩","ı"],"f":{"f":{">>":["⇔"]}},"m":{"a":{"t":{"h":{">>":["ı"]}}}},"n":{">>":["∈"],"c":{"r":{"e":{"m":{"e":{"n":{"t":{">>":["∆"]}}}}}}},"f":{">>":["∞"],"t":{"y":{">>":["∞"]}}},"n":{">>":["∉"]},"t":{">>":["∫"],"e":{"g":{"r":{"a":{"l":{">>":["∫","∬","∭","∮","∯","∰","∱","∲","∳"]}}}},"r":{"c":{"a":{"l":{">>":["⊺"]}}},"s":{"e":{"c":{"t":{"i":{"o":{"n":{">>":["∩","⋂","∧","⋀","⋏","⨇","⊓","⨅","⋒","∏","⊼","⨉"]}}}}}}}}}}},"o":{"t":{"a":{">>":["ι"]}}}},"j":{"o":{"i":{"n":{">>":["⋈","⋉","⋊","⋋","⋌","⨝","⟕","⟖","⟗"]}}}},"k":{"a":{"p":{"p":{"a":{">>":["κ"]}}}},"{":{"A":{"}":{">>":["Ą"]}},"E":{"}":{">>":["Ę"]}},"I":{"}":{">>":["Į"]}},"O":{"}":{">>":["Ǫ"]}},"U":{"}":{">>":["Ų"]}},"a":{"}":{">>":["ą"]}},"e":{"}":{">>":["ę"]}},"i":{"}":{">>":["į"]}},"o":{"}":{">>":["ǫ"]}},"u":{"}":{">>":["ų"]}}}},"l":{"-":{"-":{">>":["⟵"]},"2":{">>":["⇇"]},">":{">>":["↢"]},">>":["←"],"n":{">>":["↚"]},"r":{"-":{">>":["⇆"]}},"|":{">>":["↤"]}},"=":{"=":{">>":["⇚"]},">>":["⇐"],"n":{">>":["⇍"]}},">>":["←","⇐","⇚","⭅","⇇","⇆","↤","⇦","↞","↼","↽","⇠","⇺","↜","⇽","⟵","⟸","↚","⇍","⇷","↹","↢","↩","↫","⇋","⇜","⇤","⟻","⟽","⤆","↶","↺","⟲","ł"],"a":{"m":{"b":{"d":{"a":{">>":["λ"],"b":{"a":{"r":{">>":["ƛ"]}}}}}}},"n":{"g":{"l":{"e":{">>":["〈"]}}}}},"b":{"a":{"g":{">>":["⟅"]}},"r":{"a":{"c":{"e":{">>":["{"]},"k":{">>":["["]}}}}},"c":{"e":{"i":{"l":{">>":["⌈"]}}}},"d":{"a":{"t":{"a":{">>":["《"]}}},"o":{"t":{"s":{">>":["…"]}}},"q":{">>":["“"]}},"e":{">>":["≤"],"a":{"d":{"s":{"t":{"o":{">>":["↝"]}}}}},"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["←"],"t":{"a":{"i":{"l":{">>":["↢"]}}}}}}}}},"h":{"a":{"r":{"p":{"o":{"o":{"n":{"d":{"o":{"w":{"n":{">>":["↽"]}}}},"u":{"p":{">>":["↼"]}}}}}}}}},"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{"s":{">>":["⇇"]}}}}}}}}}},"p":{"a":{"r":{"e":{"n":{"g":{"t":{"r":{">>":["〈"]}}}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↔"],"s":{">>":["⇆"]}}}}}},"h":{"a":{"r":{"p":{"o":{"o":{"n":{"s":{">>":["⇋"]}}}}}}}},"s":{"q":{"u":{"i":{"g":{"a":{"r":{"r":{"o":{"w":{">>":["↭"]}}}}}}}}}}}}}}},"t":{"h":{"r":{"e":{"e":{"t":{"i":{"m":{"e":{"s":{">>":["⋋"]}}}}}}}}}}}},"n":{">>":["≰"]},"q":{">>":["<","≪","⋘","≤","≦","≲","≶","≺","≼","≾","⊂","⊆","⋐","⊏","⊑","⊰","⊲","⊴","⋖","⋚","⋜","⋞","<"],"n":{">>":["≮","≰","≨","≴","⋦","≸","⊀","⋨","⊄","⊈","⊊","⋢","⋤","⋪","⋬","⋠"]},"q":{">>":["≦"]},"s":{"l":{"a":{"n":{"t":{">>":["≤"]}}}}}},"s":{"s":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["≲"]}}}}}},"d":{"o":{"t":{">>":["⋖"]}}},"e":{"q":{"g":{"t":{"r":{">>":["⋚"]}}},"q":{"g":{"t":{"r":{">>":["⋚"]}}}}}},"g":{"t":{"r":{">>":["≶"]}}},"s":{"i":{"m":{">>":["≲"]}}}}}},"f":{"l":{"o":{"o":{"r":{">>":["⌊"]}}}}},"h":{"d":{">>":["◁"]}},"l":{"-":{">>":["↞"]},">>":["≪"],"b":{"r":{"a":{"c":{"k":{"e":{"t":{">>":["〚"]}}}}}}},"c":{"o":{"r":{"n":{"e":{"r":{">>":["⌞"]}}}}}}},"n":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["⋦"]}}}}}},"e":{"q":{">>":["≨"],"q":{">>":["≨"]}}},"o":{"t":{">>":["¬"]}},"s":{"i":{"m":{">>":["⋦"]}}}},"o":{"n":{"g":{"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["←"]}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↔"]}}}}}}}}}}}}}},"m":{"a":{"p":{"s":{"t":{"o":{">>":["↦"]}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["→"]}}}}}}}}}}}},"o":{"p":{"a":{"r":{"r":{"o":{"w":{"l":{"e":{"f":{"t":{">>":["↫"]}}}},"r":{"i":{"g":{"h":{"t":{">>":["↬"]}}}}}}}}}}}},"z":{"e":{"n":{"g":{"e":{">>":["✧"]}}}}}},"q":{">>":["‘"]},"r":{"-":{"-":{">>":["⟷"]},">>":["↔"],"n":{">>":["↮"]}},"=":{">>":["⇔"],"n":{">>":["⇎"]}},">>":["↔","⇔","⇼","↭","⇿","⟷","⟺","↮","⇎","⇹"],"c":{"o":{"r":{"n":{"e":{"r":{">>":["⌟"]}}}}}},"~":{">>":["↭"]}},"t":{"i":{"m":{"e":{"s":{">>":["⋉"]}}}}},"u":{"b":{">>":["⊔"]}},"v":{"e":{"r":{"t":{"n":{"e":{"q":{"q":{">>":["≨"]}}}}}}}},"~":{">>":["↜","⇜"]}},"m":{"=":{">>":["≞"]},"a":{"l":{"t":{"e":{"s":{"e":{">>":["✠"]}}}}},"p":{"s":{"t":{"o":{">>":["↦"]}}}},"t":{"h":{"s":{"c":{"r":{"{":{"I":{"}":{">>":["ℐ"]}}}}}}}}},"e":{"a":{"s":{"u":{"r":{"e":{"d":{"a":{"n":{"g":{"l":{"e":{">>":["∡"]}}}}}}}}}}},"m":{"b":{"e":{"r":{">>":["∈","∉","∊","∋","∌","∍","⋲","⋳","⋴","⋵","⋶","⋷","⋸","⋹","⋺","⋻","⋼","⋽","⋾","⋿"]}}}}},"h":{"o":{">>":["℧"]}},"i":{"c":{"r":{"o":{">>":["µ"]}}},"d":{">>":["∣"]},"n":{"u":{"s":{">>":["−"]}}}},"o":{"d":{"e":{"l":{"s":{">>":["⊧"]}}}}},"p":{">>":["∓"]},"u":{">>":["μ"],"l":{"t":{"i":{"m":{"a":{"p":{">>":["⊸"]}}}}}}}},"n":{"L":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇍"]}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇎"]}}}}}}}}}}}}}},"R":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇏"]}}}}}}}}}},"V":{"D":{"a":{"s":{"h":{">>":["⊯"]}}}},"d":{"a":{"s":{"h":{">>":["⊮"]}}}}},"a":{"b":{"l":{"a":{">>":["∇"]}}},"p":{"p":{"r":{"o":{"x":{">>":["≉"]}}}}},"t":{"u":{"r":{"a":{"l":{">>":["♮"]}}}}}},"c":{"o":{"n":{"g":{">>":["≇"]}}}},"e":{">>":["≠"],"a":{"r":{"r":{"o":{"w":{">>":["↗"]}}}}},"g":{">>":["¬"]},"q":{">>":["≠"],"u":{"i":{"v":{">>":["≢"]}}}},"w":{"l":{"i":{"n":{"e":{">>":["\n"]}}}}},"x":{"i":{"s":{"t":{"s":{">>":["∄"]}}}}}},"g":{"e":{"q":{">>":["≱"],"q":{">>":["≱"]},"s":{"l":{"a":{"n":{"t":{">>":["≱"]}}}}}}},"t":{"r":{">>":["≯"]}}},"i":{">>":["∋"],"n":{">>":["∌"]}},"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↚"]}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↮"]}}}}}}}}}}}},"q":{">>":["≰"],"q":{">>":["≰"]},"s":{"l":{"a":{"n":{"t":{">>":["≰"]}}}}}},"s":{"s":{">>":["≮"]}}}},"m":{"i":{"d":{">>":["∤"]}}},"o":{"t":{">>":["̸"],"e":{">>":["♩","♪","♫","♬"]},"i":{"n":{">>":["∉"]}}}},"p":{"a":{"r":{"a":{"l":{"l":{"e":{"l":{">>":["∦"]}}}}}}},"r":{"e":{"c":{">>":["⊀"],"e":{"q":{">>":["⋠"]}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↛"]}}}}}}}}}},"s":{"h":{"o":{"r":{"t":{"m":{"i":{"d":{">>":["∤"]}}},"p":{"a":{"r":{"a":{"l":{"l":{"e":{"l":{">>":["∦"]}}}}}}}}}}}},"i":{"m":{">>":["≁"],"e":{"q":{">>":["≄"]}}}},"u":{"b":{"s":{"e":{"t":{">>":["⊄"],"e":{"q":{">>":["⊈"],"q":{">>":["⊈"]}}}}}}},"c":{"c":{">>":["⊁"],"e":{"q":{">>":["⋡"]}}}},"p":{"s":{"e":{"t":{">>":["⊅"],"e":{"q":{">>":["⊉"],"q":{">>":["⊉"]}}}}}}}}},"t":{"r":{"i":{"a":{"n":{"g":{"l":{"e":{"l":{"e":{"f":{"t":{">>":["⋪"],"e":{"q":{">>":["⋬"]}}}}}},"r":{"i":{"g":{"h":{"t":{">>":["⋫"],"e":{"q":{">>":["⋭"]}}}}}}}}}}}}}}},"u":{">>":["ν"]},"v":{"D":{"a":{"s":{"h":{">>":["⊭"]}}}},"d":{"a":{"s":{"h":{">>":["⊬"]}}}}},"w":{"a":{"r":{"r":{"o":{"w":{">>":["↖"]}}}}}}},"o":{"*":{">>":["⊛"]},"+":{">>":["⊕"]},"-":{"-":{">>":["⊖"]},">>":["⊝"]},".":{">>":["⊙"]},"/":{">>":["⊘"]},"=":{">>":["⊜"]},">>":["∘","ø"],"d":{"o":{"t":{">>":["⊙"]}}},"e":{">>":["œ"]},"i":{"n":{"t":{">>":["∮"]}}},"m":{"e":{"g":{"a":{">>":["ω"]}}},"i":{"n":{"u":{"s":{">>":["⊖"]}}}}},"o":{">>":["⊚"]},"p":{"l":{"u":{"s":{">>":["⊕"]}}}},"r":{"=":{">>":["≚"]},">>":["∨"],"d":{"f":{"e":{"m":{"i":{"n":{"i":{"n":{"e":{">>":["ª"]}}}}}}}},"m":{"a":{"s":{"c":{"u":{"l":{"i":{"n":{"e":{">>":["º"]}}}}}}}}}}},"s":{"l":{"a":{"s":{"h":{">>":["⊘"]}}}}},"t":{"i":{"m":{"e":{"s":{">>":["⊗"]}}}}},"x":{">>":["⊗"]}},"p":{"a":{">>":["▰","▱"],"b":{">>":["▰"]},"r":{">>":["\n"],"a":{"l":{"l":{"e":{"l":{">>":["∥"]}}}}},"t":{"i":{"a":{"l":{">>":["∂"]}}}}},"w":{">>":["▱"]}},"e":{"r":{"m":{"i":{"l":{">>":["‰"]}}},"p":{">>":["⊥"]}}},"h":{"i":{">>":["φ"]}},"i":{">>":["π"],"t":{"c":{"h":{"f":{"o":{"r":{"k":{">>":["⋔"]}}}}}}}},"m":{">>":["±"]},"o":{"u":{"n":{"d":{"s":{">>":["£"]}}}}},"r":{"e":{"c":{">>":["≺"],"a":{"p":{"p":{"r":{"o":{"x":{">>":["≾"]}}}}}},"e":{"q":{">>":["≼"]}},"n":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["⋨"]}}}}}},"s":{"i":{"m":{">>":["⋨"]}}}},"s":{"i":{"m":{">>":["≾"]}}}}},"i":{"m":{"e":{">>":["′"]}}},"o":{"d":{">>":["∏"]},"p":{"t":{"o":{">>":["∝"]}}}}},"s":{"i":{">>":["ψ"]}}},"q":{"e":{"d":{">>":["∎"]}},"u":{"a":{"d":{">>":[" "]}}}},"r":{"-":{"-":{">>":["⟶"]},"2":{">>":["⇉"]},"3":{">>":["⇶"]},">":{">>":["↣"]},">>":["→"],"l":{"-":{">>":["⇄"]}},"n":{">>":["↛"]},"o":{">>":["⊸"]},"|":{">>":["↦"]}},"=":{"=":{">>":["⇛"]},">>":["⇒"],"n":{">>":["⇏"]}},">>":["→","⇒","⇛","⭆","⇉","⇄","↦","⇨","↠","⇀","⇁","⇢","⇻","↝","⇾","⟶","⟹","↛","⇏","⇸","⇶","↴","↣","↪","↬","⇌","⇝","⇥","⟼","⟾","⤇","↷","↻","⟳","⇰","⇴","⟴","⟿","➵","➸","➙","➔","➛","➜","➝","➞","➟","➠","➡","➢","➣","➤","➧","➨","➩","➪","➫","➬","➭","➮","➯","➱","➲","➳","➺","➻","➼","➽","➾","⊸"],"a":{"n":{"g":{"l":{"e":{">>":["〉"]}}}}},"b":{"a":{"g":{">>":["⟆"]}},"r":{"a":{"c":{"e":{">>":["}"]},"k":{">>":["]"]}}}}},"c":{"e":{"i":{"l":{">>":["⌉"]}}}},"d":{"a":{"t":{"a":{">>":["》"]}}},"q":{">>":["”"]}},"e":{">>":["▬","▭","▮","▯"],"b":{">>":["▬","▮"]},"g":{"i":{"s":{"t":{"e":{"r":{"e":{"d":{">>":["®"]}}}}}}}},"w":{">>":["▭","▯"]}},"f":{"l":{"o":{"o":{"r":{">>":["⌋"]}}}}},"h":{"d":{">>":["▷"]},"o":{">>":["ρ"]}},"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["→"],"t":{"a":{"i":{"l":{">>":["↣"]}}}}}}}}},"h":{"a":{"r":{"p":{"o":{"o":{"n":{"d":{"o":{"w":{"n":{">>":["⇁"]}}}},"u":{"p":{">>":["⇀"]}}}}}}}}},"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{"s":{">>":["⇄"]}}}}}},"h":{"a":{"r":{"p":{"o":{"o":{"n":{"s":{">>":["⇌"]}}}}}}}}}}}},"p":{"a":{"r":{"e":{"n":{"g":{"t":{"r":{">>":["〉"]}}}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{"s":{">>":["⇉"]}}}}}}}}}}},"t":{"h":{"r":{"e":{"e":{"t":{"i":{"m":{"e":{"s":{">>":["⋌"]}}}}}}}}}}}}},"s":{"i":{"n":{"g":{"d":{"o":{"t":{"s":{"e":{"q":{">>":["≓"]}}}}}}}}}}},"q":{">>":["’"]},"r":{"-":{">>":["↠"]},"b":{"r":{"a":{"c":{"k":{"e":{"t":{">>":["〛"]}}}}}}}},"t":{"i":{"m":{"e":{"s":{">>":["⋊"]}}}}},"~":{">>":["↝","⇝","⟿"]}},"s":{"b":{"s":{">>":["﹨"]}},"e":{"a":{"r":{"r":{"o":{"w":{">>":["↘"]}}}}},"t":{"m":{"i":{"n":{"u":{"s":{">>":["∖"]}}}}}}},"h":{"a":{"r":{"p":{">>":["♯"]}}},"o":{"r":{"t":{"m":{"i":{"d":{">>":["∣"]}}},"p":{"a":{"r":{"a":{"l":{"l":{"e":{"l":{">>":["∥"]}}}}}}}}}}}},"i":{"g":{"m":{"a":{">>":["σ"]}}},"m":{">>":["∼"],"e":{"q":{">>":["≃"]}}}},"m":{"a":{"l":{"l":{"a":{"m":{"a":{"l":{"g":{">>":["∐"]}}}}},"s":{"e":{"t":{"m":{"i":{"n":{"u":{"s":{">>":["∖"]}}}}}}},"m":{"i":{"l":{"e":{">>":["⌣"]}}}}}}}},"i":{"l":{"e":{">>":["⌣"]}}}},"p":{"a":{"d":{"e":{"s":{"u":{"i":{"t":{">>":["♠"]}}}}}}},"h":{"e":{"r":{"i":{"c":{"a":{"l":{"a":{"n":{"g":{"l":{"e":{">>":["∢"]}}}}}}}}}}}}},"q":{".":{">>":["▣"]},">>":["■","□","◼","◻","◾","◽","▣","▢","▤","▥","▦","▧","▨","▩","◧","◨","◩","◪","◫","◰","◱","◲","◳"],"b":{">>":["■","◼","◾"]},"c":{"a":{"p":{">>":["⊓"]}},"u":{"p":{">>":["⊔"]}}},"o":{">>":["▢"]},"r":{"t":{">>":["√"]}},"s":{"u":{"b":{"s":{"e":{"t":{">>":["⊏"],"e":{"q":{">>":["⊑"]}}}}}},"p":{"s":{"e":{"t":{">>":["⊐"],"e":{"q":{">>":["⊒"]}}}}}}}},"u":{"a":{"r":{"e":{">>":["□"]}}},"b":{"=":{">>":["⊑"],"n":{">>":["⋢"]}},">>":["⊏"]},"i":{"g":{"a":{"r":{"r":{"o":{"w":{"r":{"i":{"g":{"h":{"t":{">>":["⇝"]}}}}}}}}}}}},"p":{"=":{">>":["⊒"],"n":{">>":["⋣"]}},">>":["⊐"]}},"w":{">>":["□","◻","◽"]}},"s":{">>":["ß"]},"t":{"1":{"2":{">>":["✹"]}},"4":{">>":["✦","✧"]},"6":{">>":["✶"]},"8":{">>":["✴"]},">>":["⋆","✦","✧","✶","✴","✹","★","☆","✪","✫","✯","✰","✵","✷","✸"],"a":{"r":{">>":["⋆"]}},"r":{"a":{"i":{"g":{"h":{"t":{"p":{"h":{"i":{">>":["φ"]}}}}}}}}}},"u":{"b":{"=":{">>":["⊆"],"n":{">>":["⊈"]}},">>":["⊂"],"n":{">>":["⊄"]},"s":{"e":{"t":{">>":["⊂"],"e":{"q":{">>":["⊆"],"q":{">>":["⊆"]}}},"n":{"e":{"q":{">>":["⊊"],"q":{">>":["⊊"]}}}}}}}},"c":{"c":{">>":["≻"],"a":{"p":{"p":{"r":{"o":{"x":{">>":["≿"]}}}}}},"c":{"u":{"r":{"l":{"y":{"e":{"q":{">>":["≽"]}}}}}}},"e":{"q":{">>":["≽"]}},"n":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["⋩"]}}}}}},"s":{"i":{"m":{">>":["⋩"]}}}},"s":{"i":{"m":{">>":["≿"]}}}}},"m":{">>":["∑"]},"p":{"=":{">>":["⊇"],"n":{">>":["⊉"]}},">>":["⊃"],"n":{">>":["⊅"]},"s":{"e":{"t":{">>":["⊃"],"e":{"q":{">>":["⊇"],"q":{">>":["⊇"]}}},"n":{"e":{"q":{">>":["⊋"],"q":{">>":["⊋"]}}}}}}}},"r":{"d":{"3":{">>":["∛"]},"4":{">>":["∜"]},">>":["√"]}}},"w":{"a":{"r":{"r":{"o":{"w":{">>":["↙"]}}}}}}},"t":{"=":{">>":["≜"]},">>":["◂","◃","◄","◅","▸","▹","►","▻","▴","▵","▾","▿","◢","◿","◣","◺","◤","◸","◥","◹"],"a":{"u":{">>":["τ"]}},"b":{">>":["◂","▸","▴","▾","◄","►","◢","◣","◤","◥"]},"e":{"x":{"t":{"b":{"a":{"h":{"t":{">>":["฿"]}}},"i":{"g":{"c":{"i":{"r":{"c":{"l":{"e":{">>":["⃝"]}}}}}}}}},"c":{"i":{"r":{"c":{"l":{"e":{"d":{"P":{">>":["℗"]}}}}}}},"o":{"l":{"o":{"n":{"m":{"o":{"n":{"e":{"t":{"a":{"r":{"y":{">>":["₡"]}}}}}}}}}}}}},"d":{"i":{"e":{"d":{">>":["✝"]}},"s":{"c":{"o":{"u":{"n":{"t":{">>":["⁒"]}}}}}}}},"e":{"s":{"t":{"i":{"m":{"a":{"t":{"e":{"d":{">>":["℮"]}}}}}}}}},"f":{"r":{"a":{"c":{"t":{"i":{"o":{"n":{"s":{"o":{"l":{"i":{"d":{"u":{"s":{">>":["⁄"]}}}}}}}}}}}}}}},"i":{"n":{"t":{"e":{"r":{"r":{"o":{"b":{"a":{"n":{"g":{">>":["‽"]}}}}}}}}}}},"l":{"i":{"r":{"a":{">>":["₤"]}}},"q":{"u":{"i":{"l":{"l":{">>":["⁅"]}}}}}},"m":{"u":{">>":["µ"],"s":{"i":{"c":{"a":{"l":{"n":{"o":{"t":{"e":{">>":["♪"]}}}}}}}}}}},"n":{"a":{"i":{"r":{"a":{">>":["₦"]}}}},"u":{"m":{"e":{"r":{"o":{">>":["№"]}}}}}},"o":{"p":{"e":{"n":{"b":{"u":{"l":{"l":{"e":{"t":{">>":["◦"]}}}}}}}}}},"p":{"e":{"r":{"t":{"e":{"n":{"t":{"h":{"o":{"u":{"s":{"a":{"n":{"d":{">>":["‱"]}}}}}}}}}}}},"s":{"o":{">>":["₱"]}}}},"r":{"e":{"c":{"i":{"p":{"e":{">>":["℞"]}}}},"f":{"e":{"r":{"e":{"n":{"c":{"e":{"m":{"a":{"r":{"k":{">>":["※"]}}}}}}}}}}}},"q":{"u":{"i":{"l":{"l":{">>":["⁆"]}}}}}},"w":{"o":{"n":{">>":["₩"]}}}}}},"h":{">>":["þ"],"e":{"r":{"e":{"f":{"o":{"r":{"e":{">>":["∴"]}}}}}},"t":{"a":{">>":["θ"]}}},"i":{"c":{"k":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["≈"]}}}}}},"s":{"i":{"m":{">>":["∼"]}}}}}}},"i":{"e":{">>":["⁀"]},"m":{"e":{"s":{">>":["×"]}}}},"o":{">>":["→"],"p":{">>":["⊤"]}},"r":{"i":{"a":{"n":{"g":{"l":{"e":{">>":["▵"],"d":{"o":{"w":{"n":{">>":["▿"]}}}},"l":{"e":{"f":{"t":{">>":["◃"],"e":{"q":{">>":["⊴"]}}}}}},"q":{">>":["≜"]},"r":{"i":{"g":{"h":{"t":{">>":["▹"],"e":{"q":{">>":["⊵"]}}}}}}}}}}}}}},"w":{">>":["◃","▹","▵","▿","◅","▻","◿","◺","◸","◹"],"o":{"h":{"e":{"a":{"d":{"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↞"]}}}}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↠"]}}}}}}}}}}}}}}}}},"u":{"+":{">>":["⊎"]},"-":{"2":{">>":["⇈"]},">>":["↑"],"d":{"-":{">>":["⇅"]}},"|":{">>":["↥"]}},".":{">>":["⊍"]},"=":{"=":{">>":["⟰"]},">>":["⇑"]},">>":["↑","⇑","⤊","⟰","⇈","⇅","↥","⇧","↟","↿","↾","⇡","⇞","↰","↱","➦","⇪","⇫","⇬","⇭","⇮","⇯","̆"],"A":{">>":["Ă"]},"E":{">>":["Ĕ"]},"G":{">>":["Ğ"]},"I":{">>":["Ĭ"]},"O":{">>":["Ŏ"]},"U":{">>":["Ŭ"]},"a":{">>":["ă"]},"d":{"-":{">>":["↕"],"|":{">>":["↨"]}},"=":{">>":["⇕"]},">>":["↕","⇕","↨","⇳"]},"e":{">>":["ĕ"]},"g":{">>":["ğ"]},"i":{">>":["ĭ"]},"l":{"-":{">>":["↖"]},"=":{">>":["⇖"]},">>":["↖","⇖","⇱","↸"],"c":{"o":{"r":{"n":{"e":{"r":{">>":["⌜"]}}}}}}},"n":{">>":["∪"],"d":{"e":{"r":{"t":{"i":{"e":{">>":["‿"]}}}}}},"i":{"o":{"n":{">>":["∪","⋃","∨","⋁","⋎","⨈","⊔","⨆","⋓","∐","⨿","⊽","⊻","⊍","⨃","⊎","⨄","⊌","∑","⅀"]}}}},"o":{">>":["ŏ"]},"p":{"a":{"r":{"r":{"o":{"w":{">>":["↑"]}}}}},"d":{"o":{"w":{"n":{"a":{"r":{"r":{"o":{"w":{">>":["↕"]}}}}}}}}},"l":{"e":{"f":{"t":{"h":{"a":{"r":{"p":{"o":{"o":{"n":{">>":["↿"]}}}}}}}}}},"u":{"s":{">>":["⊎"]}}},"r":{"i":{"g":{"h":{"t":{"h":{"a":{"r":{"p":{"o":{"o":{"n":{">>":["↾"]}}}}}}}}}}}},"s":{"i":{"l":{"o":{"n":{">>":["υ"]}}}}},"u":{"p":{"a":{"r":{"r":{"o":{"w":{"s":{">>":["⇈"]}}}}}}}}},"r":{"-":{">>":["↗"]},"=":{">>":["⇗"]},">>":["↗","⇗","➶","➹","➚"],"c":{"o":{"r":{"n":{"e":{"r":{">>":["⌝"]}}}}}}},"u":{"-":{">>":["↟"]},">>":["ŭ"]},"{":{"A":{"}":{">>":["Ă"]}},"E":{"}":{">>":["Ĕ"]}},"G":{"}":{">>":["Ğ"]}},"I":{"}":{">>":["Ĭ"]}},"O":{"}":{">>":["Ŏ"]}},"U":{"}":{">>":["Ŭ"]}},"\\":{"i":{"}":{">>":["ĭ"]}}},"a":{"}":{">>":["ă"]}},"e":{"}":{">>":["ĕ"]}},"g":{"}":{">>":["ğ"]}},"i":{"}":{">>":["ĭ"]}},"o":{"}":{">>":["ŏ"]}},"u":{"}":{">>":["ŭ"]}},"}":{">>":["˘"]}}},"v":{">>":["̌"],"A":{">>":["Ǎ"]},"C":{">>":["Č"]},"D":{">>":["Ď"],"a":{"s":{"h":{">>":["⊨"]}}}},"E":{">>":["Ě"]},"G":{">>":["Ǧ"]},"H":{">>":["Ȟ"]},"I":{">>":["Ǐ"]},"K":{">>":["Ǩ"]},"N":{">>":["Ň"]},"O":{">>":["Ǒ"]},"R":{">>":["Ř"]},"S":{">>":["Š"]},"T":{">>":["Ť"]},"U":{">>":["Ǔ"]},"Z":{">>":["Ž"]},"a":{">>":["ǎ"],"r":{"k":{"a":{"p":{"p":{"a":{">>":["ϰ"]}}}}},"p":{"h":{"i":{">>":["ϕ"]}},"i":{">>":["ϖ"]},"r":{"i":{"m":{"e":{">>":["′"]}}},"o":{"p":{"t":{"o":{">>":["∝"]}}}}}},"r":{"h":{"o":{">>":["ϱ"]}}},"s":{"i":{"g":{"m":{"a":{">>":["ς"]}}}}},"t":{"h":{"e":{"t":{"a":{">>":["ϑ"]}}}},"r":{"i":{"a":{"n":{"g":{"l":{"e":{"l":{"e":{"f":{"t":{">>":["⊲"]}}}},"r":{"i":{"g":{"h":{"t":{">>":["⊳"]}}}}}}}}}}}}}}},"c":{">>":["č"]},"d":{">>":["ď"],"a":{"s":{"h":{">>":["⊢"]}}},"o":{"t":{"s":{">>":["⋮"]}}}},"e":{">>":["ě"],"e":{">>":["∨"],"b":{"a":{"r":{">>":["⊻"]}}}},"r":{"t":{">>":["|"]}}},"g":{">>":["ǧ"]},"h":{">>":["ȟ"]},"i":{">>":["ǐ"]},"j":{">>":["ǰ"]},"k":{">>":["ǩ"]},"n":{">>":["ň"]},"o":{">>":["ǒ"]},"r":{">>":["ř"]},"s":{">>":["š"]},"t":{">>":["ť"]},"u":{">>":["ǔ"]},"z":{">>":["ž"]},"{":{"A":{"}":{">>":["Ǎ"]}},"C":{"}":{">>":["Č"]}},"D":{"}":{">>":["Ď"]}},"E":{"}":{">>":["Ě"]}},"G":{"}":{">>":["Ǧ"]}},"H":{"}":{">>":["Ȟ"]}},"I":{"}":{">>":["Ǐ"]}},"K":{"}":{">>":["Ǩ"]}},"L":{"}":{">>":["Ľ"]}},"N":{"}":{">>":["Ň"]}},"O":{"}":{">>":["Ǒ"]}},"R":{"}":{">>":["Ř"]}},"S":{"}":{">>":["Š"]}},"T":{"}":{">>":["Ť"]}},"U":{"}":{">>":["Ǔ"]}},"Z":{"}":{">>":["Ž"]}},"\\":{"i":{"}":{">>":["ǐ"]}},"j":{"}":{">>":["ǰ"]}}},"a":{"}":{">>":["ǎ"]}},"c":{"}":{">>":["č"]}},"d":{"}":{">>":["ď"]}},"e":{"}":{">>":["ě"]}},"g":{"}":{">>":["ǧ"]}},"h":{"}":{">>":["ȟ"]}},"i":{"}":{">>":["ǐ"]}},"j":{"}":{">>":["ǰ"]}},"k":{"}":{">>":["ǩ"]}},"l":{"}":{">>":["ľ"]}},"n":{"}":{">>":["ň"]}},"o":{"}":{">>":["ǒ"]}},"r":{"}":{">>":["ř"]}},"s":{"}":{">>":["š"]}},"t":{"}":{">>":["ť"]}},"u":{"}":{">>":["ǔ"]}},"z":{"}":{">>":["ž"]}},"}":{">>":["ˇ"]}}},"w":{"e":{"d":{"g":{"e":{">>":["∧"]}}}},"p":{">>":["℘"]},"r":{">>":["≀"]}},"x":{">>":["×"],"i":{">>":["ξ"]}},"y":{"e":{"n":{">>":["¥"]}}},"z":{":":{">>":["⦂"]},";":{">>":["⨟","⨾"]},"e":{"t":{"a":{">>":["ζ"]}}}},"{":{"{":{">>":["⦃"]}},"|":{")":{">>":["⦈"]},"-":{">>":["⊢"],"n":{">>":["⊬"]}},"=":{">>":["⊨"],"n":{">>":["⊭"]}},">":{">>":["⦊"]},">>":["∣"],"n":{">>":["∤"]},"|":{"-":{">>":["⊩"],"n":{">>":["⊮"]}},"=":{">>":["⊫"],"n":{">>":["⊯"]}},">>":["∥"],"n":{">>":["∦"]},"|":{"-":{">>":["⊪"]}}}},"}":{"}":{">>":["⦄"]}},"~":{"-":{">>":["≃"],"n":{">>":["≄"]}},"=":{">>":["≅"],"n":{">>":["≇"]}},">>":["∼","~","̃"],"A":{">>":["Ã"]},"E":{">>":["Ẽ"]},"I":{">>":["Ĩ"]},"N":{">>":["Ñ"]},"O":{">>":["Õ"]},"U":{">>":["Ũ"]},"V":{">>":["Ṽ"]},"Y":{">>":["Ỹ"]},"a":{">>":["ã"]},"e":{">>":["ẽ"]},"i":{">>":["ĩ"]},"n":{">>":["≁","ñ"]},"o":{">>":["õ"]},"u":{">>":["ũ"]},"v":{">>":["ṽ"]},"y":{">>":["ỹ"]},"{":{"A":{"}":{">>":["Ã"]}},"I":{"}":{">>":["Ĩ"]}},"N":{"}":{">>":["Ñ"]}},"O":{"}":{">>":["Õ"]}},"U":{"}":{">>":["Ũ"]}},"\\":{"i":{"}":{">>":["ĩ"]}}},"a":{"}":{">>":["ã"]}},"n":{"}":{">>":["ñ"]}},"o":{"}":{">>":["õ"]}},"u":{"}":{">>":["ũ"]}},"}":{">>":["˜"]}},"~":{"-":{">>":["≊"]},">>":["≈"],"n":{">>":["≉"]},"~":{">>":["≋"]}}}} \ No newline at end of file +module.exports.default = {" ":{">>":[" "]},"!":{"!":{">>":["‼"]},">>":["!","¡"],"?":{">>":["⁉"]},"`":{">>":["¡"]}},"\"":{"'":{">>":["“"]},"<":{">>":["«"]},">":{">>":["»"]},">>":[""","̈"],"A":{">>":["Ä"]},"E":{">>":["Ë"]},"H":{">>":["Ḧ"]},"I":{">>":["Ï"]},"O":{">>":["Ö"]},"U":{">>":["Ü"]},"W":{">>":["Ẅ"]},"X":{">>":["Ẍ"]},"Y":{">>":["Ÿ"]},"`":{">>":["„"]},"a":{">>":["ä"]},"e":{">>":["ë"]},"h":{">>":["ḧ"]},"i":{">>":["ï"]},"o":{">>":["ö"]},"t":{">>":["ẗ"]},"u":{">>":["ü"]},"w":{">>":["ẅ"]},"x":{">>":["ẍ"]},"y":{">>":["ÿ"]},"{":{"A":{"}":{">>":["Ä"]}},"E":{"}":{">>":["Ë"]}},"I":{"}":{">>":["Ï"]}},"O":{"}":{">>":["Ö"]}},"U":{"}":{">>":["Ü"]}},"Y":{"}":{">>":["Ÿ"]}},"\\":{"i":{"}":{">>":["ï"]}}},"a":{"}":{">>":["ä"]}},"e":{"}":{">>":["ë"]}},"o":{"}":{">>":["ö"]}},"u":{"}":{">>":["ü"]}},"y":{"}":{">>":["ÿ"]}},"}":{">>":["¨"]}}},"#":{">>":["♯","#"]},"%":{">>":["%"]},"&":{">>":["⅋","&"]},"'":{">>":["′","″","‴","⁗","'","́"],"A":{">>":["Á"]},"C":{">>":["Ć"]},"E":{">>":["É"]},"G":{">>":["Ǵ"]},"I":{">>":["Í"]},"K":{">>":["Ḱ"]},"L":{">>":["Ĺ"]},"M":{">>":["Ḿ"]},"N":{">>":["Ń"]},"O":{">>":["Ó"]},"P":{">>":["Ṕ"]},"R":{">>":["Ŕ"]},"S":{">>":["Ś"]},"U":{">>":["Ú"]},"W":{">>":["Ẃ"]},"Y":{">>":["Ý"]},"Z":{">>":["Ź"]},"\\":{"A":{"E":{">>":["Ǽ"]}},"O":{">>":["Ǿ"]},"a":{"e":{">>":["ǽ"]}},"o":{">>":["ǿ"]}},"a":{">>":["á"]},"c":{">>":["ć"]},"e":{">>":["é"]},"g":{">>":["ǵ"]},"i":{">>":["í"]},"k":{">>":["ḱ"]},"l":{">>":["ĺ"]},"m":{">>":["ḿ"]},"n":{">>":["ń"]},"o":{">>":["ó"]},"p":{">>":["ṕ"]},"r":{">>":["ŕ"]},"s":{">>":["ś"]},"u":{">>":["ú"]},"w":{">>":["ẃ"]},"y":{">>":["ý"]},"z":{">>":["ź"]},"{":{"A":{"}":{">>":["Á"]}},"C":{"}":{">>":["Ć"]}},"E":{"}":{">>":["É"]}},"G":{"}":{">>":["Ǵ"]}},"I":{"}":{">>":["Í"]}},"L":{"}":{">>":["Ĺ"]}},"N":{"}":{">>":["Ń"]}},"O":{"}":{">>":["Ó"]}},"R":{"}":{">>":["Ŕ"]}},"S":{"}":{">>":["Ś"]}},"U":{"}":{">>":["Ú"]}},"Y":{"}":{">>":["Ý"]}},"Z":{"}":{">>":["Ź"]}},"\\":{"A":{"E":{"}":{">>":["Ǽ"]}}},"O":{"}":{">>":["Ǿ"]}},"a":{"e":{"}":{">>":["ǽ"]}}},"i":{"}":{">>":["í"]}},"o":{"}":{">>":["ǿ"]}}},"a":{"}":{">>":["á"]}},"c":{"}":{">>":["ć"]}},"e":{"}":{">>":["é"]}},"g":{"}":{">>":["ǵ"]}},"l":{"}":{">>":["ĺ"]}},"n":{"}":{">>":["ń"]}},"o":{"}":{">>":["ó"]}},"r":{"}":{">>":["ŕ"]}},"s":{"}":{">>":["ś"]}},"u":{"}":{">>":["ú"]}},"y":{"}":{">>":["ý"]}},"z":{"}":{">>":["ź"]}},"}":{">>":["´"]}}},"(":{"(":{">>":["⦅","⦅"]},"0":{")":{">>":["⓪","🄀","⓿","🄋","🄌"]}},"1":{")":{">>":["⑴","①","⒈","❶","➀","➊"]},"0":{")":{">>":["⑽","⑩","⒑","❿","➉","➓"]}},"1":{")":{">>":["⑾","⑪","⒒","⓫"]}},"2":{")":{">>":["⑿","⑫","⒓","⓬"]}},"3":{")":{">>":["⒀","⑬","⒔","⓭"]}},"4":{")":{">>":["⒁","⑭","⒕","⓮"]}},"5":{")":{">>":["⒂","⑮","⒖","⓯"]}},"6":{")":{">>":["⒃","⑯","⒗","⓰"]}},"7":{")":{">>":["⒄","⑰","⒘","⓱"]}},"8":{")":{">>":["⒅","⑱","⒙","⓲"]}},"9":{")":{">>":["⒆","⑲","⒚","⓳"]}}},"2":{")":{">>":["⑵","②","⒉","❷","➁","➋"]},"0":{")":{">>":["⒇","⑳","⒛","⓴"]}}},"3":{")":{">>":["⑶","③","⒊","❸","➂","➌"]}},"4":{")":{">>":["⑷","④","⒋","❹","➃","➍"]}},"5":{")":{">>":["⑸","⑤","⒌","❺","➄","➎"]}},"6":{")":{">>":["⑹","⑥","⒍","❻","➅","➏"]}},"7":{")":{">>":["⑺","⑦","⒎","❼","➆","➐"]}},"8":{")":{">>":["⑻","⑧","⒏","❽","➇","➑"]}},"9":{")":{">>":["⑼","⑨","⒐","❾","➈","➒"]}},"=":{">>":["≘"]},">>":["(","[","{","⁅","⁽","₍","〈","⎴","⟅","⟦","⟨","⟪","⦃","〈","《","「","『","【","〔","〖","〚","︵","︷","︹","︻","︽","︿","﹁","﹃","﹙","﹛","﹝","(","[","{","「","❪","❬","❰","❲","❴","⟮","⦅","⦗","⧼","⸨","❮","⦇","⦉"],"a":{")":{">>":["⒜","Ⓐ","ⓐ","🅐","🄰","🅰"]}},"b":{")":{">>":["⒝","Ⓑ","ⓑ","🅑","🄱","🅱"]},">>":["⟅"]},"c":{")":{">>":["⒞","Ⓒ","ⓒ","🅒","🄲","🅲"]}},"d":{")":{">>":["⒟","Ⓓ","ⓓ","🅓","🄳","🅳"]}},"e":{")":{">>":["⒠","Ⓔ","ⓔ","🅔","🄴","🅴"]}},"f":{")":{">>":["⒡","Ⓕ","ⓕ","🅕","🄵","🅵"]}},"g":{")":{">>":["⒢","Ⓖ","ⓖ","🅖","🄶","🅶"]}},"h":{")":{">>":["⒣","Ⓗ","ⓗ","🅗","🄷","🅷"]}},"i":{")":{">>":["⒤","Ⓘ","ⓘ","🅘","🄸","🅸"]}},"j":{")":{">>":["⒥","Ⓙ","ⓙ","🅙","🄹","🅹"]}},"k":{")":{">>":["⒦","Ⓚ","ⓚ","🅚","🄺","🅺"]}},"l":{")":{">>":["⒧","Ⓛ","ⓛ","🅛","🄻","🅻"]}},"m":{")":{">>":["⒨","Ⓜ","ⓜ","🅜","🄼","🅼"]}},"n":{")":{">>":["⒩","Ⓝ","ⓝ","🅝","🄽","🅽"]}},"o":{")":{">>":["⒪","Ⓞ","ⓞ","🅞","🄾","🅾"]}},"p":{")":{">>":["⒫","Ⓟ","ⓟ","🅟","🄿","🅿"]}},"q":{")":{">>":["⒬","Ⓠ","ⓠ","🅠","🅀","🆀"]}},"r":{")":{">>":["⒭","Ⓡ","ⓡ","🅡","🅁","🆁"]}},"s":{")":{">>":["⒮","Ⓢ","ⓢ","🅢","🅂","🆂"]}},"t":{")":{">>":["⒯","Ⓣ","ⓣ","🅣","🅃","🆃"]}},"u":{")":{">>":["⒰","Ⓤ","ⓤ","🅤","🅄","🆄"]}},"v":{")":{">>":["⒱","Ⓥ","ⓥ","🅥","🅅","🆅"]}},"w":{")":{">>":["⒲","Ⓦ","ⓦ","🅦","🅆","🆆"]}},"x":{")":{">>":["⒳","Ⓧ","ⓧ","🅧","🅇","🆇"]}},"y":{")":{">>":["⒴","Ⓨ","ⓨ","🅨","🅈","🆈"]}},"z":{")":{">>":["⒵","Ⓩ","ⓩ","🅩","🅉","🆉"]}},"|":{">>":["⦇"]}},")":{")":{">>":["⦆","⦆"]},">>":[")","]","}","⁆","⁾","₎","〉","⎵","⟆","⟧","⟩","⟫","⦄","〉","》","」","』","】","〕","〗","〛","︶","︸","︺","︼","︾","﹀","﹂","﹄","﹚","﹜","﹞",")","]","}","」","❫","❭","❱","❳","❵","⟯","⦆","⦘","⧽","⸩","❯","⦈","⦊"],"b":{">>":["⟆"]}},"*":{"=":{">>":["≛"]},">>":["⋆","*"]},"+":{" ":{">>":["⊹"]},">>":["+"]},",":{">>":["ʻ","،","⸲","⸴","⹁","⹉","、","︐","︑","﹐","﹑",",","、"," "]},"-":{"-":{"-":{">>":["─","│","┌","┐","└","┘","├","┤","┬","┼","┴","╴","╵","╶","╷","╭","╮","╯","╰","╱","╲","╳","—"]},".":{">>":["╌","╎","┄","┆","┈","┊","╍","╏","┅","┇","┉","┋"]},"=":{">>":["═","║","╔","╗","╚","╝","╠","╣","╦","╬","╩","╒","╕","╘","╛","╞","╡","╤","╪","╧","╓","╖","╙","╜","╟","╢","╥","╫","╨"]},">":{">>":["⟶"]},">>":["–"],"_":{">>":["━","┃","┏","┓","┗","┛","┣","┫","┳","╋","┻","╸","╹","╺","╻","┍","┯","┑","┕","┷","┙","┝","┿","┥","┎","┰","┒","┖","┸","┚","┠","╂","┨","┞","╀","┦","┟","╁","┧","┢","╈","┪","┡","╇","┩","┮","┭","┶","┵","┾","┽","┲","┱","┺","┹","╊","╉","╆","╅","╄","╃","╿","╽","╼","╾"]}},":":{">>":["∹"]},">":{">>":["→"],"n":{">>":["↛"]}},">>":["­"],"o":{">>":["⊸"]},"|":{">>":["⊣"]},"~":{">>":["≂"]}},".":{"+":{">>":["∔"]},"-":{">>":["∸"]},".":{".":{">>":["⋯","⋮","⋰","⋱"]}},"=":{".":{">>":["≑"]},">>":["≐"]},">>":["∙",".","̇"],"A":{">>":["Ȧ"]},"B":{">>":["Ḃ"]},"C":{">>":["Ċ"]},"D":{">>":["Ḋ"]},"E":{">>":["Ė"]},"F":{">>":["Ḟ"]},"G":{">>":["Ġ"]},"H":{">>":["Ḣ"]},"I":{">>":["İ"]},"M":{">>":["Ṁ"]},"N":{">>":["Ṅ"]},"O":{">>":["Ȯ"]},"P":{">>":["Ṗ"]},"R":{">>":["Ṙ"]},"S":{">>":["Ṡ"]},"T":{">>":["Ṫ"]},"W":{">>":["Ẇ"]},"X":{">>":["Ẋ"]},"Y":{">>":["Ẏ"]},"Z":{">>":["Ż"]},"a":{">>":["ȧ"]},"b":{">>":["ḃ"]},"c":{">>":["ċ"]},"d":{">>":["ḋ"]},"e":{">>":["ė"]},"f":{">>":["ḟ"]},"g":{">>":["ġ"]},"h":{">>":["ḣ"]},"m":{">>":["ṁ"]},"n":{">>":["ṅ"]},"o":{">>":["ȯ"]},"p":{">>":["ṗ"]},"r":{">>":["ṙ"]},"s":{">>":["ṡ"]},"t":{">>":["ṫ"]},"w":{">>":["ẇ"]},"x":{">>":["ẋ"]},"y":{">>":["ẏ"]},"z":{">>":["ż"]},"{":{"A":{"}":{">>":["Ȧ"]}},"C":{"}":{">>":["Ċ"]}},"E":{"}":{">>":["Ė"]}},"G":{"}":{">>":["Ġ"]}},"I":{"}":{">>":["İ"]}},"O":{"}":{">>":["Ȯ"]}},"Z":{"}":{">>":["Ż"]}},"a":{"}":{">>":["ȧ"]}},"c":{"}":{">>":["ċ"]}},"g":{"}":{">>":["ġ"]}},"o":{"}":{">>":["ȯ"]}},"z":{"}":{">>":["ż"]}},"}":{">>":["˙"]}}},"/":{">>":["/","\","‌"]},"0":{">>":["∅"]},"8":{"<":{">>":["✂","✄"]}},":":{":":{"-":{">>":["∺"]},">>":["∷"]},"=":{">>":["≔"]},">>":["∶","⦂","ː","꞉","˸","፥","፦",":","﹕","︓"," "],"~":{">>":["∻"]}},";":{">>":["⨾","⨟","⁏","፤","꛶",";","︔","﹔","⍮","⸵",";"," "]},"<":{"-":{"-":{">":{">>":["⟷"]},">>":["⟵"]},">":{">>":["↔"],"n":{">>":["↮"]}},">>":["←"],"n":{">>":["↚"]}},"<":{">>":["⟪"]},"=":{">":{">>":["⇔"],"n":{">>":["⇎"]}},">>":["≤","⇐"],"n":{">>":["≰"]}},">>":["⟨","<","≪","⋘","≺","⊂","⋐","⊏","⊰","⊲","⋖","<"],"n":{">>":["≮"]},"|":{">>":["⦉"]},"~":{">>":["≲"],"n":{">>":["⋦"],"n":{">>":["≴"]}}}},"=":{":":{">>":["≕"]},"=":{"=":{">>":["≣"]},">>":["≡"],"n":{">>":["≢"]}},">":{">>":["⇒"],"n":{">>":["⇏"]}},">>":["=","̄"],"A":{">>":["Ā"]},"E":{">>":["Ē"]},"G":{">>":["Ḡ"]},"I":{">>":["Ī"]},"O":{">>":["Ō"]},"U":{">>":["Ū"]},"Y":{">>":["Ȳ"]},"\\":{"A":{"E":{">>":["Ǣ"]}},"a":{"e":{">>":["ǣ"]}}},"a":{">>":["ā"]},"e":{">>":["ē"]},"g":{">>":["ḡ"]},"i":{">>":["ī"]},"n":{">>":["≠"]},"o":{">>":["≗","ō"]},"u":{">>":["ū"]},"y":{">>":["ȳ"]},"{":{"A":{"}":{">>":["Ā"]}},"E":{"}":{">>":["Ē"]}},"I":{"}":{">>":["Ī"]}},"O":{"}":{">>":["Ō"]}},"U":{"}":{">>":["Ū"]}},"Y":{"}":{">>":["Ȳ"]}},"\\":{"A":{"E":{"}":{">>":["Ǣ"]}}},"a":{"e":{"}":{">>":["ǣ"]}}},"i":{"}":{">>":["ī"]}}},"a":{"}":{">>":["ā"]}},"e":{"}":{">>":["ē"]}},"o":{"}":{">>":["ō"]}},"u":{"}":{">>":["ū"]}},"y":{"}":{">>":["ȳ"]}},"}":{">>":["¯"]}}},">":{"=":{">>":["≥"],"n":{">>":["≱"]}},">":{">>":["⟫"]},">>":["⟩",">","≫","⋙","≻","⊃","⋑","⊐","⊱","⊳","⋗",">"],"n":{">>":["≯"]},"~":{">>":["≳"],"n":{">>":["⋧"],"n":{">>":["≵"]}}}},"?":{"!":{">>":["‽","⁈"]},"=":{">>":["≟"]},">>":["?","¿"],"?":{">>":["⁇"]},"`":{">>":["¿"]}},"@":{">>":["@"]},"A":{"A":{">>":["Å"]},"E":{">>":["Æ"]},"n":{"d":{">>":["⋀"]}}},"B":{"0":{">>":["𝟎"]},"1":{">>":["𝟏"]},"2":{">>":["𝟐"]},"3":{">>":["𝟑"]},"4":{">>":["𝟒"]},"5":{">>":["𝟓"]},"6":{">>":["𝟔"]},"7":{">>":["𝟕"]},"8":{">>":["𝟖"]},"9":{">>":["𝟗"]},"A":{">>":["𝐀"]},"B":{">>":["𝐁"]},"C":{">>":["𝐂"]},"D":{">>":["𝐃"]},"E":{">>":["𝐄"]},"F":{">>":["𝐅"]},"G":{">>":["𝐆"],"A":{">>":["𝚨"]},"B":{">>":["𝚩"]},"C":{">>":["𝚾"]},"D":{">>":["𝚫"]},"E":{">>":["𝚬"]},"F":{">>":["𝚽"]},"G":{">>":["𝚪"]},"H":{">>":["𝚮"]},"I":{">>":["𝚰"]},"K":{">>":["𝚱"]},"L":{">>":["𝚲"]},"M":{">>":["𝚳"]},"N":{">>":["𝚴"]},"O":{">>":["𝛀"]},"P":{">>":["𝚿"]},"R":{">>":["𝚸"]},"S":{">>":["𝚺"]},"T":{">>":["𝚻"],"H":{">>":["𝚯"]}},"U":{">>":["𝚼"]},"X":{">>":["𝚵"]},"Z":{">>":["𝚭"]},"a":{">>":["𝛂"]},"b":{">>":["𝛃"]},"c":{">>":["𝛘"]},"d":{">>":["𝛅"]},"e":{">>":["𝛆"]},"f":{">>":["𝛗"]},"g":{">>":["𝛄"]},"h":{">>":["𝛈"]},"i":{">>":["𝛊"]},"k":{">>":["𝛋"]},"l":{">>":["𝛌"]},"m":{">>":["𝛍"]},"n":{">>":["𝛎"]},"o":{">>":["𝛚"]},"p":{">>":["𝛙"]},"r":{">>":["𝛒"]},"s":{">>":["𝛔"]},"t":{">>":["𝛕"],"h":{">>":["𝛉"]}},"u":{">>":["𝛖"]},"x":{">>":["𝛏"]},"z":{">>":["𝛇"]}},"H":{">>":["𝐇"]},"I":{">>":["𝐈"]},"J":{">>":["𝐉"]},"K":{">>":["𝐊"]},"L":{">>":["𝐋"]},"M":{">>":["𝐌"]},"N":{">>":["𝐍"]},"O":{">>":["𝐎"],"m":{"i":{"c":{"r":{"o":{"n":{">>":["𝚶"]}}}}}}},"P":{">>":["𝐏"],"i":{">>":["𝚷"]}},"Q":{">>":["𝐐"]},"R":{">>":["𝐑"]},"S":{">>":["𝐒"]},"T":{">>":["𝐓"]},"U":{">>":["𝐔"]},"V":{">>":["𝐕"]},"W":{">>":["𝐖"]},"X":{">>":["𝐗"]},"Y":{">>":["𝐘"]},"Z":{">>":["𝐙"]},"a":{">>":["𝐚"]},"b":{">>":["𝐛"],"b":{"{":{"N":{"}":{">>":["ℕ"]}},"P":{"}":{">>":["ℙ"]}},"R":{"}":{">>":["ℝ"]}},"Z":{"}":{">>":["ℤ"]}}}}},"c":{">>":["𝐜"]},"d":{">>":["𝐝"]},"e":{">>":["𝐞"]},"f":{">>":["𝐟"]},"g":{">>":["𝐠"]},"h":{">>":["𝐡"]},"i":{">>":["𝐢"]},"j":{">>":["𝐣"]},"k":{">>":["𝐤"]},"l":{">>":["𝐥"]},"m":{">>":["𝐦"]},"n":{">>":["𝐧"]},"o":{">>":["𝐨"],"m":{"i":{"c":{"r":{"o":{"n":{">>":["𝛐"]}}}}}},"x":{">>":["□"]}},"p":{">>":["𝐩"],"i":{">>":["𝛑"]}},"q":{">>":["𝐪"]},"r":{">>":["𝐫"]},"s":{">>":["𝐬"]},"t":{">>":["𝐭"]},"u":{">>":["𝐮"],"m":{"p":{"e":{"q":{">>":["≎"]}}}}},"v":{">>":["𝐯"]},"w":{">>":["𝐰"]},"x":{">>":["𝐱"]},"y":{">>":["𝐲"]},"z":{">>":["𝐳"]}},"C":{">>":["∁"],"a":{"p":{">>":["⋒"]}},"u":{"p":{">>":["⋓"]}}},"D":{"H":{">>":["Ð"]},"e":{"l":{"t":{"a":{">>":["Δ"]}}}},"i":{"a":{"m":{"o":{"n":{"d":{">>":["◇"]}}}}}},"o":{"w":{"n":{"a":{"r":{"r":{"o":{"w":{">>":["⇓"]}}}}}}}}},"F":{"0":{">>":["0"]},"1":{">>":["1"]},"2":{">>":["2"]},"3":{">>":["3"]},"4":{">>":["4"]},"5":{">>":["5"]},"6":{">>":["6"]},"7":{">>":["7"]},"8":{">>":["8"]},"9":{">>":["9"]},"A":{">>":["A"]},"B":{">>":["B"]},"C":{">>":["C"]},"D":{">>":["D"]},"E":{">>":["E"]},"F":{">>":["F"]},"G":{">>":["G"]},"H":{">>":["H"]},"I":{">>":["I"]},"J":{">>":["J"]},"K":{">>":["K"]},"L":{">>":["L"]},"M":{">>":["M"]},"N":{">>":["N"]},"O":{">>":["O"]},"P":{">>":["P"]},"Q":{">>":["Q"]},"R":{">>":["R"]},"S":{">>":["S"]},"T":{">>":["T"]},"U":{">>":["U"]},"V":{">>":["V"]},"W":{">>":["W"]},"X":{">>":["X"]},"Y":{">>":["Y"]},"Z":{">>":["Z"]},"a":{">>":["a"]},"b":{">>":["b"]},"c":{">>":["c"]},"d":{">>":["d"]},"e":{">>":["e"]},"f":{">>":["f"]},"g":{">>":["g"]},"h":{">>":["h"]},"i":{">>":["i"]},"j":{">>":["j"]},"k":{">>":["k"]},"l":{">>":["l"]},"m":{">>":["m"]},"n":{">>":["n"]},"o":{">>":["o"]},"p":{">>":["p"]},"q":{">>":["q"]},"r":{">>":["r"],"o":{"w":{"n":{"y":{">>":["☹"]}}}}},"s":{">>":["s"]},"t":{">>":["t"]},"u":{">>":["u"]},"v":{">>":["v"]},"w":{">>":["w"]},"x":{">>":["x"]},"y":{">>":["y"]},"z":{">>":["z"]}},"G":{"A":{">>":["Α"]},"B":{">>":["Β"]},"C":{">>":["Χ"]},"D":{">>":["Δ"]},"E":{">>":["Ε"]},"F":{">>":["Φ"]},"G":{">>":["Γ"]},"H":{">>":["Η"]},"I":{">>":["Ι"]},"K":{">>":["Κ"]},"L":{">>":["Λ"]},"M":{">>":["Μ"]},"N":{">>":["Ν"]},"O":{">>":["Ω"]},"P":{">>":["Ψ"]},"R":{">>":["Ρ"]},"S":{">>":["Σ"]},"T":{">>":["Τ"],"H":{">>":["Θ"]}},"U":{">>":["Υ"]},"X":{">>":["Ξ"]},"Z":{">>":["Ζ"]},"a":{">>":["α"],"m":{"m":{"a":{">>":["Γ"]}}}},"b":{">>":["β"]},"c":{">>":["χ"]},"d":{">>":["δ"]},"e":{">>":["ε"]},"f":{">>":["φ"]},"g":{">>":["γ"]},"h":{">>":["η"]},"i":{">>":["ι"]},"k":{">>":["κ"]},"l":{"-":{">>":["ƛ"]},">>":["λ"],"b":{">>":["⨅"]}},"m":{">>":["μ"]},"n":{">>":["ν"]},"o":{">>":["ω"]},"p":{">>":["ψ"]},"r":{">>":["ρ"]},"s":{">>":["σ"]},"t":{">>":["τ"],"h":{">>":["θ"]}},"u":{">>":["υ"]},"x":{">>":["ξ"]},"z":{">>":["ζ"]}},"H":{">>":["̋"],"O":{">>":["Ő"]},"U":{">>":["Ű"]},"u":{">>":["ű"]},"{":{"O":{"}":{">>":["Ő"]}},"U":{"}":{">>":["Ű"]}},"o":{"}":{">>":["ő"]}},"u":{"}":{">>":["ű"]}},"}":{">>":["˝"]}}},"I":{">>":["⋂"],"m":{">>":["ℑ"]}},"J":{"o":{"i":{"n":{">>":["⋈"]}}}},"L":{">>":["Ł"],"a":{"m":{"b":{"d":{"a":{">>":["Λ"]}}}}},"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇐"]}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇔"]}}}}}}}}}}}},"t":{"t":{"e":{"r":{">>":["✉"]}}}}},"l":{">>":["⋘"],"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇚"]}}}}}}}}},"o":{"n":{"g":{"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇐"]}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇔"]}}}}}}}}}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇒"]}}}}}}}}}}}}},"s":{"h":{">>":["↰"]}},"u":{"b":{">>":["⨆"]}}},"M":{"C":{"A":{">>":["𝓐"]},"B":{">>":["𝓑"]},"C":{">>":["𝓒"]},"D":{">>":["𝓓"]},"E":{">>":["𝓔"]},"F":{">>":["𝓕"]},"G":{">>":["𝓖"]},"H":{">>":["𝓗"]},"I":{">>":["𝓘"]},"J":{">>":["𝓙"]},"K":{">>":["𝓚"]},"L":{">>":["𝓛"]},"M":{">>":["𝓜"]},"N":{">>":["𝓝"]},"O":{">>":["𝓞"]},"P":{">>":["𝓟"]},"Q":{">>":["𝓠"]},"R":{">>":["𝓡"]},"S":{">>":["𝓢"]},"T":{">>":["𝓣"]},"U":{">>":["𝓤"]},"V":{">>":["𝓥"]},"W":{">>":["𝓦"]},"X":{">>":["𝓧"]},"Y":{">>":["𝓨"]},"Z":{">>":["𝓩"]},"a":{">>":["𝓪"]},"b":{">>":["𝓫"]},"c":{">>":["𝓬"]},"d":{">>":["𝓭"]},"e":{">>":["𝓮"]},"f":{">>":["𝓯"]},"g":{">>":["𝓰"]},"h":{">>":["𝓱"]},"i":{">>":["𝓲"]},"j":{">>":["𝓳"]},"k":{">>":["𝓴"]},"l":{">>":["𝓵"]},"m":{">>":["𝓶"]},"n":{">>":["𝓷"]},"o":{">>":["𝓸"]},"p":{">>":["𝓹"]},"q":{">>":["𝓺"]},"r":{">>":["𝓻"]},"s":{">>":["𝓼"]},"t":{">>":["𝓽"]},"u":{">>":["𝓾"]},"v":{">>":["𝓿"]},"w":{">>":["𝔀"]},"x":{">>":["𝔁"]},"y":{">>":["𝔂"]},"z":{">>":["𝔃"]}},"I":{"A":{">>":["𝑨"]},"B":{">>":["𝑩"]},"C":{">>":["𝑪"]},"D":{">>":["𝑫"]},"E":{">>":["𝑬"]},"F":{">>":["𝑭"]},"G":{">>":["𝑮"]},"H":{">>":["𝑯"]},"I":{">>":["𝑰"]},"J":{">>":["𝑱"]},"K":{">>":["𝑲"]},"L":{">>":["𝑳"]},"M":{">>":["𝑴"]},"N":{">>":["𝑵"]},"O":{">>":["𝑶"]},"P":{">>":["𝑷"]},"Q":{">>":["𝑸"]},"R":{">>":["𝑹"]},"S":{">>":["𝑺"]},"T":{">>":["𝑻"]},"U":{">>":["𝑼"]},"V":{">>":["𝑽"]},"W":{">>":["𝑾"]},"X":{">>":["𝑿"]},"Y":{">>":["𝒀"]},"Z":{">>":["𝒁"]},"a":{">>":["𝒂"]},"b":{">>":["𝒃"]},"c":{">>":["𝒄"]},"d":{">>":["𝒅"]},"e":{">>":["𝒆"]},"f":{">>":["𝒇"]},"g":{">>":["𝒈"]},"h":{">>":["𝒉"]},"i":{">>":["𝒊"]},"j":{">>":["𝒋"]},"k":{">>":["𝒌"]},"l":{">>":["𝒍"]},"m":{">>":["𝒎"]},"n":{">>":["𝒏"]},"o":{">>":["𝒐"]},"p":{">>":["𝒑"]},"q":{">>":["𝒒"]},"r":{">>":["𝒓"]},"s":{">>":["𝒔"]},"t":{">>":["𝒕"]},"u":{">>":["𝒖"]},"v":{">>":["𝒗"]},"w":{">>":["𝒘"]},"x":{">>":["𝒙"]},"y":{">>":["𝒚"]},"z":{">>":["𝒛"]}},"c":{"A":{">>":["𝒜"]},"B":{">>":["ℬ"]},"C":{">>":["𝒞"]},"D":{">>":["𝒟"]},"E":{">>":["ℰ"]},"F":{">>":["ℱ"]},"G":{">>":["𝒢"]},"H":{">>":["ℋ"]},"I":{">>":["ℐ"]},"J":{">>":["𝒥"]},"K":{">>":["𝒦"]},"L":{">>":["ℒ"]},"M":{">>":["ℳ"]},"N":{">>":["𝒩"]},"O":{">>":["𝒪"]},"P":{">>":["𝒫"]},"Q":{">>":["𝒬"]},"R":{">>":["ℛ"]},"S":{">>":["𝒮"]},"T":{">>":["𝒯"]},"U":{">>":["𝒰"]},"V":{">>":["𝒱"]},"W":{">>":["𝒲"]},"X":{">>":["𝒳"]},"Y":{">>":["𝒴"]},"Z":{">>":["𝒵"]},"a":{">>":["𝒶"]},"b":{">>":["𝒷"]},"c":{">>":["𝒸"]},"d":{">>":["𝒹"]},"e":{">>":["ℯ"]},"f":{">>":["𝒻"]},"g":{">>":["ℊ"]},"h":{">>":["𝒽"]},"i":{">>":["𝒾"]},"j":{">>":["𝒿"]},"k":{">>":["𝓀"]},"l":{">>":["𝓁"]},"m":{">>":["𝓂"]},"n":{">>":["𝓃"]},"o":{">>":["ℴ"]},"p":{">>":["𝓅"]},"q":{">>":["𝓆"]},"r":{">>":["𝓇"]},"s":{">>":["𝓈"]},"t":{">>":["𝓉"]},"u":{">>":["𝓊"]},"v":{">>":["𝓋"]},"w":{">>":["𝓌"]},"x":{">>":["𝓍"]},"y":{">>":["𝓎"]},"z":{">>":["𝓏"]}},"f":{"A":{">>":["𝔄"]},"B":{">>":["𝔅"]},"C":{">>":["ℭ"]},"D":{">>":["𝔇"]},"E":{">>":["𝔈"]},"F":{">>":["𝔉"]},"G":{">>":["𝔊"]},"H":{">>":["ℌ"]},"I":{">>":["ℑ"]},"J":{">>":["𝔍"]},"K":{">>":["𝔎"]},"L":{">>":["𝔏"]},"M":{">>":["𝔐"]},"N":{">>":["𝔑"]},"O":{">>":["𝔒"]},"P":{">>":["𝔓"]},"Q":{">>":["𝔔"]},"R":{">>":["ℜ"]},"S":{">>":["𝔖"]},"T":{">>":["𝔗"]},"U":{">>":["𝔘"]},"V":{">>":["𝔙"]},"W":{">>":["𝔚"]},"X":{">>":["𝔛"]},"Y":{">>":["𝔜"]},"Z":{">>":["ℨ"]},"a":{">>":["𝔞"]},"b":{">>":["𝔟"]},"c":{">>":["𝔠"]},"d":{">>":["𝔡"]},"e":{">>":["𝔢"]},"f":{">>":["𝔣"]},"g":{">>":["𝔤"]},"h":{">>":["𝔥"]},"i":{">>":["𝔦"]},"j":{">>":["𝔧"]},"k":{">>":["𝔨"]},"l":{">>":["𝔩"]},"m":{">>":["𝔪"]},"n":{">>":["𝔫"]},"o":{">>":["𝔬"]},"p":{">>":["𝔭"]},"q":{">>":["𝔮"]},"r":{">>":["𝔯"]},"s":{">>":["𝔰"]},"t":{">>":["𝔱"]},"u":{">>":["𝔲"]},"v":{">>":["𝔳"]},"w":{">>":["𝔴"]},"x":{">>":["𝔵"]},"y":{">>":["𝔶"]},"z":{">>":["𝔷"]}},"i":{"A":{">>":["𝐴"]},"B":{">>":["𝐵"]},"C":{">>":["𝐶"]},"D":{">>":["𝐷"]},"E":{">>":["𝐸"]},"F":{">>":["𝐹"]},"G":{">>":["𝐺"]},"H":{">>":["𝐻"]},"I":{">>":["𝐼"]},"J":{">>":["𝐽"]},"K":{">>":["𝐾"]},"L":{">>":["𝐿"]},"M":{">>":["𝑀"]},"N":{">>":["𝑁"]},"O":{">>":["𝑂"]},"P":{">>":["𝑃"]},"Q":{">>":["𝑄"]},"R":{">>":["𝑅"]},"S":{">>":["𝑆"]},"T":{">>":["𝑇"]},"U":{">>":["𝑈"]},"V":{">>":["𝑉"]},"W":{">>":["𝑊"]},"X":{">>":["𝑋"]},"Y":{">>":["𝑌"]},"Z":{">>":["𝑍"]},"a":{">>":["𝑎"]},"b":{">>":["𝑏"]},"c":{">>":["𝑐"]},"d":{">>":["𝑑"]},"e":{">>":["𝑒"]},"f":{">>":["𝑓"]},"g":{">>":["𝑔"]},"h":{">>":["ℎ"]},"i":{">>":["𝑖","ℎ"]},"j":{">>":["𝑗"]},"k":{">>":["𝑘"]},"l":{">>":["𝑙"]},"m":{">>":["𝑚"]},"n":{">>":["𝑛"]},"o":{">>":["𝑜"]},"p":{">>":["𝑝"]},"q":{">>":["𝑞"]},"r":{">>":["𝑟"]},"s":{">>":["𝑠"]},"t":{">>":["𝑡"]},"u":{">>":["𝑢"]},"v":{">>":["𝑣"]},"w":{">>":["𝑤"]},"x":{">>":["𝑥"]},"y":{">>":["𝑦"]},"z":{">>":["𝑧"]}}},"O":{"*":{">>":["⍟"]},"+":{">>":["⨁"]},".":{">>":["⨀"]},">>":["Ø"],"E":{">>":["Œ"]},"m":{"e":{"g":{"a":{">>":["Ω"]}}}},"r":{">>":["⋁"]},"x":{">>":["⨂"]}},"P":{">>":["¶"],"h":{"i":{">>":["Φ"]}},"i":{">>":["Π"]},"s":{"i":{">>":["Ψ"]}}},"R":{"e":{">>":["ℜ"]},"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇒"]}}}}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇛"]}}}}}}}}}},"s":{"h":{">>":["↱"]}}},"S":{">>":["§"],"i":{"g":{"m":{"a":{">>":["Σ"]}}}},"m":{"i":{"l":{"e":{"y":{">>":["☺"]}}}}},"u":{"b":{"s":{"e":{"t":{">>":["⋐"]}}}},"p":{"s":{"e":{"t":{">>":["⋑"]}}}}}},"T":{">>":["◀","◁","▶","▷","▲","△","▼","▽","◬","◭","◮"],"H":{">>":["Þ"]},"b":{">>":["◀","▶","▲","▼"]},"h":{"e":{"t":{"a":{">>":["Θ"]}}}},"w":{">>":["◁","▷","△","▽"]}},"U":{"+":{">>":["⨄"]},".":{">>":["⨃"]},"n":{">>":["⋃"]},"o":{">>":["ő"]},"p":{"a":{"r":{"r":{"o":{"w":{">>":["⇑"]}}}}},"d":{"o":{"w":{"n":{"a":{"r":{"r":{"o":{"w":{">>":["⇕"]}}}}}}}}},"s":{"i":{"l":{"o":{"n":{">>":["Υ"]}}}}}},"{":{"o":{"}":{">>":["ő"]}}}},"V":{"d":{"a":{"s":{"h":{">>":["⊩"]}}}},"e":{"r":{"t":{">>":["‖"]}}},"v":{"d":{"a":{"s":{"h":{">>":["⊪"]}}}}}},"X":{"i":{">>":["Ξ"]}},"[":{"[":{">>":["⟦"]}},"\\":{">>":["\\"]},"]":{"]":{">>":["⟧"]}},"^":{"(":{">>":["⁽"]},")":{">>":["⁾"]},"+":{">>":["⁺"]},"-":{"-":{">>":["̅","̿"]},">>":["⁻"]},".":{">>":["̇","̈","⃛","⃜"]},"0":{">>":["⁰"]},"1":{">>":["¹"]},"2":{">>":["²"]},"3":{">>":["³"]},"4":{">>":["⁴"]},"5":{">>":["⁵"]},"6":{">>":["⁶"]},"7":{">>":["⁷"]},"8":{">>":["⁸"]},"9":{">>":["⁹"]},"=":{">>":["⁼"]},">>":["̂"],"A":{">>":["ᴬ","Â"]},"B":{">>":["ᴮ"]},"C":{">>":["Ĉ"]},"D":{">>":["ᴰ"]},"E":{">>":["ᴱ","Ê"]},"G":{">>":["ᴳ","Ĝ"],"b":{">>":["ᵝ"]},"c":{">>":["ᵡ"]},"d":{">>":["ᵟ"]},"e":{">>":["ᵋ"]},"f":{">>":["ᵠ"]},"g":{">>":["ᵞ"]},"t":{"h":{">>":["ᶿ"]}}},"H":{">>":["ᴴ","Ĥ"]},"I":{">>":["ᴵ","Î"]},"J":{">>":["ᴶ","Ĵ"]},"K":{">>":["ᴷ"]},"L":{">>":["ᴸ"]},"M":{">>":["ᴹ"]},"N":{">>":["ᴺ"]},"O":{">>":["ᴼ","Ô"]},"P":{">>":["ᴾ"]},"R":{">>":["ᴿ"]},"S":{">>":["Ŝ"]},"T":{">>":["ᵀ"]},"U":{">>":["ᵁ","Û"]},"V":{">>":["ⱽ"]},"W":{">>":["ᵂ","Ŵ"]},"Y":{">>":["Ŷ"]},"Z":{">>":["Ẑ"]},"\\":{"g":{"a":{"m":{"m":{"a":{">>":["ˠ"]}}}}}},"^":{">>":["̂","̑","͆"]},"a":{">>":["ᵃ","ª","â"],"_":{">>":["ª"]}},"b":{">>":["ᵇ"]},"c":{">>":["ᶜ","ĉ"]},"d":{">>":["ᵈ"]},"e":{">>":["ᵉ","ê"]},"f":{">>":["ᶠ"]},"g":{">>":["ᵍ","ĝ"]},"h":{">>":["ʰ","ĥ"]},"i":{">>":["ⁱ","î"]},"j":{">>":["ʲ","ĵ"]},"k":{">>":["ᵏ"]},"l":{"-":{">>":["⃖"]},">>":["⃖","⃐","⃔","ˡ"],"r":{">>":["⃡"]}},"m":{">>":["ᵐ"]},"n":{">>":["ⁿ"]},"o":{">>":["ᵒ","º","ô"],"_":{">>":["º"]}},"p":{">>":["ᵖ"]},"r":{"-":{">>":["⃗"]},">>":["⃗","⃑","⃕","ʳ"]},"s":{">>":["ˢ","ŝ"]},"t":{">>":["ᵗ"]},"u":{">>":["ᵘ","û"]},"v":{">>":["̌","̆","ᵛ"]},"w":{">>":["ʷ","ŵ"]},"x":{">>":["ˣ"]},"y":{">>":["ʸ","ŷ"]},"z":{">>":["ᶻ","ẑ"]},"{":{"A":{"}":{">>":["Â"]}},"C":{"}":{">>":["Ĉ"]}},"E":{"}":{">>":["Ê"]}},"G":{"}":{">>":["Ĝ"]}},"H":{"}":{">>":["Ĥ"]}},"I":{"}":{">>":["Î"]}},"J":{"}":{">>":["Ĵ"]}},"O":{"}":{">>":["Ô"]}},"S":{"M":{"}":{">>":["℠"]}},"}":{">>":["Ŝ"]}},"T":{"E":{"L":{"}":{">>":["℡"]}}},"M":{"}":{">>":["™"]}}},"U":{"}":{">>":["Û"]}},"W":{"}":{">>":["Ŵ"]}},"Y":{"}":{">>":["Ŷ"]}},"\\":{"i":{"}":{">>":["î"]}},"j":{"}":{">>":["ĵ"]}}},"a":{"}":{">>":["â"]}},"c":{"}":{">>":["ĉ"]}},"e":{"}":{">>":["ê"]}},"g":{"}":{">>":["ĝ"]}},"h":{"}":{">>":["ĥ"]}},"o":{"}":{">>":["ô"]}},"s":{"}":{">>":["ŝ"]}},"u":{"}":{">>":["û"]}},"w":{"}":{">>":["ŵ"]}},"y":{"}":{">>":["ŷ"]}}},"~":{">>":["̃","͌"]}},"_":{"(":{">>":["₍"]},")":{">>":["₎"]},"+":{">>":["₊"]},"-":{"-":{">>":["̲","̳"]},">>":["₋"]},".":{">>":["̣","̤"]},"0":{">>":["₀"]},"1":{">>":["₁"]},"2":{">>":["₂"]},"3":{">>":["₃"]},"4":{">>":["₄"]},"5":{">>":["₅"]},"6":{">>":["₆"]},"7":{">>":["₇"]},"8":{">>":["₈"]},"9":{">>":["₉"]},"=":{">>":["₌"]},"G":{"b":{">>":["ᵦ"]},"c":{">>":["ᵪ"]},"f":{">>":["ᵩ"]},"g":{">>":["ᵧ"]},"r":{">>":["ᵨ"]}},"^":{">>":["̭","̯","̪"]},"_":{">>":["_"]},"a":{">>":["ₐ"]},"e":{">>":["ₑ"]},"h":{">>":["ₕ"]},"i":{">>":["ᵢ"]},"j":{">>":["ⱼ"]},"k":{">>":["ₖ"]},"l":{">>":["ₗ"],"r":{">>":["͍"]}},"m":{">>":["ₘ"]},"n":{">>":["ₙ"]},"o":{">>":["ₒ"]},"p":{">>":["ₚ"]},"r":{">>":["ᵣ"]},"s":{">>":["ₛ"]},"t":{">>":["ₜ"]},"u":{">>":["ᵤ"]},"v":{">>":["̬","̮","̺","ᵥ"]},"x":{">>":["ₓ"]},"~":{">>":["̰"]}},"`":{">>":["‵","‶","‷","`","̀"],"A":{">>":["À"]},"E":{">>":["È"]},"I":{">>":["Ì"]},"N":{">>":["Ǹ"]},"O":{">>":["Ò"]},"U":{">>":["Ù"]},"W":{">>":["Ẁ"]},"Y":{">>":["Ỳ"]},"a":{">>":["à"]},"e":{">>":["è"]},"i":{">>":["ì"]},"n":{">>":["ǹ"]},"o":{">>":["ò"]},"u":{">>":["ù"]},"w":{">>":["ẁ"]},"y":{">>":["ỳ"]},"{":{"A":{"}":{">>":["À"]}},"E":{"}":{">>":["È"]}},"I":{"}":{">>":["Ì"]}},"N":{"}":{">>":["Ǹ"]}},"O":{"}":{">>":["Ò"]}},"U":{"}":{">>":["Ù"]}},"\\":{"i":{"}":{">>":["ì"]}}},"a":{"}":{">>":["à"]}},"e":{"}":{">>":["è"]}},"n":{"}":{">>":["ǹ"]}},"o":{"}":{">>":["ò"]}},"u":{"}":{">>":["ù"]}}}},"a":{"a":{">>":["å"]},"e":{">>":["æ"]},"l":{"e":{"p":{"h":{">>":["א"]}}},"l":{">>":["∀"]},"p":{"h":{"a":{">>":["α"]}}}},"m":{"a":{"l":{"g":{">>":["∐"]}}}},"n":{"d":{"=":{">>":["≙"]},">>":["∧"]},"g":{"l":{"e":{">>":["∟","∡","∢","⊾","⊿","∠"]}}}},"p":{"l":{">>":["⌶","⌷","⌸","⌹","⌺","⌻","⌼","⌽","⌾","⌿","⍀","⍁","⍂","⍃","⍄","⍅","⍆","⍇","⍈","⍉","⍊","⍋","⍌","⍍","⍎","⍏","⍐","⍑","⍒","⍓","⍔","⍕","⍖","⍗","⍘","⍙","⍚","⍛","⍜","⍝","⍞","⍟","⍠","⍡","⍢","⍣","⍤","⍥","⍦","⍧","⍨","⍩","⍪","⍫","⍬","⍭","⍮","⍯","⍰","⍱","⍲","⍳","⍴","⍵","⍶","⍷","⍸","⍹","⍺","⎕"]},"p":{"r":{"o":{"x":{">>":["≈"],"e":{"q":{">>":["≊"]}}}}}}},"s":{"t":{">>":["∗"],"e":{"r":{"i":{"s":{"k":{">>":["⁎","⁑","⁂","✢","✣","✤","✥","✱","✲","✳","✺","✻","✼","✽","❃","❉","❊","❋","*"]}}}}}},"y":{"m":{"p":{">>":["≍"]}}}}},"b":{"+":{">>":["⊞"]},"-":{">>":["⊟"]},".":{">>":["⊡"]},"0":{">>":["𝟘"]},"1":{">>":["𝟙"]},"2":{">>":["𝟚"]},"3":{">>":["𝟛"]},"4":{">>":["𝟜"]},"5":{">>":["𝟝"]},"6":{">>":["𝟞"]},"7":{">>":["𝟟"]},"8":{">>":["𝟠"]},"9":{">>":["𝟡"]},">>":["♭","̱"],"A":{">>":["𝔸"]},"B":{">>":["𝔹"]},"C":{">>":["ℂ"]},"D":{">>":["𝔻"]},"E":{">>":["𝔼"]},"F":{">>":["𝔽"]},"G":{">>":["𝔾"],"G":{">>":["ℾ"]},"P":{">>":["ℿ"]},"S":{">>":["⅀"]},"g":{">>":["ℽ"]},"p":{">>":["ℼ"]}},"H":{">>":["ℍ"]},"I":{">>":["𝕀"]},"J":{">>":["𝕁"]},"K":{">>":["𝕂"]},"L":{">>":["𝕃"]},"M":{">>":["𝕄"]},"N":{">>":["ℕ"]},"O":{">>":["𝕆"]},"P":{">>":["ℙ"]},"Q":{">>":["ℚ"]},"R":{">>":["ℝ"]},"S":{">>":["𝕊"]},"T":{">>":["𝕋"]},"U":{">>":["𝕌"]},"V":{">>":["𝕍"]},"W":{">>":["𝕎"]},"X":{">>":["𝕏"]},"Y":{">>":["𝕐"]},"Z":{">>":["ℤ"]},"a":{">>":["𝕒"],"c":{"k":{"c":{"o":{"n":{"g":{">>":["≌"]}}}},"e":{"p":{"s":{"i":{"l":{"o":{"n":{">>":["∍"]}}}}}}},"p":{"r":{"i":{"m":{"e":{">>":["‵"]}}}}},"s":{"i":{"m":{">>":["∽"],"e":{"q":{">>":["⋍"]}}}},"l":{"a":{"s":{"h":{">>":["\\"]}}}}}}},"r":{"w":{"e":{"d":{"g":{"e":{">>":["⊼"]}}}}}}},"b":{">>":["𝕓"]},"c":{">>":["𝕔"]},"d":{">>":["𝕕"]},"e":{">>":["𝕖"],"c":{"a":{"u":{"s":{"e":{">>":["∵"]}}}}},"t":{"a":{">>":["β"]},"h":{">>":["ב"]},"w":{"e":{"e":{"n":{">>":["≬"]}}}}}},"f":{">>":["𝕗"]},"g":{">>":["𝕘"]},"h":{">>":["𝕙"]},"i":{">>":["𝕚"],"g":{"c":{"a":{"p":{">>":["⋂"]}},"i":{"r":{"c":{">>":["◯"]}}},"u":{"p":{">>":["⋃"]}}},"s":{"t":{"a":{"r":{">>":["★"]}}}},"t":{"r":{"i":{"a":{"n":{"g":{"l":{"e":{"d":{"o":{"w":{"n":{">>":["▽"]}}}},"u":{"p":{">>":["△"]}}}}}}}}}},"v":{"e":{"e":{">>":["⋁"]}}},"w":{"e":{"d":{"g":{"e":{">>":["⋀"]}}}}}}},"j":{">>":["𝕛"]},"k":{">>":["𝕜"]},"l":{">>":["𝕝"],"a":{"c":{"k":{"l":{"o":{"z":{"e":{"n":{"g":{"e":{">>":["✦"]}}}}}}},"s":{"m":{"i":{"l":{"e":{"y":{">>":["☻"]}}}}},"q":{"u":{"a":{"r":{"e":{">>":["▪"]}}}}}},"t":{"r":{"i":{"a":{"n":{"g":{"l":{"e":{">>":["▴"],"d":{"o":{"w":{"n":{">>":["▾"]}}}},"l":{"e":{"f":{"t":{">>":["◂"]}}}},"r":{"i":{"g":{"h":{"t":{">>":["▸"]}}}}}}}}}}}}}}}}},"m":{">>":["𝕞"]},"n":{">>":["𝕟"]},"o":{">>":["𝕠"],"t":{">>":["⊥"]},"w":{"t":{"i":{"e":{">>":["⋈"]}}}},"x":{"'":{">>":["⍞"]},"/":{">>":["⍁"]},":":{">>":["⍠"]},"<":{">>":["⍃"]},"=":{">>":["⌸"]},">":{">>":["⍄"]},"?":{">>":["⍰"]},"O":{">>":["⌼"]},"\\":{">>":["⍂"]},"c":{"i":{"r":{"c":{"l":{"e":{">>":["⌼"]}}}}},"o":{"m":{"p":{">>":["⌻"]}}}},"d":{">>":["⍗"],"e":{"l":{"t":{"a":{">>":["⍍"]}}}},"i":{">>":["⌺"],"v":{">>":["⌹"]}}},"e":{"q":{">>":["⌸"],"n":{">>":["⍯"]}}},"l":{">>":["⍇"]},"m":{"i":{"n":{"u":{"s":{">>":["⊟"]}}}}},"n":{"a":{"b":{"l":{"a":{">>":["⍔"]}}}},"e":{"q":{">>":["⍯"]}}},"o":{">>":["⌻"]},"p":{"l":{"u":{"s":{">>":["⊞"]}}}},"r":{">>":["⍈"]},"t":{"i":{"m":{"e":{"s":{">>":["⊠"]}}}}},"u":{">>":["⍐"]},"v":{"e":{"e":{">>":["⍌"]}}},"w":{"e":{"d":{"g":{"e":{">>":["⍓"]}}}}}}},"p":{">>":["𝕡"]},"q":{">>":["𝕢"]},"r":{">>":["𝕣"],"o":{"k":{"e":{"n":{"b":{"a":{"r":{">>":["¦"]}}}}}}}},"s":{">>":["𝕤"]},"t":{">>":["𝕥"]},"u":{">>":["𝕦","•","◦","‣","⁌","⁍"],"b":{">>":["•"]},"l":{"l":{"e":{"t":{">>":["•"]}}}},"m":{"p":{"e":{"q":{">>":["≏"]}}}},"t":{">>":["‣"]},"w":{">>":["◦"]}},"v":{">>":["𝕧"]},"w":{">>":["𝕨"]},"x":{">>":["⊠","𝕩"]},"y":{">>":["𝕪"]},"z":{">>":["𝕫"]}},"c":{">>":["⌜","⌝","⌞","⌟","⌈","⌉","⌊","⌋","̧"],"C":{">>":["Ç"]},"E":{">>":["Ȩ"]},"G":{">>":["Ģ"]},"K":{">>":["Ķ"]},"L":{">>":["Ļ"]},"N":{">>":["Ņ"]},"R":{">>":["Ŗ"]},"S":{">>":["Ş"]},"T":{">>":["Ţ"]},"a":{"p":{">>":["∩"]}},"c":{">>":["ç"]},"d":{"o":{"t":{">>":["·"],"s":{">>":["⋯"]}}}},"e":{">>":["ȩ"],"l":{"s":{"i":{"u":{"s":{">>":["℃"]}}}}},"n":{"t":{">>":["¢"],"e":{"r":{"d":{"o":{"t":{">>":["·"]}}}}}}}},"g":{">>":["ģ"]},"h":{"e":{"c":{"k":{"m":{"a":{"r":{"k":{">>":["✓"]}}}}}}},"i":{">>":["χ"]}},"i":{".":{".":{">>":["◌"]},">>":["◎"]},">>":["●","○","◎","◌","◯","◍","◐","◑","◒","◓","◔","◕","◖","◗","◠","◡","◴","◵","◶","◷","⚆","⚇","⚈","⚉"],"O":{">>":["◯"]},"b":{">>":["●"]},"r":{"c":{">>":["∘"],"e":{"q":{">>":["≗"]}},"l":{"e":{"a":{"r":{"r":{"o":{"w":{"l":{"e":{"f":{"t":{">>":["↺"]}}}},"r":{"i":{"g":{"h":{"t":{">>":["↻"]}}}}}}}}}},"d":{"R":{">>":["®"]},"S":{">>":["Ⓢ"]},"a":{"s":{"t":{">>":["⊛"]}}},"c":{"i":{"r":{"c":{">>":["⊚"]}}}},"d":{"a":{"s":{"h":{">>":["⊝"]}}}}}}}}},"w":{">>":["○"]}},"k":{">>":["ķ"]},"l":{">>":["⌞","⌟","⌊","⌋","ļ"],"L":{">>":["⌊"]},"R":{">>":["⌋"]},"l":{">>":["⌞"]},"r":{">>":["⌟"]},"u":{"b":{"s":{"u":{"i":{"t":{">>":["♣"]}}}}}}},"n":{">>":["ņ"]},"o":{"l":{"o":{"n":{">>":[":"],"e":{"q":{">>":["≔"]}}}}},"m":{"p":{">>":["∘"],"l":{"e":{"m":{"e":{"n":{"t":{">>":["∁"]}}}}}}}},"n":{"g":{">>":["≅"]}},"p":{"r":{"o":{"d":{">>":["∐"]}}},"y":{"r":{"i":{"g":{"h":{"t":{">>":["©"]}}}}}}}},"r":{">>":["ŗ"]},"s":{">>":["ş"]},"t":{">>":["ţ"]},"u":{">>":["⌜","⌝","⌈","⌉"],"L":{">>":["⌈"]},"R":{">>":["⌉"]},"l":{">>":["⌜"]},"p":{">>":["∪"]},"r":{">>":["⌝"],"l":{"y":{"e":{"q":{"p":{"r":{"e":{"c":{">>":["⋞"]}}}},"s":{"u":{"c":{"c":{">>":["⋟"]}}}}}},"p":{"r":{"e":{"c":{"e":{"q":{">>":["≼"]}}}}}},"v":{"e":{"e":{">>":["⋎"]}}},"w":{"e":{"d":{"g":{"e":{">>":["⋏"]}}}}}}},"r":{"e":{"n":{"c":{"y":{">>":["¤"]}}}}},"v":{"e":{"a":{"r":{"r":{"o":{"w":{"l":{"e":{"f":{"t":{">>":["↶"]}}}},"r":{"i":{"g":{"h":{"t":{">>":["↷"]}}}}}}}}}}}}}},"{":{"C":{"}":{">>":["Ç"]}},"D":{"}":{">>":["Ḑ"]}},"E":{"}":{">>":["Ȩ"]}},"G":{"}":{">>":["Ģ"]}},"H":{"}":{">>":["Ḩ"]}},"K":{"}":{">>":["Ķ"]}},"L":{"}":{">>":["Ļ"]}},"N":{"}":{">>":["Ņ"]}},"R":{"}":{">>":["Ŗ"]}},"S":{"}":{">>":["Ş"]}},"T":{"}":{">>":["Ţ"]}},"c":{"}":{">>":["ç"]}},"d":{"}":{">>":["ḑ"]}},"e":{"}":{">>":["ȩ"]}},"g":{"}":{">>":["ģ"]}},"h":{"}":{">>":["ḩ"]}},"k":{"}":{">>":["ķ"]}},"l":{"}":{">>":["ļ"]}},"n":{"}":{">>":["ņ"]}},"r":{"}":{">>":["ŗ"]}},"s":{"}":{">>":["ş"]}},"t":{"}":{">>":["ţ"]}},"}":{">>":["¸"]}}},"d":{"-":{"2":{">>":["⇊"]},">>":["↓"],"u":{"-":{">>":["⇵"]}},"|":{">>":["↧"]}},"=":{"=":{">>":["⟱"]},">>":["⇓"]},">>":["↓","⇓","⤋","⟱","⇊","⇵","↧","⇩","↡","⇃","⇂","⇣","⇟","↵","↲","↳","➥","↯","̣"],"a":{"g":{">>":["†"],"g":{"e":{"r":{">>":["†"]}}}},"l":{"e":{"t":{"h":{">>":["ד"]}}}},"s":{"h":{"v":{">>":["⊣"]}}}},"d":{"-":{">>":["↡"]},"a":{"g":{">>":["‡"],"g":{"e":{"r":{">>":["‡"]}}}}},"o":{"t":{"s":{">>":["⋱"]}}}},"e":{"f":{"=":{">>":["≝"]},"s":{">>":["≙"]}},"g":{"r":{"e":{"e":{">>":["°"]}}}},"l":{"t":{"a":{">>":["δ"]}}}},"h":{">>":["ð"]},"i":{".":{">>":["◈"]},">>":["◆","◇","◈"],"a":{"m":{"o":{"n":{"d":{">>":["⋄"],"s":{"u":{"i":{"t":{">>":["♢"]}}}}}}}}},"b":{">>":["◆"]},"e":{">>":["⚀","⚁","⚂","⚃","⚄","⚅"]},"g":{"a":{"m":{"m":{"a":{">>":["Ϝ"]}}}}},"v":{">>":["÷"],"i":{"d":{"e":{"o":{"n":{"t":{"i":{"m":{"e":{"s":{">>":["⋇"]}}}}}}}}}}},"w":{">>":["◇"]}},"l":{"-":{">>":["↙"]},"=":{">>":["⇙"]},">>":["↙","⇙"]},"o":{"t":{"e":{"q":{">>":["≐"],"d":{"o":{"t":{">>":["≑"]}}}}},"p":{"l":{"u":{"s":{">>":["∔"]}}}},"s":{"q":{"u":{"a":{"r":{"e":{">>":["⊡"]}}}}}}},"w":{"n":{"a":{"r":{"r":{"o":{"w":{">>":["↓"]}}}}},"d":{"o":{"w":{"n":{"a":{"r":{"r":{"o":{"w":{"s":{">>":["⇊"]}}}}}}}}}},"l":{"e":{"f":{"t":{"h":{"a":{"r":{"p":{"o":{"o":{"n":{">>":["⇃"]}}}}}}}}}}},"r":{"i":{"g":{"h":{"t":{"h":{"a":{"r":{"p":{"o":{"o":{"n":{">>":["⇂"]}}}}}}}}}}}}}}},"r":{"-":{">>":["↘"]},"=":{">>":["⇘"]},">>":["↘","⇘","⇲","➴","➷","➘"]},"z":{">>":["↯"]},"{":{"A":{"}":{">>":["Ạ"]}},"B":{"}":{">>":["Ḅ"]}},"D":{"}":{">>":["Ḍ"]}},"E":{"}":{">>":["Ẹ"]}},"H":{"}":{">>":["Ḥ"]}},"I":{"}":{">>":["Ị"]}},"K":{"}":{">>":["Ḳ"]}},"L":{"}":{">>":["Ḷ"]}},"M":{"}":{">>":["Ṃ"]}},"N":{"}":{">>":["Ṇ"]}},"O":{"}":{">>":["Ọ"]}},"R":{"}":{">>":["Ṛ"]}},"S":{"}":{">>":["Ṣ"]}},"T":{"}":{">>":["Ṭ"]}},"U":{"}":{">>":["Ụ"]}},"V":{"}":{">>":["Ṿ"]}},"W":{"}":{">>":["Ẉ"]}},"Y":{"}":{">>":["Ỵ"]}},"Z":{"}":{">>":["Ẓ"]}},"a":{"}":{">>":["ạ"]}},"b":{"}":{">>":["ḅ"]}},"d":{"}":{">>":["ḍ"]}},"e":{"}":{">>":["ẹ"]}},"h":{"}":{">>":["ḥ"]}},"i":{"}":{">>":["ị"]}},"k":{"}":{">>":["ḳ"]}},"l":{"}":{">>":["ḷ"]}},"m":{"}":{">>":["ṃ"]}},"n":{"}":{">>":["ṇ"]}},"o":{"}":{">>":["ọ"]}},"r":{"}":{">>":["ṛ"]}},"s":{"}":{">>":["ṣ"]}},"t":{"}":{">>":["ṭ"]}},"u":{"}":{">>":["ụ"]}},"v":{"}":{">>":["ṿ"]}},"w":{"}":{">>":["ẉ"]}},"y":{"}":{">>":["ỵ"]}},"z":{"}":{">>":["ẓ"]}}}},"e":{"e":{">>":["ė"]},"l":{"l":{">>":["ℓ"]}},"m":{">>":["—"],"p":{"t":{"y":{"s":{"e":{"t":{">>":["∅"]}}}}}}},"n":{">>":["–"],"t":{"a":{"i":{"l":{"s":{">>":["⊢","⊣","⊤","⊥","⊦","⊧","⊨","⊩","⊪","⊫","⊬","⊭","⊮","⊯"]}}}}}},"p":{"s":{"i":{"l":{"o":{"n":{">>":["ε"]}}}}}},"q":{">>":["=","∼","∽","≈","≋","∻","∾","∿","≀","≃","⋍","≂","≅","≌","≊","≡","≣","≐","≑","≒","≓","≔","≕","≖","≗","≘","≙","≚","≛","≜","≝","≞","≟","≍","≎","≏","≬","⋕","="],"c":{"i":{"r":{"c":{">>":["≖"]}}},"o":{"l":{"o":{"n":{">>":["≕"]}}}}},"n":{">>":["≠","≁","≉","≄","≇","≆","≢","≭"]},"s":{"l":{"a":{"n":{"t":{"g":{"t":{"r":{">>":["⋝"]}}},"l":{"e":{"s":{"s":{">>":["⋜"]}}}}}}}}},"u":{"i":{"v":{">>":["≡"]}}}},"t":{"a":{">>":["η"]}},"u":{"r":{"o":{">>":["€"]}}},"x":{">>":["∃"],"i":{"s":{"t":{"s":{">>":["∃"]}}}},"n":{">>":["∄"]}},"{":{"e":{"}":{">>":["ė"]}}}},"f":{"a":{"l":{"l":{"i":{"n":{"g":{"d":{"o":{"t":{"s":{"e":{"q":{">>":["≒"]}}}}}}}}}}}},"l":{"a":{"t":{">>":["♭"]}},"q":{">>":["‹"],"q":{">>":["«"]}}},"o":{"r":{"a":{"l":{"l":{">>":["∀"]}}}}},"r":{"a":{"c":{"1":{"2":{">>":["½"]},"3":{">>":["⅓"]},"4":{">>":["¼"]},"5":{">>":["⅕"]},"6":{">>":["⅙"]},"8":{">>":["⅛"]},">>":["⅟"]},"2":{"3":{">>":["⅔"]},"5":{">>":["⅖"]}},"3":{"4":{">>":["¾"]},"5":{">>":["⅗"]},"8":{">>":["⅜"]}},"4":{"5":{">>":["⅘"]}},"5":{"6":{">>":["⅚"]},"8":{">>":["⅝"]}},"7":{"8":{">>":["⅞"]}},">>":["¼","½","¾","⅓","⅔","⅕","⅖","⅗","⅘","⅙","⅚","⅛","⅜","⅝","⅞","⅟"]}},"o":{"w":{"n":{">>":["⌢"]}}},"q":{">>":["›"],"q":{">>":["»"]}}}},"g":{"a":{"m":{"m":{"a":{">>":["γ"]}}}},"e":{">>":["≥"],"n":{">>":["≱"]},"q":{">>":[">","≫","⋙","≥","≧","≳","≷","≻","≽","≿","⊃","⊇","⋑","⊐","⊒","⊱","⊳","⊵","⋗","⋛","⋝","⋟",">"],"n":{">>":["≯","≱","≩","≵","⋧","≹","⊁","⋩","⊅","⊉","⊋","⋣","⋥","⋫","⋭","⋡"]},"q":{">>":["≧"]},"s":{"l":{"a":{"n":{"t":{">>":["≥"]}}}}}},"t":{"s":{">>":["←"]}}},"g":{">>":["≫"],"g":{">>":["⋙"]}},"i":{"m":{"e":{"l":{">>":["ג"]}}}},"l":{"b":{">>":["⊓"]},"q":{">>":["‚"],"q":{">>":["„"]}}},"n":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["⋧"]}}}}}},"e":{"q":{">>":["≩"],"q":{">>":["≩"]}}},"s":{"i":{"m":{">>":["⋧"]}}}},"r":{"q":{">>":["‘"],"q":{">>":["“"]}}},"t":{"r":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["≳"]}}}}}},"d":{"o":{"t":{">>":["⋗"]}}},"e":{"q":{"l":{"e":{"s":{"s":{">>":["⋛"]}}}},"q":{"l":{"e":{"s":{"s":{">>":["⋛"]}}}}}}},"l":{"e":{"s":{"s":{">>":["≷"]}}}},"s":{"i":{"m":{">>":["≳"]}}}}},"v":{"e":{"r":{"t":{"n":{"e":{"q":{"q":{">>":["≩"]}}}}}}}}},"h":{"b":{"a":{"r":{">>":["ℏ"]}}},"e":{"a":{"r":{"t":{"s":{"u":{"i":{"t":{">>":["♥"]}}}}}}}},"o":{"o":{"k":{"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↩"]}}}}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↪"]}}}}}}}}}}}}}},"i":{">>":["∩","ı"],"f":{"f":{">>":["⇔"]}},"m":{"a":{"t":{"h":{">>":["ı"]}}}},"n":{">>":["∈"],"c":{"r":{"e":{"m":{"e":{"n":{"t":{">>":["∆"]}}}}}}},"f":{">>":["∞"],"t":{"y":{">>":["∞"]}}},"n":{">>":["∉"]},"t":{">>":["∫"],"e":{"g":{"r":{"a":{"l":{">>":["∫","∬","∭","∮","∯","∰","∱","∲","∳"]}}}},"r":{"c":{"a":{"l":{">>":["⊺"]}}},"s":{"e":{"c":{"t":{"i":{"o":{"n":{">>":["∩","⋂","∧","⋀","⋏","⨇","⊓","⨅","⋒","∏","⊼","⨉"]}}}}}}}}}}},"o":{"t":{"a":{">>":["ι"]}}}},"j":{"o":{"i":{"n":{">>":["⋈","⋉","⋊","⋋","⋌","⨝","⟕","⟖","⟗"]}}}},"k":{"a":{"p":{"p":{"a":{">>":["κ"]}}}},"{":{"A":{"}":{">>":["Ą"]}},"E":{"}":{">>":["Ę"]}},"I":{"}":{">>":["Į"]}},"O":{"}":{">>":["Ǫ"]}},"U":{"}":{">>":["Ų"]}},"a":{"}":{">>":["ą"]}},"e":{"}":{">>":["ę"]}},"i":{"}":{">>":["į"]}},"o":{"}":{">>":["ǫ"]}},"u":{"}":{">>":["ų"]}}}},"l":{"-":{"-":{">>":["⟵"]},"2":{">>":["⇇"]},">":{">>":["↢"]},">>":["←"],"n":{">>":["↚"]},"r":{"-":{">>":["⇆"]}},"|":{">>":["↤"]}},"=":{"=":{">>":["⇚"]},">>":["⇐"],"n":{">>":["⇍"]}},">>":["←","⇐","⇚","⭅","⇇","⇆","↤","⇦","↞","↼","↽","⇠","⇺","↜","⇽","⟵","⟸","↚","⇍","⇷","↹","↢","↩","↫","⇋","⇜","⇤","⟻","⟽","⤆","↶","↺","⟲","ł"],"a":{"m":{"b":{"d":{"a":{">>":["λ"],"b":{"a":{"r":{">>":["ƛ"]}}}}}}},"n":{"g":{"l":{"e":{">>":["〈"]}}}}},"b":{"a":{"g":{">>":["⟅"]}},"r":{"a":{"c":{"e":{">>":["{"]},"k":{">>":["["]}}}}},"c":{"e":{"i":{"l":{">>":["⌈"]}}}},"d":{"a":{"t":{"a":{">>":["《"]}}},"o":{"t":{"s":{">>":["…"]}}},"q":{">>":["“"]}},"e":{">>":["≤"],"a":{"d":{"s":{"t":{"o":{">>":["↝"]}}}}},"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["←"],"t":{"a":{"i":{"l":{">>":["↢"]}}}}}}}}},"h":{"a":{"r":{"p":{"o":{"o":{"n":{"d":{"o":{"w":{"n":{">>":["↽"]}}}},"u":{"p":{">>":["↼"]}}}}}}}}},"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{"s":{">>":["⇇"]}}}}}}}}}},"p":{"a":{"r":{"e":{"n":{"g":{"t":{"r":{">>":["〈"]}}}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↔"],"s":{">>":["⇆"]}}}}}},"h":{"a":{"r":{"p":{"o":{"o":{"n":{"s":{">>":["⇋"]}}}}}}}},"s":{"q":{"u":{"i":{"g":{"a":{"r":{"r":{"o":{"w":{">>":["↭"]}}}}}}}}}}}}}}},"t":{"h":{"r":{"e":{"e":{"t":{"i":{"m":{"e":{"s":{">>":["⋋"]}}}}}}}}}}}},"n":{">>":["≰"]},"q":{">>":["<","≪","⋘","≤","≦","≲","≶","≺","≼","≾","⊂","⊆","⋐","⊏","⊑","⊰","⊲","⊴","⋖","⋚","⋜","⋞","<"],"n":{">>":["≮","≰","≨","≴","⋦","≸","⊀","⋨","⊄","⊈","⊊","⋢","⋤","⋪","⋬","⋠"]},"q":{">>":["≦"]},"s":{"l":{"a":{"n":{"t":{">>":["≤"]}}}}}},"s":{"s":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["≲"]}}}}}},"d":{"o":{"t":{">>":["⋖"]}}},"e":{"q":{"g":{"t":{"r":{">>":["⋚"]}}},"q":{"g":{"t":{"r":{">>":["⋚"]}}}}}},"g":{"t":{"r":{">>":["≶"]}}},"s":{"i":{"m":{">>":["≲"]}}}}}},"f":{"l":{"o":{"o":{"r":{">>":["⌊"]}}}}},"h":{"d":{">>":["◁"]}},"l":{"-":{">>":["↞"]},">>":["≪"],"b":{"r":{"a":{"c":{"k":{"e":{"t":{">>":["〚"]}}}}}}},"c":{"o":{"r":{"n":{"e":{"r":{">>":["⌞"]}}}}}}},"n":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["⋦"]}}}}}},"e":{"q":{">>":["≨"],"q":{">>":["≨"]}}},"o":{"t":{">>":["¬"]}},"s":{"i":{"m":{">>":["⋦"]}}}},"o":{"n":{"g":{"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["←"]}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↔"]}}}}}}}}}}}}}},"m":{"a":{"p":{"s":{"t":{"o":{">>":["↦"]}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["→"]}}}}}}}}}}}},"o":{"p":{"a":{"r":{"r":{"o":{"w":{"l":{"e":{"f":{"t":{">>":["↫"]}}}},"r":{"i":{"g":{"h":{"t":{">>":["↬"]}}}}}}}}}}}},"z":{"e":{"n":{"g":{"e":{">>":["✧"]}}}}}},"q":{">>":["‘"]},"r":{"-":{"-":{">>":["⟷"]},">>":["↔"],"n":{">>":["↮"]}},"=":{">>":["⇔"],"n":{">>":["⇎"]}},">>":["↔","⇔","⇼","↭","⇿","⟷","⟺","↮","⇎","⇹"],"c":{"o":{"r":{"n":{"e":{"r":{">>":["⌟"]}}}}}},"~":{">>":["↭"]}},"t":{"i":{"m":{"e":{"s":{">>":["⋉"]}}}}},"u":{"b":{">>":["⊔"]}},"v":{"e":{"r":{"t":{"n":{"e":{"q":{"q":{">>":["≨"]}}}}}}}},"~":{">>":["↜","⇜"]}},"m":{"=":{">>":["≞"]},"a":{"l":{"t":{"e":{"s":{"e":{">>":["✠"]}}}}},"p":{"s":{"t":{"o":{">>":["↦"]}}}},"t":{"h":{"s":{"c":{"r":{"{":{"I":{"}":{">>":["ℐ"]}}}}}}}}},"e":{"a":{"s":{"u":{"r":{"e":{"d":{"a":{"n":{"g":{"l":{"e":{">>":["∡"]}}}}}}}}}}},"m":{"b":{"e":{"r":{">>":["∈","∉","∊","∋","∌","∍","⋲","⋳","⋴","⋵","⋶","⋷","⋸","⋹","⋺","⋻","⋼","⋽","⋾","⋿"]}}}}},"h":{"o":{">>":["℧"]}},"i":{"c":{"r":{"o":{">>":["µ"]}}},"d":{">>":["∣"]},"n":{"u":{"s":{">>":["−"]}}}},"o":{"d":{"e":{"l":{"s":{">>":["⊧"]}}}}},"p":{">>":["∓"]},"u":{">>":["μ"],"l":{"t":{"i":{"m":{"a":{"p":{">>":["⊸"]}}}}}}}},"n":{"L":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇍"]}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇎"]}}}}}}}}}}}}}},"R":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["⇏"]}}}}}}}}}},"V":{"D":{"a":{"s":{"h":{">>":["⊯"]}}}},"d":{"a":{"s":{"h":{">>":["⊮"]}}}}},"a":{"b":{"l":{"a":{">>":["∇"]}}},"p":{"p":{"r":{"o":{"x":{">>":["≉"]}}}}},"t":{"u":{"r":{"a":{"l":{">>":["♮"]}}}}}},"c":{"o":{"n":{"g":{">>":["≇"]}}}},"e":{">>":["≠"],"a":{"r":{"r":{"o":{"w":{">>":["↗"]}}}}},"g":{">>":["¬"]},"q":{">>":["≠"],"u":{"i":{"v":{">>":["≢"]}}}},"w":{"l":{"i":{"n":{"e":{">>":["\n"]}}}}},"x":{"i":{"s":{"t":{"s":{">>":["∄"]}}}}}},"g":{"e":{"q":{">>":["≱"],"q":{">>":["≱"]},"s":{"l":{"a":{"n":{"t":{">>":["≱"]}}}}}}},"t":{"r":{">>":["≯"]}}},"i":{">>":["∋"],"n":{">>":["∌"]}},"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↚"]}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↮"]}}}}}}}}}}}},"q":{">>":["≰"],"q":{">>":["≰"]},"s":{"l":{"a":{"n":{"t":{">>":["≰"]}}}}}},"s":{"s":{">>":["≮"]}}}},"m":{"i":{"d":{">>":["∤"]}}},"o":{"t":{">>":["̸"],"e":{">>":["♩","♪","♫","♬"]},"i":{"n":{">>":["∉"]}}}},"p":{"a":{"r":{"a":{"l":{"l":{"e":{"l":{">>":["∦"]}}}}}}},"r":{"e":{"c":{">>":["⊀"],"e":{"q":{">>":["⋠"]}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↛"]}}}}}}}}}},"s":{"h":{"o":{"r":{"t":{"m":{"i":{"d":{">>":["∤"]}}},"p":{"a":{"r":{"a":{"l":{"l":{"e":{"l":{">>":["∦"]}}}}}}}}}}}},"i":{"m":{">>":["≁"],"e":{"q":{">>":["≄"]}}}},"u":{"b":{"s":{"e":{"t":{">>":["⊄"],"e":{"q":{">>":["⊈"],"q":{">>":["⊈"]}}}}}}},"c":{"c":{">>":["⊁"],"e":{"q":{">>":["⋡"]}}}},"p":{"s":{"e":{"t":{">>":["⊅"],"e":{"q":{">>":["⊉"],"q":{">>":["⊉"]}}}}}}}}},"t":{"r":{"i":{"a":{"n":{"g":{"l":{"e":{"l":{"e":{"f":{"t":{">>":["⋪"],"e":{"q":{">>":["⋬"]}}}}}},"r":{"i":{"g":{"h":{"t":{">>":["⋫"],"e":{"q":{">>":["⋭"]}}}}}}}}}}}}}}},"u":{">>":["ν"]},"v":{"D":{"a":{"s":{"h":{">>":["⊭"]}}}},"d":{"a":{"s":{"h":{">>":["⊬"]}}}}},"w":{"a":{"r":{"r":{"o":{"w":{">>":["↖"]}}}}}}},"o":{"*":{">>":["⊛"]},"+":{">>":["⊕"]},"-":{"-":{">>":["⊖"]},">>":["⊝"]},".":{">>":["⊙"]},"/":{">>":["⊘"]},"=":{">>":["⊜"]},">>":["∘","ø"],"d":{"o":{"t":{">>":["⊙"]}}},"e":{">>":["œ"]},"i":{"n":{"t":{">>":["∮"]}}},"m":{"e":{"g":{"a":{">>":["ω"]}}},"i":{"n":{"u":{"s":{">>":["⊖"]}}}}},"o":{">>":["⊚"]},"p":{"l":{"u":{"s":{">>":["⊕"]}}}},"r":{"=":{">>":["≚"]},">>":["∨"],"d":{"f":{"e":{"m":{"i":{"n":{"i":{"n":{"e":{">>":["ª"]}}}}}}}},"m":{"a":{"s":{"c":{"u":{"l":{"i":{"n":{"e":{">>":["º"]}}}}}}}}}}},"s":{"l":{"a":{"s":{"h":{">>":["⊘"]}}}}},"t":{"i":{"m":{"e":{"s":{">>":["⊗"]}}}}},"x":{">>":["⊗"]}},"p":{"a":{">>":["▰","▱"],"b":{">>":["▰"]},"r":{">>":["\n"],"a":{"l":{"l":{"e":{"l":{">>":["∥"]}}}}},"t":{"i":{"a":{"l":{">>":["∂"]}}}}},"w":{">>":["▱"]}},"e":{"r":{"m":{"i":{"l":{">>":["‰"]}}},"p":{">>":["⊥"]}}},"h":{"i":{">>":["φ"]}},"i":{">>":["π"],"t":{"c":{"h":{"f":{"o":{"r":{"k":{">>":["⋔"]}}}}}}}},"m":{">>":["±"]},"o":{"u":{"n":{"d":{"s":{">>":["£"]}}}}},"r":{"e":{"c":{">>":["≺"],"a":{"p":{"p":{"r":{"o":{"x":{">>":["≾"]}}}}}},"e":{"q":{">>":["≼"]}},"n":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["⋨"]}}}}}},"s":{"i":{"m":{">>":["⋨"]}}}},"s":{"i":{"m":{">>":["≾"]}}}}},"i":{"m":{"e":{">>":["′"]}}},"o":{"d":{">>":["∏"]},"p":{"t":{"o":{">>":["∝"]}}}}},"s":{"i":{">>":["ψ"]}}},"q":{"e":{"d":{">>":["∎"]}},"u":{"a":{"d":{">>":[" "]}}}},"r":{"-":{"-":{">>":["⟶"]},"2":{">>":["⇉"]},"3":{">>":["⇶"]},">":{">>":["↣"]},">>":["→"],"l":{"-":{">>":["⇄"]}},"n":{">>":["↛"]},"o":{">>":["⊸"]},"|":{">>":["↦"]}},"=":{"=":{">>":["⇛"]},">>":["⇒"],"n":{">>":["⇏"]}},">>":["→","⇒","⇛","⭆","⇉","⇄","↦","⇨","↠","⇀","⇁","⇢","⇻","↝","⇾","⟶","⟹","↛","⇏","⇸","⇶","↴","↣","↪","↬","⇌","⇝","⇥","⟼","⟾","⤇","↷","↻","⟳","⇰","⇴","⟴","⟿","➵","➸","➙","➔","➛","➜","➝","➞","➟","➠","➡","➢","➣","➤","➧","➨","➩","➪","➫","➬","➭","➮","➯","➱","➲","➳","➺","➻","➼","➽","➾","⊸"],"a":{"n":{"g":{"l":{"e":{">>":["〉"]}}}}},"b":{"a":{"g":{">>":["⟆"]}},"r":{"a":{"c":{"e":{">>":["}"]},"k":{">>":["]"]}}}}},"c":{"e":{"i":{"l":{">>":["⌉"]}}}},"d":{"a":{"t":{"a":{">>":["》"]}}},"q":{">>":["”"]}},"e":{">>":["▬","▭","▮","▯"],"b":{">>":["▬","▮"]},"g":{"i":{"s":{"t":{"e":{"r":{"e":{"d":{">>":["®"]}}}}}}}},"w":{">>":["▭","▯"]}},"f":{"l":{"o":{"o":{"r":{">>":["⌋"]}}}}},"h":{"d":{">>":["▷"]},"o":{">>":["ρ"]}},"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["→"],"t":{"a":{"i":{"l":{">>":["↣"]}}}}}}}}},"h":{"a":{"r":{"p":{"o":{"o":{"n":{"d":{"o":{"w":{"n":{">>":["⇁"]}}}},"u":{"p":{">>":["⇀"]}}}}}}}}},"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{"s":{">>":["⇄"]}}}}}},"h":{"a":{"r":{"p":{"o":{"o":{"n":{"s":{">>":["⇌"]}}}}}}}}}}}},"p":{"a":{"r":{"e":{"n":{"g":{"t":{"r":{">>":["〉"]}}}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{"s":{">>":["⇉"]}}}}}}}}}}},"t":{"h":{"r":{"e":{"e":{"t":{"i":{"m":{"e":{"s":{">>":["⋌"]}}}}}}}}}}}}},"s":{"i":{"n":{"g":{"d":{"o":{"t":{"s":{"e":{"q":{">>":["≓"]}}}}}}}}}}},"q":{">>":["’"]},"r":{"-":{">>":["↠"]},"b":{"r":{"a":{"c":{"k":{"e":{"t":{">>":["〛"]}}}}}}}},"t":{"i":{"m":{"e":{"s":{">>":["⋊"]}}}}},"~":{">>":["↝","⇝","⟿"]}},"s":{"b":{"s":{">>":["﹨"]}},"e":{"a":{"r":{"r":{"o":{"w":{">>":["↘"]}}}}},"t":{"m":{"i":{"n":{"u":{"s":{">>":["∖"]}}}}}}},"h":{"a":{"r":{"p":{">>":["♯"]}}},"o":{"r":{"t":{"m":{"i":{"d":{">>":["∣"]}}},"p":{"a":{"r":{"a":{"l":{"l":{"e":{"l":{">>":["∥"]}}}}}}}}}}}},"i":{"g":{"m":{"a":{">>":["σ"]}}},"m":{">>":["∼"],"e":{"q":{">>":["≃"]}}}},"m":{"a":{"l":{"l":{"a":{"m":{"a":{"l":{"g":{">>":["∐"]}}}}},"s":{"e":{"t":{"m":{"i":{"n":{"u":{"s":{">>":["∖"]}}}}}}},"m":{"i":{"l":{"e":{">>":["⌣"]}}}}}}}},"i":{"l":{"e":{">>":["⌣"]}}}},"p":{"a":{"d":{"e":{"s":{"u":{"i":{"t":{">>":["♠"]}}}}}}},"h":{"e":{"r":{"i":{"c":{"a":{"l":{"a":{"n":{"g":{"l":{"e":{">>":["∢"]}}}}}}}}}}}}},"q":{".":{">>":["▣"]},">>":["■","□","◼","◻","◾","◽","▣","▢","▤","▥","▦","▧","▨","▩","◧","◨","◩","◪","◫","◰","◱","◲","◳"],"b":{">>":["■","◼","◾"]},"c":{"a":{"p":{">>":["⊓"]}},"u":{"p":{">>":["⊔"]}}},"o":{">>":["▢"]},"r":{"t":{">>":["√"]}},"s":{"u":{"b":{"s":{"e":{"t":{">>":["⊏"],"e":{"q":{">>":["⊑"]}}}}}},"p":{"s":{"e":{"t":{">>":["⊐"],"e":{"q":{">>":["⊒"]}}}}}}}},"u":{"a":{"r":{"e":{">>":["□"]}}},"b":{"=":{">>":["⊑"],"n":{">>":["⋢"]}},">>":["⊏"]},"i":{"g":{"a":{"r":{"r":{"o":{"w":{"r":{"i":{"g":{"h":{"t":{">>":["⇝"]}}}}}}}}}}}},"p":{"=":{">>":["⊒"],"n":{">>":["⋣"]}},">>":["⊐"]}},"w":{">>":["□","◻","◽"]}},"s":{">>":["ß"]},"t":{"1":{"2":{">>":["✹"]}},"4":{">>":["✦","✧"]},"6":{">>":["✶"]},"8":{">>":["✴"]},">>":["⋆","✦","✧","✶","✴","✹","★","☆","✪","✫","✯","✰","✵","✷","✸"],"a":{"r":{">>":["⋆"]}},"r":{"a":{"i":{"g":{"h":{"t":{"p":{"h":{"i":{">>":["φ"]}}}}}}}}}},"u":{"b":{"=":{">>":["⊆"],"n":{">>":["⊈"]}},">>":["⊂"],"n":{">>":["⊄"]},"s":{"e":{"t":{">>":["⊂"],"e":{"q":{">>":["⊆"],"q":{">>":["⊆"]}}},"n":{"e":{"q":{">>":["⊊"],"q":{">>":["⊊"]}}}}}}}},"c":{"c":{">>":["≻"],"a":{"p":{"p":{"r":{"o":{"x":{">>":["≿"]}}}}}},"c":{"u":{"r":{"l":{"y":{"e":{"q":{">>":["≽"]}}}}}}},"e":{"q":{">>":["≽"]}},"n":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["⋩"]}}}}}},"s":{"i":{"m":{">>":["⋩"]}}}},"s":{"i":{"m":{">>":["≿"]}}}}},"m":{">>":["∑"]},"p":{"=":{">>":["⊇"],"n":{">>":["⊉"]}},">>":["⊃"],"n":{">>":["⊅"]},"s":{"e":{"t":{">>":["⊃"],"e":{"q":{">>":["⊇"],"q":{">>":["⊇"]}}},"n":{"e":{"q":{">>":["⊋"],"q":{">>":["⊋"]}}}}}}}},"r":{"d":{"3":{">>":["∛"]},"4":{">>":["∜"]},">>":["√"]}}},"w":{"a":{"r":{"r":{"o":{"w":{">>":["↙"]}}}}}}},"t":{"=":{">>":["≜"]},">>":["◂","◃","◄","◅","▸","▹","►","▻","▴","▵","▾","▿","◢","◿","◣","◺","◤","◸","◥","◹"],"a":{"u":{">>":["τ"]}},"b":{">>":["◂","▸","▴","▾","◄","►","◢","◣","◤","◥"]},"e":{"x":{"t":{"b":{"a":{"h":{"t":{">>":["฿"]}}},"i":{"g":{"c":{"i":{"r":{"c":{"l":{"e":{">>":["⃝"]}}}}}}}}},"c":{"i":{"r":{"c":{"l":{"e":{"d":{"P":{">>":["℗"]}}}}}}},"o":{"l":{"o":{"n":{"m":{"o":{"n":{"e":{"t":{"a":{"r":{"y":{">>":["₡"]}}}}}}}}}}}}},"d":{"i":{"e":{"d":{">>":["✝"]}},"s":{"c":{"o":{"u":{"n":{"t":{">>":["⁒"]}}}}}}}},"e":{"s":{"t":{"i":{"m":{"a":{"t":{"e":{"d":{">>":["℮"]}}}}}}}}},"f":{"r":{"a":{"c":{"t":{"i":{"o":{"n":{"s":{"o":{"l":{"i":{"d":{"u":{"s":{">>":["⁄"]}}}}}}}}}}}}}}},"i":{"n":{"t":{"e":{"r":{"r":{"o":{"b":{"a":{"n":{"g":{">>":["‽"]}}}}}}}}}}},"l":{"i":{"r":{"a":{">>":["₤"]}}},"q":{"u":{"i":{"l":{"l":{">>":["⁅"]}}}}}},"m":{"u":{">>":["µ"],"s":{"i":{"c":{"a":{"l":{"n":{"o":{"t":{"e":{">>":["♪"]}}}}}}}}}}},"n":{"a":{"i":{"r":{"a":{">>":["₦"]}}}},"u":{"m":{"e":{"r":{"o":{">>":["№"]}}}}}},"o":{"p":{"e":{"n":{"b":{"u":{"l":{"l":{"e":{"t":{">>":["◦"]}}}}}}}}}},"p":{"e":{"r":{"t":{"e":{"n":{"t":{"h":{"o":{"u":{"s":{"a":{"n":{"d":{">>":["‱"]}}}}}}}}}}}},"s":{"o":{">>":["₱"]}}}},"r":{"e":{"c":{"i":{"p":{"e":{">>":["℞"]}}}},"f":{"e":{"r":{"e":{"n":{"c":{"e":{"m":{"a":{"r":{"k":{">>":["※"]}}}}}}}}}}}},"q":{"u":{"i":{"l":{"l":{">>":["⁆"]}}}}}},"w":{"o":{"n":{">>":["₩"]}}}}}},"h":{">>":["þ"],"e":{"r":{"e":{"f":{"o":{"r":{"e":{">>":["∴"]}}}}}},"t":{"a":{">>":["θ"]}}},"i":{"c":{"k":{"a":{"p":{"p":{"r":{"o":{"x":{">>":["≈"]}}}}}},"s":{"i":{"m":{">>":["∼"]}}}}}}},"i":{"e":{">>":["⁀"]},"m":{"e":{"s":{">>":["×"]}}}},"o":{">>":["→"],"p":{">>":["⊤"]}},"r":{"i":{"a":{"n":{"g":{"l":{"e":{">>":["▵"],"d":{"o":{"w":{"n":{">>":["▿"]}}}},"l":{"e":{"f":{"t":{">>":["◃"],"e":{"q":{">>":["⊴"]}}}}}},"q":{">>":["≜"]},"r":{"i":{"g":{"h":{"t":{">>":["▹"],"e":{"q":{">>":["⊵"]}}}}}}}}}}}}}},"w":{">>":["◃","▹","▵","▿","◅","▻","◿","◺","◸","◹"],"o":{"h":{"e":{"a":{"d":{"l":{"e":{"f":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↞"]}}}}}}}}},"r":{"i":{"g":{"h":{"t":{"a":{"r":{"r":{"o":{"w":{">>":["↠"]}}}}}}}}}}}}}}}}},"u":{"+":{">>":["⊎"]},"-":{"2":{">>":["⇈"]},">>":["↑"],"d":{"-":{">>":["⇅"]}},"|":{">>":["↥"]}},".":{">>":["⊍"]},"=":{"=":{">>":["⟰"]},">>":["⇑"]},">>":["↑","⇑","⤊","⟰","⇈","⇅","↥","⇧","↟","↿","↾","⇡","⇞","↰","↱","➦","⇪","⇫","⇬","⇭","⇮","⇯","̆"],"A":{">>":["Ă"]},"E":{">>":["Ĕ"]},"G":{">>":["Ğ"]},"I":{">>":["Ĭ"]},"O":{">>":["Ŏ"]},"U":{">>":["Ŭ"]},"a":{">>":["ă"]},"d":{"-":{">>":["↕"],"|":{">>":["↨"]}},"=":{">>":["⇕"]},">>":["↕","⇕","↨","⇳"]},"e":{">>":["ĕ"]},"g":{">>":["ğ"]},"i":{">>":["ĭ"]},"l":{"-":{">>":["↖"]},"=":{">>":["⇖"]},">>":["↖","⇖","⇱","↸"],"c":{"o":{"r":{"n":{"e":{"r":{">>":["⌜"]}}}}}}},"n":{">>":["∪"],"d":{"e":{"r":{"t":{"i":{"e":{">>":["‿"]}}}}}},"i":{"o":{"n":{">>":["∪","⋃","∨","⋁","⋎","⨈","⊔","⨆","⋓","∐","⨿","⊽","⊻","⊍","⨃","⊎","⨄","⊌","∑","⅀"]}}}},"o":{">>":["ŏ"]},"p":{"a":{"r":{"r":{"o":{"w":{">>":["↑"]}}}}},"d":{"o":{"w":{"n":{"a":{"r":{"r":{"o":{"w":{">>":["↕"]}}}}}}}}},"l":{"e":{"f":{"t":{"h":{"a":{"r":{"p":{"o":{"o":{"n":{">>":["↿"]}}}}}}}}}},"u":{"s":{">>":["⊎"]}}},"r":{"i":{"g":{"h":{"t":{"h":{"a":{"r":{"p":{"o":{"o":{"n":{">>":["↾"]}}}}}}}}}}}},"s":{"i":{"l":{"o":{"n":{">>":["υ"]}}}}},"u":{"p":{"a":{"r":{"r":{"o":{"w":{"s":{">>":["⇈"]}}}}}}}}},"r":{"-":{">>":["↗"]},"=":{">>":["⇗"]},">>":["↗","⇗","➶","➹","➚"],"c":{"o":{"r":{"n":{"e":{"r":{">>":["⌝"]}}}}}}},"u":{"-":{">>":["↟"]},">>":["ŭ"]},"{":{"A":{"}":{">>":["Ă"]}},"E":{"}":{">>":["Ĕ"]}},"G":{"}":{">>":["Ğ"]}},"I":{"}":{">>":["Ĭ"]}},"O":{"}":{">>":["Ŏ"]}},"U":{"}":{">>":["Ŭ"]}},"\\":{"i":{"}":{">>":["ĭ"]}}},"a":{"}":{">>":["ă"]}},"e":{"}":{">>":["ĕ"]}},"g":{"}":{">>":["ğ"]}},"i":{"}":{">>":["ĭ"]}},"o":{"}":{">>":["ŏ"]}},"u":{"}":{">>":["ŭ"]}},"}":{">>":["˘"]}}},"v":{">>":["̌"],"A":{">>":["Ǎ"]},"C":{">>":["Č"]},"D":{">>":["Ď"],"a":{"s":{"h":{">>":["⊨"]}}}},"E":{">>":["Ě"]},"G":{">>":["Ǧ"]},"H":{">>":["Ȟ"]},"I":{">>":["Ǐ"]},"K":{">>":["Ǩ"]},"N":{">>":["Ň"]},"O":{">>":["Ǒ"]},"R":{">>":["Ř"]},"S":{">>":["Š"]},"T":{">>":["Ť"]},"U":{">>":["Ǔ"]},"Z":{">>":["Ž"]},"a":{">>":["ǎ"],"r":{"k":{"a":{"p":{"p":{"a":{">>":["ϰ"]}}}}},"p":{"h":{"i":{">>":["ϕ"]}},"i":{">>":["ϖ"]},"r":{"i":{"m":{"e":{">>":["′"]}}},"o":{"p":{"t":{"o":{">>":["∝"]}}}}}},"r":{"h":{"o":{">>":["ϱ"]}}},"s":{"i":{"g":{"m":{"a":{">>":["ς"]}}}}},"t":{"h":{"e":{"t":{"a":{">>":["ϑ"]}}}},"r":{"i":{"a":{"n":{"g":{"l":{"e":{"l":{"e":{"f":{"t":{">>":["⊲"]}}}},"r":{"i":{"g":{"h":{"t":{">>":["⊳"]}}}}}}}}}}}}}}},"c":{">>":["č"]},"d":{">>":["ď"],"a":{"s":{"h":{">>":["⊢"]}}},"o":{"t":{"s":{">>":["⋮"]}}}},"e":{">>":["ě"],"e":{">>":["∨"],"b":{"a":{"r":{">>":["⊻"]}}}},"r":{"t":{">>":["|"]}}},"g":{">>":["ǧ"]},"h":{">>":["ȟ"]},"i":{">>":["ǐ"]},"j":{">>":["ǰ"]},"k":{">>":["ǩ"]},"n":{">>":["ň"]},"o":{">>":["ǒ"]},"r":{">>":["ř"]},"s":{">>":["š"]},"t":{">>":["ť"]},"u":{">>":["ǔ"]},"z":{">>":["ž"]},"{":{"A":{"}":{">>":["Ǎ"]}},"C":{"}":{">>":["Č"]}},"D":{"}":{">>":["Ď"]}},"E":{"}":{">>":["Ě"]}},"G":{"}":{">>":["Ǧ"]}},"H":{"}":{">>":["Ȟ"]}},"I":{"}":{">>":["Ǐ"]}},"K":{"}":{">>":["Ǩ"]}},"L":{"}":{">>":["Ľ"]}},"N":{"}":{">>":["Ň"]}},"O":{"}":{">>":["Ǒ"]}},"R":{"}":{">>":["Ř"]}},"S":{"}":{">>":["Š"]}},"T":{"}":{">>":["Ť"]}},"U":{"}":{">>":["Ǔ"]}},"Z":{"}":{">>":["Ž"]}},"\\":{"i":{"}":{">>":["ǐ"]}},"j":{"}":{">>":["ǰ"]}}},"a":{"}":{">>":["ǎ"]}},"c":{"}":{">>":["č"]}},"d":{"}":{">>":["ď"]}},"e":{"}":{">>":["ě"]}},"g":{"}":{">>":["ǧ"]}},"h":{"}":{">>":["ȟ"]}},"i":{"}":{">>":["ǐ"]}},"j":{"}":{">>":["ǰ"]}},"k":{"}":{">>":["ǩ"]}},"l":{"}":{">>":["ľ"]}},"n":{"}":{">>":["ň"]}},"o":{"}":{">>":["ǒ"]}},"r":{"}":{">>":["ř"]}},"s":{"}":{">>":["š"]}},"t":{"}":{">>":["ť"]}},"u":{"}":{">>":["ǔ"]}},"z":{"}":{">>":["ž"]}},"}":{">>":["ˇ"]}}},"w":{"e":{"d":{"g":{"e":{">>":["∧"]}}}},"p":{">>":["℘"]},"r":{">>":["≀"]}},"x":{">>":["×"],"i":{">>":["ξ"]}},"y":{"e":{"n":{">>":["¥"]}}},"z":{":":{">>":["⦂"]},";":{">>":["⨟","⨾"]},"e":{"t":{"a":{">>":["ζ"]}}}},"{":{"{":{">>":["⦃"]}},"|":{")":{">>":["⦈"]},"-":{">>":["⊢"],"n":{">>":["⊬"]}},"=":{">>":["⊨"],"n":{">>":["⊭"]}},">":{">>":["⦊"]},">>":["∣"],"n":{">>":["∤"]},"|":{"-":{">>":["⊩"],"n":{">>":["⊮"]}},"=":{">>":["⊫"],"n":{">>":["⊯"]}},">>":["∥"],"n":{">>":["∦"]},"|":{"-":{">>":["⊪"]}}}},"}":{"}":{">>":["⦄"]}},"~":{"-":{">>":["≃"],"n":{">>":["≄"]}},"=":{">>":["≅"],"n":{">>":["≇"]}},">>":["∼","~","̃"],"A":{">>":["Ã"]},"E":{">>":["Ẽ"]},"I":{">>":["Ĩ"]},"N":{">>":["Ñ"]},"O":{">>":["Õ"]},"U":{">>":["Ũ"]},"V":{">>":["Ṽ"]},"Y":{">>":["Ỹ"]},"a":{">>":["ã"]},"e":{">>":["ẽ"]},"i":{">>":["ĩ"]},"n":{">>":["≁","ñ"]},"o":{">>":["õ"]},"u":{">>":["ũ"]},"v":{">>":["ṽ"]},"y":{">>":["ỹ"]},"{":{"A":{"}":{">>":["Ã"]}},"I":{"}":{">>":["Ĩ"]}},"N":{"}":{">>":["Ñ"]}},"O":{"}":{">>":["Õ"]}},"U":{"}":{">>":["Ũ"]}},"\\":{"i":{"}":{">>":["ĩ"]}}},"a":{"}":{">>":["ã"]}},"n":{"}":{">>":["ñ"]}},"o":{"}":{">>":["õ"]}},"u":{"}":{">>":["ũ"]}},"}":{">>":["˜"]}},"~":{"-":{">>":["≊"]},">>":["≈"],"n":{">>":["≉"]},"~":{">>":["≋"]}}}} \ No newline at end of file diff --git a/asset/query.js b/asset/query.js index 103e0090..ba9bcd1c 100644 --- a/asset/query.js +++ b/asset/query.js @@ -1 +1 @@ -module.exports.default = {"10":["newline","par"],"10003":["checkmark"],"10013":["textdied"],"10016":["maltese"],"10018":["asterisk"],"10019":["asterisk"],"10020":["asterisk"],"10021":["asterisk"],"10022":["st","st4","blacklozenge"],"10023":["st","st4","lozenge"],"10026":["st"],"10027":["st"],"10031":["st"],"10032":["st"],"10033":["asterisk"],"10034":["asterisk"],"10035":["asterisk"],"10036":["st","st8"],"10037":["st"],"10038":["st","st6"],"10039":["st"],"10040":["st"],"10041":["st","st12"],"10042":["asterisk"],"10043":["asterisk"],"10044":["asterisk"],"10045":["asterisk"],"10051":["asterisk"],"10057":["asterisk"],"10058":["asterisk"],"10059":["asterisk"],"1008":["varkappa"],"1009":["varrho"],"10090":["("],"10091":[")"],"10092":["("],"10093":[")"],"10094":["("],"10095":[")"],"10096":["("],"10097":[")"],"10098":["("],"10099":[")"],"10100":["("],"10101":[")"],"10132":["r"],"10136":["dr"],"10137":["r"],"10138":["ur"],"10139":["r"],"10140":["r"],"10141":["r"],"10142":["r"],"10143":["r"],"10144":["r"],"10145":["r"],"10146":["r"],"10147":["r"],"10148":["r"],"10149":["d"],"10150":["u"],"10151":["r"],"10152":["r"],"10153":["r"],"10154":["r"],"10155":["r"],"10156":["r"],"10157":["r"],"10158":["r"],"10159":["r"],"10161":["r"],"10162":["r"],"10163":["r"],"10164":["dr"],"10165":["r"],"10166":["ur"],"10167":["dr"],"10168":["r"],"10169":["ur"],"10170":["r"],"10171":["r"],"10172":["r"],"10173":["r"],"10174":["r"],"10181":["(","(b","lbag"],"10182":[")",")b","rbag"],"10197":["join"],"10198":["join"],"10199":["join"],"10214":["(","[["],"10215":[")","]]"],"10216":["(","<"],"10217":[")",">"],"10218":["(","<<"],"10219":[")",">>"],"10222":["("],"10223":[")"],"10224":["u","u=="],"10225":["d","d=="],"10226":["l"],"10227":["r"],"10228":["r"],"10229":["l","l--","<--"],"10230":["r","r--","-->"],"10231":["lr","lr--","<-->"],"10232":["l"],"10233":["r"],"10234":["lr"],"10235":["l"],"10236":["r"],"10237":["l"],"10238":["r"],"10239":["r","r~"],"10502":["l"],"10503":["r"],"10506":["u"],"10507":["d"],"10626":[":","z:"],"10627":["(","{{"],"10628":[")","}}"],"10629":["(","(("],"10630":[")","))"],"10631":["(","(|"],"10632":[")","|)"],"10633":["(","<|"],"10634":[")","|>"],"10647":["("],"10648":[")"],"10748":["("],"10749":[")"],"10752":["O."],"10753":["O+"],"10754":["Ox"],"10755":["union","U."],"10756":["union","U+"],"10757":["intersection","Glb"],"10758":["union","Lub"],"10759":["intersection"],"10760":["union"],"10761":["intersection"],"10781":["join"],"10783":[";","z;"],"10814":[";","z;"],"10815":["union"],"11077":["l"],"11078":["r"],"11816":["("],"11817":[")"],"11826":[","],"11828":[","],"11829":[";"],"11841":[","],"11849":[","],"119808":["BA"],"119809":["BB"],"119810":["BC"],"119811":["BD"],"119812":["BE"],"119813":["BF"],"119814":["BG"],"119815":["BH"],"119816":["BI"],"119817":["BJ"],"119818":["BK"],"119819":["BL"],"119820":["BM"],"119821":["BN"],"119822":["BO"],"119823":["BP"],"119824":["BQ"],"119825":["BR"],"119826":["BS"],"119827":["BT"],"119828":["BU"],"119829":["BV"],"119830":["BW"],"119831":["BX"],"119832":["BY"],"119833":["BZ"],"119834":["Ba"],"119835":["Bb"],"119836":["Bc"],"119837":["Bd"],"119838":["Be"],"119839":["Bf"],"119840":["Bg"],"119841":["Bh"],"119842":["Bi"],"119843":["Bj"],"119844":["Bk"],"119845":["Bl"],"119846":["Bm"],"119847":["Bn"],"119848":["Bo"],"119849":["Bp"],"119850":["Bq"],"119851":["Br"],"119852":["Bs"],"119853":["Bt"],"119854":["Bu"],"119855":["Bv"],"119856":["Bw"],"119857":["Bx"],"119858":["By"],"119859":["Bz"],"120120":["bA"],"120121":["bB"],"120123":["bD"],"120124":["bE"],"120125":["bF"],"120126":["bG"],"120128":["bI"],"120129":["bJ"],"120130":["bK"],"120131":["bL"],"120132":["bM"],"120134":["bO"],"120138":["bS"],"120139":["bT"],"120140":["bU"],"120141":["bV"],"120142":["bW"],"120143":["bX"],"120144":["bY"],"120146":["ba"],"120147":["bb"],"120148":["bc"],"120149":["bd"],"120150":["be"],"120151":["bf"],"120152":["bg"],"120153":["bh"],"120154":["bi"],"120155":["bj"],"120156":["bk"],"120157":["bl"],"120158":["bm"],"120159":["bn"],"120160":["bo"],"120161":["bp"],"120162":["bq"],"120163":["br"],"120164":["bs"],"120165":["bt"],"120166":["bu"],"120167":["bv"],"120168":["bw"],"120169":["bx"],"120170":["by"],"120171":["bz"],"120488":["BGA"],"120489":["BGB"],"120490":["BGG"],"120491":["BGD"],"120492":["BGE"],"120493":["BGZ"],"120494":["BGH"],"120495":["BGTH"],"120496":["BGI"],"120497":["BGK"],"120498":["BGL"],"120499":["BGM"],"120500":["BGN"],"120501":["BGX"],"120502":["BOmicron"],"120503":["BPi"],"120504":["BGR"],"120506":["BGS"],"120507":["BGT"],"120508":["BGU"],"120509":["BGF"],"120510":["BGC"],"120511":["BGP"],"120512":["BGO"],"120514":["BGa"],"120515":["BGb"],"120516":["BGg"],"120517":["BGd"],"120518":["BGe"],"120519":["BGz"],"120520":["BGh"],"120521":["BGth"],"120522":["BGi"],"120523":["BGk"],"120524":["BGl"],"120525":["BGm"],"120526":["BGn"],"120527":["BGx"],"120528":["Bomicron"],"120529":["Bpi"],"120530":["BGr"],"120532":["BGs"],"120533":["BGt"],"120534":["BGu"],"120535":["BGf"],"120536":["BGc"],"120537":["BGp"],"120538":["BGo"],"120782":["B0"],"120783":["B1"],"120784":["B2"],"120785":["B3"],"120786":["B4"],"120787":["B5"],"120788":["B6"],"120789":["B7"],"120790":["B8"],"120791":["B9"],"120792":["b0"],"120793":["b1"],"120794":["b2"],"120795":["b3"],"120796":["b4"],"120797":["b5"],"120798":["b6"],"120799":["b7"],"120800":["b8"],"120801":["b9"],"12289":[","],"12296":["("],"12297":[")"],"12298":["(","ldata"],"12299":[")","rdata"],"123":["(","lbrace"],"12300":["("],"12301":[")"],"12302":["("],"12303":[")"],"12304":["("],"12305":[")"],"12308":["("],"12309":[")"],"12310":["("],"12311":[")"],"12314":["(","llbracket"],"12315":[")","rrbracket"],"124":["vert"],"125":[")","rbrace"],"1488":["aleph"],"1489":["beth"],"1490":["gimel"],"1491":["daleth"],"1548":[","],"161":["!`"],"163":["pounds"],"164":["currency"],"165":["yen"],"167":["S"],"168":["\"{}"],"169":["copyright"],"170":["^a","ordfeminine"],"171":["flqq","\"<"],"172":["neg","lnot"],"173":["-"],"174":["circledR","registered"],"175":["={}"],"177":["pm","pm"],"178":["^2","^2"],"179":["^3","^3"],"180":["'{}"],"181":["micro","textmu"],"182":["P"],"183":["cdot","cdot","centerdot"],"184":["c{}"],"185":["^1","^1"],"186":["^o","^o","ordmasculine"],"187":["frqq","\">"],"188":["frac","frac14"],"189":["frac","frac12"],"190":["frac","frac34"],"191":["?`"],"192":["`{A}","`A"],"193":["'{A}","'A"],"194":["^{A}","^A"],"195":["~{A}","~A"],"196":["\"{A}","\"A"],"197":["AA"],"198":["AE"],"199":["c{C}","cC"],"200":["`{E}","`E"],"201":["'{E}","'E"],"202":["^{E}","^E"],"203":["\"{E}","\"E"],"204":["`{I}","`I"],"205":["'{I}","'I"],"206":["^{I}","^I"],"207":["\"{I}","\"I"],"208":["DH"],"209":["~{N}","~N"],"210":["`{O}","`O"],"211":["'{O}","'O"],"212":["^{O}","^O"],"213":["~{O}","~O"],"214":["\"{O}","\"O"],"215":["x","times","times"],"216":["O"],"217":["`{U}","`U"],"218":["'{U}","'U"],"219":["^{U}","^U"],"220":["\"{U}","\"U"],"221":["'{Y}","'Y"],"222":["TH"],"223":["ss"],"224":["`{a}","`a"],"225":["'{a}","'a"],"226":["^{a}","^a"],"227":["~{a}","~a"],"228":["\"{a}","\"a"],"229":["aa"],"230":["ae"],"231":["c{c}","cc"],"232":["`{e}","`e"],"233":["'{e}","'e"],"234":["^{e}","^e"],"235":["\"{e}","\"e"],"236":["`{\\i}","`i"],"237":["'{\\i}","'i"],"238":["^{\\i}","^i"],"239":["\"{\\i}","\"i"],"240":["dh"],"241":["~{n}","~n"],"242":["`{o}","`o"],"243":["'{o}","'o"],"244":["^{o}","^o"],"245":["~{o}","~o"],"246":["\"{o}","\"o"],"247":["div","div"],"248":["o"],"249":["`{u}","`u"],"250":["'{u}","'u"],"251":["^{u}","^u"],"252":["\"{u}","\"u"],"253":["'{y}","'y"],"254":["th"],"255":["\"{y}","\"y"],"256":["={A}","=A"],"257":["={a}","=a"],"258":["u{A}","uA"],"259":["u{a}","ua"],"260":["k{A}"],"261":["k{a}"],"262":["'{C}","'C"],"263":["'{c}","'c"],"264":["^{C}","^C"],"265":["^{c}","^c"],"266":[".{C}",".C"],"267":[".{c}",".c"],"268":["v{C}","vC"],"269":["v{c}","vc"],"270":["v{D}","vD"],"271":["v{d}","vd"],"274":["={E}","=E"],"275":["={e}","=e"],"276":["u{E}","uE"],"277":["u{e}","ue"],"278":[".{E}",".E"],"279":["e{e}","ee",".e"],"280":["k{E}"],"281":["k{e}"],"282":["v{E}","vE"],"283":["v{e}","ve"],"284":["^{G}","^G"],"285":["^{g}","^g"],"286":["u{G}","uG"],"287":["u{g}","ug"],"288":[".{G}",".G"],"289":[".{g}",".g"],"290":["c{G}","cG"],"291":["c{g}","cg"],"292":["^{H}","^H"],"293":["^{h}","^h"],"296":["~{I}","~I"],"297":["~{\\i}","~i"],"298":["={I}","=I"],"299":["={\\i}","=i"],"300":["u{I}","uI"],"301":["u{\\i}","ui","u{i}"],"302":["k{I}"],"303":["k{i}"],"304":[".{I}",".I"],"305":["i","imath"],"308":["^{J}","^J"],"309":["^{\\j}","^j"],"310":["c{K}","cK"],"311":["c{k}","ck"],"313":["'{L}","'L"],"314":["'{l}","'l"],"315":["c{L}","cL"],"316":["c{l}","cl"],"317":["v{L}"],"318":["v{l}"],"32":[" "],"321":["L"],"322":["l"],"323":["'{N}","'N"],"324":["'{n}","'n"],"325":["c{N}","cN"],"326":["c{n}","cn"],"327":["v{N}","vN"],"328":["v{n}","vn"],"332":["={O}","=O"],"333":["={o}","=o"],"334":["u{O}","uO"],"335":["u{o}","uo"],"336":["H{O}","HO"],"337":["U{o}","Uo","H{o}"],"338":["OE"],"339":["oe"],"340":["'{R}","'R"],"341":["'{r}","'r"],"342":["c{R}","cR"],"343":["c{r}","cr"],"344":["v{R}","vR"],"345":["v{r}","vr"],"346":["'{S}","'S"],"347":["'{s}","'s"],"348":["^{S}","^S"],"349":["^{s}","^s"],"350":["c{S}","cS"],"351":["c{s}","cs"],"352":["v{S}","vS"],"353":["v{s}","vs"],"354":["c{T}","cT"],"355":["c{t}","ct"],"356":["v{T}","vT"],"357":["v{t}","vt"],"360":["~{U}","~U"],"361":["~{u}","~u"],"362":["={U}","=U"],"363":["={u}","=u"],"364":["u{U}","uU"],"3647":["textbaht"],"365":["u{u}","uu"],"368":["H{U}","HU"],"369":["H{u}","Hu"],"370":["k{U}"],"371":["k{u}"],"372":["^{W}","^W"],"373":["^{w}","^w"],"374":["^{Y}","^Y"],"375":["^{y}","^y"],"376":["\"{Y}","\"Y"],"377":["'{Z}","'Z"],"378":["'{z}","'z"],"379":[".{Z}",".Z"],"380":[".{z}",".z"],"381":["v{Z}","vZ"],"382":["v{z}","vz"],"40":["("],"41":[")"],"411":["lambdabar"],"42742":[";"],"42889":[":"],"461":["v{A}","vA"],"462":["v{a}","va"],"463":["v{I}","vI"],"464":["v{\\i}","vi","v{i}"],"465":["v{O}","vO"],"466":["v{o}","vo"],"467":["v{U}","vU"],"468":["v{u}","vu"],"482":["={\\AE}","=\\AE"],"483":["={\\ae}","=\\ae"],"486":["v{G}","vG"],"487":["v{g}","vg"],"488":["v{K}","vK"],"489":["v{k}","vk"],"490":["k{O}"],"491":["k{o}"],"496":["v{\\j}","vj","v{j}"],"4964":[";"],"4965":[":"],"4966":[":"],"500":["'{G}","'G"],"501":["'{g}","'g"],"504":["`{N}","`N"],"505":["`{n}","`n"],"508":["'{\\AE}","'\\AE"],"509":["'{\\ae}","'\\ae"],"510":["'{\\O}","'\\O"],"511":["'{\\o}","'\\o"],"542":["v{H}","vH"],"543":["v{h}","vh"],"550":[".{A}",".A"],"551":[".{a}",".a"],"552":["c{E}","cE"],"553":["c{e}","ce"],"558":[".{O}",".O"],"559":[".{o}",".o"],"562":["={Y}","=Y"],"563":["={y}","=y"],"58":["colon"],"60":["leq","<"],"61":["eq"],"62":["geq",">"],"65040":[","],"65041":[","],"65043":[":"],"65044":[";"],"65077":["("],"65078":[")"],"65079":["("],"65080":[")"],"65081":["("],"65082":[")"],"65083":["("],"65084":[")"],"65085":["("],"65086":[")"],"65087":["("],"65088":[")"],"65089":["("],"65090":[")"],"65091":["("],"65092":[")"],"65104":[","],"65105":[","],"65108":[";"],"65109":[":"],"65113":["("],"65114":[")"],"65115":["("],"65116":[")"],"65117":["("],"65118":[")"],"65128":["sbs"],"65281":["!"],"65283":["#"],"65285":["%"],"65286":["&"],"65287":["'"],"65288":["("],"65289":[")"],"65290":["asterisk","*"],"65291":["+"],"65292":[","],"65294":["."],"65295":["/"],"65296":["F0"],"65297":["F1"],"65298":["F2"],"65299":["F3"],"65300":["F4"],"65301":["F5"],"65302":["F6"],"65303":["F7"],"65304":["F8"],"65305":["F9"],"65306":[":"],"65307":[";"],"65308":["leq","<"],"65309":["eq","="],"65310":["geq",">"],"65311":["?"],"65312":["@"],"65313":["FA"],"65314":["FB"],"65315":["FC"],"65316":["FD"],"65317":["FE"],"65318":["FF"],"65319":["FG"],"65320":["FH"],"65321":["FI"],"65322":["FJ"],"65323":["FK"],"65324":["FL"],"65325":["FM"],"65326":["FN"],"65327":["FO"],"65328":["FP"],"65329":["FQ"],"65330":["FR"],"65331":["FS"],"65332":["FT"],"65333":["FU"],"65334":["FV"],"65335":["FW"],"65336":["FX"],"65337":["FY"],"65338":["FZ"],"65339":["("],"65340":["/"],"65341":[")"],"65343":["__"],"65344":["`"],"65345":["Fa"],"65346":["Fb"],"65347":["Fc"],"65348":["Fd"],"65349":["Fe"],"65350":["Ff"],"65351":["Fg"],"65352":["Fh"],"65353":["Fi"],"65354":["Fj"],"65355":["Fk"],"65356":["Fl"],"65357":["Fm"],"65358":["Fn"],"65359":["Fo"],"65360":["Fp"],"65361":["Fq"],"65362":["Fr"],"65363":["Fs"],"65364":["Ft"],"65365":["Fu"],"65366":["Fv"],"65367":["Fw"],"65368":["Fx"],"65369":["Fy"],"65370":["Fz"],"65371":["("],"65373":[")"],"65374":["~"],"65375":["(("],"65376":["))"],"65378":["("],"65379":[")"],"65380":[","],"688":["^h"],"690":["^j"],"691":["^r"],"695":["^w"],"696":["^y"],"699":[","],"711":["v{}"],"720":[":"],"728":["u{}"],"729":[".{}"],"732":["~{}"],"733":["H{}"],"736":["^\\gamma"],"737":["^l"],"738":["^s"],"739":["^x"],"760":[":"],"768":["`"],"7682":[".B"],"7683":[".b"],"7684":["d{B}"],"7685":["d{b}"],"769":["'"],"7690":[".D"],"7691":[".d"],"7692":["d{D}"],"7693":["d{d}"],"7696":["c{D}"],"7697":["c{d}"],"770":["^"],"771":["~"],"7710":[".F"],"7711":[".f"],"7712":["=G"],"7713":["=g"],"7714":[".H"],"7715":[".h"],"7716":["d{H}"],"7717":["d{h}"],"7718":["\"H"],"7719":["\"h"],"772":["="],"7720":["c{H}"],"7721":["c{h}"],"7728":["'K"],"7729":["'k"],"7730":["d{K}"],"7731":["d{k}"],"7734":["d{L}"],"7735":["d{l}"],"774":["u"],"7742":["'M"],"7743":["'m"],"7744":[".M"],"7745":[".m"],"7746":["d{M}"],"7747":["d{m}"],"7748":[".N"],"7749":[".n"],"775":["."],"7750":["d{N}"],"7751":["d{n}"],"776":["\""],"7764":["'P"],"7765":["'p"],"7766":[".P"],"7767":[".p"],"7768":[".R"],"7769":[".r"],"7770":["d{R}"],"7771":["d{r}"],"7776":[".S"],"7777":[".s"],"7778":["d{S}"],"7779":["d{s}"],"7786":[".T"],"7787":[".t"],"7788":["d{T}"],"7789":["d{t}"],"779":["H"],"780":["v"],"7804":["~V"],"7805":["~v"],"7806":["d{V}"],"7807":["d{v}"],"7808":["`W"],"7809":["`w"],"7810":["'W"],"7811":["'w"],"7812":["\"W"],"7813":["\"w"],"7814":[".W"],"7815":[".w"],"7816":["d{W}"],"7817":["d{w}"],"7818":[".X"],"7819":[".x"],"7820":["\"X"],"7821":["\"x"],"7822":[".Y"],"7823":[".y"],"7824":["^Z"],"7825":["^z"],"7826":["d{Z}"],"7827":["d{z}"],"7831":["\"t"],"7840":["d{A}"],"7841":["d{a}"],"7864":["d{E}"],"7865":["d{e}"],"7868":["~E"],"7869":["~e"],"7882":["d{I}"],"7883":["d{i}"],"7884":["d{O}"],"7885":["d{o}"],"7908":["d{U}"],"7909":["d{u}"],"7922":["`Y"],"7923":["`y"],"7924":["d{Y}"],"7925":["d{y}"],"7928":["~Y"],"7929":["~y"],"803":["d"],"807":["c"],"817":["b"],"8193":["quad"],"8196":[";"],"8197":[":"],"8204":["/"],"8211":["en","--"],"8212":["em","---"],"8214":["Vert"],"8216":["lq","grq"],"8217":["rq"],"8218":["glq"],"8220":["ldq","grqq","\"'"],"8221":["rdq"],"8222":["glqq","\"`"],"8224":["dag","dagger"],"8225":["ddag","ddagger"],"8226":["bu","bub","bullet"],"8227":["bu","but"],"8230":["ldots"],"8239":[","],"824":["not"],"8240":["permil"],"8241":["textpertenthousand"],"8242":["'","prime","varprime"],"8243":["'"],"8244":["'"],"8245":["`","backprime"],"8246":["`"],"8247":["`"],"8249":["flq"],"8250":["frq"],"8251":["textreferencemark"],"8252":["!!"],"8253":["?!","textinterrobang"],"8255":["undertie"],"8256":["tie"],"8258":["asterisk"],"8260":["textfractionsolidus"],"8261":["(","textlquill"],"8262":[")","textrquill"],"8263":["??"],"8264":["?!"],"8265":["!?"],"8268":["bu"],"8269":["bu"],"8270":["asterisk"],"8271":[";"],"8273":["asterisk"],"8274":["textdiscount"],"8279":["'"],"8304":["^0"],"8308":["^4"],"8309":["^5"],"8310":["^6"],"8311":["^7"],"8312":["^8"],"8313":["^9"],"8314":["^+"],"8315":["^-"],"8316":["^="],"8317":["(","^("],"8318":[")","^)"],"8319":["^n"],"8320":["_0"],"8321":["_1"],"8322":["_2"],"8323":["_3"],"8324":["_4"],"8325":["_5"],"8326":["_6"],"8327":["_7"],"8328":["_8"],"8329":["_9"],"8330":["_+"],"8331":["_-"],"8332":["_="],"8333":["(","_("],"8334":[")","_)"],"8353":["textcolonmonetary"],"8356":["textlira"],"8358":["textnaira"],"8361":["textwon"],"8364":["euro"],"8369":["textpeso"],"8413":["textbigcircle"],"8450":["bC"],"8451":["celsius"],"8458":["Mcg"],"8459":["McH"],"8460":["MfH"],"8461":["bH"],"8462":["Mii"],"8463":["hbar"],"8464":["mathscr{I}","McI"],"8465":["Im","MfI"],"8466":["McL"],"8467":["ell"],"8469":["bN","Bbb{N}"],"8470":["textnumero"],"8471":["textcircledP"],"8472":["wp"],"8473":["bP","Bbb{P}"],"8474":["bQ"],"8475":["McR"],"8476":["Re","MfR"],"8477":["bR","Bbb{R}"],"8478":["textrecipe"],"8480":["^{SM}"],"8481":["^{TEL}"],"8482":["^{TM}"],"8484":["bZ","Bbb{Z}"],"8487":["mho"],"8488":["MfZ"],"8492":["McB"],"8493":["MfC"],"8494":["textestimated"],"8495":["Mce"],"8496":["McE"],"8497":["McF"],"8499":["McM"],"8500":["Mco"],"8508":["bGp"],"8509":["bGg"],"8510":["bGG"],"8511":["bGP"],"8512":["union","bGS"],"8523":["&"],"8531":["frac","frac13"],"8532":["frac","frac23"],"8533":["frac","frac15"],"8534":["frac","frac25"],"8535":["frac","frac35"],"8536":["frac","frac45"],"8537":["frac","frac16"],"8538":["frac","frac56"],"8539":["frac","frac18"],"8540":["frac","frac38"],"8541":["frac","frac58"],"8542":["frac","frac78"],"8543":["frac","frac1"],"8592":["l","l-","<-","gets","leftarrow","longleftarrow"],"8593":["u","u-","uparrow"],"8594":["r","r-","->","longrightarrow","rightarrow","to"],"8595":["d","d-","downarrow"],"8596":["lr","lr-","<->","leftrightarrow","longleftrightarrow"],"8597":["ud","ud-","updownarrow"],"8598":["ul","ul-","nwarrow"],"8599":["ur","ur-","nearrow"],"8600":["dr","dr-","searrow"],"8601":["dl","dl-","swarrow"],"8602":["l","l-n","<-n","nleftarrow"],"8603":["r","r-n","->n","nrightarrow"],"8604":["l","l~"],"8605":["r","r~","leadsto"],"8606":["l","ll-","twoheadleftarrow"],"8607":["u","uu-"],"8608":["r","rr-","twoheadrightarrow"],"8609":["d","dd-"],"8610":["l","l->","leftarrowtail"],"8611":["r","r->","rightarrowtail"],"8612":["l","l-|"],"8613":["u","u-|"],"8614":["r","r-|","longmapsto","mapsto"],"8615":["d","d-|"],"8616":["ud","ud-|"],"8617":["l","hookleftarrow"],"8618":["r","hookrightarrow"],"8619":["l","looparrowleft"],"8620":["r","looparrowright"],"8621":["lr","lr~","leftrightsquigarrow"],"8622":["lr","lr-n","<->n","nleftrightarrow"],"8623":["d","dz"],"8624":["u","Lsh"],"8625":["u","Rsh"],"8626":["d"],"8627":["d"],"8628":["r"],"8629":["d"],"8630":["l","curvearrowleft"],"8631":["r","curvearrowright"],"8632":["ul"],"8633":["l"],"8634":["l","circlearrowleft"],"8635":["r","circlearrowright"],"8636":["l","leftharpoonup"],"8637":["l","leftharpoondown"],"8638":["u","uprightharpoon"],"8639":["u","upleftharpoon"],"8640":["r","rightharpoonup"],"8641":["r","rightharpoondown"],"8642":["d","downrightharpoon"],"8643":["d","downleftharpoon"],"8644":["r","r-l-","rightleftarrows"],"8645":["u","u-d-"],"8646":["l","l-r-","leftrightarrows"],"8647":["l","l-2","leftleftarrows"],"8648":["u","u-2","upuparrows"],"8649":["r","r-2","rightrightarrows"],"8650":["d","d-2","downdownarrows"],"8651":["l","leftrightharpoons"],"8652":["r","rightleftharpoons"],"8653":["l","l=n","nLeftarrow"],"8654":["lr","lr=n","<=>n","nLeftrightarrow"],"8655":["r","r=n","=>n","nRightarrow"],"8656":["l","l=","<=","Leftarrow","Longleftarrow"],"8657":["u","u=","Uparrow"],"8658":["r","r=","=>","Longrightarrow","Rightarrow"],"8659":["d","d=","Downarrow"],"8660":["lr","lr=","<=>","Leftrightarrow","Longleftrightarrow","iff"],"8661":["ud","ud=","Updownarrow"],"8662":["ul","ul="],"8663":["ur","ur="],"8664":["dr","dr="],"8665":["dl","dl="],"8666":["l","l==","Lleftarrow"],"8667":["r","r==","Rrightarrow"],"8668":["l","l~"],"8669":["r","r~","squigarrowright"],"8670":["u"],"8671":["d"],"8672":["l"],"8673":["u"],"8674":["r"],"8675":["d"],"8676":["l"],"8677":["r"],"8678":["l"],"8679":["u"],"8680":["r"],"8681":["d"],"8682":["u"],"8683":["u"],"8684":["u"],"8685":["u"],"8686":["u"],"8687":["u"],"8688":["r"],"8689":["ul"],"8690":["dr"],"8691":["ud"],"8692":["r"],"8693":["d","d-u-"],"8694":["r","r-3"],"8695":["l"],"8696":["r"],"8697":["lr"],"8698":["l"],"8699":["r"],"8700":["lr"],"8701":["l"],"8702":["r"],"8703":["lr"],"8704":["all","forall"],"8705":["C","complement"],"8706":["partial"],"8707":["ex","exists"],"8708":["exn","nexists"],"8709":["0","emptyset"],"8710":["increment"],"8711":["nabla"],"8712":["member","in"],"8713":["member","inn","notin"],"8714":["member"],"8715":["member","ni"],"8716":["member","nin"],"8717":["member","backepsilon"],"8718":["qed","qed"],"8719":["intersection","prod"],"8720":["union","amalg","coprod","smallamalg"],"8721":["union","sum"],"8722":["minus"],"8723":["mp"],"8724":[".+","dotplus"],"8726":["setminus","smallsetminus"],"8727":["ast"],"8728":["o","comp","circ"],"8729":["."],"8730":["sqrt","surd"],"8731":["surd3"],"8732":["surd4"],"8733":["propto","varpropto"],"8734":["inf","infty"],"8735":["angle"],"8736":["angle"],"8737":["angle","measuredangle"],"8738":["angle","sphericalangle"],"8739":["|","mid","shortmid"],"8740":["|n","nmid","nshortmid"],"8741":["||","parallel","shortparallel"],"8742":["||n","nparallel","nshortparallel"],"8743":["intersection","and","wedge"],"8744":["union","or","vee"],"8745":["intersection","i","cap"],"8746":["union","un","cup"],"8747":["integral","int"],"8748":["integral"],"8749":["integral"],"8750":["integral","oint"],"8751":["integral"],"8752":["integral"],"8753":["integral"],"8754":["integral"],"8755":["integral"],"8756":["therefore"],"8757":["because"],"8758":[":"],"8759":["::"],"8760":[".-"],"8761":["-:"],"8762":["::-"],"8763":["eq",":~"],"8764":["eq","~","sim","thicksim"],"8765":["eq","backsim"],"8766":["eq"],"8767":["eq"],"8768":["eq","wr"],"8769":["eqn","~n","nsim"],"8770":["eq","-~"],"8771":["eq","~-","simeq"],"8772":["eqn","~-n","nsimeq"],"8773":["eq","~=","cong"],"8774":["eqn"],"8775":["eqn","~=n","ncong"],"8776":["eq","~~","approx","thickapprox"],"8777":["eqn","~~n","napprox"],"8778":["eq","~~-","approxeq"],"8779":["eq","~~~"],"8780":["eq","backcong"],"8781":["eq","asymp"],"8782":["eq","Bumpeq"],"8783":["eq","bumpeq"],"8784":["eq",".=","doteq"],"8785":["eq",".=.","doteqdot"],"8786":["eq","fallingdotseq"],"8787":["eq","risingdotseq"],"8788":["eq",":=","coloneq"],"8789":["eq","=:","eqcolon"],"8790":["eq","eqcirc"],"8791":["eq","=o","circeq"],"8792":["eq","(="],"8793":["eq","and=","defs"],"8794":["eq","or="],"8795":["eq","*="],"8796":["eq","t=","triangleq"],"8797":["eq","def="],"8798":["eq","m="],"8799":["eq","?="],"8800":["eqn","=n","ne","neq"],"8801":["eq","==","equiv"],"8802":["eqn","==n","nequiv"],"8803":["eq","==="],"8804":["leq","<=","le","leq","leqslant"],"8805":["geq",">=","ge","geq","geqslant"],"8806":["leq","leqq"],"8807":["geq","geqq"],"8808":["leqn","lneq","lneqq","lvertneqq"],"8809":["geqn","gneq","gneqq","gvertneqq"],"8810":["leq","<","ll"],"8811":["geq",">","gg"],"8812":["eq","between"],"8813":["eqn"],"8814":["leqn","n","ngtr"],"8816":["leqn","<=n","len","nleq","nleqq","nleqslant"],"8817":["geqn",">=n","gen","ngeq","ngeqq","ngeqslant"],"8818":["leq","<~","lessapprox","lesssim"],"8819":["geq",">~","gtrapprox","gtrsim"],"8820":["leqn","<~nn"],"8821":["geqn",">~nn"],"8822":["leq","lessgtr"],"8823":["geq","gtrless"],"8824":["leqn"],"8825":["geqn"],"8826":["leq","<","prec"],"8827":["geq",">","succ"],"8828":["leq","curlypreceq","preceq"],"8829":["geq","succcurlyeq","succeq"],"8830":["leq","precapprox","precsim"],"8831":["geq","succapprox","succsim"],"8832":["leqn","nprec"],"8833":["geqn","nsucc"],"8834":["leq","sub","<","subset"],"8835":["geq","sup",">","supset"],"8836":["leqn","subn","nsubset"],"8837":["geqn","supn","nsupset"],"8838":["leq","sub=","subseteq","subseteqq"],"8839":["geq","sup=","supseteq","supseteqq"],"8840":["leqn","sub=n","nsubseteq","nsubseteqq"],"8841":["geqn","sup=n","nsupseteq","nsupseteqq"],"8842":["leqn","subsetneq","subsetneqq"],"8843":["geqn","supsetneq","supsetneqq"],"8844":["union"],"8845":["union","u."],"8846":["union","u+","uplus"],"8847":["leq","squb","<","sqsubset"],"8848":["geq","squp",">","sqsupset"],"8849":["leq","squb=","sqsubseteq"],"8850":["geq","squp=","sqsupseteq"],"8851":["intersection","glb","sqcap"],"8852":["union","lub","sqcup"],"8853":["o+","oplus"],"8854":["o--","ominus"],"8855":["ox","otimes"],"8856":["o/","oslash"],"8857":["o.","odot"],"8858":["oo","circledcirc"],"8859":["o*","circledast"],"8860":["o="],"8861":["o-","circleddash"],"8862":["b+","boxplus"],"8863":["b-","boxminus"],"8864":["bx","boxtimes"],"8865":["b.","dotsquare"],"8866":["entails","|-","vdash"],"8867":["entails","-|","dashv"],"8868":["entails","top"],"8869":["entails","bot","perp"],"8870":["entails"],"8871":["entails","models"],"8872":["entails","|=","vDash"],"8873":["entails","||-","Vdash"],"8874":["entails","|||-","Vvdash"],"8875":["entails","||="],"8876":["entails","|-n","nvdash"],"8877":["entails","|=n","nvDash"],"8878":["entails","||-n","nVdash"],"8879":["entails","||=n","nVDash"],"8880":["leq","<"],"8881":["geq",">"],"8882":["leq","<","vartriangleleft"],"8883":["geq",">","vartriangleright"],"8884":["leq","trianglelefteq"],"8885":["geq","trianglerighteq"],"8888":["r","r-o","-o","multimap"],"8889":["+ "],"8890":["intercal"],"8891":["union","veebar"],"8892":["intersection","barwedge"],"8893":["union"],"8894":["angle"],"8895":["angle"],"8896":["intersection","And","bigwedge"],"8897":["union","Or","bigvee"],"8898":["intersection","I","bigcap"],"8899":["union","Un","bigcup"],"8900":["diamond"],"8902":["*","st","star"],"8903":["divideontimes"],"8904":["join","Join","bowtie"],"8905":["join","ltimes"],"8906":["join","rtimes"],"8907":["join","leftthreetimes"],"8908":["join","rightthreetimes"],"8909":["eq","backsimeq"],"8910":["union","curlyvee"],"8911":["intersection","curlywedge"],"8912":["leq","<","Subset"],"8913":["geq",">","Supset"],"8914":["intersection","Cap"],"8915":["union","Cup"],"8916":["pitchfork"],"8917":["eq"],"8918":["leq","<","lessdot"],"8919":["geq",">","gtrdot"],"8920":["leq","<","Ll"],"8921":["geq",">","ggg"],"8922":["leq","lesseqgtr","lesseqqgtr"],"8923":["geq","gtreqless","gtreqqless"],"8924":["leq","eqslantless"],"8925":["geq","eqslantgtr"],"8926":["leq","curlyeqprec"],"8927":["geq","curlyeqsucc"],"8928":["leqn","npreceq"],"8929":["geqn","nsucceq"],"8930":["leqn","squb=n"],"8931":["geqn","squp=n"],"8932":["leqn"],"8933":["geqn"],"8934":["leqn","<~n","lnapprox","lnsim"],"8935":["geqn",">~n","gnapprox","gnsim"],"8936":["leqn","precnapprox","precnsim"],"8937":["geqn","succnapprox","succnsim"],"8938":["leqn","ntriangleleft"],"8939":["geqn","ntriangleright"],"894":[";"],"8940":["leqn","ntrianglelefteq"],"8941":["geqn","ntrianglerighteq"],"8942":["...","vdots"],"8943":["...","cdots"],"8944":["..."],"8945":["...","ddots"],"8946":["member"],"8947":["member"],"8948":["member"],"8949":["member"],"8950":["member"],"8951":["member"],"8952":["member"],"8953":["member"],"8954":["member"],"8955":["member"],"8956":["member"],"8957":["member"],"8958":["member"],"8959":["member"],"8968":["c","cu","cuL","lceil"],"8969":["c","cu","cuR","rceil"],"8970":["c","cl","clL","lfloor"],"8971":["c","cl","clR","rfloor"],"8988":["c","cu","cul","ulcorner"],"8989":["c","cu","cur","urcorner"],"8990":["c","cl","cll","llcorner"],"8991":["c","cl","clr","lrcorner"],"8994":["frown"],"8995":["smallsmile","smile"],"9001":["(","langle","leftparengtr"],"9002":[")","rangle","rightparengtr"],"9014":["apl"],"9015":["apl"],"9016":["box=","boxeq","apl"],"9017":["boxdiv","apl"],"9018":["boxdi","apl"],"9019":["boxo","boxcomp","apl"],"9020":["boxO","boxcircle","apl"],"9021":["apl"],"9022":["apl"],"9023":["apl"],"9024":["apl"],"9025":["box/","apl"],"9026":["box\\\\","apl"],"9027":["box<","apl"],"9028":["box>","apl"],"9029":["apl"],"9030":["apl"],"9031":["boxl","apl"],"9032":["boxr","apl"],"9033":["apl"],"9034":["apl"],"9035":["apl"],"9036":["boxvee","apl"],"9037":["boxdelta","apl"],"9038":["apl"],"9039":["apl"],"9040":["boxu","apl"],"9041":["apl"],"9042":["apl"],"9043":["boxwedge","apl"],"9044":["boxnabla","apl"],"9045":["apl"],"9046":["apl"],"9047":["boxd","apl"],"9048":["apl"],"9049":["apl"],"9050":["apl"],"9051":["apl"],"9052":["apl"],"9053":["apl"],"9054":["box'","apl"],"9055":["O*","apl"],"9056":["box:","apl"],"9057":["apl"],"9058":["apl"],"9059":["apl"],"9060":["apl"],"9061":["apl"],"9062":["apl"],"9063":["apl"],"9064":["apl"],"9065":["apl"],"9066":["apl"],"9067":["apl"],"9068":["apl"],"9069":["apl"],"9070":[";","apl"],"9071":["boxneq","boxeqn","apl"],"9072":["box?","apl"],"9073":["apl"],"9074":["apl"],"9075":["apl"],"9076":["apl"],"9077":["apl"],"9078":["apl"],"9079":["apl"],"9080":["apl"],"9081":["apl"],"9082":["apl"],"91":["(","lbrack"],"9109":["apl"],"9140":["("],"9141":[")"],"915":["Gamma"],"916":["Delta"],"92":["\\\\","backslash","\\"],"920":["Theta"],"923":["Lambda"],"926":["Xi"],"928":["Pi"],"93":[")","rbrack"],"931":["Sigma"],"933":["Upsilon"],"934":["Phi"],"936":["Psi"],"937":["Omega"],"9416":["circledS"],"945":["alpha"],"946":["beta"],"947":["gamma"],"9472":["---"],"9473":["--_"],"9474":["---"],"9475":["--_"],"9476":["--."],"9477":["--."],"9478":["--."],"9479":["--."],"948":["delta"],"9480":["--."],"9481":["--."],"9482":["--."],"9483":["--."],"9484":["---"],"9485":["--_"],"9486":["--_"],"9487":["--_"],"9488":["---"],"9489":["--_"],"949":["epsilon"],"9490":["--_"],"9491":["--_"],"9492":["---"],"9493":["--_"],"9494":["--_"],"9495":["--_"],"9496":["---"],"9497":["--_"],"9498":["--_"],"9499":["--_"],"950":["zeta"],"9500":["---"],"9501":["--_"],"9502":["--_"],"9503":["--_"],"9504":["--_"],"9505":["--_"],"9506":["--_"],"9507":["--_"],"9508":["---"],"9509":["--_"],"951":["eta"],"9510":["--_"],"9511":["--_"],"9512":["--_"],"9513":["--_"],"9514":["--_"],"9515":["--_"],"9516":["---"],"9517":["--_"],"9518":["--_"],"9519":["--_"],"952":["theta"],"9520":["--_"],"9521":["--_"],"9522":["--_"],"9523":["--_"],"9524":["---"],"9525":["--_"],"9526":["--_"],"9527":["--_"],"9528":["--_"],"9529":["--_"],"953":["iota"],"9530":["--_"],"9531":["--_"],"9532":["---"],"9533":["--_"],"9534":["--_"],"9535":["--_"],"9536":["--_"],"9537":["--_"],"9538":["--_"],"9539":["--_"],"954":["kappa"],"9540":["--_"],"9541":["--_"],"9542":["--_"],"9543":["--_"],"9544":["--_"],"9545":["--_"],"9546":["--_"],"9547":["--_"],"9548":["--."],"9549":["--."],"955":["lambda"],"9550":["--."],"9551":["--."],"9552":["--="],"9553":["--="],"9554":["--="],"9555":["--="],"9556":["--="],"9557":["--="],"9558":["--="],"9559":["--="],"956":["mu"],"9560":["--="],"9561":["--="],"9562":["--="],"9563":["--="],"9564":["--="],"9565":["--="],"9566":["--="],"9567":["--="],"9568":["--="],"9569":["--="],"957":["nu"],"9570":["--="],"9571":["--="],"9572":["--="],"9573":["--="],"9574":["--="],"9575":["--="],"9576":["--="],"9577":["--="],"9578":["--="],"9579":["--="],"958":["xi"],"9580":["--="],"9581":["---"],"9582":["---"],"9583":["---"],"9584":["---"],"9585":["---"],"9586":["---"],"9587":["---"],"9588":["---"],"9589":["---"],"9590":["---"],"9591":["---"],"9592":["--_"],"9593":["--_"],"9594":["--_"],"9595":["--_"],"9596":["--_"],"9597":["--_"],"9598":["--_"],"9599":["--_"],"960":["pi"],"961":["rho"],"962":["varsigma"],"963":["sigma"],"9632":["sq","sqb"],"9633":["sq","sqw","Box","square"],"9634":["sq","sqo"],"9635":["sq","sq."],"9636":["sq"],"9637":["sq"],"9638":["sq"],"9639":["sq"],"964":["tau"],"9640":["sq"],"9641":["sq"],"9642":["blacksquare"],"9644":["re","reb"],"9645":["re","rew"],"9646":["re","reb"],"9647":["re","rew"],"9648":["pa","pab"],"9649":["pa","paw"],"965":["upsilon"],"9650":["T","Tb"],"9651":["T","Tw","bigtriangleup"],"9652":["t","tb","blacktriangle"],"9653":["t","tw","triangle"],"9654":["T","Tb"],"9655":["T","Tw","rhd"],"9656":["t","tb","blacktriangleright"],"9657":["t","tw","triangleright"],"9658":["t","tb"],"9659":["t","tw"],"966":["phi","straightphi"],"9660":["T","Tb"],"9661":["T","Tw","bigtriangledown"],"9662":["t","tb","blacktriangledown"],"9663":["t","tw","triangledown"],"9664":["T","Tb"],"9665":["T","Tw","lhd"],"9666":["t","tb","blacktriangleleft"],"9667":["t","tw","triangleleft"],"9668":["t","tb"],"9669":["t","tw"],"967":["chi"],"9670":["di","dib"],"9671":["di","diw","Diamond"],"9672":["di","di."],"9675":["ci","ciw"],"9676":["ci","ci.."],"9677":["ci"],"9678":["ci","ci."],"9679":["ci","cib"],"968":["psi"],"9680":["ci"],"9681":["ci"],"9682":["ci"],"9683":["ci"],"9684":["ci"],"9685":["ci"],"9686":["ci"],"9687":["ci"],"969":["omega"],"9696":["ci"],"9697":["ci"],"9698":["t","tb"],"9699":["t","tb"],"9700":["t","tb"],"9701":["t","tb"],"9702":["bu","buw","textopenbullet"],"9703":["sq"],"9704":["sq"],"9705":["sq"],"9706":["sq"],"9707":["sq"],"9708":["T"],"9709":["T"],"9710":["T"],"9711":["ci","ciO","bigcirc"],"9712":["sq"],"9713":["sq"],"9714":["sq"],"9715":["sq"],"9716":["ci"],"9717":["ci"],"9718":["ci"],"9719":["ci"],"9720":["t","tw"],"9721":["t","tw"],"9722":["t","tw"],"9723":["sq","sqw"],"9724":["sq","sqb"],"9725":["sq","sqw"],"9726":["sq","sqb"],"9727":["t","tw"],"9733":["st","bigstar"],"9734":["st"],"977":["vartheta"],"9785":["Frowny"],"9786":["Smiley"],"9787":["blacksmiley"],"981":["varphi"],"982":["varpi"],"9824":["spadesuit"],"9826":["diamondsuit"],"9827":["clubsuit"],"9829":["heartsuit"],"9833":["note"],"9834":["note","textmusicalnote"],"9835":["note"],"9836":["note"],"9837":["b","flat"],"9838":["natural"],"9839":["#","sharp"],"9856":["die"],"9857":["die"],"9858":["die"],"9859":["die"],"9860":["die"],"9861":["die"],"9862":["ci"],"9863":["ci"],"9864":["ci"],"9865":["ci"],"988":["digamma"],"9986":["8<"],"9988":["8<"],"9993":["Letter"]} \ No newline at end of file +module.exports.default = {"10":["newline","par"],"10003":["checkmark"],"10013":["textdied"],"10016":["maltese"],"10018":["asterisk"],"10019":["asterisk"],"10020":["asterisk"],"10021":["asterisk"],"10022":["st","st4","blacklozenge"],"10023":["st","st4","lozenge"],"10026":["st"],"10027":["st"],"10031":["st"],"10032":["st"],"10033":["asterisk"],"10034":["asterisk"],"10035":["asterisk"],"10036":["st","st8"],"10037":["st"],"10038":["st","st6"],"10039":["st"],"10040":["st"],"10041":["st","st12"],"10042":["asterisk"],"10043":["asterisk"],"10044":["asterisk"],"10045":["asterisk"],"10051":["asterisk"],"10057":["asterisk"],"10058":["asterisk"],"10059":["asterisk"],"1008":["varkappa"],"1009":["varrho"],"10090":["("],"10091":[")"],"10092":["("],"10093":[")"],"10094":["("],"10095":[")"],"10096":["("],"10097":[")"],"10098":["("],"10099":[")"],"10100":["("],"10101":[")"],"10102":["(1)"],"10103":["(2)"],"10104":["(3)"],"10105":["(4)"],"10106":["(5)"],"10107":["(6)"],"10108":["(7)"],"10109":["(8)"],"10110":["(9)"],"10111":["(10)"],"10112":["(1)"],"10113":["(2)"],"10114":["(3)"],"10115":["(4)"],"10116":["(5)"],"10117":["(6)"],"10118":["(7)"],"10119":["(8)"],"10120":["(9)"],"10121":["(10)"],"10122":["(1)"],"10123":["(2)"],"10124":["(3)"],"10125":["(4)"],"10126":["(5)"],"10127":["(6)"],"10128":["(7)"],"10129":["(8)"],"10130":["(9)"],"10131":["(10)"],"10132":["r"],"10136":["dr"],"10137":["r"],"10138":["ur"],"10139":["r"],"10140":["r"],"10141":["r"],"10142":["r"],"10143":["r"],"10144":["r"],"10145":["r"],"10146":["r"],"10147":["r"],"10148":["r"],"10149":["d"],"10150":["u"],"10151":["r"],"10152":["r"],"10153":["r"],"10154":["r"],"10155":["r"],"10156":["r"],"10157":["r"],"10158":["r"],"10159":["r"],"10161":["r"],"10162":["r"],"10163":["r"],"10164":["dr"],"10165":["r"],"10166":["ur"],"10167":["dr"],"10168":["r"],"10169":["ur"],"10170":["r"],"10171":["r"],"10172":["r"],"10173":["r"],"10174":["r"],"10181":["(","(b","lbag"],"10182":[")",")b","rbag"],"10197":["join"],"10198":["join"],"10199":["join"],"10214":["(","[["],"10215":[")","]]"],"10216":["(","<"],"10217":[")",">"],"10218":["(","<<"],"10219":[")",">>"],"10222":["("],"10223":[")"],"10224":["u","u=="],"10225":["d","d=="],"10226":["l"],"10227":["r"],"10228":["r"],"10229":["l","l--","<--"],"10230":["r","r--","-->"],"10231":["lr","lr--","<-->"],"10232":["l"],"10233":["r"],"10234":["lr"],"10235":["l"],"10236":["r"],"10237":["l"],"10238":["r"],"10239":["r","r~"],"10502":["l"],"10503":["r"],"10506":["u"],"10507":["d"],"10626":[":","z:"],"10627":["(","{{"],"10628":[")","}}"],"10629":["(","(("],"10630":[")","))"],"10631":["(","(|"],"10632":[")","|)"],"10633":["(","<|"],"10634":[")","|>"],"10647":["("],"10648":[")"],"10748":["("],"10749":[")"],"10752":["O."],"10753":["O+"],"10754":["Ox"],"10755":["union","U."],"10756":["union","U+"],"10757":["intersection","Glb"],"10758":["union","Lub"],"10759":["intersection"],"10760":["union"],"10761":["intersection"],"10781":["join"],"10783":[";","z;"],"10814":[";","z;"],"10815":["union"],"11077":["l"],"11078":["r"],"11388":["_j"],"11389":["^V"],"11816":["("],"11817":[")"],"11826":[","],"11828":[","],"11829":[";"],"11841":[","],"11849":[","],"119808":["BA"],"119809":["BB"],"119810":["BC"],"119811":["BD"],"119812":["BE"],"119813":["BF"],"119814":["BG"],"119815":["BH"],"119816":["BI"],"119817":["BJ"],"119818":["BK"],"119819":["BL"],"119820":["BM"],"119821":["BN"],"119822":["BO"],"119823":["BP"],"119824":["BQ"],"119825":["BR"],"119826":["BS"],"119827":["BT"],"119828":["BU"],"119829":["BV"],"119830":["BW"],"119831":["BX"],"119832":["BY"],"119833":["BZ"],"119834":["Ba"],"119835":["Bb"],"119836":["Bc"],"119837":["Bd"],"119838":["Be"],"119839":["Bf"],"119840":["Bg"],"119841":["Bh"],"119842":["Bi"],"119843":["Bj"],"119844":["Bk"],"119845":["Bl"],"119846":["Bm"],"119847":["Bn"],"119848":["Bo"],"119849":["Bp"],"119850":["Bq"],"119851":["Br"],"119852":["Bs"],"119853":["Bt"],"119854":["Bu"],"119855":["Bv"],"119856":["Bw"],"119857":["Bx"],"119858":["By"],"119859":["Bz"],"119860":["MiA"],"119861":["MiB"],"119862":["MiC"],"119863":["MiD"],"119864":["MiE"],"119865":["MiF"],"119866":["MiG"],"119867":["MiH"],"119868":["MiI"],"119869":["MiJ"],"119870":["MiK"],"119871":["MiL"],"119872":["MiM"],"119873":["MiN"],"119874":["MiO"],"119875":["MiP"],"119876":["MiQ"],"119877":["MiR"],"119878":["MiS"],"119879":["MiT"],"119880":["MiU"],"119881":["MiV"],"119882":["MiW"],"119883":["MiX"],"119884":["MiY"],"119885":["MiZ"],"119886":["Mia"],"119887":["Mib"],"119888":["Mic"],"119889":["Mid"],"119890":["Mie"],"119891":["Mif"],"119892":["Mig"],"119894":["Mii"],"119895":["Mij"],"119896":["Mik"],"119897":["Mil"],"119898":["Mim"],"119899":["Min"],"119900":["Mio"],"119901":["Mip"],"119902":["Miq"],"119903":["Mir"],"119904":["Mis"],"119905":["Mit"],"119906":["Miu"],"119907":["Miv"],"119908":["Miw"],"119909":["Mix"],"119910":["Miy"],"119911":["Miz"],"119912":["MIA"],"119913":["MIB"],"119914":["MIC"],"119915":["MID"],"119916":["MIE"],"119917":["MIF"],"119918":["MIG"],"119919":["MIH"],"119920":["MII"],"119921":["MIJ"],"119922":["MIK"],"119923":["MIL"],"119924":["MIM"],"119925":["MIN"],"119926":["MIO"],"119927":["MIP"],"119928":["MIQ"],"119929":["MIR"],"119930":["MIS"],"119931":["MIT"],"119932":["MIU"],"119933":["MIV"],"119934":["MIW"],"119935":["MIX"],"119936":["MIY"],"119937":["MIZ"],"119938":["MIa"],"119939":["MIb"],"119940":["MIc"],"119941":["MId"],"119942":["MIe"],"119943":["MIf"],"119944":["MIg"],"119945":["MIh"],"119946":["MIi"],"119947":["MIj"],"119948":["MIk"],"119949":["MIl"],"119950":["MIm"],"119951":["MIn"],"119952":["MIo"],"119953":["MIp"],"119954":["MIq"],"119955":["MIr"],"119956":["MIs"],"119957":["MIt"],"119958":["MIu"],"119959":["MIv"],"119960":["MIw"],"119961":["MIx"],"119962":["MIy"],"119963":["MIz"],"119964":["McA"],"119966":["McC"],"119967":["McD"],"119970":["McG"],"119973":["McJ"],"119974":["McK"],"119977":["McN"],"119978":["McO"],"119979":["McP"],"119980":["McQ"],"119982":["McS"],"119983":["McT"],"119984":["McU"],"119985":["McV"],"119986":["McW"],"119987":["McX"],"119988":["McY"],"119989":["McZ"],"119990":["Mca"],"119991":["Mcb"],"119992":["Mcc"],"119993":["Mcd"],"119995":["Mcf"],"119997":["Mch"],"119998":["Mci"],"119999":["Mcj"],"120000":["Mck"],"120001":["Mcl"],"120002":["Mcm"],"120003":["Mcn"],"120005":["Mcp"],"120006":["Mcq"],"120007":["Mcr"],"120008":["Mcs"],"120009":["Mct"],"120010":["Mcu"],"120011":["Mcv"],"120012":["Mcw"],"120013":["Mcx"],"120014":["Mcy"],"120015":["Mcz"],"120016":["MCA"],"120017":["MCB"],"120018":["MCC"],"120019":["MCD"],"120020":["MCE"],"120021":["MCF"],"120022":["MCG"],"120023":["MCH"],"120024":["MCI"],"120025":["MCJ"],"120026":["MCK"],"120027":["MCL"],"120028":["MCM"],"120029":["MCN"],"120030":["MCO"],"120031":["MCP"],"120032":["MCQ"],"120033":["MCR"],"120034":["MCS"],"120035":["MCT"],"120036":["MCU"],"120037":["MCV"],"120038":["MCW"],"120039":["MCX"],"120040":["MCY"],"120041":["MCZ"],"120042":["MCa"],"120043":["MCb"],"120044":["MCc"],"120045":["MCd"],"120046":["MCe"],"120047":["MCf"],"120048":["MCg"],"120049":["MCh"],"120050":["MCi"],"120051":["MCj"],"120052":["MCk"],"120053":["MCl"],"120054":["MCm"],"120055":["MCn"],"120056":["MCo"],"120057":["MCp"],"120058":["MCq"],"120059":["MCr"],"120060":["MCs"],"120061":["MCt"],"120062":["MCu"],"120063":["MCv"],"120064":["MCw"],"120065":["MCx"],"120066":["MCy"],"120067":["MCz"],"120068":["MfA"],"120069":["MfB"],"120071":["MfD"],"120072":["MfE"],"120073":["MfF"],"120074":["MfG"],"120077":["MfJ"],"120078":["MfK"],"120079":["MfL"],"120080":["MfM"],"120081":["MfN"],"120082":["MfO"],"120083":["MfP"],"120084":["MfQ"],"120086":["MfS"],"120087":["MfT"],"120088":["MfU"],"120089":["MfV"],"120090":["MfW"],"120091":["MfX"],"120092":["MfY"],"120094":["Mfa"],"120095":["Mfb"],"120096":["Mfc"],"120097":["Mfd"],"120098":["Mfe"],"120099":["Mff"],"120100":["Mfg"],"120101":["Mfh"],"120102":["Mfi"],"120103":["Mfj"],"120104":["Mfk"],"120105":["Mfl"],"120106":["Mfm"],"120107":["Mfn"],"120108":["Mfo"],"120109":["Mfp"],"120110":["Mfq"],"120111":["Mfr"],"120112":["Mfs"],"120113":["Mft"],"120114":["Mfu"],"120115":["Mfv"],"120116":["Mfw"],"120117":["Mfx"],"120118":["Mfy"],"120119":["Mfz"],"120120":["bA"],"120121":["bB"],"120123":["bD"],"120124":["bE"],"120125":["bF"],"120126":["bG"],"120128":["bI"],"120129":["bJ"],"120130":["bK"],"120131":["bL"],"120132":["bM"],"120134":["bO"],"120138":["bS"],"120139":["bT"],"120140":["bU"],"120141":["bV"],"120142":["bW"],"120143":["bX"],"120144":["bY"],"120146":["ba"],"120147":["bb"],"120148":["bc"],"120149":["bd"],"120150":["be"],"120151":["bf"],"120152":["bg"],"120153":["bh"],"120154":["bi"],"120155":["bj"],"120156":["bk"],"120157":["bl"],"120158":["bm"],"120159":["bn"],"120160":["bo"],"120161":["bp"],"120162":["bq"],"120163":["br"],"120164":["bs"],"120165":["bt"],"120166":["bu"],"120167":["bv"],"120168":["bw"],"120169":["bx"],"120170":["by"],"120171":["bz"],"120488":["BGA"],"120489":["BGB"],"120490":["BGG"],"120491":["BGD"],"120492":["BGE"],"120493":["BGZ"],"120494":["BGH"],"120495":["BGTH"],"120496":["BGI"],"120497":["BGK"],"120498":["BGL"],"120499":["BGM"],"120500":["BGN"],"120501":["BGX"],"120502":["BOmicron"],"120503":["BPi"],"120504":["BGR"],"120506":["BGS"],"120507":["BGT"],"120508":["BGU"],"120509":["BGF"],"120510":["BGC"],"120511":["BGP"],"120512":["BGO"],"120514":["BGa"],"120515":["BGb"],"120516":["BGg"],"120517":["BGd"],"120518":["BGe"],"120519":["BGz"],"120520":["BGh"],"120521":["BGth"],"120522":["BGi"],"120523":["BGk"],"120524":["BGl"],"120525":["BGm"],"120526":["BGn"],"120527":["BGx"],"120528":["Bomicron"],"120529":["Bpi"],"120530":["BGr"],"120532":["BGs"],"120533":["BGt"],"120534":["BGu"],"120535":["BGf"],"120536":["BGc"],"120537":["BGp"],"120538":["BGo"],"120782":["B0"],"120783":["B1"],"120784":["B2"],"120785":["B3"],"120786":["B4"],"120787":["B5"],"120788":["B6"],"120789":["B7"],"120790":["B8"],"120791":["B9"],"120792":["b0"],"120793":["b1"],"120794":["b2"],"120795":["b3"],"120796":["b4"],"120797":["b5"],"120798":["b6"],"120799":["b7"],"120800":["b8"],"120801":["b9"],"12289":[","],"12296":["("],"12297":[")"],"12298":["(","ldata"],"12299":[")","rdata"],"123":["(","lbrace"],"12300":["("],"12301":[")"],"12302":["("],"12303":[")"],"12304":["("],"12305":[")"],"12308":["("],"12309":[")"],"12310":["("],"12311":[")"],"12314":["(","llbracket"],"12315":[")","rrbracket"],"124":["vert"],"125":[")","rbrace"],"127232":["(0)"],"127243":["(0)"],"127244":["(0)"],"127280":["(a)"],"127281":["(b)"],"127282":["(c)"],"127283":["(d)"],"127284":["(e)"],"127285":["(f)"],"127286":["(g)"],"127287":["(h)"],"127288":["(i)"],"127289":["(j)"],"127290":["(k)"],"127291":["(l)"],"127292":["(m)"],"127293":["(n)"],"127294":["(o)"],"127295":["(p)"],"127296":["(q)"],"127297":["(r)"],"127298":["(s)"],"127299":["(t)"],"127300":["(u)"],"127301":["(v)"],"127302":["(w)"],"127303":["(x)"],"127304":["(y)"],"127305":["(z)"],"127312":["(a)"],"127313":["(b)"],"127314":["(c)"],"127315":["(d)"],"127316":["(e)"],"127317":["(f)"],"127318":["(g)"],"127319":["(h)"],"127320":["(i)"],"127321":["(j)"],"127322":["(k)"],"127323":["(l)"],"127324":["(m)"],"127325":["(n)"],"127326":["(o)"],"127327":["(p)"],"127328":["(q)"],"127329":["(r)"],"127330":["(s)"],"127331":["(t)"],"127332":["(u)"],"127333":["(v)"],"127334":["(w)"],"127335":["(x)"],"127336":["(y)"],"127337":["(z)"],"127344":["(a)"],"127345":["(b)"],"127346":["(c)"],"127347":["(d)"],"127348":["(e)"],"127349":["(f)"],"127350":["(g)"],"127351":["(h)"],"127352":["(i)"],"127353":["(j)"],"127354":["(k)"],"127355":["(l)"],"127356":["(m)"],"127357":["(n)"],"127358":["(o)"],"127359":["(p)"],"127360":["(q)"],"127361":["(r)"],"127362":["(s)"],"127363":["(t)"],"127364":["(u)"],"127365":["(v)"],"127366":["(w)"],"127367":["(x)"],"127368":["(y)"],"127369":["(z)"],"1488":["aleph"],"1489":["beth"],"1490":["gimel"],"1491":["daleth"],"1548":[","],"161":["!","!`"],"162":["cent"],"163":["pounds"],"164":["currency"],"165":["yen"],"166":["brokenbar"],"167":["S"],"168":["\"{}"],"169":["copyright"],"170":["^a_","^a","ordfeminine"],"171":["flqq","\"<"],"172":["neg","lnot"],"173":["-"],"174":["circledR","registered"],"175":["={}"],"176":["degree"],"177":["pm","pm"],"178":["^2","^2"],"179":["^3","^3"],"180":["'{}"],"181":["micro","textmu"],"182":["P"],"183":["cdot","cdot","centerdot"],"184":["c{}"],"185":["^1","^1"],"186":["^o_","^o","^o","ordmasculine"],"187":["frqq","\">"],"188":["frac","frac14"],"189":["frac","frac12"],"190":["frac","frac34"],"191":["?","?`"],"192":["`{A}","`A"],"193":["'{A}","'A"],"194":["^{A}","^A"],"195":["~{A}","~A"],"196":["\"{A}","\"A"],"197":["AA"],"198":["AE"],"199":["c{C}","cC"],"200":["`{E}","`E"],"201":["'{E}","'E"],"202":["^{E}","^E"],"203":["\"{E}","\"E"],"204":["`{I}","`I"],"205":["'{I}","'I"],"206":["^{I}","^I"],"207":["\"{I}","\"I"],"208":["DH"],"209":["~{N}","~N"],"210":["`{O}","`O"],"211":["'{O}","'O"],"212":["^{O}","^O"],"213":["~{O}","~O"],"214":["\"{O}","\"O"],"215":["x","times","times"],"216":["O"],"217":["`{U}","`U"],"218":["'{U}","'U"],"219":["^{U}","^U"],"220":["\"{U}","\"U"],"221":["'{Y}","'Y"],"222":["TH"],"223":["ss"],"224":["`{a}","`a"],"225":["'{a}","'a"],"226":["^{a}","^a"],"227":["~{a}","~a"],"228":["\"{a}","\"a"],"229":["aa"],"230":["ae"],"231":["c{c}","cc"],"232":["`{e}","`e"],"233":["'{e}","'e"],"234":["^{e}","^e"],"235":["\"{e}","\"e"],"236":["`{\\i}","`i"],"237":["'{\\i}","'i"],"238":["^{\\i}","^i"],"239":["\"{\\i}","\"i"],"240":["dh"],"241":["~{n}","~n"],"242":["`{o}","`o"],"243":["'{o}","'o"],"244":["^{o}","^o"],"245":["~{o}","~o"],"246":["\"{o}","\"o"],"247":["div","div"],"248":["o"],"249":["`{u}","`u"],"250":["'{u}","'u"],"251":["^{u}","^u"],"252":["\"{u}","\"u"],"253":["'{y}","'y"],"254":["th"],"255":["\"{y}","\"y"],"256":["={A}","=A"],"257":["={a}","=a"],"258":["u{A}","uA"],"259":["u{a}","ua"],"260":["k{A}"],"261":["k{a}"],"262":["'{C}","'C"],"263":["'{c}","'c"],"264":["^{C}","^C"],"265":["^{c}","^c"],"266":[".{C}",".C"],"267":[".{c}",".c"],"268":["v{C}","vC"],"269":["v{c}","vc"],"270":["v{D}","vD"],"271":["v{d}","vd"],"274":["={E}","=E"],"275":["={e}","=e"],"276":["u{E}","uE"],"277":["u{e}","ue"],"278":[".{E}",".E"],"279":["e{e}","ee",".e"],"280":["k{E}"],"281":["k{e}"],"282":["v{E}","vE"],"283":["v{e}","ve"],"284":["^{G}","^G"],"285":["^{g}","^g"],"286":["u{G}","uG"],"287":["u{g}","ug"],"288":[".{G}",".G"],"289":[".{g}",".g"],"290":["c{G}","cG"],"291":["c{g}","cg"],"292":["^{H}","^H"],"293":["^{h}","^h"],"296":["~{I}","~I"],"297":["~{\\i}","~i"],"298":["={I}","=I"],"299":["={\\i}","=i"],"300":["u{I}","uI"],"301":["u{\\i}","ui","u{i}"],"302":["k{I}"],"303":["k{i}"],"304":[".{I}",".I"],"305":["i","imath"],"308":["^{J}","^J"],"309":["^{\\j}","^j"],"310":["c{K}","cK"],"311":["c{k}","ck"],"313":["'{L}","'L"],"314":["'{l}","'l"],"315":["c{L}","cL"],"316":["c{l}","cl"],"317":["v{L}"],"318":["v{l}"],"32":[" "],"321":["L"],"322":["l"],"323":["'{N}","'N"],"324":["'{n}","'n"],"325":["c{N}","cN"],"326":["c{n}","cn"],"327":["v{N}","vN"],"328":["v{n}","vn"],"332":["={O}","=O"],"333":["={o}","=o"],"334":["u{O}","uO"],"335":["u{o}","uo"],"336":["H{O}","HO"],"337":["U{o}","Uo","H{o}"],"338":["OE"],"339":["oe"],"340":["'{R}","'R"],"341":["'{r}","'r"],"342":["c{R}","cR"],"343":["c{r}","cr"],"344":["v{R}","vR"],"345":["v{r}","vr"],"346":["'{S}","'S"],"347":["'{s}","'s"],"348":["^{S}","^S"],"349":["^{s}","^s"],"350":["c{S}","cS"],"351":["c{s}","cs"],"352":["v{S}","vS"],"353":["v{s}","vs"],"354":["c{T}","cT"],"355":["c{t}","ct"],"356":["v{T}","vT"],"357":["v{t}","vt"],"360":["~{U}","~U"],"361":["~{u}","~u"],"362":["={U}","=U"],"363":["={u}","=u"],"364":["u{U}","uU"],"3647":["textbaht"],"365":["u{u}","uu"],"368":["H{U}","HU"],"369":["H{u}","Hu"],"370":["k{U}"],"371":["k{u}"],"372":["^{W}","^W"],"373":["^{w}","^w"],"374":["^{Y}","^Y"],"375":["^{y}","^y"],"376":["\"{Y}","\"Y"],"377":["'{Z}","'Z"],"378":["'{z}","'z"],"379":[".{Z}",".Z"],"380":[".{z}",".z"],"381":["v{Z}","vZ"],"382":["v{z}","vz"],"40":["("],"41":[")"],"411":["Gl-","lambdabar"],"42742":[";"],"42889":[":"],"461":["v{A}","vA"],"462":["v{a}","va"],"463":["v{I}","vI"],"464":["v{\\i}","vi","v{i}"],"465":["v{O}","vO"],"466":["v{o}","vo"],"467":["v{U}","vU"],"468":["v{u}","vu"],"482":["={\\AE}","=\\AE"],"483":["={\\ae}","=\\ae"],"486":["v{G}","vG"],"487":["v{g}","vg"],"488":["v{K}","vK"],"489":["v{k}","vk"],"490":["k{O}"],"491":["k{o}"],"496":["v{\\j}","vj","v{j}"],"4964":[";"],"4965":[":"],"4966":[":"],"500":["'{G}","'G"],"501":["'{g}","'g"],"504":["`{N}","`N"],"505":["`{n}","`n"],"508":["'{\\AE}","'\\AE"],"509":["'{\\ae}","'\\ae"],"510":["'{\\O}","'\\O"],"511":["'{\\o}","'\\o"],"542":["v{H}","vH"],"543":["v{h}","vh"],"550":[".{A}",".A"],"551":[".{a}",".a"],"552":["c{E}","cE"],"553":["c{e}","ce"],"558":[".{O}",".O"],"559":[".{o}",".o"],"562":["={Y}","=Y"],"563":["={y}","=y"],"58":["colon"],"60":["leq","<"],"61":["eq"],"62":["geq",">"],"65040":[","],"65041":[","],"65043":[":"],"65044":[";"],"65077":["("],"65078":[")"],"65079":["("],"65080":[")"],"65081":["("],"65082":[")"],"65083":["("],"65084":[")"],"65085":["("],"65086":[")"],"65087":["("],"65088":[")"],"65089":["("],"65090":[")"],"65091":["("],"65092":[")"],"65104":[","],"65105":[","],"65108":[";"],"65109":[":"],"65113":["("],"65114":[")"],"65115":["("],"65116":[")"],"65117":["("],"65118":[")"],"65128":["sbs"],"65281":["!"],"65282":["\""],"65283":["#"],"65285":["%"],"65286":["&"],"65287":["'"],"65288":["("],"65289":[")"],"65290":["asterisk","*"],"65291":["+"],"65292":[","],"65294":["."],"65295":["/"],"65296":["F0"],"65297":["F1"],"65298":["F2"],"65299":["F3"],"65300":["F4"],"65301":["F5"],"65302":["F6"],"65303":["F7"],"65304":["F8"],"65305":["F9"],"65306":[":"],"65307":[";"],"65308":["leq","<"],"65309":["eq","="],"65310":["geq",">"],"65311":["?"],"65312":["@"],"65313":["FA"],"65314":["FB"],"65315":["FC"],"65316":["FD"],"65317":["FE"],"65318":["FF"],"65319":["FG"],"65320":["FH"],"65321":["FI"],"65322":["FJ"],"65323":["FK"],"65324":["FL"],"65325":["FM"],"65326":["FN"],"65327":["FO"],"65328":["FP"],"65329":["FQ"],"65330":["FR"],"65331":["FS"],"65332":["FT"],"65333":["FU"],"65334":["FV"],"65335":["FW"],"65336":["FX"],"65337":["FY"],"65338":["FZ"],"65339":["("],"65340":["/"],"65341":[")"],"65343":["__"],"65344":["`"],"65345":["Fa"],"65346":["Fb"],"65347":["Fc"],"65348":["Fd"],"65349":["Fe"],"65350":["Ff"],"65351":["Fg"],"65352":["Fh"],"65353":["Fi"],"65354":["Fj"],"65355":["Fk"],"65356":["Fl"],"65357":["Fm"],"65358":["Fn"],"65359":["Fo"],"65360":["Fp"],"65361":["Fq"],"65362":["Fr"],"65363":["Fs"],"65364":["Ft"],"65365":["Fu"],"65366":["Fv"],"65367":["Fw"],"65368":["Fx"],"65369":["Fy"],"65370":["Fz"],"65371":["("],"65373":[")"],"65374":["~"],"65375":["(("],"65376":["))"],"65378":["("],"65379":[")"],"65380":[","],"688":["^h","^h"],"690":["^j","^j"],"691":["^r","^r"],"695":["^w","^w"],"696":["^y","^y"],"699":[","],"711":["v{}"],"720":[":"],"728":["u{}"],"729":[".{}"],"732":["~{}"],"733":["H{}"],"736":["^\\gamma"],"737":["^l","^l"],"738":["^s","^s"],"739":["^x","^x"],"7468":["^A"],"7470":["^B"],"7472":["^D"],"7473":["^E"],"7475":["^G"],"7476":["^H"],"7477":["^I"],"7478":["^J"],"7479":["^K"],"7480":["^L"],"7481":["^M"],"7482":["^N"],"7484":["^O"],"7486":["^P"],"7487":["^R"],"7488":["^T"],"7489":["^U"],"7490":["^W"],"7491":["^a"],"7495":["^b"],"7496":["^d"],"7497":["^e"],"7499":["^Ge"],"7501":["^g"],"7503":["^k"],"7504":["^m"],"7506":["^o"],"7510":["^p"],"7511":["^t"],"7512":["^u"],"7515":["^v"],"7517":["^Gb"],"7518":["^Gg"],"7519":["^Gd"],"7520":["^Gf"],"7521":["^Gc"],"7522":["_i"],"7523":["_r"],"7524":["_u"],"7525":["_v"],"7526":["_Gb"],"7527":["_Gg"],"7528":["_Gr"],"7529":["_Gf"],"7530":["_Gc"],"7580":["^c"],"7584":["^f"],"760":[":"],"7611":["^z"],"7615":["^Gth"],"768":["`"],"7682":[".B"],"7683":[".b"],"7684":["d{B}"],"7685":["d{b}"],"769":["'"],"7690":[".D"],"7691":[".d"],"7692":["d{D}"],"7693":["d{d}"],"7696":["c{D}"],"7697":["c{d}"],"770":["^^","^"],"771":["^~","~"],"7710":[".F"],"7711":[".f"],"7712":["=G"],"7713":["=g"],"7714":[".H"],"7715":[".h"],"7716":["d{H}"],"7717":["d{h}"],"7718":["\"H"],"7719":["\"h"],"772":["="],"7720":["c{H}"],"7721":["c{h}"],"7728":["'K"],"7729":["'k"],"773":["^--"],"7730":["d{K}"],"7731":["d{k}"],"7734":["d{L}"],"7735":["d{l}"],"774":["^v","u"],"7742":["'M"],"7743":["'m"],"7744":[".M"],"7745":[".m"],"7746":["d{M}"],"7747":["d{m}"],"7748":[".N"],"7749":[".n"],"775":["^.","."],"7750":["d{N}"],"7751":["d{n}"],"776":["^.","\""],"7764":["'P"],"7765":["'p"],"7766":[".P"],"7767":[".p"],"7768":[".R"],"7769":[".r"],"7770":["d{R}"],"7771":["d{r}"],"7776":[".S"],"7777":[".s"],"7778":["d{S}"],"7779":["d{s}"],"7786":[".T"],"7787":[".t"],"7788":["d{T}"],"7789":["d{t}"],"779":["H"],"780":["^v","v"],"7804":["~V"],"7805":["~v"],"7806":["d{V}"],"7807":["d{v}"],"7808":["`W"],"7809":["`w"],"7810":["'W"],"7811":["'w"],"7812":["\"W"],"7813":["\"w"],"7814":[".W"],"7815":[".w"],"7816":["d{W}"],"7817":["d{w}"],"7818":[".X"],"7819":[".x"],"7820":["\"X"],"7821":["\"x"],"7822":[".Y"],"7823":[".y"],"7824":["^Z"],"7825":["^z"],"7826":["d{Z}"],"7827":["d{z}"],"7831":["\"t"],"7840":["d{A}"],"7841":["d{a}"],"785":["^^"],"7864":["d{E}"],"7865":["d{e}"],"7868":["~E"],"7869":["~e"],"7882":["d{I}"],"7883":["d{i}"],"7884":["d{O}"],"7885":["d{o}"],"7908":["d{U}"],"7909":["d{u}"],"7922":["`Y"],"7923":["`y"],"7924":["d{Y}"],"7925":["d{y}"],"7928":["~Y"],"7929":["~y"],"803":["_.","d"],"804":["_."],"807":["c"],"810":["_^"],"812":["_v"],"813":["_^"],"814":["_v"],"815":["_^"],"816":["_~"],"817":["b"],"818":["_--"],"819":["_--"],"8193":["quad"],"8196":[";"],"8197":[":"],"8204":["/"],"8211":["en","--"],"8212":["em","---"],"8214":["Vert"],"8216":["lq","grq"],"8217":["rq"],"8218":["glq"],"8220":["ldq","grqq","\"'"],"8221":["rdq"],"8222":["glqq","\"`"],"8224":["dag","dagger"],"8225":["ddag","ddagger"],"8226":["bu","bub","bullet"],"8227":["bu","but"],"8230":["ldots"],"8239":[","],"824":["not"],"8240":["permil"],"8241":["textpertenthousand"],"8242":["'","prime","varprime"],"8243":["'"],"8244":["'"],"8245":["`","backprime"],"8246":["`"],"8247":["`"],"8249":["flq"],"8250":["frq"],"8251":["textreferencemark"],"8252":["!!"],"8253":["?!","textinterrobang"],"8255":["undertie"],"8256":["tie"],"8258":["asterisk"],"826":["_v"],"8260":["textfractionsolidus"],"8261":["(","textlquill"],"8262":[")","textrquill"],"8263":["??"],"8264":["?!"],"8265":["!?"],"8268":["bu"],"8269":["bu"],"8270":["asterisk"],"8271":[";"],"8273":["asterisk"],"8274":["textdiscount"],"8279":["'"],"8304":["^0"],"8305":["^i"],"8308":["^4"],"8309":["^5"],"831":["^--"],"8310":["^6"],"8311":["^7"],"8312":["^8"],"8313":["^9"],"8314":["^+"],"8315":["^-"],"8316":["^="],"8317":["(","^("],"8318":[")","^)"],"8319":["^n","^n"],"8320":["_0"],"8321":["_1"],"8322":["_2"],"8323":["_3"],"8324":["_4"],"8325":["_5"],"8326":["_6"],"8327":["_7"],"8328":["_8"],"8329":["_9"],"8330":["_+"],"8331":["_-"],"8332":["_="],"8333":["(","_("],"8334":[")","_)"],"8336":["_a"],"8337":["_e"],"8338":["_o"],"8339":["_x"],"8341":["_h"],"8342":["_k"],"8343":["_l"],"8344":["_m"],"8345":["_n"],"8346":["_p"],"8347":["_s"],"8348":["_t"],"8353":["textcolonmonetary"],"8356":["textlira"],"8358":["textnaira"],"8361":["textwon"],"8364":["euro"],"8369":["textpeso"],"838":["^^"],"8400":["^l"],"8401":["^r"],"8404":["^l"],"8405":["^r"],"8406":["^l","^l-"],"8407":["^r","^r-"],"8411":["^."],"8412":["^."],"8413":["textbigcircle"],"8417":["^lr"],"844":["^~"],"845":["_lr"],"8450":["bC"],"8451":["celsius"],"8458":["Mcg","Mcg"],"8459":["McH","McH"],"8460":["MfH","MfH"],"8461":["bH"],"8462":["Mih","Mii"],"8463":["hbar"],"8464":["McI","mathscr{I}","McI"],"8465":["MfI","Im","MfI"],"8466":["McL","McL"],"8467":["ell"],"8469":["bN","Bbb{N}"],"8470":["textnumero"],"8471":["textcircledP"],"8472":["wp"],"8473":["bP","Bbb{P}"],"8474":["bQ"],"8475":["McR","McR"],"8476":["MfR","Re","MfR"],"8477":["bR","Bbb{R}"],"8478":["textrecipe"],"8480":["^{SM}"],"8481":["^{TEL}"],"8482":["^{TM}"],"8484":["bZ","Bbb{Z}"],"8487":["mho"],"8488":["MfZ","MfZ"],"8492":["McB","McB"],"8493":["MfC","MfC"],"8494":["textestimated"],"8495":["Mce","Mce"],"8496":["McE","McE"],"8497":["McF","McF"],"8499":["McM","McM"],"8500":["Mco","Mco"],"8508":["bGp"],"8509":["bGg"],"8510":["bGG"],"8511":["bGP"],"8512":["union","bGS"],"8523":["&"],"8531":["frac","frac13"],"8532":["frac","frac23"],"8533":["frac","frac15"],"8534":["frac","frac25"],"8535":["frac","frac35"],"8536":["frac","frac45"],"8537":["frac","frac16"],"8538":["frac","frac56"],"8539":["frac","frac18"],"8540":["frac","frac38"],"8541":["frac","frac58"],"8542":["frac","frac78"],"8543":["frac","frac1"],"8592":["l","l-","<-","gets","leftarrow","longleftarrow"],"8593":["u","u-","uparrow"],"8594":["r","r-","->","longrightarrow","rightarrow","to"],"8595":["d","d-","downarrow"],"8596":["lr","lr-","<->","leftrightarrow","longleftrightarrow"],"8597":["ud","ud-","updownarrow"],"8598":["ul","ul-","nwarrow"],"8599":["ur","ur-","nearrow"],"8600":["dr","dr-","searrow"],"8601":["dl","dl-","swarrow"],"8602":["l","l-n","<-n","nleftarrow"],"8603":["r","r-n","->n","nrightarrow"],"8604":["l","l~"],"8605":["r","r~","leadsto"],"8606":["l","ll-","twoheadleftarrow"],"8607":["u","uu-"],"8608":["r","rr-","twoheadrightarrow"],"8609":["d","dd-"],"8610":["l","l->","leftarrowtail"],"8611":["r","r->","rightarrowtail"],"8612":["l","l-|"],"8613":["u","u-|"],"8614":["r","r-|","longmapsto","mapsto"],"8615":["d","d-|"],"8616":["ud","ud-|"],"8617":["l","hookleftarrow"],"8618":["r","hookrightarrow"],"8619":["l","looparrowleft"],"8620":["r","looparrowright"],"8621":["lr","lr~","leftrightsquigarrow"],"8622":["lr","lr-n","<->n","nleftrightarrow"],"8623":["d","dz"],"8624":["u","Lsh"],"8625":["u","Rsh"],"8626":["d"],"8627":["d"],"8628":["r"],"8629":["d"],"8630":["l","curvearrowleft"],"8631":["r","curvearrowright"],"8632":["ul"],"8633":["l"],"8634":["l","circlearrowleft"],"8635":["r","circlearrowright"],"8636":["l","leftharpoonup"],"8637":["l","leftharpoondown"],"8638":["u","uprightharpoon"],"8639":["u","upleftharpoon"],"8640":["r","rightharpoonup"],"8641":["r","rightharpoondown"],"8642":["d","downrightharpoon"],"8643":["d","downleftharpoon"],"8644":["r","r-l-","rightleftarrows"],"8645":["u","u-d-"],"8646":["l","l-r-","leftrightarrows"],"8647":["l","l-2","leftleftarrows"],"8648":["u","u-2","upuparrows"],"8649":["r","r-2","rightrightarrows"],"8650":["d","d-2","downdownarrows"],"8651":["l","leftrightharpoons"],"8652":["r","rightleftharpoons"],"8653":["l","l=n","nLeftarrow"],"8654":["lr","lr=n","<=>n","nLeftrightarrow"],"8655":["r","r=n","=>n","nRightarrow"],"8656":["l","l=","<=","Leftarrow","Longleftarrow"],"8657":["u","u=","Uparrow"],"8658":["r","r=","=>","Longrightarrow","Rightarrow"],"8659":["d","d=","Downarrow"],"8660":["lr","lr=","<=>","Leftrightarrow","Longleftrightarrow","iff"],"8661":["ud","ud=","Updownarrow"],"8662":["ul","ul="],"8663":["ur","ur="],"8664":["dr","dr="],"8665":["dl","dl="],"8666":["l","l==","Lleftarrow"],"8667":["r","r==","Rrightarrow"],"8668":["l","l~"],"8669":["r","r~","squigarrowright"],"8670":["u"],"8671":["d"],"8672":["l"],"8673":["u"],"8674":["r"],"8675":["d"],"8676":["l"],"8677":["r"],"8678":["l"],"8679":["u"],"8680":["r"],"8681":["d"],"8682":["u"],"8683":["u"],"8684":["u"],"8685":["u"],"8686":["u"],"8687":["u"],"8688":["r"],"8689":["ul"],"8690":["dr"],"8691":["ud"],"8692":["r"],"8693":["d","d-u-"],"8694":["r","r-3"],"8695":["l"],"8696":["r"],"8697":["lr"],"8698":["l"],"8699":["r"],"8700":["lr"],"8701":["l"],"8702":["r"],"8703":["lr"],"8704":["all","forall"],"8705":["C","complement"],"8706":["partial"],"8707":["ex","exists"],"8708":["exn","nexists"],"8709":["0","emptyset"],"8710":["increment"],"8711":["nabla"],"8712":["member","in"],"8713":["member","inn","notin"],"8714":["member"],"8715":["member","ni"],"8716":["member","nin"],"8717":["member","backepsilon"],"8718":["qed","qed"],"8719":["intersection","prod"],"8720":["union","amalg","coprod","smallamalg"],"8721":["union","sum"],"8722":["minus"],"8723":["mp"],"8724":[".+","dotplus"],"8726":["setminus","smallsetminus"],"8727":["ast"],"8728":["o","comp","circ"],"8729":["."],"8730":["sqrt","surd"],"8731":["surd3"],"8732":["surd4"],"8733":["propto","varpropto"],"8734":["inf","infty"],"8735":["angle"],"8736":["angle"],"8737":["angle","measuredangle"],"8738":["angle","sphericalangle"],"8739":["|","mid","shortmid"],"8740":["|n","nmid","nshortmid"],"8741":["||","parallel","shortparallel"],"8742":["||n","nparallel","nshortparallel"],"8743":["intersection","and","wedge"],"8744":["union","or","vee"],"8745":["intersection","i","cap"],"8746":["union","un","cup"],"8747":["integral","int"],"8748":["integral"],"8749":["integral"],"8750":["integral","oint"],"8751":["integral"],"8752":["integral"],"8753":["integral"],"8754":["integral"],"8755":["integral"],"8756":["therefore"],"8757":["because"],"8758":[":"],"8759":["::"],"8760":[".-"],"8761":["-:"],"8762":["::-"],"8763":["eq",":~"],"8764":["eq","~","sim","thicksim"],"8765":["eq","backsim"],"8766":["eq"],"8767":["eq"],"8768":["eq","wr"],"8769":["eqn","~n","nsim"],"8770":["eq","-~"],"8771":["eq","~-","simeq"],"8772":["eqn","~-n","nsimeq"],"8773":["eq","~=","cong"],"8774":["eqn"],"8775":["eqn","~=n","ncong"],"8776":["eq","~~","approx","thickapprox"],"8777":["eqn","~~n","napprox"],"8778":["eq","~~-","approxeq"],"8779":["eq","~~~"],"8780":["eq","backcong"],"8781":["eq","asymp"],"8782":["eq","Bumpeq"],"8783":["eq","bumpeq"],"8784":["eq",".=","doteq"],"8785":["eq",".=.","doteqdot"],"8786":["eq","fallingdotseq"],"8787":["eq","risingdotseq"],"8788":["eq",":=","coloneq"],"8789":["eq","=:","eqcolon"],"8790":["eq","eqcirc"],"8791":["eq","=o","circeq"],"8792":["eq","(="],"8793":["eq","and=","defs"],"8794":["eq","or="],"8795":["eq","*="],"8796":["eq","t=","triangleq"],"8797":["eq","def="],"8798":["eq","m="],"8799":["eq","?="],"8800":["eqn","=n","ne","neq"],"8801":["eq","==","equiv"],"8802":["eqn","==n","nequiv"],"8803":["eq","==="],"8804":["leq","<=","le","leq","leqslant"],"8805":["geq",">=","ge","geq","geqslant"],"8806":["leq","leqq"],"8807":["geq","geqq"],"8808":["leqn","lneq","lneqq","lvertneqq"],"8809":["geqn","gneq","gneqq","gvertneqq"],"8810":["leq","<","ll"],"8811":["geq",">","gg"],"8812":["eq","between"],"8813":["eqn"],"8814":["leqn","n","ngtr"],"8816":["leqn","<=n","len","nleq","nleqq","nleqslant"],"8817":["geqn",">=n","gen","ngeq","ngeqq","ngeqslant"],"8818":["leq","<~","lessapprox","lesssim"],"8819":["geq",">~","gtrapprox","gtrsim"],"8820":["leqn","<~nn"],"8821":["geqn",">~nn"],"8822":["leq","lessgtr"],"8823":["geq","gtrless"],"8824":["leqn"],"8825":["geqn"],"8826":["leq","<","prec"],"8827":["geq",">","succ"],"8828":["leq","curlypreceq","preceq"],"8829":["geq","succcurlyeq","succeq"],"8830":["leq","precapprox","precsim"],"8831":["geq","succapprox","succsim"],"8832":["leqn","nprec"],"8833":["geqn","nsucc"],"8834":["leq","sub","<","subset"],"8835":["geq","sup",">","supset"],"8836":["leqn","subn","nsubset"],"8837":["geqn","supn","nsupset"],"8838":["leq","sub=","subseteq","subseteqq"],"8839":["geq","sup=","supseteq","supseteqq"],"8840":["leqn","sub=n","nsubseteq","nsubseteqq"],"8841":["geqn","sup=n","nsupseteq","nsupseteqq"],"8842":["leqn","subsetneq","subsetneqq"],"8843":["geqn","supsetneq","supsetneqq"],"8844":["union"],"8845":["union","u."],"8846":["union","u+","uplus"],"8847":["leq","squb","<","sqsubset"],"8848":["geq","squp",">","sqsupset"],"8849":["leq","squb=","sqsubseteq"],"8850":["geq","squp=","sqsupseteq"],"8851":["intersection","glb","sqcap"],"8852":["union","lub","sqcup"],"8853":["o+","oplus"],"8854":["o--","ominus"],"8855":["ox","otimes"],"8856":["o/","oslash"],"8857":["o.","odot"],"8858":["oo","circledcirc"],"8859":["o*","circledast"],"8860":["o="],"8861":["o-","circleddash"],"8862":["b+","boxplus"],"8863":["b-","boxminus"],"8864":["bx","boxtimes"],"8865":["b.","dotsquare"],"8866":["entails","|-","vdash"],"8867":["entails","-|","dashv"],"8868":["entails","top"],"8869":["entails","bot","perp"],"8870":["entails"],"8871":["entails","models"],"8872":["entails","|=","vDash"],"8873":["entails","||-","Vdash"],"8874":["entails","|||-","Vvdash"],"8875":["entails","||="],"8876":["entails","|-n","nvdash"],"8877":["entails","|=n","nvDash"],"8878":["entails","||-n","nVdash"],"8879":["entails","||=n","nVDash"],"8880":["leq","<"],"8881":["geq",">"],"8882":["leq","<","vartriangleleft"],"8883":["geq",">","vartriangleright"],"8884":["leq","trianglelefteq"],"8885":["geq","trianglerighteq"],"8888":["r","r-o","-o","multimap"],"8889":["+ "],"8890":["intercal"],"8891":["union","veebar"],"8892":["intersection","barwedge"],"8893":["union"],"8894":["angle"],"8895":["angle"],"8896":["intersection","And","bigwedge"],"8897":["union","Or","bigvee"],"8898":["intersection","I","bigcap"],"8899":["union","Un","bigcup"],"8900":["diamond"],"8902":["*","st","star"],"8903":["divideontimes"],"8904":["join","Join","bowtie"],"8905":["join","ltimes"],"8906":["join","rtimes"],"8907":["join","leftthreetimes"],"8908":["join","rightthreetimes"],"8909":["eq","backsimeq"],"8910":["union","curlyvee"],"8911":["intersection","curlywedge"],"8912":["leq","<","Subset"],"8913":["geq",">","Supset"],"8914":["intersection","Cap"],"8915":["union","Cup"],"8916":["pitchfork"],"8917":["eq"],"8918":["leq","<","lessdot"],"8919":["geq",">","gtrdot"],"8920":["leq","<","Ll"],"8921":["geq",">","ggg"],"8922":["leq","lesseqgtr","lesseqqgtr"],"8923":["geq","gtreqless","gtreqqless"],"8924":["leq","eqslantless"],"8925":["geq","eqslantgtr"],"8926":["leq","curlyeqprec"],"8927":["geq","curlyeqsucc"],"8928":["leqn","npreceq"],"8929":["geqn","nsucceq"],"8930":["leqn","squb=n"],"8931":["geqn","squp=n"],"8932":["leqn"],"8933":["geqn"],"8934":["leqn","<~n","lnapprox","lnsim"],"8935":["geqn",">~n","gnapprox","gnsim"],"8936":["leqn","precnapprox","precnsim"],"8937":["geqn","succnapprox","succnsim"],"8938":["leqn","ntriangleleft"],"8939":["geqn","ntriangleright"],"894":[";"],"8940":["leqn","ntrianglelefteq"],"8941":["geqn","ntrianglerighteq"],"8942":["...","vdots"],"8943":["...","cdots"],"8944":["..."],"8945":["...","ddots"],"8946":["member"],"8947":["member"],"8948":["member"],"8949":["member"],"8950":["member"],"8951":["member"],"8952":["member"],"8953":["member"],"8954":["member"],"8955":["member"],"8956":["member"],"8957":["member"],"8958":["member"],"8959":["member"],"8968":["c","cu","cuL","lceil"],"8969":["c","cu","cuR","rceil"],"8970":["c","cl","clL","lfloor"],"8971":["c","cl","clR","rfloor"],"8988":["c","cu","cul","ulcorner"],"8989":["c","cu","cur","urcorner"],"8990":["c","cl","cll","llcorner"],"8991":["c","cl","clr","lrcorner"],"8994":["frown"],"8995":["smallsmile","smile"],"9001":["(","langle","leftparengtr"],"9002":[")","rangle","rightparengtr"],"9014":["apl"],"9015":["apl"],"9016":["box=","boxeq","apl"],"9017":["boxdiv","apl"],"9018":["boxdi","apl"],"9019":["boxo","boxcomp","apl"],"9020":["boxO","boxcircle","apl"],"9021":["apl"],"9022":["apl"],"9023":["apl"],"9024":["apl"],"9025":["box/","apl"],"9026":["box\\","apl"],"9027":["box<","apl"],"9028":["box>","apl"],"9029":["apl"],"9030":["apl"],"9031":["boxl","apl"],"9032":["boxr","apl"],"9033":["apl"],"9034":["apl"],"9035":["apl"],"9036":["boxvee","apl"],"9037":["boxdelta","apl"],"9038":["apl"],"9039":["apl"],"9040":["boxu","apl"],"9041":["apl"],"9042":["apl"],"9043":["boxwedge","apl"],"9044":["boxnabla","apl"],"9045":["apl"],"9046":["apl"],"9047":["boxd","apl"],"9048":["apl"],"9049":["apl"],"9050":["apl"],"9051":["apl"],"9052":["apl"],"9053":["apl"],"9054":["box'","apl"],"9055":["O*","apl"],"9056":["box:","apl"],"9057":["apl"],"9058":["apl"],"9059":["apl"],"9060":["apl"],"9061":["apl"],"9062":["apl"],"9063":["apl"],"9064":["apl"],"9065":["apl"],"9066":["apl"],"9067":["apl"],"9068":["apl"],"9069":["apl"],"9070":[";","apl"],"9071":["boxneq","boxeqn","apl"],"9072":["box?","apl"],"9073":["apl"],"9074":["apl"],"9075":["apl"],"9076":["apl"],"9077":["apl"],"9078":["apl"],"9079":["apl"],"9080":["apl"],"9081":["apl"],"9082":["apl"],"91":["(","lbrack"],"9109":["apl"],"913":["GA"],"914":["GB"],"9140":["("],"9141":[")"],"915":["GG","Gamma"],"916":["GD","Delta"],"917":["GE"],"918":["GZ"],"919":["GH"],"92":["\\","backslash","\\"],"920":["GTH","Theta"],"921":["GI"],"922":["GK"],"923":["GL","Lambda"],"924":["GM"],"925":["GN"],"926":["GX","Xi"],"928":["Pi"],"929":["GR"],"93":[")","rbrack"],"931":["GS","Sigma"],"9312":["(1)"],"9313":["(2)"],"9314":["(3)"],"9315":["(4)"],"9316":["(5)"],"9317":["(6)"],"9318":["(7)"],"9319":["(8)"],"932":["GT"],"9320":["(9)"],"9321":["(10)"],"9322":["(11)"],"9323":["(12)"],"9324":["(13)"],"9325":["(14)"],"9326":["(15)"],"9327":["(16)"],"9328":["(17)"],"9329":["(18)"],"933":["GU","Upsilon"],"9330":["(19)"],"9331":["(20)"],"9332":["(1)"],"9333":["(2)"],"9334":["(3)"],"9335":["(4)"],"9336":["(5)"],"9337":["(6)"],"9338":["(7)"],"9339":["(8)"],"934":["GF","Phi"],"9340":["(9)"],"9341":["(10)"],"9342":["(11)"],"9343":["(12)"],"9344":["(13)"],"9345":["(14)"],"9346":["(15)"],"9347":["(16)"],"9348":["(17)"],"9349":["(18)"],"935":["GC"],"9350":["(19)"],"9351":["(20)"],"9352":["(1)"],"9353":["(2)"],"9354":["(3)"],"9355":["(4)"],"9356":["(5)"],"9357":["(6)"],"9358":["(7)"],"9359":["(8)"],"936":["GP","Psi"],"9360":["(9)"],"9361":["(10)"],"9362":["(11)"],"9363":["(12)"],"9364":["(13)"],"9365":["(14)"],"9366":["(15)"],"9367":["(16)"],"9368":["(17)"],"9369":["(18)"],"937":["GO","Omega"],"9370":["(19)"],"9371":["(20)"],"9372":["(a)"],"9373":["(b)"],"9374":["(c)"],"9375":["(d)"],"9376":["(e)"],"9377":["(f)"],"9378":["(g)"],"9379":["(h)"],"9380":["(i)"],"9381":["(j)"],"9382":["(k)"],"9383":["(l)"],"9384":["(m)"],"9385":["(n)"],"9386":["(o)"],"9387":["(p)"],"9388":["(q)"],"9389":["(r)"],"9390":["(s)"],"9391":["(t)"],"9392":["(u)"],"9393":["(v)"],"9394":["(w)"],"9395":["(x)"],"9396":["(y)"],"9397":["(z)"],"9398":["(a)"],"9399":["(b)"],"9400":["(c)"],"9401":["(d)"],"9402":["(e)"],"9403":["(f)"],"9404":["(g)"],"9405":["(h)"],"9406":["(i)"],"9407":["(j)"],"9408":["(k)"],"9409":["(l)"],"9410":["(m)"],"9411":["(n)"],"9412":["(o)"],"9413":["(p)"],"9414":["(q)"],"9415":["(r)"],"9416":["(s)","circledS"],"9417":["(t)"],"9418":["(u)"],"9419":["(v)"],"9420":["(w)"],"9421":["(x)"],"9422":["(y)"],"9423":["(z)"],"9424":["(a)"],"9425":["(b)"],"9426":["(c)"],"9427":["(d)"],"9428":["(e)"],"9429":["(f)"],"9430":["(g)"],"9431":["(h)"],"9432":["(i)"],"9433":["(j)"],"9434":["(k)"],"9435":["(l)"],"9436":["(m)"],"9437":["(n)"],"9438":["(o)"],"9439":["(p)"],"9440":["(q)"],"9441":["(r)"],"9442":["(s)"],"9443":["(t)"],"9444":["(u)"],"9445":["(v)"],"9446":["(w)"],"9447":["(x)"],"9448":["(y)"],"9449":["(z)"],"945":["Ga","alpha"],"9450":["(0)"],"9451":["(11)"],"9452":["(12)"],"9453":["(13)"],"9454":["(14)"],"9455":["(15)"],"9456":["(16)"],"9457":["(17)"],"9458":["(18)"],"9459":["(19)"],"946":["Gb","beta"],"9460":["(20)"],"947":["Gg","gamma"],"9471":["(0)"],"9472":["---"],"9473":["--_"],"9474":["---"],"9475":["--_"],"9476":["--."],"9477":["--."],"9478":["--."],"9479":["--."],"948":["Gd","delta"],"9480":["--."],"9481":["--."],"9482":["--."],"9483":["--."],"9484":["---"],"9485":["--_"],"9486":["--_"],"9487":["--_"],"9488":["---"],"9489":["--_"],"949":["Ge","epsilon"],"9490":["--_"],"9491":["--_"],"9492":["---"],"9493":["--_"],"9494":["--_"],"9495":["--_"],"9496":["---"],"9497":["--_"],"9498":["--_"],"9499":["--_"],"950":["Gz","zeta"],"9500":["---"],"9501":["--_"],"9502":["--_"],"9503":["--_"],"9504":["--_"],"9505":["--_"],"9506":["--_"],"9507":["--_"],"9508":["---"],"9509":["--_"],"951":["Gh","eta"],"9510":["--_"],"9511":["--_"],"9512":["--_"],"9513":["--_"],"9514":["--_"],"9515":["--_"],"9516":["---"],"9517":["--_"],"9518":["--_"],"9519":["--_"],"952":["Gth","theta"],"9520":["--_"],"9521":["--_"],"9522":["--_"],"9523":["--_"],"9524":["---"],"9525":["--_"],"9526":["--_"],"9527":["--_"],"9528":["--_"],"9529":["--_"],"953":["Gi","iota"],"9530":["--_"],"9531":["--_"],"9532":["---"],"9533":["--_"],"9534":["--_"],"9535":["--_"],"9536":["--_"],"9537":["--_"],"9538":["--_"],"9539":["--_"],"954":["Gk","kappa"],"9540":["--_"],"9541":["--_"],"9542":["--_"],"9543":["--_"],"9544":["--_"],"9545":["--_"],"9546":["--_"],"9547":["--_"],"9548":["--."],"9549":["--."],"955":["Gl","lambda"],"9550":["--."],"9551":["--."],"9552":["--="],"9553":["--="],"9554":["--="],"9555":["--="],"9556":["--="],"9557":["--="],"9558":["--="],"9559":["--="],"956":["Gm","mu"],"9560":["--="],"9561":["--="],"9562":["--="],"9563":["--="],"9564":["--="],"9565":["--="],"9566":["--="],"9567":["--="],"9568":["--="],"9569":["--="],"957":["Gn","nu"],"9570":["--="],"9571":["--="],"9572":["--="],"9573":["--="],"9574":["--="],"9575":["--="],"9576":["--="],"9577":["--="],"9578":["--="],"9579":["--="],"958":["Gx","xi"],"9580":["--="],"9581":["---"],"9582":["---"],"9583":["---"],"9584":["---"],"9585":["---"],"9586":["---"],"9587":["---"],"9588":["---"],"9589":["---"],"9590":["---"],"9591":["---"],"9592":["--_"],"9593":["--_"],"9594":["--_"],"9595":["--_"],"9596":["--_"],"9597":["--_"],"9598":["--_"],"9599":["--_"],"960":["pi"],"961":["Gr","rho"],"962":["varsigma"],"963":["Gs","sigma"],"9632":["sq","sqb"],"9633":["sq","sqw","Box","square"],"9634":["sq","sqo"],"9635":["sq","sq."],"9636":["sq"],"9637":["sq"],"9638":["sq"],"9639":["sq"],"964":["Gt","tau"],"9640":["sq"],"9641":["sq"],"9642":["blacksquare"],"9644":["re","reb"],"9645":["re","rew"],"9646":["re","reb"],"9647":["re","rew"],"9648":["pa","pab"],"9649":["pa","paw"],"965":["Gu","upsilon"],"9650":["T","Tb"],"9651":["T","Tw","bigtriangleup"],"9652":["t","tb","blacktriangle"],"9653":["t","tw","triangle"],"9654":["T","Tb"],"9655":["T","Tw","rhd"],"9656":["t","tb","blacktriangleright"],"9657":["t","tw","triangleright"],"9658":["t","tb"],"9659":["t","tw"],"966":["Gf","phi","straightphi"],"9660":["T","Tb"],"9661":["T","Tw","bigtriangledown"],"9662":["t","tb","blacktriangledown"],"9663":["t","tw","triangledown"],"9664":["T","Tb"],"9665":["T","Tw","lhd"],"9666":["t","tb","blacktriangleleft"],"9667":["t","tw","triangleleft"],"9668":["t","tb"],"9669":["t","tw"],"967":["Gc","chi"],"9670":["di","dib"],"9671":["di","diw","Diamond"],"9672":["di","di."],"9675":["ci","ciw"],"9676":["ci","ci.."],"9677":["ci"],"9678":["ci","ci."],"9679":["ci","cib"],"968":["Gp","psi"],"9680":["ci"],"9681":["ci"],"9682":["ci"],"9683":["ci"],"9684":["ci"],"9685":["ci"],"9686":["ci"],"9687":["ci"],"969":["Go","omega"],"9696":["ci"],"9697":["ci"],"9698":["t","tb"],"9699":["t","tb"],"9700":["t","tb"],"9701":["t","tb"],"9702":["bu","buw","textopenbullet"],"9703":["sq"],"9704":["sq"],"9705":["sq"],"9706":["sq"],"9707":["sq"],"9708":["T"],"9709":["T"],"9710":["T"],"9711":["ci","ciO","bigcirc"],"9712":["sq"],"9713":["sq"],"9714":["sq"],"9715":["sq"],"9716":["ci"],"9717":["ci"],"9718":["ci"],"9719":["ci"],"9720":["t","tw"],"9721":["t","tw"],"9722":["t","tw"],"9723":["sq","sqw"],"9724":["sq","sqb"],"9725":["sq","sqw"],"9726":["sq","sqb"],"9727":["t","tw"],"9733":["st","bigstar"],"9734":["st"],"977":["vartheta"],"9785":["Frowny"],"9786":["Smiley"],"9787":["blacksmiley"],"981":["varphi"],"982":["varpi"],"9824":["spadesuit"],"9826":["diamondsuit"],"9827":["clubsuit"],"9829":["heartsuit"],"9833":["note"],"9834":["note","textmusicalnote"],"9835":["note"],"9836":["note"],"9837":["b","flat"],"9838":["natural"],"9839":["#","sharp"],"9856":["die"],"9857":["die"],"9858":["die"],"9859":["die"],"9860":["die"],"9861":["die"],"9862":["ci"],"9863":["ci"],"9864":["ci"],"9865":["ci"],"988":["digamma"],"9986":["8<"],"9988":["8<"],"9993":["Letter"]} \ No newline at end of file From 8cad783b4b7867b4a7d98e34698c28d742ab8cc3 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Mon, 11 Dec 2023 17:08:35 +0800 Subject: [PATCH 079/109] [ dep ] Bump language-server-mule to v0.4.2 --- package-lock.json | 1452 +++++++++++++++++++++++++++++---------------- package.json | 2 +- 2 files changed, 928 insertions(+), 526 deletions(-) diff --git a/package-lock.json b/package-lock.json index 25d2ed5b..f13d5268 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "compare-versions": "^3.5.1", "eventemitter3": ">=4.0.0", "getos": "^3.2.1", - "language-server-mule": "github:banacorn/language-server-mule#v0.4.1", + "language-server-mule": "github:banacorn/language-server-mule#v0.4.2", "react": "^16.9.0", "react-dom": "^16.9.0", "reason-promise": ">=1.1.0", @@ -43,32 +43,37 @@ }, "node_modules/@datastructures-js/binary-search-tree": { "version": "4.3.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@datastructures-js/binary-search-tree/-/binary-search-tree-4.3.2.tgz", + "integrity": "sha512-fZV3GoZAPxfgGTky7Q+5oiMUtLhQoHxSlJt3DmUPbl+1pMpuopOSG/MymdcruWOBQU90kSzo0lN+3gmSaEYCTw==" }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.0.0" } }, "node_modules/@gar/promisify": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true }, "node_modules/@glennsl/rescript-json-combinators": { "version": "1.3.0", - "license": "(LGPL-3.0 OR MPL-2.0)", + "resolved": "https://registry.npmjs.org/@glennsl/rescript-json-combinators/-/rescript-json-combinators-1.3.0.tgz", + "integrity": "sha512-5HACiKHBDi5Y0XHStCfW1+G0IZja4stsZ8uZDxVL1kbTfEhvL/FExHG5iUG4AWPW++DG38nx8eXZ2wXhAgUvYQ==", "engines": { "node": "*" } }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -80,24 +85,27 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -105,13 +113,15 @@ }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -119,8 +129,9 @@ }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -131,16 +142,18 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -151,8 +164,9 @@ }, "node_modules/@npmcli/fs": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", "dev": true, - "license": "ISC", "dependencies": { "@gar/promisify": "^1.0.1", "semver": "^7.3.5" @@ -160,8 +174,10 @@ }, "node_modules/@npmcli/move-file": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "deprecated": "This functionality has been moved to @npmcli/fs", "dev": true, - "license": "MIT", "dependencies": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" @@ -172,7 +188,8 @@ }, "node_modules/@rescript/react": { "version": "0.10.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@rescript/react/-/react-0.10.3.tgz", + "integrity": "sha512-Lf9rzrR3bQPKJjOK3PBRa/B3xrJ7CqQ1HYr9VHPVxJidarIJJFZBhj0Dg1uZURX+Wg/xiP0PHFxXmdj2bK8Vxw==", "peerDependencies": { "react": ">=16.8.1", "react-dom": ">=16.8.1" @@ -180,16 +197,18 @@ }, "node_modules/@tootallnate/once": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/@types/eslint": { "version": "8.44.8", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.8.tgz", + "integrity": "sha512-4K8GavROwhrYl2QXDXm0Rv9epkA8GBFu0EI+XrrnnuCl7u8CWBRusX7fXJfanhZTDWSAL24gDI/UqXyUM0Injw==", "dev": true, - "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -197,8 +216,9 @@ }, "node_modules/@types/eslint-scope": { "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, - "license": "MIT", "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -206,18 +226,21 @@ }, "node_modules/@types/estree": { "version": "1.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true }, "node_modules/@types/json-schema": { "version": "7.0.15", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true }, "node_modules/@types/node": { - "version": "20.10.3", + "version": "20.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", + "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", "dev": true, - "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } @@ -239,8 +262,9 @@ }, "node_modules/@webassemblyjs/ast": { "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -248,23 +272,27 @@ }, "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.11.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.11.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -273,13 +301,15 @@ }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -289,29 +319,33 @@ }, "node_modules/@webassemblyjs/ieee754": { "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, - "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { "version": "1.11.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -325,8 +359,9 @@ }, "node_modules/@webassemblyjs/wasm-gen": { "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", @@ -337,8 +372,9 @@ }, "node_modules/@webassemblyjs/wasm-opt": { "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -348,8 +384,9 @@ }, "node_modules/@webassemblyjs/wasm-parser": { "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -361,8 +398,9 @@ }, "node_modules/@webassemblyjs/wast-printer": { "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" @@ -370,8 +408,9 @@ }, "node_modules/@webpack-cli/configtest": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", "dev": true, - "license": "MIT", "peerDependencies": { "webpack": "4.x.x || 5.x.x", "webpack-cli": "4.x.x" @@ -379,8 +418,9 @@ }, "node_modules/@webpack-cli/info": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", "dev": true, - "license": "MIT", "dependencies": { "envinfo": "^7.7.3" }, @@ -390,8 +430,9 @@ }, "node_modules/@webpack-cli/serve": { "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", "dev": true, - "license": "MIT", "peerDependencies": { "webpack-cli": "4.x.x" }, @@ -403,18 +444,21 @@ }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true }, "node_modules/@xtuc/long": { "version": "4.2.2", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true }, "node_modules/acorn": { "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true, - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -424,16 +468,18 @@ }, "node_modules/acorn-import-assertions": { "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, - "license": "MIT", "peerDependencies": { "acorn": "^8" } }, "node_modules/agent-base": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, - "license": "MIT", "dependencies": { "debug": "4" }, @@ -443,8 +489,9 @@ }, "node_modules/aggregate-error": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, - "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -455,8 +502,9 @@ }, "node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -470,40 +518,45 @@ }, "node_modules/ajv-keywords": { "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/amdefine": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", "dev": true, - "license": "BSD-3-Clause OR MIT", "engines": { "node": ">=0.4.2" } }, "node_modules/ansi-colors": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/ansi-regex": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -516,8 +569,9 @@ }, "node_modules/anymatch": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, - "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -528,13 +582,15 @@ }, "node_modules/argparse": { "version": "2.0.1", - "dev": true, - "license": "Python-2.0" + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/array-buffer-byte-length": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "is-array-buffer": "^3.0.1" @@ -545,16 +601,18 @@ }, "node_modules/array-union": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/array.prototype.reduce": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz", + "integrity": "sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -571,8 +629,9 @@ }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", "dev": true, - "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.2", @@ -591,12 +650,14 @@ }, "node_modules/async": { "version": "3.2.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, "node_modules/available-typed-arrays": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -606,7 +667,8 @@ }, "node_modules/balanced-match": { "version": "1.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/big-integer": { "version": "1.6.52", @@ -618,8 +680,9 @@ }, "node_modules/big.js": { "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, - "license": "MIT", "engines": { "node": "*" } @@ -638,8 +701,9 @@ }, "node_modules/binary-extensions": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -651,7 +715,8 @@ }, "node_modules/brace-expansion": { "version": "1.1.11", - "license": "MIT", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -659,8 +724,9 @@ }, "node_modules/braces": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, - "license": "MIT", "dependencies": { "fill-range": "^7.0.1" }, @@ -670,11 +736,14 @@ }, "node_modules/browser-stdout": { "version": "1.3.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true }, "node_modules/browserslist": { "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", "dev": true, "funding": [ { @@ -690,7 +759,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "caniuse-lite": "^1.0.30001565", "electron-to-chromium": "^1.4.601", @@ -706,32 +774,36 @@ }, "node_modules/bs-mocha": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bs-mocha/-/bs-mocha-1.0.0.tgz", + "integrity": "sha512-/OjgBZdG1YyC/6SEvXihG/sgWFyenQtRJ0TOewo944XwQuDIv82jtrxYjBPbkhGHdLYnc4EfaLdPC+tW86iKEw==", "dev": true, - "license": "MIT", "dependencies": { "mocha": "^6.2.0" } }, "node_modules/bs-mocha/node_modules/ansi-colors": { "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/bs-mocha/node_modules/ansi-regex": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/bs-mocha/node_modules/ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -741,24 +813,27 @@ }, "node_modules/bs-mocha/node_modules/argparse": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/bs-mocha/node_modules/camelcase": { "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/bs-mocha/node_modules/chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -770,8 +845,9 @@ }, "node_modules/bs-mocha/node_modules/chalk/node_modules/supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -781,8 +857,9 @@ }, "node_modules/bs-mocha/node_modules/cliui": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^3.1.0", "strip-ansi": "^5.2.0", @@ -791,58 +868,67 @@ }, "node_modules/bs-mocha/node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/bs-mocha/node_modules/color-name": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, "node_modules/bs-mocha/node_modules/debug": { "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/bs-mocha/node_modules/decamelize": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/bs-mocha/node_modules/diff": { "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, "node_modules/bs-mocha/node_modules/emoji-regex": { "version": "7.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true }, "node_modules/bs-mocha/node_modules/escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/bs-mocha/node_modules/find-up": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^3.0.0" }, @@ -852,8 +938,9 @@ }, "node_modules/bs-mocha/node_modules/flat": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", + "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "is-buffer": "~2.0.3" }, @@ -863,8 +950,9 @@ }, "node_modules/bs-mocha/node_modules/glob": { "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -879,24 +967,27 @@ }, "node_modules/bs-mocha/node_modules/has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/bs-mocha/node_modules/is-fullwidth-code-point": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/bs-mocha/node_modules/js-yaml": { "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -907,8 +998,9 @@ }, "node_modules/bs-mocha/node_modules/locate-path": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -919,8 +1011,9 @@ }, "node_modules/bs-mocha/node_modules/log-symbols": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^2.0.1" }, @@ -930,8 +1023,9 @@ }, "node_modules/bs-mocha/node_modules/minimatch": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -941,8 +1035,10 @@ }, "node_modules/bs-mocha/node_modules/mkdirp": { "version": "0.5.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", + "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", "dev": true, - "license": "MIT", "dependencies": { "minimist": "^1.2.5" }, @@ -952,8 +1048,9 @@ }, "node_modules/bs-mocha/node_modules/mocha": { "version": "6.2.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.3.tgz", + "integrity": "sha512-0R/3FvjIGH3eEuG17ccFPk117XL2rWxatr81a57D+r/x2uTYZRbdZ4oVidEUMh2W2TJDa7MdAb12Lm2/qrKajg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-colors": "3.2.3", "browser-stdout": "1.3.1", @@ -989,13 +1086,15 @@ }, "node_modules/bs-mocha/node_modules/ms": { "version": "2.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true }, "node_modules/bs-mocha/node_modules/p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -1008,8 +1107,9 @@ }, "node_modules/bs-mocha/node_modules/p-locate": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^2.0.0" }, @@ -1019,16 +1119,18 @@ }, "node_modules/bs-mocha/node_modules/path-exists": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/bs-mocha/node_modules/string-width": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, - "license": "MIT", "dependencies": { "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", @@ -1040,8 +1142,9 @@ }, "node_modules/bs-mocha/node_modules/strip-ansi": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^4.1.0" }, @@ -1051,16 +1154,18 @@ }, "node_modules/bs-mocha/node_modules/strip-json-comments": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/bs-mocha/node_modules/supports-color": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -1070,8 +1175,9 @@ }, "node_modules/bs-mocha/node_modules/which": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -1081,8 +1187,9 @@ }, "node_modules/bs-mocha/node_modules/wrap-ansi": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^3.2.0", "string-width": "^3.0.0", @@ -1094,13 +1201,15 @@ }, "node_modules/bs-mocha/node_modules/y18n": { "version": "4.0.3", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true }, "node_modules/bs-mocha/node_modules/yargs": { "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, - "license": "MIT", "dependencies": { "cliui": "^5.0.0", "find-up": "^3.0.0", @@ -1116,8 +1225,9 @@ }, "node_modules/bs-mocha/node_modules/yargs-parser": { "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, - "license": "ISC", "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -1125,8 +1235,9 @@ }, "node_modules/bs-mocha/node_modules/yargs-unparser": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", "dev": true, - "license": "MIT", "dependencies": { "flat": "^4.1.0", "lodash": "^4.17.15", @@ -1138,8 +1249,9 @@ }, "node_modules/bs-platform": { "version": "9.0.2", + "resolved": "https://registry.npmjs.org/bs-platform/-/bs-platform-9.0.2.tgz", + "integrity": "sha512-Ye9JqJ4Oa7mcjjoOVRYI8Uc2Cf8N7jQLWDcdUplY7996d/YErSR7WitmV7XnSwr4EvdrbwjEsg1NxNjUQv3ChA==", "hasInstallScript": true, - "license": "SEE LICENSE IN LICENSE", "bin": { "bsb": "bsb", "bsc": "bsc", @@ -1149,8 +1261,9 @@ }, "node_modules/buffer-from": { "version": "1.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true }, "node_modules/buffer-indexof-polyfill": { "version": "1.0.2", @@ -1170,8 +1283,9 @@ }, "node_modules/cacache": { "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/fs": "^1.0.0", "@npmcli/move-file": "^1.0.1", @@ -1198,8 +1312,9 @@ }, "node_modules/call-bind": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, - "license": "MIT", "dependencies": { "function-bind": "^1.1.2", "get-intrinsic": "^1.2.1", @@ -1211,8 +1326,9 @@ }, "node_modules/camelcase": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -1221,7 +1337,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001566", + "version": "1.0.30001568", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001568.tgz", + "integrity": "sha512-vSUkH84HontZJ88MiNrOau1EBrCqEQYgkC5gIySiDlpsm8sGVrhU7Kx4V6h0tnqaHzIHZv08HlJIwPbL4XL9+A==", "dev": true, "funding": [ { @@ -1236,8 +1354,7 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ], - "license": "CC-BY-4.0" + ] }, "node_modules/chainsaw": { "version": "0.1.0", @@ -1252,8 +1369,9 @@ }, "node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1267,8 +1385,9 @@ }, "node_modules/chalk/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -1278,6 +1397,8 @@ }, "node_modules/chokidar": { "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "funding": [ { @@ -1285,7 +1406,6 @@ "url": "https://paulmillr.com/funding/" } ], - "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -1304,32 +1424,36 @@ }, "node_modules/chownr": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/chrome-trace-event": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.0" } }, "node_modules/clean-stack": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/cliui": { "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -1338,8 +1462,9 @@ }, "node_modules/clone-deep": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, - "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -1351,8 +1476,9 @@ }, "node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -1362,39 +1488,46 @@ }, "node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/colorette": { "version": "2.0.20", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true }, "node_modules/commander": { "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, - "license": "MIT", "engines": { "node": ">= 12" } }, "node_modules/commondir": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true }, "node_modules/compare-versions": { "version": "3.6.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==" }, "node_modules/concat-map": { "version": "0.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/copy-anything": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", "dev": true, - "license": "MIT", "dependencies": { "is-what": "^3.14.1" }, @@ -1404,8 +1537,9 @@ }, "node_modules/copy-webpack-plugin": { "version": "6.4.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.4.1.tgz", + "integrity": "sha512-MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA==", "dev": true, - "license": "MIT", "dependencies": { "cacache": "^15.0.5", "fast-glob": "^3.2.4", @@ -1432,12 +1566,14 @@ }, "node_modules/core-util-is": { "version": "1.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "node_modules/cross-spawn": { "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -1449,8 +1585,9 @@ }, "node_modules/debug": { "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -1463,15 +1600,11 @@ } } }, - "node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "dev": true, - "license": "MIT" - }, "node_modules/decamelize": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -1481,8 +1614,9 @@ }, "node_modules/define-data-property": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, - "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.1", "gopd": "^1.0.1", @@ -1494,8 +1628,9 @@ }, "node_modules/define-properties": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, - "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -1510,16 +1645,18 @@ }, "node_modules/diff": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, "node_modules/dir-glob": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, - "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -1529,6 +1666,8 @@ }, "node_modules/dom-walk": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", "dev": true }, "node_modules/duplexer2": { @@ -1540,27 +1679,31 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.601", - "dev": true, - "license": "ISC" + "version": "1.4.609", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.609.tgz", + "integrity": "sha512-ihiCP7PJmjoGNuLpl7TjNA8pCQWu09vGyjlPYw1Rqww4gvNuCcmvl+44G+2QyJ6S2K4o+wbTS++Xz0YN8Q9ERw==", + "dev": true }, "node_modules/emoji-regex": { "version": "8.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "node_modules/emojis-list": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/enhanced-resolve": { "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -1571,8 +1714,9 @@ }, "node_modules/envinfo": { "version": "7.11.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz", + "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==", "dev": true, - "license": "MIT", "bin": { "envinfo": "dist/cli.js" }, @@ -1582,8 +1726,9 @@ }, "node_modules/errno": { "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "prr": "~1.0.1" @@ -1594,8 +1739,9 @@ }, "node_modules/es-abstract": { "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, - "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.0", "arraybuffer.prototype.slice": "^1.0.2", @@ -1646,8 +1792,9 @@ }, "node_modules/es-abstract/node_modules/object.assign": { "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -1663,18 +1810,21 @@ }, "node_modules/es-array-method-boxes-properly": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true }, "node_modules/es-module-lexer": { "version": "1.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", + "dev": true }, "node_modules/es-set-tostringtag": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dev": true, - "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.2", "has-tostringtag": "^1.0.0", @@ -1686,8 +1836,9 @@ }, "node_modules/es-to-primitive": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, - "license": "MIT", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -1702,16 +1853,18 @@ }, "node_modules/escalade": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -1721,8 +1874,9 @@ }, "node_modules/eslint-scope": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -1733,8 +1887,9 @@ }, "node_modules/esprima": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -1745,8 +1900,9 @@ }, "node_modules/esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -1756,46 +1912,53 @@ }, "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/estraverse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/eventemitter3": { "version": "5.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" }, "node_modules/events": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.x" } }, "node_modules/extend": { "version": "3.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "node_modules/fast-glob": { "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -1809,29 +1972,33 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "node_modules/fastest-levenshtein": { "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4.9.1" } }, "node_modules/fastq": { "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, - "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/fill-range": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, - "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1841,8 +2008,9 @@ }, "node_modules/find-cache-dir": { "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, - "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -1857,8 +2025,9 @@ }, "node_modules/find-up": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -1872,24 +2041,27 @@ }, "node_modules/flat": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } }, "node_modules/for-each": { "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, - "license": "MIT", "dependencies": { "is-callable": "^1.1.3" } }, "node_modules/fs-minipass": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -1899,12 +2071,15 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, - "license": "MIT", + "hasInstallScript": true, "optional": true, "os": [ "darwin" @@ -1951,16 +2126,18 @@ }, "node_modules/function-bind": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/function.prototype.name": { "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -1976,24 +2153,27 @@ }, "node_modules/functions-have-names": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/get-caller-file": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, - "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-intrinsic": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, - "license": "MIT", "dependencies": { "function-bind": "^1.1.2", "has-proto": "^1.0.1", @@ -2006,8 +2186,9 @@ }, "node_modules/get-symbol-description": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -2021,14 +2202,16 @@ }, "node_modules/getos": { "version": "3.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", "dependencies": { "async": "^3.2.0" } }, "node_modules/glob": { "version": "7.2.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2046,8 +2229,9 @@ }, "node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -2057,13 +2241,15 @@ }, "node_modules/glob-to-regexp": { "version": "0.4.1", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true }, "node_modules/global": { "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", "dev": true, - "license": "MIT", "dependencies": { "min-document": "^2.19.0", "process": "^0.11.10" @@ -2071,8 +2257,9 @@ }, "node_modules/globalthis": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dev": true, - "license": "MIT", "dependencies": { "define-properties": "^1.1.3" }, @@ -2085,8 +2272,9 @@ }, "node_modules/globby": { "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, - "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -2104,8 +2292,9 @@ }, "node_modules/gopd": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, - "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -2115,36 +2304,41 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "license": "ISC" + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/growl": { "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4.x" } }, "node_modules/has-bigints": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/has-property-descriptors": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, - "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.2" }, @@ -2154,8 +2348,9 @@ }, "node_modules/has-proto": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -2165,8 +2360,9 @@ }, "node_modules/has-symbols": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -2176,8 +2372,9 @@ }, "node_modules/has-tostringtag": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dev": true, - "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -2190,8 +2387,9 @@ }, "node_modules/hasown": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, - "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -2201,16 +2399,18 @@ }, "node_modules/he": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, - "license": "MIT", "bin": { "he": "bin/he" } }, "node_modules/http-proxy-agent": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, - "license": "MIT", "dependencies": { "@tootallnate/once": "1", "agent-base": "6", @@ -2222,8 +2422,9 @@ }, "node_modules/https-proxy-agent": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, - "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -2234,8 +2435,9 @@ }, "node_modules/iconv-lite": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -2246,16 +2448,18 @@ }, "node_modules/ignore": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/image-size": { "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", "dev": true, - "license": "MIT", "optional": true, "bin": { "image-size": "bin/image-size.js" @@ -2272,8 +2476,9 @@ }, "node_modules/import-local": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, - "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -2290,28 +2495,32 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/infer-owner": { "version": "1.0.4", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true }, "node_modules/inflight": { "version": "1.0.6", - "license": "ISC", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -2319,12 +2528,14 @@ }, "node_modules/inherits": { "version": "2.0.4", - "license": "ISC" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/internal-slot": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, - "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.2", "hasown": "^2.0.0", @@ -2336,16 +2547,18 @@ }, "node_modules/interpret": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/is-array-buffer": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.0", @@ -2357,8 +2570,9 @@ }, "node_modules/is-bigint": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, - "license": "MIT", "dependencies": { "has-bigints": "^1.0.1" }, @@ -2368,8 +2582,9 @@ }, "node_modules/is-binary-path": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, - "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -2379,8 +2594,9 @@ }, "node_modules/is-boolean-object": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -2394,6 +2610,8 @@ }, "node_modules/is-buffer": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", "dev": true, "funding": [ { @@ -2409,15 +2627,15 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/is-callable": { "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -2427,8 +2645,9 @@ }, "node_modules/is-core-module": { "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, - "license": "MIT", "dependencies": { "hasown": "^2.0.0" }, @@ -2438,8 +2657,9 @@ }, "node_modules/is-date-object": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, - "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -2452,24 +2672,27 @@ }, "node_modules/is-extglob": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-glob": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -2479,8 +2702,9 @@ }, "node_modules/is-negative-zero": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -2490,16 +2714,18 @@ }, "node_modules/is-number": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-number-object": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, - "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -2512,16 +2738,18 @@ }, "node_modules/is-plain-obj": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-plain-object": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, - "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -2531,8 +2759,9 @@ }, "node_modules/is-regex": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -2546,8 +2775,9 @@ }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -2557,8 +2787,9 @@ }, "node_modules/is-string": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, - "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -2571,8 +2802,9 @@ }, "node_modules/is-symbol": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, - "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -2585,8 +2817,9 @@ }, "node_modules/is-typed-array": { "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", "dev": true, - "license": "MIT", "dependencies": { "which-typed-array": "^1.1.11" }, @@ -2599,8 +2832,9 @@ }, "node_modules/is-unicode-supported": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -2610,8 +2844,9 @@ }, "node_modules/is-weakref": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -2621,30 +2856,35 @@ }, "node_modules/is-what": { "version": "3.14.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true }, "node_modules/isarray": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "node_modules/isexe": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, "node_modules/isobject": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/jest-worker": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -2656,12 +2896,14 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -2671,18 +2913,21 @@ }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, "node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/json5": { "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -2704,23 +2949,25 @@ }, "node_modules/kind-of": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/klona": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/language-server-mule": { - "version": "0.4.0", - "resolved": "git+ssh://git@github.com/banacorn/language-server-mule.git#bcbfc1959fa54fdb47f9e363fd8587efc871c8c6", + "version": "0.4.2", + "resolved": "git+ssh://git@github.com/banacorn/language-server-mule.git#aa3b80718226359bbfb10b199a6aa4fcaa632582", "license": "MIT", "dependencies": { "@glennsl/rescript-json-combinators": "^1.3.0", @@ -2737,8 +2984,9 @@ }, "node_modules/less": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", + "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "copy-anything": "^2.0.1", "parse-node-version": "^1.0.1", @@ -2762,8 +3010,9 @@ }, "node_modules/less-loader": { "version": "7.3.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-7.3.0.tgz", + "integrity": "sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==", "dev": true, - "license": "MIT", "dependencies": { "klona": "^2.0.4", "loader-utils": "^2.0.0", @@ -2783,8 +3032,9 @@ }, "node_modules/less-watch-compiler": { "version": "1.16.3", + "resolved": "https://registry.npmjs.org/less-watch-compiler/-/less-watch-compiler-1.16.3.tgz", + "integrity": "sha512-cxGUt8YdPpPPB72w1dfzPVXML5JYgfExXbFvDfG5XBU9qvj6uVjwTY2qOgwvf09Au5p2RvmWVcNps/cMTojJNQ==", "dev": true, - "license": "MIT", "dependencies": { "amdefine": ">= 0.1.0", "commander": "^8.0.0", @@ -2799,8 +3049,9 @@ }, "node_modules/less/node_modules/make-dir": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { "pify": "^4.0.1", @@ -2812,8 +3063,9 @@ }, "node_modules/less/node_modules/semver": { "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "license": "ISC", "optional": true, "bin": { "semver": "bin/semver" @@ -2835,16 +3087,18 @@ }, "node_modules/loader-runner": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.11.5" } }, "node_modules/loader-utils": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, - "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -2856,8 +3110,9 @@ }, "node_modules/locate-path": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -2870,13 +3125,15 @@ }, "node_modules/lodash": { "version": "4.17.21", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, "node_modules/log-symbols": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -2890,7 +3147,8 @@ }, "node_modules/loose-envify": { "version": "1.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -2900,7 +3158,8 @@ }, "node_modules/lru-cache": { "version": "6.0.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dependencies": { "yallist": "^4.0.0" }, @@ -2910,8 +3169,9 @@ }, "node_modules/make-dir": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, - "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -2924,29 +3184,33 @@ }, "node_modules/make-dir/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/merge-stream": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "node_modules/merge2": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/micromatch": { "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, - "license": "MIT", "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -2957,8 +3221,9 @@ }, "node_modules/mime": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, - "license": "MIT", "optional": true, "bin": { "mime": "cli.js" @@ -2969,16 +3234,18 @@ }, "node_modules/mime-db": { "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, - "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -2988,6 +3255,8 @@ }, "node_modules/min-document": { "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", "dev": true, "dependencies": { "dom-walk": "^0.1.0" @@ -2995,7 +3264,8 @@ }, "node_modules/minimatch": { "version": "3.1.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -3005,15 +3275,17 @@ }, "node_modules/minimist": { "version": "1.2.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -3023,8 +3295,9 @@ }, "node_modules/minipass-collect": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -3034,8 +3307,9 @@ }, "node_modules/minipass-flush": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -3045,8 +3319,9 @@ }, "node_modules/minipass-pipeline": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -3056,8 +3331,9 @@ }, "node_modules/minizlib": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, - "license": "MIT", "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -3068,8 +3344,9 @@ }, "node_modules/mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -3079,8 +3356,9 @@ }, "node_modules/mocha": { "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", @@ -3118,8 +3396,9 @@ }, "node_modules/mocha/node_modules/glob": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3137,8 +3416,9 @@ }, "node_modules/mocha/node_modules/glob/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -3148,8 +3428,9 @@ }, "node_modules/mocha/node_modules/minimatch": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -3159,29 +3440,39 @@ }, "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, "node_modules/mocha/node_modules/serialize-javascript": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/ms": { - "version": "2.1.3", - "dev": true, - "license": "MIT" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "node_modules/nanoid": { "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true, - "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -3190,12 +3481,12 @@ } }, "node_modules/needle": { - "version": "3.2.0", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.0.tgz", + "integrity": "sha512-Kaq820952NOrLY/LVbIhPZeXtCGDBAPVgT0BYnoT3p/Nr3nkGXdvWXXA3zgy7wpAgqRULu9p/NvKiFo6f/12fw==", "dev": true, - "license": "MIT", "optional": true, "dependencies": { - "debug": "^3.2.6", "iconv-lite": "^0.6.3", "sax": "^1.2.4" }, @@ -3206,24 +3497,17 @@ "node": ">= 4.4.x" } }, - "node_modules/needle/node_modules/debug": { - "version": "3.2.7", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "ms": "^2.1.1" - } - }, "node_modules/neo-async": { "version": "2.6.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true }, "node_modules/node-environment-flags": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", + "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "object.getownpropertydescriptors": "^2.0.3", "semver": "^5.7.0" @@ -3231,52 +3515,59 @@ }, "node_modules/node-environment-flags/node_modules/semver": { "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/node-releases": { "version": "2.0.14", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true }, "node_modules/normalize-path": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/object-assign": { "version": "4.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "engines": { "node": ">=0.10.0" } }, "node_modules/object-inspect": { "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-keys": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/object.assign": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "dev": true, - "license": "MIT", "dependencies": { "define-properties": "^1.1.2", "function-bind": "^1.1.1", @@ -3289,8 +3580,9 @@ }, "node_modules/object.getownpropertydescriptors": { "version": "2.1.7", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz", + "integrity": "sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==", "dev": true, - "license": "MIT", "dependencies": { "array.prototype.reduce": "^1.0.6", "call-bind": "^1.0.2", @@ -3307,15 +3599,17 @@ }, "node_modules/once": { "version": "1.4.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dependencies": { "wrappy": "1" } }, "node_modules/p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -3328,8 +3622,9 @@ }, "node_modules/p-locate": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -3342,8 +3637,9 @@ }, "node_modules/p-map": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, - "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -3356,8 +3652,9 @@ }, "node_modules/p-try": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -3370,57 +3667,65 @@ }, "node_modules/parse-node-version": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/path-exists": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-is-absolute": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "engines": { "node": ">=0.10.0" } }, "node_modules/path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "node_modules/path-type": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/picocolors": { "version": "1.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "node_modules/picomatch": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.6" }, @@ -3430,8 +3735,9 @@ }, "node_modules/pify": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, - "license": "MIT", "optional": true, "engines": { "node": ">=6" @@ -3439,8 +3745,9 @@ }, "node_modules/pkg-dir": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -3450,8 +3757,9 @@ }, "node_modules/pkg-dir/node_modules/find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -3462,8 +3770,9 @@ }, "node_modules/pkg-dir/node_modules/locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -3473,8 +3782,9 @@ }, "node_modules/pkg-dir/node_modules/p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -3487,8 +3797,9 @@ }, "node_modules/pkg-dir/node_modules/p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -3498,24 +3809,28 @@ }, "node_modules/process": { "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6.0" } }, "node_modules/process-nextick-args": { "version": "2.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/promise-inflight": { "version": "1.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true }, "node_modules/prop-types": { "version": "15.8.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -3524,20 +3839,24 @@ }, "node_modules/prr": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true, - "license": "MIT", "optional": true }, "node_modules/punycode": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/queue-microtask": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { @@ -3552,20 +3871,21 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/randombytes": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } }, "node_modules/react": { "version": "16.14.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -3577,7 +3897,8 @@ }, "node_modules/react-dom": { "version": "16.14.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -3590,11 +3911,13 @@ }, "node_modules/react-is": { "version": "16.13.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/readable-stream": { "version": "2.3.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -3605,14 +3928,11 @@ "util-deprecate": "~1.0.1" } }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "license": "MIT" - }, "node_modules/readdirp": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, - "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -3622,10 +3942,13 @@ }, "node_modules/reason-promise": { "version": "1.1.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/reason-promise/-/reason-promise-1.1.5.tgz", + "integrity": "sha512-T4VI8e3WrQ30HbQcmQ8HvJPZckD4AeTcZ+1aNdpJ/pjjRwjlBy63hr4v8fMSID0/6kPh1KrhN+5+4n7MouoZKQ==" }, "node_modules/rechoir": { "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dev": true, "dependencies": { "resolve": "^1.1.6" @@ -3636,8 +3959,9 @@ }, "node_modules/regexp.prototype.flags": { "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -3652,21 +3976,24 @@ }, "node_modules/require-directory": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/require-main-filename": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true }, "node_modules/rescript": { "version": "10.1.4", + "resolved": "https://registry.npmjs.org/rescript/-/rescript-10.1.4.tgz", + "integrity": "sha512-FFKlS9AG/XrLepWsyw7B+A9DtQBPWEPDPDKghV831Y2KGbie+eeFBOS0xtRHp0xbt7S0N2Dm6hhX+kTZQ/3Ybg==", "hasInstallScript": true, - "license": "SEE LICENSE IN LICENSE", "bin": { "bsc": "bsc", "bsrefmt": "bsrefmt", @@ -3676,7 +4003,8 @@ }, "node_modules/rescript-nodejs": { "version": "15.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/rescript-nodejs/-/rescript-nodejs-15.0.0.tgz", + "integrity": "sha512-VvvM8/lI90Dfu0x4886NyINbUcBBx8F6hmftH9UaMjUgYIPfsdVopG3d30OzcbroiOKySgo4wwVNEmtYDZs+nw==" }, "node_modules/rescript-vscode": { "version": "0.0.17", @@ -3689,12 +4017,14 @@ }, "node_modules/rescript-webapi": { "version": "0.9.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/rescript-webapi/-/rescript-webapi-0.9.0.tgz", + "integrity": "sha512-Q6I0OqaboCT2Z9VMXYM6pjzYKJani8NEiD6e9TFzRqb2nPjO2I0p4FG/8ZkYRr2JZlgTF/VsMQGuQ7+buHAbDg==" }, "node_modules/resolve": { "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, - "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -3709,8 +4039,9 @@ }, "node_modules/resolve-cwd": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, - "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" }, @@ -3720,16 +4051,18 @@ }, "node_modules/resolve-from": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/reusify": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, - "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -3737,8 +4070,9 @@ }, "node_modules/rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -3751,6 +4085,8 @@ }, "node_modules/run-parallel": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ { @@ -3766,15 +4102,15 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/safe-array-concat": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1", @@ -3790,32 +4126,20 @@ }, "node_modules/safe-array-concat/node_modules/isarray": { "version": "2.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true }, "node_modules/safe-buffer": { - "version": "5.2.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/safe-regex-test": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -3827,19 +4151,22 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, - "license": "MIT", "optional": true }, "node_modules/sax": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", "dev": true, - "license": "ISC", "optional": true }, "node_modules/scheduler": { "version": "0.19.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -3847,8 +4174,9 @@ }, "node_modules/schema-utils": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -3864,7 +4192,8 @@ }, "node_modules/semver": { "version": "7.5.4", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -3877,21 +4206,24 @@ }, "node_modules/serialize-javascript": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/set-blocking": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true }, "node_modules/set-function-length": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", "dev": true, - "license": "MIT", "dependencies": { "define-data-property": "^1.1.1", "get-intrinsic": "^1.2.1", @@ -3904,8 +4236,9 @@ }, "node_modules/set-function-name": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", "dev": true, - "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "functions-have-names": "^1.2.3", @@ -3917,12 +4250,14 @@ }, "node_modules/setimmediate": { "version": "1.0.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" }, "node_modules/shallow-clone": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, - "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -3932,8 +4267,9 @@ }, "node_modules/shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -3943,16 +4279,18 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/shelljs": { "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -3967,8 +4305,9 @@ }, "node_modules/side-channel": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -3980,29 +4319,33 @@ }, "node_modules/slash": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/source-list-map": { "version": "2.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true }, "node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-support": { "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -4010,13 +4353,15 @@ }, "node_modules/sprintf-js": { "version": "1.0.3", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true }, "node_modules/ssri": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.1.1" }, @@ -4026,19 +4371,17 @@ }, "node_modules/string_decoder": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dependencies": { "safe-buffer": "~5.1.0" } }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "license": "MIT" - }, "node_modules/string-width": { "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -4050,8 +4393,9 @@ }, "node_modules/string.prototype.trim": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -4066,8 +4410,9 @@ }, "node_modules/string.prototype.trimend": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -4079,8 +4424,9 @@ }, "node_modules/string.prototype.trimstart": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -4092,8 +4438,9 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -4103,8 +4450,9 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -4114,8 +4462,9 @@ }, "node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -4128,8 +4477,9 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4139,16 +4489,18 @@ }, "node_modules/tapable": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/tar": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", "dev": true, - "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -4163,16 +4515,18 @@ }, "node_modules/tar/node_modules/minipass": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=8" } }, "node_modules/terser": { - "version": "5.24.0", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.26.0.tgz", + "integrity": "sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -4188,8 +4542,9 @@ }, "node_modules/terser-webpack-plugin": { "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", @@ -4221,21 +4576,24 @@ }, "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, "node_modules/to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -4253,13 +4611,15 @@ }, "node_modules/tslib": { "version": "2.6.2", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/typed-array-buffer": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1", @@ -4271,8 +4631,9 @@ }, "node_modules/typed-array-byte-length": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "for-each": "^0.3.3", @@ -4288,8 +4649,9 @@ }, "node_modules/typed-array-byte-offset": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", "dev": true, - "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -4306,8 +4668,9 @@ }, "node_modules/typed-array-length": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "for-each": "^0.3.3", @@ -4319,8 +4682,9 @@ }, "node_modules/unbox-primitive": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -4333,28 +4697,32 @@ }, "node_modules/undici-types": { "version": "5.26.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true }, "node_modules/unique-filename": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "dev": true, - "license": "ISC", "dependencies": { "unique-slug": "^2.0.0" } }, "node_modules/unique-slug": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" } }, "node_modules/untildify": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "engines": { "node": ">=8" } @@ -4378,6 +4746,8 @@ }, "node_modules/update-browserslist-db": { "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, "funding": [ { @@ -4393,7 +4763,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -4407,18 +4776,23 @@ }, "node_modules/uri-js": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/util-deprecate": { "version": "1.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/vscode-codicons": { - "version": "0.0.7" + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/vscode-codicons/-/vscode-codicons-0.0.7.tgz", + "integrity": "sha512-xqYypi4Ihth3bZgoE6961FYJBrmFErC+YouSC5Tn0pHqv0QSrP0PK++EIVNBi0I9Ted1OetZ3aWlNUWq1QaMBA==", + "deprecated": "This package is deprecated, please use @vscode/codicons https://www.npmjs.com/package/@vscode/codicons" }, "node_modules/vscode-jsonrpc": { "version": "8.1.0", @@ -4476,8 +4850,9 @@ }, "node_modules/watchpack": { "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, - "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -4488,8 +4863,9 @@ }, "node_modules/webpack": { "version": "5.89.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", + "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", "dev": true, - "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.0", @@ -4534,8 +4910,9 @@ }, "node_modules/webpack-cli": { "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", "dev": true, - "license": "MIT", "dependencies": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^1.2.0", @@ -4580,24 +4957,27 @@ }, "node_modules/webpack-cli/node_modules/commander": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/webpack-cli/node_modules/interpret": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/webpack-cli/node_modules/rechoir": { "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", "dev": true, - "license": "MIT", "dependencies": { "resolve": "^1.9.0" }, @@ -4607,8 +4987,9 @@ }, "node_modules/webpack-merge": { "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", "dev": true, - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -4620,8 +5001,9 @@ }, "node_modules/webpack-sources": { "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, - "license": "MIT", "dependencies": { "source-list-map": "^2.0.0", "source-map": "~0.6.1" @@ -4629,16 +5011,18 @@ }, "node_modules/webpack/node_modules/webpack-sources": { "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.13.0" } }, "node_modules/which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -4651,8 +5035,9 @@ }, "node_modules/which-boxed-primitive": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, - "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -4666,13 +5051,15 @@ }, "node_modules/which-module": { "version": "2.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true }, "node_modules/which-typed-array": { "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dev": true, - "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.4", @@ -4689,32 +5076,36 @@ }, "node_modules/wide-align": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^1.0.2 || 2" } }, "node_modules/wide-align/node_modules/ansi-regex": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/wide-align/node_modules/is-fullwidth-code-point": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/wide-align/node_modules/string-width": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, - "license": "MIT", "dependencies": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -4725,8 +5116,9 @@ }, "node_modules/wide-align/node_modules/strip-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^3.0.0" }, @@ -4736,18 +5128,21 @@ }, "node_modules/wildcard": { "version": "2.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true }, "node_modules/workerpool": { "version": "6.2.1", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true }, "node_modules/wrap-ansi": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -4762,24 +5157,28 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "license": "ISC" + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/y18n": { "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yallist": { "version": "4.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yargs": { "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, - "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -4795,16 +5194,18 @@ }, "node_modules/yargs-parser": { "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yargs-unparser": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, - "license": "MIT", "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", @@ -4817,8 +5218,9 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, diff --git a/package.json b/package.json index 2f02fba4..c8a38d22 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "compare-versions": "^3.5.1", "eventemitter3": ">=4.0.0", "getos": "^3.2.1", - "language-server-mule": "github:banacorn/language-server-mule#v0.4.1", + "language-server-mule": "github:banacorn/language-server-mule#v0.4.2", "react": "^16.9.0", "react-dom": "^16.9.0", "reason-promise": ">=1.1.0", From 334ea9088c8f34fda97c92e8f80d9a2cdfba0aa3 Mon Sep 17 00:00:00 2001 From: Ting-gian LUA Date: Sat, 16 Dec 2023 15:59:23 +0800 Subject: [PATCH 080/109] [ new ] Release v0.4.7 --- CHANGELOG.md | 10 + lib/js/src/Connection/Connection.bs.js | 3 +- package-lock.json | 1484 ++++++++---------------- package.json | 2 +- src/Connection/Connection.res | 7 +- 5 files changed, 521 insertions(+), 985 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 68eca801..392acea3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html) +## v0.4.7 - 2023-12-16 + +### Change +- Fetch the latest release of Agda Language Server from GitHub + +### Fixed +- #172: "Connection Error: Unable to find Agda Language Server" Error downloading language server? +- #176: Many Unicode input sequences no longer work by [@szumixie](https://github.com/szumixie) +- #177: Update `asset/keymap.js` by [@szumixie](https://github.com/szumixie) + ## v0.4.6 - 2023-12-09 ### Fixed diff --git a/lib/js/src/Connection/Connection.bs.js b/lib/js/src/Connection/Connection.bs.js index 473aa54f..81bf674b 100644 --- a/lib/js/src/Connection/Connection.bs.js +++ b/lib/js/src/Connection/Connection.bs.js @@ -91,7 +91,6 @@ function start(globalStoragePath, useLSP, onDownload) { }; })); })), (function (conn) { - var version = conn.version; var method = Client__LSP$LanguageServerMule.getMethod(conn.client); singleton.contents = { TAG: 1, @@ -100,7 +99,7 @@ function start(globalStoragePath, useLSP, onDownload) { }; return { TAG: 1, - _0: version, + _0: conn.version, _1: method, [Symbol.for("name")]: "LSP" }; diff --git a/package-lock.json b/package-lock.json index f13d5268..ad188b78 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "agda-mode", - "version": "0.4.6", + "version": "0.4.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "agda-mode", - "version": "0.4.6", + "version": "0.4.7", "dependencies": { "@datastructures-js/binary-search-tree": "^4.3.0", "@glennsl/rescript-json-combinators": "^1.3.0", @@ -43,37 +43,32 @@ }, "node_modules/@datastructures-js/binary-search-tree": { "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@datastructures-js/binary-search-tree/-/binary-search-tree-4.3.2.tgz", - "integrity": "sha512-fZV3GoZAPxfgGTky7Q+5oiMUtLhQoHxSlJt3DmUPbl+1pMpuopOSG/MymdcruWOBQU90kSzo0lN+3gmSaEYCTw==" + "license": "MIT" }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } }, "node_modules/@gar/promisify": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@glennsl/rescript-json-combinators": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@glennsl/rescript-json-combinators/-/rescript-json-combinators-1.3.0.tgz", - "integrity": "sha512-5HACiKHBDi5Y0XHStCfW1+G0IZja4stsZ8uZDxVL1kbTfEhvL/FExHG5iUG4AWPW++DG38nx8eXZ2wXhAgUvYQ==", + "license": "(LGPL-3.0 OR MPL-2.0)", "engines": { "node": "*" } }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -85,27 +80,24 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -113,15 +105,13 @@ }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -129,9 +119,8 @@ }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -142,18 +131,16 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -164,9 +151,8 @@ }, "node_modules/@npmcli/fs": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", "dev": true, + "license": "ISC", "dependencies": { "@gar/promisify": "^1.0.1", "semver": "^7.3.5" @@ -174,10 +160,8 @@ }, "node_modules/@npmcli/move-file": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "deprecated": "This functionality has been moved to @npmcli/fs", "dev": true, + "license": "MIT", "dependencies": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" @@ -188,8 +172,7 @@ }, "node_modules/@rescript/react": { "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@rescript/react/-/react-0.10.3.tgz", - "integrity": "sha512-Lf9rzrR3bQPKJjOK3PBRa/B3xrJ7CqQ1HYr9VHPVxJidarIJJFZBhj0Dg1uZURX+Wg/xiP0PHFxXmdj2bK8Vxw==", + "license": "MIT", "peerDependencies": { "react": ">=16.8.1", "react-dom": ">=16.8.1" @@ -197,18 +180,16 @@ }, "node_modules/@tootallnate/once": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/@types/eslint": { "version": "8.44.8", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.8.tgz", - "integrity": "sha512-4K8GavROwhrYl2QXDXm0Rv9epkA8GBFu0EI+XrrnnuCl7u8CWBRusX7fXJfanhZTDWSAL24gDI/UqXyUM0Injw==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -216,9 +197,8 @@ }, "node_modules/@types/eslint-scope": { "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, + "license": "MIT", "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -226,30 +206,26 @@ }, "node_modules/@types/estree": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { "version": "20.10.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", - "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@vscode/test-electron": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.8.tgz", - "integrity": "sha512-b4aZZsBKtMGdDljAsOPObnAi7+VWIaYl3ylCz1jTs+oV6BZ4TNHcVNC3xUn0azPeszBmwSBDQYfFESIaUQnrOg==", "dev": true, + "license": "MIT", "dependencies": { "http-proxy-agent": "^4.0.1", "https-proxy-agent": "^5.0.0", @@ -262,9 +238,8 @@ }, "node_modules/@webassemblyjs/ast": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -272,27 +247,23 @@ }, "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -301,15 +272,13 @@ }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -319,33 +288,29 @@ }, "node_modules/@webassemblyjs/ieee754": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, + "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -359,9 +324,8 @@ }, "node_modules/@webassemblyjs/wasm-gen": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", @@ -372,9 +336,8 @@ }, "node_modules/@webassemblyjs/wasm-opt": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -384,9 +347,8 @@ }, "node_modules/@webassemblyjs/wasm-parser": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -398,9 +360,8 @@ }, "node_modules/@webassemblyjs/wast-printer": { "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" @@ -408,9 +369,8 @@ }, "node_modules/@webpack-cli/configtest": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", "dev": true, + "license": "MIT", "peerDependencies": { "webpack": "4.x.x || 5.x.x", "webpack-cli": "4.x.x" @@ -418,9 +378,8 @@ }, "node_modules/@webpack-cli/info": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", "dev": true, + "license": "MIT", "dependencies": { "envinfo": "^7.7.3" }, @@ -430,9 +389,8 @@ }, "node_modules/@webpack-cli/serve": { "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", "dev": true, + "license": "MIT", "peerDependencies": { "webpack-cli": "4.x.x" }, @@ -444,21 +402,18 @@ }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/acorn": { "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -468,18 +423,16 @@ }, "node_modules/acorn-import-assertions": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^8" } }, "node_modules/agent-base": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "4" }, @@ -489,9 +442,8 @@ }, "node_modules/aggregate-error": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -502,9 +454,8 @@ }, "node_modules/ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -518,45 +469,40 @@ }, "node_modules/ajv-keywords": { "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, + "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/amdefine": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", "dev": true, + "license": "BSD-3-Clause OR MIT", "engines": { "node": ">=0.4.2" } }, "node_modules/ansi-colors": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -569,9 +515,8 @@ }, "node_modules/anymatch": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -582,15 +527,13 @@ }, "node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/array-buffer-byte-length": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "is-array-buffer": "^3.0.1" @@ -601,18 +544,16 @@ }, "node_modules/array-union": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/array.prototype.reduce": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz", - "integrity": "sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -629,9 +570,8 @@ }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.2", @@ -650,14 +590,12 @@ }, "node_modules/async": { "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + "license": "MIT" }, "node_modules/available-typed-arrays": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -667,56 +605,46 @@ }, "node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "license": "MIT" }, "node_modules/big-integer": { "version": "1.6.52", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", - "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "license": "Unlicense", "engines": { "node": ">=0.6" } }, "node_modules/big.js": { "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/binary": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "license": "MIT", "dependencies": { "buffers": "~0.1.1", "chainsaw": "~0.1.0" - }, - "engines": { - "node": "*" } }, "node_modules/binary-extensions": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/bluebird": { "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" + "license": "MIT" }, "node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -724,9 +652,8 @@ }, "node_modules/braces": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.0.1" }, @@ -736,14 +663,11 @@ }, "node_modules/browser-stdout": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/browserslist": { "version": "4.22.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", - "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", "dev": true, "funding": [ { @@ -759,6 +683,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "caniuse-lite": "^1.0.30001565", "electron-to-chromium": "^1.4.601", @@ -774,36 +699,32 @@ }, "node_modules/bs-mocha": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bs-mocha/-/bs-mocha-1.0.0.tgz", - "integrity": "sha512-/OjgBZdG1YyC/6SEvXihG/sgWFyenQtRJ0TOewo944XwQuDIv82jtrxYjBPbkhGHdLYnc4EfaLdPC+tW86iKEw==", "dev": true, + "license": "MIT", "dependencies": { "mocha": "^6.2.0" } }, "node_modules/bs-mocha/node_modules/ansi-colors": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/bs-mocha/node_modules/ansi-regex": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/bs-mocha/node_modules/ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -813,27 +734,24 @@ }, "node_modules/bs-mocha/node_modules/argparse": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, + "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/bs-mocha/node_modules/camelcase": { "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/bs-mocha/node_modules/chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -845,9 +763,8 @@ }, "node_modules/bs-mocha/node_modules/chalk/node_modules/supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -857,9 +774,8 @@ }, "node_modules/bs-mocha/node_modules/cliui": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^3.1.0", "strip-ansi": "^5.2.0", @@ -868,67 +784,58 @@ }, "node_modules/bs-mocha/node_modules/color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/bs-mocha/node_modules/color-name": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bs-mocha/node_modules/debug": { "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/bs-mocha/node_modules/decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/bs-mocha/node_modules/diff": { "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, "node_modules/bs-mocha/node_modules/emoji-regex": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bs-mocha/node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/bs-mocha/node_modules/find-up": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^3.0.0" }, @@ -938,9 +845,8 @@ }, "node_modules/bs-mocha/node_modules/flat": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", - "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "is-buffer": "~2.0.3" }, @@ -950,9 +856,8 @@ }, "node_modules/bs-mocha/node_modules/glob": { "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -967,27 +872,24 @@ }, "node_modules/bs-mocha/node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/bs-mocha/node_modules/is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/bs-mocha/node_modules/js-yaml": { "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -998,9 +900,8 @@ }, "node_modules/bs-mocha/node_modules/locate-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -1011,9 +912,8 @@ }, "node_modules/bs-mocha/node_modules/log-symbols": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^2.0.1" }, @@ -1023,9 +923,8 @@ }, "node_modules/bs-mocha/node_modules/minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1035,10 +934,8 @@ }, "node_modules/bs-mocha/node_modules/mkdirp": { "version": "0.5.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", - "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", - "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.5" }, @@ -1048,9 +945,8 @@ }, "node_modules/bs-mocha/node_modules/mocha": { "version": "6.2.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.3.tgz", - "integrity": "sha512-0R/3FvjIGH3eEuG17ccFPk117XL2rWxatr81a57D+r/x2uTYZRbdZ4oVidEUMh2W2TJDa7MdAb12Lm2/qrKajg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-colors": "3.2.3", "browser-stdout": "1.3.1", @@ -1086,15 +982,13 @@ }, "node_modules/bs-mocha/node_modules/ms": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bs-mocha/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -1107,9 +1001,8 @@ }, "node_modules/bs-mocha/node_modules/p-locate": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.0.0" }, @@ -1119,18 +1012,16 @@ }, "node_modules/bs-mocha/node_modules/path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/bs-mocha/node_modules/string-width": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", @@ -1142,9 +1033,8 @@ }, "node_modules/bs-mocha/node_modules/strip-ansi": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^4.1.0" }, @@ -1154,18 +1044,16 @@ }, "node_modules/bs-mocha/node_modules/strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/bs-mocha/node_modules/supports-color": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -1175,9 +1063,8 @@ }, "node_modules/bs-mocha/node_modules/which": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -1187,9 +1074,8 @@ }, "node_modules/bs-mocha/node_modules/wrap-ansi": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.0", "string-width": "^3.0.0", @@ -1201,15 +1087,13 @@ }, "node_modules/bs-mocha/node_modules/y18n": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/bs-mocha/node_modules/yargs": { "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^5.0.0", "find-up": "^3.0.0", @@ -1225,9 +1109,8 @@ }, "node_modules/bs-mocha/node_modules/yargs-parser": { "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, + "license": "ISC", "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -1235,9 +1118,8 @@ }, "node_modules/bs-mocha/node_modules/yargs-unparser": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", "dev": true, + "license": "MIT", "dependencies": { "flat": "^4.1.0", "lodash": "^4.17.15", @@ -1249,9 +1131,8 @@ }, "node_modules/bs-platform": { "version": "9.0.2", - "resolved": "https://registry.npmjs.org/bs-platform/-/bs-platform-9.0.2.tgz", - "integrity": "sha512-Ye9JqJ4Oa7mcjjoOVRYI8Uc2Cf8N7jQLWDcdUplY7996d/YErSR7WitmV7XnSwr4EvdrbwjEsg1NxNjUQv3ChA==", "hasInstallScript": true, + "license": "SEE LICENSE IN LICENSE", "bin": { "bsb": "bsb", "bsc": "bsc", @@ -1261,31 +1142,26 @@ }, "node_modules/buffer-from": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/buffer-indexof-polyfill": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "license": "MIT", "engines": { "node": ">=0.10" } }, "node_modules/buffers": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", "engines": { "node": ">=0.2.0" } }, "node_modules/cacache": { "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/fs": "^1.0.0", "@npmcli/move-file": "^1.0.1", @@ -1312,9 +1188,8 @@ }, "node_modules/call-bind": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2", "get-intrinsic": "^1.2.1", @@ -1326,9 +1201,8 @@ }, "node_modules/camelcase": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -1338,8 +1212,6 @@ }, "node_modules/caniuse-lite": { "version": "1.0.30001568", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001568.tgz", - "integrity": "sha512-vSUkH84HontZJ88MiNrOau1EBrCqEQYgkC5gIySiDlpsm8sGVrhU7Kx4V6h0tnqaHzIHZv08HlJIwPbL4XL9+A==", "dev": true, "funding": [ { @@ -1354,24 +1226,20 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/chainsaw": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "license": "MIT/X11", "dependencies": { "traverse": ">=0.3.0 <0.4" - }, - "engines": { - "node": "*" } }, "node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1385,9 +1253,8 @@ }, "node_modules/chalk/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -1397,8 +1264,6 @@ }, "node_modules/chokidar": { "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "funding": [ { @@ -1406,6 +1271,7 @@ "url": "https://paulmillr.com/funding/" } ], + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -1424,36 +1290,32 @@ }, "node_modules/chownr": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/chrome-trace-event": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0" } }, "node_modules/clean-stack": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/cliui": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -1462,9 +1324,8 @@ }, "node_modules/clone-deep": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, + "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -1476,9 +1337,8 @@ }, "node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -1488,46 +1348,39 @@ }, "node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/colorette": { "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/commander": { "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12" } }, "node_modules/commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/compare-versions": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", - "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==" + "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "license": "MIT" }, "node_modules/copy-anything": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", "dev": true, + "license": "MIT", "dependencies": { "is-what": "^3.14.1" }, @@ -1537,9 +1390,8 @@ }, "node_modules/copy-webpack-plugin": { "version": "6.4.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.4.1.tgz", - "integrity": "sha512-MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA==", "dev": true, + "license": "MIT", "dependencies": { "cacache": "^15.0.5", "fast-glob": "^3.2.4", @@ -1566,14 +1418,12 @@ }, "node_modules/core-util-is": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "license": "MIT" }, "node_modules/cross-spawn": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -1585,9 +1435,8 @@ }, "node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -1602,9 +1451,8 @@ }, "node_modules/decamelize": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -1614,9 +1462,8 @@ }, "node_modules/define-data-property": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.1", "gopd": "^1.0.1", @@ -1628,9 +1475,8 @@ }, "node_modules/define-properties": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -1645,18 +1491,16 @@ }, "node_modules/diff": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, "node_modules/dir-glob": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -1666,44 +1510,37 @@ }, "node_modules/dom-walk": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", "dev": true }, "node_modules/duplexer2": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "license": "BSD-3-Clause", "dependencies": { "readable-stream": "^2.0.2" } }, "node_modules/electron-to-chromium": { "version": "1.4.609", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.609.tgz", - "integrity": "sha512-ihiCP7PJmjoGNuLpl7TjNA8pCQWu09vGyjlPYw1Rqww4gvNuCcmvl+44G+2QyJ6S2K4o+wbTS++Xz0YN8Q9ERw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/emojis-list": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/enhanced-resolve": { "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -1714,9 +1551,8 @@ }, "node_modules/envinfo": { "version": "7.11.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz", - "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==", "dev": true, + "license": "MIT", "bin": { "envinfo": "dist/cli.js" }, @@ -1726,9 +1562,8 @@ }, "node_modules/errno": { "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "prr": "~1.0.1" @@ -1739,9 +1574,8 @@ }, "node_modules/es-abstract": { "version": "1.22.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", - "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.0", "arraybuffer.prototype.slice": "^1.0.2", @@ -1792,9 +1626,8 @@ }, "node_modules/es-abstract/node_modules/object.assign": { "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -1810,21 +1643,18 @@ }, "node_modules/es-array-method-boxes-properly": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/es-module-lexer": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", - "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/es-set-tostringtag": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.2", "has-tostringtag": "^1.0.0", @@ -1836,9 +1666,8 @@ }, "node_modules/es-to-primitive": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -1853,18 +1682,16 @@ }, "node_modules/escalade": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -1874,9 +1701,8 @@ }, "node_modules/eslint-scope": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -1887,9 +1713,8 @@ }, "node_modules/esprima": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -1900,9 +1725,8 @@ }, "node_modules/esrecurse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -1912,53 +1736,46 @@ }, "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/estraverse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/eventemitter3": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + "license": "MIT" }, "node_modules/events": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.x" } }, "node_modules/extend": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -1972,33 +1789,29 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fastest-levenshtein": { "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.9.1" } }, "node_modules/fastq": { "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/fill-range": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -2008,9 +1821,8 @@ }, "node_modules/find-cache-dir": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, + "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -2025,9 +1837,8 @@ }, "node_modules/find-up": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -2041,27 +1852,24 @@ }, "node_modules/flat": { "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, + "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } }, "node_modules/for-each": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.3" } }, "node_modules/fs-minipass": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -2071,15 +1879,12 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, - "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -2090,8 +1895,7 @@ }, "node_modules/fstream": { "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "license": "ISC", "dependencies": { "graceful-fs": "^4.1.2", "inherits": "~2.0.0", @@ -2104,8 +1908,7 @@ }, "node_modules/fstream/node_modules/mkdirp": { "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", "dependencies": { "minimist": "^1.2.6" }, @@ -2115,8 +1918,7 @@ }, "node_modules/fstream/node_modules/rimraf": { "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -2126,18 +1928,16 @@ }, "node_modules/function-bind": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/function.prototype.name": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -2153,27 +1953,24 @@ }, "node_modules/functions-have-names": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/get-caller-file": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-intrinsic": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2", "has-proto": "^1.0.1", @@ -2186,9 +1983,8 @@ }, "node_modules/get-symbol-description": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -2202,16 +1998,14 @@ }, "node_modules/getos": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", - "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "license": "MIT", "dependencies": { "async": "^3.2.0" } }, "node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2229,9 +2023,8 @@ }, "node_modules/glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -2241,15 +2034,13 @@ }, "node_modules/glob-to-regexp": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/global": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", "dev": true, + "license": "MIT", "dependencies": { "min-document": "^2.19.0", "process": "^0.11.10" @@ -2257,9 +2048,8 @@ }, "node_modules/globalthis": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.1.3" }, @@ -2272,9 +2062,8 @@ }, "node_modules/globby": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, + "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -2292,9 +2081,8 @@ }, "node_modules/gopd": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -2304,41 +2092,36 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "license": "ISC" }, "node_modules/growl": { "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.x" } }, "node_modules/has-bigints": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/has-property-descriptors": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.2" }, @@ -2348,9 +2131,8 @@ }, "node_modules/has-proto": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -2360,9 +2142,8 @@ }, "node_modules/has-symbols": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -2372,9 +2153,8 @@ }, "node_modules/has-tostringtag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -2387,9 +2167,8 @@ }, "node_modules/hasown": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -2399,18 +2178,16 @@ }, "node_modules/he": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, + "license": "MIT", "bin": { "he": "bin/he" } }, "node_modules/http-proxy-agent": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, + "license": "MIT", "dependencies": { "@tootallnate/once": "1", "agent-base": "6", @@ -2422,9 +2199,8 @@ }, "node_modules/https-proxy-agent": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -2435,9 +2211,8 @@ }, "node_modules/iconv-lite": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -2448,18 +2223,16 @@ }, "node_modules/ignore": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/image-size": { "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", "dev": true, + "license": "MIT", "optional": true, "bin": { "image-size": "bin/image-size.js" @@ -2470,15 +2243,13 @@ }, "node_modules/immediate": { "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/import-local": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, + "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -2495,32 +2266,28 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/infer-owner": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -2528,14 +2295,12 @@ }, "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "license": "ISC" }, "node_modules/internal-slot": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", - "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.2", "hasown": "^2.0.0", @@ -2547,18 +2312,16 @@ }, "node_modules/interpret": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/is-array-buffer": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.0", @@ -2570,9 +2333,8 @@ }, "node_modules/is-bigint": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, + "license": "MIT", "dependencies": { "has-bigints": "^1.0.1" }, @@ -2582,9 +2344,8 @@ }, "node_modules/is-binary-path": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -2594,9 +2355,8 @@ }, "node_modules/is-boolean-object": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -2610,8 +2370,6 @@ }, "node_modules/is-buffer": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", "dev": true, "funding": [ { @@ -2627,15 +2385,15 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/is-callable": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -2645,9 +2403,8 @@ }, "node_modules/is-core-module": { "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.0" }, @@ -2657,9 +2414,8 @@ }, "node_modules/is-date-object": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -2672,27 +2428,24 @@ }, "node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -2702,9 +2455,8 @@ }, "node_modules/is-negative-zero": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -2714,18 +2466,16 @@ }, "node_modules/is-number": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-number-object": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -2738,18 +2488,16 @@ }, "node_modules/is-plain-obj": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-plain-object": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, + "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -2759,9 +2507,8 @@ }, "node_modules/is-regex": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -2775,9 +2522,8 @@ }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -2787,9 +2533,8 @@ }, "node_modules/is-string": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -2802,9 +2547,8 @@ }, "node_modules/is-symbol": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -2817,9 +2561,8 @@ }, "node_modules/is-typed-array": { "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", "dev": true, + "license": "MIT", "dependencies": { "which-typed-array": "^1.1.11" }, @@ -2832,9 +2575,8 @@ }, "node_modules/is-unicode-supported": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -2844,9 +2586,8 @@ }, "node_modules/is-weakref": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -2856,35 +2597,30 @@ }, "node_modules/is-what": { "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/isobject": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/jest-worker": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -2896,14 +2632,12 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -2913,21 +2647,18 @@ }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json5": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -2937,9 +2668,8 @@ }, "node_modules/jszip": { "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", "dev": true, + "license": "(MIT OR GPL-3.0-or-later)", "dependencies": { "lie": "~3.3.0", "pako": "~1.0.2", @@ -2949,18 +2679,16 @@ }, "node_modules/kind-of": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/klona": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", - "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -2979,14 +2707,12 @@ }, "node_modules/language-server-mule/node_modules/eventemitter3": { "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + "license": "MIT" }, "node_modules/less": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", - "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "copy-anything": "^2.0.1", "parse-node-version": "^1.0.1", @@ -3010,9 +2736,8 @@ }, "node_modules/less-loader": { "version": "7.3.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-7.3.0.tgz", - "integrity": "sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==", "dev": true, + "license": "MIT", "dependencies": { "klona": "^2.0.4", "loader-utils": "^2.0.0", @@ -3032,9 +2757,8 @@ }, "node_modules/less-watch-compiler": { "version": "1.16.3", - "resolved": "https://registry.npmjs.org/less-watch-compiler/-/less-watch-compiler-1.16.3.tgz", - "integrity": "sha512-cxGUt8YdPpPPB72w1dfzPVXML5JYgfExXbFvDfG5XBU9qvj6uVjwTY2qOgwvf09Au5p2RvmWVcNps/cMTojJNQ==", "dev": true, + "license": "MIT", "dependencies": { "amdefine": ">= 0.1.0", "commander": "^8.0.0", @@ -3049,9 +2773,8 @@ }, "node_modules/less/node_modules/make-dir": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "pify": "^4.0.1", @@ -3063,9 +2786,8 @@ }, "node_modules/less/node_modules/semver": { "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "optional": true, "bin": { "semver": "bin/semver" @@ -3073,32 +2795,28 @@ }, "node_modules/lie": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", "dev": true, + "license": "MIT", "dependencies": { "immediate": "~3.0.5" } }, "node_modules/listenercount": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" + "license": "ISC" }, "node_modules/loader-runner": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.11.5" } }, "node_modules/loader-utils": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, + "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -3110,9 +2828,8 @@ }, "node_modules/locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -3125,15 +2842,13 @@ }, "node_modules/lodash": { "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -3147,8 +2862,7 @@ }, "node_modules/loose-envify": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -3158,8 +2872,7 @@ }, "node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -3169,9 +2882,8 @@ }, "node_modules/make-dir": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -3184,33 +2896,29 @@ }, "node_modules/make-dir/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/merge-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/micromatch": { "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -3221,9 +2929,8 @@ }, "node_modules/mime": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, + "license": "MIT", "optional": true, "bin": { "mime": "cli.js" @@ -3234,18 +2941,16 @@ }, "node_modules/mime-db": { "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -3255,8 +2960,6 @@ }, "node_modules/min-document": { "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", "dev": true, "dependencies": { "dom-walk": "^0.1.0" @@ -3264,8 +2967,7 @@ }, "node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -3275,17 +2977,15 @@ }, "node_modules/minimist": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/minipass": { "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -3295,9 +2995,8 @@ }, "node_modules/minipass-collect": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -3307,9 +3006,8 @@ }, "node_modules/minipass-flush": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -3319,9 +3017,8 @@ }, "node_modules/minipass-pipeline": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -3331,9 +3028,8 @@ }, "node_modules/minizlib": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, + "license": "MIT", "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -3344,9 +3040,8 @@ }, "node_modules/mkdirp": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, + "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -3356,9 +3051,8 @@ }, "node_modules/mocha": { "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", @@ -3396,9 +3090,8 @@ }, "node_modules/mocha/node_modules/glob": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3416,9 +3109,8 @@ }, "node_modules/mocha/node_modules/glob/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -3428,9 +3120,8 @@ }, "node_modules/mocha/node_modules/minimatch": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -3440,39 +3131,34 @@ }, "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/mocha/node_modules/ms": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/mocha/node_modules/serialize-javascript": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nanoid": { "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true, + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -3482,9 +3168,8 @@ }, "node_modules/needle": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.0.tgz", - "integrity": "sha512-Kaq820952NOrLY/LVbIhPZeXtCGDBAPVgT0BYnoT3p/Nr3nkGXdvWXXA3zgy7wpAgqRULu9p/NvKiFo6f/12fw==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "iconv-lite": "^0.6.3", @@ -3499,15 +3184,13 @@ }, "node_modules/neo-async": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-environment-flags": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", - "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "object.getownpropertydescriptors": "^2.0.3", "semver": "^5.7.0" @@ -3515,59 +3198,52 @@ }, "node_modules/node-environment-flags/node_modules/semver": { "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/node-releases": { "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/normalize-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/object-inspect": { "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-keys": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/object.assign": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.1.2", "function-bind": "^1.1.1", @@ -3580,9 +3256,8 @@ }, "node_modules/object.getownpropertydescriptors": { "version": "2.1.7", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz", - "integrity": "sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==", "dev": true, + "license": "MIT", "dependencies": { "array.prototype.reduce": "^1.0.6", "call-bind": "^1.0.2", @@ -3599,17 +3274,15 @@ }, "node_modules/once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -3622,9 +3295,8 @@ }, "node_modules/p-locate": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -3637,9 +3309,8 @@ }, "node_modules/p-map": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, + "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -3652,80 +3323,70 @@ }, "node_modules/p-try": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/pako": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true + "dev": true, + "license": "(MIT AND Zlib)" }, "node_modules/parse-node-version": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/path-key": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-type": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/picocolors": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -3735,9 +3396,8 @@ }, "node_modules/pify": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=6" @@ -3745,9 +3405,8 @@ }, "node_modules/pkg-dir": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -3757,9 +3416,8 @@ }, "node_modules/pkg-dir/node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -3770,9 +3428,8 @@ }, "node_modules/pkg-dir/node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -3782,9 +3439,8 @@ }, "node_modules/pkg-dir/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -3797,9 +3453,8 @@ }, "node_modules/pkg-dir/node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -3809,28 +3464,24 @@ }, "node_modules/process": { "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6.0" } }, "node_modules/process-nextick-args": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "license": "MIT" }, "node_modules/promise-inflight": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/prop-types": { "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -3839,24 +3490,20 @@ }, "node_modules/prr": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/punycode": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/queue-microtask": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { @@ -3871,21 +3518,20 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/randombytes": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } }, "node_modules/react": { "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -3897,8 +3543,7 @@ }, "node_modules/react-dom": { "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -3911,13 +3556,11 @@ }, "node_modules/react-is": { "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "license": "MIT" }, "node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -3930,9 +3573,8 @@ }, "node_modules/readdirp": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -3942,13 +3584,10 @@ }, "node_modules/reason-promise": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/reason-promise/-/reason-promise-1.1.5.tgz", - "integrity": "sha512-T4VI8e3WrQ30HbQcmQ8HvJPZckD4AeTcZ+1aNdpJ/pjjRwjlBy63hr4v8fMSID0/6kPh1KrhN+5+4n7MouoZKQ==" + "license": "MIT" }, "node_modules/rechoir": { "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dev": true, "dependencies": { "resolve": "^1.1.6" @@ -3959,9 +3598,8 @@ }, "node_modules/regexp.prototype.flags": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -3976,24 +3614,21 @@ }, "node_modules/require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/require-main-filename": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/rescript": { "version": "10.1.4", - "resolved": "https://registry.npmjs.org/rescript/-/rescript-10.1.4.tgz", - "integrity": "sha512-FFKlS9AG/XrLepWsyw7B+A9DtQBPWEPDPDKghV831Y2KGbie+eeFBOS0xtRHp0xbt7S0N2Dm6hhX+kTZQ/3Ybg==", "hasInstallScript": true, + "license": "SEE LICENSE IN LICENSE", "bin": { "bsc": "bsc", "bsrefmt": "bsrefmt", @@ -4003,8 +3638,7 @@ }, "node_modules/rescript-nodejs": { "version": "15.0.0", - "resolved": "https://registry.npmjs.org/rescript-nodejs/-/rescript-nodejs-15.0.0.tgz", - "integrity": "sha512-VvvM8/lI90Dfu0x4886NyINbUcBBx8F6hmftH9UaMjUgYIPfsdVopG3d30OzcbroiOKySgo4wwVNEmtYDZs+nw==" + "license": "MIT" }, "node_modules/rescript-vscode": { "version": "0.0.17", @@ -4017,14 +3651,12 @@ }, "node_modules/rescript-webapi": { "version": "0.9.0", - "resolved": "https://registry.npmjs.org/rescript-webapi/-/rescript-webapi-0.9.0.tgz", - "integrity": "sha512-Q6I0OqaboCT2Z9VMXYM6pjzYKJani8NEiD6e9TFzRqb2nPjO2I0p4FG/8ZkYRr2JZlgTF/VsMQGuQ7+buHAbDg==" + "license": "MIT" }, "node_modules/resolve": { "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -4039,9 +3671,8 @@ }, "node_modules/resolve-cwd": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, + "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" }, @@ -4051,18 +3682,16 @@ }, "node_modules/resolve-from": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/reusify": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -4070,9 +3699,8 @@ }, "node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -4085,8 +3713,6 @@ }, "node_modules/run-parallel": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ { @@ -4102,15 +3728,15 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/safe-array-concat": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1", @@ -4126,20 +3752,17 @@ }, "node_modules/safe-array-concat/node_modules/isarray": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "license": "MIT" }, "node_modules/safe-regex-test": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -4151,22 +3774,19 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/sax": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", "dev": true, + "license": "ISC", "optional": true }, "node_modules/scheduler": { "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -4174,9 +3794,8 @@ }, "node_modules/schema-utils": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -4192,8 +3811,7 @@ }, "node_modules/semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -4206,24 +3824,21 @@ }, "node_modules/serialize-javascript": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/set-function-length": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.1", "get-intrinsic": "^1.2.1", @@ -4236,9 +3851,8 @@ }, "node_modules/set-function-name": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "functions-have-names": "^1.2.3", @@ -4250,14 +3864,12 @@ }, "node_modules/setimmediate": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + "license": "MIT" }, "node_modules/shallow-clone": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, + "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -4267,9 +3879,8 @@ }, "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -4279,18 +3890,16 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/shelljs": { "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -4305,9 +3914,8 @@ }, "node_modules/side-channel": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -4319,33 +3927,29 @@ }, "node_modules/slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/source-list-map": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-support": { "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -4353,15 +3957,13 @@ }, "node_modules/sprintf-js": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/ssri": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.1.1" }, @@ -4371,17 +3973,15 @@ }, "node_modules/string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -4393,9 +3993,8 @@ }, "node_modules/string.prototype.trim": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -4410,9 +4009,8 @@ }, "node_modules/string.prototype.trimend": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -4424,9 +4022,8 @@ }, "node_modules/string.prototype.trimstart": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -4438,9 +4035,8 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -4450,9 +4046,8 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -4462,9 +4057,8 @@ }, "node_modules/supports-color": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -4477,9 +4071,8 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4489,18 +4082,16 @@ }, "node_modules/tapable": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/tar": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", - "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", "dev": true, + "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -4515,18 +4106,16 @@ }, "node_modules/tar/node_modules/minipass": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=8" } }, "node_modules/terser": { "version": "5.26.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.26.0.tgz", - "integrity": "sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -4542,9 +4131,8 @@ }, "node_modules/terser-webpack-plugin": { "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", @@ -4576,24 +4164,21 @@ }, "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -4603,23 +4188,17 @@ }, "node_modules/traverse": { "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", - "engines": { - "node": "*" - } + "license": "MIT/X11" }, "node_modules/tslib": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/typed-array-buffer": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1", @@ -4631,9 +4210,8 @@ }, "node_modules/typed-array-byte-length": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "for-each": "^0.3.3", @@ -4649,9 +4227,8 @@ }, "node_modules/typed-array-byte-offset": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -4668,9 +4245,8 @@ }, "node_modules/typed-array-length": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "for-each": "^0.3.3", @@ -4682,9 +4258,8 @@ }, "node_modules/unbox-primitive": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -4697,40 +4272,35 @@ }, "node_modules/undici-types": { "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/unique-filename": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "dev": true, + "license": "ISC", "dependencies": { "unique-slug": "^2.0.0" } }, "node_modules/unique-slug": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" } }, "node_modules/untildify": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/unzipper": { "version": "0.10.14", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz", - "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", + "license": "MIT", "dependencies": { "big-integer": "^1.6.17", "binary": "~0.3.0", @@ -4746,8 +4316,6 @@ }, "node_modules/update-browserslist-db": { "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, "funding": [ { @@ -4763,6 +4331,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0" @@ -4776,36 +4345,29 @@ }, "node_modules/uri-js": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "license": "MIT" }, "node_modules/vscode-codicons": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/vscode-codicons/-/vscode-codicons-0.0.7.tgz", - "integrity": "sha512-xqYypi4Ihth3bZgoE6961FYJBrmFErC+YouSC5Tn0pHqv0QSrP0PK++EIVNBi0I9Ted1OetZ3aWlNUWq1QaMBA==", - "deprecated": "This package is deprecated, please use @vscode/codicons https://www.npmjs.com/package/@vscode/codicons" + "version": "0.0.7" }, "node_modules/vscode-jsonrpc": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz", - "integrity": "sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==", + "license": "MIT", "engines": { "node": ">=14.0.0" } }, "node_modules/vscode-languageclient": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.1.0.tgz", - "integrity": "sha512-GL4QdbYUF/XxQlAsvYWZRV3V34kOkpRlvV60/72ghHfsYFnS/v2MANZ9P6sHmxFcZKOse8O+L9G7Czg0NUWing==", + "license": "MIT", "dependencies": { "minimatch": "^5.1.0", "semver": "^7.3.7", @@ -4817,16 +4379,14 @@ }, "node_modules/vscode-languageclient/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/vscode-languageclient/node_modules/minimatch": { "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -4836,8 +4396,7 @@ }, "node_modules/vscode-languageserver-protocol": { "version": "3.17.3", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz", - "integrity": "sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==", + "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", "vscode-languageserver-types": "3.17.3" @@ -4845,14 +4404,12 @@ }, "node_modules/vscode-languageserver-types": { "version": "3.17.3", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz", - "integrity": "sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==" + "license": "MIT" }, "node_modules/watchpack": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, + "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -4863,9 +4420,8 @@ }, "node_modules/webpack": { "version": "5.89.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", - "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", "dev": true, + "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.0", @@ -4910,9 +4466,8 @@ }, "node_modules/webpack-cli": { "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", "dev": true, + "license": "MIT", "dependencies": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^1.2.0", @@ -4957,27 +4512,24 @@ }, "node_modules/webpack-cli/node_modules/commander": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/webpack-cli/node_modules/interpret": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/webpack-cli/node_modules/rechoir": { "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", "dev": true, + "license": "MIT", "dependencies": { "resolve": "^1.9.0" }, @@ -4987,9 +4539,8 @@ }, "node_modules/webpack-merge": { "version": "5.10.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", - "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", "dev": true, + "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -5001,9 +4552,8 @@ }, "node_modules/webpack-sources": { "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, + "license": "MIT", "dependencies": { "source-list-map": "^2.0.0", "source-map": "~0.6.1" @@ -5011,18 +4561,16 @@ }, "node_modules/webpack/node_modules/webpack-sources": { "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.13.0" } }, "node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -5035,9 +4583,8 @@ }, "node_modules/which-boxed-primitive": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, + "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -5051,15 +4598,13 @@ }, "node_modules/which-module": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/which-typed-array": { "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.4", @@ -5076,36 +4621,32 @@ }, "node_modules/wide-align": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^1.0.2 || 2" } }, "node_modules/wide-align/node_modules/ansi-regex": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/wide-align/node_modules/is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/wide-align/node_modules/string-width": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, + "license": "MIT", "dependencies": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -5116,9 +4657,8 @@ }, "node_modules/wide-align/node_modules/strip-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^3.0.0" }, @@ -5128,21 +4668,18 @@ }, "node_modules/wildcard": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/workerpool": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -5157,28 +4694,24 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "license": "ISC" }, "node_modules/y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "license": "ISC" }, "node_modules/yargs": { "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -5194,18 +4727,16 @@ }, "node_modules/yargs-parser": { "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yargs-unparser": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, + "license": "MIT", "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", @@ -5218,9 +4749,8 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, diff --git a/package.json b/package.json index c8a38d22..fd9a9772 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "agda-mode on vscode", "icon": "asset/logo.png", "publisher": "banacorn", - "version": "0.4.6", + "version": "0.4.7", "engines": { "vscode": "^1.74.0" }, diff --git a/src/Connection/Connection.res b/src/Connection/Connection.res index 7d8ec1d3..9428bc0c 100644 --- a/src/Connection/Connection.res +++ b/src/Connection/Connection.res @@ -82,12 +82,9 @@ module Module: Module = { ->Promise.mapError(error => Error.LSP(error)) }) ->Promise.mapOk(conn => { - let (version, method) = ( - conn.version, - LanguageServerMule.Client.LSP.getMethod(conn.client), - ) + let method = LanguageServerMule.Client.LSP.getMethod(conn.client) singleton := Some(LSP(conn)) - LSP(version, method) + LSP(conn.version, method) }) } else { Connection__Probe.probeEmacs() From cf55ad7f8f774edfd05e1fd4aea2b4247b2ffcdd Mon Sep 17 00:00:00 2001 From: Kyle Lin Date: Thu, 5 Sep 2024 22:49:55 +0800 Subject: [PATCH 081/109] Add more detailed splitting command description --- src/State/State__Command.res | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/State/State__Command.res b/src/State/State__Command.res index 43f207dc..c67871cf 100644 --- a/src/State/State__Command.res +++ b/src/State/State__Command.res @@ -111,7 +111,7 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< | Some((goal, _)) => sendAgdaRequest(Auto(goal)) } | Case => { - let placeholder = Some("variable to case split:") + let placeholder = Some("variable(s) to case split:") switch State__Goal.pointed(state) { | None => State.View.Panel.displayOutOfGoalError(state)->Promise.map(() => Ok()) | Some((goal, "")) => @@ -119,7 +119,7 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< state, header, { - body: Some("Please specify which variable you wish to split"), + body: Some("Please specify which variable(s) you wish to split, multiple variables are delimited by whitespaces"), placeholder, value: None, }, From 9bd639905b6a3ece0dffac0ddafe49eb45569e07 Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Tue, 8 Oct 2024 17:39:23 +0800 Subject: [PATCH 082/109] [ doc ] Use `npm` instead of `yarn` and extend CONTRIBUTING.md --- CONTRIBUTING.md | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e2228c71..cfb98040 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,14 +1,32 @@ +# Introduction + +This is a Visual Studio Code extension for Agda. + +Having some frontend development skills will definitely help you contribute to this project (but don't worry, you'll manage even if you don't have them) + +### Language + +This project is written in [ReScript](https://rescript-lang.org/). It's essentially OCaml that compiles to JavaScript, so that we don't have to write JavaScript ourselves. + +### Framework + +We use [React](https://rescript-lang.org/docs/react/latest/introduction) as the frontend framework. It comes with a nice binding for ReScript. + +# Setup + +You'll need to install [Node.js](https://nodejs.org/) for building the project. + After cloning the files, download dependencies and build files with: ```bash -yarn install -yarn run build +npm install +npm run build ``` Fire up this command to enter the "watch mode" so that you don't have to rebuild stuff manually: ```bash -yarn run dev +npm run dev ``` Press F5 in VS Code and you should have a extension development host with agda-mode running! From 22090503ef1591abbc606afb19f9b649def04681 Mon Sep 17 00:00:00 2001 From: Shengyi Jiang Date: Sun, 20 Oct 2024 14:30:31 +0800 Subject: [PATCH 083/109] change bs.send.pipe to send --- src/Util/Chan.res | 236 +++++++++++++++++++++++----------------------- 1 file changed, 118 insertions(+), 118 deletions(-) diff --git a/src/Util/Chan.res b/src/Util/Chan.res index e148513d..4bd78681 100644 --- a/src/Util/Chan.res +++ b/src/Util/Chan.res @@ -10,182 +10,182 @@ module EventEmitter3 = { // Class: EventEmitter - @bs.module("eventemitter3") @bs.new + @module("eventemitter3") @new external make: unit => t = "EventEmitter" // Event: 'newListener' - @bs.send.pipe(: t) - external onNewListener: (@bs.as("newListener") _, listener2>) => t = "on" + @send + external onNewListener: (t, string, listener<'a>) => t = "on" + let onNewListener = (arg1, obj) => obj->onNewListener("newListener", arg1) - @bs.send.pipe(: t) - external onNewListener2: (@bs.as("newListener") _, listener2>) => t = - "on" + @send + external onNewListener2: (t, string, listener2<'a, 'b>) => t = "on" + let onNewListener2 = (arg1, obj) => obj->onNewListener2("newListener", arg1) - @bs.send.pipe(: t) - external onNewListener3: ( - @bs.as("newListener") _, - listener2>, - ) => t = "on" + @send + external onNewListener3: (t, string, listener3<'a, 'b, 'c>) => t = "on" + let onNewListener3 = (arg1, obj) => obj->onNewListener3("newListener", arg1) - @bs.send.pipe(: t) - external onceNewListener: (@bs.as("newListener") _, listener2>) => t = - "once" + @send + external onceNewListener: (t, string, listener<'a>) => t = "once" + let onceNewListener = (arg1, obj) => obj->onceNewListener("newListener", arg1) - @bs.send.pipe(: t) - external onceNewListener2: ( - @bs.as("newListener") _, - listener2>, - ) => t = "once" + @send + external onceNewListener2: (t, string, listener2<'a, 'b>) => t = "once" + let onceNewListener2 = (arg1, obj) => obj->onceNewListener2("newListener", arg1) - @bs.send.pipe(: t) - external onceNewListener3: ( - @bs.as("newListener") _, - listener2>, - ) => t = "once" + @send + external onceNewListener3: (t, string, listener3<'a, 'b, 'c>) => t = "once" + let onceNewListener3 = (arg1, obj) => obj->onceNewListener3("newListener", arg1) - // Event: 'removeListener' + @send + external onRemoveListener: (t, string, listener) => t = "on" + let onRemoveListener = (arg1, obj) => obj->onRemoveListener("removeListener", arg1) - @bs.send.pipe(: t) - external onRemoveListener: (@bs.as("removeListener") _, listener) => t = "on" + @send + external onceRemoveListener: (t, string, listener) => t = "once" + let onceRemoveListener = (arg1, obj) => obj->onceRemoveListener("removeListener", arg1) - @bs.send.pipe(: t) - external onceRemoveListener: (@bs.as("removeListener") _, listener) => t = "once" - - // EventEmitter.defaultMaxListeners - - @bs.val @bs.scope("EventEmitter") + @val @scope("EventEmitter") external defaultMaxListeners: int = "defaultMaxListeners" - // emitter.addListener(eventName, listener) - - @bs.send.pipe(: t) - external addListener: (eventName, listener<'a>) => t = "addListener" - - @bs.send.pipe(: t) - external addListener2: (eventName, listener2<'a, 'b>) => t = "addListener" - - @bs.send.pipe(: t) - external addListener3: (eventName, listener3<'a, 'b, 'c>) => t = "addListener" - - // emitter.emit(eventName[, ...args]) - - @bs.send.pipe(: t) external emit0: eventName => bool = "emit" - - @bs.send.pipe(: t) external emit: (eventName, 'a) => bool = "emit" + @send + external addListener: (t, eventName, listener<'a>) => t = "addListener" + let addListener = (arg1, arg2, obj) => obj->addListener(arg1, arg2) - @bs.send.pipe(: t) external emit2: (eventName, 'a, 'b) => bool = "emit" + @send + external addListener2: (t, eventName, listener2<'a, 'b>) => t = "addListener" + let addListener2 = (arg1, arg2, obj) => obj->addListener2(arg1, arg2) - @bs.send.pipe(: t) external emit3: (eventName, 'a, 'b, 'c) => bool = "emit" + @send + external addListener3: (t, eventName, listener3<'a, 'b, 'c>) => t = "addListener" + let addListener3 = (arg1, arg2, obj) => obj->addListener3(arg1, arg2) - // emitter.eventNames() + @send + external emit0: (t, eventName) => bool = "emit" + let emit0 = (arg1, obj) => obj->emit0(arg1) - @bs.send.pipe(: t) - external eventNames: eventName => array = "eventNames" + @send + external emit: (t, eventName, 'a) => bool = "emit" + let emit = (arg1, arg2, obj) => obj->emit(arg1, arg2) - // emitter.getMaxListeners() + @send + external emit2: (t, eventName, 'a, 'b) => bool = "emit" + let emit2 = (arg1, arg2, arg3, obj) => obj->emit2(arg1, arg2, arg3) - @bs.send.pipe(: t) external getMaxListeners: int = "getMaxListeners" + @send + external emit3: (t, eventName, 'a, 'b, 'c) => bool = "emit" + let emit3 = (arg1, arg2, arg3, arg4, obj) => obj->emit3(arg1, arg2, arg3, arg4) - // emitter.listenerCount(eventName) + @send + external eventNames: (t, eventName) => array = "eventNames" + let eventNames = (arg1, obj) => obj->eventNames(arg1) - @bs.send.pipe(: t) - external listenerCount: eventName => int = "listenerCount" + @send + external listenerCount: (t, eventName) => int = "listenerCount" + let listenerCount = (arg1, obj) => obj->listenerCount(arg1) - // emitter.listeners(eventName) + @send + external listeners: (t, eventName) => array> = "listeners" + let listeners = (arg1, obj) => obj->listeners(arg1) - @bs.send.pipe(: t) - external listeners: eventName => array> = "listeners" + @send + external listeners2: (t, eventName) => array> = "listeners" + let listeners2 = (arg1, obj) => obj->listeners2(arg1) - @bs.send.pipe(: t) - external listeners2: eventName => array> = "listeners" + @send + external listeners3: (t, eventName) => array> = "listeners" + let listeners3 = (arg1, obj) => obj->listeners3(arg1) - @bs.send.pipe(: t) - external listeners3: eventName => array> = "listeners" + @send + external off: (t, eventName, listener<'a>) => t = "off" + let off = (arg1, arg2, obj) => obj->off(arg1, arg2) - // emitter.off(eventName, listener) + @send + external off2: (t, eventName, listener2<'a, 'b>) => t = "off" + let off2 = (arg1, arg2, obj) => obj->off2(arg1, arg2) - @bs.send.pipe(: t) external off: (eventName, listener<'a>) => t = "off" - @bs.send.pipe(: t) - external off2: (eventName, listener2<'a, 'b>) => t = "off" - @bs.send.pipe(: t) - external off3: (eventName, listener3<'a, 'b, 'c>) => t = "off" - - // emitter.on(eventName, listener) + @send + external off3: (t, eventName, listener3<'a, 'b, 'c>) => t = "off" + let off3 = (arg1, arg2, obj) => obj->off3(arg1, arg2) let on = addListener let on2 = addListener2 let on3 = addListener3 - // emitter.once(eventName, listener) - - @bs.send.pipe(: t) external once: (eventName, listener<'a>) => t = "once" - - @bs.send.pipe(: t) - external once2: (eventName, listener2<'a, 'b>) => t = "once" - - @bs.send.pipe(: t) - external once3: (eventName, listener3<'a, 'b, 'c>) => t = "once" + @send + external once: (t, eventName, listener<'a>) => t = "once" + let once = (arg1, arg2, obj) => obj->once(arg1, arg2) - // emitter.prependListener(eventName, listener) + @send + external once2: (t, eventName, listener2<'a, 'b>) => t = "once" + let once2 = (arg1, arg2, obj) => obj->once2(arg1, arg2) - @bs.send.pipe(: t) - external prependListener: (eventName, listener<'a>) => t = "prependListener" + @send + external once3: (t, eventName, listener3<'a, 'b, 'c>) => t = "once" + let once3 = (arg1, arg2, obj) => obj->once3(arg1, arg2) - @bs.send.pipe(: t) - external prependListener2: (eventName, listener2<'a, 'b>) => t = "prependListener" + @send + external prependListener: (t, array, listener<'a>) => t = "prependListener" + let prependListener = (arg1, arg2, obj) => obj->prependListener(arg1, arg2) - @bs.send.pipe(: t) - external prependListener3: (eventName, listener3<'a, 'b, 'c>) => t = "prependListener" + @send + external prependListener2: (t, array, listener2<'a, 'b>) => t = "prependListener" + let prependListener2 = (arg1, arg2, obj) => obj->prependListener2(arg1, arg2) - // emitter.prependOnceListener(eventName, listener) + @send + external prependListener3: (t, array, listener3<'a, 'b, 'c>) => t = "prependListener" + let prependListener3 = (arg1, arg2, obj) => obj->prependListener3(arg1, arg2) - @bs.send.pipe(: t) - external prependOnceListener: (eventName, listener<'a>) => t = "prependOnceListener" + @send + external prependOnceListener: (t, eventName, listener<'a>) => t = "prependOnceListener" + let prependOnceListener = (arg1, arg2, obj) => obj->prependOnceListener(arg1, arg2) - @bs.send.pipe(: t) - external prependOnceListener2: (eventName, listener2<'a, 'b>) => t = "prependOnceListener" + @send + external prependOnceListener2: (t, eventName, listener2<'a, 'b>) => t = "prependOnceListener" + let prependOnceListener2 = (arg1, arg2, obj) => obj->prependOnceListener2(arg1, arg2) - @bs.send.pipe(: t) - external prependOnceListener3: (eventName, listener3<'a, 'b, 'c>) => t = "prependOnceListener" + @send + external prependOnceListener3: (t, eventName, listener3<'a, 'b, 'c>) => t = "prependOnceListener" + let prependOnceListener3 = (arg1, arg2, obj) => obj->prependOnceListener3(arg1, arg2) - // emitter.removeAllListeners([eventName]) + @send + external removeAllListeners: t => t = "removeAllListeners" - @bs.send.pipe(: t) external removeAllListeners: t = "removeAllListeners" - - @bs.send.pipe(: t) - external removeAllListeners_: array => t = "removeAllListeners" - - // emitter.removeListener(eventName, listener) + @send + external removeAllListeners_: (t, array) => t = "removeAllListeners" + let removeAllListeners_ = (arg1, obj) => obj->removeAllListeners_(arg1) let removeListener = off let removeListener2 = off2 let removeListener3 = off3 - // emitter.setMaxListeners(n) - - @bs.send.pipe(: t) external setMaxListeners: int => t = "setMaxListeners" - - // emitter.rawListeners(eventName) + @send + external setMaxListeners: (t, int) => t = "setMaxListeners" + let setMaxListeners = (arg1, obj) => obj->setMaxListeners(arg1) - @bs.send.pipe(: t) - external rawListeners: eventName => array> = "rawListeners" + @send + external rawListeners: (t, eventName) => array> = "rawListeners" + let rawListeners = (arg1, obj) => obj->rawListeners(arg1) - @bs.send.pipe(: t) - external rawListeners2: eventName => array> = "rawListeners" + @send + external rawListeners2: (t, eventName) => array> = "rawListeners" + let rawListeners2 = (arg1, obj) => obj->rawListeners2(arg1) - @bs.send.pipe(: t) - external rawListeners3: eventName => array> = "rawListeners" + @send + external rawListeners3: (t, eventName) => array> = "rawListeners" + let rawListeners3 = (arg1, obj) => obj->rawListeners3(arg1) // events.once(emitter, name) - @bs.module("eventemitter3") + @module("eventemitter3") external oncePromise: (t, string) => Js.Promise.t<'a> = "once" - @bs.module("eventemitter3") + @module("eventemitter3") external oncePromise2: (t, string) => Js.Promise.t<('a, 'b)> = "once" - @bs.module("eventemitter3") + @module("eventemitter3") external oncePromise3: (t, string) => Js.Promise.t<('a, 'b, 'c)> = "once" } From 373b426244da66a168f23c000f7229f0f3e0b02d Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Sat, 19 Oct 2024 11:02:16 +0800 Subject: [PATCH 084/109] [ change ] Upgrade ReScript to v11 --- lib/js/src/Agda.bs.js | 198 +- lib/js/src/Command.bs.js | 335 +- lib/js/src/Config.bs.js | 78 +- lib/js/src/Connection/Connection.bs.js | 450 +-- lib/js/src/Connection/Connection__Error.bs.js | 8 +- lib/js/src/Connection/Connection__Probe.bs.js | 223 +- .../Connection/Connection__Scheduler.bs.js | 44 +- .../Connection/Emacs/Connection__Emacs.bs.js | 293 +- .../Emacs/Connection__Emacs__Error.bs.js | 12 +- .../src/Connection/LSP/Connection__LSP.bs.js | 551 +-- .../LSP/Connection__LSP__Error.bs.js | 24 +- lib/js/src/Editor.bs.js | 84 +- lib/js/src/Goal.bs.js | 26 +- lib/js/src/Highlighting.bs.js | 66 +- .../Highlighting__AgdaAspect.bs.js | 395 +-- .../Highlighting__Decoration.bs.js | 4 +- .../Highlighting__SemanticToken.bs.js | 62 +- lib/js/src/InputMethod/Buffer.bs.js | 2 +- lib/js/src/InputMethod/IM.bs.js | 102 +- lib/js/src/InputMethod/Translator.bs.js | 16 +- lib/js/src/Main.bs.js | 277 +- lib/js/src/Parser/Parser.bs.js | 121 +- lib/js/src/Parser/SourceFile.bs.js | 73 +- lib/js/src/Registry.bs.js | 53 +- lib/js/src/Request.bs.js | 202 +- lib/js/src/Response.bs.js | 392 +-- lib/js/src/State.bs.js | 92 +- lib/js/src/State/State__Command.bs.js | 1929 +++++------ lib/js/src/State/State__Goal.bs.js | 131 +- lib/js/src/State/State__InputMethod.bs.js | 349 +- lib/js/src/State/State__Response.bs.js | 627 ++-- lib/js/src/State/State__Type.bs.js | 29 +- lib/js/src/State/State__View.bs.js | 105 +- lib/js/src/Tokens.bs.js | 210 +- lib/js/src/Util/Chan.bs.js | 234 +- lib/js/src/Util/Util.bs.js | 204 +- lib/js/src/View/Common.bs.js | 141 +- lib/js/src/View/Component/Item.bs.js | 155 +- lib/js/src/View/Component/Link.bs.js | 169 +- lib/js/src/View/Component/RichText.bs.js | 347 +- lib/js/src/View/Hook.bs.js | 10 +- lib/js/src/View/Panel/Body.bs.js | 12 +- lib/js/src/View/Panel/CandidateSymbols.bs.js | 13 +- .../src/View/Panel/Emacs/Emacs__Parser.bs.js | 13 +- .../src/View/Panel/Emacs/Emacs__Parser2.bs.js | 87 +- lib/js/src/View/Panel/Header.bs.js | 27 +- lib/js/src/View/Panel/Keyboard.bs.js | 50 +- lib/js/src/View/Panel/Panel.bs.js | 303 +- lib/js/src/View/Panel/Prompt.bs.js | 71 +- lib/js/src/View/Root.bs.js | 16 +- lib/js/src/View/Singleton.bs.js | 21 +- lib/js/src/View/View.bs.js | 807 +++-- lib/js/src/View/WebviewPanel.bs.js | 187 +- lib/js/test/RunTestFromCLI.bs.js | 34 +- lib/js/test/TestSuiteAdapter.bs.js | 24 +- lib/js/test/tests/Parser/Test__Parser.bs.js | 25 +- .../tests/Parser/Test__Parser__Agda.bs.js | 60 +- .../tests/Parser/Test__Parser__Emacs2.bs.js | 52 +- .../tests/Parser/Test__Parser__Response.bs.js | 44 +- .../Parser/Test__Parser__SExpression.bs.js | 84 +- .../Parser/Test__Parser__SourceFile.bs.js | 105 +- lib/js/test/tests/Test__CaseSplit.bs.js | 192 +- lib/js/test/tests/Test__Connection.bs.js | 29 +- lib/js/test/tests/Test__EditorIM.bs.js | 1325 +------ lib/js/test/tests/Test__Tokens.bs.js | 62 +- lib/js/test/tests/Test__Util.bs.js | 605 ++-- .../tests/TextEditor/Test__AgdaOffset.bs.js | 257 +- .../tests/TextEditor/Test__LineEnding.bs.js | 80 +- package-lock.json | 3060 ++++++++--------- package.json | 22 +- bsconfig.json => rescript.json | 17 +- src/Agda.res | 56 +- src/Config.res | 25 +- src/Connection/Connection.res | 127 +- src/Connection/Connection__Probe.res | 202 +- src/Connection/Connection__Scheduler.res | 10 +- src/Connection/Emacs/Connection__Emacs.res | 77 +- src/Connection/LSP/Connection__LSP.res | 122 +- src/Editor.res | 1 - src/Goal.res | 35 +- src/Highlighting.res | 16 +- src/InputMethod/IM.res | 10 +- src/InputMethod/Translator.res | 8 +- src/Main.res | 83 +- src/Node/Node__Fs.res | 4 +- src/Parser/Parser.res | 6 +- src/Parser/SourceFile.res | 8 +- src/Registry.res | 28 +- src/State.res | 43 +- src/State/State__Command.res | 458 +-- src/State/State__Goal.res | 184 +- src/State/State__InputMethod.res | 140 +- src/State/State__Response.res | 327 +- src/State/State__Type.res | 18 +- src/State/State__View.res | 44 +- src/Tokens.res | 87 +- src/Util/Chan.res | 173 +- src/Util/Util.res | 74 +- src/View/Common.res | 10 +- src/View/Component/Item.res | 21 +- src/View/Component/Link.res | 8 +- src/View/Component/RichText.res | 22 +- src/View/Hook.res | 4 +- src/View/Panel/Emacs/Emacs__Parser2.res | 2 +- src/View/Panel/Panel.res | 23 +- src/View/Panel/Prompt.res | 2 +- src/View/Singleton.res | 8 +- src/View/View.res | 105 +- src/View/WebviewPanel.res | 79 +- test/RunTestFromCLI.res | 33 +- test/TestSuiteAdapter.res | 41 +- test/tests/Parser/Test__Parser.res | 13 +- test/tests/Parser/Test__Parser__Agda.res | 19 +- test/tests/Parser/Test__Parser__Emacs2.res | 21 +- test/tests/Parser/Test__Parser__Response.res | 21 +- .../Parser/Test__Parser__SExpression.res | 40 +- .../tests/Parser/Test__Parser__SourceFile.res | 75 +- test/tests/Test__CaseSplit.res | 94 +- test/tests/Test__Connection.res | 18 +- test/tests/Test__EditorIM.res | 1057 +++--- test/tests/Test__Tokens.res | 132 +- test/tests/Test__Util.res | 314 +- test/tests/TextEditor/Test__AgdaOffset.res | 225 +- test/tests/TextEditor/Test__LineEnding.res | 54 +- 124 files changed, 9516 insertions(+), 11798 deletions(-) rename bsconfig.json => rescript.json (74%) diff --git a/lib/js/src/Agda.bs.js b/lib/js/src/Agda.bs.js index a6557a87..3aaab939 100644 --- a/lib/js/src/Agda.bs.js +++ b/lib/js/src/Agda.bs.js @@ -1,22 +1,21 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Curry = require("rescript/lib/js/curry.js"); var Js_array = require("rescript/lib/js/js_array.js"); var Js_string = require("rescript/lib/js/js_string.js"); -var Belt_Array = require("rescript/lib/js/belt_Array.js"); -var Pervasives = require("rescript/lib/js/pervasives.js"); -var Belt_Option = require("rescript/lib/js/belt_Option.js"); +var Core__Array = require("@rescript/core/lib/js/src/Core__Array.bs.js"); +var PervasivesU = require("rescript/lib/js/pervasivesU.js"); +var Core__Option = require("@rescript/core/lib/js/src/Core__Option.bs.js"); var Common$AgdaModeVscode = require("./View/Common.bs.js"); var RichText$AgdaModeVscode = require("./View/Component/RichText.bs.js"); var Emacs__Parser$AgdaModeVscode = require("./View/Panel/Emacs/Emacs__Parser.bs.js"); function render(x) { - switch (x.TAG | 0) { - case /* QuestionMark */1 : + switch (x.TAG) { + case "QuestionMark" : return RichText$AgdaModeVscode.hole(x._0); - case /* Plain */0 : - case /* Underscore */2 : + case "Plain" : + case "Underscore" : return RichText$AgdaModeVscode.string(x._0); } @@ -27,49 +26,50 @@ var Term = { }; function parse(raw) { - var __x = raw.trim(); - return Belt_Array.keepMap(Belt_Array.mapWithIndex(Js_string.splitByRe(/(\?\d+)|(\_\d+[^\}\)\s]*)/, __x), (function (i, token) { - var match = i % 3; - if (match !== 1) { - if (match !== 2) { - return Belt_Option.flatMap(token, (function (x) { - if (x === "") { - return ; - } else { - return { - TAG: 0, - _0: x, - [Symbol.for("name")]: "Plain" - }; - } - })); - } else { - return Belt_Option.map(token, (function (x) { + return Core__Array.filterMap((function (__x) { + return Js_string.splitByRe(/(\?\d+)|(\_\d+[^\}\)\s]*)/, __x); + })(raw.trim()).map(function (token, i) { + var match = i % 3; + if (match !== 1) { + if (match !== 2) { + return Core__Option.flatMap(token, (function (x) { + if (x === "") { + return ; + } else { return { - TAG: 2, + TAG: "Plain", _0: x, - [Symbol.for("name")]: "Underscore" + [Symbol.for("name")]: "Plain" }; - })); - } + } + })); } else { - return Belt_Option.map(Belt_Option.flatMap(Belt_Option.map(token, (function (param) { - return Js_string.sliceToEnd(1, param); - })), Pervasives.int_of_string_opt), (function (x) { + return Core__Option.map(token, (function (x) { return { - TAG: 1, + TAG: "Underscore", _0: x, - [Symbol.for("name")]: "QuestionMark" + [Symbol.for("name")]: "Underscore" }; })); } - })), (function (x) { + } else { + return Core__Option.map(Core__Option.flatMap(Core__Option.map(token, (function (none) { + return none.slice(1); + })), PervasivesU.int_of_string_opt), (function (x) { + return { + TAG: "QuestionMark", + _0: x, + [Symbol.for("name")]: "QuestionMark" + }; + })); + } + }), (function (x) { return x; })); } function render$1(xs) { - return RichText$AgdaModeVscode.concatMany(Belt_Array.map(xs, render)); + return RichText$AgdaModeVscode.concatMany(xs.map(render)); } var Expr = { @@ -77,101 +77,93 @@ var Expr = { render: render$1 }; -var partial_arg = /^([^\:]*) \: ((?:\r\n|\n|.)+)/; - -function parseOfType(param) { - return Emacs__Parser$AgdaModeVscode.captures(partial_arg, (function (captured) { - return Belt_Option.flatMap(Emacs__Parser$AgdaModeVscode.at(captured, 2, parse), (function (type_) { - return Belt_Option.flatMap(Emacs__Parser$AgdaModeVscode.at(captured, 1, parse), (function (term) { +function parseOfType(extra) { + return Emacs__Parser$AgdaModeVscode.captures(/^([^\:]*) \: ((?:\r\n|\n|.)+)/, (function (captured) { + return Core__Option.flatMap(Emacs__Parser$AgdaModeVscode.at(captured, 2, parse), (function (type_) { + return Core__Option.flatMap(Emacs__Parser$AgdaModeVscode.at(captured, 1, parse), (function (term) { return { - TAG: 0, - _0: RichText$AgdaModeVscode.concatMany(Belt_Array.map(term, render)), - _1: RichText$AgdaModeVscode.concatMany(Belt_Array.map(type_, render)), + TAG: "OfType", + _0: render$1(term), + _1: render$1(type_), [Symbol.for("name")]: "OfType" }; })); })); - }), param); + }), extra); } -var partial_arg$1 = /^Type ((?:\r\n|\n|.)+)/; - -function parseJustType(param) { - return Emacs__Parser$AgdaModeVscode.captures(partial_arg$1, (function (captured) { - return Belt_Option.map(Emacs__Parser$AgdaModeVscode.at(captured, 1, parse), (function (type_) { +function parseJustType(extra) { + return Emacs__Parser$AgdaModeVscode.captures(/^Type ((?:\r\n|\n|.)+)/, (function (captured) { + return Core__Option.map(Emacs__Parser$AgdaModeVscode.at(captured, 1, parse), (function (type_) { return { - TAG: 1, - _0: RichText$AgdaModeVscode.concatMany(Belt_Array.map(type_, render)), + TAG: "JustType", + _0: render$1(type_), [Symbol.for("name")]: "JustType" }; })); - }), param); + }), extra); } -var partial_arg$2 = /^Sort ((?:\r\n|\n|.)+)/; - -function parseJustSort(param) { - return Emacs__Parser$AgdaModeVscode.captures(partial_arg$2, (function (captured) { - return Belt_Option.map(Emacs__Parser$AgdaModeVscode.at(captured, 1, parse), (function (sort) { +function parseJustSort(extra) { + return Emacs__Parser$AgdaModeVscode.captures(/^Sort ((?:\r\n|\n|.)+)/, (function (captured) { + return Core__Option.map(Emacs__Parser$AgdaModeVscode.at(captured, 1, parse), (function (sort) { return { - TAG: 2, - _0: RichText$AgdaModeVscode.concatMany(Belt_Array.map(sort, render)), + TAG: "JustSort", + _0: render$1(sort), [Symbol.for("name")]: "JustSort" }; })); - }), param); + }), extra); } function parseOthers(raw) { - return Belt_Option.map(parse(raw), (function (raw$p) { + return Core__Option.map(parse(raw), (function (raw$p) { return { - TAG: 3, - _0: RichText$AgdaModeVscode.concatMany(Belt_Array.map(raw$p, render)), + TAG: "Others", + _0: render$1(raw$p), [Symbol.for("name")]: "Others" }; })); } -var partial_arg$3 = [ - parseOfType, - parseJustType, - parseJustSort, - parseOthers -]; - -function parse$1(param) { - return Emacs__Parser$AgdaModeVscode.choice(partial_arg$3, param); +function parse$1(extra) { + return Emacs__Parser$AgdaModeVscode.choice([ + parseOfType, + parseJustType, + parseJustSort, + parseOthers + ], extra); } function renderItem(value, $$location) { var inlines; - switch (value.TAG | 0) { - case /* OfType */0 : + switch (value.TAG) { + case "OfType" : inlines = RichText$AgdaModeVscode.concatMany([ value._0, RichText$AgdaModeVscode.string(" : "), value._1 ]); break; - case /* JustType */1 : + case "JustType" : inlines = RichText$AgdaModeVscode.concatMany([ RichText$AgdaModeVscode.string("Type "), value._0 ]); break; - case /* JustSort */2 : + case "JustSort" : inlines = RichText$AgdaModeVscode.concatMany([ RichText$AgdaModeVscode.string("Sort "), value._0 ]); break; - case /* Others */3 : + case "Others" : inlines = RichText$AgdaModeVscode.concatMany([value._0]); break; } return { - TAG: 1, + TAG: "Unlabeled", _0: inlines, _1: undefined, _2: $$location, @@ -185,8 +177,9 @@ var OutputConstraint = { }; function parseOutputWithoutLocation(raw) { - return Belt_Option.map(Curry._1(parse$1, raw), (function (x) { + return Core__Option.map(parse$1(raw), (function (x) { return { + TAG: "Output", _0: x, _1: undefined, [Symbol.for("name")]: "Output" @@ -194,30 +187,29 @@ function parseOutputWithoutLocation(raw) { })); } -var partial_arg$4 = /((?:\n|.)*\S+)\s*\[ at ([^\]]+) \]/; - -function parseOutputWithLocation(param) { - return Emacs__Parser$AgdaModeVscode.captures(partial_arg$4, (function (captured) { - return Belt_Option.map(Belt_Option.flatMap(Belt_Option.flatMap(Belt_Array.get(captured, 1), (function (x) { +function parseOutputWithLocation(extra) { + return Emacs__Parser$AgdaModeVscode.captures(/((?:\n|.)*\S+)\s*\[ at ([^\]]+) \]/, (function (captured) { + return Core__Option.map(Core__Option.flatMap(Core__Option.flatMap(captured[1], (function (x) { return x; })), parse$1), (function (oc) { - var r = Belt_Option.flatMap(Belt_Option.flatMap(Belt_Array.get(captured, 2), (function (x) { + var r = Core__Option.flatMap(Core__Option.flatMap(captured[2], (function (x) { return x; })), Common$AgdaModeVscode.AgdaRange.parse); return { + TAG: "Output", _0: oc, _1: r, [Symbol.for("name")]: "Output" }; })); - }), param); + }), extra); } function parse$2(raw) { var locRe = /\[ at (\S+\:(?:\d+\,\d+\-\d+\,\d+|\d+\,\d+\-\d+|\d+\,\d+)) \]$/; var hasLocation = locRe.test(raw); if (hasLocation) { - return Curry._1(parseOutputWithLocation, raw); + return parseOutputWithLocation(raw); } else { return parseOutputWithoutLocation(raw); } @@ -235,18 +227,18 @@ var Output = { }; function make(indicesUTF16) { - var indicesUTF8 = Belt_Array.mapWithIndex(indicesUTF16, (function (i, x) { - return x - i | 0; - })); - var intervals = Belt_Array.mapWithIndex(indicesUTF8, (function (i, rightEndpoint) { - var x = Belt_Array.get(indicesUTF8, i - 1 | 0); - var leftEndpoint = x !== undefined ? x + 1 | 0 : 0; - return [ - leftEndpoint, - rightEndpoint - ]; - })); - var lastInterval = Belt_Option.mapWithDefault(Belt_Array.get(intervals, intervals.length - 1 | 0), 0, (function (param) { + var indicesUTF8 = indicesUTF16.map(function (i, x) { + return x - i | 0; + }); + var intervals = indicesUTF8.map(function (i, rightEndpoint) { + var x = indicesUTF8[i - 1 | 0]; + var leftEndpoint = x !== undefined ? x + 1 | 0 : 0; + return [ + leftEndpoint, + rightEndpoint + ]; + }); + var lastInterval = Core__Option.mapWithDefault(intervals[intervals.length - 1 | 0], 0, (function (param) { return param[1] + 1 | 0; })); return { @@ -258,7 +250,7 @@ function make(indicesUTF16) { function convert(self, index) { while(true) { - var match = Belt_Array.get(self.intervals, self.cursor); + var match = self.intervals[self.cursor]; if (match !== undefined) { if (index < match[0]) { self.cursor = 0; diff --git a/lib/js/src/Command.bs.js b/lib/js/src/Command.bs.js index 914937fc..6423f6be 100644 --- a/lib/js/src/Command.bs.js +++ b/lib/js/src/Command.bs.js @@ -4,11 +4,11 @@ function encode(x) { switch (x) { - case /* Simplified */0 : + case "Simplified" : return "Simplified"; - case /* Instantiated */1 : + case "Instantiated" : return "Instantiated"; - case /* Normalised */2 : + case "Normalised" : return "Normalised"; } @@ -16,11 +16,11 @@ function encode(x) { function toString(x) { switch (x) { - case /* Simplified */0 : + case "Simplified" : return "(simplified)"; - case /* Instantiated */1 : + case "Instantiated" : return "(instantiated)"; - case /* Normalised */2 : + case "Normalised" : return "(normalised)"; } @@ -33,18 +33,25 @@ var Normalization = { function encode$1(x) { switch (x) { - case /* DefaultCompute */0 : + case "DefaultCompute" : return "DefaultCompute"; - case /* IgnoreAbstract */1 : + case "IgnoreAbstract" : return "IgnoreAbstract"; - case /* UseShowInstance */2 : + case "UseShowInstance" : return "UseShowInstance"; } } function ignoreAbstract(x) { - return x !== 0; + switch (x) { + case "DefaultCompute" : + return false; + case "IgnoreAbstract" : + case "UseShowInstance" : + return true; + + } } var ComputeMode = { @@ -53,19 +60,19 @@ var ComputeMode = { }; function toString$1(x) { - if (typeof x !== "number") { + if (typeof x === "object") { return "InsertChar '" + (x._0 + "'"); } switch (x) { - case /* Activate */0 : + case "Activate" : return "Activate"; - case /* BrowseUp */1 : + case "BrowseUp" : return "BrowseUp"; - case /* BrowseRight */2 : + case "BrowseRight" : return "BrowseRight"; - case /* BrowseDown */3 : + case "BrowseDown" : return "BrowseDown"; - case /* BrowseLeft */4 : + case "BrowseLeft" : return "BrowseLeft"; } @@ -77,425 +84,426 @@ var InputMethod = { var names = [ [ - /* Load */0, + "Load", "load" ], [ - /* Quit */1, + "Quit", "quit" ], [ - /* Restart */2, + "Restart", "restart" ], [ - /* Compile */4, + "Compile", "compile" ], [ - /* ToggleDisplayOfImplicitArguments */5, + "ToggleDisplayOfImplicitArguments", "toggle-display-of-implicit-arguments" ], [ - /* ToggleDisplayOfIrrelevantArguments */6, + "ToggleDisplayOfIrrelevantArguments", "toggle-display-of-irrelevant-arguments" ], [ - /* ShowConstraints */7, + "ShowConstraints", "show-constraints" ], [ { - TAG: 0, - _0: /* Simplified */0, + TAG: "SolveConstraints", + _0: "Simplified", [Symbol.for("name")]: "SolveConstraints" }, "solve-constraints[Simplified]" ], [ { - TAG: 0, - _0: /* Instantiated */1, + TAG: "SolveConstraints", + _0: "Instantiated", [Symbol.for("name")]: "SolveConstraints" }, "solve-constraints[Instantiated]" ], [ { - TAG: 0, - _0: /* Normalised */2, + TAG: "SolveConstraints", + _0: "Normalised", [Symbol.for("name")]: "SolveConstraints" }, "solve-constraints[Normalised]" ], [ { - TAG: 1, - _0: /* Simplified */0, + TAG: "ShowGoals", + _0: "Simplified", [Symbol.for("name")]: "ShowGoals" }, "show-goals[Simplified]" ], [ { - TAG: 1, - _0: /* Instantiated */1, + TAG: "ShowGoals", + _0: "Instantiated", [Symbol.for("name")]: "ShowGoals" }, "show-goals[Instantiated]" ], [ { - TAG: 1, - _0: /* Normalised */2, + TAG: "ShowGoals", + _0: "Normalised", [Symbol.for("name")]: "ShowGoals" }, "show-goals[Normalised]" ], [ - /* NextGoal */8, + "NextGoal", "next-goal" ], [ - /* PreviousGoal */9, + "PreviousGoal", "previous-goal" ], [ { - TAG: 2, - _0: /* Simplified */0, + TAG: "SearchAbout", + _0: "Simplified", [Symbol.for("name")]: "SearchAbout" }, "search-about[Simplified]" ], [ { - TAG: 2, - _0: /* Instantiated */1, + TAG: "SearchAbout", + _0: "Instantiated", [Symbol.for("name")]: "SearchAbout" }, "search-about[Instantiated]" ], [ { - TAG: 2, - _0: /* Normalised */2, + TAG: "SearchAbout", + _0: "Normalised", [Symbol.for("name")]: "SearchAbout" }, "search-about[Normalised]" ], [ - /* Give */10, + "Give", "give" ], [ - /* Refine */11, + "Refine", "refine" ], [ { - TAG: 3, - _0: /* Simplified */0, + TAG: "ElaborateAndGive", + _0: "Simplified", [Symbol.for("name")]: "ElaborateAndGive" }, "elaborate-and-give[Simplified]" ], [ { - TAG: 3, - _0: /* Instantiated */1, + TAG: "ElaborateAndGive", + _0: "Instantiated", [Symbol.for("name")]: "ElaborateAndGive" }, "elaborate-and-give[Instantiated]" ], [ { - TAG: 3, - _0: /* Normalised */2, + TAG: "ElaborateAndGive", + _0: "Normalised", [Symbol.for("name")]: "ElaborateAndGive" }, "elaborate-and-give[Normalised]" ], [ - /* Auto */12, + "Auto", "auto" ], [ - /* Case */13, + "Case", "case" ], [ { - TAG: 4, - _0: /* Simplified */0, + TAG: "HelperFunctionType", + _0: "Simplified", [Symbol.for("name")]: "HelperFunctionType" }, "helper-function-type[Simplified]" ], [ { - TAG: 4, - _0: /* Instantiated */1, + TAG: "HelperFunctionType", + _0: "Instantiated", [Symbol.for("name")]: "HelperFunctionType" }, "helper-function-type[Instantiated]" ], [ { - TAG: 4, - _0: /* Normalised */2, + TAG: "HelperFunctionType", + _0: "Normalised", [Symbol.for("name")]: "HelperFunctionType" }, "helper-function-type[Normalised]" ], [ { - TAG: 5, - _0: /* Simplified */0, + TAG: "InferType", + _0: "Simplified", [Symbol.for("name")]: "InferType" }, "infer-type[Simplified]" ], [ { - TAG: 5, - _0: /* Instantiated */1, + TAG: "InferType", + _0: "Instantiated", [Symbol.for("name")]: "InferType" }, "infer-type[Instantiated]" ], [ { - TAG: 5, - _0: /* Normalised */2, + TAG: "InferType", + _0: "Normalised", [Symbol.for("name")]: "InferType" }, "infer-type[Normalised]" ], [ { - TAG: 6, - _0: /* Simplified */0, + TAG: "Context", + _0: "Simplified", [Symbol.for("name")]: "Context" }, "context[Simplified]" ], [ { - TAG: 6, - _0: /* Instantiated */1, + TAG: "Context", + _0: "Instantiated", [Symbol.for("name")]: "Context" }, "context[Instantiated]" ], [ { - TAG: 6, - _0: /* Normalised */2, + TAG: "Context", + _0: "Normalised", [Symbol.for("name")]: "Context" }, "context[Normalised]" ], [ { - TAG: 7, - _0: /* Simplified */0, + TAG: "GoalType", + _0: "Simplified", [Symbol.for("name")]: "GoalType" }, "goal-type[Simplified]" ], [ { - TAG: 7, - _0: /* Instantiated */1, + TAG: "GoalType", + _0: "Instantiated", [Symbol.for("name")]: "GoalType" }, "goal-type[Instantiated]" ], [ { - TAG: 7, - _0: /* Normalised */2, + TAG: "GoalType", + _0: "Normalised", [Symbol.for("name")]: "GoalType" }, "goal-type[Normalised]" ], [ { - TAG: 8, - _0: /* Simplified */0, + TAG: "GoalTypeAndContext", + _0: "Simplified", [Symbol.for("name")]: "GoalTypeAndContext" }, "goal-type-and-context[Simplified]" ], [ { - TAG: 8, - _0: /* Instantiated */1, + TAG: "GoalTypeAndContext", + _0: "Instantiated", [Symbol.for("name")]: "GoalTypeAndContext" }, "goal-type-and-context[Instantiated]" ], [ { - TAG: 8, - _0: /* Normalised */2, + TAG: "GoalTypeAndContext", + _0: "Normalised", [Symbol.for("name")]: "GoalTypeAndContext" }, "goal-type-and-context[Normalised]" ], [ { - TAG: 10, - _0: /* Simplified */0, + TAG: "GoalTypeContextAndInferredType", + _0: "Simplified", [Symbol.for("name")]: "GoalTypeContextAndInferredType" }, "goal-type-context-and-inferred-type[Simplified]" ], [ { - TAG: 10, - _0: /* Instantiated */1, + TAG: "GoalTypeContextAndInferredType", + _0: "Instantiated", [Symbol.for("name")]: "GoalTypeContextAndInferredType" }, "goal-type-context-and-inferred-type[Instantiated]" ], [ { - TAG: 10, - _0: /* Normalised */2, + TAG: "GoalTypeContextAndInferredType", + _0: "Normalised", [Symbol.for("name")]: "GoalTypeContextAndInferredType" }, "goal-type-context-and-inferred-type[Normalised]" ], [ { - TAG: 11, - _0: /* Simplified */0, + TAG: "GoalTypeContextAndCheckedType", + _0: "Simplified", [Symbol.for("name")]: "GoalTypeContextAndCheckedType" }, "goal-type-context-and-checked-type[Simplified]" ], [ { - TAG: 11, - _0: /* Instantiated */1, + TAG: "GoalTypeContextAndCheckedType", + _0: "Instantiated", [Symbol.for("name")]: "GoalTypeContextAndCheckedType" }, "goal-type-context-and-checked-type[Instantiated]" ], [ { - TAG: 11, - _0: /* Normalised */2, + TAG: "GoalTypeContextAndCheckedType", + _0: "Normalised", [Symbol.for("name")]: "GoalTypeContextAndCheckedType" }, "goal-type-context-and-checked-type[Normalised]" ], [ { - TAG: 12, - _0: /* Simplified */0, + TAG: "ModuleContents", + _0: "Simplified", [Symbol.for("name")]: "ModuleContents" }, "module-contents[Simplified]" ], [ { - TAG: 12, - _0: /* Instantiated */1, + TAG: "ModuleContents", + _0: "Instantiated", [Symbol.for("name")]: "ModuleContents" }, "module-contents[Instantiated]" ], [ { - TAG: 12, - _0: /* Normalised */2, + TAG: "ModuleContents", + _0: "Normalised", [Symbol.for("name")]: "ModuleContents" }, "module-contents[Normalised]" ], [ { - TAG: 13, - _0: /* DefaultCompute */0, + TAG: "ComputeNormalForm", + _0: "DefaultCompute", [Symbol.for("name")]: "ComputeNormalForm" }, "compute-normal-form[DefaultCompute]" ], [ { - TAG: 13, - _0: /* IgnoreAbstract */1, + TAG: "ComputeNormalForm", + _0: "IgnoreAbstract", [Symbol.for("name")]: "ComputeNormalForm" }, "compute-normal-form[IgnoreAbstract]" ], [ { - TAG: 13, - _0: /* UseShowInstance */2, + TAG: "ComputeNormalForm", + _0: "UseShowInstance", [Symbol.for("name")]: "ComputeNormalForm" }, "compute-normal-form[UseShowInstance]" ], [ - /* WhyInScope */14, + "WhyInScope", "why-in-scope" ], [ - /* SwitchAgdaVersion */15, + "SwitchAgdaVersion", "switch-agda-version" ], [ - /* Escape */16, + "Escape", "escape" ], [ { - TAG: 14, - _0: /* Activate */0, + TAG: "InputMethod", + _0: "Activate", [Symbol.for("name")]: "InputMethod" }, "input-symbol[Activate]" ], [ { - TAG: 14, - _0: /* BrowseUp */1, + TAG: "InputMethod", + _0: "BrowseUp", [Symbol.for("name")]: "InputMethod" }, "input-symbol[BrowseUp]" ], [ { - TAG: 14, - _0: /* BrowseRight */2, + TAG: "InputMethod", + _0: "BrowseRight", [Symbol.for("name")]: "InputMethod" }, "input-symbol[BrowseRight]" ], [ { - TAG: 14, - _0: /* BrowseDown */3, + TAG: "InputMethod", + _0: "BrowseDown", [Symbol.for("name")]: "InputMethod" }, "input-symbol[BrowseDown]" ], [ { - TAG: 14, - _0: /* BrowseLeft */4, + TAG: "InputMethod", + _0: "BrowseLeft", [Symbol.for("name")]: "InputMethod" }, "input-symbol[BrowseLeft]" ], [ { - TAG: 14, + TAG: "InputMethod", _0: { + TAG: "InsertChar", _0: "{", [Symbol.for("name")]: "InsertChar" }, @@ -505,8 +513,9 @@ var names = [ ], [ { - TAG: 14, + TAG: "InputMethod", _0: { + TAG: "InsertChar", _0: "(", [Symbol.for("name")]: "InsertChar" }, @@ -515,97 +524,97 @@ var names = [ "input-symbol[InsertOpenParenthesis]" ], [ - /* LookupSymbol */17, + "LookupSymbol", "lookup-symbol" ], [ - /* OpenDebugBuffer */18, + "OpenDebugBuffer", "open-debug-buffer" ] ]; function toString$2(x) { - if (typeof x === "number") { + if (typeof x !== "object") { switch (x) { - case /* Load */0 : + case "Load" : return "Load"; - case /* Quit */1 : + case "Quit" : return "Quit"; - case /* Restart */2 : + case "Restart" : return "Restart"; - case /* Refresh */3 : + case "Refresh" : return "Refresh "; - case /* Compile */4 : + case "Compile" : return "Compile"; - case /* ToggleDisplayOfImplicitArguments */5 : + case "ToggleDisplayOfImplicitArguments" : return "Toggle display of hidden arguments"; - case /* ToggleDisplayOfIrrelevantArguments */6 : + case "ToggleDisplayOfIrrelevantArguments" : return "Toggle display of irrelevant arguments"; - case /* ShowConstraints */7 : + case "ShowConstraints" : return "Show constraints"; - case /* NextGoal */8 : + case "NextGoal" : return "Next goal"; - case /* PreviousGoal */9 : + case "PreviousGoal" : return "Previous goal"; - case /* Give */10 : + case "Give" : return "Give"; - case /* Refine */11 : + case "Refine" : return "Refine"; - case /* Auto */12 : + case "Auto" : return "Auto"; - case /* Case */13 : + case "Case" : return "Case"; - case /* WhyInScope */14 : + case "WhyInScope" : return "Why in scope"; - case /* SwitchAgdaVersion */15 : + case "SwitchAgdaVersion" : return "Switch to a different Agda version"; - case /* Escape */16 : + case "Escape" : return "Escape"; - case /* LookupSymbol */17 : + case "LookupSymbol" : return "Lookup Unicode symbol input sequence"; - case /* OpenDebugBuffer */18 : + case "OpenDebugBuffer" : return "Open debug buffer"; } } else { - switch (x.TAG | 0) { - case /* SolveConstraints */0 : + switch (x.TAG) { + case "SolveConstraints" : return "Solve constraints " + toString(x._0); - case /* ShowGoals */1 : + case "ShowGoals" : return "Show goals" + toString(x._0); - case /* SearchAbout */2 : + case "SearchAbout" : return "Search about " + toString(x._0); - case /* ElaborateAndGive */3 : + case "ElaborateAndGive" : return "Elaborate and give " + toString(x._0); - case /* HelperFunctionType */4 : + case "HelperFunctionType" : return "Helper function type " + toString(x._0); - case /* InferType */5 : + case "InferType" : return "Infer type " + toString(x._0); - case /* Context */6 : + case "Context" : return "Context " + toString(x._0); - case /* GoalType */7 : + case "GoalType" : return "Goal type " + toString(x._0); - case /* GoalTypeAndContext */8 : + case "GoalTypeAndContext" : return "Goal type and context " + toString(x._0); - case /* EventFromView */9 : + case "EventFromView" : return "Event from the view"; - case /* GoalTypeContextAndInferredType */10 : + case "GoalTypeContextAndInferredType" : return "Goal type, context and inferred type " + toString(x._0); - case /* GoalTypeContextAndCheckedType */11 : + case "GoalTypeContextAndCheckedType" : return "Goal type, context and checked type " + toString(x._0); - case /* ModuleContents */12 : + case "ModuleContents" : return "Module contents " + toString(x._0); - case /* ComputeNormalForm */13 : + case "ComputeNormalForm" : switch (x._0) { - case /* DefaultCompute */0 : + case "DefaultCompute" : return "Compute normal form (DefaultCompute)"; - case /* IgnoreAbstract */1 : + case "IgnoreAbstract" : return "Compute normal form (IgnoreAbstract)"; - case /* UseShowInstance */2 : + case "UseShowInstance" : return "Compute normal form (UseShowInstance)"; } - case /* InputMethod */14 : + case "InputMethod" : return "Input symbol " + toString$1(x._0); } diff --git a/lib/js/src/Config.bs.js b/lib/js/src/Config.bs.js index abf4f1a7..d195254d 100644 --- a/lib/js/src/Config.bs.js +++ b/lib/js/src/Config.bs.js @@ -2,11 +2,9 @@ 'use strict'; var Vscode = require("vscode"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Js_string = require("rescript/lib/js/js_string.js"); -var Belt_Array = require("rescript/lib/js/belt_Array.js"); -var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); +var Core__Option = require("@rescript/core/lib/js/src/Core__Option.bs.js"); var Parser$AgdaModeVscode = require("./Parser/Parser.bs.js"); var inTestingMode = { @@ -28,17 +26,17 @@ var useAgdaLanguageServerInTestingMode = { function setAgdaVersion(path) { if (inTestingMode.contents) { agdaVersionInTestingMode.contents = path; - return $$Promise.resolved(undefined); + return Promise.resolve(); } else { return Vscode.workspace.getConfiguration("agdaMode", undefined).update("connection.agdaVersion", path, 1, undefined); } } -function getAgdaVersion(param) { +function getAgdaVersion() { if (inTestingMode.contents) { return agdaVersionInTestingMode.contents; } else { - return Belt_Option.getWithDefault(Belt_Option.flatMap(Belt_Option.map(Vscode.workspace.getConfiguration("agdaMode", undefined).get("connection.agdaVersion"), (function (prim) { + return Core__Option.getOr(Core__Option.flatMap(Core__Option.map(Vscode.workspace.getConfiguration("agdaMode", undefined).get("connection.agdaVersion"), (function (prim) { return prim.trim(); })), (function (s) { if (s === "") { @@ -53,31 +51,31 @@ function getAgdaVersion(param) { function setAgdaPath(path) { if (inTestingMode.contents) { agdaPathInTestingMode.contents = path; - return $$Promise.resolved(undefined); + return Promise.resolve(); } else { return Vscode.workspace.getConfiguration("agdaMode", undefined).update("connection.agdaPath", path, 1, undefined); } } -function getAgdaPath(param) { +function getAgdaPath() { if (inTestingMode.contents) { return agdaPathInTestingMode.contents; } else { - return Belt_Option.mapWithDefault(Vscode.workspace.getConfiguration("agdaMode", undefined).get("connection.agdaPath"), "", (function (prim) { + return Core__Option.mapOr(Vscode.workspace.getConfiguration("agdaMode", undefined).get("connection.agdaPath"), "", (function (prim) { return prim.trim(); })); } } -function getCommandLineOptions(param) { - return Belt_Array.keep(Belt_Option.mapWithDefault(Vscode.workspace.getConfiguration("agdaMode", undefined).get("connection.commandLineOptions"), [], (function (s) { - return Js_string.split(" ", s.trim()); - })), (function (s) { - return s.trim() !== ""; - })); +function getCommandLineOptions() { + return Core__Option.mapOr(Vscode.workspace.getConfiguration("agdaMode", undefined).get("connection.commandLineOptions"), [], (function (s) { + return Js_string.split(" ", s.trim()); + })).filter(function (s) { + return s.trim() !== ""; + }); } -function getUseAgdaLanguageServer(param) { +function getUseAgdaLanguageServer() { if (inTestingMode.contents) { return useAgdaLanguageServerInTestingMode.contents; } @@ -92,13 +90,13 @@ function getUseAgdaLanguageServer(param) { function setUseAgdaLanguageServer(mode) { if (inTestingMode.contents) { useAgdaLanguageServerInTestingMode.contents = mode; - return $$Promise.resolved(undefined); + return Promise.resolve(); } else { return Vscode.workspace.getConfiguration("agdaMode", undefined).update("connection.agdaLanguageServer", mode, 1, undefined); } } -function getAgdaLanguageServerPort(param) { +function getAgdaLanguageServerPort() { var raw = Vscode.workspace.getConfiguration("agdaMode", undefined).get("connection.agdaLanguageServerPort"); if (raw !== undefined) { return Caml_option.valFromOption(raw); @@ -107,12 +105,12 @@ function getAgdaLanguageServerPort(param) { } } -function getAgdaLanguageServerCommandLineOptions(param) { - return Belt_Array.keep(Belt_Option.mapWithDefault(Vscode.workspace.getConfiguration("agdaMode", undefined).get("connection.agdaLanguageServerOptions"), [], (function (s) { - return Js_string.split(" ", s.trim()); - })), (function (s) { - return s.trim() !== ""; - })); +function getAgdaLanguageServerCommandLineOptions() { + return Core__Option.mapOr(Vscode.workspace.getConfiguration("agdaMode", undefined).get("connection.agdaLanguageServerOptions"), [], (function (s) { + return Js_string.split(" ", s.trim()); + })).filter(function (s) { + return s.trim() !== ""; + }); } var Connection = { @@ -131,15 +129,17 @@ var Connection = { }; function setPanelMountingPosition(mountAt) { - return Vscode.workspace.getConfiguration("agdaMode", undefined).update("view.panelMountPosition", mountAt ? "right" : "bottom", 1, undefined); + var tmp; + tmp = mountAt === "Bottom" ? "bottom" : "right"; + return Vscode.workspace.getConfiguration("agdaMode", undefined).update("view.panelMountPosition", tmp, 1, undefined); } -function getPanelMountingPosition(param) { +function getPanelMountingPosition() { var result = Vscode.workspace.getConfiguration("agdaMode", undefined).get("view.panelMountPosition"); if (result === "right") { - return /* Right */1; + return "Right"; } else { - return /* Bottom */0; + return "Bottom"; } } @@ -148,14 +148,14 @@ var View = { getPanelMountingPosition: getPanelMountingPosition }; -function getLibraryPath(param) { - var raw = Belt_Option.getWithDefault(Vscode.workspace.getConfiguration("agdaMode", undefined).get("libraryPath"), ""); - return Belt_Array.map(Belt_Array.keep(Js_string.split(",", raw), (function (x) { - return x !== ""; - })), Parser$AgdaModeVscode.filepath); +function getLibraryPath() { + var raw = Core__Option.getOr(Vscode.workspace.getConfiguration("agdaMode", undefined).get("libraryPath"), ""); + return Js_string.split(",", raw).filter(function (x) { + return x !== ""; + }).map(Parser$AgdaModeVscode.filepath); } -function getHighlightingMethod(param) { +function getHighlightingMethod() { var raw = Vscode.workspace.getConfiguration("agdaMode", undefined).get("highlighting.IPC"); if (raw === "Standard input/output") { return true; @@ -164,7 +164,7 @@ function getHighlightingMethod(param) { } } -function getHighlightWithThemeColors(param) { +function getHighlightWithThemeColors() { var raw = Vscode.workspace.getConfiguration("agdaMode", undefined).get("highlighting.getHighlightWithThemeColors"); if (raw !== undefined && !raw) { return false; @@ -178,14 +178,12 @@ var Highlighting = { getHighlightWithThemeColors: getHighlightWithThemeColors }; -function getBackend(param) { +function getBackend() { var raw = Vscode.workspace.getConfiguration("agdaMode", undefined).get("backend"); if (raw === undefined) { return "GHCNoMain"; } switch (raw) { - case "GHC" : - return "GHCNoMain"; case "LaTeX" : return "LaTeX"; case "QuickLaTeX" : @@ -195,7 +193,7 @@ function getBackend(param) { } } -function getEnable(param) { +function getEnable() { var raw = Vscode.workspace.getConfiguration("agdaMode", undefined).get("inputMethod.enable"); if (raw !== undefined && !raw) { return false; @@ -204,7 +202,7 @@ function getEnable(param) { } } -function getActivationKey(param) { +function getActivationKey() { var raw = Vscode.workspace.getConfiguration("agdaMode", undefined).get("inputMethod.activationKey"); if (raw === undefined) { return "\\"; diff --git a/lib/js/src/Connection/Connection.bs.js b/lib/js/src/Connection/Connection.bs.js index 81bf674b..72241b93 100644 --- a/lib/js/src/Connection/Connection.bs.js +++ b/lib/js/src/Connection/Connection.bs.js @@ -1,8 +1,8 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Curry = require("rescript/lib/js/curry.js"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); +var Js_exn = require("rescript/lib/js/js_exn.js"); +var Caml_js_exceptions = require("rescript/lib/js/caml_js_exceptions.js"); var Util$AgdaModeVscode = require("../Util/Util.bs.js"); var Config$AgdaModeVscode = require("../Config.bs.js"); var Parser$AgdaModeVscode = require("../Parser/Parser.bs.js"); @@ -13,14 +13,14 @@ var Connection__LSP$AgdaModeVscode = require("./LSP/Connection__LSP.bs.js"); var Connection__Emacs$AgdaModeVscode = require("./Emacs/Connection__Emacs.bs.js"); var Connection__Probe$AgdaModeVscode = require("./Connection__Probe.bs.js"); -function getFromConfig(param) { - var param$1 = { - commandLineOptions: Config$AgdaModeVscode.Connection.getCommandLineOptions(undefined) +function getFromConfig() { + var param = { + commandLineOptions: Config$AgdaModeVscode.Connection.getCommandLineOptions() }; return { - commandLineOptions: Json_Encode$JsonCombinators.array((function (prim) { + commandLineOptions: Json_Encode$JsonCombinators.array(function (prim) { return prim; - }), param$1.commandLineOptions) + })(param.commandLineOptions) }; } @@ -29,10 +29,10 @@ var singleton = { }; function toStatus(conn) { - if (conn.TAG === /* Emacs */0) { + if (conn.TAG === "Emacs") { var match = Connection__Emacs$AgdaModeVscode.getInfo(conn._0); return { - TAG: 0, + TAG: "Emacs", _0: match[0], _1: match[1], [Symbol.for("name")]: "Emacs" @@ -40,220 +40,278 @@ function toStatus(conn) { } var conn$1 = conn._0; return { - TAG: 1, + TAG: "LSP", _0: conn$1.version, _1: Client__LSP$LanguageServerMule.getMethod(conn$1.client), [Symbol.for("name")]: "LSP" }; } -function start(globalStoragePath, useLSP, onDownload) { +async function start(globalStoragePath, useLSP, onDownload) { var conn = singleton.contents; if (conn !== undefined) { - return $$Promise.resolved({ - TAG: 0, - _0: toStatus(conn), - [Symbol.for("name")]: "Ok" - }); - } else if (useLSP) { - return $$Promise.mapOk($$Promise.flatMapOk($$Promise.flatMap(Connection__Probe$AgdaModeVscode.probeLSP(globalStoragePath, onDownload), (function (param) { - var result = param[0]; - if (result !== undefined) { - return $$Promise.resolved({ - TAG: 0, - _0: result, - [Symbol.for("name")]: "Ok" - }); - } else { - return $$Promise.resolved({ - TAG: 1, - _0: { - TAG: 2, - _0: "Agda Language Server", - _1: param[1], - [Symbol.for("name")]: "CannotAcquireHandle" - }, - [Symbol.for("name")]: "Error" - }); - } - })), (function (method) { - return $$Promise.mapError($$Promise.flatMapOk($$Promise.mapError(Util$AgdaModeVscode.P.toPromise(Client__LSP$LanguageServerMule.make("agda", "Agda Language Server", method, getFromConfig(undefined))), (function (e) { - return { - TAG: 0, - _0: e, - [Symbol.for("name")]: "ConnectionError" - }; - })), Connection__LSP$AgdaModeVscode.make), (function (error) { - return { - TAG: 1, - _0: error, - [Symbol.for("name")]: "LSP" - }; - })); - })), (function (conn) { - var method = Client__LSP$LanguageServerMule.getMethod(conn.client); - singleton.contents = { - TAG: 1, - _0: conn, - [Symbol.for("name")]: "LSP" - }; - return { - TAG: 1, - _0: conn.version, - _1: method, - [Symbol.for("name")]: "LSP" - }; - })); - } else { - return $$Promise.mapOk($$Promise.flatMapOk($$Promise.flatMap(Connection__Probe$AgdaModeVscode.probeEmacs(undefined), (function (param) { - var result = param[0]; - if (result !== undefined) { - return $$Promise.resolved({ - TAG: 0, - _0: result, - [Symbol.for("name")]: "Ok" - }); - } - var name = Config$AgdaModeVscode.Connection.getAgdaVersion(undefined); - return $$Promise.resolved({ - TAG: 1, - _0: { - TAG: 2, - _0: name, - _1: param[1], - [Symbol.for("name")]: "CannotAcquireHandle" - }, - [Symbol.for("name")]: "Error" - }); - })), (function (method) { - return $$Promise.mapError(Connection__Emacs$AgdaModeVscode.make(method), (function (error) { - return { - TAG: 0, - _0: error, - [Symbol.for("name")]: "Emacs" - }; - })); - })), (function (conn) { - singleton.contents = { - TAG: 0, - _0: conn, - [Symbol.for("name")]: "Emacs" - }; - var match = Connection__Emacs$AgdaModeVscode.getInfo(conn); - return { - TAG: 0, - _0: match[0], - _1: match[1], - [Symbol.for("name")]: "Emacs" - }; - })); + return { + TAG: "Ok", + _0: toStatus(conn), + [Symbol.for("name")]: "Ok" + }; } + if (useLSP) { + var match = await Connection__Probe$AgdaModeVscode.probeLSP(globalStoragePath, onDownload); + var result = match[0]; + if (result === undefined) { + return { + TAG: "Error", + _0: { + TAG: "CannotAcquireHandle", + _0: "Agda Language Server", + _1: match[1], + [Symbol.for("name")]: "CannotAcquireHandle" + }, + [Symbol.for("name")]: "Error" + }; + } + var error; + try { + error = await Client__LSP$LanguageServerMule.make("agda", "Agda Language Server", result, getFromConfig()); + } + catch (raw_error){ + var error$1 = Caml_js_exceptions.internalToOCamlException(raw_error); + if (error$1.RE_EXN_ID === Js_exn.$$Error) { + return { + TAG: "Error", + _0: { + TAG: "LSP", + _0: { + TAG: "ConnectionError", + _0: error$1._1, + [Symbol.for("name")]: "ConnectionError" + }, + [Symbol.for("name")]: "LSP" + }, + [Symbol.for("name")]: "Error" + }; + } + throw error$1; + } + if (error.TAG !== "Ok") { + return { + TAG: "Error", + _0: { + TAG: "LSP", + _0: { + TAG: "ConnectionError", + _0: error._0, + [Symbol.for("name")]: "ConnectionError" + }, + [Symbol.for("name")]: "LSP" + }, + [Symbol.for("name")]: "Error" + }; + } + var error$2 = await Connection__LSP$AgdaModeVscode.make(error._0); + if (error$2.TAG !== "Ok") { + return { + TAG: "Error", + _0: { + TAG: "LSP", + _0: error$2._0, + [Symbol.for("name")]: "LSP" + }, + [Symbol.for("name")]: "Error" + }; + } + var conn$1 = error$2._0; + var method = Client__LSP$LanguageServerMule.getMethod(conn$1.client); + singleton.contents = { + TAG: "LSP", + _0: conn$1, + [Symbol.for("name")]: "LSP" + }; + return { + TAG: "Ok", + _0: { + TAG: "LSP", + _0: conn$1.version, + _1: method, + [Symbol.for("name")]: "LSP" + }, + [Symbol.for("name")]: "Ok" + }; + } + var match$1 = await Connection__Probe$AgdaModeVscode.probeEmacs(); + var result$1 = match$1[0]; + if (result$1 !== undefined) { + var error$3 = await Connection__Emacs$AgdaModeVscode.make(result$1); + if (error$3.TAG !== "Ok") { + return { + TAG: "Error", + _0: { + TAG: "Emacs", + _0: error$3._0, + [Symbol.for("name")]: "Emacs" + }, + [Symbol.for("name")]: "Error" + }; + } + var conn$2 = error$3._0; + singleton.contents = { + TAG: "Emacs", + _0: conn$2, + [Symbol.for("name")]: "Emacs" + }; + var match$2 = Connection__Emacs$AgdaModeVscode.getInfo(conn$2); + return { + TAG: "Ok", + _0: { + TAG: "Emacs", + _0: match$2[0], + _1: match$2[1], + [Symbol.for("name")]: "Emacs" + }, + [Symbol.for("name")]: "Ok" + }; + } + var name = Config$AgdaModeVscode.Connection.getAgdaVersion(); + return { + TAG: "Error", + _0: { + TAG: "CannotAcquireHandle", + _0: name, + _1: match$1[1], + [Symbol.for("name")]: "CannotAcquireHandle" + }, + [Symbol.for("name")]: "Error" + }; } -function stop(param) { +async function stop() { var match = singleton.contents; if (match === undefined) { - return $$Promise.resolved({ - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; } - if (match.TAG === /* Emacs */0) { + if (match.TAG === "Emacs") { singleton.contents = undefined; - return $$Promise.map(Connection__Emacs$AgdaModeVscode.destroy(match._0), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); + await Connection__Emacs$AgdaModeVscode.destroy(match._0); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; } singleton.contents = undefined; - return $$Promise.mapError(Connection__LSP$AgdaModeVscode.destroy(match._0), (function (err) { - return { - TAG: 1, - _0: err, - [Symbol.for("name")]: "LSP" - }; - })); + var error = await Connection__LSP$AgdaModeVscode.destroy(match._0); + if (error.TAG === "Ok") { + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } else { + return { + TAG: "Error", + _0: { + TAG: "LSP", + _0: error._0, + [Symbol.for("name")]: "LSP" + }, + [Symbol.for("name")]: "Error" + }; + } } -function sendRequest(globalStoragePath, onDownload, useLSP, $$document, request, handler) { +async function sendRequest(globalStoragePath, onDownload, useLSP, $$document, request, handler) { var encodeRequest = function ($$document, version) { var filepath = Parser$AgdaModeVscode.filepath($$document.fileName); - var libraryPath = Config$AgdaModeVscode.getLibraryPath(undefined); - var highlightingMethod = Config$AgdaModeVscode.Highlighting.getHighlightingMethod(undefined); - var backend = Config$AgdaModeVscode.getBackend(undefined); + var libraryPath = Config$AgdaModeVscode.getLibraryPath(); + var highlightingMethod = Config$AgdaModeVscode.Highlighting.getHighlightingMethod(); + var backend = Config$AgdaModeVscode.getBackend(); return Request$AgdaModeVscode.encode($$document, version, filepath, backend, libraryPath, highlightingMethod, request); }; var match = singleton.contents; - if (match === undefined) { - return $$Promise.flatMapOk(start(globalStoragePath, useLSP, onDownload), (function (param) { - return sendRequest(globalStoragePath, onDownload, useLSP, $$document, request, handler); - })); - } - if (match.TAG === /* Emacs */0) { - var conn = match._0; - var match$1 = Connection__Emacs$AgdaModeVscode.getInfo(conn); - var handler$1 = function (x) { - return Curry._1(handler, Util$AgdaModeVscode.Result.mapError(x, (function (err) { + if (match !== undefined) { + if (match.TAG === "Emacs") { + var conn = match._0; + var match$1 = Connection__Emacs$AgdaModeVscode.getInfo(conn); + var handler$1 = function (x) { + return handler(Util$AgdaModeVscode.Result.mapError(x, (function (err) { + return { + TAG: "Emacs", + _0: err, + [Symbol.for("name")]: "Emacs" + }; + }))); + }; + var error = await Connection__Emacs$AgdaModeVscode.sendRequest(conn, encodeRequest($$document, match$1[0]), handler$1); + if (error.TAG === "Ok") { + return { + TAG: "Ok", + _0: toStatus({ + TAG: "Emacs", + _0: conn, + [Symbol.for("name")]: "Emacs" + }), + [Symbol.for("name")]: "Ok" + }; + } + await stop(); + return { + TAG: "Error", + _0: { + TAG: "Emacs", + _0: error._0, + [Symbol.for("name")]: "Emacs" + }, + [Symbol.for("name")]: "Error" + }; + } + var conn$1 = match._0; + var handler$2 = function (x) { + return handler(Util$AgdaModeVscode.Result.mapError(x, (function (err) { return { - TAG: 0, + TAG: "LSP", _0: err, - [Symbol.for("name")]: "Emacs" + [Symbol.for("name")]: "LSP" }; }))); }; - return $$Promise.flatMapError($$Promise.mapOk(Connection__Emacs$AgdaModeVscode.sendRequest(conn, encodeRequest($$document, match$1[0]), handler$1), (function (param) { - return toStatus({ - TAG: 0, - _0: conn, - [Symbol.for("name")]: "Emacs" - }); - })), (function (error) { - return $$Promise.map(stop(undefined), (function (param) { - return { - TAG: 1, - _0: { - TAG: 0, - _0: error, - [Symbol.for("name")]: "Emacs" - }, - [Symbol.for("name")]: "Error" - }; - })); - })); + var error$1 = await Connection__LSP$AgdaModeVscode.sendRequest(conn$1, encodeRequest($$document, conn$1.version), handler$2); + if (error$1.TAG === "Ok") { + return { + TAG: "Ok", + _0: toStatus({ + TAG: "LSP", + _0: conn$1, + [Symbol.for("name")]: "LSP" + }), + [Symbol.for("name")]: "Ok" + }; + } + await stop(); + return { + TAG: "Error", + _0: { + TAG: "LSP", + _0: error$1._0, + [Symbol.for("name")]: "LSP" + }, + [Symbol.for("name")]: "Error" + }; + } + var error$2 = await start(globalStoragePath, useLSP, onDownload); + if (error$2.TAG === "Ok") { + return await sendRequest(globalStoragePath, onDownload, useLSP, $$document, request, handler); + } else { + return { + TAG: "Error", + _0: error$2._0, + [Symbol.for("name")]: "Error" + }; } - var conn$1 = match._0; - var handler$2 = function (x) { - return Curry._1(handler, Util$AgdaModeVscode.Result.mapError(x, (function (err) { - return { - TAG: 1, - _0: err, - [Symbol.for("name")]: "LSP" - }; - }))); - }; - return $$Promise.flatMapError($$Promise.mapOk(Connection__LSP$AgdaModeVscode.sendRequest(conn$1, encodeRequest($$document, conn$1.version), handler$2), (function (param) { - return toStatus({ - TAG: 1, - _0: conn$1, - [Symbol.for("name")]: "LSP" - }); - })), (function (error) { - return $$Promise.map(stop(undefined), (function (param) { - return { - TAG: 1, - _0: { - TAG: 1, - _0: error, - [Symbol.for("name")]: "LSP" - }, - [Symbol.for("name")]: "Error" - }; - })); - })); } var Module = { @@ -264,18 +322,18 @@ var Module = { var $$Error; -var Scheduler; +var $$Scheduler; var Emacs; var LSP; exports.$$Error = $$Error; -exports.Scheduler = Scheduler; +exports.$$Scheduler = $$Scheduler; exports.Emacs = Emacs; exports.LSP = LSP; exports.Module = Module; exports.start = start; exports.stop = stop; exports.sendRequest = sendRequest; -/* Promise Not a pure module */ +/* Util-AgdaModeVscode Not a pure module */ diff --git a/lib/js/src/Connection/Connection__Error.bs.js b/lib/js/src/Connection/Connection__Error.bs.js index f63d44d4..50e32a1a 100644 --- a/lib/js/src/Connection/Connection__Error.bs.js +++ b/lib/js/src/Connection/Connection__Error.bs.js @@ -7,12 +7,12 @@ var Connection__LSP__Error$AgdaModeVscode = require("./LSP/Connection__LSP__Erro var Connection__Emacs__Error$AgdaModeVscode = require("./Emacs/Connection__Emacs__Error.bs.js"); function toString(x) { - switch (x.TAG | 0) { - case /* Emacs */0 : + switch (x.TAG) { + case "Emacs" : return Connection__Emacs__Error$AgdaModeVscode.toString(x._0); - case /* LSP */1 : + case "LSP" : return Connection__LSP__Error$AgdaModeVscode.toString(x._0); - case /* CannotAcquireHandle */2 : + case "CannotAcquireHandle" : return [ "Unable to find " + x._0, "Here are the error messages from all the attempts: \n" + Belt_Array.map(x._1, Source$LanguageServerMule.$$Error.toString).join("\n") diff --git a/lib/js/src/Connection/Connection__Probe.bs.js b/lib/js/src/Connection/Connection__Probe.bs.js index f3c87a73..9fce4576 100644 --- a/lib/js/src/Connection/Connection__Probe.bs.js +++ b/lib/js/src/Connection/Connection__Probe.bs.js @@ -1,185 +1,86 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Caml = require("rescript/lib/js/caml.js"); -var Path = require("path"); -var Curry = require("rescript/lib/js/curry.js"); -var Getos = require("getos"); var Js_dict = require("rescript/lib/js/js_dict.js"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); -var Process = require("process"); -var Js_array = require("rescript/lib/js/js_array.js"); -var Belt_Array = require("rescript/lib/js/belt_Array.js"); -var Belt_Option = require("rescript/lib/js/belt_Option.js"); -var Caml_option = require("rescript/lib/js/caml_option.js"); +var Nodeos = require("node:os"); +var Nodepath = require("node:path"); var Config$AgdaModeVscode = require("../Config.bs.js"); var Source$LanguageServerMule = require("language-server-mule/lib/js/src/Source.bs.js"); var Source__GitHub$LanguageServerMule = require("language-server-mule/lib/js/src/Source/Source__GitHub.bs.js"); -var Client__LSP__Binding$LanguageServerMule = require("language-server-mule/lib/js/src/Client/Client__LSP__Binding.bs.js"); -function runAsPromise(param) { - var match = $$Promise.Js.pending(undefined); - var reject = match[2]; - var resolve = match[1]; - Getos(function (e, os) { - if (e == null) { - return Curry._1(resolve, os); - } else { - return Curry._1(reject, e); - } - }); - return match[0]; -} - -var GetOs = { - runAsPromise: runAsPromise -}; - -function determine(param) { - var _others = Process.platform; - switch (_others) { - case "darwin" : - return $$Promise.resolved(/* MacOS */1); - case "linux" : - return $$Promise.map(runAsPromise(undefined), (function (result) { - var match = result.dist; - if (match === "Ubuntu") { - return /* Ubuntu */2; - } else { - return /* Others */3; - } - })); - case "win32" : - return $$Promise.resolved(/* Windows */0); - default: - return $$Promise.resolved(/* Others */3); - } -} - -var Platform = { - GetOs: GetOs, - determine: determine -}; - -function chooseFromReleases(platform, releases) { - var chooseRelease = function (releases) { - var compare = function (x, y) { - var xTime = new Date(x.created_at).getTime(); - var yTime = new Date(y.created_at).getTime(); - return Caml.float_compare(yTime, xTime); - }; - var sorted = Js_array.sortInPlaceWith(compare, releases); - return Belt_Array.get(sorted, 0); - }; - var chooseAsset = function (release) { - var expectedSuffix; - switch (platform) { - case /* Windows */0 : - expectedSuffix = "windows.zip"; - break; - case /* MacOS */1 : - expectedSuffix = "macos.zip"; - break; - case /* Ubuntu */2 : - expectedSuffix = "ubuntu.zip"; - break; - case /* Others */3 : - expectedSuffix = undefined; - break; - - } - return Belt_Option.map(Belt_Option.flatMap(expectedSuffix, (function (suffix) { - var matched = Belt_Array.keep(release.assets, (function (asset) { - return asset.name.endsWith(suffix); - })); - return Belt_Array.get(matched, 0); - })), (function (asset) { - return { - release: release, - asset: asset, - saveAsFileName: release.tag_name + "-" + Process.platform - }; - })); - }; - return Belt_Option.flatMap(chooseRelease(releases), chooseAsset); -} - -function afterDownload(fromCached, param) { - var target = param[1]; +async function afterDownload(isCached, param) { var path = param[0]; - var execPath = Path.join(path, "als"); - var assetPath = Path.join(path, "data"); + var assetPath = Nodepath.join(path, "data"); var env = Js_dict.fromArray([[ "Agda_datadir", assetPath ]]); - var options = Client__LSP__Binding$LanguageServerMule.ExecutableOptions.make(undefined, Caml_option.some(env), undefined, undefined, undefined); - var shouldChmod777 = !fromCached && Process.platform !== "win32"; - return $$Promise.map(shouldChmod777 ? $$Promise.map(Source__GitHub$LanguageServerMule.chmodExecutable(execPath), (function (param) { - - })) : $$Promise.resolved(undefined), (function (param) { - return { - TAG: 0, - _0: [ - execPath, - [], - options, - target - ], - [Symbol.for("name")]: "Ok" - }; - })); + var options_env = env; + var options = { + env: options_env + }; + var execPath = Nodepath.join(path, "als"); + var shouldChmod = !isCached && Nodeos.platform() !== "win32"; + if (shouldChmod) { + await Source__GitHub$LanguageServerMule.chmodExecutable(execPath); + } + return { + TAG: "Ok", + _0: [ + execPath, + [], + options, + param[1] + ], + [Symbol.for("name")]: "Ok" + }; } -function probeLSP(globalStoragePath, onDownload) { - var port = Config$AgdaModeVscode.Connection.getAgdaLanguageServerPort(undefined); - return $$Promise.flatMap(determine(undefined), (function (platform) { - return Source$LanguageServerMule.Module.searchUntilSuccess([ - { - TAG: 2, - _0: port, - _1: "localhost", - [Symbol.for("name")]: "FromTCP" - }, - { - TAG: 1, - _0: "als", - [Symbol.for("name")]: "FromCommand" - }, - { - TAG: 3, - _0: { - username: "agda", - repository: "agda-language-server", - userAgent: "agda/agda-mode-vscode", - globalStoragePath: globalStoragePath, - chooseFromReleases: (function (param) { - return chooseFromReleases(platform, param); - }), - onDownload: onDownload, - afterDownload: afterDownload, - cacheInvalidateExpirationSecs: 86400, - log: (function (prim) { - console.log(prim); - }) - }, - [Symbol.for("name")]: "FromGitHub" - } - ]); - })); +async function probeLSP(globalStoragePath, onDownload) { + var port = Config$AgdaModeVscode.Connection.getAgdaLanguageServerPort(); + return await Source$LanguageServerMule.Module.searchUntilSuccess([ + { + TAG: "FromTCP", + _0: port, + _1: "localhost", + [Symbol.for("name")]: "FromTCP" + }, + { + TAG: "FromCommand", + _0: "als", + [Symbol.for("name")]: "FromCommand" + }, + { + TAG: "FromGitHub", + _0: { + username: "agda", + repository: "agda-language-server", + userAgent: "agda/agda-mode-vscode", + globalStoragePath: globalStoragePath, + chooseFromReleases: "UseLatest", + onDownload: onDownload, + afterDownload: afterDownload, + cacheInvalidateExpirationSecs: 86400, + log: (function (x) { + console.log(x); + }) + }, + [Symbol.for("name")]: "FromGitHub" + } + ]); } -function probeEmacs(param) { - var storedPath = Config$AgdaModeVscode.Connection.getAgdaPath(undefined); - var storedName = Config$AgdaModeVscode.Connection.getAgdaVersion(undefined); +function probeEmacs() { + var storedPath = Config$AgdaModeVscode.Connection.getAgdaPath(); + var storedName = Config$AgdaModeVscode.Connection.getAgdaVersion(); return Source$LanguageServerMule.Module.searchUntilSuccess([ { - TAG: 0, + TAG: "FromFile", _0: storedPath, [Symbol.for("name")]: "FromFile" }, { - TAG: 1, + TAG: "FromCommand", _0: storedName, [Symbol.for("name")]: "FromCommand" } @@ -189,9 +90,7 @@ function probeEmacs(param) { var Version; exports.Version = Version; -exports.Platform = Platform; -exports.chooseFromReleases = chooseFromReleases; exports.afterDownload = afterDownload; exports.probeLSP = probeLSP; exports.probeEmacs = probeEmacs; -/* path Not a pure module */ +/* node:os Not a pure module */ diff --git a/lib/js/src/Connection/Connection__Scheduler.bs.js b/lib/js/src/Connection/Connection__Scheduler.bs.js index 16159a4d..116207d1 100644 --- a/lib/js/src/Connection/Connection__Scheduler.bs.js +++ b/lib/js/src/Connection/Connection__Scheduler.bs.js @@ -2,30 +2,28 @@ 'use strict'; var Caml = require("rescript/lib/js/caml.js"); -var Curry = require("rescript/lib/js/curry.js"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Js_array = require("rescript/lib/js/js_array.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Chan$AgdaModeVscode = require("../Util/Chan.bs.js"); var Util$AgdaModeVscode = require("../Util/Util.bs.js"); -function make(param) { +function make() { return { tally: 0, - allDone: Chan$AgdaModeVscode.make(undefined), + allDone: Chan$AgdaModeVscode.make(), deferredLastResponses: [] }; } function runNonLast(self, handler, response) { self.tally = self.tally + 1 | 0; - $$Promise.get(Curry._1(handler, response), (function (param) { - self.tally = self.tally - 1 | 0; - if (self.tally === 0) { - return Chan$AgdaModeVscode.emit(self.allDone, undefined); - } - - })); + handler(response).finally(function () { + self.tally = self.tally - 1 | 0; + if (self.tally === 0) { + return Chan$AgdaModeVscode.emit(self.allDone, undefined); + } + + }); } function addLast(self, priority, response) { @@ -37,22 +35,24 @@ function addLast(self, priority, response) { function onceDone(self) { if (self.tally === 0) { - return $$Promise.resolved(undefined); + return Promise.resolve(); } else { return Chan$AgdaModeVscode.once(self.allDone); } } function runLast(self, handler) { - $$Promise.get(onceDone(self), (function (param) { - var deferredLastResponses = Belt_Array.map(Js_array.sortInPlaceWith((function (x, y) { - return Caml.int_compare(x[0], y[0]); - }), self.deferredLastResponses), (function (prim) { - return prim[1]; - })); - Js_array.unshift(/* CompleteHighlightingAndMakePromptReappear */4, deferredLastResponses); - Util$AgdaModeVscode.oneByOne(Belt_Array.map(deferredLastResponses, Curry.__1(handler))); - })); + onceDone(self).finally(function () { + var deferredLastResponses = Belt_Array.map(Js_array.sortInPlaceWith((function (x, y) { + return Caml.int_compare(x[0], y[0]); + }), self.deferredLastResponses), (function (prim) { + return prim[1]; + })); + Js_array.unshift("CompleteHighlightingAndMakePromptReappear", deferredLastResponses); + Util$AgdaModeVscode.oneByOne(Belt_Array.map(deferredLastResponses, (function (res) { + return handler(res); + }))); + }); } var Module = { @@ -67,4 +67,4 @@ exports.make = make; exports.addLast = addLast; exports.runNonLast = runNonLast; exports.runLast = runLast; -/* Promise Not a pure module */ +/* Chan-AgdaModeVscode Not a pure module */ diff --git a/lib/js/src/Connection/Emacs/Connection__Emacs.bs.js b/lib/js/src/Connection/Emacs/Connection__Emacs.bs.js index a5c859e7..fcaf4679 100644 --- a/lib/js/src/Connection/Emacs/Connection__Emacs.bs.js +++ b/lib/js/src/Connection/Emacs/Connection__Emacs.bs.js @@ -3,7 +3,6 @@ var Os = require("os"); var Curry = require("rescript/lib/js/curry.js"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Js_array = require("rescript/lib/js/js_array.js"); var Js_string = require("rescript/lib/js/js_string.js"); var Untildify = require("untildify"); @@ -18,34 +17,34 @@ var Response$AgdaModeVscode = require("../../Response.bs.js"); var Client__Process$LanguageServerMule = require("language-server-mule/lib/js/src/Client/Client__Process.bs.js"); var Connection__Scheduler$AgdaModeVscode = require("../Connection__Scheduler.bs.js"); -function make(path, args) { +async function make(path, args) { var path$1 = Untildify(path); var $$process = Client__Process$LanguageServerMule.make(path$1, ["-V"]); - var match = $$Promise.pending(undefined); + var match = Util$AgdaModeVscode.Promise_.pending(); var resolve = match[1]; - var handle = Client__Process$LanguageServerMule.onOutput($$process, (function (output) { - switch (output.TAG | 0) { - case /* Stdout */0 : + var destructor = Client__Process$LanguageServerMule.onOutput($$process, (function (output) { + switch (output.TAG) { + case "Stdout" : var match_ = Js_string.match_(/Agda version (.*)/, output._0); if (match_ === undefined) { - return Curry._1(resolve, { - TAG: 1, + return resolve({ + TAG: "Error", _0: "Cannot read Agda version", [Symbol.for("name")]: "Error" }); } var match = Belt_Array.get(match_, 1); if (match === undefined) { - return Curry._1(resolve, { - TAG: 1, + return resolve({ + TAG: "Error", _0: "Cannot read Agda version", [Symbol.for("name")]: "Error" }); } var version = Caml_option.valFromOption(match); if (version !== undefined) { - return Curry._1(resolve, { - TAG: 0, + return resolve({ + TAG: "Ok", _0: { path: path$1, args: args, @@ -54,36 +53,46 @@ function make(path, args) { [Symbol.for("name")]: "Ok" }); } else { - return Curry._1(resolve, { - TAG: 1, + return resolve({ + TAG: "Error", _0: "Cannot read Agda version", [Symbol.for("name")]: "Error" }); } - case /* Stderr */1 : - return Curry._1(resolve, { - TAG: 1, + case "Stderr" : + return resolve({ + TAG: "Error", _0: "Message from stderr when validating the program:\n" + output._0, [Symbol.for("name")]: "Error" }); - case /* Event */2 : - return Curry._1(resolve, { - TAG: 1, + case "Event" : + return resolve({ + TAG: "Error", _0: "Something occured when validating the program:\n" + Client__Process$LanguageServerMule.$$Event.toString(output._0), [Symbol.for("name")]: "Error" }); } })); - return $$Promise.mapError($$Promise.tap(match[0], (function (param) { - Curry._1(handle, undefined); - })), (function (e) { - return { - TAG: 0, - _0: e, - [Symbol.for("name")]: "Validation" - }; - })); + var result = await match[0]; + destructor(); + if (result.TAG === "Ok") { + return { + TAG: "Ok", + _0: result._0, + [Symbol.for("name")]: "Ok" + }; + } else { + return { + TAG: "Error", + _0: { + TAG: "Validation", + _0: result._0, + [Symbol.for("name")]: "Validation" + }, + [Symbol.for("name")]: "Error" + }; + } } function toString(self) { @@ -106,40 +115,44 @@ function destroy(self) { } function wire(self) { - var toResponse = Curry._1(Parser$AgdaModeVscode.Incr.Gen.flatMap, (function (x) { - if (x.TAG === /* Ok */0) { - var tokens = x._0; - if (tokens.TAG === /* A */0 && tokens._0 === "Agda2>") { - return /* Stop */0; - } else { - return { - _0: Response$AgdaModeVscode.Prioritized.parse(tokens), - [Symbol.for("name")]: "Yield" - }; - } - } - var match = x._0; - return { - _0: { - TAG: 1, - _0: { - TAG: 0, - _0: match[0], - _1: match[1], - [Symbol.for("name")]: "SExpression" - }, - [Symbol.for("name")]: "Error" - }, - [Symbol.for("name")]: "Yield" - }; - })); + var toResponse = function (extra) { + return Curry._2(Parser$AgdaModeVscode.Incr.Gen.flatMap, (function (x) { + if (x.TAG === "Ok") { + var tokens = x._0; + if (tokens.TAG === "A" && tokens._0 === "Agda2>") { + return "Stop"; + } else { + return { + TAG: "Yield", + _0: Response$AgdaModeVscode.Prioritized.parse(tokens), + [Symbol.for("name")]: "Yield" + }; + } + } + var match = x._0; + return { + TAG: "Yield", + _0: { + TAG: "Error", + _0: { + TAG: "SExpression", + _0: match[0], + _1: match[1], + [Symbol.for("name")]: "SExpression" + }, + [Symbol.for("name")]: "Error" + }, + [Symbol.for("name")]: "Yield" + }; + }), extra); + }; var incrParser = Parser$AgdaModeVscode.SExpression.makeIncr(function (x) { - var res = Curry._1(toResponse, x); - if (!res) { + var res = toResponse(x); + if (typeof res !== "object") { if (self.encountedFirstPrompt) { return Chan$AgdaModeVscode.emit(self.chan, { - TAG: 0, - _0: /* Stop */0, + TAG: "Ok", + _0: "Stop", [Symbol.for("name")]: "Ok" }); } else { @@ -148,10 +161,11 @@ function wire(self) { } } var response = res._0; - if (response.TAG === /* Ok */0) { + if (response.TAG === "Ok") { return Chan$AgdaModeVscode.emit(self.chan, { - TAG: 0, + TAG: "Ok", _0: { + TAG: "Yield", _0: response._0, [Symbol.for("name")]: "Yield" }, @@ -159,9 +173,9 @@ function wire(self) { }); } else { return Chan$AgdaModeVscode.emit(self.chan, { - TAG: 1, + TAG: "Error", _0: { - TAG: 3, + TAG: "ResponseParseError", _0: response._0, [Symbol.for("name")]: "ResponseParseError" }, @@ -171,31 +185,31 @@ function wire(self) { }); var listenerHandle; listenerHandle = Client__Process$LanguageServerMule.onOutput(self.process, (function (x) { - switch (x.TAG | 0) { - case /* Stdout */0 : + switch (x.TAG) { + case "Stdout" : var rawText = x._0; if (Js_string.startsWith("Error:", rawText)) { return Chan$AgdaModeVscode.emit(self.chan, { - TAG: 1, + TAG: "Error", _0: { - TAG: 2, + TAG: "AgdaError", _0: rawText, [Symbol.for("name")]: "AgdaError" }, [Symbol.for("name")]: "Error" }); } else { - return Belt_Array.forEach(Parser$AgdaModeVscode.splitToLines(rawText), (function (param) { - return Parser$AgdaModeVscode.Incr.feed(incrParser, param); + return Belt_Array.forEach(Parser$AgdaModeVscode.splitToLines(rawText), (function (extra) { + return Parser$AgdaModeVscode.Incr.feed(incrParser, extra); })); } - case /* Stderr */1 : + case "Stderr" : return ; - case /* Event */2 : + case "Event" : return Chan$AgdaModeVscode.emit(self.chan, { - TAG: 1, + TAG: "Error", _0: { - TAG: 1, + TAG: "Process", _0: x._0, [Symbol.for("name")]: "Process" }, @@ -206,80 +220,91 @@ function wire(self) { })); } -function make$1(method) { - if (method.TAG !== /* ViaCommand */0) { - return $$Promise.resolved({ - TAG: 1, - _0: /* ConnectionViaTCPNotSupported */0, - [Symbol.for("name")]: "Error" - }); +async function make$1(method) { + if (method.TAG !== "ViaPipe") { + return { + TAG: "Error", + _0: "ConnectionViaTCPNotSupported", + [Symbol.for("name")]: "Error" + }; + } + var args = Js_array.concat(Config$AgdaModeVscode.Connection.getCommandLineOptions(), ["--interaction"]); + var e = await make(method._0, args); + if (e.TAG !== "Ok") { + return { + TAG: "Error", + _0: e._0, + [Symbol.for("name")]: "Error" + }; } - var args = Js_array.concat(Config$AgdaModeVscode.Connection.getCommandLineOptions(undefined), ["--interaction"]); - return $$Promise.tapOk($$Promise.mapOk(make(method._0, args), (function (procInfo) { - return { - procInfo: procInfo, - process: Client__Process$LanguageServerMule.make(procInfo.path, procInfo.args), - chan: Chan$AgdaModeVscode.make(undefined), - encountedFirstPrompt: false - }; - })), wire); + var procInfo = e._0; + var conn = { + procInfo: procInfo, + process: Client__Process$LanguageServerMule.make(procInfo.path, procInfo.args), + chan: Chan$AgdaModeVscode.make(), + encountedFirstPrompt: false + }; + wire(conn); + return { + TAG: "Ok", + _0: conn, + [Symbol.for("name")]: "Ok" + }; } -function onResponse(conn, callback) { - var scheduler = Connection__Scheduler$AgdaModeVscode.make(undefined); - var match = $$Promise.pending(undefined); +async function onResponse(conn, callback) { + var scheduler = Connection__Scheduler$AgdaModeVscode.make(); + var match = Util$AgdaModeVscode.Promise_.pending(); var stopResponseListener = match[1]; var listener = function (x) { - if (x.TAG === /* Ok */0) { + if (x.TAG === "Ok") { var match = x._0; - if (match) { - var response = match._0; - if (response.TAG === /* NonLast */0) { - return Connection__Scheduler$AgdaModeVscode.runNonLast(scheduler, (function (response) { - return Curry._1(callback, { - TAG: 0, - _0: response, - [Symbol.for("name")]: "Ok" - }); - }), response._0); - } else { - return Connection__Scheduler$AgdaModeVscode.addLast(scheduler, response._0, response._1); - } + if (typeof match !== "object") { + stopResponseListener({ + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }); + return Connection__Scheduler$AgdaModeVscode.runLast(scheduler, (function (response) { + return callback({ + TAG: "Ok", + _0: response, + [Symbol.for("name")]: "Ok" + }); + })); + } + var response = match._0; + if (response.TAG === "NonLast") { + return Connection__Scheduler$AgdaModeVscode.runNonLast(scheduler, (function (response) { + return callback({ + TAG: "Ok", + _0: response, + [Symbol.for("name")]: "Ok" + }); + }), response._0); + } else { + return Connection__Scheduler$AgdaModeVscode.addLast(scheduler, response._0, response._1); } - Curry._1(stopResponseListener, { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }); - return Connection__Scheduler$AgdaModeVscode.runLast(scheduler, (function (response) { - return Curry._1(callback, { - TAG: 0, - _0: response, - [Symbol.for("name")]: "Ok" - }); - })); } var error = x._0; - Curry._1(stopResponseListener, { - TAG: 1, + stopResponseListener({ + TAG: "Error", _0: error, [Symbol.for("name")]: "Error" }); - Curry._1(callback, { - TAG: 1, + callback({ + TAG: "Error", _0: error, [Symbol.for("name")]: "Error" }); }; - var listenerHandle = { - contents: undefined - }; - listenerHandle.contents = Chan$AgdaModeVscode.on(conn.chan, listener); - return $$Promise.tap(match[0], (function (param) { - Belt_Option.forEach(listenerHandle.contents, (function (destroyListener) { - Curry._1(destroyListener, undefined); - })); - })); + var listenerHandle; + listenerHandle = Chan$AgdaModeVscode.on(conn.chan, listener); + var result = await match[0]; + Belt_Option.forEach(listenerHandle, (function (destroyListener) { + destroyListener(); + })); + return result; } function sendRequest(conn, request, handler) { @@ -304,12 +329,12 @@ var Module = { var $$Error; -var Scheduler; +var $$Scheduler; var Process; exports.$$Error = $$Error; -exports.Scheduler = Scheduler; +exports.$$Scheduler = $$Scheduler; exports.Process = Process; exports.ProcInfo = ProcInfo; exports.Module = Module; diff --git a/lib/js/src/Connection/Emacs/Connection__Emacs__Error.bs.js b/lib/js/src/Connection/Emacs/Connection__Emacs__Error.bs.js index bda3d91b..11d22b53 100644 --- a/lib/js/src/Connection/Emacs/Connection__Emacs__Error.bs.js +++ b/lib/js/src/Connection/Emacs/Connection__Emacs__Error.bs.js @@ -5,29 +5,29 @@ var Parser$AgdaModeVscode = require("../../Parser/Parser.bs.js"); var Client__Process$LanguageServerMule = require("language-server-mule/lib/js/src/Client/Client__Process.bs.js"); function toString(x) { - if (typeof x === "number") { + if (typeof x !== "object") { return [ "Connection Error", "Connection via TCP not supported yet" ]; } - switch (x.TAG | 0) { - case /* Validation */0 : + switch (x.TAG) { + case "Validation" : return [ "Validation Error", x._0 ]; - case /* Process */1 : + case "Process" : return [ "Process Error", Client__Process$LanguageServerMule.$$Event.toString(x._0) ]; - case /* AgdaError */2 : + case "AgdaError" : return [ "Agda Error", x._0 ]; - case /* ResponseParseError */3 : + case "ResponseParseError" : return [ "Internal Parse Error", Parser$AgdaModeVscode.$$Error.toString(x._0) diff --git a/lib/js/src/Connection/LSP/Connection__LSP.bs.js b/lib/js/src/Connection/LSP/Connection__LSP.bs.js index 4d30cde7..d22f792a 100644 --- a/lib/js/src/Connection/LSP/Connection__LSP.bs.js +++ b/lib/js/src/Connection/LSP/Connection__LSP.bs.js @@ -1,8 +1,8 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Curry = require("rescript/lib/js/curry.js"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); +var Js_exn = require("rescript/lib/js/js_exn.js"); +var Caml_js_exceptions = require("rescript/lib/js/caml_js_exceptions.js"); var Item$AgdaModeVscode = require("../../View/Component/Item.bs.js"); var Util$AgdaModeVscode = require("../../Util/Util.bs.js"); var Json$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json.bs.js"); @@ -14,24 +14,22 @@ var Client__LSP$LanguageServerMule = require("language-server-mule/lib/js/src/Cl var Connection__Scheduler$AgdaModeVscode = require("../Connection__Scheduler.bs.js"); var Connection__LSP__Error$AgdaModeVscode = require("./Connection__LSP__Error.bs.js"); -function encode(param) { - return Util$AgdaModeVscode.Encode.sum((function (x) { - if (x) { - return { - TAG: 0, - _0: "CmdReq", - _1: x._0, - [Symbol.for("name")]: "Payload" - }; - } else { - return { - TAG: 1, - _0: "CmdReqSYN", - [Symbol.for("name")]: "TagOnly" - }; - } - }), param); -} +var encode = Util$AgdaModeVscode.Encode.sum(function (x) { + if (typeof x !== "object") { + return { + TAG: "TagOnly", + _0: "CmdReqSYN", + [Symbol.for("name")]: "TagOnly" + }; + } else { + return { + TAG: "Payload", + _0: "CmdReq", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; + } + }); var CommandReq = { encode: encode @@ -45,10 +43,10 @@ var decode = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "CmdRes" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.option(Connection__LSP__Error$AgdaModeVscode.CommandErr.decode), (function (error) { return { - TAG: 1, + TAG: "Result", _0: error, [Symbol.for("name")]: "Result" }; @@ -57,10 +55,10 @@ var decode = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "CmdResACK" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (version) { return { - TAG: 0, + TAG: "ACK", _0: version, [Symbol.for("name")]: "ACK" }; @@ -85,10 +83,10 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "DisplayInfoAllGoalsWarnings" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Util$AgdaModeVscode.Decode.tuple5(Json_Decode$JsonCombinators.string, Json_Decode$JsonCombinators.array(Item$AgdaModeVscode.decode), Json_Decode$JsonCombinators.array(Item$AgdaModeVscode.decode), Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.string), Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.string)), (function (param) { return { - TAG: 2, + TAG: "AllGoalsWarnings", _0: param[0], _1: param[1], _2: param[2], @@ -101,10 +99,10 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "DisplayInfoAuto" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (body) { return { - TAG: 5, + TAG: "Auto", _0: body, [Symbol.for("name")]: "Auto" }; @@ -113,10 +111,10 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "DisplayInfoCompilationOk" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.string), Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.string)), (function (param) { return { - TAG: 1, + TAG: "CompilationOk", _0: param[0], _1: param[1], [Symbol.for("name")]: "CompilationOk" @@ -126,10 +124,10 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "DisplayInfoCurrentGoal" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Item$AgdaModeVscode.decode, (function (body) { return { - TAG: 3, + TAG: "CurrentGoal", _0: body, [Symbol.for("name")]: "CurrentGoal" }; @@ -138,10 +136,10 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "DisplayInfoError" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (body) { return { - TAG: 6, + TAG: "Error'", _0: body, [Symbol.for("name")]: "Error'" }; @@ -150,10 +148,10 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "DisplayInfoGeneric" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.string, Json_Decode$JsonCombinators.array(Item$AgdaModeVscode.decode)), (function (param) { return { - TAG: 0, + TAG: "Generic", _0: param[0], _1: param[1], [Symbol.for("name")]: "Generic" @@ -163,10 +161,10 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "DisplayInfoInferredType" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Item$AgdaModeVscode.decode, (function (body) { return { - TAG: 4, + TAG: "InferredType", _0: body, [Symbol.for("name")]: "InferredType" }; @@ -175,10 +173,10 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "DisplayInfoNormalForm" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (body) { return { - TAG: 8, + TAG: "NormalForm", _0: body, [Symbol.for("name")]: "NormalForm" }; @@ -187,10 +185,10 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "DisplayInfoTime" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (body) { return { - TAG: 7, + TAG: "Time", _0: body, [Symbol.for("name")]: "Time" }; @@ -211,15 +209,15 @@ var DisplayInfo = { }; function toString(x) { - if (typeof x === "number") { + if (typeof x !== "object") { return "========"; } - switch (x.TAG | 0) { - case /* ResponseNonLast */0 : + switch (x.TAG) { + case "ResponseNonLast" : return Response$AgdaModeVscode.toString(x._0); - case /* ResponseLast */1 : + case "ResponseLast" : return "[Last " + String(x._0) + "] " + Response$AgdaModeVscode.toString(x._1); - case /* ResponseParseError */2 : + case "ResponseParseError" : return Parser$AgdaModeVscode.$$Error.toString(x._0); } @@ -230,36 +228,36 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { case "ResponseClearHighlightingNotOnlyTokenBased" : case "ResponseClearHighlightingTokenBased" : return { - TAG: 1, + TAG: "TagOnly", _0: { - TAG: 0, - _0: /* ClearHighlighting */1, + TAG: "ResponseNonLast", + _0: "ClearHighlighting", [Symbol.for("name")]: "ResponseNonLast" }, [Symbol.for("name")]: "TagOnly" }; case "ResponseClearRunningInfo" : return { - TAG: 1, + TAG: "TagOnly", _0: { - TAG: 0, - _0: /* ClearRunningInfo */0, + TAG: "ResponseNonLast", + _0: "ClearRunningInfo", [Symbol.for("name")]: "ResponseNonLast" }, [Symbol.for("name")]: "TagOnly" }; case "ResponseDisplayInfo" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(decode$1, (function (info) { - switch (info.TAG | 0) { - case /* Generic */0 : + switch (info.TAG) { + case "Generic" : return { - TAG: 0, + TAG: "ResponseNonLast", _0: { - TAG: 9, + TAG: "DisplayInfo", _0: { - TAG: 0, + TAG: "Generic", _0: info._0, _1: info._1, [Symbol.for("name")]: "Generic" @@ -268,13 +266,13 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { }, [Symbol.for("name")]: "ResponseNonLast" }; - case /* CompilationOk */1 : + case "CompilationOk" : return { - TAG: 0, + TAG: "ResponseNonLast", _0: { - TAG: 9, + TAG: "DisplayInfo", _0: { - TAG: 2, + TAG: "CompilationOkLSP", _0: info._0, _1: info._1, [Symbol.for("name")]: "CompilationOkLSP" @@ -283,13 +281,13 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { }, [Symbol.for("name")]: "ResponseNonLast" }; - case /* AllGoalsWarnings */2 : + case "AllGoalsWarnings" : return { - TAG: 0, + TAG: "ResponseNonLast", _0: { - TAG: 9, + TAG: "DisplayInfo", _0: { - TAG: 5, + TAG: "AllGoalsWarningsLSP", _0: info._0, _1: info._1, _2: info._2, @@ -301,13 +299,13 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { }, [Symbol.for("name")]: "ResponseNonLast" }; - case /* CurrentGoal */3 : + case "CurrentGoal" : return { - TAG: 0, + TAG: "ResponseNonLast", _0: { - TAG: 9, + TAG: "DisplayInfo", _0: { - TAG: 16, + TAG: "CurrentGoalLSP", _0: info._0, [Symbol.for("name")]: "CurrentGoalLSP" }, @@ -315,13 +313,13 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { }, [Symbol.for("name")]: "ResponseNonLast" }; - case /* InferredType */4 : + case "InferredType" : return { - TAG: 0, + TAG: "ResponseNonLast", _0: { - TAG: 9, + TAG: "DisplayInfo", _0: { - TAG: 18, + TAG: "InferredTypeLSP", _0: info._0, [Symbol.for("name")]: "InferredTypeLSP" }, @@ -329,13 +327,13 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { }, [Symbol.for("name")]: "ResponseNonLast" }; - case /* Auto */5 : + case "Auto" : return { - TAG: 0, + TAG: "ResponseNonLast", _0: { - TAG: 9, + TAG: "DisplayInfo", _0: { - TAG: 9, + TAG: "Auto", _0: info._0, [Symbol.for("name")]: "Auto" }, @@ -343,13 +341,13 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { }, [Symbol.for("name")]: "ResponseNonLast" }; - case /* Error' */6 : + case "Error'" : return { - TAG: 0, + TAG: "ResponseNonLast", _0: { - TAG: 9, + TAG: "DisplayInfo", _0: { - TAG: 7, + TAG: "Error", _0: info._0, [Symbol.for("name")]: "Error" }, @@ -357,13 +355,13 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { }, [Symbol.for("name")]: "ResponseNonLast" }; - case /* Time */7 : + case "Time" : return { - TAG: 0, + TAG: "ResponseNonLast", _0: { - TAG: 9, + TAG: "DisplayInfo", _0: { - TAG: 6, + TAG: "Time", _0: info._0, [Symbol.for("name")]: "Time" }, @@ -371,13 +369,13 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { }, [Symbol.for("name")]: "ResponseNonLast" }; - case /* NormalForm */8 : + case "NormalForm" : return { - TAG: 0, + TAG: "ResponseNonLast", _0: { - TAG: 9, + TAG: "DisplayInfo", _0: { - TAG: 13, + TAG: "NormalForm", _0: info._0, [Symbol.for("name")]: "NormalForm" }, @@ -392,38 +390,38 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "ResponseDoneAborting" : return { - TAG: 1, + TAG: "TagOnly", _0: { - TAG: 0, - _0: /* DoneAborting */2, + TAG: "ResponseNonLast", + _0: "DoneAborting", [Symbol.for("name")]: "ResponseNonLast" }, [Symbol.for("name")]: "TagOnly" }; case "ResponseDoneExiting" : return { - TAG: 1, + TAG: "TagOnly", _0: { - TAG: 0, - _0: /* DoneExiting */3, + TAG: "ResponseNonLast", + _0: "DoneExiting", [Symbol.for("name")]: "ResponseNonLast" }, [Symbol.for("name")]: "TagOnly" }; case "ResponseEnd" : return { - TAG: 1, - _0: /* ResponseEnd */0, + TAG: "TagOnly", + _0: "ResponseEnd", [Symbol.for("name")]: "TagOnly" }; case "ResponseGiveAction" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.$$int, Response$AgdaModeVscode.GiveAction.decode), (function (param) { return { - TAG: 0, + TAG: "ResponseNonLast", _0: { - TAG: 6, + TAG: "GiveAction", _0: param[0], _1: param[1], [Symbol.for("name")]: "GiveAction" @@ -435,12 +433,12 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "ResponseHighlightingInfoDirect" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Tokens$AgdaModeVscode.Token.decodeResponseHighlightingInfoDirect, (function (param) { return { - TAG: 0, + TAG: "ResponseNonLast", _0: { - TAG: 0, + TAG: "HighlightingInfoDirect", _0: param[0], _1: param[1], [Symbol.for("name")]: "HighlightingInfoDirect" @@ -452,12 +450,12 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "ResponseHighlightingInfoIndirect" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (filePath) { return { - TAG: 0, + TAG: "ResponseNonLast", _0: { - TAG: 2, + TAG: "HighlightingInfoIndirectJSON", _0: filePath, [Symbol.for("name")]: "HighlightingInfoIndirectJSON" }, @@ -468,13 +466,13 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "ResponseInteractionPoints" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.$$int), (function (ids) { return { - TAG: 1, + TAG: "ResponseLast", _0: 1, _1: { - TAG: 5, + TAG: "InteractionPoints", _0: ids, [Symbol.for("name")]: "InteractionPoints" }, @@ -485,13 +483,13 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "ResponseJumpToError" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.string, Json_Decode$JsonCombinators.$$int), (function (param) { return { - TAG: 1, + TAG: "ResponseLast", _0: 3, _1: { - TAG: 4, + TAG: "JumpToError", _0: param[0], _1: param[1], [Symbol.for("name")]: "JumpToError" @@ -503,14 +501,14 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "ResponseMakeCaseExtendedLambda" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.string), (function (payload) { return { - TAG: 1, + TAG: "ResponseLast", _0: 2, _1: { - TAG: 7, - _0: /* ExtendedLambda */1, + TAG: "MakeCase", + _0: "ExtendedLambda", _1: payload, [Symbol.for("name")]: "MakeCase" }, @@ -521,14 +519,14 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "ResponseMakeCaseFunction" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.string), (function (payload) { return { - TAG: 1, + TAG: "ResponseLast", _0: 2, _1: { - TAG: 7, - _0: /* Function */0, + TAG: "MakeCase", + _0: "Function", _1: payload, [Symbol.for("name")]: "MakeCase" }, @@ -539,12 +537,12 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "ResponseRunningInfo" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.$$int, Json_Decode$JsonCombinators.string), (function (param) { return { - TAG: 0, + TAG: "ResponseNonLast", _0: { - TAG: 10, + TAG: "RunningInfo", _0: param[0], _1: param[1], [Symbol.for("name")]: "RunningInfo" @@ -556,13 +554,13 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "ResponseSolveAll" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.$$int, Json_Decode$JsonCombinators.string)), (function (payloads) { return { - TAG: 1, + TAG: "ResponseLast", _0: 2, _1: { - TAG: 8, + TAG: "SolveAll", _0: payloads, [Symbol.for("name")]: "SolveAll" }, @@ -573,12 +571,12 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "ResponseStatus" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.bool, Json_Decode$JsonCombinators.bool), (function (param) { return { - TAG: 0, + TAG: "ResponseNonLast", _0: { - TAG: 3, + TAG: "Status", _0: param[0], _1: param[1], [Symbol.for("name")]: "Status" @@ -603,129 +601,184 @@ var LSPResponse = { decode: decode$2 }; -function decodeCommandRes(json) { - var response = Json$JsonCombinators.decode(json, decode); - if (response.TAG === /* Ok */0) { +function decodeResponse(json) { + var reaction = Json$JsonCombinators.decode(json, decode$2); + if (reaction.TAG === "Ok") { return { - TAG: 0, - _0: response._0, + TAG: "Ok", + _0: reaction._0, [Symbol.for("name")]: "Ok" }; } else { return { - TAG: 1, + TAG: "Error", _0: { - TAG: 2, - _0: response._0, + TAG: "CannotDecodeResponse", + _0: reaction._0, _1: json, - [Symbol.for("name")]: "CannotDecodeCommandRes" + [Symbol.for("name")]: "CannotDecodeResponse" }, [Symbol.for("name")]: "Error" }; } } -function decodeResponse(json) { - var reaction = Json$JsonCombinators.decode(json, decode$2); - if (reaction.TAG === /* Ok */0) { - return { - TAG: 0, - _0: reaction._0, - [Symbol.for("name")]: "Ok" - }; +async function sendRequestPrim(client, request) { + var json; + try { + json = await Client__LSP$LanguageServerMule.sendRequest(client, encode(request)); + } + catch (raw_exn){ + var exn = Caml_js_exceptions.internalToOCamlException(raw_exn); + if (exn.RE_EXN_ID === Js_exn.$$Error) { + return { + TAG: "Error", + _0: { + TAG: "ConnectionError", + _0: exn._1, + [Symbol.for("name")]: "ConnectionError" + }, + [Symbol.for("name")]: "Error" + }; + } + throw exn; + } + if (json.TAG === "Ok") { + var json$1 = json._0; + var response = Json$JsonCombinators.decode(json$1, decode); + if (response.TAG === "Ok") { + return { + TAG: "Ok", + _0: response._0, + [Symbol.for("name")]: "Ok" + }; + } else { + return { + TAG: "Error", + _0: { + TAG: "CannotDecodeCommandRes", + _0: response._0, + _1: json$1, + [Symbol.for("name")]: "CannotDecodeCommandRes" + }, + [Symbol.for("name")]: "Error" + }; + } } else { return { - TAG: 1, + TAG: "Error", _0: { - TAG: 3, - _0: reaction._0, - _1: json, - [Symbol.for("name")]: "CannotDecodeResponse" + TAG: "ConnectionError", + _0: json._0, + [Symbol.for("name")]: "ConnectionError" }, [Symbol.for("name")]: "Error" }; } } -function sendRequestPrim(client, request) { - return $$Promise.flatMapOk($$Promise.mapError(Util$AgdaModeVscode.P.toPromise(Client__LSP$LanguageServerMule.sendRequest(client, encode(request))), (function (exn) { - return { - TAG: 0, - _0: exn, - [Symbol.for("name")]: "ConnectionError" - }; - })), (function (json) { - return $$Promise.resolved(decodeCommandRes(json)); - })); -} - -function make(client) { - return $$Promise.flatMapOk(sendRequestPrim(client, /* SYN */0), (function (response) { - if (response.TAG === /* ACK */0) { - return $$Promise.resolved({ - TAG: 0, - _0: { - client: client, - version: response._0, - method: Client__LSP$LanguageServerMule.getMethod(client) - }, - [Symbol.for("name")]: "Ok" - }); - } else { - return $$Promise.resolved({ - TAG: 1, - _0: /* Initialize */0, - [Symbol.for("name")]: "Error" - }); - } - })); +async function make(client) { + var error = await sendRequestPrim(client, "SYN"); + if (error.TAG !== "Ok") { + return { + TAG: "Error", + _0: error._0, + [Symbol.for("name")]: "Error" + }; + } + var version = error._0; + if (version.TAG === "ACK") { + return { + TAG: "Ok", + _0: { + client: client, + version: version._0, + method: Client__LSP$LanguageServerMule.getMethod(client) + }, + [Symbol.for("name")]: "Ok" + }; + } else { + return { + TAG: "Error", + _0: "Initialize", + [Symbol.for("name")]: "Error" + }; + } } -function destroy(self) { - return $$Promise.mapError(Util$AgdaModeVscode.P.toPromise(Client__LSP$LanguageServerMule.destroy(self.client)), (function (e) { - return { - TAG: 0, - _0: e, - [Symbol.for("name")]: "ConnectionError" - }; - })); +async function destroy(self) { + var result; + try { + result = await Client__LSP$LanguageServerMule.destroy(self.client); + } + catch (raw_exn){ + var exn = Caml_js_exceptions.internalToOCamlException(raw_exn); + if (exn.RE_EXN_ID === Js_exn.$$Error) { + return { + TAG: "Error", + _0: { + TAG: "ConnectionError", + _0: exn._1, + [Symbol.for("name")]: "ConnectionError" + }, + [Symbol.for("name")]: "Error" + }; + } + throw exn; + } + if (result.TAG === "Ok") { + return { + TAG: "Ok", + _0: result._0, + [Symbol.for("name")]: "Ok" + }; + } else { + return { + TAG: "Error", + _0: { + TAG: "ConnectionError", + _0: result._0, + [Symbol.for("name")]: "ConnectionError" + }, + [Symbol.for("name")]: "Error" + }; + } } -function sendRequest(self, request, handler) { +async function sendRequest(self, request, handler) { var handler$1 = function (response) { - return Curry._1(handler, { - TAG: 0, + return handler({ + TAG: "Ok", _0: response, [Symbol.for("name")]: "Ok" }); }; - var scheduler = Connection__Scheduler$AgdaModeVscode.make(undefined); - var match = $$Promise.pending(undefined); + var scheduler = Connection__Scheduler$AgdaModeVscode.make(); + var match = Util$AgdaModeVscode.Promise_.pending(); var resolve = match[1]; - var waitForResponseEnd = match[0]; var stopListeningForNotifications = Client__LSP$LanguageServerMule.onRequest(self.client, (async function (json) { var error = decodeResponse(json); - if (error.TAG === /* Ok */0) { + if (error.TAG === "Ok") { var responese = error._0; - if (typeof responese === "number") { - Curry._1(resolve, { - TAG: 0, + if (typeof responese !== "object") { + resolve({ + TAG: "Ok", _0: undefined, [Symbol.for("name")]: "Ok" }); } else { - switch (responese.TAG | 0) { - case /* ResponseNonLast */0 : + switch (responese.TAG) { + case "ResponseNonLast" : Connection__Scheduler$AgdaModeVscode.runNonLast(scheduler, handler$1, responese._0); break; - case /* ResponseLast */1 : + case "ResponseLast" : Connection__Scheduler$AgdaModeVscode.addLast(scheduler, responese._0, responese._1); break; - case /* ResponseParseError */2 : - Curry._1(resolve, { - TAG: 1, + case "ResponseParseError" : + resolve({ + TAG: "Error", _0: { - TAG: 4, + TAG: "ResponseParseError", _0: responese._0, [Symbol.for("name")]: "ResponseParseError" }, @@ -736,48 +789,54 @@ function sendRequest(self, request, handler) { } } } else { - Curry._1(resolve, { - TAG: 1, + resolve({ + TAG: "Error", _0: error._0, [Symbol.for("name")]: "Error" }); } return { - TAG: 0, + TAG: "Ok", _0: null, [Symbol.for("name")]: "Ok" }; })); - return $$Promise.tap($$Promise.tap($$Promise.flatMapOk(sendRequestPrim(self.client, { - _0: request, - [Symbol.for("name")]: "Command" - }), (function (result) { - if (result.TAG === /* ACK */0) { - return $$Promise.resolved({ - TAG: 1, - _0: /* Initialize */0, - [Symbol.for("name")]: "Error" - }); - } - var error = result._0; - if (error !== undefined) { - return $$Promise.resolved({ - TAG: 1, - _0: { - TAG: 1, - _0: error, - [Symbol.for("name")]: "SendCommand" - }, - [Symbol.for("name")]: "Error" - }); - } else { - return waitForResponseEnd; - } - })), (function (param) { - stopListeningForNotifications.dispose(); - })), (function (param) { - Connection__Scheduler$AgdaModeVscode.runLast(scheduler, handler$1); - })); + var error = await sendRequestPrim(self.client, { + TAG: "Command", + _0: request, + [Symbol.for("name")]: "Command" + }); + var result; + if (error.TAG === "Ok") { + var match$1 = error._0; + if (match$1.TAG === "ACK") { + result = { + TAG: "Error", + _0: "Initialize", + [Symbol.for("name")]: "Error" + }; + } else { + var error$1 = match$1._0; + result = error$1 !== undefined ? ({ + TAG: "Error", + _0: { + TAG: "SendCommand", + _0: error$1, + [Symbol.for("name")]: "SendCommand" + }, + [Symbol.for("name")]: "Error" + }) : await match[0]; + } + } else { + result = { + TAG: "Error", + _0: error._0, + [Symbol.for("name")]: "Error" + }; + } + stopListeningForNotifications.dispose(); + Connection__Scheduler$AgdaModeVscode.runLast(scheduler, handler$1); + return result; } var Module = { @@ -786,13 +845,13 @@ var Module = { sendRequest: sendRequest }; -var Scheduler; +var $$Scheduler; var Client; var $$Error; -exports.Scheduler = Scheduler; +exports.$$Scheduler = $$Scheduler; exports.Client = Client; exports.$$Error = $$Error; exports.CommandReq = CommandReq; @@ -802,4 +861,4 @@ exports.Module = Module; exports.make = make; exports.destroy = destroy; exports.sendRequest = sendRequest; -/* decode Not a pure module */ +/* encode Not a pure module */ diff --git a/lib/js/src/Connection/LSP/Connection__LSP__Error.bs.js b/lib/js/src/Connection/LSP/Connection__LSP__Error.bs.js index e4947fdd..493dfeea 100644 --- a/lib/js/src/Connection/LSP/Connection__LSP__Error.bs.js +++ b/lib/js/src/Connection/LSP/Connection__LSP__Error.bs.js @@ -8,7 +8,7 @@ var Parser$AgdaModeVscode = require("../../Parser/Parser.bs.js"); var Json_Decode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Decode.bs.js"); function toString(x) { - if (x.TAG === /* CannotDecodeJSON */0) { + if (x.TAG === "CannotDecodeJSON") { return "Cannot decode JSON: \n" + x._0; } else { return "Cannot read IOTCM: \n" + x._0; @@ -19,10 +19,10 @@ var decode = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "CmdErrCannotDecodeJSON" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (version) { return { - TAG: 0, + TAG: "CannotDecodeJSON", _0: version, [Symbol.for("name")]: "CannotDecodeJSON" }; @@ -31,10 +31,10 @@ var decode = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "CmdErrCannotParseCommand" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (version) { return { - TAG: 1, + TAG: "CannotParseCommand", _0: version, [Symbol.for("name")]: "CannotParseCommand" }; @@ -56,14 +56,14 @@ var CommandErr = { }; function toString$1(error) { - if (typeof error === "number") { + if (typeof error !== "object") { return [ "Cannot Initialize Connection", "" ]; } - switch (error.TAG | 0) { - case /* ConnectionError */0 : + switch (error.TAG) { + case "ConnectionError" : var exn = error._0; var isECONNREFUSED = Belt_Option.mapWithDefault(exn.message, false, (function (param) { return Js_string.startsWith("connect ECONNREFUSED", param); @@ -79,22 +79,22 @@ function toString$1(error) { Belt_Option.getWithDefault(exn.message, "") ]; } - case /* SendCommand */1 : + case "SendCommand" : return [ "Cannot Send Command", toString(error._0) ]; - case /* CannotDecodeCommandRes */2 : + case "CannotDecodeCommandRes" : return [ "Cannot Send Command", "Cannot decode the result after sending command" + error._0 + "\n" + JSON.stringify(error._1) ]; - case /* CannotDecodeResponse */3 : + case "CannotDecodeResponse" : return [ "Cannot Parse Response", "Cannot decode responses from the server" + error._0 + "\n" + JSON.stringify(error._1) ]; - case /* ResponseParseError */4 : + case "ResponseParseError" : return [ "Internal Parse Error", Parser$AgdaModeVscode.$$Error.toString(error._0) diff --git a/lib/js/src/Editor.bs.js b/lib/js/src/Editor.bs.js index 019b34ab..1e4bea85 100644 --- a/lib/js/src/Editor.bs.js +++ b/lib/js/src/Editor.bs.js @@ -1,7 +1,6 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Curry = require("rescript/lib/js/curry.js"); var VSCode = require("rescript-vscode/lib/js/src/VSCode.bs.js"); var Vscode = require("vscode"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); @@ -68,7 +67,7 @@ function decorate(editor, decoration, ranges) { } function highlightBackgroundPrim(editor, backgroundColor, ranges) { - var rangeBehavior = VSCode.DecorationRangeBehavior.toEnum(/* ClosedClosed */1); + var rangeBehavior = VSCode.DecorationRangeBehavior.toEnum("ClosedClosed"); var options = { backgroundColor: backgroundColor, rangeBehavior: rangeBehavior @@ -87,7 +86,7 @@ function highlightBackgroundWithColor(editor, color, ranges) { } function decorateTextPrim(editor, color, ranges) { - var rangeBehavior = VSCode.DecorationRangeBehavior.toEnum(/* ClosedClosed */1); + var rangeBehavior = VSCode.DecorationRangeBehavior.toEnum("ClosedClosed"); var options = { color: color, rangeBehavior: rangeBehavior @@ -127,7 +126,7 @@ function overlayTextWithColor(editor, color, text, range) { } function underlineText(editor, range) { - var rangeBehavior = VSCode.DecorationRangeBehavior.toEnum(/* ClosedOpen */3); + var rangeBehavior = VSCode.DecorationRangeBehavior.toEnum("ClosedOpen"); var options = { rangeBehavior: rangeBehavior, textDecoration: "underline dotted" @@ -162,9 +161,9 @@ function set(editor, point) { } function setMany(editor, points) { - var selections = Belt_Array.map(points, (function (point) { - return new Vscode.Selection(point, point); - })); + var selections = points.map(function (point) { + return new Vscode.Selection(point, point); + }); editor.selections = selections; } @@ -173,9 +172,9 @@ function get(editor) { } function getMany(editor) { - return Belt_Array.map(editor.selections, (function (prim) { - return prim.active; - })); + return editor.selections.map(function (prim) { + return prim.active; + }); } var Cursor = { @@ -191,9 +190,9 @@ function set$1(editor, range) { } function setMany$1(editor, ranges) { - var selections = Belt_Array.map(ranges, (function (range) { - return new Vscode.Selection(range.start, range.end); - })); + var selections = ranges.map(function (range) { + return new Vscode.Selection(range.start, range.end); + }); editor.selections = selections; } @@ -203,9 +202,9 @@ function get$1(editor) { } function getMany$1(editor) { - return Belt_Array.map(editor.selections, (function (selection) { - return new Vscode.Range(selection.start, selection.end); - })); + return editor.selections.map(function (selection) { + return new Vscode.Range(selection.start, selection.end); + }); } var $$Selection = { @@ -231,17 +230,17 @@ function replace($$document, range, text) { function batchReplace($$document, replacements) { var workspaceEdit = new Vscode.WorkspaceEdit(); - Belt_Array.forEach(replacements, (function (param) { - workspaceEdit.replace($$document.uri, param[0], param[1], undefined); - })); + replacements.forEach(function (param) { + workspaceEdit.replace($$document.uri, param[0], param[1], undefined); + }); return Vscode.workspace.applyEdit(workspaceEdit); } function batchReplace$p(editor, replacements) { return editor.edit((function (editBuilder) { - Belt_Array.forEach(replacements, (function (param) { - editBuilder.replace(param[0], param[1]); - })); + replacements.forEach(function (param) { + editBuilder.replace(param[0], param[1]); + }); }), undefined); } @@ -253,18 +252,18 @@ function insert($$document, point, text) { function batchInsert($$document, points, text) { var workspaceEdit = new Vscode.WorkspaceEdit(); - var textEdits = Belt_Array.map(points, (function (point) { - return Vscode.TextEdit.insert(point, text); - })); + var textEdits = points.map(function (point) { + return Vscode.TextEdit.insert(point, text); + }); workspaceEdit.set($$document.uri, textEdits); return Vscode.workspace.applyEdit(workspaceEdit); } function batchInsert$p(editor, points, text) { return editor.edit((function (editBuilder) { - Belt_Array.forEach(points, (function (point) { - editBuilder.insert(point, text); - })); + points.forEach(function (point) { + editBuilder.insert(point, text); + }); }), undefined); } @@ -287,11 +286,11 @@ var $$Text = { }; function focus($$document) { - Vscode.window.showTextDocument($$document, /* Beside */1, undefined); + Vscode.window.showTextDocument($$document, "Beside", undefined); } function reveal(editor, range) { - VSCode.TextEditor.revealRange(editor, range, /* InCenterIfOutsideViewport */3); + VSCode.TextEditor.revealRange(editor, range, "InCenterIfOutsideViewport"); } var documentSelector = [ @@ -304,16 +303,16 @@ var documentSelector = [ function registerDefinitionProvider(definitionProvider) { return Vscode.languages.registerDefinitionProvider(documentSelector, { provideDefinition: (function (textDocument, point, param) { - return VSCode.ProviderResult.map(Curry._2(definitionProvider, textDocument.fileName, point), (function (pairs) { - return VSCode.LocationLinkOrLocation.locationLinks(Belt_Array.map(pairs, (function (param) { - var targetPos = param[2]; - return { - originSelectionRange: Caml_option.some(param[0]), - targetRange: new Vscode.Range(targetPos, targetPos), - targetSelectionRange: undefined, - targetUri: Vscode.Uri.file(param[1]) - }; - }))); + return VSCode.ProviderResult.map(definitionProvider(textDocument.fileName, point), (function (pairs) { + return VSCode.LocationLinkOrLocation.locationLinks(pairs.map(function (param) { + var targetPos = param[2]; + return { + originSelectionRange: Caml_option.some(param[0]), + targetRange: new Vscode.Range(targetPos, targetPos), + targetSelectionRange: undefined, + targetUri: Vscode.Uri.file(param[1]) + }; + })); })); }) }); @@ -322,7 +321,7 @@ function registerDefinitionProvider(definitionProvider) { function registerHoverProvider(hoverProvider) { return Vscode.languages.registerHoverProvider(documentSelector, { provideHover: (function (textDocument, point, param) { - return VSCode.ProviderResult.map(Curry._2(hoverProvider, textDocument.fileName, point), (function (param) { + return VSCode.ProviderResult.map(hoverProvider(textDocument.fileName, point), (function (param) { var markdownStrings = Belt_Array.map(param[0], (function (string) { return new Vscode.MarkdownString(string, true); })); @@ -385,7 +384,8 @@ var Provider = { function toUTF8Offset($$document, offset) { var range = new Vscode.Range(new Vscode.Position(0, 0), $$document.positionAt(offset)); - return Agda$AgdaModeVscode.OffsetConverter.characterWidth($$document.getText(Caml_option.some(range))); + var text = $$document.getText(Caml_option.some(range)); + return Agda$AgdaModeVscode.OffsetConverter.characterWidth(text); } var VSRange; diff --git a/lib/js/src/Goal.bs.js b/lib/js/src/Goal.bs.js index 2fa17301..209226eb 100644 --- a/lib/js/src/Goal.bs.js +++ b/lib/js/src/Goal.bs.js @@ -3,7 +3,6 @@ var VSCode = require("rescript-vscode/lib/js/src/VSCode.bs.js"); var Vscode = require("vscode"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Util$AgdaModeVscode = require("./Util/Util.bs.js"); var Editor$AgdaModeVscode = require("./Editor.bs.js"); @@ -17,7 +16,7 @@ function generateDiffs($$document, indices) { return SourceFile$AgdaModeVscode.parse(indices, fileName, source); } -function makeMany(editor, indices) { +async function makeMany(editor, indices) { var $$document = editor.document; var diffs = generateDiffs($$document, indices); var delta = { @@ -34,16 +33,15 @@ function makeMany(editor, indices) { text ]; })); - return $$Promise.map(Editor$AgdaModeVscode.$$Text.batchReplace$p(editor, replacements), (function (param) { - return Belt_Array.map(diffs, (function (diff) { - var match = Highlighting$AgdaModeVscode.decorateHole(editor, diff.modifiedInterval, diff.index); - return { - index: diff.index, - interval: diff.modifiedInterval, - decorationBackground: match[0], - decorationIndex: match[1] - }; - })); + await Editor$AgdaModeVscode.$$Text.batchReplace$p(editor, replacements); + return Belt_Array.map(diffs, (function (diff) { + var match = Highlighting$AgdaModeVscode.decorateHole(editor, diff.modifiedInterval, diff.index); + return { + index: diff.index, + interval: diff.modifiedInterval, + decorationBackground: match[0], + decorationIndex: match[1] + }; })); } @@ -89,11 +87,11 @@ function buildHaskellRange(self, $$document, version, filepath) { var startIndex = String(start + 3 | 0); var startRow = String(startPoint.line + 1 | 0); var startColumn = String(startPoint.character + 3 | 0); - var startPart = "" + startIndex + " " + startRow + " " + startColumn + ""; + var startPart = startIndex + " " + startRow + " " + startColumn; var endIndex$p = String(end_ - 3 | 0); var endRow = String(endPoint.line + 1 | 0); var endColumn = String(endPoint.character - 1 | 0); - var endPart = "" + endIndex$p + " " + endRow + " " + endColumn + ""; + var endPart = endIndex$p + " " + endRow + " " + endColumn; if (Util$AgdaModeVscode.Version.gte(version, "2.5.1")) { return "(intervalsToRange (Just (mkAbsolute \"" + filepath + "\")) [Interval (Pn () " + startPart + ") (Pn () " + endPart + ")])"; } else { diff --git a/lib/js/src/Highlighting.bs.js b/lib/js/src/Highlighting.bs.js index ea03dce2..1f2b7494 100644 --- a/lib/js/src/Highlighting.bs.js +++ b/lib/js/src/Highlighting.bs.js @@ -1,11 +1,9 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Curry = require("rescript/lib/js/curry.js"); var Vscode = require("vscode"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); -var Pervasives = require("rescript/lib/js/pervasives.js"); +var PervasivesU = require("rescript/lib/js/pervasivesU.js"); var Config$AgdaModeVscode = require("./Config.bs.js"); var Editor$AgdaModeVscode = require("./Editor.bs.js"); var Parser$AgdaModeVscode = require("./Parser/Parser.bs.js"); @@ -31,7 +29,7 @@ function decorateHole(editor, interval, index) { ]; } -function make(param) { +function make() { return { decorations: [], semanticTokens: [] @@ -45,7 +43,9 @@ function clear(self) { self.decorations = []; } -var destroy = clear; +function destroy(self) { + clear(self); +} function redecorate(self, editor) { Belt_Array.forEach(self.decorations, (function (param) { @@ -80,42 +80,55 @@ function classify(change, token) { ]; } var lineDelta$1 = match[0]; - var tokenRange = Curry._1(Highlighting__SemanticToken$AgdaModeVscode.Module.SingleLineRange.toVsCodeRange, token.range); + var tokenRange = Highlighting__SemanticToken$AgdaModeVscode.Module.SingleLineRange.toVsCodeRange(token.range); if (tokenRange.end.isBeforeOrEqual(removedRange.start)) { - return /* NoOp */0; + return "NoOp"; } else if (removedRange.contains(tokenRange) || tokenRange.start.isBefore(removedRange.start) && tokenRange.end.isAfter(removedRange.end)) { - return /* Remove */1; + return "Remove"; } else if (token.range.line === removedRange.end.line) { return { - TAG: 0, + TAG: "Move", _0: lineDelta$1, _1: match[1], [Symbol.for("name")]: "Move" }; } else if (lineDelta$1 === 0) { - return /* NoOp */0; + return "NoOp"; } else { return { - TAG: 1, + TAG: "MoveLinesOnly", _0: lineDelta$1, [Symbol.for("name")]: "MoveLinesOnly" }; } } +async function triggerDocumentChangeEvent(editor) { + var $$document = editor.document; + var lineCount = $$document.lineCount; + var lastLine = $$document.lineAt(lineCount - 1 | 0); + var insertPosition = lastLine.range.end; + var deleteRange = new Vscode.Range(insertPosition, insertPosition.translate(0, 1)); + var succeed = await Editor$AgdaModeVscode.$$Text.insert($$document, insertPosition, " "); + await ( + succeed ? Editor$AgdaModeVscode.$$Text.replace($$document, deleteRange, "") : Promise.resolve(false) + ); + await $$document.save(); +} + function updateSemanticHighlighting(self, $$event) { var changes = $$event.contentChanges; var applyChange = function (tokens, change) { return Belt_Array.concatMany(Belt_Array.map(tokens, (function (token) { var action = classify(change, token); - if (typeof action === "number") { - if (action === /* NoOp */0) { + if (typeof action !== "object") { + if (action === "NoOp") { return [token]; } else { return []; } } - if (action.TAG !== /* Move */0) { + if (action.TAG !== "Move") { return [{ range: { line: token.range.line + action._0 | 0, @@ -130,8 +143,8 @@ function updateSemanticHighlighting(self, $$event) { range: { line: token.range.line + action._0 | 0, column: [ - Pervasives.abs(token.range.column[0] + columnDelta | 0), - Pervasives.abs(token.range.column[1] + columnDelta | 0) + PervasivesU.abs(token.range.column[0] + columnDelta | 0), + PervasivesU.abs(token.range.column[1] + columnDelta | 0) ] }, type_: token.type_, @@ -149,30 +162,15 @@ function getSemanticTokens(self) { } function apply(self, tokens, editor) { - if (Config$AgdaModeVscode.Highlighting.getHighlightWithThemeColors(undefined)) { + if (Config$AgdaModeVscode.Highlighting.getHighlightWithThemeColors()) { var match = Tokens$AgdaModeVscode.toDecorationsAndSemanticTokens(tokens, editor); self.semanticTokens = match[1]; self.decorations = Belt_Array.concat(self.decorations, match[0]); - var $$document = editor.document; - var lineCount = $$document.lineCount; - var lastLine = $$document.lineAt(lineCount - 1 | 0); - var insertPosition = lastLine.range.end; - var deleteRange = new Vscode.Range(insertPosition, insertPosition.translate(0, 1)); - return $$Promise.map($$Promise.flatMap($$Promise.flatMap(Editor$AgdaModeVscode.$$Text.insert($$document, insertPosition, " "), (function (succeed) { - if (succeed) { - return Editor$AgdaModeVscode.$$Text.replace($$document, deleteRange, ""); - } else { - return $$Promise.resolved(false); - } - })), (function (param) { - return $$document.save(); - })), (function (param) { - - })); + return triggerDocumentChangeEvent(editor); } var decorations = Tokens$AgdaModeVscode.toDecorations(tokens, editor); self.decorations = Belt_Array.concat(self.decorations, decorations); - return $$Promise.resolved(undefined); + return Promise.resolve(); } var Module = { diff --git a/lib/js/src/Highlighting/Highlighting__AgdaAspect.bs.js b/lib/js/src/Highlighting/Highlighting__AgdaAspect.bs.js index 86cc9e19..f3c7714c 100644 --- a/lib/js/src/Highlighting/Highlighting__AgdaAspect.bs.js +++ b/lib/js/src/Highlighting/Highlighting__AgdaAspect.bs.js @@ -4,77 +4,77 @@ function toString(x) { switch (x) { - case /* Hole */0 : + case "Hole" : return "Hole"; - case /* Comment */1 : + case "Comment" : return "Comment"; - case /* Keyword */2 : + case "Keyword" : return "Keyword"; - case /* String */3 : + case "String" : return "String"; - case /* Number */4 : + case "Number" : return "Number"; - case /* Symbol */5 : + case "Symbol" : return "Symbol"; - case /* PrimitiveType */6 : + case "PrimitiveType" : return "PrimitiveType"; - case /* Pragma */7 : + case "Pragma" : return "Pragma"; - case /* Background */8 : + case "Background" : return "Background"; - case /* Markup */9 : + case "Markup" : return "Markup"; - case /* Error */10 : + case "Error" : return "Error"; - case /* DottedPattern */11 : + case "DottedPattern" : return "DottedPattern"; - case /* UnsolvedMeta */12 : + case "UnsolvedMeta" : return "UnsolvedMeta"; - case /* UnsolvedConstraint */13 : + case "UnsolvedConstraint" : return "UnsolvedConstraint"; - case /* TerminationProblem */14 : + case "TerminationProblem" : return "TerminationProblem"; - case /* PositivityProblem */15 : + case "PositivityProblem" : return "PositivityProblem"; - case /* Deadcode */16 : + case "Deadcode" : return "Deadcode"; - case /* CoverageProblem */17 : + case "CoverageProblem" : return "CoverageProblem"; - case /* IncompletePattern */18 : + case "IncompletePattern" : return "IncompletePattern"; - case /* TypeChecks */19 : + case "TypeChecks" : return "TypeChecks"; - case /* CatchallClause */20 : + case "CatchallClause" : return "CatchallClause"; - case /* ConfluenceProblem */21 : + case "ConfluenceProblem" : return "ConfluenceProblem"; - case /* Bound */22 : + case "Bound" : return "Bound"; - case /* Generalizable */23 : + case "Generalizable" : return "Generalizable"; - case /* ConstructorInductive */24 : + case "ConstructorInductive" : return "ConstructorInductive"; - case /* ConstructorCoInductive */25 : + case "ConstructorCoInductive" : return "ConstructorCoInductive"; - case /* Datatype */26 : + case "Datatype" : return "Datatype"; - case /* Field */27 : + case "Field" : return "Field"; - case /* Function */28 : + case "Function" : return "Function"; - case /* Module */29 : + case "Module" : return "Module"; - case /* Postulate */30 : + case "Postulate" : return "Postulate"; - case /* Primitive */31 : + case "Primitive" : return "Primitive"; - case /* Record */32 : + case "Record" : return "Record"; - case /* Argument */33 : + case "Argument" : return "Argument"; - case /* Macro */34 : + case "Macro" : return "Macro"; - case /* Operator */35 : + case "Operator" : return "Operator"; } @@ -83,362 +83,350 @@ function toString(x) { function parse(x) { switch (x) { case "argument" : - return /* Argument */33; + return "Argument"; case "background" : - return /* Background */8; + return "Background"; case "bound" : - return /* Bound */22; + return "Bound"; case "catchallclause" : - return /* CatchallClause */20; + return "CatchallClause"; case "coinductiveconstructor" : - return /* ConstructorCoInductive */25; + return "ConstructorCoInductive"; case "comment" : - return /* Comment */1; + return "Comment"; case "confluenceproblem" : - return /* ConfluenceProblem */21; + return "ConfluenceProblem"; case "coverageproblem" : - return /* CoverageProblem */17; + return "CoverageProblem"; case "datatype" : - return /* Datatype */26; + return "Datatype"; case "deadcode" : - return /* Deadcode */16; + return "Deadcode"; case "dottedpattern" : - return /* DottedPattern */11; + return "DottedPattern"; case "error" : - return /* Error */10; + return "Error"; case "field" : - return /* Field */27; + return "Field"; case "function" : - return /* Function */28; + return "Function"; case "generalizable" : - return /* Generalizable */23; + return "Generalizable"; case "hole" : - return /* Hole */0; + return "Hole"; case "incompletepattern" : - return /* IncompletePattern */18; + return "IncompletePattern"; case "inductiveconstructor" : - return /* ConstructorInductive */24; + return "ConstructorInductive"; case "keyword" : - return /* Keyword */2; + return "Keyword"; case "macro" : - return /* Macro */34; + return "Macro"; case "markup" : - return /* Markup */9; + return "Markup"; case "module" : - return /* Module */29; + return "Module"; case "number" : - return /* Number */4; - case "operator" : - return /* Operator */35; + return "Number"; case "positivityproblem" : - return /* PositivityProblem */15; + return "PositivityProblem"; case "postulate" : - return /* Postulate */30; + return "Postulate"; case "pragma" : - return /* Pragma */7; + return "Pragma"; case "primitive" : - return /* Primitive */31; + return "Primitive"; case "primitivetype" : - return /* PrimitiveType */6; + return "PrimitiveType"; case "record" : - return /* Record */32; + return "Record"; case "string" : - return /* String */3; + return "String"; case "symbol" : - return /* Symbol */5; + return "Symbol"; case "terminationproblem" : - return /* TerminationProblem */14; + return "TerminationProblem"; case "typechecks" : - return /* TypeChecks */19; + return "TypeChecks"; case "unsolvedconstraint" : - return /* UnsolvedConstraint */13; + return "UnsolvedConstraint"; case "unsolvedmeta" : - return /* UnsolvedMeta */12; + return "UnsolvedMeta"; default: - return /* Operator */35; + return "Operator"; } } function toDecoration(x) { switch (x) { - case /* Comment */1 : + case "Comment" : return { light: { - TAG: 1, + TAG: "Foreground", _0: "#B0B0B0", [Symbol.for("name")]: "Foreground" }, dark: { - TAG: 1, + TAG: "Foreground", _0: "#505050", [Symbol.for("name")]: "Foreground" } }; - case /* Keyword */2 : + case "Keyword" : return { light: { - TAG: 1, + TAG: "Foreground", _0: "#CD6600", [Symbol.for("name")]: "Foreground" }, dark: { - TAG: 1, + TAG: "Foreground", _0: "#FF9932", [Symbol.for("name")]: "Foreground" } }; - case /* String */3 : + case "String" : return { light: { - TAG: 1, + TAG: "Foreground", _0: "#B22222", [Symbol.for("name")]: "Foreground" }, dark: { - TAG: 1, + TAG: "Foreground", _0: "#DD4D4D", [Symbol.for("name")]: "Foreground" } }; - case /* Number */4 : + case "Number" : return { light: { - TAG: 1, + TAG: "Foreground", _0: "#800080", [Symbol.for("name")]: "Foreground" }, dark: { - TAG: 1, + TAG: "Foreground", _0: "#9010E0", [Symbol.for("name")]: "Foreground" } }; - case /* Symbol */5 : + case "Symbol" : return { light: { - TAG: 1, + TAG: "Foreground", _0: "#404040", [Symbol.for("name")]: "Foreground" }, dark: { - TAG: 1, + TAG: "Foreground", _0: "#BFBFBF", [Symbol.for("name")]: "Foreground" } }; - case /* Error */10 : + case "Error" : return { light: { - TAG: 1, + TAG: "Foreground", _0: "#FF0000", [Symbol.for("name")]: "Foreground" }, dark: { - TAG: 1, + TAG: "Foreground", _0: "#FF0000", [Symbol.for("name")]: "Foreground" } }; - case /* UnsolvedMeta */12 : - case /* UnsolvedConstraint */13 : + case "UnsolvedMeta" : + case "UnsolvedConstraint" : return { light: { - TAG: 0, + TAG: "Background", _0: "#FFFF00", [Symbol.for("name")]: "Background" }, dark: { - TAG: 0, + TAG: "Background", _0: "#806B00", [Symbol.for("name")]: "Background" } }; - case /* TerminationProblem */14 : + case "TerminationProblem" : return { light: { - TAG: 0, + TAG: "Background", _0: "#FFA07A", [Symbol.for("name")]: "Background" }, dark: { - TAG: 0, + TAG: "Background", _0: "#802400", [Symbol.for("name")]: "Background" } }; - case /* PositivityProblem */15 : + case "PositivityProblem" : return { light: { - TAG: 0, + TAG: "Background", _0: "#CD853F", [Symbol.for("name")]: "Background" }, dark: { - TAG: 0, + TAG: "Background", _0: "#803F00", [Symbol.for("name")]: "Background" } }; - case /* Deadcode */16 : + case "Deadcode" : return { light: { - TAG: 0, + TAG: "Background", _0: "#A9A9A9", [Symbol.for("name")]: "Background" }, dark: { - TAG: 0, + TAG: "Background", _0: "#808080", [Symbol.for("name")]: "Background" } }; - case /* CoverageProblem */17 : + case "CoverageProblem" : return { light: { - TAG: 0, + TAG: "Background", _0: "#F5DEB3", [Symbol.for("name")]: "Background" }, dark: { - TAG: 0, + TAG: "Background", _0: "#805300", [Symbol.for("name")]: "Background" } }; - case /* IncompletePattern */18 : + case "IncompletePattern" : return { light: { - TAG: 0, + TAG: "Background", _0: "#800080", [Symbol.for("name")]: "Background" }, dark: { - TAG: 0, + TAG: "Background", _0: "#800080", [Symbol.for("name")]: "Background" } }; - case /* CatchallClause */20 : + case "CatchallClause" : return { light: { - TAG: 0, + TAG: "Background", _0: "#F5F5F5", [Symbol.for("name")]: "Background" }, dark: { - TAG: 0, + TAG: "Background", _0: "#404040", [Symbol.for("name")]: "Background" } }; - case /* ConfluenceProblem */21 : + case "ConfluenceProblem" : return { light: { - TAG: 0, + TAG: "Background", _0: "#FFC0CB", [Symbol.for("name")]: "Background" }, dark: { - TAG: 0, + TAG: "Background", _0: "#800080", [Symbol.for("name")]: "Background" } }; - case /* ConstructorInductive */24 : + case "ConstructorInductive" : return { light: { - TAG: 1, + TAG: "Foreground", _0: "#008B00", [Symbol.for("name")]: "Foreground" }, dark: { - TAG: 1, + TAG: "Foreground", _0: "#29CC29", [Symbol.for("name")]: "Foreground" } }; - case /* ConstructorCoInductive */25 : + case "ConstructorCoInductive" : return { light: { - TAG: 1, + TAG: "Foreground", _0: "#996600", [Symbol.for("name")]: "Foreground" }, dark: { - TAG: 1, + TAG: "Foreground", _0: "#FFEA75", [Symbol.for("name")]: "Foreground" } }; - case /* Field */27 : + case "Field" : return { light: { - TAG: 1, + TAG: "Foreground", _0: "#EE1289", [Symbol.for("name")]: "Foreground" }, dark: { - TAG: 1, + TAG: "Foreground", _0: "#F570B7", [Symbol.for("name")]: "Foreground" } }; - case /* Module */29 : + case "Module" : return { light: { - TAG: 1, + TAG: "Foreground", _0: "#800080", [Symbol.for("name")]: "Foreground" }, dark: { - TAG: 1, + TAG: "Foreground", _0: "#CD80FF", [Symbol.for("name")]: "Foreground" } }; - case /* PrimitiveType */6 : - case /* Datatype */26 : - case /* Function */28 : - case /* Postulate */30 : - case /* Primitive */31 : - case /* Record */32 : + case "PrimitiveType" : + case "Datatype" : + case "Function" : + case "Postulate" : + case "Primitive" : + case "Record" : return { light: { - TAG: 1, + TAG: "Foreground", _0: "#0000CD", [Symbol.for("name")]: "Foreground" }, dark: { - TAG: 1, + TAG: "Foreground", _0: "#8080FF", [Symbol.for("name")]: "Foreground" } }; - case /* Macro */34 : + case "Macro" : return { light: { - TAG: 1, + TAG: "Foreground", _0: "#458B74", [Symbol.for("name")]: "Foreground" }, dark: { - TAG: 1, + TAG: "Foreground", _0: "#73BAA2", [Symbol.for("name")]: "Foreground" } }; - case /* Hole */0 : - case /* Pragma */7 : - case /* Background */8 : - case /* Markup */9 : - case /* DottedPattern */11 : - case /* TypeChecks */19 : - case /* Bound */22 : - case /* Generalizable */23 : - case /* Argument */33 : - case /* Operator */35 : - return ; - + default: + return ; } } @@ -459,12 +447,12 @@ function toTokenTypeAndModifiersAndDecoration(x) { ], { light: { - TAG: 0, + TAG: "Background", _0: light, [Symbol.for("name")]: "Background" }, dark: { - TAG: 0, + TAG: "Background", _0: dark, [Symbol.for("name")]: "Background" } @@ -472,157 +460,150 @@ function toTokenTypeAndModifiersAndDecoration(x) { ]; }; switch (x) { - case /* Comment */1 : + case "Comment" : return [ [ - /* Comment */16, + "Comment", [] ], undefined ]; - case /* Keyword */2 : + case "Keyword" : return [ [ - /* Keyword */18, + "Keyword", [] ], undefined ]; - case /* Number */4 : + case "Number" : return [ [ - /* Number */19, + "Number", [] ], undefined ]; - case /* Error */10 : + case "Error" : return [ [ undefined, - [/* Deprecated */3] + ["Deprecated"] ], undefined ]; - case /* UnsolvedMeta */12 : + case "UnsolvedMeta" : return backgroundOnly("#FFFF00", "#806B00"); - case /* UnsolvedConstraint */13 : - case /* TerminationProblem */14 : + case "UnsolvedConstraint" : + case "TerminationProblem" : return backgroundOnly("#FFA07A", "#802400"); - case /* PositivityProblem */15 : + case "PositivityProblem" : return backgroundOnly("#CD853F", "#803F00"); - case /* Deadcode */16 : + case "Deadcode" : return backgroundOnly("#A9A9A9", "#808080"); - case /* CoverageProblem */17 : + case "CoverageProblem" : return backgroundOnly("#F5DEB3", "#805300"); - case /* IncompletePattern */18 : + case "IncompletePattern" : return backgroundOnly("#800080", "#800080"); - case /* Hole */0 : - case /* Symbol */5 : - case /* Pragma */7 : - case /* Background */8 : - case /* Markup */9 : - case /* DottedPattern */11 : - case /* TypeChecks */19 : - return nothing; - case /* CatchallClause */20 : + case "CatchallClause" : return backgroundOnly("#F5F5F5", "#404040"); - case /* ConfluenceProblem */21 : + case "ConfluenceProblem" : return backgroundOnly("#FFC0CB", "#800080"); - case /* Bound */22 : - case /* Generalizable */23 : + case "Bound" : + case "Generalizable" : return [ [ - /* Variable */8, + "Variable", [] ], undefined ]; - case /* ConstructorInductive */24 : - case /* ConstructorCoInductive */25 : + case "ConstructorInductive" : + case "ConstructorCoInductive" : return [ [ - /* EnumMember */10, + "EnumMember", [] ], undefined ]; - case /* PrimitiveType */6 : - case /* Datatype */26 : + case "PrimitiveType" : + case "Datatype" : return [ [ - /* Type */1, + "Type", [] ], undefined ]; - case /* Field */27 : + case "Field" : return [ [ - /* Member */13, + "Member", [] ], undefined ]; - case /* Module */29 : + case "Module" : return [ [ - /* Namespace */0, + "Namespace", [] ], undefined ]; - case /* Function */28 : - case /* Postulate */30 : + case "Function" : + case "Postulate" : return [ [ - /* Function */12, + "Function", [] ], undefined ]; - case /* String */3 : - case /* Primitive */31 : + case "String" : + case "Primitive" : return [ [ - /* String */17, + "String", [] ], undefined ]; - case /* Record */32 : + case "Record" : return [ [ - /* Struct */5, + "Struct", [] ], undefined ]; - case /* Argument */33 : + case "Argument" : return [ [ - /* Parameter */7, + "Parameter", [] ], undefined ]; - case /* Macro */34 : + case "Macro" : return [ [ - /* Macro */14, + "Macro", [] ], undefined ]; - case /* Operator */35 : + case "Operator" : return [ [ - /* Operator */21, + "Operator", [] ], undefined ]; - + default: + return nothing; } } diff --git a/lib/js/src/Highlighting/Highlighting__Decoration.bs.js b/lib/js/src/Highlighting/Highlighting__Decoration.bs.js index 152a5514..ea735349 100644 --- a/lib/js/src/Highlighting/Highlighting__Decoration.bs.js +++ b/lib/js/src/Highlighting/Highlighting__Decoration.bs.js @@ -12,7 +12,7 @@ function toVSCodeDecorations(input, editor) { var backgroundColorDict = {}; var foregroundColorDict = {}; var addFaceToDict = function (face, range) { - if (face.TAG === /* Background */0) { + if (face.TAG === "Background") { var color = face._0; var ranges = Js_dict.get(backgroundColorDict, color); if (ranges !== undefined) { @@ -34,7 +34,7 @@ function toVSCodeDecorations(input, editor) { var range = param[1]; var match = param[0]; var theme = VSCode.ColorTheme.kind(Vscode.window.activeColorTheme); - if (theme === /* Dark */1) { + if (theme === "Dark") { return addFaceToDict(match.dark, range); } else { return addFaceToDict(match.light, range); diff --git a/lib/js/src/Highlighting/Highlighting__SemanticToken.bs.js b/lib/js/src/Highlighting/Highlighting__SemanticToken.bs.js index f5d711b4..861356e7 100644 --- a/lib/js/src/Highlighting/Highlighting__SemanticToken.bs.js +++ b/lib/js/src/Highlighting/Highlighting__SemanticToken.bs.js @@ -9,49 +9,49 @@ var Util$AgdaModeVscode = require("../Util/Util.bs.js"); function toString(x) { switch (x) { - case /* Namespace */0 : + case "Namespace" : return "namespace"; - case /* Type */1 : + case "Type" : return "type"; - case /* Class */2 : + case "Class" : return "class"; - case /* Enum */3 : + case "Enum" : return "enum"; - case /* Interface */4 : + case "Interface" : return "interface"; - case /* Struct */5 : + case "Struct" : return "struct"; - case /* TypeParameter */6 : + case "TypeParameter" : return "typeParameter"; - case /* Parameter */7 : + case "Parameter" : return "parameter"; - case /* Variable */8 : + case "Variable" : return "variable"; - case /* Property */9 : + case "Property" : return "property"; - case /* EnumMember */10 : + case "EnumMember" : return "enumMember"; - case /* Event */11 : + case "Event" : return "event"; - case /* Function */12 : + case "Function" : return "function"; - case /* Member */13 : + case "Member" : return "member"; - case /* Macro */14 : + case "Macro" : return "macro"; - case /* Label */15 : + case "Label" : return "label"; - case /* Comment */16 : + case "Comment" : return "comment"; - case /* String */17 : + case "String" : return "string"; - case /* Keyword */18 : + case "Keyword" : return "keyword"; - case /* Number */19 : + case "Number" : return "number"; - case /* Regexp */20 : + case "Regexp" : return "regexp"; - case /* Operator */21 : + case "Operator" : return "operator"; } @@ -89,23 +89,23 @@ var TokenType = { function toString$1(x) { switch (x) { - case /* Declaration */0 : + case "Declaration" : return "declaration"; - case /* Readonly */1 : + case "Readonly" : return "readonly"; - case /* Static */2 : + case "Static" : return "static"; - case /* Deprecated */3 : + case "Deprecated" : return "deprecated"; - case /* Abstract */4 : + case "Abstract" : return "abstract"; - case /* Async */5 : + case "Async" : return "async"; - case /* Modification */6 : + case "Modification" : return "modification"; - case /* Documentation */7 : + case "Documentation" : return "documentation"; - case /* DefaultLibrary */8 : + case "DefaultLibrary" : return "defaultLibrary"; } diff --git a/lib/js/src/InputMethod/Buffer.bs.js b/lib/js/src/InputMethod/Buffer.bs.js index 926e89b2..10ee0404 100644 --- a/lib/js/src/InputMethod/Buffer.bs.js +++ b/lib/js/src/InputMethod/Buffer.bs.js @@ -5,7 +5,7 @@ var Caml = require("rescript/lib/js/caml.js"); var Js_string = require("rescript/lib/js/js_string.js"); var Translator$AgdaModeVscode = require("./Translator.bs.js"); -function make(param) { +function make() { return { symbol: undefined, tail: "", diff --git a/lib/js/src/InputMethod/IM.bs.js b/lib/js/src/InputMethod/IM.bs.js index 5ebea5dc..e9a82630 100644 --- a/lib/js/src/InputMethod/IM.bs.js +++ b/lib/js/src/InputMethod/IM.bs.js @@ -2,15 +2,14 @@ 'use strict'; var Caml = require("rescript/lib/js/caml.js"); -var Curry = require("rescript/lib/js/curry.js"); var Vscode = require("vscode"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Js_array = require("rescript/lib/js/js_array.js"); var Belt_List = require("rescript/lib/js/belt_List.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); var Chan$AgdaModeVscode = require("../Util/Chan.bs.js"); +var Util$AgdaModeVscode = require("../Util/Util.bs.js"); var Buffer$AgdaModeVscode = require("./Buffer.bs.js"); var Common$AgdaModeVscode = require("../View/Common.bs.js"); var Editor$AgdaModeVscode = require("../Editor.bs.js"); @@ -40,16 +39,17 @@ var Output = {}; function fromOutput(xs) { return Belt_Array.map(xs, (function (x) { - if (typeof x === "number") { - if (x === /* Activate */0) { - return /* Activate */2; + if (typeof x !== "object") { + if (x === "Activate") { + return "Activate"; } else { - return /* Deactivate */3; + return "Deactivate"; } - } else if (x.TAG === /* UpdateView */0) { - return /* UpdateView */0; + } else if (x.TAG === "UpdateView") { + return "UpdateView"; } else { return { + TAG: "RewriteIssued", _0: x._0, [Symbol.for("name")]: "RewriteIssued" }; @@ -113,7 +113,7 @@ function toRewrites(instances, modify) { start + accum.contents | 0, end_ + accum.contents | 0 ]; - return Belt_Option.map(Curry._1(modify, instance), (function (replacement) { + return Belt_Option.map(modify(instance), (function (replacement) { var delta = replacement.length - (end_ - start | 0) | 0; accum.contents = accum.contents + delta | 0; instance.interval = [ @@ -296,36 +296,36 @@ function applyRewrites(self, editor, rewrites) { param.text ]; })); - var match = $$Promise.pending(undefined); + var match = Util$AgdaModeVscode.Promise_.pending(); var resolve = match[1]; - $$Promise.get(match[0], (function (param) { - Belt_Array.forEach(rewrites, (function (rewrite) { - Belt_Option.forEach(rewrite.instance, (function (instance) { - Belt_Option.forEach(editor, (function (param) { - Belt_Option.forEach(instance.decoration, Editor$AgdaModeVscode.Decoration.destroy); - var $$document = param.document; - var match = instance.interval; - var start = $$document.positionAt(match[0]); - var end_ = $$document.positionAt(match[1]); - var range = new Vscode.Range(start, end_); - instance.decoration = Caml_option.some(Editor$AgdaModeVscode.Decoration.underlineText(param, range)); - })); - })); - })); - self.semaphore = false; - Chan$AgdaModeVscode.emit(self.chanLog, [/* RewriteApplied */1]); - })); + match[0].finally(function () { + Belt_Array.forEach(rewrites, (function (rewrite) { + Belt_Option.forEach(rewrite.instance, (function (instance) { + Belt_Option.forEach(editor, (function (extra) { + Belt_Option.forEach(instance.decoration, Editor$AgdaModeVscode.Decoration.destroy); + var $$document = extra.document; + var match = instance.interval; + var start = $$document.positionAt(match[0]); + var end_ = $$document.positionAt(match[1]); + var range = new Vscode.Range(start, end_); + instance.decoration = Caml_option.some(Editor$AgdaModeVscode.Decoration.underlineText(extra, range)); + })); + })); + })); + self.semaphore = false; + Chan$AgdaModeVscode.emit(self.chanLog, ["RewriteApplied"]); + }); var instance = Belt_Array.get(self.instances, 0); if (instance !== undefined) { return [ { - TAG: 1, + TAG: "Rewrite", _0: replacements, _1: resolve, [Symbol.for("name")]: "Rewrite" }, { - TAG: 0, + TAG: "UpdateView", _0: Buffer$AgdaModeVscode.toSequence(instance.buffer), _1: instance.buffer.translation, _2: instance.buffer.candidateIndex, @@ -336,47 +336,47 @@ function applyRewrites(self, editor, rewrites) { deactivate(self); return [ { - TAG: 1, + TAG: "Rewrite", _0: replacements, _1: resolve, [Symbol.for("name")]: "Rewrite" }, - /* Deactivate */1 + "Deactivate" ]; } } function run(self, editor, input) { var output; - if (typeof input === "number") { + if (typeof input !== "object") { deactivate(self); - output = [/* Deactivate */1]; + output = ["Deactivate"]; } else { - switch (input.TAG | 0) { - case /* Activate */0 : + switch (input.TAG) { + case "Activate" : self.activated = true; self.instances = Belt_Array.map(Js_array.sortInPlaceWith((function (x, y) { return Caml.int_compare(x[0], y[0]); - }), input._0), (function (param) { + }), input._0), (function (extra) { if (editor === undefined) { return { - interval: param, + interval: extra, decoration: undefined, - buffer: Buffer$AgdaModeVscode.make(undefined) + buffer: Buffer$AgdaModeVscode.make() }; } var editor$1 = Caml_option.valFromOption(editor); var $$document = editor$1.document; - var range = Editor$AgdaModeVscode.$$Range.fromInterval($$document, param); + var range = Editor$AgdaModeVscode.$$Range.fromInterval($$document, extra); return { - interval: param, + interval: extra, decoration: Caml_option.some(Editor$AgdaModeVscode.Decoration.underlineText(editor$1, range)), - buffer: Buffer$AgdaModeVscode.make(undefined) + buffer: Buffer$AgdaModeVscode.make() }; })); - output = [/* Activate */0]; + output = ["Activate"]; break; - case /* KeyUpdate */1 : + case "KeyUpdate" : var changes = input._0; if (changes.length !== 0 && self.activated && !self.semaphore) { var match = updateInstances(self.instances, changes); @@ -386,38 +386,38 @@ function run(self, editor, input) { output = []; } break; - case /* MouseSelect */2 : + case "MouseSelect" : if (self.activated && !self.semaphore) { self.instances = validateCursorPositions(self.instances, input._0); - output = self.instances.length === 0 ? run(self, editor, /* Deactivate */0) : []; + output = self.instances.length === 0 ? run(self, editor, "Deactivate") : []; } else { output = []; } break; - case /* Candidate */3 : + case "Candidate" : var action = input._0; var callback; - if (typeof action === "number") { + if (typeof action !== "object") { switch (action) { - case /* BrowseUp */0 : + case "BrowseUp" : callback = (function (instance) { instance.buffer = Buffer$AgdaModeVscode.moveUp(instance.buffer); return Belt_Array.get(instance.buffer.translation.candidateSymbols, instance.buffer.candidateIndex); }); break; - case /* BrowseDown */1 : + case "BrowseDown" : callback = (function (instance) { instance.buffer = Buffer$AgdaModeVscode.moveDown(instance.buffer); return Belt_Array.get(instance.buffer.translation.candidateSymbols, instance.buffer.candidateIndex); }); break; - case /* BrowseLeft */2 : + case "BrowseLeft" : callback = (function (instance) { instance.buffer = Buffer$AgdaModeVscode.moveLeft(instance.buffer); return Belt_Array.get(instance.buffer.translation.candidateSymbols, instance.buffer.candidateIndex); }); break; - case /* BrowseRight */3 : + case "BrowseRight" : callback = (function (instance) { instance.buffer = Buffer$AgdaModeVscode.moveRight(instance.buffer); return Belt_Array.get(instance.buffer.translation.candidateSymbols, instance.buffer.candidateIndex); diff --git a/lib/js/src/InputMethod/Translator.bs.js b/lib/js/src/InputMethod/Translator.bs.js index a808d229..cc7215e8 100644 --- a/lib/js/src/InputMethod/Translator.bs.js +++ b/lib/js/src/InputMethod/Translator.bs.js @@ -96,8 +96,8 @@ function translate(input, state) { }; } -function initialTranslation(param) { - return translate("", param); +function initialTranslation(x) { + return translate("", x); } function lookup(symbol) { @@ -119,16 +119,16 @@ var decode = Json_Decode$JsonCombinators.object(function (field) { function encode(translation) { return { - symbol: Json_Encode$JsonCombinators.option((function (prim) { + symbol: Json_Encode$JsonCombinators.option(function (prim) { return prim; - }), translation.symbol), + })(translation.symbol), further: translation.further, - keySuggestions: Json_Encode$JsonCombinators.array((function (prim) { + keySuggestions: Json_Encode$JsonCombinators.array(function (prim) { return prim; - }), translation.keySuggestions), - candidateSymbols: Json_Encode$JsonCombinators.array((function (prim) { + })(translation.keySuggestions), + candidateSymbols: Json_Encode$JsonCombinators.array(function (prim) { return prim; - }), translation.candidateSymbols) + })(translation.candidateSymbols) }; } diff --git a/lib/js/src/Main.bs.js b/lib/js/src/Main.bs.js index 6b0e4bc7..907436ec 100644 --- a/lib/js/src/Main.bs.js +++ b/lib/js/src/Main.bs.js @@ -3,11 +3,9 @@ var Curry = require("rescript/lib/js/curry.js"); var Vscode = require("vscode"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Js_array = require("rescript/lib/js/js_array.js"); -var Belt_Array = require("rescript/lib/js/belt_Array.js"); -var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); +var Core__Option = require("@rescript/core/lib/js/src/Core__Option.bs.js"); var IM$AgdaModeVscode = require("./InputMethod/IM.bs.js"); var Chan$AgdaModeVscode = require("./Util/Chan.bs.js"); var State$AgdaModeVscode = require("./State.bs.js"); @@ -31,30 +29,30 @@ function isAgda(fileName) { } function onOpenEditor(callback) { - Belt_Option.forEach(Vscode.window.activeTextEditor, callback); - return Vscode.window.onDidChangeActiveTextEditor(function (next) { - Belt_Option.forEach(next, callback); - }); + Core__Option.forEach(Vscode.window.activeTextEditor, callback); + return Curry._1(Vscode.window.onDidChangeActiveTextEditor, (function (next) { + Core__Option.forEach(next, callback); + })); } function onCloseDocument(callback) { - return Vscode.workspace.onDidCloseTextDocument(callback); + return Curry._1(Vscode.workspace.onDidCloseTextDocument, callback); } function onTriggerCommand(callback) { - return Belt_Array.map(Command$AgdaModeVscode.names, (function (param) { - var command = param[0]; - return Vscode.commands.registerCommand("agda-mode." + param[1], (function (param) { - return Belt_Option.map(Vscode.window.activeTextEditor, (function (editor) { - var fileName = Parser$AgdaModeVscode.filepath(editor.document.fileName); - if (isAgda(fileName)) { - return Curry._2(callback, command, editor); - } else { - return $$Promise.resolved(undefined); - } - })); - })); - })); + return Command$AgdaModeVscode.names.map(function (param) { + var command = param[0]; + return Vscode.commands.registerCommand("agda-mode." + param[1], (function () { + return Core__Option.map(Vscode.window.activeTextEditor, (function (editor) { + var fileName = Parser$AgdaModeVscode.filepath(editor.document.fileName); + if (isAgda(fileName)) { + return callback(command, editor); + } else { + return Promise.resolve(undefined); + } + })); + })); + }); } var Inputs = { @@ -65,33 +63,33 @@ var Inputs = { function initialize(debugChan, extensionPath, globalStoragePath, editor, fileName) { var panel = Singleton$AgdaModeVscode.Panel.make(extensionPath); - $$Promise.get(WebviewPanel$AgdaModeVscode.onceDestroyed(panel), (function (param) { - Registry$AgdaModeVscode.removeAndDestroyAll(undefined); - })); + WebviewPanel$AgdaModeVscode.onceDestroyed(panel).finally(function () { + Registry$AgdaModeVscode.removeAndDestroyAll(); + }); var state = State$AgdaModeVscode.make(debugChan, globalStoragePath, extensionPath, editor); - $$Promise.get(Chan$AgdaModeVscode.once(state.onRemoveFromRegistry), (function (param) { - Registry$AgdaModeVscode.remove(fileName); - })); + Chan$AgdaModeVscode.once(state.onRemoveFromRegistry).finally(function () { + Registry$AgdaModeVscode.remove(fileName); + }); var subscribe = function (disposable) { Js_array.push(disposable, state.subscriptions); }; - var getCurrentEditor = function (param) { + var getCurrentEditor = function () { var editor = Vscode.window.activeTextEditor; if (editor !== undefined) { return Caml_option.some(Caml_option.valFromOption(editor)); } else { - return Belt_Array.get(Vscode.window.visibleTextEditors, 0); + return Vscode.window.visibleTextEditors[0]; } }; subscribe(WebviewPanel$AgdaModeVscode.onEvent(State__View$AgdaModeVscode.Panel.get(state), (function ($$event) { - var editor$p = getCurrentEditor(undefined); + var editor$p = getCurrentEditor(); if (editor$p === undefined) { return ; } var fileName$p = Parser$AgdaModeVscode.filepath(Caml_option.valFromOption(editor$p).document.fileName); if (fileName$p === fileName) { State__Command$AgdaModeVscode.dispatchCommand(state, { - TAG: 9, + TAG: "EventFromView", _0: $$event, [Symbol.for("name")]: "EventFromView" }); @@ -99,20 +97,20 @@ function initialize(debugChan, extensionPath, globalStoragePath, editor, fileNam } }))); - subscribe(Vscode.window.onDidChangeTextEditorSelection(function ($$event) { - var $$document = editor.document; - var intervals = Belt_Array.map($$event.selections, (function (selection) { + subscribe(Curry._1(Vscode.window.onDidChangeTextEditorSelection, (function ($$event) { + var $$document = editor.document; + var intervals = $$event.selections.map(function (selection) { return [ Editor$AgdaModeVscode.Position.toOffset($$document, selection.start), Editor$AgdaModeVscode.Position.toOffset($$document, selection.end) ]; - })); - State__InputMethod$AgdaModeVscode.select(state, intervals); - })); - subscribe(Vscode.workspace.onDidChangeTextDocument(function ($$event) { - var changes = IM$AgdaModeVscode.Input.fromTextDocumentChangeEvent(editor, $$event); - State__InputMethod$AgdaModeVscode.keyUpdateEditorIM(state, changes); - })); + }); + State__InputMethod$AgdaModeVscode.select(state, intervals); + }))); + subscribe(Curry._1(Vscode.workspace.onDidChangeTextDocument, (function ($$event) { + var changes = IM$AgdaModeVscode.Input.fromTextDocumentChangeEvent(editor, $$event); + State__InputMethod$AgdaModeVscode.keyUpdateEditorIM(state, changes); + }))); subscribe(Editor$AgdaModeVscode.Provider.registerDefinitionProvider(function (fileName, position) { var currentFileName = Parser$AgdaModeVscode.filepath(state.document.fileName); var normalizedFileName = Parser$AgdaModeVscode.filepath(fileName); @@ -125,23 +123,23 @@ function initialize(debugChan, extensionPath, globalStoragePath, editor, fileNam return state; } -function registerDocumentSemanticTokensProvider(param) { +function registerDocumentSemanticTokensProvider() { var tokenTypes = Highlighting__SemanticToken$AgdaModeVscode.TokenType.enumurate; var tokenModifiers = Highlighting__SemanticToken$AgdaModeVscode.TokenModifier.enumurate; var provideDocumentSemanticTokens = function ($$document, _cancel) { - var useSemanticHighlighting = Config$AgdaModeVscode.Highlighting.getHighlightWithThemeColors(undefined); + var useSemanticHighlighting = Config$AgdaModeVscode.Highlighting.getHighlightWithThemeColors(); var fileName = Parser$AgdaModeVscode.filepath($$document.fileName); if (useSemanticHighlighting) { - return Caml_option.some($$Promise.map(Registry$AgdaModeVscode.requestSemanticTokens(fileName), (function (tokens) { - var semanticTokensLegend = new Vscode.SemanticTokensLegend(tokenTypes, tokenModifiers); - var builder = new Vscode.SemanticTokensBuilder(semanticTokensLegend); - Belt_Array.forEach(tokens, (function (param) { - builder.push(Curry._1(Highlighting__SemanticToken$AgdaModeVscode.Module.SingleLineRange.toVsCodeRange, param.range), Highlighting__SemanticToken$AgdaModeVscode.TokenType.toString(param.type_), Belt_Option.map(param.modifiers, (function (xs) { - return Belt_Array.map(xs, Highlighting__SemanticToken$AgdaModeVscode.TokenModifier.toString); - }))); - })); - return builder.build(); - }))); + return Caml_option.some(Registry$AgdaModeVscode.requestSemanticTokens(fileName).then(function (tokens) { + var semanticTokensLegend = new Vscode.SemanticTokensLegend(tokenTypes, tokenModifiers); + var builder = new Vscode.SemanticTokensBuilder(semanticTokensLegend); + tokens.forEach(function (param) { + builder.push(Highlighting__SemanticToken$AgdaModeVscode.Module.SingleLineRange.toVsCodeRange(param.range), Highlighting__SemanticToken$AgdaModeVscode.TokenType.toString(param.type_), Core__Option.map(param.modifiers, (function (xs) { + return xs.map(Highlighting__SemanticToken$AgdaModeVscode.TokenModifier.toString); + }))); + }); + return builder.build(); + })); } }; @@ -152,19 +150,20 @@ function registerDocumentSemanticTokensProvider(param) { } function finalize(isRestart) { - if (Registry$AgdaModeVscode.isEmpty(undefined)) { - Singleton$AgdaModeVscode.Panel.destroy(undefined); + if (Registry$AgdaModeVscode.isEmpty()) { + Singleton$AgdaModeVscode.Panel.destroy(); if (!isRestart) { - Singleton$AgdaModeVscode.DebugBuffer.destroy(undefined); + return Singleton$AgdaModeVscode.DebugBuffer.destroy(); + } else { + return ; } - } - return $$Promise.resolved(undefined); + } function activateWithoutContext(subscriptions, extensionPath, globalStoragePath) { - var channels_inputMethod = Chan$AgdaModeVscode.make(undefined); - var channels_responseHandled = Chan$AgdaModeVscode.make(undefined); + var channels_inputMethod = Chan$AgdaModeVscode.make(); + var channels_responseHandled = Chan$AgdaModeVscode.make(); var channels = { inputMethod: channels_inputMethod, responseHandled: channels_responseHandled @@ -172,108 +171,98 @@ function activateWithoutContext(subscriptions, extensionPath, globalStoragePath) var x = onOpenEditor(function (editor) { var fileName = Parser$AgdaModeVscode.filepath(editor.document.fileName); if (isAgda(fileName)) { - return Belt_Option.forEach(Registry$AgdaModeVscode.get(fileName), (function (state) { + return Core__Option.forEach(Registry$AgdaModeVscode.get(fileName), (function (state) { state.editor = editor; state.document = editor.document; - State__Command$AgdaModeVscode.dispatchCommand(state, /* Refresh */3); + State__Command$AgdaModeVscode.dispatchCommand(state, "Refresh"); })); } }); Js_array.push(x, subscriptions); - var x$1 = Vscode.workspace.onDidChangeTextDocument(function ($$event) { - var $$document = $$event.document; - var fileName = Parser$AgdaModeVscode.filepath($$document.fileName); - if (isAgda(fileName)) { - return Belt_Option.forEach(Registry$AgdaModeVscode.get(fileName), (function (state) { - Highlighting$AgdaModeVscode.updateSemanticHighlighting(state.highlighting, $$event); - })); - } - - }); + var x$1 = Curry._1(Vscode.workspace.onDidChangeTextDocument, (function ($$event) { + var $$document = $$event.document; + var fileName = Parser$AgdaModeVscode.filepath($$document.fileName); + if (isAgda(fileName)) { + return Core__Option.forEach(Registry$AgdaModeVscode.get(fileName), (function (state) { + Highlighting$AgdaModeVscode.updateSemanticHighlighting(state.highlighting, $$event); + })); + } + + })); Js_array.push(x$1, subscriptions); - var x$2 = Vscode.workspace.onDidCloseTextDocument(function ($$document) { - var fileName = Parser$AgdaModeVscode.filepath($$document.fileName); - if (isAgda(fileName)) { - Registry$AgdaModeVscode.removeAndDestroy(fileName); - finalize(false); - return ; - } - - }); + var x$2 = Curry._1(Vscode.workspace.onDidCloseTextDocument, (function ($$document) { + var fileName = Parser$AgdaModeVscode.filepath($$document.fileName); + if (isAgda(fileName)) { + Registry$AgdaModeVscode.removeAndDestroy(fileName); + finalize(false); + return ; + } + + })); Js_array.push(x$2, subscriptions); - var xs = onTriggerCommand(function (command, editor) { + var xs = onTriggerCommand(async function (command, editor) { var fileName = Parser$AgdaModeVscode.filepath(editor.document.fileName); - var tmp; - if (typeof command === "number" && command < 3) { + if (typeof command !== "object") { switch (command) { - case /* Load */0 : - tmp = $$Promise.resolved(undefined); + case "Quit" : + await Registry$AgdaModeVscode.removeAndDestroy(fileName); + finalize(false); break; - case /* Quit */1 : - tmp = $$Promise.flatMap(Registry$AgdaModeVscode.removeAndDestroy(fileName), (function (param) { - return finalize(false); - })); + case "Restart" : + await Registry$AgdaModeVscode.removeAndDestroy(fileName); + finalize(true); break; - case /* Restart */2 : - tmp = $$Promise.flatMap(Registry$AgdaModeVscode.removeAndDestroy(fileName), (function (param) { - return finalize(true); - })); + default: + + } + } + var exit = 0; + if (typeof command !== "object") { + switch (command) { + case "Load" : + case "Restart" : + exit = 1; break; - + default: + + } + } else if (command.TAG === "InputMethod") { + var tmp = command._0; + if (typeof tmp !== "object" && tmp === "Activate") { + exit = 1; } + + } + if (exit === 1) { + var match = Registry$AgdaModeVscode.get(fileName); + if (match === undefined) { + var state = initialize(channels, extensionPath, globalStoragePath, editor, fileName); + Registry$AgdaModeVscode.add(fileName, state); + } + + } + var state$1 = Registry$AgdaModeVscode.get(fileName); + if (state$1 === undefined) { + return ; + } + var error = await State__Command$AgdaModeVscode.dispatchCommand(state$1, command); + if (error.TAG === "Ok") { + return { + TAG: "Ok", + _0: state$1, + [Symbol.for("name")]: "Ok" + }; } else { - tmp = $$Promise.resolved(undefined); + return { + TAG: "Error", + _0: error._0, + [Symbol.for("name")]: "Error" + }; } - return $$Promise.flatMap($$Promise.tap(tmp, (function (param) { - if (typeof command === "number") { - switch (command) { - case /* Load */0 : - case /* Restart */2 : - break; - default: - return ; - } - } else { - if (command.TAG !== /* InputMethod */14) { - return ; - } - if (command._0 !== 0) { - return ; - } - - } - var match = Registry$AgdaModeVscode.get(fileName); - if (match !== undefined) { - return ; - } - var state = initialize(channels, extensionPath, globalStoragePath, editor, fileName); - Registry$AgdaModeVscode.add(fileName, state); - })), (function (param) { - var state = Registry$AgdaModeVscode.get(fileName); - if (state !== undefined) { - return $$Promise.map(State__Command$AgdaModeVscode.dispatchCommand(state, command), (function (result) { - if (result.TAG === /* Ok */0) { - return { - TAG: 0, - _0: state, - [Symbol.for("name")]: "Ok" - }; - } else { - return { - TAG: 1, - _0: result._0, - [Symbol.for("name")]: "Error" - }; - } - })); - } else { - return $$Promise.resolved(undefined); - } - })); }); Js_array.pushMany(xs, subscriptions); - var x$3 = registerDocumentSemanticTokensProvider(undefined); + var x$3 = registerDocumentSemanticTokensProvider(); Js_array.push(x$3, subscriptions); return channels; } @@ -285,7 +274,7 @@ function activate(context) { return activateWithoutContext(subscriptions, extensionPath, globalStoragePath); } -function deactivate(param) { +function deactivate() { } diff --git a/lib/js/src/Parser/Parser.bs.js b/lib/js/src/Parser/Parser.bs.js index ad4d59fd..aee2fa6f 100644 --- a/lib/js/src/Parser/Parser.bs.js +++ b/lib/js/src/Parser/Parser.bs.js @@ -1,15 +1,16 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Path = require("path"); -var Curry = require("rescript/lib/js/curry.js"); var Js_array = require("rescript/lib/js/js_array.js"); var Js_string = require("rescript/lib/js/js_string.js"); +var Nodepath = require("node:path"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); function splitToLines(s) { - return Belt_Array.keepMap(Belt_Array.map(Js_string.splitByRe(/\r\n|\n/, s), (function (x) { + return Belt_Array.keepMap(Belt_Array.map((function (__x) { + return Js_string.splitByRe(/\r\n|\n/, __x); + })(s), (function (x) { if (x !== undefined && x !== "") { return x; } @@ -20,33 +21,35 @@ function splitToLines(s) { } function map(f, x) { - if (x) { + if (typeof x !== "object") { + return "Stop"; + } else { return { - _0: Curry._1(f, x._0), + TAG: "Yield", + _0: f(x._0), [Symbol.for("name")]: "Yield" }; - } else { - return /* Stop */0; } } function tap(f, x) { - if (!x) { - return /* Stop */0; + if (typeof x !== "object") { + return "Stop"; } var x$1 = x._0; - Curry._1(f, x$1); + f(x$1); return { + TAG: "Yield", _0: x$1, [Symbol.for("name")]: "Yield" }; } function flatMap(f, x) { - if (x) { - return Curry._1(f, x._0); + if (typeof x !== "object") { + return "Stop"; } else { - return /* Stop */0; + return f(x._0); } } @@ -68,24 +71,26 @@ function make(initialContinuation, callback) { function feed(self, input) { var $$continue = Belt_Option.getWithDefault(self.continuation.contents, self.initialContinuation); - var err = Curry._1($$continue, input); - switch (err.TAG | 0) { - case /* Error */0 : - return Curry._1(self.callback, { + var err = $$continue(input); + switch (err.TAG) { + case "Error" : + return self.callback({ + TAG: "Yield", _0: { - TAG: 1, + TAG: "Error", _0: err._0, [Symbol.for("name")]: "Error" }, [Symbol.for("name")]: "Yield" }); - case /* Continue */1 : + case "Continue" : self.continuation.contents = err._0; return ; - case /* Done */2 : - Curry._1(self.callback, { + case "Done" : + self.callback({ + TAG: "Yield", _0: { - TAG: 0, + TAG: "Ok", _0: err._0, [Symbol.for("name")]: "Ok" }, @@ -98,7 +103,7 @@ function feed(self, input) { } function stop(self) { - Curry._1(self.callback, /* Stop */0); + self.callback("Stop"); } var Incr = { @@ -109,7 +114,7 @@ var Incr = { }; function toString(x) { - if (x.TAG === /* A */0) { + if (x.TAG === "A") { return "\"" + (x._0 + "\""); } else { return "[" + (Js_array.joinWith(", ", Belt_Array.map(x._0, toString)) + "]"); @@ -119,13 +124,13 @@ function toString(x) { function preprocess(string) { if (Js_string.substring(0, 13, string) === "cannot read: ") { return { - TAG: 1, + TAG: "Error", _0: Js_string.sliceToEnd(12, string), [Symbol.for("name")]: "Error" }; } else { return { - TAG: 0, + TAG: "Ok", _0: string, [Symbol.for("name")]: "Ok" }; @@ -133,7 +138,7 @@ function preprocess(string) { } function flatten(x) { - if (x.TAG === /* A */0) { + if (x.TAG === "A") { return [x._0]; } else { return Belt_Array.concatMany(Belt_Array.map(x._0, flatten)); @@ -153,9 +158,9 @@ function parseWithContinuation(string) { return ; } var xs = expr.contents; - if (xs.TAG === /* A */0) { + if (xs.TAG === "A") { expr.contents = { - TAG: 1, + TAG: "L", _0: [ expr.contents, elem @@ -179,7 +184,7 @@ function parseWithContinuation(string) { if ($$char === "(" && !in_str.contents) { Js_array.push({ contents: { - TAG: 1, + TAG: "L", _0: [], [Symbol.for("name")]: "L" } @@ -187,7 +192,7 @@ function parseWithContinuation(string) { } else if ($$char === ")" && !in_str.contents) { if (word.contents !== "") { pushToTheTop({ - TAG: 0, + TAG: "A", _0: word.contents, [Symbol.for("name")]: "A" }); @@ -201,7 +206,7 @@ function parseWithContinuation(string) { } else if ($$char === " " && !in_str.contents) { if (word.contents !== "") { pushToTheTop({ - TAG: 0, + TAG: "A", _0: word.contents, [Symbol.for("name")]: "A" }); @@ -221,7 +226,7 @@ function parseWithContinuation(string) { var match = stack.length; if (match === 0) { return { - TAG: 0, + TAG: "Error", _0: [ 0, string @@ -231,9 +236,9 @@ function parseWithContinuation(string) { } if (match !== 1) { return { - TAG: 1, - _0: (function (param) { - return parseSExpression(state, param); + TAG: "Continue", + _0: (function (extra) { + return parseSExpression(state, extra); }), [Symbol.for("name")]: "Continue" }; @@ -241,7 +246,7 @@ function parseWithContinuation(string) { var v = Belt_Array.get(stack, 0); if (v === undefined) { return { - TAG: 0, + TAG: "Error", _0: [ 1, string @@ -250,9 +255,9 @@ function parseWithContinuation(string) { }; } var xs = v.contents; - if (xs.TAG === /* A */0) { + if (xs.TAG === "A") { return { - TAG: 0, + TAG: "Error", _0: [ 3, string @@ -263,25 +268,25 @@ function parseWithContinuation(string) { var w = Belt_Array.get(xs._0, 0); if (w !== undefined) { return { - TAG: 2, + TAG: "Done", _0: w, [Symbol.for("name")]: "Done" }; } else { return { - TAG: 1, - _0: (function (param) { - return parseSExpression(state, param); + TAG: "Continue", + _0: (function (extra) { + return parseSExpression(state, extra); }), [Symbol.for("name")]: "Continue" }; } }; - var initialState = function (param) { + var initialState = function () { return { stack: [{ contents: { - TAG: 1, + TAG: "L", _0: [], [Symbol.for("name")]: "L" } @@ -298,11 +303,11 @@ function parseWithContinuation(string) { }; }; var processed = preprocess(string); - if (processed.TAG === /* Ok */0) { - return parseSExpression(initialState(undefined), processed._0); + if (processed.TAG === "Ok") { + return parseSExpression(initialState(), processed._0); } else { return { - TAG: 0, + TAG: "Error", _0: [ 4, string @@ -321,21 +326,21 @@ function parse(input) { }; Belt_Array.forEach(splitToLines(input), (function (line) { var $$continue = Belt_Option.getWithDefault(continuation.contents, parseWithContinuation); - var err = Curry._1($$continue, line); - switch (err.TAG | 0) { - case /* Error */0 : + var err = $$continue(line); + switch (err.TAG) { + case "Error" : Js_array.push({ - TAG: 1, + TAG: "Error", _0: err._0, [Symbol.for("name")]: "Error" }, resultAccum.contents); return ; - case /* Continue */1 : + case "Continue" : continuation.contents = err._0; return ; - case /* Done */2 : + case "Done" : Js_array.push({ - TAG: 0, + TAG: "Ok", _0: err._0, [Symbol.for("name")]: "Ok" }, resultAccum.contents); @@ -361,7 +366,7 @@ var SExpression = { }; function toString$1(x) { - if (x.TAG === /* SExpression */0) { + if (x.TAG === "SExpression") { return "Something went wrong when parsing S-expressions. Error code: S" + (String(x._0) + (" \"" + (x._1 + "\""))); } else { return "Perhaps the underlying protocol used by Agda for communicating with agda-mode has changed.\nPlease report which version of Agda you are using.\nError code: R" + (String(x._0) + (" \"" + (toString(x._1) + "\""))); @@ -378,7 +383,7 @@ function userInputToSExpr(s) { function filepath(s) { var removedBidi = Js_string.charCodeAt(0, s) === 8234.0 ? Js_string.sliceToEnd(1, s) : s; - var normalized = Path.normalize(removedBidi); + var normalized = Nodepath.normalize(removedBidi); return Js_string.replaceByRe(/\\/g, "/", normalized); } @@ -388,4 +393,4 @@ exports.SExpression = SExpression; exports.$$Error = $$Error; exports.userInputToSExpr = userInputToSExpr; exports.filepath = filepath; -/* path Not a pure module */ +/* node:path Not a pure module */ diff --git a/lib/js/src/Parser/SourceFile.bs.js b/lib/js/src/Parser/SourceFile.bs.js index 65f6532b..efccbf45 100644 --- a/lib/js/src/Parser/SourceFile.bs.js +++ b/lib/js/src/Parser/SourceFile.bs.js @@ -1,7 +1,6 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Curry = require("rescript/lib/js/curry.js"); var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); @@ -10,15 +9,15 @@ var Parser$AgdaModeVscode = require("./Parser.bs.js"); function parse(filepath) { if (/\.lagda\.rst$/i.test(Parser$AgdaModeVscode.filepath(filepath))) { - return /* LiterateRST */2; + return "LiterateRST"; } else if (/\.lagda\.md$/i.test(Parser$AgdaModeVscode.filepath(filepath))) { - return /* LiterateMarkdown */3; + return "LiterateMarkdown"; } else if (/\.lagda\.tex$|\.lagda$/i.test(Parser$AgdaModeVscode.filepath(filepath))) { - return /* LiterateTeX */1; + return "LiterateTeX"; } else if (/\.lagda\.org$/i.test(Parser$AgdaModeVscode.filepath(filepath))) { - return /* LiterateOrg */4; + return "LiterateOrg"; } else { - return /* Agda */0; + return "Agda"; } } @@ -28,10 +27,12 @@ var FileType = { function isHole(token) { var match = token.kind; - if (match !== 3) { - return match >= 5; - } else { - return true; + switch (match) { + case "GoalBracket" : + case "GoalQM" : + return true; + default: + return false; } } @@ -46,7 +47,7 @@ function make(raw) { 0, raw.length ], - kind: /* AgdaRaw */0 + kind: "AgdaRaw" }]; } @@ -58,7 +59,9 @@ function lex(regex, source, target, tokens) { var cursor = { contents: token.range[0] }; - return Belt_Array.map(Belt_Array.keepMap(Js_string.splitByRe(regex, token.content), (function (x) { + return Belt_Array.map(Belt_Array.keepMap((function (__x) { + return Js_string.splitByRe(regex, __x); + })(token.content), (function (x) { return x; })), (function (content) { var kind = regex.test(content) ? target : source; @@ -82,7 +85,7 @@ function map(f, self) { contents: 0 }; return Belt_Array.map(self, (function (token) { - var match = Curry._1(f, token); + var match = f(token); var content = match.content; var match$1 = token.range; var lengthDiff = content.length - token.content.length | 0; @@ -104,7 +107,7 @@ function map(f, self) { function mapOnly(kind, f, self) { return map((function (token) { if (token.kind === kind) { - return Curry._1(f, token); + return f(token); } else { return token; } @@ -179,7 +182,7 @@ function toTokens(raw) { cursorOld, cursor.contents ], - kind: /* Literate */1 + kind: "Literate" }; })); })); @@ -201,7 +204,7 @@ function markWithRules(begin_, end_, raw) { current.contents = false; } var insideAgda = previous.contents && current.contents; - var kind = insideAgda ? /* AgdaRaw */0 : /* Literate */1; + var kind = insideAgda ? "AgdaRaw" : "Literate"; return { content: content, range: token.range, @@ -210,20 +213,20 @@ function markWithRules(begin_, end_, raw) { })); } -function markMarkdown(param) { - return markWithRules(markdown, markdown, param); +function markMarkdown(extra) { + return markWithRules(markdown, markdown, extra); } -function markTex(param) { - return markWithRules(texBegin, texEnd, param); +function markTex(extra) { + return markWithRules(texBegin, texEnd, extra); } -function markRST(param) { - return markWithRules(rstBegin, rstEnd, param); +function markRST(extra) { + return markWithRules(rstBegin, rstEnd, extra); } -function markOrg(param) { - return markWithRules(orgBegin, orgEnd, param); +function markOrg(extra) { + return markWithRules(orgBegin, orgEnd, extra); } var Literate = { @@ -252,29 +255,29 @@ function parse$1(indices, filepath, raw) { var fileType = parse(filepath); var preprocessed; switch (fileType) { - case /* Agda */0 : + case "Agda" : preprocessed = make(raw); break; - case /* LiterateTeX */1 : + case "LiterateTeX" : preprocessed = markWithRules(texBegin, texEnd, raw); break; - case /* LiterateRST */2 : + case "LiterateRST" : preprocessed = markWithRules(rstBegin, rstEnd, raw); break; - case /* LiterateMarkdown */3 : + case "LiterateMarkdown" : preprocessed = markWithRules(markdown, markdown, raw); break; - case /* LiterateOrg */4 : + case "LiterateOrg" : preprocessed = markWithRules(orgBegin, orgEnd, raw); break; } - var original = lex(goalQuestionMark, /* GoalQMRaw */4, /* GoalQM */5, lex(goalQuestionMarkRaw, /* AgdaRaw */0, /* GoalQMRaw */4, lex(goalBracket, /* AgdaRaw */0, /* GoalBracket */3, lex(comment, /* AgdaRaw */0, /* Comment */2, preprocessed)))); + var original = lex(goalQuestionMark, "GoalQMRaw", "GoalQM", lex(goalQuestionMarkRaw, "AgdaRaw", "GoalQMRaw", lex(goalBracket, "AgdaRaw", "GoalBracket", lex(comment, "AgdaRaw", "Comment", preprocessed)))); var questionMark2GoalBracket = function (token) { return { content: "{! !}", range: token.range, - kind: /* GoalBracket */3 + kind: "GoalBracket" }; }; var adjustGoalBracket = function (token) { @@ -292,7 +295,9 @@ function parse$1(indices, filepath, raw) { return x; })); })), ""); - var actualSpaces = Belt_Option.getWithDefault(Belt_Option.flatMap(Js_string.match_(/\s*$/, content), (function (matches) { + var actualSpaces = Belt_Option.getWithDefault(Belt_Option.flatMap((function (__x) { + return Js_string.match_(/\s*$/, __x); + })(content), (function (matches) { var match = Belt_Array.get(matches, 0); if (match === undefined) { return ; @@ -317,10 +322,10 @@ function parse$1(indices, filepath, raw) { 1, 2 ], - kind: /* GoalBracket */3 + kind: "GoalBracket" }; }; - var modified = mapOnly(/* GoalBracket */3, adjustGoalBracket, mapOnly(/* GoalQM */5, questionMark2GoalBracket, original)); + var modified = mapOnly("GoalBracket", adjustGoalBracket, mapOnly("GoalQM", questionMark2GoalBracket, original)); var originalHoles = Belt_Array.keep(original, isHole); var modifiedHoles = Belt_Array.keep(modified, isHole); return Belt_Array.keepMap(Belt_Array.mapWithIndex(originalHoles, (function (idx, token) { diff --git a/lib/js/src/Registry.bs.js b/lib/js/src/Registry.bs.js index a04322bf..0f6c0a8a 100644 --- a/lib/js/src/Registry.bs.js +++ b/lib/js/src/Registry.bs.js @@ -1,9 +1,7 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Curry = require("rescript/lib/js/curry.js"); var Js_dict = require("rescript/lib/js/js_dict.js"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Util$AgdaModeVscode = require("./Util/Util.bs.js"); @@ -11,7 +9,7 @@ var State$AgdaModeVscode = require("./State.bs.js"); var Highlighting$AgdaModeVscode = require("./Highlighting.bs.js"); function getState(status) { - if (status.TAG === /* PendingInit */0) { + if (status.TAG === "PendingInit") { return ; } else { return status._0; @@ -27,19 +25,19 @@ function get(fileName) { function add(fileName, state) { var match = Js_dict.get(dict, fileName); if (match !== undefined) { - if (match.TAG !== /* PendingInit */0) { + if (match.TAG !== "PendingInit") { return ; } - Curry._1(match._1, Highlighting$AgdaModeVscode.getSemanticTokens(state.highlighting)); + match._1(Highlighting$AgdaModeVscode.getSemanticTokens(state.highlighting)); dict[fileName] = { - TAG: 1, + TAG: "Initialized", _0: state, [Symbol.for("name")]: "Initialized" }; return ; } dict[fileName] = { - TAG: 1, + TAG: "Initialized", _0: state, [Symbol.for("name")]: "Initialized" }; @@ -49,50 +47,45 @@ function remove(fileName) { Util$AgdaModeVscode.Dict.$$delete(dict, fileName); } -function removeAndDestroy(fileName) { +async function removeAndDestroy(fileName) { var match = Js_dict.get(dict, fileName); if (match === undefined) { - return $$Promise.resolved(undefined); + return ; } - if (match.TAG === /* PendingInit */0) { - Util$AgdaModeVscode.Dict.$$delete(dict, fileName); - Curry._1(match._1, []); - return $$Promise.resolved(undefined); + if (match.TAG === "PendingInit") { + remove(fileName); + return match._1([]); } - Util$AgdaModeVscode.Dict.$$delete(dict, fileName); - return $$Promise.map(State$AgdaModeVscode.destroy(match._0, false), (function (param) { - - })); + remove(fileName); + State$AgdaModeVscode.destroy(match._0, false); } -function removeAndDestroyAll(param) { - return $$Promise.map(Util$AgdaModeVscode.oneByOne(Belt_Array.map(Object.keys(dict), removeAndDestroy)), (function (param) { - - })); +async function removeAndDestroyAll() { + await Util$AgdaModeVscode.oneByOne(Belt_Array.map(Object.keys(dict), removeAndDestroy)); } -function isEmpty(param) { +function isEmpty() { return Object.keys(dict).length === 0; } -function requestSemanticTokens(fileName) { +async function requestSemanticTokens(fileName) { var match = Js_dict.get(dict, fileName); if (match !== undefined) { - if (match.TAG === /* PendingInit */0) { - return match._0; + if (match.TAG === "PendingInit") { + return await match._0; } else { - return $$Promise.resolved(Highlighting$AgdaModeVscode.getSemanticTokens(match._0.highlighting)); + return Highlighting$AgdaModeVscode.getSemanticTokens(match._0.highlighting); } } - var match$1 = $$Promise.pending(undefined); + var match$1 = Util$AgdaModeVscode.Promise_.pending(); var promise = match$1[0]; dict[fileName] = { - TAG: 0, + TAG: "PendingInit", _0: promise, _1: match$1[1], [Symbol.for("name")]: "PendingInit" }; - return promise; + return await promise; } var Module = { @@ -113,4 +106,4 @@ exports.removeAndDestroy = removeAndDestroy; exports.removeAndDestroyAll = removeAndDestroyAll; exports.isEmpty = isEmpty; exports.requestSemanticTokens = requestSemanticTokens; -/* Promise Not a pure module */ +/* Util-AgdaModeVscode Not a pure module */ diff --git a/lib/js/src/Request.bs.js b/lib/js/src/Request.bs.js index 3dfccd5e..e357a36e 100644 --- a/lib/js/src/Request.bs.js +++ b/lib/js/src/Request.bs.js @@ -3,74 +3,74 @@ var Js_array = require("rescript/lib/js/js_array.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); -var Pervasives = require("rescript/lib/js/pervasives.js"); +var PervasivesU = require("rescript/lib/js/pervasivesU.js"); var Goal$AgdaModeVscode = require("./Goal.bs.js"); var Util$AgdaModeVscode = require("./Util/Util.bs.js"); var Parser$AgdaModeVscode = require("./Parser/Parser.bs.js"); var Command$AgdaModeVscode = require("./Command.bs.js"); function toString(x) { - if (typeof x === "number") { + if (typeof x !== "object") { switch (x) { - case /* Load */0 : + case "Load" : return "Load"; - case /* Compile */1 : + case "Compile" : return "Compile"; - case /* ToggleDisplayOfImplicitArguments */2 : + case "ToggleDisplayOfImplicitArguments" : return "ToggleDisplayOfImplicitArguments"; - case /* ToggleDisplayOfIrrelevantArguments */3 : + case "ToggleDisplayOfIrrelevantArguments" : return "ToggleDisplayOfIrrelevantArguments"; - case /* ShowConstraints */4 : + case "ShowConstraints" : return "ShowConstraints"; } } else { - switch (x.TAG | 0) { - case /* SolveConstraints */0 : + switch (x.TAG) { + case "SolveConstraints" : return "SolveConstraints"; - case /* SolveConstraintsGlobal */1 : + case "SolveConstraintsGlobal" : return "SolveConstraintsGlobal"; - case /* ShowGoals */2 : + case "ShowGoals" : return "ShowGoals"; - case /* SearchAbout */3 : + case "SearchAbout" : return "SearchAbout"; - case /* Give */4 : + case "Give" : return "Give"; - case /* Refine */5 : + case "Refine" : return "Refine"; - case /* ElaborateAndGive */6 : + case "ElaborateAndGive" : return "ElaborateAndGive"; - case /* Auto */7 : + case "Auto" : return "Auto"; - case /* Case */8 : + case "Case" : return "Case"; - case /* HelperFunctionType */9 : + case "HelperFunctionType" : return "HelperFunctionType"; - case /* InferType */10 : + case "InferType" : return "InferType"; - case /* InferTypeGlobal */11 : + case "InferTypeGlobal" : return "InferTypeGlobal"; - case /* Context */12 : + case "Context" : return "Context"; - case /* GoalType */13 : + case "GoalType" : return "GoalType"; - case /* GoalTypeAndContext */14 : + case "GoalTypeAndContext" : return "GoalTypeAndContext"; - case /* GoalTypeContextAndInferredType */15 : + case "GoalTypeContextAndInferredType" : return "GoalTypeContextAndInferredType"; - case /* GoalTypeContextAndCheckedType */16 : + case "GoalTypeContextAndCheckedType" : return "GoalTypeContextAndCheckedType"; - case /* ModuleContents */17 : + case "ModuleContents" : return "ModuleContents"; - case /* ModuleContentsGlobal */18 : + case "ModuleContentsGlobal" : return "ModuleContentsGlobal"; - case /* ComputeNormalForm */19 : + case "ComputeNormalForm" : return "ComputeNormalForm"; - case /* ComputeNormalFormGlobal */20 : + case "ComputeNormalFormGlobal" : return "ComputeNormalFormGlobal"; - case /* WhyInScope */21 : + case "WhyInScope" : return "WhyInScope"; - case /* WhyInScopeGlobal */22 : + case "WhyInScopeGlobal" : return "WhyInScopeGlobal"; } @@ -86,13 +86,13 @@ function encode($$document, version, filepath, backend, libraryPath, highlightin var commonPart = function (level) { var level$1; switch (level) { - case /* None */0 : + case "None" : level$1 = "None"; break; - case /* NonInteractive */1 : + case "NonInteractive" : level$1 = "NonInteractive"; break; - case /* Interactive */2 : + case "Interactive" : level$1 = "Interactive"; break; @@ -102,158 +102,158 @@ function encode($$document, version, filepath, backend, libraryPath, highlightin var buildRange = function (goal) { return Goal$AgdaModeVscode.buildHaskellRange(goal, $$document, version, filepath); }; - if (typeof request === "number") { + if (typeof request !== "object") { switch (request) { - case /* Load */0 : + case "Load" : if (Util$AgdaModeVscode.Version.gte(version, "2.5.0")) { - return "" + commonPart(/* NonInteractive */1) + "( Cmd_load \"" + filepath + "\" [] )"; + return commonPart("NonInteractive") + "( Cmd_load \"" + filepath + "\" [] )"; } else { - return "" + commonPart(/* NonInteractive */1) + "( Cmd_load \"" + filepath + "\" [" + libraryPath$1 + "] )"; + return commonPart("NonInteractive") + "( Cmd_load \"" + filepath + "\" [" + libraryPath$1 + "] )"; } - case /* Compile */1 : + case "Compile" : if (Util$AgdaModeVscode.Version.gte(version, "2.5.0")) { - return "" + commonPart(/* NonInteractive */1) + "( Cmd_compile " + backend + " \"" + filepath + "\" [] )"; + return commonPart("NonInteractive") + "( Cmd_compile " + backend + " \"" + filepath + "\" [] )"; } else { - return "" + commonPart(/* NonInteractive */1) + "( Cmd_compile " + backend + " \"" + filepath + "\" [" + libraryPath$1 + "] )"; + return commonPart("NonInteractive") + "( Cmd_compile " + backend + " \"" + filepath + "\" [" + libraryPath$1 + "] )"; } - case /* ToggleDisplayOfImplicitArguments */2 : - return "" + commonPart(/* NonInteractive */1) + "( ToggleImplicitArgs )"; - case /* ToggleDisplayOfIrrelevantArguments */3 : - return "" + commonPart(/* NonInteractive */1) + "( ToggleIrrelevantArgs )"; - case /* ShowConstraints */4 : - return "" + commonPart(/* NonInteractive */1) + "( Cmd_constraints )"; + case "ToggleDisplayOfImplicitArguments" : + return commonPart("NonInteractive") + "( ToggleImplicitArgs )"; + case "ToggleDisplayOfIrrelevantArguments" : + return commonPart("NonInteractive") + "( ToggleIrrelevantArgs )"; + case "ShowConstraints" : + return commonPart("NonInteractive") + "( Cmd_constraints )"; } } else { - switch (request.TAG | 0) { - case /* SolveConstraints */0 : + switch (request.TAG) { + case "SolveConstraints" : var normalization = Command$AgdaModeVscode.Normalization.encode(request._0); var index = String(request._1.index); - return "" + commonPart(/* NonInteractive */1) + "( Cmd_solveOne " + normalization + " " + index + " noRange \"\" )"; - case /* SolveConstraintsGlobal */1 : + return commonPart("NonInteractive") + "( Cmd_solveOne " + normalization + " " + index + " noRange \"\" )"; + case "SolveConstraintsGlobal" : var normalization$1 = Command$AgdaModeVscode.Normalization.encode(request._0); - return "" + commonPart(/* NonInteractive */1) + "( Cmd_solveAll " + normalization$1 + " )"; - case /* ShowGoals */2 : + return commonPart("NonInteractive") + "( Cmd_solveAll " + normalization$1 + " )"; + case "ShowGoals" : var normalization$2 = Command$AgdaModeVscode.Normalization.encode(request._0); if (Util$AgdaModeVscode.Version.gte(version, "2.6.2")) { - return "" + commonPart(/* NonInteractive */1) + "( Cmd_metas " + normalization$2 + " )"; + return commonPart("NonInteractive") + "( Cmd_metas " + normalization$2 + " )"; } else { - return "" + commonPart(/* NonInteractive */1) + "( Cmd_metas )"; + return commonPart("NonInteractive") + "( Cmd_metas )"; } - case /* SearchAbout */3 : + case "SearchAbout" : var normalization$3 = Command$AgdaModeVscode.Normalization.encode(request._0); var content = Parser$AgdaModeVscode.userInputToSExpr(request._1); - return "" + commonPart(/* NonInteractive */1) + "( Cmd_search_about_toplevel " + normalization$3 + " \"" + content + "\" )"; - case /* Give */4 : + return commonPart("NonInteractive") + "( Cmd_search_about_toplevel " + normalization$3 + " \"" + content + "\" )"; + case "Give" : var goal = request._0; var index$1 = String(goal.index); var content$1 = Parser$AgdaModeVscode.userInputToSExpr(Goal$AgdaModeVscode.getContent(goal, $$document)); var range = buildRange(goal); if (Util$AgdaModeVscode.Version.gte(version, "2.5.3")) { - return "" + commonPart(/* NonInteractive */1) + "( Cmd_give WithoutForce " + index$1 + " " + range + " \"" + content$1 + "\" )"; + return commonPart("NonInteractive") + "( Cmd_give WithoutForce " + index$1 + " " + range + " \"" + content$1 + "\" )"; } else { - return "" + commonPart(/* NonInteractive */1) + "( Cmd_give " + index$1 + " " + range + " \"" + content$1 + "\" )"; + return commonPart("NonInteractive") + "( Cmd_give " + index$1 + " " + range + " \"" + content$1 + "\" )"; } - case /* Refine */5 : + case "Refine" : var goal$1 = request._0; var index$2 = String(goal$1.index); var content$2 = Parser$AgdaModeVscode.userInputToSExpr(Goal$AgdaModeVscode.getContent(goal$1, $$document)); var range$1 = buildRange(goal$1); - return "" + commonPart(/* NonInteractive */1) + "( Cmd_refine_or_intro False " + index$2 + " " + range$1 + " \"" + content$2 + "\" )"; - case /* ElaborateAndGive */6 : + return commonPart("NonInteractive") + "( Cmd_refine_or_intro False " + index$2 + " " + range$1 + " \"" + content$2 + "\" )"; + case "ElaborateAndGive" : var index$3 = String(request._2.index); var normalization$4 = Command$AgdaModeVscode.Normalization.encode(request._0); var content$3 = Parser$AgdaModeVscode.userInputToSExpr(request._1); - return "" + commonPart(/* NonInteractive */1) + "( Cmd_elaborate_give " + normalization$4 + " " + index$3 + " noRange \"" + content$3 + "\" )"; - case /* Auto */7 : + return commonPart("NonInteractive") + "( Cmd_elaborate_give " + normalization$4 + " " + index$3 + " noRange \"" + content$3 + "\" )"; + case "Auto" : var goal$2 = request._0; var index$4 = String(goal$2.index); var content$4 = Parser$AgdaModeVscode.userInputToSExpr(Goal$AgdaModeVscode.getContent(goal$2, $$document)); var range$2 = buildRange(goal$2); if (Util$AgdaModeVscode.Version.gte(version, "2.6.0.1")) { - return "" + commonPart(/* NonInteractive */1) + "( Cmd_autoOne " + index$4 + " " + range$2 + " \"" + content$4 + "\" )"; + return commonPart("NonInteractive") + "( Cmd_autoOne " + index$4 + " " + range$2 + " \"" + content$4 + "\" )"; } else { - return "" + commonPart(/* NonInteractive */1) + "( Cmd_auto " + index$4 + " " + range$2 + " \"" + content$4 + "\" )"; + return commonPart("NonInteractive") + "( Cmd_auto " + index$4 + " " + range$2 + " \"" + content$4 + "\" )"; } - case /* Case */8 : + case "Case" : var goal$3 = request._0; var index$5 = String(goal$3.index); var content$5 = Parser$AgdaModeVscode.userInputToSExpr(Goal$AgdaModeVscode.getContent(goal$3, $$document)); var range$3 = buildRange(goal$3); - return "" + commonPart(/* NonInteractive */1) + "( Cmd_make_case " + index$5 + " " + range$3 + " \"" + content$5 + "\" )"; - case /* HelperFunctionType */9 : + return commonPart("NonInteractive") + "( Cmd_make_case " + index$5 + " " + range$3 + " \"" + content$5 + "\" )"; + case "HelperFunctionType" : var index$6 = String(request._2.index); var normalization$5 = Command$AgdaModeVscode.Normalization.encode(request._0); var content$6 = Parser$AgdaModeVscode.userInputToSExpr(request._1); - return "" + commonPart(/* NonInteractive */1) + "( Cmd_helper_function " + normalization$5 + " " + index$6 + " noRange \"" + content$6 + "\" )"; - case /* InferType */10 : + return commonPart("NonInteractive") + "( Cmd_helper_function " + normalization$5 + " " + index$6 + " noRange \"" + content$6 + "\" )"; + case "InferType" : var index$7 = String(request._2.index); var normalization$6 = Command$AgdaModeVscode.Normalization.encode(request._0); var content$7 = Parser$AgdaModeVscode.userInputToSExpr(request._1); - return "" + commonPart(/* NonInteractive */1) + "( Cmd_infer " + normalization$6 + " " + index$7 + " noRange \"" + content$7 + "\" )"; - case /* InferTypeGlobal */11 : + return commonPart("NonInteractive") + "( Cmd_infer " + normalization$6 + " " + index$7 + " noRange \"" + content$7 + "\" )"; + case "InferTypeGlobal" : var normalization$7 = Command$AgdaModeVscode.Normalization.encode(request._0); var content$8 = Parser$AgdaModeVscode.userInputToSExpr(request._1); - return "" + commonPart(/* None */0) + "( Cmd_infer_toplevel " + normalization$7 + " \"" + content$8 + "\" )"; - case /* Context */12 : + return commonPart("None") + "( Cmd_infer_toplevel " + normalization$7 + " \"" + content$8 + "\" )"; + case "Context" : var index$8 = String(request._1.index); var normalization$8 = Command$AgdaModeVscode.Normalization.encode(request._0); - return "" + commonPart(/* NonInteractive */1) + "( Cmd_context " + normalization$8 + " " + index$8 + " noRange \"\" )"; - case /* GoalType */13 : + return commonPart("NonInteractive") + "( Cmd_context " + normalization$8 + " " + index$8 + " noRange \"\" )"; + case "GoalType" : var index$9 = String(request._1.index); var normalization$9 = Command$AgdaModeVscode.Normalization.encode(request._0); - return "" + commonPart(/* NonInteractive */1) + "( Cmd_goal_type " + normalization$9 + " " + index$9 + " noRange \"\" )"; - case /* GoalTypeAndContext */14 : + return commonPart("NonInteractive") + "( Cmd_goal_type " + normalization$9 + " " + index$9 + " noRange \"\" )"; + case "GoalTypeAndContext" : var index$10 = String(request._1.index); var normalization$10 = Command$AgdaModeVscode.Normalization.encode(request._0); - return "" + commonPart(/* NonInteractive */1) + "( Cmd_goal_type_context " + normalization$10 + " " + index$10 + " noRange \"\" )"; - case /* GoalTypeContextAndInferredType */15 : + return commonPart("NonInteractive") + "( Cmd_goal_type_context " + normalization$10 + " " + index$10 + " noRange \"\" )"; + case "GoalTypeContextAndInferredType" : var index$11 = String(request._2.index); var normalization$11 = Command$AgdaModeVscode.Normalization.encode(request._0); var content$9 = Parser$AgdaModeVscode.userInputToSExpr(request._1); - return "" + commonPart(/* NonInteractive */1) + "( Cmd_goal_type_context_infer " + normalization$11 + " " + index$11 + " noRange \"" + content$9 + "\" )"; - case /* GoalTypeContextAndCheckedType */16 : + return commonPart("NonInteractive") + "( Cmd_goal_type_context_infer " + normalization$11 + " " + index$11 + " noRange \"" + content$9 + "\" )"; + case "GoalTypeContextAndCheckedType" : var index$12 = String(request._2.index); var normalization$12 = Command$AgdaModeVscode.Normalization.encode(request._0); var content$10 = Parser$AgdaModeVscode.userInputToSExpr(request._1); - return "" + commonPart(/* NonInteractive */1) + "( Cmd_goal_type_context_check " + normalization$12 + " " + index$12 + " noRange \"" + content$10 + "\" )"; - case /* ModuleContents */17 : + return commonPart("NonInteractive") + "( Cmd_goal_type_context_check " + normalization$12 + " " + index$12 + " noRange \"" + content$10 + "\" )"; + case "ModuleContents" : var index$13 = String(request._2.index); var normalization$13 = Command$AgdaModeVscode.Normalization.encode(request._0); var content$11 = Parser$AgdaModeVscode.userInputToSExpr(request._1); - return "" + commonPart(/* NonInteractive */1) + "( Cmd_show_module_contents " + normalization$13 + " " + index$13 + " noRange \"" + content$11 + "\" )"; - case /* ModuleContentsGlobal */18 : + return commonPart("NonInteractive") + "( Cmd_show_module_contents " + normalization$13 + " " + index$13 + " noRange \"" + content$11 + "\" )"; + case "ModuleContentsGlobal" : var normalization$14 = Command$AgdaModeVscode.Normalization.encode(request._0); var content$12 = Parser$AgdaModeVscode.userInputToSExpr(request._1); - return "" + commonPart(/* None */0) + "( Cmd_show_module_contents_toplevel " + normalization$14 + " \"" + content$12 + "\" )"; - case /* ComputeNormalForm */19 : + return commonPart("None") + "( Cmd_show_module_contents_toplevel " + normalization$14 + " \"" + content$12 + "\" )"; + case "ComputeNormalForm" : var computeMode = request._0; var index$14 = String(request._2.index); - var ignoreAbstract = Pervasives.string_of_bool(Command$AgdaModeVscode.ComputeMode.ignoreAbstract(computeMode)); + var ignoreAbstract = PervasivesU.string_of_bool(Command$AgdaModeVscode.ComputeMode.ignoreAbstract(computeMode)); var computeMode$1 = Command$AgdaModeVscode.ComputeMode.encode(computeMode); var content$13 = Parser$AgdaModeVscode.userInputToSExpr(request._1); if (Util$AgdaModeVscode.Version.gte(version, "2.5.2")) { - return "" + commonPart(/* NonInteractive */1) + "( Cmd_compute " + computeMode$1 + " " + index$14 + " noRange \"" + content$13 + "\" )"; + return commonPart("NonInteractive") + "( Cmd_compute " + computeMode$1 + " " + index$14 + " noRange \"" + content$13 + "\" )"; } else { - return "" + commonPart(/* NonInteractive */1) + "( Cmd_compute " + ignoreAbstract + " " + index$14 + " noRange \"" + content$13 + "\" )"; + return commonPart("NonInteractive") + "( Cmd_compute " + ignoreAbstract + " " + index$14 + " noRange \"" + content$13 + "\" )"; } - case /* ComputeNormalFormGlobal */20 : + case "ComputeNormalFormGlobal" : var computeMode$2 = request._0; - var ignoreAbstract$1 = Pervasives.string_of_bool(Command$AgdaModeVscode.ComputeMode.ignoreAbstract(computeMode$2)); + var ignoreAbstract$1 = PervasivesU.string_of_bool(Command$AgdaModeVscode.ComputeMode.ignoreAbstract(computeMode$2)); var computeMode$3 = Command$AgdaModeVscode.ComputeMode.encode(computeMode$2); var content$14 = Parser$AgdaModeVscode.userInputToSExpr(request._1); if (Util$AgdaModeVscode.Version.gte(version, "2.5.2")) { - return "" + commonPart(/* NonInteractive */1) + "( Cmd_compute_toplevel " + computeMode$3 + " \"" + content$14 + "\" )"; + return commonPart("NonInteractive") + "( Cmd_compute_toplevel " + computeMode$3 + " \"" + content$14 + "\" )"; } else { - return "" + commonPart(/* NonInteractive */1) + "( Cmd_compute_toplevel " + ignoreAbstract$1 + " \"" + content$14 + "\" )"; + return commonPart("NonInteractive") + "( Cmd_compute_toplevel " + ignoreAbstract$1 + " \"" + content$14 + "\" )"; } - case /* WhyInScope */21 : + case "WhyInScope" : var index$15 = String(request._1.index); var content$15 = Parser$AgdaModeVscode.userInputToSExpr(request._0); - return "" + commonPart(/* NonInteractive */1) + "( Cmd_why_in_scope " + index$15 + " noRange \"" + content$15 + "\" )"; - case /* WhyInScopeGlobal */22 : + return commonPart("NonInteractive") + "( Cmd_why_in_scope " + index$15 + " noRange \"" + content$15 + "\" )"; + case "WhyInScopeGlobal" : var content$16 = Parser$AgdaModeVscode.userInputToSExpr(request._0); - return "" + commonPart(/* None */0) + "( Cmd_why_in_scope_toplevel \"" + content$16 + "\" )"; + return commonPart("None") + "( Cmd_why_in_scope_toplevel \"" + content$16 + "\" )"; } } diff --git a/lib/js/src/Response.bs.js b/lib/js/src/Response.bs.js index d046190e..01b65e8b 100644 --- a/lib/js/src/Response.bs.js +++ b/lib/js/src/Response.bs.js @@ -4,10 +4,10 @@ var Js_array = require("rescript/lib/js/js_array.js"); var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); -var Pervasives = require("rescript/lib/js/pervasives.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Belt_Result = require("rescript/lib/js/belt_Result.js"); var Caml_format = require("rescript/lib/js/caml_format.js"); +var PervasivesU = require("rescript/lib/js/pervasivesU.js"); var Util$AgdaModeVscode = require("./Util/Util.bs.js"); var Parser$AgdaModeVscode = require("./Parser/Parser.bs.js"); var Tokens$AgdaModeVscode = require("./Tokens.bs.js"); @@ -17,21 +17,22 @@ var decode = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "GiveNoParen" : return { - TAG: 1, - _0: /* GiveNoParen */1, + TAG: "TagOnly", + _0: "GiveNoParen", [Symbol.for("name")]: "TagOnly" }; case "GiveParen" : return { - TAG: 1, - _0: /* GiveParen */0, + TAG: "TagOnly", + _0: "GiveParen", [Symbol.for("name")]: "TagOnly" }; case "GiveString" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (s) { return { + TAG: "GiveString", _0: s, [Symbol.for("name")]: "GiveString" }; @@ -52,55 +53,55 @@ var GiveAction = { }; function toString(x) { - switch (x.TAG | 0) { - case /* Generic */0 : + switch (x.TAG) { + case "Generic" : return x._0; - case /* CompilationOk */1 : + case "CompilationOk" : return "CompilationOk " + x._0; - case /* CompilationOkLSP */2 : + case "CompilationOkLSP" : return "[LSP] CompilationOk"; - case /* Constraints */3 : + case "Constraints" : var string = x._0; if (string !== undefined) { return "Constraints " + string; } else { return "Constraints"; } - case /* AllGoalsWarnings */4 : + case "AllGoalsWarnings" : return "AllGoalsWarnings " + x._0; - case /* AllGoalsWarningsLSP */5 : + case "AllGoalsWarningsLSP" : return "[LSP] AllGoalsWarnings " + x._0; - case /* Time */6 : + case "Time" : return "Time " + x._0; - case /* Error */7 : + case "Error" : return "Error " + x._0; - case /* Intro */8 : + case "Intro" : return "Intro " + x._0; - case /* Auto */9 : + case "Auto" : return "Auto " + x._0; - case /* ModuleContents */10 : + case "ModuleContents" : return "ModuleContents " + x._0; - case /* SearchAbout */11 : + case "SearchAbout" : return "SearchAbout " + x._0; - case /* WhyInScope */12 : + case "WhyInScope" : return "WhyInScope " + x._0; - case /* NormalForm */13 : + case "NormalForm" : return "NormalForm " + x._0; - case /* GoalType */14 : + case "GoalType" : return "GoalType " + x._0; - case /* CurrentGoal */15 : + case "CurrentGoal" : return "CurrentGoal " + x._0; - case /* CurrentGoalLSP */16 : + case "CurrentGoalLSP" : return "[LSP] CurrentGoal"; - case /* InferredType */17 : + case "InferredType" : return "InferredType " + x._0; - case /* InferredTypeLSP */18 : + case "InferredTypeLSP" : return "InferredType "; - case /* Context */19 : + case "Context" : return "Context " + x._0; - case /* HelperFunction */20 : + case "HelperFunction" : return "HelperFunction " + x._0; - case /* Version */21 : + case "Version" : return "Version " + x._0; } @@ -111,7 +112,7 @@ function parse(xs) { if (match === undefined) { return ; } - if (match.TAG !== /* A */0) { + if (match.TAG !== "A") { return ; } var payload = Js_string.replaceByRe(/\\n|\\r\\n/g, "\n", match._0); @@ -119,118 +120,118 @@ function parse(xs) { if (match$1 === undefined) { return ; } - if (match$1.TAG !== /* A */0) { + if (match$1.TAG !== "A") { return ; } var title = match$1._0; switch (title) { case "*Agda Version*" : return { - TAG: 21, + TAG: "Version", _0: payload, [Symbol.for("name")]: "Version" }; case "*Auto*" : return { - TAG: 9, + TAG: "Auto", _0: payload, [Symbol.for("name")]: "Auto" }; case "*Compilation result*" : return { - TAG: 1, + TAG: "CompilationOk", _0: payload, [Symbol.for("name")]: "CompilationOk" }; case "*Constraints*" : if (payload === "nil") { return { - TAG: 3, + TAG: "Constraints", _0: undefined, [Symbol.for("name")]: "Constraints" }; } else { return { - TAG: 3, + TAG: "Constraints", _0: payload, [Symbol.for("name")]: "Constraints" }; } case "*Context*" : return { - TAG: 19, + TAG: "Context", _0: payload, [Symbol.for("name")]: "Context" }; case "*Current Goal*" : return { - TAG: 15, + TAG: "CurrentGoal", _0: payload, [Symbol.for("name")]: "CurrentGoal" }; case "*Error*" : return { - TAG: 7, + TAG: "Error", _0: payload, [Symbol.for("name")]: "Error" }; case "*Goal type etc.*" : return { - TAG: 14, + TAG: "GoalType", _0: payload, [Symbol.for("name")]: "GoalType" }; case "*Helper function*" : return { - TAG: 20, + TAG: "HelperFunction", _0: payload, [Symbol.for("name")]: "HelperFunction" }; case "*Inferred Type*" : return { - TAG: 17, + TAG: "InferredType", _0: payload, [Symbol.for("name")]: "InferredType" }; case "*Intro*" : return { - TAG: 8, + TAG: "Intro", _0: payload, [Symbol.for("name")]: "Intro" }; case "*Module contents*" : return { - TAG: 10, + TAG: "ModuleContents", _0: payload, [Symbol.for("name")]: "ModuleContents" }; case "*Normal Form*" : return { - TAG: 13, + TAG: "NormalForm", _0: payload, [Symbol.for("name")]: "NormalForm" }; case "*Scope Info*" : return { - TAG: 12, + TAG: "WhyInScope", _0: payload, [Symbol.for("name")]: "WhyInScope" }; case "*Search About*" : return { - TAG: 11, + TAG: "SearchAbout", _0: payload, [Symbol.for("name")]: "SearchAbout" }; case "*Time*" : return { - TAG: 6, + TAG: "Time", _0: payload, [Symbol.for("name")]: "Time" }; default: return { - TAG: 4, + TAG: "AllGoalsWarnings", _0: title, _1: payload, [Symbol.for("name")]: "AllGoalsWarnings" @@ -244,67 +245,67 @@ var DisplayInfo = { }; function toString$1(x) { - if (typeof x === "number") { + if (typeof x !== "object") { switch (x) { - case /* ClearRunningInfo */0 : + case "ClearRunningInfo" : return "ClearRunningInfo"; - case /* ClearHighlighting */1 : + case "ClearHighlighting" : return "ClearHighlighting"; - case /* DoneAborting */2 : + case "DoneAborting" : return "DoneAborting"; - case /* DoneExiting */3 : + case "DoneExiting" : return "DoneExiting"; - case /* CompleteHighlightingAndMakePromptReappear */4 : + case "CompleteHighlightingAndMakePromptReappear" : return "CompleteHighlightingAndMakePromptReappear"; } } else { - switch (x.TAG | 0) { - case /* HighlightingInfoDirect */0 : + switch (x.TAG) { + case "HighlightingInfoDirect" : return "HighlightingInfoDirect " + (( x._0 ? "Keep " : "Remove " ) + (" " + (String(x._1.length) + " annotations"))); - case /* HighlightingInfoIndirect */1 : + case "HighlightingInfoIndirect" : return "HighlightingInfoIndirect " + x._0; - case /* HighlightingInfoIndirectJSON */2 : + case "HighlightingInfoIndirectJSON" : return "HighlightingInfoIndirectJSON " + x._0; - case /* Status */3 : + case "Status" : return "Status: implicit arguments " + (( x._0 ? "displayed, " : "not displayed, " ) + ("module " + ( x._1 ? "type checked" : "not type checked" ))); - case /* JumpToError */4 : + case "JumpToError" : return "JumpToError " + (x._0 + (" " + String(x._1))); - case /* InteractionPoints */5 : + case "InteractionPoints" : return "InteractionPoints " + Util$AgdaModeVscode.Pretty.array(Belt_Array.map(x._0, (function (prim) { return String(prim); }))); - case /* GiveAction */6 : + case "GiveAction" : var string = x._1; var index = x._0; - if (typeof string === "number") { - if (string !== 0) { - return "GiveAction " + (String(index) + " NoParen"); - } else { + if (typeof string !== "object") { + if (string === "GiveParen") { return "GiveAction " + (String(index) + " Paren"); + } else { + return "GiveAction " + (String(index) + " NoParen"); } } else { return "GiveAction " + (String(index) + (" String " + string._0)); } - case /* MakeCase */7 : - if (x._0) { - return "MakeCase ExtendedLambda " + Util$AgdaModeVscode.Pretty.array(x._1); - } else { + case "MakeCase" : + if (x._0 === "Function") { return "MakeCase Function " + Util$AgdaModeVscode.Pretty.array(x._1); + } else { + return "MakeCase ExtendedLambda " + Util$AgdaModeVscode.Pretty.array(x._1); } - case /* SolveAll */8 : + case "SolveAll" : return "SolveAll " + Util$AgdaModeVscode.Pretty.array(Belt_Array.map(x._0, (function (param) { return String(param[0]) + (" " + param[1]); }))); - case /* DisplayInfo */9 : + case "DisplayInfo" : return "DisplayInfo " + toString(x._0); - case /* RunningInfo */10 : + case "RunningInfo" : return "RunningInfo " + (String(x._0) + (" " + x._1)); } @@ -312,11 +313,11 @@ function toString$1(x) { } function parse$1(tokens) { - if (tokens.TAG === /* A */0) { + if (tokens.TAG === "A") { return { - TAG: 1, + TAG: "Error", _0: { - TAG: 1, + TAG: "Response", _0: 0, _1: tokens, [Symbol.for("name")]: "Response" @@ -329,9 +330,9 @@ function parse$1(tokens) { var exit = 0; if (match === undefined) { return { - TAG: 1, + TAG: "Error", _0: { - TAG: 1, + TAG: "Response", _0: 14, _1: tokens, [Symbol.for("name")]: "Response" @@ -339,11 +340,11 @@ function parse$1(tokens) { [Symbol.for("name")]: "Error" }; } - if (match.TAG !== /* A */0) { + if (match.TAG !== "A") { return { - TAG: 1, + TAG: "Error", _0: { - TAG: 1, + TAG: "Response", _0: 14, _1: tokens, [Symbol.for("name")]: "Response" @@ -354,48 +355,49 @@ function parse$1(tokens) { switch (match._0) { case "agda2-abort-done" : return { - TAG: 0, - _0: /* DoneAborting */2, + TAG: "Ok", + _0: "DoneAborting", [Symbol.for("name")]: "Ok" }; case "agda2-exit-done" : return { - TAG: 0, - _0: /* DoneExiting */3, + TAG: "Ok", + _0: "DoneExiting", [Symbol.for("name")]: "Ok" }; case "agda2-give-action" : var match$1 = Belt_Array.get(xs, 1); - if (match$1 !== undefined && match$1.TAG === /* A */0) { - return Belt_Option.mapWithDefault(Belt_Option.flatMap(Pervasives.int_of_string_opt(match$1._0), (function (i) { + if (match$1 !== undefined && match$1.TAG === "A") { + return Belt_Option.mapWithDefault(Belt_Option.flatMap(PervasivesU.int_of_string_opt(match$1._0), (function (i) { var match = Belt_Array.get(xs, 2); if (match === undefined) { return ; } - if (match.TAG !== /* A */0) { + if (match.TAG !== "A") { return ; } var result = match._0; switch (result) { case "no-paren" : return { - TAG: 6, + TAG: "GiveAction", _0: i, - _1: /* GiveNoParen */1, + _1: "GiveNoParen", [Symbol.for("name")]: "GiveAction" }; case "paren" : return { - TAG: 6, + TAG: "GiveAction", _0: i, - _1: /* GiveParen */0, + _1: "GiveParen", [Symbol.for("name")]: "GiveAction" }; default: return { - TAG: 6, + TAG: "GiveAction", _0: i, _1: { + TAG: "GiveString", _0: result, [Symbol.for("name")]: "GiveString" }, @@ -403,9 +405,9 @@ function parse$1(tokens) { }; } })), { - TAG: 1, + TAG: "Error", _0: { - TAG: 1, + TAG: "Response", _0: 6, _1: tokens, [Symbol.for("name")]: "Response" @@ -413,16 +415,16 @@ function parse$1(tokens) { [Symbol.for("name")]: "Error" }, (function (x) { return { - TAG: 0, + TAG: "Ok", _0: x, [Symbol.for("name")]: "Ok" }; })); } else { return { - TAG: 1, + TAG: "Error", _0: { - TAG: 1, + TAG: "Response", _0: 7, _1: tokens, [Symbol.for("name")]: "Response" @@ -434,19 +436,19 @@ function parse$1(tokens) { var xs$1 = Belt_Array.get(xs, 1); if (xs$1 !== undefined) { return { - TAG: 0, + TAG: "Ok", _0: { - TAG: 5, - _0: Belt_Array.keepMap(Parser$AgdaModeVscode.SExpression.flatten(xs$1), Pervasives.int_of_string_opt), + TAG: "InteractionPoints", + _0: Belt_Array.keepMap(Parser$AgdaModeVscode.SExpression.flatten(xs$1), PervasivesU.int_of_string_opt), [Symbol.for("name")]: "InteractionPoints" }, [Symbol.for("name")]: "Ok" }; } else { return { - TAG: 1, + TAG: "Error", _0: { - TAG: 1, + TAG: "Response", _0: 5, _1: tokens, [Symbol.for("name")]: "Response" @@ -459,9 +461,9 @@ function parse$1(tokens) { var match$2 = Belt_Array.get(xs, 1); if (match$2 === undefined) { return { - TAG: 0, + TAG: "Ok", _0: { - TAG: 0, + TAG: "HighlightingInfoDirect", _0: true, _1: [], [Symbol.for("name")]: "HighlightingInfoDirect" @@ -469,11 +471,11 @@ function parse$1(tokens) { [Symbol.for("name")]: "Ok" }; } - if (match$2.TAG !== /* A */0) { + if (match$2.TAG !== "A") { return { - TAG: 0, + TAG: "Ok", _0: { - TAG: 0, + TAG: "HighlightingInfoDirect", _0: true, _1: [], [Symbol.for("name")]: "HighlightingInfoDirect" @@ -484,9 +486,9 @@ function parse$1(tokens) { switch (match$2._0) { case "nil" : return { - TAG: 0, + TAG: "Ok", _0: { - TAG: 0, + TAG: "HighlightingInfoDirect", _0: true, _1: annotations, [Symbol.for("name")]: "HighlightingInfoDirect" @@ -495,9 +497,9 @@ function parse$1(tokens) { }; case "remove" : return { - TAG: 0, + TAG: "Ok", _0: { - TAG: 0, + TAG: "HighlightingInfoDirect", _0: false, _1: annotations, [Symbol.for("name")]: "HighlightingInfoDirect" @@ -506,9 +508,9 @@ function parse$1(tokens) { }; default: return { - TAG: 0, + TAG: "Ok", _0: { - TAG: 0, + TAG: "HighlightingInfoDirect", _0: true, _1: [], [Symbol.for("name")]: "HighlightingInfoDirect" @@ -518,17 +520,17 @@ function parse$1(tokens) { } case "agda2-highlight-clear" : return { - TAG: 0, - _0: /* ClearHighlighting */1, + TAG: "Ok", + _0: "ClearHighlighting", [Symbol.for("name")]: "Ok" }; case "agda2-highlight-load-and-delete-action" : var match$3 = Belt_Array.get(xs, 1); - if (match$3 !== undefined && match$3.TAG === /* A */0) { + if (match$3 !== undefined && match$3.TAG === "A") { return { - TAG: 0, + TAG: "Ok", _0: { - TAG: 1, + TAG: "HighlightingInfoIndirect", _0: match$3._0, [Symbol.for("name")]: "HighlightingInfoIndirect" }, @@ -536,9 +538,9 @@ function parse$1(tokens) { }; } else { return { - TAG: 1, + TAG: "Error", _0: { - TAG: 1, + TAG: "Response", _0: 2, _1: tokens, [Symbol.for("name")]: "Response" @@ -554,10 +556,10 @@ function parse$1(tokens) { var xs$2 = Belt_Array.get(xs, 1); if (xs$2 !== undefined) { return { - TAG: 0, + TAG: "Ok", _0: { - TAG: 7, - _0: /* Function */0, + TAG: "MakeCase", + _0: "Function", _1: Parser$AgdaModeVscode.SExpression.flatten(xs$2), [Symbol.for("name")]: "MakeCase" }, @@ -565,9 +567,9 @@ function parse$1(tokens) { }; } else { return { - TAG: 1, + TAG: "Error", _0: { - TAG: 1, + TAG: "Response", _0: 8, _1: tokens, [Symbol.for("name")]: "Response" @@ -579,10 +581,10 @@ function parse$1(tokens) { var xs$3 = Belt_Array.get(xs, 1); if (xs$3 !== undefined) { return { - TAG: 0, + TAG: "Ok", _0: { - TAG: 7, - _0: /* ExtendedLambda */1, + TAG: "MakeCase", + _0: "ExtendedLambda", _1: Parser$AgdaModeVscode.SExpression.flatten(xs$3), [Symbol.for("name")]: "MakeCase" }, @@ -590,9 +592,9 @@ function parse$1(tokens) { }; } else { return { - TAG: 1, + TAG: "Error", _0: { - TAG: 1, + TAG: "Response", _0: 9, _1: tokens, [Symbol.for("name")]: "Response" @@ -604,9 +606,9 @@ function parse$1(tokens) { var match$4 = Belt_Array.get(xs, 1); if (match$4 === undefined) { return { - TAG: 1, + TAG: "Error", _0: { - TAG: 1, + TAG: "Response", _0: 4, _1: tokens, [Symbol.for("name")]: "Response" @@ -614,11 +616,11 @@ function parse$1(tokens) { [Symbol.for("name")]: "Error" }; } - if (match$4.TAG === /* A */0) { + if (match$4.TAG === "A") { return { - TAG: 1, + TAG: "Error", _0: { - TAG: 1, + TAG: "Response", _0: 4, _1: tokens, [Symbol.for("name")]: "Response" @@ -629,9 +631,9 @@ function parse$1(tokens) { var match$5 = match$4._0; if (match$5.length !== 3) { return { - TAG: 1, + TAG: "Error", _0: { - TAG: 1, + TAG: "Response", _0: 4, _1: tokens, [Symbol.for("name")]: "Response" @@ -640,11 +642,11 @@ function parse$1(tokens) { }; } var filepath = match$5[0]; - if (filepath.TAG !== /* A */0) { + if (filepath.TAG !== "A") { return { - TAG: 1, + TAG: "Error", _0: { - TAG: 1, + TAG: "Response", _0: 4, _1: tokens, [Symbol.for("name")]: "Response" @@ -654,18 +656,18 @@ function parse$1(tokens) { } var filepath$1 = filepath._0; var index$p = match$5[2]; - if (index$p.TAG === /* A */0) { - return Belt_Option.mapWithDefault(Belt_Option.flatMap(Pervasives.int_of_string_opt(index$p._0), (function (index) { + if (index$p.TAG === "A") { + return Belt_Option.mapWithDefault(Belt_Option.flatMap(PervasivesU.int_of_string_opt(index$p._0), (function (index) { return { - TAG: 4, + TAG: "JumpToError", _0: filepath$1, _1: index, [Symbol.for("name")]: "JumpToError" }; })), { - TAG: 1, + TAG: "Error", _0: { - TAG: 1, + TAG: "Response", _0: 3, _1: tokens, [Symbol.for("name")]: "Response" @@ -673,16 +675,16 @@ function parse$1(tokens) { [Symbol.for("name")]: "Error" }, (function (x) { return { - TAG: 0, + TAG: "Ok", _0: x, [Symbol.for("name")]: "Ok" }; })); } else { return { - TAG: 1, + TAG: "Error", _0: { - TAG: 1, + TAG: "Response", _0: 4, _1: tokens, [Symbol.for("name")]: "Response" @@ -694,9 +696,9 @@ function parse$1(tokens) { var xs$4 = Belt_Array.get(xs, 1); if (xs$4 === undefined) { return { - TAG: 1, + TAG: "Error", _0: { - TAG: 1, + TAG: "Response", _0: 10, _1: tokens, [Symbol.for("name")]: "Response" @@ -712,7 +714,7 @@ function parse$1(tokens) { contents: 0 }; var solutions = Belt_Array.keepMap(tokens$1, (function (token) { - var solution = isEven(i.contents) ? Belt_Option.flatMap(Pervasives.int_of_string_opt(token), (function (index) { + var solution = isEven(i.contents) ? Belt_Option.flatMap(PervasivesU.int_of_string_opt(token), (function (index) { return Belt_Option.map(Belt_Array.get(tokens$1, i.contents + 1 | 0), (function (s) { return [ index, @@ -724,9 +726,9 @@ function parse$1(tokens) { return solution; })); return { - TAG: 0, + TAG: "Ok", _0: { - TAG: 8, + TAG: "SolveAll", _0: solutions, [Symbol.for("name")]: "SolveAll" }, @@ -736,9 +738,9 @@ function parse$1(tokens) { var match$6 = Belt_Array.get(xs, 1); if (match$6 === undefined) { return { - TAG: 0, + TAG: "Ok", _0: { - TAG: 3, + TAG: "Status", _0: false, _1: false, [Symbol.for("name")]: "Status" @@ -746,11 +748,11 @@ function parse$1(tokens) { [Symbol.for("name")]: "Ok" }; } - if (match$6.TAG !== /* A */0) { + if (match$6.TAG !== "A") { return { - TAG: 0, + TAG: "Ok", _0: { - TAG: 3, + TAG: "Status", _0: false, _1: false, [Symbol.for("name")]: "Status" @@ -760,9 +762,9 @@ function parse$1(tokens) { } var pulp = Js_string.split(",", match$6._0); return { - TAG: 0, + TAG: "Ok", _0: { - TAG: 3, + TAG: "Status", _0: Js_array.includes("ShowImplicit", pulp), _1: Js_array.includes("Checked", pulp), [Symbol.for("name")]: "Status" @@ -771,11 +773,11 @@ function parse$1(tokens) { }; case "agda2-verbose" : var match$7 = Belt_Array.get(xs, 1); - if (match$7 !== undefined && match$7.TAG === /* A */0) { + if (match$7 !== undefined && match$7.TAG === "A") { return { - TAG: 0, + TAG: "Ok", _0: { - TAG: 10, + TAG: "RunningInfo", _0: 2, _1: match$7._0, [Symbol.for("name")]: "RunningInfo" @@ -784,9 +786,9 @@ function parse$1(tokens) { }; } else { return { - TAG: 1, + TAG: "Error", _0: { - TAG: 1, + TAG: "Response", _0: 13, _1: tokens, [Symbol.for("name")]: "Response" @@ -796,9 +798,9 @@ function parse$1(tokens) { } default: return { - TAG: 1, + TAG: "Error", _0: { - TAG: 1, + TAG: "Response", _0: 14, _1: tokens, [Symbol.for("name")]: "Response" @@ -809,36 +811,36 @@ function parse$1(tokens) { if (exit === 1) { var match$8 = Belt_Array.get(xs, 1); var exit$1 = 0; - if (match$8 !== undefined && match$8.TAG === /* A */0) { + if (match$8 !== undefined && match$8.TAG === "A") { if (match$8._0 === "*Type-checking*") { var match$9 = Belt_Array.get(xs, 3); if (match$9 === undefined) { return { - TAG: 0, - _0: /* ClearRunningInfo */0, + TAG: "Ok", + _0: "ClearRunningInfo", [Symbol.for("name")]: "Ok" }; } - if (match$9.TAG !== /* A */0) { + if (match$9.TAG !== "A") { return { - TAG: 0, - _0: /* ClearRunningInfo */0, + TAG: "Ok", + _0: "ClearRunningInfo", [Symbol.for("name")]: "Ok" }; } if (match$9._0 !== "t") { return { - TAG: 0, - _0: /* ClearRunningInfo */0, + TAG: "Ok", + _0: "ClearRunningInfo", [Symbol.for("name")]: "Ok" }; } var match$10 = Belt_Array.get(xs, 2); - if (match$10 !== undefined && match$10.TAG === /* A */0) { + if (match$10 !== undefined && match$10.TAG === "A") { return { - TAG: 0, + TAG: "Ok", _0: { - TAG: 10, + TAG: "RunningInfo", _0: 1, _1: match$10._0, [Symbol.for("name")]: "RunningInfo" @@ -847,9 +849,9 @@ function parse$1(tokens) { }; } else { return { - TAG: 1, + TAG: "Error", _0: { - TAG: 1, + TAG: "Response", _0: 11, _1: tokens, [Symbol.for("name")]: "Response" @@ -866,9 +868,9 @@ function parse$1(tokens) { var info = parse(Js_array.sliceFrom(1, xs)); if (info !== undefined) { return { - TAG: 0, + TAG: "Ok", _0: { - TAG: 9, + TAG: "DisplayInfo", _0: info, [Symbol.for("name")]: "DisplayInfo" }, @@ -876,9 +878,9 @@ function parse$1(tokens) { }; } else { return { - TAG: 1, + TAG: "Error", _0: { - TAG: 1, + TAG: "Response", _0: 12, _1: tokens, [Symbol.for("name")]: "Response" @@ -893,7 +895,7 @@ function parse$1(tokens) { } function toString$2(x) { - if (x.TAG === /* NonLast */0) { + if (x.TAG === "NonLast") { return "NonLast " + toString$1(x._0); } else { return "Last(" + (String(x._0) + (") " + toString$1(x._1))); @@ -901,26 +903,26 @@ function toString$2(x) { } function parse$2(tokens) { - if (tokens.TAG !== /* A */0) { + if (tokens.TAG !== "A") { var match = tokens._0; if (match.length === 3) { var match$1 = match[0]; - if (match$1.TAG !== /* A */0) { + if (match$1.TAG !== "A") { var match$2 = match$1._0; if (match$2.length === 3) { var match$3 = match$2[0]; - if (match$3.TAG === /* A */0 && match$3._0 === "last") { + if (match$3.TAG === "A" && match$3._0 === "last") { var match$4 = match$2[1]; - if (match$4.TAG === /* A */0 && match$4._0 === ".") { + if (match$4.TAG === "A" && match$4._0 === ".") { var priority = match$2[2]; - if (priority.TAG === /* A */0) { + if (priority.TAG === "A") { var priority$1 = priority._0; var match$5 = match[1]; - if (match$5.TAG === /* A */0 && match$5._0 === ".") { + if (match$5.TAG === "A" && match$5._0 === ".") { var xs = match[2]; return Belt_Result.map(parse$1(xs), (function (response) { return { - TAG: 1, + TAG: "Last", _0: Caml_format.int_of_string(priority$1), _1: response, [Symbol.for("name")]: "Last" @@ -943,7 +945,7 @@ function parse$2(tokens) { } return Belt_Result.map(parse$1(tokens), (function (response) { return { - TAG: 0, + TAG: "NonLast", _0: response, [Symbol.for("name")]: "NonLast" }; diff --git a/lib/js/src/State.bs.js b/lib/js/src/State.bs.js index 05b73857..c3801bcd 100644 --- a/lib/js/src/State.bs.js +++ b/lib/js/src/State.bs.js @@ -1,8 +1,6 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Curry = require("rescript/lib/js/curry.js"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var IM$AgdaModeVscode = require("./InputMethod/IM.bs.js"); var Chan$AgdaModeVscode = require("./Util/Chan.bs.js"); @@ -15,56 +13,54 @@ var State__View$AgdaModeVscode = require("./State/State__View.bs.js"); var Highlighting$AgdaModeVscode = require("./Highlighting.bs.js"); function onDownload(state, $$event) { - if (typeof $$event === "number") { - if ($$event !== 0) { - State__View$AgdaModeVscode.Panel.displayStatus(state, "Downloaded"); - } else { + if (typeof $$event !== "object") { + if ($$event === "Start") { State__View$AgdaModeVscode.Panel.displayStatus(state, "Start downloading"); + return ; } + State__View$AgdaModeVscode.Panel.displayStatus(state, "Downloaded"); + return ; + } else { + var total = $$event._1; + var accum = $$event._0; + var message = total > 10485760 ? "Downloading ( " + String(accum / 1048576 | 0) + " MB / " + String(total / 1048576 | 0) + " MB )" : "Downloading ( " + String(accum / 1024 | 0) + " KB / " + String(total / 1024 | 0) + " MB )"; + State__View$AgdaModeVscode.Panel.displayStatus(state, message); return ; } - var total = $$event._1; - var accum = $$event._0; - var message = total > 10485760 ? "Downloading ( " + String(accum / 1048576 | 0) + " MB / " + String(total / 1048576 | 0) + " MB )" : "Downloading ( " + String(accum / 1024 | 0) + " KB / " + String(total / 1024 | 0) + " MB )"; - State__View$AgdaModeVscode.Panel.displayStatus(state, message); } function sendRequest(state, handleResponse, request) { return State__Type$AgdaModeVscode.RequestQueue.push(state.agdaRequestQueue, (function (request) { - var onResponse = function (result) { - if (result.TAG === /* Ok */0) { - return $$Promise.flatMap(Curry._1(handleResponse, result._0), (function (result) { - if (result.TAG === /* Ok */0) { - return $$Promise.resolved(undefined); - } else { - return State__View$AgdaModeVscode.Panel.displayConnectionError(state, result._0); - } - })); + var onResponse = async function (result) { + if (result.TAG !== "Ok") { + return await State__View$AgdaModeVscode.Panel.displayConnectionError(state, result._0); + } + var error = await handleResponse(result._0); + if (error.TAG === "Ok") { + return ; } else { - return State__View$AgdaModeVscode.Panel.displayConnectionError(state, result._0); + return await State__View$AgdaModeVscode.Panel.displayConnectionError(state, error._0); } }; - return $$Promise.flatMap(Connection$AgdaModeVscode.sendRequest(state.globalStoragePath, (function (param) { - return onDownload(state, param); - }), Config$AgdaModeVscode.Connection.getUseAgdaLanguageServer(undefined), state.document, request, onResponse), (function (result) { - if (result.TAG === /* Ok */0) { - return $$Promise.map(State__View$AgdaModeVscode.Panel.displayConnectionStatus(state, result._0), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } - var error = result._0; - return $$Promise.map(State__View$AgdaModeVscode.Panel.displayConnectionError(state, error), (function (param) { - return { - TAG: 1, - _0: error, - [Symbol.for("name")]: "Error" - }; - })); - })); + return Connection$AgdaModeVscode.sendRequest(state.globalStoragePath, (function (extra) { + return onDownload(state, extra); + }), Config$AgdaModeVscode.Connection.getUseAgdaLanguageServer(), state.document, request, onResponse).then(async function (result) { + if (result.TAG === "Ok") { + await State__View$AgdaModeVscode.Panel.displayConnectionStatus(state, result._0); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + var error = result._0; + await State__View$AgdaModeVscode.Panel.displayConnectionError(state, error); + return { + TAG: "Error", + _0: error, + [Symbol.for("name")]: "Error" + }; + }); }), request); } @@ -78,24 +74,24 @@ function destroy(state, alsoRemoveFromRegistry) { Belt_Array.forEach(state.subscriptions, (function (prim) { return prim.dispose(); })); - return Connection$AgdaModeVscode.stop(undefined); + return Connection$AgdaModeVscode.stop(); } function make(channels, globalStoragePath, extensionPath, editor) { return { editor: editor, document: editor.document, - panelCache: State__Type$AgdaModeVscode.ViewCache.make(undefined), + panelCache: State__Type$AgdaModeVscode.ViewCache.make(), runningInfoLog: [], goals: [], - tokens: Tokens$AgdaModeVscode.make(undefined), - highlighting: Highlighting$AgdaModeVscode.make(undefined), + tokens: Tokens$AgdaModeVscode.make(), + highlighting: Highlighting$AgdaModeVscode.make(), cursor: undefined, editorIM: IM$AgdaModeVscode.make(channels.inputMethod), promptIM: IM$AgdaModeVscode.make(channels.inputMethod), subscriptions: [], - onRemoveFromRegistry: Chan$AgdaModeVscode.make(undefined), - agdaRequestQueue: State__Type$AgdaModeVscode.RequestQueue.make(undefined), + onRemoveFromRegistry: Chan$AgdaModeVscode.make(), + agdaRequestQueue: State__Type$AgdaModeVscode.RequestQueue.make(), globalStoragePath: globalStoragePath, extensionPath: extensionPath, channels: channels @@ -112,4 +108,4 @@ exports.onDownload = onDownload; exports.sendRequest = sendRequest; exports.destroy = destroy; exports.make = make; -/* Promise Not a pure module */ +/* IM-AgdaModeVscode Not a pure module */ diff --git a/lib/js/src/State/State__Command.bs.js b/lib/js/src/State/State__Command.bs.js index 6700cd0a..b3e5b36a 100644 --- a/lib/js/src/State/State__Command.bs.js +++ b/lib/js/src/State/State__Command.bs.js @@ -1,18 +1,17 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Path = require("path"); -var Curry = require("rescript/lib/js/curry.js"); var VSCode = require("rescript-vscode/lib/js/src/VSCode.bs.js"); var Vscode = require("vscode"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Js_array = require("rescript/lib/js/js_array.js"); var Js_string = require("rescript/lib/js/js_string.js"); +var Nodepath = require("node:path"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var IM$AgdaModeVscode = require("../InputMethod/IM.bs.js"); var Goal$AgdaModeVscode = require("../Goal.bs.js"); var Item$AgdaModeVscode = require("../View/Component/Item.bs.js"); +var Util$AgdaModeVscode = require("../Util/Util.bs.js"); var State$AgdaModeVscode = require("../State.bs.js"); var Config$AgdaModeVscode = require("../Config.bs.js"); var Editor$AgdaModeVscode = require("../Editor.bs.js"); @@ -27,1125 +26,1011 @@ var State__Response$AgdaModeVscode = require("./State__Response.bs.js"); var Connection__Error$AgdaModeVscode = require("../Connection/Connection__Error.bs.js"); var State__InputMethod$AgdaModeVscode = require("./State__InputMethod.bs.js"); -function dispatchCommand(state, _command) { - while(true) { - var command = _command; - var dispatchCommand$1 = function (param) { - return dispatchCommand(state, param); - }; - var sendAgdaRequest = function (param) { - return State$AgdaModeVscode.sendRequest(state, (function (param) { - return State__Response$AgdaModeVscode.handle(state, dispatchCommand$1, param); - }), param); - }; - var header = { - TAG: 0, - _0: Command$AgdaModeVscode.toString(command), - [Symbol.for("name")]: "Plain" - }; - if (typeof command === "number") { - switch (command) { - case /* Load */0 : - return $$Promise.flatMap($$Promise.flatMap($$Promise.flatMap(State__View$AgdaModeVscode.DebugBuffer.restore(state), (function (param) { - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 0, - _0: "Loading ...", - [Symbol.for("name")]: "Plain" - }, []); - })), (function (param) { - return state.document.save(); - })), (function (param) { - var options = VSCode.TextDocumentShowOptions.make(undefined, false, undefined, undefined, undefined); - return $$Promise.flatMap(Vscode.window.showTextDocument(state.document, options), (function (param) { - return sendAgdaRequest(/* Load */0); - })); - })); - case /* Quit */1 : - return $$Promise.resolved({ - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }); - case /* Restart */2 : - state.runningInfoLog = []; - _command = /* Load */0; - continue ; - case /* Refresh */3 : - Highlighting$AgdaModeVscode.redecorate(state.highlighting, state.editor); - State__View$AgdaModeVscode.Panel.restore(state); - State__Goal$AgdaModeVscode.redecorate(state); - return $$Promise.map(State__View$AgdaModeVscode.DebugBuffer.restore(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - case /* Compile */4 : - return sendAgdaRequest(/* Compile */1); - case /* ToggleDisplayOfImplicitArguments */5 : - return sendAgdaRequest(/* ToggleDisplayOfImplicitArguments */2); - case /* ToggleDisplayOfIrrelevantArguments */6 : - return sendAgdaRequest(/* ToggleDisplayOfIrrelevantArguments */3); - case /* ShowConstraints */7 : - return sendAgdaRequest(/* ShowConstraints */4); - case /* NextGoal */8 : - return $$Promise.map(State__Goal$AgdaModeVscode.next(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - case /* PreviousGoal */9 : - return $$Promise.map(State__Goal$AgdaModeVscode.previous(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - case /* Give */10 : - var match = State__Goal$AgdaModeVscode.pointed(state); - if (match === undefined) { - return $$Promise.map(State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } +async function dispatchCommand(state, command) { + var dispatchCommand$1 = function (extra) { + return dispatchCommand(state, extra); + }; + var sendAgdaRequest = function (extra) { + return State$AgdaModeVscode.sendRequest(state, (function (extra) { + return State__Response$AgdaModeVscode.handle(state, dispatchCommand$1, extra); + }), extra); + }; + var header = { + TAG: "Plain", + _0: Command$AgdaModeVscode.toString(command), + [Symbol.for("name")]: "Plain" + }; + if (typeof command !== "object") { + switch (command) { + case "Load" : + await State__View$AgdaModeVscode.DebugBuffer.restore(state); + await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Plain", + _0: "Loading ...", + [Symbol.for("name")]: "Plain" + }, []); + await state.document.save(); + var options = VSCode.TextDocumentShowOptions.make(undefined, false, undefined, undefined, undefined); + await Vscode.window.showTextDocument(state.document, options); + return await sendAgdaRequest("Load"); + case "Quit" : + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "Restart" : + state.runningInfoLog = []; + return await dispatchCommand(state, "Load"); + case "Refresh" : + Highlighting$AgdaModeVscode.redecorate(state.highlighting, state.editor); + State__View$AgdaModeVscode.Panel.restore(state); + State__Goal$AgdaModeVscode.redecorate(state); + await State__View$AgdaModeVscode.DebugBuffer.restore(state); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "Compile" : + return await sendAgdaRequest("Compile"); + case "ToggleDisplayOfImplicitArguments" : + return await sendAgdaRequest("ToggleDisplayOfImplicitArguments"); + case "ToggleDisplayOfIrrelevantArguments" : + return await sendAgdaRequest("ToggleDisplayOfIrrelevantArguments"); + case "ShowConstraints" : + return await sendAgdaRequest("ShowConstraints"); + case "NextGoal" : + State__Goal$AgdaModeVscode.next(state); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "PreviousGoal" : + State__Goal$AgdaModeVscode.previous(state); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "Give" : + var match = State__Goal$AgdaModeVscode.pointed(state); + if (match !== undefined) { var goal = match[0]; - if (match[1] === "") { - return $$Promise.map(State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: "expression to give:", - value: undefined - }, (function(goal){ - return function (expr) { - if (expr === "") { - return sendAgdaRequest({ - TAG: 4, - _0: goal, - [Symbol.for("name")]: "Give" - }); - } else { - return $$Promise.flatMap(State__Goal$AgdaModeVscode.modify(state, goal, (function (param) { - return expr; - })), (function (param) { - return sendAgdaRequest({ - TAG: 4, - _0: goal, - [Symbol.for("name")]: "Give" - }); - })); - } - } - }(goal))), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } else { - return sendAgdaRequest({ - TAG: 4, + if (match[1] !== "") { + return await sendAgdaRequest({ + TAG: "Give", _0: goal, [Symbol.for("name")]: "Give" }); } - case /* Refine */11 : - var match$1 = State__Goal$AgdaModeVscode.pointed(state); - if (match$1 !== undefined) { - return sendAgdaRequest({ - TAG: 5, - _0: match$1[0], - [Symbol.for("name")]: "Refine" - }); - } else { - return $$Promise.map(State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } - case /* Auto */12 : - var match$2 = State__Goal$AgdaModeVscode.pointed(state); - if (match$2 !== undefined) { - return sendAgdaRequest({ - TAG: 7, - _0: match$2[0], - [Symbol.for("name")]: "Auto" - }); - } else { - return $$Promise.map(State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } - case /* Case */13 : - var match$3 = State__Goal$AgdaModeVscode.pointed(state); - if (match$3 === undefined) { - return $$Promise.map(State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } + await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: "expression to give:", + value: undefined + }, (async function (expr) { + if (expr === "") { + return await sendAgdaRequest({ + TAG: "Give", + _0: goal, + [Symbol.for("name")]: "Give" + }); + } else { + await State__Goal$AgdaModeVscode.modify(state, goal, (function (param) { + return expr; + })); + return await sendAgdaRequest({ + TAG: "Give", + _0: goal, + [Symbol.for("name")]: "Give" + }); + } + })); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "Refine" : + var match$1 = State__Goal$AgdaModeVscode.pointed(state); + if (match$1 !== undefined) { + return await sendAgdaRequest({ + TAG: "Refine", + _0: match$1[0], + [Symbol.for("name")]: "Refine" + }); + } else { + await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + case "Auto" : + var match$2 = State__Goal$AgdaModeVscode.pointed(state); + if (match$2 !== undefined) { + return await sendAgdaRequest({ + TAG: "Auto", + _0: match$2[0], + [Symbol.for("name")]: "Auto" + }); + } else { + await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + case "Case" : + var match$3 = State__Goal$AgdaModeVscode.pointed(state); + if (match$3 !== undefined) { var goal$1 = match$3[0]; - if (match$3[1] === "") { - return $$Promise.map(State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: "Please specify which variable you wish to split", - placeholder: "variable to case split:", - value: undefined - }, (function(goal$1){ - return function (expr) { - if (expr === "") { - return sendAgdaRequest({ - TAG: 8, - _0: goal$1, - [Symbol.for("name")]: "Case" - }); - } else { - return $$Promise.flatMap(State__Goal$AgdaModeVscode.modify(state, goal$1, (function (param) { - return expr; - })), (function (param) { - return sendAgdaRequest({ - TAG: 8, - _0: goal$1, - [Symbol.for("name")]: "Case" - }); - })); - } - } - }(goal$1))), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } else { - return sendAgdaRequest({ - TAG: 8, + if (match$3[1] !== "") { + return await sendAgdaRequest({ + TAG: "Case", _0: goal$1, [Symbol.for("name")]: "Case" }); } - case /* WhyInScope */14 : - var placeholder = "name:"; - var match$4 = State__Goal$AgdaModeVscode.pointed(state); - if (match$4 === undefined) { - return $$Promise.map(State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: placeholder, - value: undefined - }, (function (expr) { - return sendAgdaRequest({ - TAG: 22, - _0: expr, - [Symbol.for("name")]: "WhyInScopeGlobal" - }); - })), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } + await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: "Please specify which variable you wish to split", + placeholder: "variable to case split:", + value: undefined + }, (async function (expr) { + if (expr === "") { + return await sendAgdaRequest({ + TAG: "Case", + _0: goal$1, + [Symbol.for("name")]: "Case" + }); + } else { + await State__Goal$AgdaModeVscode.modify(state, goal$1, (function (param) { + return expr; + })); + return await sendAgdaRequest({ + TAG: "Case", + _0: goal$1, + [Symbol.for("name")]: "Case" + }); + } + })); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "WhyInScope" : + var placeholder = "name:"; + var match$4 = State__Goal$AgdaModeVscode.pointed(state); + if (match$4 !== undefined) { var expr = match$4[1]; var goal$2 = match$4[0]; - if (expr === "") { - return $$Promise.map(State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: placeholder, - value: undefined - }, (function(goal$2){ - return function (expr) { - return sendAgdaRequest({ - TAG: 21, - _0: expr, - _1: goal$2, - [Symbol.for("name")]: "WhyInScope" - }); - } - }(goal$2))), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } else { - return sendAgdaRequest({ - TAG: 21, + if (expr !== "") { + return await sendAgdaRequest({ + TAG: "WhyInScope", _0: expr, _1: goal$2, [Symbol.for("name")]: "WhyInScope" }); } - case /* SwitchAgdaVersion */15 : - var oldAgdaVersion = Config$AgdaModeVscode.Connection.getAgdaVersion(undefined); - return $$Promise.map(State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: undefined, - value: oldAgdaVersion - }, (function (expr) { - var oldAgdaPath = Config$AgdaModeVscode.Connection.getAgdaPath(undefined); - var newAgdaVersion = expr.trim(); - return $$Promise.flatMap($$Promise.flatMap($$Promise.flatMap($$Promise.flatMap($$Promise.flatMap(Config$AgdaModeVscode.Connection.setAgdaPath(""), (function (param) { - return Config$AgdaModeVscode.Connection.setAgdaVersion(newAgdaVersion); - })), (function (param) { - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 0, - _0: "Switching to '" + newAgdaVersion + "'", - [Symbol.for("name")]: "Plain" - }, []); - })), Connection$AgdaModeVscode.stop), (function (param) { - return Connection$AgdaModeVscode.start(state.globalStoragePath, false, (function (param) { - return State$AgdaModeVscode.onDownload(state, param); - })); - })), (function (result) { - if (result.TAG === /* Ok */0) { - var match = result._0; - if (match.TAG !== /* Emacs */0) { - return $$Promise.map(State__View$AgdaModeVscode.Panel.display(state, { - TAG: 1, - _0: "Panic, Switched to LSP server '" + match._0 + "'", - [Symbol.for("name")]: "Success" - }, [Item$AgdaModeVscode.plainText("Should have switched to an Agda executable, please file an issue")]), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } - var path = match._1; - var version = match._0; - return $$Promise.map($$Promise.flatMap(State__View$AgdaModeVscode.Panel.displayStatus(state, "Emacs v" + version), (function (param) { - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 1, - _0: "Switched to version '" + version + "'", - [Symbol.for("name")]: "Success" - }, [Item$AgdaModeVscode.plainText("Found '" + newAgdaVersion + "' at: " + path)]); - })), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } - var match$1 = Connection__Error$AgdaModeVscode.toString(result._0); - var header = { - TAG: 3, - _0: "Cannot switch Agda version '" + newAgdaVersion + "' : " + match$1[0], - [Symbol.for("name")]: "Error" - }; - var body = [Item$AgdaModeVscode.plainText(match$1[1] + "\n\nSwitching back to " + oldAgdaPath)]; - return $$Promise.map($$Promise.flatMap(Config$AgdaModeVscode.Connection.setAgdaPath(oldAgdaPath), (function (param) { - return State__View$AgdaModeVscode.Panel.display(state, header, body); - })), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - })); - })), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: placeholder, + value: undefined + }, (function (expr) { + return sendAgdaRequest({ + TAG: "WhyInScope", + _0: expr, + _1: goal$2, + [Symbol.for("name")]: "WhyInScope" + }); + })); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: placeholder, + value: undefined + }, (function (expr) { + return sendAgdaRequest({ + TAG: "WhyInScopeGlobal", + _0: expr, + [Symbol.for("name")]: "WhyInScopeGlobal" + }); + })); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "SwitchAgdaVersion" : + var oldAgdaVersion = Config$AgdaModeVscode.Connection.getAgdaVersion(); + await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: undefined, + value: oldAgdaVersion + }, (async function (expr) { + var oldAgdaPath = Config$AgdaModeVscode.Connection.getAgdaPath(); + var newAgdaVersion = expr.trim(); + await Config$AgdaModeVscode.Connection.setAgdaPath(""); + await Config$AgdaModeVscode.Connection.setAgdaVersion(newAgdaVersion); + await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Plain", + _0: "Switching to '" + newAgdaVersion + "'", + [Symbol.for("name")]: "Plain" + }, []); + await Connection$AgdaModeVscode.stop(); + var error = await Connection$AgdaModeVscode.start(state.globalStoragePath, false, (function (extra) { + return State$AgdaModeVscode.onDownload(state, extra); })); - case /* Escape */16 : - if (IM$AgdaModeVscode.isActivated(state.editorIM) || IM$AgdaModeVscode.isActivated(state.promptIM)) { - return $$Promise.map(State__InputMethod$AgdaModeVscode.deactivate(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } else { - return $$Promise.map(State__View$AgdaModeVscode.Panel.interruptPrompt(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } - case /* LookupSymbol */17 : - var match$5 = $$Promise.pending(undefined); - var resolve = match$5[1]; - var selectedText = Editor$AgdaModeVscode.$$Text.get(state.document, Editor$AgdaModeVscode.$$Selection.get(state.editor)).trim(); - if (selectedText === "") { - State__View$AgdaModeVscode.Panel.prompt(state, { - TAG: 0, - _0: "Lookup Unicode Symbol Input Sequence", - [Symbol.for("name")]: "Plain" - }, { - body: undefined, - placeholder: "symbol to lookup:", - value: undefined - }, (function(resolve){ - return function (input) { - Curry._1(resolve, input.trim()); - return $$Promise.resolved({ - TAG: 0, + if (error.TAG === "Ok") { + var match = error._0; + if (match.TAG === "Emacs") { + var version = match._0; + await State__View$AgdaModeVscode.Panel.displayStatus(state, "Emacs v" + version); + await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Success", + _0: "Switched to version '" + version + "'", + [Symbol.for("name")]: "Success" + }, [Item$AgdaModeVscode.plainText("Found '" + newAgdaVersion + "' at: " + match._1)]); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Success", + _0: "Panic, Switched to LSP server '" + match._0 + "'", + [Symbol.for("name")]: "Success" + }, [Item$AgdaModeVscode.plainText("Should have switched to an Agda executable, please file an issue")]); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + var match$1 = Connection__Error$AgdaModeVscode.toString(error._0); + var header = { + TAG: "Error", + _0: "Cannot switch Agda version '" + newAgdaVersion + "' : " + match$1[0], + [Symbol.for("name")]: "Error" + }; + var body = [Item$AgdaModeVscode.plainText(match$1[1] + "\n\nSwitching back to " + oldAgdaPath)]; + await Config$AgdaModeVscode.Connection.setAgdaPath(oldAgdaPath); + await State__View$AgdaModeVscode.Panel.display(state, header, body); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + })); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "Escape" : + if (IM$AgdaModeVscode.isActivated(state.editorIM) || IM$AgdaModeVscode.isActivated(state.promptIM)) { + await State__InputMethod$AgdaModeVscode.deactivate(state); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } else { + await State__View$AgdaModeVscode.Panel.interruptPrompt(state); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + case "LookupSymbol" : + var match$5 = Util$AgdaModeVscode.Promise_.pending(); + var resolve = match$5[1]; + var selectedText = Editor$AgdaModeVscode.$$Text.get(state.document, Editor$AgdaModeVscode.$$Selection.get(state.editor)).trim(); + if (selectedText === "") { + State__View$AgdaModeVscode.Panel.prompt(state, { + TAG: "Plain", + _0: "Lookup Unicode Symbol Input Sequence", + [Symbol.for("name")]: "Plain" + }, { + body: undefined, + placeholder: "symbol to lookup:", + value: undefined + }, (function (input) { + resolve(input.trim()); + return Promise.resolve({ + TAG: "Ok", _0: undefined, [Symbol.for("name")]: "Ok" }); - } - }(resolve))); - } else { - Curry._1(resolve, selectedText); - } - return $$Promise.map($$Promise.flatMap(match$5[0], (function(selectedText){ - return function (input) { - var sequences = Belt_Option.getWithDefault(Translator$AgdaModeVscode.lookup(input), []); - if (sequences.length === 0) { - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 2, - _0: "No Input Sequences Found for \"" + selectedText + "\"", - [Symbol.for("name")]: "Warning" - }, []); - } else { - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 1, - _0: String(sequences.length) + " Input Sequences Found for \"" + selectedText + "\"", - [Symbol.for("name")]: "Success" - }, Belt_Array.map(sequences, Item$AgdaModeVscode.plainText)); - } - } - }(selectedText))), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - case /* OpenDebugBuffer */18 : - State__View$AgdaModeVscode.DebugBuffer.make(state); - return $$Promise.map(State__View$AgdaModeVscode.DebugBuffer.reveal(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - - } - } else { - switch (command.TAG | 0) { - case /* SolveConstraints */0 : - var normalization = command._0; - var match$6 = State__Goal$AgdaModeVscode.pointed(state); - if (match$6 !== undefined) { - return sendAgdaRequest({ - TAG: 0, - _0: normalization, - _1: match$6[0], - [Symbol.for("name")]: "SolveConstraints" - }); - } else { - return sendAgdaRequest({ - TAG: 1, - _0: normalization, - [Symbol.for("name")]: "SolveConstraintsGlobal" - }); - } - case /* ShowGoals */1 : - return sendAgdaRequest({ - TAG: 2, - _0: command._0, - [Symbol.for("name")]: "ShowGoals" + })); + } else { + resolve(selectedText); + } + var input = await match$5[0]; + var sequences = Belt_Option.getWithDefault(Translator$AgdaModeVscode.lookup(input), []); + if (sequences.length === 0) { + await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Warning", + _0: "No Input Sequences Found for \"" + selectedText + "\"", + [Symbol.for("name")]: "Warning" + }, []); + } else { + await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Success", + _0: String(sequences.length) + " Input Sequences Found for \"" + selectedText + "\"", + [Symbol.for("name")]: "Success" + }, Belt_Array.map(sequences, (function (sequence) { + return Item$AgdaModeVscode.plainText(sequence); + }))); + } + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "OpenDebugBuffer" : + State__View$AgdaModeVscode.DebugBuffer.make(state); + await State__View$AgdaModeVscode.DebugBuffer.reveal(state); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + + } + } else { + switch (command.TAG) { + case "SolveConstraints" : + var normalization = command._0; + var match$6 = State__Goal$AgdaModeVscode.pointed(state); + if (match$6 !== undefined) { + return await sendAgdaRequest({ + TAG: "SolveConstraints", + _0: normalization, + _1: match$6[0], + [Symbol.for("name")]: "SolveConstraints" }); - case /* SearchAbout */2 : - var normalization$1 = command._0; - return $$Promise.map(State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: "name:", - value: undefined - }, (function(normalization$1){ - return function (expr) { - return sendAgdaRequest({ - TAG: 3, - _0: normalization$1, - _1: expr, - [Symbol.for("name")]: "SearchAbout" - }); - } - }(normalization$1))), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - case /* ElaborateAndGive */3 : - var normalization$2 = command._0; - var match$7 = State__Goal$AgdaModeVscode.pointed(state); - if (match$7 === undefined) { - return $$Promise.map(State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } + } else { + return await sendAgdaRequest({ + TAG: "SolveConstraintsGlobal", + _0: normalization, + [Symbol.for("name")]: "SolveConstraintsGlobal" + }); + } + case "ShowGoals" : + return await sendAgdaRequest({ + TAG: "ShowGoals", + _0: command._0, + [Symbol.for("name")]: "ShowGoals" + }); + case "SearchAbout" : + var normalization$1 = command._0; + await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: "name:", + value: undefined + }, (function (expr) { + return sendAgdaRequest({ + TAG: "SearchAbout", + _0: normalization$1, + _1: expr, + [Symbol.for("name")]: "SearchAbout" + }); + })); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "ElaborateAndGive" : + var normalization$2 = command._0; + var match$7 = State__Goal$AgdaModeVscode.pointed(state); + if (match$7 !== undefined) { var expr$1 = match$7[1]; var goal$3 = match$7[0]; - if (expr$1 === "") { - return $$Promise.map(State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: "expression to elaborate and give:", - value: undefined - }, (function(normalization$2,goal$3){ - return function (expr) { - if (expr === "") { - return sendAgdaRequest({ - TAG: 6, - _0: normalization$2, - _1: expr, - _2: goal$3, - [Symbol.for("name")]: "ElaborateAndGive" - }); - } else { - return $$Promise.flatMap(State__Goal$AgdaModeVscode.modify(state, goal$3, (function (param) { - return expr; - })), (function (param) { - return sendAgdaRequest({ - TAG: 6, - _0: normalization$2, - _1: expr, - _2: goal$3, - [Symbol.for("name")]: "ElaborateAndGive" - }); - })); - } - } - }(normalization$2,goal$3))), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } else { - return sendAgdaRequest({ - TAG: 6, + if (expr$1 !== "") { + return await sendAgdaRequest({ + TAG: "ElaborateAndGive", _0: normalization$2, _1: expr$1, _2: goal$3, [Symbol.for("name")]: "ElaborateAndGive" }); } - case /* HelperFunctionType */4 : - var normalization$3 = command._0; - var match$8 = State__Goal$AgdaModeVscode.pointed(state); - if (match$8 === undefined) { - return $$Promise.map(State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } + await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: "expression to elaborate and give:", + value: undefined + }, (async function (expr) { + if (expr === "") { + return await sendAgdaRequest({ + TAG: "ElaborateAndGive", + _0: normalization$2, + _1: expr, + _2: goal$3, + [Symbol.for("name")]: "ElaborateAndGive" + }); + } else { + await State__Goal$AgdaModeVscode.modify(state, goal$3, (function (param) { + return expr; + })); + return await sendAgdaRequest({ + TAG: "ElaborateAndGive", + _0: normalization$2, + _1: expr, + _2: goal$3, + [Symbol.for("name")]: "ElaborateAndGive" + }); + } + })); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "HelperFunctionType" : + var normalization$3 = command._0; + var match$8 = State__Goal$AgdaModeVscode.pointed(state); + if (match$8 !== undefined) { var expr$2 = match$8[1]; var goal$4 = match$8[0]; - if (expr$2 === "") { - return $$Promise.map(State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: "expression:", - value: undefined - }, (function(normalization$3,goal$4){ - return function (expr) { - return sendAgdaRequest({ - TAG: 9, - _0: normalization$3, - _1: expr, - _2: goal$4, - [Symbol.for("name")]: "HelperFunctionType" - }); - } - }(normalization$3,goal$4))), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } else { - return sendAgdaRequest({ - TAG: 9, + if (expr$2 !== "") { + return await sendAgdaRequest({ + TAG: "HelperFunctionType", _0: normalization$3, _1: expr$2, _2: goal$4, [Symbol.for("name")]: "HelperFunctionType" }); } - case /* InferType */5 : - var normalization$4 = command._0; - var placeholder$1 = "expression to infer:"; - var match$9 = State__Goal$AgdaModeVscode.pointed(state); - if (match$9 === undefined) { - return $$Promise.map(State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: placeholder$1, - value: undefined - }, (function(normalization$4){ - return function (expr) { - return sendAgdaRequest({ - TAG: 11, - _0: normalization$4, - _1: expr, - [Symbol.for("name")]: "InferTypeGlobal" - }); - } - }(normalization$4))), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } + await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: "expression:", + value: undefined + }, (function (expr) { + return sendAgdaRequest({ + TAG: "HelperFunctionType", + _0: normalization$3, + _1: expr, + _2: goal$4, + [Symbol.for("name")]: "HelperFunctionType" + }); + })); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "InferType" : + var normalization$4 = command._0; + var placeholder$1 = "expression to infer:"; + var match$9 = State__Goal$AgdaModeVscode.pointed(state); + if (match$9 !== undefined) { var expr$3 = match$9[1]; var goal$5 = match$9[0]; - if (expr$3 === "") { - return $$Promise.map(State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: placeholder$1, - value: undefined - }, (function(normalization$4,goal$5){ - return function (expr) { - return sendAgdaRequest({ - TAG: 10, - _0: normalization$4, - _1: expr, - _2: goal$5, - [Symbol.for("name")]: "InferType" - }); - } - }(normalization$4,goal$5))), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } else { - return sendAgdaRequest({ - TAG: 10, + if (expr$3 !== "") { + return await sendAgdaRequest({ + TAG: "InferType", _0: normalization$4, _1: expr$3, _2: goal$5, [Symbol.for("name")]: "InferType" }); } - case /* Context */6 : - var match$10 = State__Goal$AgdaModeVscode.pointed(state); - if (match$10 !== undefined) { - return sendAgdaRequest({ - TAG: 12, - _0: command._0, - _1: match$10[0], - [Symbol.for("name")]: "Context" - }); - } else { - return $$Promise.map(State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } - case /* GoalType */7 : - var match$11 = State__Goal$AgdaModeVscode.pointed(state); - if (match$11 !== undefined) { - return sendAgdaRequest({ - TAG: 13, - _0: command._0, - _1: match$11[0], - [Symbol.for("name")]: "GoalType" - }); - } else { - return $$Promise.map(State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } - case /* GoalTypeAndContext */8 : - var match$12 = State__Goal$AgdaModeVscode.pointed(state); - if (match$12 !== undefined) { - return sendAgdaRequest({ - TAG: 14, - _0: command._0, - _1: match$12[0], - [Symbol.for("name")]: "GoalTypeAndContext" - }); + await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: placeholder$1, + value: undefined + }, (function (expr) { + return sendAgdaRequest({ + TAG: "InferType", + _0: normalization$4, + _1: expr, + _2: goal$5, + [Symbol.for("name")]: "InferType" + }); + })); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: placeholder$1, + value: undefined + }, (function (expr) { + return sendAgdaRequest({ + TAG: "InferTypeGlobal", + _0: normalization$4, + _1: expr, + [Symbol.for("name")]: "InferTypeGlobal" + }); + })); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "Context" : + var match$10 = State__Goal$AgdaModeVscode.pointed(state); + if (match$10 !== undefined) { + return await sendAgdaRequest({ + TAG: "Context", + _0: command._0, + _1: match$10[0], + [Symbol.for("name")]: "Context" + }); + } else { + await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + case "GoalType" : + var match$11 = State__Goal$AgdaModeVscode.pointed(state); + if (match$11 !== undefined) { + return await sendAgdaRequest({ + TAG: "GoalType", + _0: command._0, + _1: match$11[0], + [Symbol.for("name")]: "GoalType" + }); + } else { + await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + case "GoalTypeAndContext" : + var match$12 = State__Goal$AgdaModeVscode.pointed(state); + if (match$12 !== undefined) { + return await sendAgdaRequest({ + TAG: "GoalTypeAndContext", + _0: command._0, + _1: match$12[0], + [Symbol.for("name")]: "GoalTypeAndContext" + }); + } else { + await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + case "EventFromView" : + var $$event = command._0; + if (typeof $$event !== "object") { + if ($$event === "Initialized") { + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; } else { - return $$Promise.map(State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); + return await State$AgdaModeVscode.destroy(state, true); } - case /* EventFromView */9 : - var $$event = command._0; - if (typeof $$event === "number") { - if ($$event === /* Initialized */0) { - return $$Promise.resolved({ - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }); - } else { - return State$AgdaModeVscode.destroy(state, true); - } - } - switch ($$event.TAG | 0) { - case /* InputMethod */0 : - var $$char = $$event._0; - if ($$char.TAG !== /* InsertChar */0) { - return $$Promise.map(State__InputMethod$AgdaModeVscode.chooseSymbol(state, $$char._0), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } - _command = { - TAG: 14, - _0: { - _0: $$char._0, - [Symbol.for("name")]: "InsertChar" - }, - [Symbol.for("name")]: "InputMethod" - }; - continue ; - case /* PromptIMUpdate */1 : - var interval = $$event._0; - if (typeof interval !== "number") { - if (interval.TAG === /* MouseSelect */0) { - return $$Promise.map(State__InputMethod$AgdaModeVscode.select(state, [interval._0]), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } else { - return $$Promise.map(State__InputMethod$AgdaModeVscode.keyUpdatePromptIM(state, interval._0), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } - } + } + switch ($$event.TAG) { + case "InputMethod" : + var $$char = $$event._0; + if ($$char.TAG === "InsertChar") { + return await dispatchCommand(state, { + TAG: "InputMethod", + _0: { + TAG: "InsertChar", + _0: $$char._0, + [Symbol.for("name")]: "InsertChar" + }, + [Symbol.for("name")]: "InputMethod" + }); + } + await State__InputMethod$AgdaModeVscode.chooseSymbol(state, $$char._0); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "PromptIMUpdate" : + var interval = $$event._0; + if (typeof interval !== "object") { switch (interval) { - case /* BrowseUp */0 : - _command = { - TAG: 14, - _0: /* BrowseUp */1, - [Symbol.for("name")]: "InputMethod" - }; - continue ; - case /* BrowseDown */1 : - _command = { - TAG: 14, - _0: /* BrowseDown */3, - [Symbol.for("name")]: "InputMethod" - }; - continue ; - case /* BrowseLeft */2 : - _command = { - TAG: 14, - _0: /* BrowseLeft */4, - [Symbol.for("name")]: "InputMethod" - }; - continue ; - case /* BrowseRight */3 : - _command = { - TAG: 14, - _0: /* BrowseRight */2, - [Symbol.for("name")]: "InputMethod" - }; - continue ; - case /* Escape */4 : + case "BrowseUp" : + return await dispatchCommand(state, { + TAG: "InputMethod", + _0: "BrowseUp", + [Symbol.for("name")]: "InputMethod" + }); + case "BrowseDown" : + return await dispatchCommand(state, { + TAG: "InputMethod", + _0: "BrowseDown", + [Symbol.for("name")]: "InputMethod" + }); + case "BrowseLeft" : + return await dispatchCommand(state, { + TAG: "InputMethod", + _0: "BrowseLeft", + [Symbol.for("name")]: "InputMethod" + }); + case "BrowseRight" : + return await dispatchCommand(state, { + TAG: "InputMethod", + _0: "BrowseRight", + [Symbol.for("name")]: "InputMethod" + }); + case "Escape" : if (IM$AgdaModeVscode.isActivated(state.editorIM) || IM$AgdaModeVscode.isActivated(state.promptIM)) { - return $$Promise.map(State__InputMethod$AgdaModeVscode.deactivate(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); + await State__InputMethod$AgdaModeVscode.deactivate(state); } else { - return $$Promise.map(State__View$AgdaModeVscode.Panel.interruptPrompt(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); + await State__View$AgdaModeVscode.Panel.interruptPrompt(state); } - - } - case /* JumpToTarget */2 : - var link = $$event._0; - Editor$AgdaModeVscode.focus(state.document); - var path = Parser$AgdaModeVscode.filepath(state.document.fileName); - if (link.TAG === /* SrcLoc */0) { - var match$13 = link._0; - if (!match$13) { - return $$Promise.resolved({ - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }); - } - var fileName = match$13._0; - if (fileName === undefined) { - return $$Promise.resolved({ - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }); - } - var fileName$1 = Parser$AgdaModeVscode.filepath(fileName); - var removeRoot = function (path) { - var obj = Path.parse(path); - var rootLength = obj.root.length; - var newDir = Js_string.sliceToEnd(rootLength, obj.dir); - return Path.format({ - root: "", - dir: newDir, - ext: obj.ext, - name: obj.name, - base: obj.base - }); - }; - if (removeRoot(path) === removeRoot(fileName$1)) { - var ranges = Belt_Array.map(match$13._1, Editor$AgdaModeVscode.$$Range.fromAgdaInterval); - Editor$AgdaModeVscode.$$Selection.setMany(state.editor, ranges); - Belt_Option.forEach(Belt_Array.get(ranges, 0), (function (range) { - VSCode.TextEditor.revealRange(state.editor, range, undefined); - })); - } - return $$Promise.resolved({ - TAG: 0, + return { + TAG: "Ok", _0: undefined, [Symbol.for("name")]: "Ok" - }); + }; + } - var index = link._0; - var goal$6 = Js_array.find((function(index){ - return function (goal) { - return goal.index === index; - } - }(index)), state.goals); - if (goal$6 !== undefined) { - Goal$AgdaModeVscode.setCursor(goal$6, state.editor); + } else { + if (interval.TAG === "MouseSelect") { + await State__InputMethod$AgdaModeVscode.select(state, [interval._0]); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; } - return $$Promise.resolved({ - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }); - - } - case /* GoalTypeContextAndInferredType */10 : - var normalization$5 = command._0; - var match$14 = State__Goal$AgdaModeVscode.pointed(state); - if (match$14 === undefined) { - return $$Promise.map(State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + await State__InputMethod$AgdaModeVscode.keyUpdatePromptIM(state, interval._0); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + case "JumpToTarget" : + var link = $$event._0; + Editor$AgdaModeVscode.focus(state.document); + var path = Parser$AgdaModeVscode.filepath(state.document.fileName); + if (link.TAG === "SrcLoc") { + var match$13 = link._0; + if (typeof match$13 !== "object") { + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + var fileName = match$13._0; + if (fileName === undefined) { + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + var fileName$1 = Parser$AgdaModeVscode.filepath(fileName); + var removeRoot = function (path) { + var obj = Nodepath.parse(path); + var rootLength = obj.root.length; + var newDir = Js_string.sliceToEnd(rootLength, obj.dir); + return Nodepath.format({ + dir: newDir, + root: "", + base: obj.base, + name: obj.name, + ext: obj.ext + }); + }; + if (removeRoot(path) === removeRoot(fileName$1)) { + var ranges = Belt_Array.map(match$13._1, Editor$AgdaModeVscode.$$Range.fromAgdaInterval); + Editor$AgdaModeVscode.$$Selection.setMany(state.editor, ranges); + Belt_Option.forEach(Belt_Array.get(ranges, 0), (function (range) { + VSCode.TextEditor.revealRange(state.editor, range, undefined); })); - } + } + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + var index = link._0; + var goal$6 = Js_array.find((function (goal) { + return goal.index === index; + }), state.goals); + if (goal$6 !== undefined) { + Goal$AgdaModeVscode.setCursor(goal$6, state.editor); + } + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + + } + case "GoalTypeContextAndInferredType" : + var normalization$5 = command._0; + var match$14 = State__Goal$AgdaModeVscode.pointed(state); + if (match$14 !== undefined) { var expr$4 = match$14[1]; var goal$7 = match$14[0]; if (expr$4 === "") { - return sendAgdaRequest({ - TAG: 14, + return await sendAgdaRequest({ + TAG: "GoalTypeAndContext", _0: normalization$5, _1: goal$7, [Symbol.for("name")]: "GoalTypeAndContext" }); } else { - return sendAgdaRequest({ - TAG: 15, + return await sendAgdaRequest({ + TAG: "GoalTypeContextAndInferredType", _0: normalization$5, _1: expr$4, _2: goal$7, [Symbol.for("name")]: "GoalTypeContextAndInferredType" }); } - case /* GoalTypeContextAndCheckedType */11 : - var normalization$6 = command._0; - var match$15 = State__Goal$AgdaModeVscode.pointed(state); - if (match$15 === undefined) { - return $$Promise.map(State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } + } + await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "GoalTypeContextAndCheckedType" : + var normalization$6 = command._0; + var match$15 = State__Goal$AgdaModeVscode.pointed(state); + if (match$15 !== undefined) { var expr$5 = match$15[1]; var goal$8 = match$15[0]; - if (expr$5 === "") { - return $$Promise.map(State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: "expression to type:", - value: undefined - }, (function(normalization$6,goal$8){ - return function (expr) { - return sendAgdaRequest({ - TAG: 16, - _0: normalization$6, - _1: expr, - _2: goal$8, - [Symbol.for("name")]: "GoalTypeContextAndCheckedType" - }); - } - }(normalization$6,goal$8))), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } else { - return sendAgdaRequest({ - TAG: 16, + if (expr$5 !== "") { + return await sendAgdaRequest({ + TAG: "GoalTypeContextAndCheckedType", _0: normalization$6, _1: expr$5, _2: goal$8, [Symbol.for("name")]: "GoalTypeContextAndCheckedType" }); } - case /* ModuleContents */12 : - var normalization$7 = command._0; - var placeholder$2 = "module name:"; - var match$16 = State__Goal$AgdaModeVscode.pointed(state); - if (match$16 === undefined) { - return $$Promise.map(State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: placeholder$2, - value: undefined - }, (function(normalization$7){ - return function (expr) { - return sendAgdaRequest({ - TAG: 18, - _0: normalization$7, - _1: expr, - [Symbol.for("name")]: "ModuleContentsGlobal" - }); - } - }(normalization$7))), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } + await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: "expression to type:", + value: undefined + }, (function (expr) { + return sendAgdaRequest({ + TAG: "GoalTypeContextAndCheckedType", + _0: normalization$6, + _1: expr, + _2: goal$8, + [Symbol.for("name")]: "GoalTypeContextAndCheckedType" + }); + })); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "ModuleContents" : + var normalization$7 = command._0; + var placeholder$2 = "module name:"; + var match$16 = State__Goal$AgdaModeVscode.pointed(state); + if (match$16 !== undefined) { var expr$6 = match$16[1]; var goal$9 = match$16[0]; - if (expr$6 === "") { - return $$Promise.map(State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: placeholder$2, - value: undefined - }, (function(normalization$7,goal$9){ - return function (expr) { - return sendAgdaRequest({ - TAG: 17, - _0: normalization$7, - _1: expr, - _2: goal$9, - [Symbol.for("name")]: "ModuleContents" - }); - } - }(normalization$7,goal$9))), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } else { - return sendAgdaRequest({ - TAG: 17, + if (expr$6 !== "") { + return await sendAgdaRequest({ + TAG: "ModuleContents", _0: normalization$7, _1: expr$6, _2: goal$9, [Symbol.for("name")]: "ModuleContents" }); } - case /* ComputeNormalForm */13 : - var computeMode = command._0; - var placeholder$3 = "expression to normalize:"; - var match$17 = State__Goal$AgdaModeVscode.pointed(state); - if (match$17 === undefined) { - return $$Promise.map(State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: placeholder$3, - value: undefined - }, (function(computeMode){ - return function (expr) { - return sendAgdaRequest({ - TAG: 20, - _0: computeMode, - _1: expr, - [Symbol.for("name")]: "ComputeNormalFormGlobal" - }); - } - }(computeMode))), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } + await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: placeholder$2, + value: undefined + }, (function (expr) { + return sendAgdaRequest({ + TAG: "ModuleContents", + _0: normalization$7, + _1: expr, + _2: goal$9, + [Symbol.for("name")]: "ModuleContents" + }); + })); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: placeholder$2, + value: undefined + }, (function (expr) { + return sendAgdaRequest({ + TAG: "ModuleContentsGlobal", + _0: normalization$7, + _1: expr, + [Symbol.for("name")]: "ModuleContentsGlobal" + }); + })); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "ComputeNormalForm" : + var computeMode = command._0; + var placeholder$3 = "expression to normalize:"; + var match$17 = State__Goal$AgdaModeVscode.pointed(state); + if (match$17 !== undefined) { var expr$7 = match$17[1]; var goal$10 = match$17[0]; - if (expr$7 === "") { - return $$Promise.map(State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: placeholder$3, - value: undefined - }, (function(computeMode,goal$10){ - return function (expr) { - return sendAgdaRequest({ - TAG: 19, - _0: computeMode, - _1: expr, - _2: goal$10, - [Symbol.for("name")]: "ComputeNormalForm" - }); - } - }(computeMode,goal$10))), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } else { - return sendAgdaRequest({ - TAG: 19, + if (expr$7 !== "") { + return await sendAgdaRequest({ + TAG: "ComputeNormalForm", _0: computeMode, _1: expr$7, _2: goal$10, [Symbol.for("name")]: "ComputeNormalForm" }); } - case /* InputMethod */14 : - var $$char$1 = command._0; - if (typeof $$char$1 !== "number") { - return $$Promise.map(State__InputMethod$AgdaModeVscode.insertChar(state, $$char$1._0), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } + await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: placeholder$3, + value: undefined + }, (function (expr) { + return sendAgdaRequest({ + TAG: "ComputeNormalForm", + _0: computeMode, + _1: expr, + _2: goal$10, + [Symbol.for("name")]: "ComputeNormalForm" + }); + })); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: placeholder$3, + value: undefined + }, (function (expr) { + return sendAgdaRequest({ + TAG: "ComputeNormalFormGlobal", + _0: computeMode, + _1: expr, + [Symbol.for("name")]: "ComputeNormalFormGlobal" + }); + })); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "InputMethod" : + var $$char$1 = command._0; + if (typeof $$char$1 !== "object") { switch ($$char$1) { - case /* Activate */0 : - if (Config$AgdaModeVscode.InputMethod.getEnable(undefined)) { - return $$Promise.map(State__InputMethod$AgdaModeVscode.activateEditorIM(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); + case "Activate" : + if (Config$AgdaModeVscode.InputMethod.getEnable()) { + await State__InputMethod$AgdaModeVscode.activateEditorIM(state); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; } - var activationKey = Config$AgdaModeVscode.InputMethod.getActivationKey(undefined); - Belt_Array.forEach(Editor$AgdaModeVscode.Cursor.getMany(state.editor), (function(activationKey){ - return function (point) { - Editor$AgdaModeVscode.$$Text.insert(state.document, point, activationKey); - } - }(activationKey))); - return $$Promise.resolved({ - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }); - case /* BrowseUp */1 : - return $$Promise.map(State__InputMethod$AgdaModeVscode.moveUp(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - case /* BrowseRight */2 : - return $$Promise.map(State__InputMethod$AgdaModeVscode.moveRight(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - case /* BrowseDown */3 : - return $$Promise.map(State__InputMethod$AgdaModeVscode.moveDown(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - case /* BrowseLeft */4 : - return $$Promise.map(State__InputMethod$AgdaModeVscode.moveLeft(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); + var activationKey = Config$AgdaModeVscode.InputMethod.getActivationKey(); + Belt_Array.forEach(Editor$AgdaModeVscode.Cursor.getMany(state.editor), (function (point) { + Editor$AgdaModeVscode.$$Text.insert(state.document, point, activationKey); + })); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "BrowseUp" : + await State__InputMethod$AgdaModeVscode.moveUp(state); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "BrowseRight" : + await State__InputMethod$AgdaModeVscode.moveRight(state); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "BrowseDown" : + await State__InputMethod$AgdaModeVscode.moveDown(state); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "BrowseLeft" : + await State__InputMethod$AgdaModeVscode.moveLeft(state); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; } - - } + } else { + await State__InputMethod$AgdaModeVscode.insertChar(state, $$char$1._0); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + } - }; + } } exports.dispatchCommand = dispatchCommand; -/* path Not a pure module */ +/* VSCode Not a pure module */ diff --git a/lib/js/src/State/State__Goal.bs.js b/lib/js/src/State/State__Goal.bs.js index e66687ac..fe878eff 100644 --- a/lib/js/src/State/State__Goal.bs.js +++ b/lib/js/src/State/State__Goal.bs.js @@ -2,9 +2,7 @@ 'use strict'; var Caml = require("rescript/lib/js/caml.js"); -var Curry = require("rescript/lib/js/curry.js"); var Vscode = require("vscode"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Js_array = require("rescript/lib/js/js_array.js"); var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); @@ -150,21 +148,18 @@ function updateIntervals(state) { })); } -function modify(state, goal, f) { +async function modify(state, goal, f) { updateIntervals(state); var content = Goal$AgdaModeVscode.getContent(goal, state.document); - return $$Promise.flatMap(Goal$AgdaModeVscode.setContent(goal, state.document, Curry._1(f, content)), (function (x) { - if (x) { - updateIntervals(state); - return $$Promise.resolved(undefined); - } else { - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 3, - _0: "Goal-related Error", - [Symbol.for("name")]: "Error" - }, [Item$AgdaModeVscode.plainText("Failed to modify the content of goal #" + String(goal.index))]); - } - })); + if (await Goal$AgdaModeVscode.setContent(goal, state.document, f(content))) { + return updateIntervals(state); + } else { + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Error", + _0: "Goal-related Error", + [Symbol.for("name")]: "Error" + }, [Item$AgdaModeVscode.plainText("Failed to modify the content of goal #" + String(goal.index))]); + } } function next(state) { @@ -186,12 +181,11 @@ function next(state) { } var offset = nextGoal.contents; if (offset === undefined) { - return $$Promise.resolved(undefined); + return ; } var point = state.document.positionAt(offset); Editor$AgdaModeVscode.Cursor.set(state.editor, point); jumpToOffset(state, offset); - return $$Promise.resolved(undefined); } function previous(state) { @@ -213,32 +207,30 @@ function previous(state) { } var offset = previousGoal.contents; if (offset === undefined) { - return $$Promise.resolved(undefined); + return ; } var point = state.document.positionAt(offset); Editor$AgdaModeVscode.Cursor.set(state.editor, point); jumpToOffset(state, offset); - return $$Promise.resolved(undefined); } -function instantiate(state, indices) { +async function instantiate(state, indices) { Belt_Array.forEach(state.goals, Goal$AgdaModeVscode.destroyDecoration); var selection = state.editor.selection; var cursorStart = state.document.offsetAt(selection.start); var cursorEnd = state.document.offsetAt(selection.end); - return $$Promise.map(Goal$AgdaModeVscode.makeMany(state.editor, indices), (function (goals) { - Belt_Array.forEach(goals, (function (goal) { - var match = goal.interval; - var right = match[1]; - var left = match[0]; - var touched = left <= cursorStart && cursorStart <= (left + 2 | 0) || (right - 2 | 0) <= cursorStart && cursorStart <= right || left <= cursorEnd && cursorEnd <= (left + 2 | 0) || (right - 2 | 0) <= cursorEnd && cursorEnd <= right; - if (touched) { - return Goal$AgdaModeVscode.setCursor(goal, state.editor); - } - - })); - state.goals = goals; - })); + var goals = await Goal$AgdaModeVscode.makeMany(state.editor, indices); + Belt_Array.forEach(goals, (function (goal) { + var match = goal.interval; + var right = match[1]; + var left = match[0]; + var touched = left <= cursorStart && cursorStart <= (left + 2 | 0) || (right - 2 | 0) <= cursorStart && cursorStart <= right || left <= cursorEnd && cursorEnd <= (left + 2 | 0) || (right - 2 | 0) <= cursorEnd && cursorEnd <= right; + if (touched) { + return Goal$AgdaModeVscode.setCursor(goal, state.editor); + } + + })); + state.goals = goals; } function pointed(state) { @@ -269,27 +261,24 @@ function placeCursorAtFirstNewGoal(state, rewriteText, rewriteRange) { })); } -function replaceWithLambda(state, goal, lines) { +async function replaceWithLambda(state, goal, lines) { var match = caseSplitAux(state.document, goal); var indentWidth = match[1]; var rewriteText = match[0] ? Js_array.joinWith("\n" + Js_string.repeat(indentWidth, " "), lines) : Js_array.joinWith("\n" + (Js_string.repeat(indentWidth - 2 | 0, " ") + "; "), lines); var rewriteRange = Editor$AgdaModeVscode.$$Range.fromInterval(state.document, match[2]); - return $$Promise.flatMap(Editor$AgdaModeVscode.$$Text.replace(state.document, rewriteRange, rewriteText), (function (x) { - if (x) { - Goal$AgdaModeVscode.destroyDecoration(goal); - placeCursorAtFirstNewGoal(state, rewriteText, rewriteRange); - return $$Promise.resolved(undefined); - } else { - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 3, - _0: "Goal-related Error", - [Symbol.for("name")]: "Error" - }, [Item$AgdaModeVscode.plainText("Unable to replace the lines of goal #" + String(goal.index))]); - } - })); + if (await Editor$AgdaModeVscode.$$Text.replace(state.document, rewriteRange, rewriteText)) { + Goal$AgdaModeVscode.destroyDecoration(goal); + return placeCursorAtFirstNewGoal(state, rewriteText, rewriteRange); + } else { + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Error", + _0: "Goal-related Error", + [Symbol.for("name")]: "Error" + }, [Item$AgdaModeVscode.plainText("Unable to replace the lines of goal #" + String(goal.index))]); + } } -function replaceWithLines(state, goal, lines) { +async function replaceWithLines(state, goal, lines) { var match = indentationWidth(state.document, goal); var indentation = Js_string.repeat(match[0], " "); var indentedLines = indentation + Js_array.joinWith("\n" + indentation, lines); @@ -299,38 +288,32 @@ function replaceWithLines(state, goal, lines) { var start$1 = startLineRange.start; var end_ = Editor$AgdaModeVscode.Position.fromOffset(state.document, goal.interval[1]); var rangeToBeReplaced = new Vscode.Range(start$1, end_); - return $$Promise.flatMap(Editor$AgdaModeVscode.$$Text.replace(state.document, rangeToBeReplaced, indentedLines), (function (x) { - if (x) { - Goal$AgdaModeVscode.destroyDecoration(goal); - placeCursorAtFirstNewGoal(state, indentedLines, rangeToBeReplaced); - return $$Promise.resolved(undefined); - } else { - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 3, - _0: "Goal-related Error", - [Symbol.for("name")]: "Error" - }, [Item$AgdaModeVscode.plainText("Unable to replace the lines of goal #" + String(goal.index))]); - } - })); + if (await Editor$AgdaModeVscode.$$Text.replace(state.document, rangeToBeReplaced, indentedLines)) { + Goal$AgdaModeVscode.destroyDecoration(goal); + return placeCursorAtFirstNewGoal(state, indentedLines, rangeToBeReplaced); + } else { + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Error", + _0: "Goal-related Error", + [Symbol.for("name")]: "Error" + }, [Item$AgdaModeVscode.plainText("Unable to replace the lines of goal #" + String(goal.index))]); + } } -function removeBoundaryAndDestroy(state, goal) { +async function removeBoundaryAndDestroy(state, goal) { updateIntervals(state); var innerRange = Goal$AgdaModeVscode.getInnerRange(goal, state.document); var outerRange = Editor$AgdaModeVscode.$$Range.fromInterval(state.document, goal.interval); var content = Editor$AgdaModeVscode.$$Text.get(state.document, innerRange).trim(); - return $$Promise.flatMap(Editor$AgdaModeVscode.$$Text.replace(state.document, outerRange, content), (function (x) { - if (x) { - Goal$AgdaModeVscode.destroyDecoration(goal); - return $$Promise.resolved(undefined); - } else { - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 3, - _0: "Goal-related Error", - [Symbol.for("name")]: "Error" - }, [Item$AgdaModeVscode.plainText("Unable to remove the boundary of goal #" + String(goal.index))]); - } - })); + if (await Editor$AgdaModeVscode.$$Text.replace(state.document, outerRange, content)) { + return Goal$AgdaModeVscode.destroyDecoration(goal); + } else { + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Error", + _0: "Goal-related Error", + [Symbol.for("name")]: "Error" + }, [Item$AgdaModeVscode.plainText("Unable to remove the boundary of goal #" + String(goal.index))]); + } } function redecorate(state) { diff --git a/lib/js/src/State/State__InputMethod.bs.js b/lib/js/src/State/State__InputMethod.bs.js index b3c7e926..28250402 100644 --- a/lib/js/src/State/State__InputMethod.bs.js +++ b/lib/js/src/State/State__InputMethod.bs.js @@ -1,8 +1,6 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Curry = require("rescript/lib/js/curry.js"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); @@ -13,25 +11,25 @@ var Editor$AgdaModeVscode = require("../Editor.bs.js"); var State__Type$AgdaModeVscode = require("./State__Type.bs.js"); var State__View$AgdaModeVscode = require("./State__View.bs.js"); -function handle(state, output) { - var handle$1 = function (kind) { - if (typeof kind === "number") { - if (kind === /* Activate */0) { +async function handle(state, output) { + var handle$1 = async function (kind) { + if (typeof kind !== "object") { + if (kind === "Activate") { State__Type$AgdaModeVscode.Context.setIM(true); - return State__View$AgdaModeVscode.Panel.updateIM(state, /* Activate */0); + return await State__View$AgdaModeVscode.Panel.updateIM(state, "Activate"); } State__Type$AgdaModeVscode.Context.setIM(false); - return State__View$AgdaModeVscode.Panel.updateIM(state, /* Deactivate */1); + return await State__View$AgdaModeVscode.Panel.updateIM(state, "Deactivate"); } else { - if (kind.TAG === /* UpdateView */0) { - return State__View$AgdaModeVscode.Panel.updateIM(state, { + if (kind.TAG === "UpdateView") { + return await State__View$AgdaModeVscode.Panel.updateIM(state, { + TAG: "Update", _0: kind._0, _1: kind._1, _2: kind._2, [Symbol.for("name")]: "Update" }); } - var resolve = kind._1; var replacements = Belt_Array.map(kind._0, (function (param) { var range = Editor$AgdaModeVscode.$$Range.fromInterval(state.document, param[0]); return [ @@ -39,14 +37,11 @@ function handle(state, output) { param[1] ]; })); - return $$Promise.map(Editor$AgdaModeVscode.$$Text.batchReplace(state.document, replacements), (function (param) { - Curry._1(resolve, undefined); - })); + await Editor$AgdaModeVscode.$$Text.batchReplace(state.document, replacements); + return kind._1(); } }; - return $$Promise.map(Util$AgdaModeVscode.oneByOne(Belt_Array.map(output, handle$1)), (function (param) { - - })); + await Util$AgdaModeVscode.oneByOne(Belt_Array.map(output, handle$1)); } function runAndHandle(state, action) { @@ -54,12 +49,11 @@ function runAndHandle(state, action) { } function activate(state) { - var partial_arg = state.document; - var intervals = Belt_Array.map(Editor$AgdaModeVscode.$$Selection.getMany(state.editor), (function (param) { - return Editor$AgdaModeVscode.$$Range.toInterval(partial_arg, param); + var intervals = Belt_Array.map(Editor$AgdaModeVscode.$$Selection.getMany(state.editor), (function (extra) { + return Editor$AgdaModeVscode.$$Range.toInterval(state.document, extra); })); return runAndHandle(state, { - TAG: 0, + TAG: "Activate", _0: intervals, [Symbol.for("name")]: "Activate" }); @@ -69,47 +63,45 @@ var previous = { contents: "" }; -function handle$1(state, output) { - var handle$2 = function (kind) { - if (typeof kind === "number") { - if (kind === /* Activate */0) { - return $$Promise.flatMap(State__View$AgdaModeVscode.Panel.updateIM(state, /* Activate */0), (function (param) { - return State__View$AgdaModeVscode.Panel.updatePromptIM(state, previous.contents); - })); - } else { - return State__View$AgdaModeVscode.Panel.updateIM(state, /* Deactivate */1); +async function handle$1(state, output) { + var handle$2 = async function (kind) { + if (typeof kind !== "object") { + if (kind !== "Activate") { + return await State__View$AgdaModeVscode.Panel.updateIM(state, "Deactivate"); } + await State__View$AgdaModeVscode.Panel.updateIM(state, "Activate"); + return await State__View$AgdaModeVscode.Panel.updatePromptIM(state, previous.contents); + } else { + if (kind.TAG === "UpdateView") { + return await State__View$AgdaModeVscode.Panel.updateIM(state, { + TAG: "Update", + _0: kind._0, + _1: kind._1, + _2: kind._2, + [Symbol.for("name")]: "Update" + }); + } + kind._1(); + var replaced = { + contents: previous.contents + }; + var delta = { + contents: 0 + }; + var replace = function (param) { + var t = param[1]; + var match = param[0]; + var end_ = match[1]; + var start = match[0]; + replaced.contents = replaced.contents.slice(0, delta.contents + start | 0) + t + replaced.contents.slice(delta.contents + end_ | 0); + delta.contents = (delta.contents + t.length | 0) - (end_ - start | 0) | 0; + }; + Belt_Array.forEach(kind._0, replace); + previous.contents = replaced.contents; + return await State__View$AgdaModeVscode.Panel.updatePromptIM(state, replaced.contents); } - if (kind.TAG === /* UpdateView */0) { - return State__View$AgdaModeVscode.Panel.updateIM(state, { - _0: kind._0, - _1: kind._1, - _2: kind._2, - [Symbol.for("name")]: "Update" - }); - } - Curry._1(kind._1, undefined); - var replaced = { - contents: previous.contents - }; - var delta = { - contents: 0 - }; - var replace = function (param) { - var t = param[1]; - var match = param[0]; - var end_ = match[1]; - var start = match[0]; - replaced.contents = replaced.contents.slice(0, delta.contents + start | 0) + t + replaced.contents.slice(delta.contents + end_ | 0); - delta.contents = (delta.contents + t.length | 0) - (end_ - start | 0) | 0; - }; - Belt_Array.forEach(kind._0, replace); - previous.contents = replaced.contents; - return State__View$AgdaModeVscode.Panel.updatePromptIM(state, replaced.contents); }; - return $$Promise.map(Util$AgdaModeVscode.oneByOne(Belt_Array.map(output, handle$2)), (function (param) { - - })); + await Util$AgdaModeVscode.oneByOne(Belt_Array.map(output, handle$2)); } function runAndHandle$1(state, action) { @@ -127,7 +119,7 @@ function keyUpdate(state, next) { }; if (init(next) === previous) { return { - TAG: 1, + TAG: "KeyUpdate", _0: [{ offset: inputLength - 1 | 0, insertedText: last(next), @@ -137,7 +129,7 @@ function keyUpdate(state, next) { }; } else if (next === init(previous)) { return { - TAG: 1, + TAG: "KeyUpdate", _0: [{ offset: inputLength, insertedText: "", @@ -146,7 +138,7 @@ function keyUpdate(state, next) { [Symbol.for("name")]: "KeyUpdate" }; } else { - return /* Deactivate */0; + return "Deactivate"; } }; var input = deviseChange(previous.contents, next); @@ -155,12 +147,16 @@ function keyUpdate(state, next) { return handle$1(state, output); } +function insertChar(state, $$char) { + return keyUpdate(state, previous.contents + $$char); +} + function activate$1(state, input) { var cursorOffset = input.length - 1 | 0; var input$1 = Js_string.substring(0, cursorOffset, input); previous.contents = input$1; return runAndHandle$1(state, { - TAG: 0, + TAG: "Activate", _0: [[ cursorOffset, cursorOffset @@ -171,69 +167,66 @@ function activate$1(state, input) { function isActivated(state) { if (IM$AgdaModeVscode.isActivated(state.editorIM)) { - return /* Editor */0; + return "Editor"; } else if (IM$AgdaModeVscode.isActivated(state.promptIM)) { - return /* Prompt */1; + return "Prompt"; } else { - return /* None */2; + return "None"; } } function deactivate(state) { var match = isActivated(state); switch (match) { - case /* Editor */0 : - return runAndHandle(state, /* Deactivate */0); - case /* Prompt */1 : - return runAndHandle$1(state, /* Deactivate */0); - case /* None */2 : - return $$Promise.resolved(undefined); + case "Editor" : + return runAndHandle(state, "Deactivate"); + case "Prompt" : + return runAndHandle$1(state, "Deactivate"); + case "None" : + return Promise.resolve(); } } -var activationKey = Config$AgdaModeVscode.InputMethod.getActivationKey(undefined); +var activationKey = Config$AgdaModeVscode.InputMethod.getActivationKey(); -function activateEditorIM(state) { +async function activateEditorIM(state) { var match = isActivated(state); switch (match) { - case /* Editor */0 : + case "Editor" : if (IM$AgdaModeVscode.bufferIsEmpty(state.editorIM)) { Belt_Array.forEach(Editor$AgdaModeVscode.Cursor.getMany(state.editor), (function (point) { Editor$AgdaModeVscode.$$Text.insert(state.document, point, activationKey); })); } - return $$Promise.flatMap(runAndHandle(state, /* Deactivate */0), (function (param) { - return activate(state); - })); - case /* Prompt */1 : - return $$Promise.flatMap(runAndHandle$1(state, /* Deactivate */0), (function (param) { - return activate(state); - })); - case /* None */2 : - return activate(state); + await runAndHandle(state, "Deactivate"); + return await activate(state); + case "Prompt" : + await runAndHandle$1(state, "Deactivate"); + return await activate(state); + case "None" : + return await activate(state); } } -function keyUpdatePromptIM(state, input) { +async function keyUpdatePromptIM(state, input) { var match = isActivated(state); switch (match) { - case /* Editor */0 : + case "Editor" : if (Js_string.endsWith(activationKey, input)) { - return $$Promise.flatMap(runAndHandle(state, /* Deactivate */0), (function (param) { - return activate$1(state, input); - })); + await runAndHandle(state, "Deactivate"); + return await activate$1(state, input); } else { - return State__View$AgdaModeVscode.Panel.updatePromptIM(state, input); + return await State__View$AgdaModeVscode.Panel.updatePromptIM(state, input); } - case /* Prompt */1 : - return keyUpdate(state, input); - case /* None */2 : + case "Prompt" : + return await keyUpdate(state, input); + case "None" : if (Js_string.endsWith(activationKey, input)) { - return activate$1(state, input); + return await activate$1(state, input); } else { - return State__View$AgdaModeVscode.Panel.updatePromptIM(state, input); + return await State__View$AgdaModeVscode.Panel.updatePromptIM(state, input); } } @@ -241,82 +234,84 @@ function keyUpdatePromptIM(state, input) { function keyUpdateEditorIM(state, changes) { var match = isActivated(state); - if (match !== 0) { - return $$Promise.resolved(undefined); - } else { - return handle(state, IM$AgdaModeVscode.run(state.editorIM, Caml_option.some(state.editor), { - TAG: 1, - _0: changes, - [Symbol.for("name")]: "KeyUpdate" - })); + switch (match) { + case "Editor" : + return handle(state, IM$AgdaModeVscode.run(state.editorIM, Caml_option.some(state.editor), { + TAG: "KeyUpdate", + _0: changes, + [Symbol.for("name")]: "KeyUpdate" + })); + case "Prompt" : + case "None" : + return Promise.resolve(); + } } function select(state, intervals) { var match = isActivated(state); switch (match) { - case /* Editor */0 : + case "Editor" : return runAndHandle(state, { - TAG: 2, + TAG: "MouseSelect", _0: intervals, [Symbol.for("name")]: "MouseSelect" }); - case /* Prompt */1 : + case "Prompt" : return runAndHandle$1(state, { - TAG: 2, + TAG: "MouseSelect", _0: intervals, [Symbol.for("name")]: "MouseSelect" }); - case /* None */2 : - return $$Promise.resolved(undefined); + case "None" : + return Promise.resolve(); } } -function chooseSymbol(state, symbol) { +async function chooseSymbol(state, symbol) { var match = isActivated(state); switch (match) { - case /* Editor */0 : - return $$Promise.flatMap(runAndHandle(state, { - TAG: 3, - _0: { - _0: symbol, - [Symbol.for("name")]: "ChooseSymbol" - }, - [Symbol.for("name")]: "Candidate" - }), (function (param) { - return deactivate(state); - })); - case /* Prompt */1 : - return $$Promise.flatMap(runAndHandle$1(state, { - TAG: 3, - _0: { - _0: symbol, - [Symbol.for("name")]: "ChooseSymbol" - }, - [Symbol.for("name")]: "Candidate" - }), (function (param) { - return deactivate(state); - })); - case /* None */2 : - return $$Promise.resolved(undefined); + case "Editor" : + await runAndHandle(state, { + TAG: "Candidate", + _0: { + TAG: "ChooseSymbol", + _0: symbol, + [Symbol.for("name")]: "ChooseSymbol" + }, + [Symbol.for("name")]: "Candidate" + }); + return await deactivate(state); + case "Prompt" : + await runAndHandle$1(state, { + TAG: "Candidate", + _0: { + TAG: "ChooseSymbol", + _0: symbol, + [Symbol.for("name")]: "ChooseSymbol" + }, + [Symbol.for("name")]: "Candidate" + }); + return await deactivate(state); + case "None" : + return ; } } -function insertChar(state, $$char) { +async function insertChar$1(state, $$char) { var match = isActivated(state); switch (match) { - case /* Editor */0 : + case "Editor" : var $$char$1 = Js_string.charAt(0, $$char); var positions = Editor$AgdaModeVscode.Cursor.getMany(state.editor); - return $$Promise.map(Editor$AgdaModeVscode.$$Text.batchInsert(state.document, positions, $$char$1), (function (param) { - Editor$AgdaModeVscode.focus(state.document); - })); - case /* Prompt */1 : - return keyUpdate(state, previous.contents + $$char); - case /* None */2 : - return $$Promise.resolved(undefined); + await Editor$AgdaModeVscode.$$Text.batchInsert(state.document, positions, $$char$1); + return Editor$AgdaModeVscode.focus(state.document); + case "Prompt" : + return await insertChar(state, $$char); + case "None" : + return ; } } @@ -324,20 +319,20 @@ function insertChar(state, $$char) { function moveUp(state) { var match = isActivated(state); switch (match) { - case /* Editor */0 : + case "Editor" : return runAndHandle(state, { - TAG: 3, - _0: /* BrowseUp */0, + TAG: "Candidate", + _0: "BrowseUp", [Symbol.for("name")]: "Candidate" }); - case /* Prompt */1 : + case "Prompt" : return runAndHandle$1(state, { - TAG: 3, - _0: /* BrowseUp */0, + TAG: "Candidate", + _0: "BrowseUp", [Symbol.for("name")]: "Candidate" }); - case /* None */2 : - return $$Promise.resolved(undefined); + case "None" : + return Promise.resolve(); } } @@ -345,20 +340,20 @@ function moveUp(state) { function moveDown(state) { var match = isActivated(state); switch (match) { - case /* Editor */0 : + case "Editor" : return runAndHandle(state, { - TAG: 3, - _0: /* BrowseDown */1, + TAG: "Candidate", + _0: "BrowseDown", [Symbol.for("name")]: "Candidate" }); - case /* Prompt */1 : + case "Prompt" : return runAndHandle$1(state, { - TAG: 3, - _0: /* BrowseDown */1, + TAG: "Candidate", + _0: "BrowseDown", [Symbol.for("name")]: "Candidate" }); - case /* None */2 : - return $$Promise.resolved(undefined); + case "None" : + return Promise.resolve(); } } @@ -366,20 +361,20 @@ function moveDown(state) { function moveLeft(state) { var match = isActivated(state); switch (match) { - case /* Editor */0 : + case "Editor" : return runAndHandle(state, { - TAG: 3, - _0: /* BrowseLeft */2, + TAG: "Candidate", + _0: "BrowseLeft", [Symbol.for("name")]: "Candidate" }); - case /* Prompt */1 : + case "Prompt" : return runAndHandle$1(state, { - TAG: 3, - _0: /* BrowseLeft */2, + TAG: "Candidate", + _0: "BrowseLeft", [Symbol.for("name")]: "Candidate" }); - case /* None */2 : - return $$Promise.resolved(undefined); + case "None" : + return Promise.resolve(); } } @@ -387,20 +382,20 @@ function moveLeft(state) { function moveRight(state) { var match = isActivated(state); switch (match) { - case /* Editor */0 : + case "Editor" : return runAndHandle(state, { - TAG: 3, - _0: /* BrowseRight */3, + TAG: "Candidate", + _0: "BrowseRight", [Symbol.for("name")]: "Candidate" }); - case /* Prompt */1 : + case "Prompt" : return runAndHandle$1(state, { - TAG: 3, - _0: /* BrowseRight */3, + TAG: "Candidate", + _0: "BrowseRight", [Symbol.for("name")]: "Candidate" }); - case /* None */2 : - return $$Promise.resolved(undefined); + case "None" : + return Promise.resolve(); } } @@ -408,7 +403,7 @@ function moveRight(state) { var Module = { deactivate: deactivate, select: select, - insertChar: insertChar, + insertChar: insertChar$1, chooseSymbol: chooseSymbol, moveUp: moveUp, moveDown: moveDown, @@ -422,7 +417,7 @@ var Module = { exports.Module = Module; exports.deactivate = deactivate; exports.select = select; -exports.insertChar = insertChar; +exports.insertChar = insertChar$1; exports.chooseSymbol = chooseSymbol; exports.moveUp = moveUp; exports.moveDown = moveDown; diff --git a/lib/js/src/State/State__Response.bs.js b/lib/js/src/State/State__Response.bs.js index 6bee3df9..f2aee0f4 100644 --- a/lib/js/src/State/State__Response.bs.js +++ b/lib/js/src/State/State__Response.bs.js @@ -1,9 +1,7 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Curry = require("rescript/lib/js/curry.js"); var Vscode = require("vscode"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Chan$AgdaModeVscode = require("../Util/Chan.bs.js"); @@ -25,21 +23,21 @@ function removeNewlines(string) { })); } -function handle(state, x) { - switch (x.TAG | 0) { - case /* Generic */0 : - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 0, +async function handle(state, x) { + switch (x.TAG) { + case "Generic" : + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Plain", _0: x._0, [Symbol.for("name")]: "Plain" }, x._1); - case /* CompilationOk */1 : - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 1, + case "CompilationOk" : + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Success", _0: "Compilation result", [Symbol.for("name")]: "Success" }, [Item$AgdaModeVscode.plainText(x._0)]); - case /* CompilationOkLSP */2 : + case "CompilationOkLSP" : var message = [Item$AgdaModeVscode.plainText("The module was successfully compiled.")]; var errors = Belt_Array.map(x._1, (function (raw) { return Item$AgdaModeVscode.error(RichText$AgdaModeVscode.string(raw), raw); @@ -47,8 +45,8 @@ function handle(state, x) { var warnings = Belt_Array.map(x._0, (function (raw) { return Item$AgdaModeVscode.warning(RichText$AgdaModeVscode.string(raw), raw); })); - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 1, + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Success", _0: "Compilation result", [Symbol.for("name")]: "Success" }, Belt_Array.concatMany([ @@ -56,46 +54,46 @@ function handle(state, x) { errors, warnings ])); - case /* Constraints */3 : + case "Constraints" : var body = x._0; if (body === undefined) { - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 0, + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Plain", _0: "No Constraints", [Symbol.for("name")]: "Plain" }, []); } var items = Emacs__Parser2$AgdaModeVscode.parseOutputs(body); - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 0, + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Plain", _0: "Constraints", [Symbol.for("name")]: "Plain" }, items); - case /* AllGoalsWarnings */4 : + case "AllGoalsWarnings" : var body$1 = x._1; var header = x._0; if (body$1 === "nil") { - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 1, + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Success", _0: header, [Symbol.for("name")]: "Success" }, []); } var items$1 = Emacs__Parser2$AgdaModeVscode.render(Emacs__Parser2$AgdaModeVscode.parseAllGoalsWarnings(header, body$1)); - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 0, + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Plain", _0: header, [Symbol.for("name")]: "Plain" }, items$1); - case /* AllGoalsWarningsLSP */5 : + case "AllGoalsWarningsLSP" : var errors$1 = Belt_Array.map(x._4, (function (raw) { return Item$AgdaModeVscode.error(RichText$AgdaModeVscode.string(raw), raw); })); var warnings$1 = Belt_Array.map(x._3, (function (raw) { return Item$AgdaModeVscode.warning(RichText$AgdaModeVscode.string(raw), raw); })); - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 0, + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Plain", _0: x._0, [Symbol.for("name")]: "Plain" }, Belt_Array.concatMany([ @@ -104,112 +102,111 @@ function handle(state, x) { errors$1, warnings$1 ])); - case /* Time */6 : + case "Time" : var items$2 = Emacs__Parser2$AgdaModeVscode.parseAndRenderTextWithLocation(x._0); - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 0, + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Plain", _0: "Time", [Symbol.for("name")]: "Plain" }, items$2); - case /* Error */7 : + case "Error" : var items$3 = Emacs__Parser2$AgdaModeVscode.render(Emacs__Parser2$AgdaModeVscode.parseError(x._0)); - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 3, + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Error", _0: "Error", [Symbol.for("name")]: "Error" }, items$3); - case /* Intro */8 : + case "Intro" : var items$4 = Emacs__Parser2$AgdaModeVscode.parseAndRenderTextWithLocation(x._0); - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 0, + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Plain", _0: "Intro", [Symbol.for("name")]: "Plain" }, items$4); - case /* Auto */9 : + case "Auto" : var items$5 = Emacs__Parser2$AgdaModeVscode.parseAndRenderTextWithLocation(x._0); - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 0, + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Plain", _0: "Auto", [Symbol.for("name")]: "Plain" }, items$5); - case /* ModuleContents */10 : + case "ModuleContents" : var items$6 = Emacs__Parser2$AgdaModeVscode.parseAndRenderTextWithLocation(x._0); - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 0, + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Plain", _0: "Module Contents", [Symbol.for("name")]: "Plain" }, items$6); - case /* SearchAbout */11 : + case "SearchAbout" : var items$7 = Emacs__Parser2$AgdaModeVscode.parseAndRenderSearchAbout(x._0); - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 0, + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Plain", _0: "Search About", [Symbol.for("name")]: "Plain" }, items$7); - case /* WhyInScope */12 : + case "WhyInScope" : var items$8 = Emacs__Parser2$AgdaModeVscode.parseAndRenderTextWithLocation(x._0); - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 0, + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Plain", _0: "Scope info", [Symbol.for("name")]: "Plain" }, items$8); - case /* NormalForm */13 : + case "NormalForm" : var items$9 = Emacs__Parser2$AgdaModeVscode.parseAndRenderTextWithLocation(x._0); - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 0, + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Plain", _0: "Normal form", [Symbol.for("name")]: "Plain" }, items$9); - case /* GoalType */14 : + case "GoalType" : var items$10 = Emacs__Parser2$AgdaModeVscode.render(Emacs__Parser2$AgdaModeVscode.parseGoalType(x._0)); - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 0, + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Plain", _0: "Goal and Context", [Symbol.for("name")]: "Plain" }, items$10); - case /* CurrentGoal */15 : - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 0, + case "CurrentGoal" : + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Plain", _0: "Current Goal", [Symbol.for("name")]: "Plain" }, [Item$AgdaModeVscode.plainText(x._0)]); - case /* CurrentGoalLSP */16 : - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 0, + case "CurrentGoalLSP" : + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Plain", _0: "Current Goal", [Symbol.for("name")]: "Plain" }, [x._0]); - case /* InferredType */17 : - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 0, + case "InferredType" : + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Plain", _0: "Inferred type", [Symbol.for("name")]: "Plain" }, [Item$AgdaModeVscode.plainText(x._0)]); - case /* InferredTypeLSP */18 : - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 0, + case "InferredTypeLSP" : + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Plain", _0: "Inferred type", [Symbol.for("name")]: "Plain" }, [x._0]); - case /* Context */19 : + case "Context" : var items$11 = Emacs__Parser2$AgdaModeVscode.parseOutputs(x._0); - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 0, + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Plain", _0: "Context", [Symbol.for("name")]: "Plain" }, items$11); - case /* HelperFunction */20 : + case "HelperFunction" : var payload = x._0; - return $$Promise.flatMap(Vscode.env.clipboard.writeText(payload), (function (param) { - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 0, - _0: "Helper function (copied to clipboard)", - [Symbol.for("name")]: "Plain" - }, [Item$AgdaModeVscode.plainText(payload)]); - })); - case /* Version */21 : - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 0, + await Vscode.env.clipboard.writeText(payload); + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Plain", + _0: "Helper function (copied to clipboard)", + [Symbol.for("name")]: "Plain" + }, [Item$AgdaModeVscode.plainText(payload)]); + case "Version" : + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Plain", _0: "Version", [Symbol.for("name")]: "Plain" }, [Item$AgdaModeVscode.plainText(x._0)]); @@ -221,264 +218,242 @@ var DisplayInfo = { handle: handle }; -function handle$1(state, dispatchCommand, response) { - var handleResponse; - if (typeof response === "number") { - switch (response) { - case /* ClearHighlighting */1 : - Tokens$AgdaModeVscode.clear(state.tokens); - Highlighting$AgdaModeVscode.clear(state.highlighting); - handleResponse = $$Promise.resolved({ - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }); - break; - case /* CompleteHighlightingAndMakePromptReappear */4 : - handleResponse = $$Promise.flatMap(Tokens$AgdaModeVscode.readTempFiles(state.tokens, state.editor), (function (param) { - return $$Promise.map(Highlighting$AgdaModeVscode.apply(state.highlighting, state.tokens, state.editor), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - })); - break; - default: - handleResponse = $$Promise.resolved({ - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }); - } - } else { - switch (response.TAG | 0) { - case /* HighlightingInfoDirect */0 : - Tokens$AgdaModeVscode.insert(state.tokens, state.editor, response._1); - handleResponse = $$Promise.resolved({ - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }); - break; - case /* HighlightingInfoIndirect */1 : - Tokens$AgdaModeVscode.addEmacsFilePath(state.tokens, response._0); - handleResponse = $$Promise.resolved({ - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }); - break; - case /* HighlightingInfoIndirectJSON */2 : - Tokens$AgdaModeVscode.addJSONFilePath(state.tokens, response._0); - handleResponse = $$Promise.resolved({ - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }); - break; - case /* Status */3 : - handleResponse = $$Promise.resolved({ - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }); - break; - case /* JumpToError */4 : - var path = Parser$AgdaModeVscode.filepath(state.document.fileName); - if (path === response._0) { - var point = state.document.positionAt(response._1 - 1 | 0); - Editor$AgdaModeVscode.Cursor.set(state.editor, point); - } - handleResponse = $$Promise.resolved({ - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }); - break; - case /* InteractionPoints */5 : - handleResponse = $$Promise.map(State__Goal$AgdaModeVscode.instantiate(state, response._0), (function (param) { +async function handle$1(state, dispatchCommand, response) { + var sendAgdaRequest = function (extra) { + return State$AgdaModeVscode.sendRequest(state, (function (extra) { + return handle$1(state, dispatchCommand, extra); + }), extra); + }; + var handleResponse = async function () { + if (typeof response !== "object") { + switch (response) { + case "ClearHighlighting" : + Tokens$AgdaModeVscode.clear(state.tokens); + Highlighting$AgdaModeVscode.clear(state.highlighting); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "CompleteHighlightingAndMakePromptReappear" : + await Tokens$AgdaModeVscode.readTempFiles(state.tokens, state.editor); + await Highlighting$AgdaModeVscode.apply(state.highlighting, state.tokens, state.editor); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + default: + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + } else { + switch (response.TAG) { + case "HighlightingInfoDirect" : + Tokens$AgdaModeVscode.insert(state.tokens, state.editor, response._1); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "HighlightingInfoIndirect" : + Tokens$AgdaModeVscode.addEmacsFilePath(state.tokens, response._0); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "HighlightingInfoIndirectJSON" : + Tokens$AgdaModeVscode.addJSONFilePath(state.tokens, response._0); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "Status" : + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "JumpToError" : + var path = Parser$AgdaModeVscode.filepath(state.document.fileName); + if (path === response._0) { + var point = state.document.positionAt(response._1 - 1 | 0); + Editor$AgdaModeVscode.Cursor.set(state.editor, point); + } + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "InteractionPoints" : + await State__Goal$AgdaModeVscode.instantiate(state, response._0); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "GiveAction" : + var give = response._1; + var index = response._0; + var found = Belt_Array.keep(state.goals, (function (goal) { + return goal.index === index; + })); + var goal = Belt_Array.get(found, 0); + if (goal !== undefined) { + if (typeof give !== "object") { + if (give === "GiveParen") { + await State__Goal$AgdaModeVscode.modify(state, goal, (function (content) { + return "(" + (content + ")"); + })); + await State__Goal$AgdaModeVscode.removeBoundaryAndDestroy(state, goal); return { - TAG: 0, + TAG: "Ok", _0: undefined, [Symbol.for("name")]: "Ok" }; - })); - break; - case /* GiveAction */6 : - var give = response._1; - var index = response._0; - var found = Belt_Array.keep(state.goals, (function (goal) { - return goal.index === index; - })); - var goal = Belt_Array.get(found, 0); - if (goal !== undefined) { - if (typeof give === "number") { - handleResponse = give !== 0 ? $$Promise.map(State__Goal$AgdaModeVscode.removeBoundaryAndDestroy(state, goal), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })) : $$Promise.map($$Promise.flatMap(State__Goal$AgdaModeVscode.modify(state, goal, (function (content) { - return "(" + (content + ")"); - })), (function (param) { - return State__Goal$AgdaModeVscode.removeBoundaryAndDestroy(state, goal); - })), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + } + await State__Goal$AgdaModeVscode.removeBoundaryAndDestroy(state, goal); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } else { + var content = give._0; + await State__Goal$AgdaModeVscode.modify(state, goal, (function (param) { + return Js_string.replaceByRe(/\\\\n/g, "\n", content); })); + await State__Goal$AgdaModeVscode.removeBoundaryAndDestroy(state, goal); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } } else { - var content = give._0; - handleResponse = $$Promise.map($$Promise.flatMap(State__Goal$AgdaModeVscode.modify(state, goal, (function (param) { - return Js_string.replaceByRe(/\\\\n/g, "\n", content); - })), (function (param) { - return State__Goal$AgdaModeVscode.removeBoundaryAndDestroy(state, goal); - })), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); + await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Error", + _0: "Error: Give failed", + [Symbol.for("name")]: "Error" + }, [Item$AgdaModeVscode.plainText("Cannot find goal #" + String(index))]); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; } - } else { - handleResponse = $$Promise.map(State__View$AgdaModeVscode.Panel.display(state, { - TAG: 3, - _0: "Error: Give failed", - [Symbol.for("name")]: "Error" - }, [Item$AgdaModeVscode.plainText("Cannot find goal #" + String(index))]), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } - break; - case /* MakeCase */7 : - var lines = response._1; - var match = State__Goal$AgdaModeVscode.pointed(state); - if (match !== undefined) { - var goal$1 = match[0]; - handleResponse = $$Promise.flatMap(response._0 ? State__Goal$AgdaModeVscode.replaceWithLambda(state, goal$1, lines) : State__Goal$AgdaModeVscode.replaceWithLines(state, goal$1, lines), (function (param) { - return Curry._1(dispatchCommand, /* Load */0); - })); - } else { - handleResponse = $$Promise.map(State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } - break; - case /* SolveAll */8 : - var solutions = response._0; - var solveOne = function (param) { - var solution = param[1]; - var index = param[0]; - var goals = Belt_Array.keep(state.goals, (function (goal) { - return goal.index === index; - })); - var goal = Belt_Array.get(goals, 0); - if (goal !== undefined) { - return $$Promise.flatMap(State__Goal$AgdaModeVscode.modify(state, goal, (function (param) { - return solution; - })), (function (param) { - var param$1 = { - TAG: 4, - _0: goal, - [Symbol.for("name")]: "Give" - }; - return State$AgdaModeVscode.sendRequest(state, (function (param) { - return handle$1(state, dispatchCommand, param); - }), param$1); - })); + case "MakeCase" : + var lines = response._1; + var match = State__Goal$AgdaModeVscode.pointed(state); + if (match !== undefined) { + var goal$1 = match[0]; + if (response._0 === "Function") { + await State__Goal$AgdaModeVscode.replaceWithLines(state, goal$1, lines); + } else { + await State__Goal$AgdaModeVscode.replaceWithLambda(state, goal$1, lines); + } + return await dispatchCommand("Load"); + } + await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "SolveAll" : + var solutions = response._0; + var solveOne = async function (param) { + var solution = param[1]; + var index = param[0]; + var goals = Belt_Array.keep(state.goals, (function (goal) { + return goal.index === index; + })); + var goal = Belt_Array.get(goals, 0); + if (goal !== undefined) { + await State__Goal$AgdaModeVscode.modify(state, goal, (function (param) { + return solution; + })); + return await sendAgdaRequest({ + TAG: "Give", + _0: goal, + [Symbol.for("name")]: "Give" + }); + } else { + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + }; + await Util$AgdaModeVscode.oneByOne(Belt_Array.map(solutions, solveOne)); + var size = solutions.length; + if (size === 0) { + await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Error", + _0: "No solutions found", + [Symbol.for("name")]: "Error" + }, []); } else { - return $$Promise.resolved({ - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }); + await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Success", + _0: String(size) + " goals solved", + [Symbol.for("name")]: "Success" + }, []); + } + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "DisplayInfo" : + await handle(state, response._0); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + case "RunningInfo" : + var verbosity = response._0; + if (verbosity !== 1) { + var message = removeNewlines(response._1); + state.runningInfoLog.push([ + verbosity, + message + ]); + await State__View$AgdaModeVscode.DebugBuffer.displayInAppendMode([[ + verbosity, + message + ]]); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; } - }; - handleResponse = $$Promise.map($$Promise.flatMap(Util$AgdaModeVscode.oneByOne(Belt_Array.map(solutions, solveOne)), (function (param) { - var size = solutions.length; - if (size === 0) { - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 3, - _0: "No solutions found", - [Symbol.for("name")]: "Error" - }, []); - } else { - return State__View$AgdaModeVscode.Panel.display(state, { - TAG: 1, - _0: String(size) + " goals solved", - [Symbol.for("name")]: "Success" - }, []); - } - })), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - break; - case /* DisplayInfo */9 : - handleResponse = $$Promise.map(handle(state, response._0), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - break; - case /* RunningInfo */10 : - var verbosity = response._0; - if (verbosity !== 1) { - var message = removeNewlines(response._1); - state.runningInfoLog.push([ - verbosity, - message - ]); - handleResponse = $$Promise.map(State__View$AgdaModeVscode.DebugBuffer.displayInAppendMode([[ - verbosity, - message - ]]), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } else { var message$1 = removeNewlines(response._1); - handleResponse = $$Promise.map(State__View$AgdaModeVscode.Panel.displayInAppendMode(state, { - TAG: 0, - _0: "Type-checking", - [Symbol.for("name")]: "Plain" - }, [Item$AgdaModeVscode.plainText(message$1)]), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - } - break; - + await State__View$AgdaModeVscode.Panel.displayInAppendMode(state, { + TAG: "Plain", + _0: "Type-checking", + [Symbol.for("name")]: "Plain" + }, [Item$AgdaModeVscode.plainText(message$1)]); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + + } } - } - return $$Promise.tapOk(handleResponse, (function (param) { - Chan$AgdaModeVscode.emit(state.channels.responseHandled, response); - })); + }; + var result = await handleResponse(); + Chan$AgdaModeVscode.emit(state.channels.responseHandled, response); + return result; } exports.removeNewlines = removeNewlines; diff --git a/lib/js/src/State/State__Type.bs.js b/lib/js/src/State/State__Type.bs.js index 71278cde..c601c149 100644 --- a/lib/js/src/State/State__Type.bs.js +++ b/lib/js/src/State/State__Type.bs.js @@ -1,14 +1,13 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Curry = require("rescript/lib/js/curry.js"); var Vscode = require("vscode"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Js_array = require("rescript/lib/js/js_array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); +var Util$AgdaModeVscode = require("../Util/Util.bs.js"); var WebviewPanel$AgdaModeVscode = require("../View/WebviewPanel.bs.js"); -function make(param) { +function make() { return { queue: [], busy: false @@ -22,19 +21,22 @@ function kickStart(self) { var thunk = self.queue.shift(); if (thunk !== undefined) { self.busy = true; - return $$Promise.get(Curry._1(thunk, undefined), (function (param) { - self.busy = false; - kickStart(self); - })); + thunk().finally(function () { + self.busy = false; + kickStart(self); + }); + return ; } } function push(self, sendRequestAndHandleResponses, request) { - var match = $$Promise.pending(undefined); + var match = Util$AgdaModeVscode.Promise_.pending(); var resolve = match[1]; - var thunk = function (param) { - return $$Promise.tap(Curry._1(sendRequestAndHandleResponses, request), resolve); + var thunk = async function () { + var response = await sendRequestAndHandleResponses(request); + resolve(response); + return response; }; Js_array.push(thunk, self.queue); kickStart(self); @@ -46,7 +48,7 @@ var RequestQueue = { push: push }; -function make$1(param) { +function make$1() { return { display: undefined, prompt: undefined @@ -54,7 +56,7 @@ function make$1(param) { } function cacheEvent(self, $$event) { - if (typeof $$event === "number" || $$event.TAG !== /* Display */0) { + if (typeof $$event !== "object" || $$event.TAG !== "Display") { return ; } else { self.display = [ @@ -81,6 +83,7 @@ function restore(self, view) { var match = self.prompt; if (match !== undefined) { WebviewPanel$AgdaModeVscode.sendRequest(view, { + TAG: "Prompt", _0: match[0], _1: match[1], [Symbol.for("name")]: "Prompt" @@ -89,7 +92,7 @@ function restore(self, view) { } else { return Belt_Option.forEach(self.display, (function (param) { WebviewPanel$AgdaModeVscode.sendEvent(view, { - TAG: 0, + TAG: "Display", _0: param[0], _1: param[1], [Symbol.for("name")]: "Display" diff --git a/lib/js/src/State/State__View.bs.js b/lib/js/src/State/State__View.bs.js index 578375e5..28981938 100644 --- a/lib/js/src/State/State__View.bs.js +++ b/lib/js/src/State/State__View.bs.js @@ -1,8 +1,6 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Curry = require("rescript/lib/js/curry.js"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Item$AgdaModeVscode = require("../View/Component/Item.bs.js"); @@ -19,16 +17,16 @@ function get(state) { function sendEvent(state, $$event) { State__Type$AgdaModeVscode.ViewCache.cacheEvent(state.panelCache, $$event); - return WebviewPanel$AgdaModeVscode.sendEvent(Singleton$AgdaModeVscode.Panel.make(state.extensionPath), $$event); + return WebviewPanel$AgdaModeVscode.sendEvent(get(state), $$event); } function restore(state) { - State__Type$AgdaModeVscode.ViewCache.restore(state.panelCache, Singleton$AgdaModeVscode.Panel.make(state.extensionPath)); + State__Type$AgdaModeVscode.ViewCache.restore(state.panelCache, get(state)); } function display(state, header, body) { return sendEvent(state, { - TAG: 0, + TAG: "Display", _0: header, _1: body, [Symbol.for("name")]: "Display" @@ -37,7 +35,7 @@ function display(state, header, body) { function displayInAppendMode(state, header, body) { return sendEvent(state, { - TAG: 1, + TAG: "Append", _0: header, _1: body, [Symbol.for("name")]: "Append" @@ -46,7 +44,7 @@ function displayInAppendMode(state, header, body) { function displayOutOfGoalError(state) { return display(state, { - TAG: 3, + TAG: "Error", _0: "Out of goal", [Symbol.for("name")]: "Error" }, [Item$AgdaModeVscode.plainText("Please place the cursor in a goal")]); @@ -55,7 +53,7 @@ function displayOutOfGoalError(state) { function displayConnectionError(state, error) { var match = Connection__Error$AgdaModeVscode.toString(error); return display(state, { - TAG: 3, + TAG: "Error", _0: "Connection Error: " + match[0], [Symbol.for("name")]: "Error" }, [Item$AgdaModeVscode.plainText(match[1])]); @@ -63,48 +61,32 @@ function displayConnectionError(state, error) { function displayStatus(state, string) { return sendEvent(state, { - TAG: 2, + TAG: "SetStatus", _0: string, [Symbol.for("name")]: "SetStatus" }); } function displayConnectionStatus(state, status) { - if (status.TAG === /* Emacs */0) { - return sendEvent(state, { - TAG: 2, - _0: "Emacs v" + status._0, - [Symbol.for("name")]: "SetStatus" - }); + if (status.TAG === "Emacs") { + return displayStatus(state, "Emacs v" + status._0); } var match = status._1; var version = status._0; - if (match.TAG !== /* ViaCommand */0) { - return sendEvent(state, { - TAG: 2, - _0: "ALS (TCP)", - [Symbol.for("name")]: "SetStatus" - }); + if (match.TAG !== "ViaPipe") { + return displayStatus(state, "ALS (TCP)"); } var match$1 = match._3; - if (match$1.TAG === /* FromGitHub */3) { - return sendEvent(state, { - TAG: 2, - _0: "ALS prebuilt " + match$1._1.tag_name + " (Agda v" + version + ")", - [Symbol.for("name")]: "SetStatus" - }); + if (match$1.TAG === "FromGitHub") { + return displayStatus(state, "ALS prebuilt " + match$1._1.tag_name + " (Agda v" + version + ")"); } else { - return sendEvent(state, { - TAG: 2, - _0: "ALS v" + version, - [Symbol.for("name")]: "SetStatus" - }); + return displayStatus(state, "ALS v" + version); } } function updateIM(state, $$event) { return sendEvent(state, { - TAG: 4, + TAG: "InputMethod", _0: $$event, [Symbol.for("name")]: "InputMethod" }); @@ -112,7 +94,7 @@ function updateIM(state, $$event) { function updatePromptIM(state, content) { return sendEvent(state, { - TAG: 3, + TAG: "PromptIMUpdate", _0: content, [Symbol.for("name")]: "PromptIMUpdate" }); @@ -121,36 +103,33 @@ function updatePromptIM(state, content) { function prompt(state, header, prompt$1, callbackOnPromptSuccess) { State__Type$AgdaModeVscode.Context.setPrompt(true); var request = { + TAG: "Prompt", _0: header, _1: prompt$1, [Symbol.for("name")]: "Prompt" }; - var callback = function (response) { - if (response) { - return $$Promise.map(Curry._1(callbackOnPromptSuccess, response._0), (function (param) { - State__Type$AgdaModeVscode.Context.setPrompt(false); - Editor$AgdaModeVscode.focus(state.document); - State__Type$AgdaModeVscode.ViewCache.clearPrompt(state.panelCache); - })); - } else { + var callback = async function (response) { + if (typeof response !== "object") { State__Type$AgdaModeVscode.Context.setPrompt(false); Editor$AgdaModeVscode.focus(state.document); State__Type$AgdaModeVscode.ViewCache.clearPrompt(state.panelCache); - State__Type$AgdaModeVscode.ViewCache.restore(state.panelCache, Singleton$AgdaModeVscode.Panel.make(state.extensionPath)); - return $$Promise.resolved(undefined); + return State__Type$AgdaModeVscode.ViewCache.restore(state.panelCache, get(state)); } + await callbackOnPromptSuccess(response._0); + State__Type$AgdaModeVscode.Context.setPrompt(false); + Editor$AgdaModeVscode.focus(state.document); + return State__Type$AgdaModeVscode.ViewCache.clearPrompt(state.panelCache); }; State__Type$AgdaModeVscode.ViewCache.cacheRequest(state.panelCache, request, callback); - return WebviewPanel$AgdaModeVscode.sendRequest(Singleton$AgdaModeVscode.Panel.make(state.extensionPath), request, callback); + return WebviewPanel$AgdaModeVscode.sendRequest(get(state), request, callback); } -function interruptPrompt(state) { - return $$Promise.tap(sendEvent(state, /* PromptInterrupt */0), (function (param) { - State__Type$AgdaModeVscode.Context.setPrompt(false); - Editor$AgdaModeVscode.focus(state.document); - State__Type$AgdaModeVscode.ViewCache.clearPrompt(state.panelCache); - State__Type$AgdaModeVscode.ViewCache.restore(state.panelCache, Singleton$AgdaModeVscode.Panel.make(state.extensionPath)); - })); +async function interruptPrompt(state) { + await sendEvent(state, "PromptInterrupt"); + State__Type$AgdaModeVscode.Context.setPrompt(false); + Editor$AgdaModeVscode.focus(state.document); + State__Type$AgdaModeVscode.ViewCache.clearPrompt(state.panelCache); + return State__Type$AgdaModeVscode.ViewCache.restore(state.panelCache, get(state)); } var Panel = { @@ -172,14 +151,14 @@ function make(state) { return Singleton$AgdaModeVscode.DebugBuffer.make(state.extensionPath); } -function exists(param) { - return Belt_Option.isSome(Singleton$AgdaModeVscode.DebugBuffer.get(undefined)); +function exists() { + return Belt_Option.isSome(Singleton$AgdaModeVscode.DebugBuffer.get()); } var destroy = Singleton$AgdaModeVscode.DebugBuffer.destroy; function sendEvent$1($$event) { - return Belt_Option.mapWithDefault(Singleton$AgdaModeVscode.DebugBuffer.get(undefined), $$Promise.resolved(undefined), (function (x) { + return Belt_Option.mapWithDefault(Singleton$AgdaModeVscode.DebugBuffer.get(), Promise.resolve(), (function (x) { return WebviewPanel$AgdaModeVscode.sendEvent(x, $$event); })); } @@ -188,7 +167,7 @@ function display$1(msgs) { var body = Belt_Array.map(msgs, (function (param) { var body = RichText$AgdaModeVscode.string(param[1]); return { - TAG: 1, + TAG: "Unlabeled", _0: body, _1: undefined, _2: undefined, @@ -196,9 +175,9 @@ function display$1(msgs) { }; })); return sendEvent$1({ - TAG: 0, + TAG: "Display", _0: { - TAG: 0, + TAG: "Plain", _0: "Agda Debug Buffer", [Symbol.for("name")]: "Plain" }, @@ -211,7 +190,7 @@ function displayInAppendMode$1(msgs) { var body = Belt_Array.map(msgs, (function (param) { var body = RichText$AgdaModeVscode.string(param[1]); return { - TAG: 1, + TAG: "Unlabeled", _0: body, _1: undefined, _2: undefined, @@ -219,9 +198,9 @@ function displayInAppendMode$1(msgs) { }; })); return sendEvent$1({ - TAG: 1, + TAG: "Append", _0: { - TAG: 0, + TAG: "Plain", _0: "Agda Debug Buffer", [Symbol.for("name")]: "Plain" }, @@ -231,7 +210,7 @@ function displayInAppendMode$1(msgs) { } function reveal(state) { - return Belt_Option.mapWithDefault(Singleton$AgdaModeVscode.DebugBuffer.get(undefined), $$Promise.resolved(undefined), (function (debugBuffer) { + return Belt_Option.mapWithDefault(Singleton$AgdaModeVscode.DebugBuffer.get(), Promise.resolve(), (function (debugBuffer) { WebviewPanel$AgdaModeVscode.reveal(debugBuffer); return display$1(state.runningInfoLog); })); @@ -253,4 +232,4 @@ var DebugBuffer = { exports.Panel = Panel; exports.DebugBuffer = DebugBuffer; -/* Promise Not a pure module */ +/* Item-AgdaModeVscode Not a pure module */ diff --git a/lib/js/src/Tokens.bs.js b/lib/js/src/Tokens.bs.js index 6fa001ac..d21d969b 100644 --- a/lib/js/src/Tokens.bs.js +++ b/lib/js/src/Tokens.bs.js @@ -2,16 +2,14 @@ 'use strict'; var Fs = require("fs"); -var Util = require("util"); -var Curry = require("rescript/lib/js/curry.js"); var Vscode = require("vscode"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); +var Nodefs = require("node:fs"); var Caml_obj = require("rescript/lib/js/caml_obj.js"); var Js_array = require("rescript/lib/js/js_array.js"); var Belt_List = require("rescript/lib/js/belt_List.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); -var Pervasives = require("rescript/lib/js/pervasives.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); +var PervasivesU = require("rescript/lib/js/pervasivesU.js"); var Agda$AgdaModeVscode = require("./Agda.bs.js"); var Util$AgdaModeVscode = require("./Util/Util.bs.js"); var Json$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json.bs.js"); @@ -32,7 +30,7 @@ function toString(self) { } function parse(x) { - if (x.TAG === /* A */0) { + if (x.TAG === "A") { return ; } var xs = x._0; @@ -43,17 +41,17 @@ function parse(x) { switch (len) { case 3 : var start$p = xs[0]; - if (start$p.TAG !== /* A */0) { + if (start$p.TAG !== "A") { return ; } var end_$p = xs[1]; - if (end_$p.TAG !== /* A */0) { + if (end_$p.TAG !== "A") { return ; } var end_$p$1 = end_$p._0; var aspects = xs[2]; - return Belt_Option.flatMap(Pervasives.int_of_string_opt(start$p._0), (function (start) { - return Belt_Option.map(Pervasives.int_of_string_opt(end_$p$1), (function (end_) { + return Belt_Option.flatMap(PervasivesU.int_of_string_opt(start$p._0), (function (start) { + return Belt_Option.map(PervasivesU.int_of_string_opt(end_$p$1), (function (end_) { return { start: start - 1 | 0, end_: end_ - 1 | 0, @@ -66,17 +64,17 @@ function parse(x) { })); case 4 : var start$p$1 = xs[0]; - if (start$p$1.TAG !== /* A */0) { + if (start$p$1.TAG !== "A") { return ; } var end_$p$2 = xs[1]; - if (end_$p$2.TAG !== /* A */0) { + if (end_$p$2.TAG !== "A") { return ; } var end_$p$3 = end_$p$2._0; var aspects$1 = xs[2]; - return Belt_Option.flatMap(Pervasives.int_of_string_opt(start$p$1._0), (function (start) { - return Belt_Option.map(Pervasives.int_of_string_opt(end_$p$3), (function (end_) { + return Belt_Option.flatMap(PervasivesU.int_of_string_opt(start$p$1._0), (function (start) { + return Belt_Option.map(PervasivesU.int_of_string_opt(end_$p$3), (function (end_) { return { start: start - 1 | 0, end_: end_ - 1 | 0, @@ -94,17 +92,17 @@ function parse(x) { return ; case 6 : var start$p$2 = xs[0]; - if (start$p$2.TAG !== /* A */0) { + if (start$p$2.TAG !== "A") { return ; } var end_$p$4 = xs[1]; - if (end_$p$4.TAG !== /* A */0) { + if (end_$p$4.TAG !== "A") { return ; } var end_$p$5 = end_$p$4._0; var aspects$2 = xs[2]; var match = xs[5]; - if (match.TAG === /* A */0) { + if (match.TAG === "A") { return ; } var match$1 = match._0; @@ -112,18 +110,18 @@ function parse(x) { return ; } var filepath = match$1[0]; - if (filepath.TAG !== /* A */0) { + if (filepath.TAG !== "A") { return ; } var filepath$1 = filepath._0; var index$p = match$1[2]; - if (index$p.TAG !== /* A */0) { + if (index$p.TAG !== "A") { return ; } var index$p$1 = index$p._0; - return Belt_Option.flatMap(Pervasives.int_of_string_opt(start$p$2._0), (function (start) { - return Belt_Option.flatMap(Pervasives.int_of_string_opt(end_$p$5), (function (end_) { - return Belt_Option.map(Pervasives.int_of_string_opt(index$p$1), (function (index) { + return Belt_Option.flatMap(PervasivesU.int_of_string_opt(start$p$2._0), (function (start) { + return Belt_Option.flatMap(PervasivesU.int_of_string_opt(end_$p$5), (function (end_) { + return Belt_Option.map(PervasivesU.int_of_string_opt(index$p$1), (function (index) { return { start: start - 1 | 0, end_: end_ - 1 | 0, @@ -143,7 +141,9 @@ function parse(x) { } function parseDirectHighlightings(tokens) { - return Belt_Array.keepMap(Belt_Array.map(Js_array.sliceFrom(2, tokens), parse), (function (x) { + return Belt_Array.keepMap(Belt_Array.map((function (__x) { + return Js_array.sliceFrom(2, __x); + })(tokens), parse), (function (x) { return x; })); } @@ -174,66 +174,70 @@ var Token = { decodeResponseHighlightingInfoDirect: decodeResponseHighlightingInfoDirect }; -function readAndParse(format) { - return $$Promise.map($$Promise.Js.toResult($$Promise.Js.fromBsPromise(Util.promisify(function (prim0, prim1) { - Fs.readFile(prim0, prim1); - })(format._0))), (function (x) { - if (x.TAG !== /* Ok */0) { - return [ - false, - [] - ]; - } - var buffer = x._0; - if (format.TAG === /* Emacs */0) { - var match = Belt_Array.get(Parser$AgdaModeVscode.SExpression.parse(buffer.toString()), 0); - var tokens; - if (match !== undefined) { - if (match.TAG === /* Ok */0) { - var xs = match._0; - tokens = xs.TAG === /* A */0 ? [] : xs._0; - } else { - tokens = []; - } - } else { - tokens = []; - } - var match$1 = Belt_Array.get(tokens, 0); - var removeTokenBasedHighlighting = match$1 !== undefined && match$1.TAG === /* A */0 && match$1._0 === "remove" ? true : false; - var tokens$1 = Belt_Array.keepMap(Js_array.sliceFrom(1, tokens), parse); - return [ - removeTokenBasedHighlighting, - tokens$1 - ]; - } - var raw = buffer.toString(); - var json; - try { - json = JSON.parse(raw); - } - catch (_e){ - return [ - false, - [] - ]; - } - var _err = Json$JsonCombinators.decode(json, decodeResponseHighlightingInfoDirect); - if (_err.TAG === /* Ok */0) { - var match$2 = _err._0; - return [ - match$2[0], - match$2[1] - ]; - } - console.log("Error in decoding JSON: " + _err._0); - return [ - false, - [] - ]; - })); +async function readAndParse(format) { + try { + var fileHandle = await Nodefs.promises.open(format._0, "r"); + var buffer = await fileHandle.readFile(); + if (format.TAG === "Emacs") { + var match = Belt_Array.get(Parser$AgdaModeVscode.SExpression.parse(buffer.toString()), 0); + var tokens; + if (match !== undefined) { + if (match.TAG === "Ok") { + var xs = match._0; + tokens = xs.TAG === "A" ? [] : xs._0; + } else { + tokens = []; + } + } else { + tokens = []; + } + var match$1 = Belt_Array.get(tokens, 0); + var removeTokenBasedHighlighting = match$1 !== undefined && match$1.TAG === "A" && match$1._0 === "remove" ? true : false; + var tokens$1 = Belt_Array.keepMap(Js_array.sliceFrom(1, tokens), parse); + return [ + removeTokenBasedHighlighting, + tokens$1 + ]; + } + var raw = buffer.toString(); + var exit = 0; + var json; + try { + json = JSON.parse(raw); + exit = 1; + } + catch (_e){ + return [ + false, + [] + ]; + } + if (exit === 1) { + var _err = Json$JsonCombinators.decode(json, decodeResponseHighlightingInfoDirect); + if (_err.TAG === "Ok") { + var match$2 = _err._0; + return [ + match$2[0], + match$2[1] + ]; + } + console.log("Error in decoding JSON: " + _err._0); + return [ + false, + [] + ]; + } + + } + catch (exn){ + return [ + false, + [] + ]; + } } -function make(param) { +function make() { return { tempFiles: [], tokens: new BinarySearchTree.BinarySearchTree() @@ -282,7 +286,7 @@ function insert(self, editor, tokens) { function addEmacsFilePath(self, filepath) { Js_array.push({ - TAG: 0, + TAG: "Emacs", _0: filepath, [Symbol.for("name")]: "Emacs" }, self.tempFiles); @@ -290,21 +294,19 @@ function addEmacsFilePath(self, filepath) { function addJSONFilePath(self, filepath) { Js_array.push({ - TAG: 1, + TAG: "JSON", _0: filepath, [Symbol.for("name")]: "JSON" }, self.tempFiles); } -function readTempFiles(self, editor) { - return $$Promise.map($$Promise.map($$Promise.allArray(Belt_Array.map(self.tempFiles, readAndParse)), (function (xs) { - return Belt_Array.concatMany(Belt_Array.map(xs, (function (prim) { - return prim[1]; - }))); - })), (function (tokens) { - insert(self, editor, tokens); - self.tempFiles = []; - })); +async function readTempFiles(self, editor) { + var xs = await Promise.all(Belt_Array.map(self.tempFiles, readAndParse)); + var tokens = Belt_Array.concatMany(Belt_Array.map(xs, (function (prim) { + return prim[1]; + }))); + insert(self, editor, tokens); + self.tempFiles = []; } function clear(self) { @@ -334,24 +336,24 @@ function lookupSrcLoc(self, offset) { var offset = param[2]; var filepath = param[1]; var range = param[0]; - return $$Promise.map(Vscode.workspace.openTextDocument(filepath), (function ($$document) { - var text = Editor$AgdaModeVscode.$$Text.getAll($$document); - var offsetConverter = Agda$AgdaModeVscode.OffsetConverter.make(text); - var offset$1 = Agda$AgdaModeVscode.OffsetConverter.convert(offsetConverter, offset - 1 | 0); - var position = Editor$AgdaModeVscode.Position.fromOffset($$document, offset$1); - return [[ - range, - filepath, - position - ]]; - })); + return Vscode.workspace.openTextDocument(filepath).then(function ($$document) { + var text = Editor$AgdaModeVscode.$$Text.getAll($$document); + var offsetConverter = Agda$AgdaModeVscode.OffsetConverter.make(text); + var offset$1 = Agda$AgdaModeVscode.OffsetConverter.convert(offsetConverter, offset - 1 | 0); + var position = Editor$AgdaModeVscode.Position.fromOffset($$document, offset$1); + return [[ + range, + filepath, + position + ]]; + }); })); } function toDecorationsAndSemanticTokens(tokens, editor) { var match = Belt_Array.unzip(Belt_Array.keepMap(Belt_Array.concatMany(Belt_Array.map(AVLTree$AgdaModeVscode.toArray(tokens.tokens), (function (param) { var info = param[0]; - var ranges = Curry._2(Highlighting__SemanticToken$AgdaModeVscode.Module.SingleLineRange.splitRange, editor.document, param[1]); + var ranges = Highlighting__SemanticToken$AgdaModeVscode.Module.SingleLineRange.splitRange(editor.document, param[1]); return Belt_Array.map(ranges, (function (range) { return [ info.aspects, @@ -370,7 +372,7 @@ function toDecorationsAndSemanticTokens(tokens, editor) { return Belt_Option.map(x, (function (x) { return [ x, - Curry._1(Highlighting__SemanticToken$AgdaModeVscode.Module.SingleLineRange.toVsCodeRange, range) + Highlighting__SemanticToken$AgdaModeVscode.Module.SingleLineRange.toVsCodeRange(range) ]; })); })); diff --git a/lib/js/src/Util/Chan.bs.js b/lib/js/src/Util/Chan.bs.js index 2c39e09c..cb1471f9 100644 --- a/lib/js/src/Util/Chan.bs.js +++ b/lib/js/src/Util/Chan.bs.js @@ -1,222 +1,66 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Eventemitter3 = require("eventemitter3"); -function onNewListener(arg1, obj) { - return obj.on("newListener", arg1); +function on(prim0, prim1, prim2) { + return prim0.addListener(prim1, prim2); } -function onNewListener2(arg1, obj) { - return obj.on("newListener", arg1); +function on2(prim0, prim1, prim2) { + return prim0.addListener(prim1, prim2); } -function onNewListener3(arg1, obj) { - return obj.on("newListener", arg1); +function on3(prim0, prim1, prim2) { + return prim0.addListener(prim1, prim2); } -function onceNewListener(arg1, obj) { - return obj.once("newListener", arg1); +function removeListener(prim0, prim1, prim2) { + return prim0.off(prim1, prim2); } -function onceNewListener2(arg1, obj) { - return obj.once("newListener", arg1); +function removeListener2(prim0, prim1, prim2) { + return prim0.off(prim1, prim2); } -function onceNewListener3(arg1, obj) { - return obj.once("newListener", arg1); -} - -function onRemoveListener(arg1, obj) { - return obj.on("removeListener", arg1); -} - -function onceRemoveListener(arg1, obj) { - return obj.once("removeListener", arg1); -} - -function addListener(arg1, arg2, obj) { - return obj.addListener(arg1, arg2); -} - -function addListener2(arg1, arg2, obj) { - return obj.addListener(arg1, arg2); -} - -function addListener3(arg1, arg2, obj) { - return obj.addListener(arg1, arg2); -} - -function emit0(arg1, obj) { - return obj.emit(arg1); -} - -function emit(arg1, arg2, obj) { - return obj.emit(arg1, arg2); -} - -function emit2(arg1, arg2, arg3, obj) { - return obj.emit(arg1, arg2, arg3); -} - -function emit3(arg1, arg2, arg3, arg4, obj) { - return obj.emit(arg1, arg2, arg3, arg4); -} - -function eventNames(arg1, obj) { - return obj.eventNames(arg1); -} - -function listenerCount(arg1, obj) { - return obj.listenerCount(arg1); -} - -function listeners(arg1, obj) { - return obj.listeners(arg1); -} - -function listeners2(arg1, obj) { - return obj.listeners(arg1); -} - -function listeners3(arg1, obj) { - return obj.listeners(arg1); -} - -function off(arg1, arg2, obj) { - return obj.off(arg1, arg2); -} - -function off2(arg1, arg2, obj) { - return obj.off(arg1, arg2); -} - -function off3(arg1, arg2, obj) { - return obj.off(arg1, arg2); -} - -function once(arg1, arg2, obj) { - return obj.once(arg1, arg2); -} - -function once2(arg1, arg2, obj) { - return obj.once(arg1, arg2); -} - -function once3(arg1, arg2, obj) { - return obj.once(arg1, arg2); -} - -function prependListener(arg1, arg2, obj) { - return obj.prependListener(arg1, arg2); -} - -function prependListener2(arg1, arg2, obj) { - return obj.prependListener(arg1, arg2); -} - -function prependListener3(arg1, arg2, obj) { - return obj.prependListener(arg1, arg2); -} - -function prependOnceListener(arg1, arg2, obj) { - return obj.prependOnceListener(arg1, arg2); -} - -function prependOnceListener2(arg1, arg2, obj) { - return obj.prependOnceListener(arg1, arg2); -} - -function prependOnceListener3(arg1, arg2, obj) { - return obj.prependOnceListener(arg1, arg2); -} - -function removeAllListeners_(arg1, obj) { - return obj.removeAllListeners(arg1); -} - -function setMaxListeners(arg1, obj) { - return obj.setMaxListeners(arg1); -} - -function rawListeners(arg1, obj) { - return obj.rawListeners(arg1); -} - -function rawListeners2(arg1, obj) { - return obj.rawListeners(arg1); -} - -function rawListeners3(arg1, obj) { - return obj.rawListeners(arg1); +function removeListener3(prim0, prim1, prim2) { + return prim0.off(prim1, prim2); } var EventEmitter3 = { - onNewListener: onNewListener, - onNewListener2: onNewListener2, - onNewListener3: onNewListener3, - onceNewListener: onceNewListener, - onceNewListener2: onceNewListener2, - onceNewListener3: onceNewListener3, - onRemoveListener: onRemoveListener, - onceRemoveListener: onceRemoveListener, - addListener: addListener, - addListener2: addListener2, - addListener3: addListener3, - emit0: emit0, - emit: emit, - emit2: emit2, - emit3: emit3, - eventNames: eventNames, - listenerCount: listenerCount, - listeners: listeners, - listeners2: listeners2, - listeners3: listeners3, - off: off, - off2: off2, - off3: off3, - on: addListener, - on2: addListener2, - on3: addListener3, - once: once, - once2: once2, - once3: once3, - prependListener: prependListener, - prependListener2: prependListener2, - prependListener3: prependListener3, - prependOnceListener: prependOnceListener, - prependOnceListener2: prependOnceListener2, - prependOnceListener3: prependOnceListener3, - removeAllListeners_: removeAllListeners_, - removeListener: off, - removeListener2: off2, - removeListener3: off3, - setMaxListeners: setMaxListeners, - rawListeners: rawListeners, - rawListeners2: rawListeners2, - rawListeners3: rawListeners3 + on: on, + on2: on2, + on3: on3, + removeListener: removeListener, + removeListener2: removeListener2, + removeListener3: removeListener3 }; function make(prim) { return new Eventemitter3.EventEmitter(); } -function emit$1(self, x) { +function emit(self, x) { self.emit("data", x); } -function on(self, callback) { +function on$1(self, callback) { self.addListener("data", callback); - return function (param) { + return function () { self.off("data", callback); }; } -function once$1(self) { - var match = $$Promise.pending(undefined); - self.once("data", match[1]); - return match[0]; +function once(self) { + return new Promise((function (resolve, param) { + self.once("data", resolve); + })); +} + +function pipe(self, other) { + return on$1(self, (function (val) { + emit(other, val); + })); } function destroy(self) { @@ -225,17 +69,19 @@ function destroy(self) { var Module = { make: make, - emit: emit$1, - on: on, - once: once$1, + emit: emit, + on: on$1, + once: once, + pipe: pipe, destroy: destroy }; exports.EventEmitter3 = EventEmitter3; exports.Module = Module; exports.make = make; -exports.emit = emit$1; -exports.on = on; -exports.once = once$1; +exports.emit = emit; +exports.on = on$1; +exports.once = once; +exports.pipe = pipe; exports.destroy = destroy; -/* Promise Not a pure module */ +/* eventemitter3 Not a pure module */ diff --git a/lib/js/src/Util/Util.bs.js b/lib/js/src/Util/Util.bs.js index 5990dc6e..60555215 100644 --- a/lib/js/src/Util/Util.bs.js +++ b/lib/js/src/Util/Util.bs.js @@ -3,12 +3,9 @@ var Curry = require("rescript/lib/js/curry.js"); var React = require("react"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Js_array = require("rescript/lib/js/js_array.js"); -var Belt_List = require("rescript/lib/js/belt_List.js"); var Js_string = require("rescript/lib/js/js_string.js"); -var Belt_Array = require("rescript/lib/js/belt_Array.js"); -var Caml_option = require("rescript/lib/js/caml_option.js"); +var Core__List = require("@rescript/core/lib/js/src/Core__List.bs.js"); var Caml_exceptions = require("rescript/lib/js/caml_exceptions.js"); var Caml_splice_call = require("rescript/lib/js/caml_splice_call.js"); var CompareVersions = require("compare-versions"); @@ -16,16 +13,16 @@ var Caml_js_exceptions = require("rescript/lib/js/caml_js_exceptions.js"); var Json_Decode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Decode.bs.js"); function mapError(x, f) { - if (x.TAG === /* Ok */0) { + if (x.TAG === "Ok") { return { - TAG: 0, + TAG: "Ok", _0: x._0, [Symbol.for("name")]: "Ok" }; } else { return { - TAG: 1, - _0: Curry._1(f, x._0), + TAG: "Error", + _0: f(x._0), [Symbol.for("name")]: "Error" }; } @@ -39,8 +36,8 @@ var $$Error = /* @__PURE__ */Caml_exceptions.create("Util-AgdaModeVscode.Error") function sum(decoder) { return Json_Decode$JsonCombinators.flatMap(Json_Decode$JsonCombinators.field("tag", Json_Decode$JsonCombinators.string), (function (tag) { - var d = Curry._1(decoder, tag); - if (d.TAG === /* Payload */0) { + var d = decoder(tag); + if (d.TAG === "Payload") { return Json_Decode$JsonCombinators.field("contents", d._0); } var d$1 = d._0; @@ -58,15 +55,15 @@ function tuple5(decodeA, decodeB, decodeC, decodeD, decodeE) { if (json.length !== 5) { throw { RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, - _1: "Expected array of length 5, got array of length " + String(json.length) + "", + _1: "Expected array of length 5, got array of length " + String(json.length), Error: new Error() }; } var run = function (decoder, xs, i) { - var x = Belt_Array.get(xs, i); + var x = xs[i]; if (x !== undefined) { - var x$1 = Json_Decode$JsonCombinators.decode(Caml_option.valFromOption(x), decoder); - if (x$1.TAG === /* Ok */0) { + var x$1 = Json_Decode$JsonCombinators.decode(x, decoder); + if (x$1.TAG === "Ok") { return x$1._0; } throw { @@ -95,7 +92,7 @@ function tuple5(decodeA, decodeB, decodeC, decodeD, decodeE) { if (msg.RE_EXN_ID === Json_Decode$JsonCombinators.DecodeError) { throw { RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, - _1: "" + msg._1 + "\n\tin tuple5", + _1: msg._1 + "\n\tin tuple5", Error: new Error() }; } @@ -112,15 +109,15 @@ function tuple6(decodeA, decodeB, decodeC, decodeD, decodeE, decodeF) { if (json.length !== 6) { throw { RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, - _1: "Expected array of length 6, got array of length " + String(json.length) + "", + _1: "Expected array of length 6, got array of length " + String(json.length), Error: new Error() }; } var run = function (decoder, xs, i) { - var x = Belt_Array.get(xs, i); + var x = xs[i]; if (x !== undefined) { - var x$1 = Json_Decode$JsonCombinators.decode(Caml_option.valFromOption(x), decoder); - if (x$1.TAG === /* Ok */0) { + var x$1 = Json_Decode$JsonCombinators.decode(x, decoder); + if (x$1.TAG === "Ok") { return x$1._0; } throw { @@ -150,7 +147,7 @@ function tuple6(decodeA, decodeB, decodeC, decodeD, decodeE, decodeF) { if (msg.RE_EXN_ID === Json_Decode$JsonCombinators.DecodeError) { throw { RE_EXN_ID: Json_Decode$JsonCombinators.DecodeError, - _1: "" + msg._1 + "\n\tin tuple6", + _1: msg._1 + "\n\tin tuple6", Error: new Error() }; } @@ -165,38 +162,40 @@ var Decode = { tuple6: tuple6 }; -function sum$1(f, x) { - var tag = Curry._1(f, x); - if (tag.TAG === /* Payload */0) { - return { - tag: tag._0, - contents: tag._1 - }; - } else { - return { - tag: tag._0 - }; - } +function sum$1(f) { + return function (x) { + var tag = f(x); + if (tag.TAG === "Payload") { + return { + tag: tag._0, + contents: tag._1 + }; + } else { + return { + tag: tag._0 + }; + } + }; } function tuple5$1(encodeA, encodeB, encodeC, encodeD, encodeE, param) { return [ - Curry._1(encodeA, param[0]), - Curry._1(encodeB, param[1]), - Curry._1(encodeC, param[2]), - Curry._1(encodeD, param[3]), - Curry._1(encodeE, param[4]) + encodeA(param[0]), + encodeB(param[1]), + encodeC(param[2]), + encodeD(param[3]), + encodeE(param[4]) ]; } function tuple6$1(encodeA, encodeB, encodeC, encodeD, encodeE, encodeF, param) { return [ - Curry._1(encodeA, param[0]), - Curry._1(encodeB, param[1]), - Curry._1(encodeC, param[2]), - Curry._1(encodeD, param[3]), - Curry._1(encodeE, param[4]), - Curry._1(encodeF, param[5]) + encodeA(param[0]), + encodeB(param[1]), + encodeC(param[2]), + encodeD(param[3]), + encodeE(param[4]), + encodeF(param[5]) ]; } @@ -224,15 +223,15 @@ function manyIn2(elems, elem, props) { function sepBy$p(item, sep) { if (!item) { - return React.createElement(React.Fragment, undefined); + return React.createElement(React.Fragment, {}); } var xs = item.tl; var x = item.hd; if (xs) { - return manyIn(Belt_List.toArray({ + return manyIn(Core__List.toArray({ hd: x, - tl: Belt_List.map(xs, (function (i) { - return React.createElement(React.Fragment, undefined, sep, i); + tl: Core__List.map(xs, (function (i) { + return React.createElement(React.Fragment, {}, sep, i); })) }), "span"); } else { @@ -241,11 +240,11 @@ function sepBy$p(item, sep) { } function sepBy(sep, xs) { - return sepBy$p(Belt_List.fromArray(xs), sep); + return sepBy$p(Core__List.fromArray(xs), sep); } function enclosedBy(front, back, item) { - return React.createElement(React.Fragment, undefined, front, " ", item, " ", back); + return React.createElement(React.Fragment, {}, front, " ", item, " ", back); } function when_(p, className) { @@ -284,18 +283,25 @@ function compare(a, b) { var match = CompareVersions(Curry._1(trim, a), Curry._1(trim, b)); if (match !== -1) { if (match !== 0) { - return /* GT */2; + return "GT"; } else { - return /* EQ */1; + return "EQ"; } } else { - return /* LT */0; + return "LT"; } } function gte(a, b) { var match = compare(a, b); - return match !== 0; + switch (match) { + case "LT" : + return false; + case "EQ" : + case "GT" : + return true; + + } } var Version = { @@ -309,7 +315,7 @@ function array(xs) { } function list(xs) { - return array(Belt_List.toArray(xs)); + return array(Core__List.toArray(xs)); } var Pretty = { @@ -317,23 +323,21 @@ var Pretty = { list: list }; -function oneByOne$p(x) { +async function oneByOne$p(x) { if (!x) { - return $$Promise.resolved(/* [] */0); + return /* [] */0; } - var xs = x.tl; - return $$Promise.flatMap(x.hd, (function (x$p) { - return $$Promise.map(oneByOne$p(xs), (function (xs$p) { - return { - hd: x$p, - tl: xs$p - }; - })); - })); + var x$p = await x.hd; + var result = await oneByOne$p(x.tl); + return { + hd: x$p, + tl: result + }; } -function oneByOne(xs) { - return $$Promise.map(oneByOne$p(Belt_List.fromArray(xs)), Belt_List.toArray); +async function oneByOne(xs) { + var xs$p = await oneByOne$p(Core__List.fromArray(xs)); + return Core__List.toArray(xs$p); } function toString(_e) { @@ -353,7 +357,7 @@ function span(p, xs) { } var xs$1 = xs.tl; var x = xs.hd; - if (!Curry._1(p, x)) { + if (!p(x)) { return [ /* [] */0, xs$1 @@ -377,7 +381,7 @@ function dropWhile(p, _xs) { } var xs$1 = xs.tl; var x = xs.hd; - if (!Curry._1(p, x)) { + if (!p(x)) { return { hd: x, tl: xs$1 @@ -393,34 +397,42 @@ var List = { dropWhile: dropWhile }; -function toPromise(p) { - return $$Promise.map($$Promise.Js.toResult($$Promise.Js.fromBsPromise(p)), (function (x) { - if (x.TAG !== /* Ok */0) { - return { - TAG: 1, - _0: x._0, - [Symbol.for("name")]: "Error" - }; - } - var x$1 = x._0; - if (x$1.TAG === /* Ok */0) { - return { - TAG: 0, - _0: x$1._0, - [Symbol.for("name")]: "Ok" - }; - } else { - return { - TAG: 1, - _0: x$1._0, - [Symbol.for("name")]: "Error" - }; - } - })); +function pending() { + var resolve = { + contents: undefined + }; + var reject = { + contents: undefined + }; + var promise = new Promise((function (res, rej) { + resolve.contents = res; + reject.contents = rej; + })); + var match = resolve.contents; + var match$1 = reject.contents; + if (match !== undefined) { + if (match$1 !== undefined) { + return [ + promise, + match, + match$1 + ]; + } + throw { + RE_EXN_ID: "Failure", + _1: "Promise is not initialized", + Error: new Error() + }; + } + throw { + RE_EXN_ID: "Failure", + _1: "Promise is not initialized", + Error: new Error() + }; } -var P = { - toPromise: toPromise +var Promise_ = { + pending: pending }; var $$delete = (function (dict, key) {delete dict[key]}); @@ -456,7 +468,7 @@ exports.oneByOne$p = oneByOne$p; exports.oneByOne = oneByOne; exports.JsError = JsError; exports.List = List; -exports.P = P; +exports.Promise_ = Promise_; exports.Dict = Dict; exports.$$String = $$String$1; /* react Not a pure module */ diff --git a/lib/js/src/View/Common.bs.js b/lib/js/src/View/Common.bs.js index 264263f0..cc321b36 100644 --- a/lib/js/src/View/Common.bs.js +++ b/lib/js/src/View/Common.bs.js @@ -4,8 +4,8 @@ var Caml_obj = require("rescript/lib/js/caml_obj.js"); var Belt_List = require("rescript/lib/js/belt_List.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); -var Pervasives = require("rescript/lib/js/pervasives.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); +var PervasivesU = require("rescript/lib/js/pervasivesU.js"); var Util$AgdaModeVscode = require("../Util/Util.bs.js"); var Json_Decode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Decode.bs.js"); var Json_Encode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Encode.bs.js"); @@ -21,12 +21,12 @@ var decode = Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.tuple3( function encode(param) { return Json_Encode$JsonCombinators.tuple3((function (prim) { - return prim; - }), (function (prim) { - return prim; - }), (function (prim) { - return prim; - }), [ + return prim; + }), (function (prim) { + return prim; + }), (function (prim) { + return prim; + }))([ param.line, param.col, param.pos @@ -70,7 +70,7 @@ var decode$1 = Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.tuple })); function encode$1(param) { - return Json_Encode$JsonCombinators.tuple2(encode, encode, [ + return Json_Encode$JsonCombinators.tuple2(encode, encode)([ param.start, param.end_ ]); @@ -84,10 +84,8 @@ var AgdaInterval = { encode: encode$1 }; -var partial_arg = /^(\S+)\:(?:(\d+)\,(\d+)\-(\d+)\,(\d+)|(\d+)\,(\d+)\-(\d+)|(\d+)\,(\d+))$/; - -function parse(param) { - return Emacs__Parser$AgdaModeVscode.captures(partial_arg, (function (captured) { +function parse(extra) { + return Emacs__Parser$AgdaModeVscode.captures(/^(\S+)\:(?:(\d+)\,(\d+)\-(\d+)\,(\d+)|(\d+)\,(\d+)\-(\d+)|(\d+)\,(\d+))$/, (function (captured) { var xs = Belt_Array.get(captured, 1); var srcFile = Belt_Option.flatMap(xs, (function (x) { return x; @@ -104,20 +102,21 @@ function parse(param) { var xs$3 = Belt_Array.get(captured, 2); return Belt_Option.flatMap(Belt_Option.flatMap(Belt_Option.flatMap(xs$3, (function (x) { return x; - })), Pervasives.int_of_string_opt), (function (rowStart) { + })), PervasivesU.int_of_string_opt), (function (rowStart) { var xs = Belt_Array.get(captured, 3); return Belt_Option.flatMap(Belt_Option.flatMap(Belt_Option.flatMap(xs, (function (x) { return x; - })), Pervasives.int_of_string_opt), (function (colStart) { + })), PervasivesU.int_of_string_opt), (function (colStart) { var xs = Belt_Array.get(captured, 4); return Belt_Option.flatMap(Belt_Option.flatMap(Belt_Option.flatMap(xs, (function (x) { return x; - })), Pervasives.int_of_string_opt), (function (rowEnd) { + })), PervasivesU.int_of_string_opt), (function (rowEnd) { var xs = Belt_Array.get(captured, 5); return Belt_Option.flatMap(Belt_Option.flatMap(Belt_Option.flatMap(xs, (function (x) { return x; - })), Pervasives.int_of_string_opt), (function (colEnd) { + })), PervasivesU.int_of_string_opt), (function (colEnd) { return { + TAG: "Range", _0: srcFile, _1: [{ start: { @@ -142,16 +141,17 @@ function parse(param) { var xs$4 = Belt_Array.get(captured, 6); return Belt_Option.flatMap(Belt_Option.flatMap(Belt_Option.flatMap(xs$4, (function (x) { return x; - })), Pervasives.int_of_string_opt), (function (row) { + })), PervasivesU.int_of_string_opt), (function (row) { var xs = Belt_Array.get(captured, 7); return Belt_Option.flatMap(Belt_Option.flatMap(Belt_Option.flatMap(xs, (function (x) { return x; - })), Pervasives.int_of_string_opt), (function (colStart) { + })), PervasivesU.int_of_string_opt), (function (colStart) { var xs = Belt_Array.get(captured, 8); return Belt_Option.flatMap(Belt_Option.flatMap(Belt_Option.flatMap(xs, (function (x) { return x; - })), Pervasives.int_of_string_opt), (function (colEnd) { + })), PervasivesU.int_of_string_opt), (function (colEnd) { return { + TAG: "Range", _0: srcFile, _1: [{ start: { @@ -174,12 +174,13 @@ function parse(param) { var xs$5 = Belt_Array.get(captured, 9); return Belt_Option.flatMap(Belt_Option.flatMap(Belt_Option.flatMap(xs$5, (function (x) { return x; - })), Pervasives.int_of_string_opt), (function (row) { + })), PervasivesU.int_of_string_opt), (function (row) { var xs = Belt_Array.get(captured, 10); return Belt_Option.flatMap(Belt_Option.flatMap(Belt_Option.flatMap(xs, (function (x) { return x; - })), Pervasives.int_of_string_opt), (function (col) { + })), PervasivesU.int_of_string_opt), (function (col) { return { + TAG: "Range", _0: srcFile, _1: [{ start: { @@ -197,7 +198,7 @@ function parse(param) { }; })); })); - }), param); + }), extra); } function fuse$1(a, b) { @@ -236,20 +237,20 @@ function fuse$1(a, b) { } if (!match) { if (b) { - return Pervasives.failwith("something wrong with Range::fuse"); + return PervasivesU.failwith("something wrong with Range::fuse"); } else { return b; } } if (!b) { if (b) { - return Pervasives.failwith("something wrong with Range::fuse"); + return PervasivesU.failwith("something wrong with Range::fuse"); } else { return b; } } if (!match$1) { - return Pervasives.failwith("something wrong with Range::fuse"); + return PervasivesU.failwith("something wrong with Range::fuse"); } var e2 = match$1.hd; var r2 = b.tl; @@ -275,23 +276,22 @@ function fuse$1(a, b) { return fuseSome(s2, r2, s1, r1); } }; - if (a) { - if (b) { - return { - _0: a._0, - _1: Belt_List.toArray(helpFuse(Belt_List.fromArray(a._1), Belt_List.fromArray(b._1))), - [Symbol.for("name")]: "Range" - }; - } else { - return a; - } - } else { + if (typeof a !== "object") { return b; + } else if (typeof b !== "object") { + return a; + } else { + return { + TAG: "Range", + _0: a._0, + _1: Belt_List.toArray(helpFuse(Belt_List.fromArray(a._1), Belt_List.fromArray(b._1))), + [Symbol.for("name")]: "Range" + }; } } function toString$1(self) { - if (!self) { + if (typeof self !== "object") { return ""; } var filepath = self._0; @@ -328,15 +328,16 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "NoRange" : return { - TAG: 1, - _0: /* NoRange */0, + TAG: "TagOnly", + _0: "NoRange", [Symbol.for("name")]: "TagOnly" }; case "Range" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.option(Json_Decode$JsonCombinators.string), Json_Decode$JsonCombinators.array(decode$1)), (function (param) { return { + TAG: "Range", _0: param[0], _1: param[1], [Symbol.for("name")]: "Range" @@ -353,33 +354,27 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { } }); -function encode$2(param) { - return Util$AgdaModeVscode.Encode.sum((function (x) { - if (x) { - return { - TAG: 0, - _0: "Range", - _1: Json_Encode$JsonCombinators.pair((function (param) { - return Json_Encode$JsonCombinators.option((function (prim) { - return prim; - }), param); - }), (function (param) { - return Json_Encode$JsonCombinators.array(encode$1, param); - }), [ - x._0, - x._1 - ]), - [Symbol.for("name")]: "Payload" - }; - } else { - return { - TAG: 1, - _0: "NoRange", - [Symbol.for("name")]: "TagOnly" - }; - } - }), param); -} +var encode$2 = Util$AgdaModeVscode.Encode.sum(function (x) { + if (typeof x !== "object") { + return { + TAG: "TagOnly", + _0: "NoRange", + [Symbol.for("name")]: "TagOnly" + }; + } else { + return { + TAG: "Payload", + _0: "Range", + _1: Json_Encode$JsonCombinators.pair(Json_Encode$JsonCombinators.option(function (prim) { + return prim; + }), Json_Encode$JsonCombinators.array(encode$1))([ + x._0, + x._1 + ]), + [Symbol.for("name")]: "Payload" + }; + } + }); var AgdaRange = { parse: parse, @@ -399,13 +394,11 @@ function contains(interval, offset) { var decode$3 = Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.$$int, Json_Decode$JsonCombinators.$$int); -function encode$3(param) { - return Json_Encode$JsonCombinators.pair((function (prim) { - return prim; - }), (function (prim) { - return prim; - }), param); -} +var encode$3 = Json_Encode$JsonCombinators.pair((function (prim) { + return prim; + }), (function (prim) { + return prim; + })); var Interval = { contains: contains, diff --git a/lib/js/src/View/Component/Item.bs.js b/lib/js/src/View/Component/Item.bs.js index b4acf0c6..06132620 100644 --- a/lib/js/src/View/Component/Item.bs.js +++ b/lib/js/src/View/Component/Item.bs.js @@ -1,7 +1,6 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Curry = require("rescript/lib/js/curry.js"); var React = require("react"); var Link$AgdaModeVscode = require("./Link.bs.js"); var Util$AgdaModeVscode = require("../../Util/Util.bs.js"); @@ -12,7 +11,7 @@ var Json_Encode$JsonCombinators = require("@glennsl/rescript-json-combinators/li function plainText(s) { return { - TAG: 1, + TAG: "Unlabeled", _0: RichText$AgdaModeVscode.string(s), _1: undefined, _2: undefined, @@ -22,7 +21,7 @@ function plainText(s) { function error(s, raw) { return { - TAG: 0, + TAG: "Labeled", _0: "Error", _1: "error", _2: s, @@ -34,7 +33,7 @@ function error(s, raw) { function warning(s, raw) { return { - TAG: 0, + TAG: "Labeled", _0: "Warning", _1: "warning", _2: s, @@ -44,29 +43,23 @@ function warning(s, raw) { }; } -function Item(Props) { - var item = Props.item; +function Item(props) { + var item = props.item; var match = React.useState(function () { return false; }); var setRevealRaw = match[1]; var revealRaw = match[0]; var onClickRevealRaw = function (param) { - Curry._1(setRevealRaw, (function (state) { - return !state; - })); + setRevealRaw(function (state) { + return !state; + }); }; var content = function (value, raw) { - if (raw !== undefined) { - if (revealRaw) { - return React.createElement(RichText$AgdaModeVscode.make, { - value: RichText$AgdaModeVscode.string(raw) - }); - } else { - return React.createElement(RichText$AgdaModeVscode.make, { - value: value - }); - } + if (raw !== undefined && revealRaw) { + return React.createElement(RichText$AgdaModeVscode.make, { + value: RichText$AgdaModeVscode.string(raw) + }); } else { return React.createElement(RichText$AgdaModeVscode.make, { value: value @@ -91,14 +84,14 @@ function Item(Props) { })); } } else { - return React.createElement(React.Fragment, undefined); + return React.createElement(React.Fragment, {}); } }; var locationButton = function ($$location) { if ($$location !== undefined) { return React.createElement(Link$AgdaModeVscode.make, { target: { - TAG: 0, + TAG: "SrcLoc", _0: $$location, [Symbol.for("name")]: "SrcLoc" }, @@ -110,11 +103,11 @@ function Item(Props) { }) }); } else { - return React.createElement(React.Fragment, undefined); + return React.createElement(React.Fragment, {}); } }; - switch (item.TAG | 0) { - case /* Labeled */0 : + switch (item.TAG) { + case "Labeled" : var raw = item._3; return React.createElement("li", { className: "labeled-item " + item._1 @@ -123,14 +116,14 @@ function Item(Props) { }, item._0), React.createElement("div", { className: "item-content" }, content(item._2, raw)), revealRawButton(raw)); - case /* Unlabeled */1 : + case "Unlabeled" : var raw$1 = item._1; return React.createElement("li", { className: "unlabeled-item" }, React.createElement("div", { className: "item-content" }, content(item._0, raw$1)), revealRawButton(raw$1), locationButton(item._2)); - case /* Header */2 : + case "Header" : return React.createElement("li", { className: "header-item" }, React.createElement("h3", undefined, item._0)); @@ -142,10 +135,10 @@ var decode = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "Header" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (s) { return { - TAG: 2, + TAG: "Header", _0: s, [Symbol.for("name")]: "Header" }; @@ -154,10 +147,10 @@ var decode = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "Labeled" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Util$AgdaModeVscode.Decode.tuple5(RichText$AgdaModeVscode.decode, Json_Decode$JsonCombinators.option(Json_Decode$JsonCombinators.string), Json_Decode$JsonCombinators.option(Common$AgdaModeVscode.AgdaRange.decode), Json_Decode$JsonCombinators.string, Json_Decode$JsonCombinators.string), (function (param) { return { - TAG: 0, + TAG: "Labeled", _0: param[3], _1: param[4], _2: param[0], @@ -170,10 +163,10 @@ var decode = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "Unlabeled" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.tuple3(RichText$AgdaModeVscode.decode, Json_Decode$JsonCombinators.option(Json_Decode$JsonCombinators.string), Json_Decode$JsonCombinators.option(Common$AgdaModeVscode.AgdaRange.decode)), (function (param) { return { - TAG: 1, + TAG: "Unlabeled", _0: param[0], _1: param[1], _2: param[2], @@ -191,60 +184,50 @@ var decode = Util$AgdaModeVscode.Decode.sum(function (x) { } }); -function encode(param) { - return Util$AgdaModeVscode.Encode.sum((function (x) { - switch (x.TAG | 0) { - case /* Labeled */0 : - return { - TAG: 0, - _0: "Labeled", - _1: Util$AgdaModeVscode.Encode.tuple5(RichText$AgdaModeVscode.encode, (function (param) { - return Json_Encode$JsonCombinators.option((function (prim) { - return prim; - }), param); - }), (function (param) { - return Json_Encode$JsonCombinators.option(Common$AgdaModeVscode.AgdaRange.encode, param); - }), (function (prim) { - return prim; - }), (function (prim) { - return prim; - }), [ - x._2, - x._3, - x._4, - x._0, - x._1 - ]), - [Symbol.for("name")]: "Payload" - }; - case /* Unlabeled */1 : - return { - TAG: 0, - _0: "Unlabeled", - _1: Json_Encode$JsonCombinators.tuple3(RichText$AgdaModeVscode.encode, (function (param) { - return Json_Encode$JsonCombinators.option((function (prim) { - return prim; - }), param); - }), (function (param) { - return Json_Encode$JsonCombinators.option(Common$AgdaModeVscode.AgdaRange.encode, param); - }), [ - x._0, - x._1, - x._2 - ]), - [Symbol.for("name")]: "Payload" - }; - case /* Header */2 : - return { - TAG: 0, - _0: "Header", - _1: x._0, - [Symbol.for("name")]: "Payload" - }; - - } - }), param); -} +var encode = Util$AgdaModeVscode.Encode.sum(function (x) { + switch (x.TAG) { + case "Labeled" : + return { + TAG: "Payload", + _0: "Labeled", + _1: Util$AgdaModeVscode.Encode.tuple5(RichText$AgdaModeVscode.encode, Json_Encode$JsonCombinators.option(function (prim) { + return prim; + }), Json_Encode$JsonCombinators.option(Common$AgdaModeVscode.AgdaRange.encode), (function (prim) { + return prim; + }), (function (prim) { + return prim; + }), [ + x._2, + x._3, + x._4, + x._0, + x._1 + ]), + [Symbol.for("name")]: "Payload" + }; + case "Unlabeled" : + return { + TAG: "Payload", + _0: "Unlabeled", + _1: Json_Encode$JsonCombinators.tuple3(RichText$AgdaModeVscode.encode, Json_Encode$JsonCombinators.option(function (prim) { + return prim; + }), Json_Encode$JsonCombinators.option(Common$AgdaModeVscode.AgdaRange.encode))([ + x._0, + x._1, + x._2 + ]), + [Symbol.for("name")]: "Payload" + }; + case "Header" : + return { + TAG: "Payload", + _0: "Header", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; + + } + }); var make = Item; diff --git a/lib/js/src/View/Component/Link.bs.js b/lib/js/src/View/Component/Link.bs.js index b662fd2d..61215233 100644 --- a/lib/js/src/View/Component/Link.bs.js +++ b/lib/js/src/View/Component/Link.bs.js @@ -2,15 +2,15 @@ 'use strict'; var React = require("react"); -var $$String = require("rescript/lib/js/string.js"); -var Belt_List = require("rescript/lib/js/belt_List.js"); +var Belt_Array = require("rescript/lib/js/belt_Array.js"); +var Caml_splice_call = require("rescript/lib/js/caml_splice_call.js"); var Chan$AgdaModeVscode = require("../../Util/Chan.bs.js"); var Util$AgdaModeVscode = require("../../Util/Util.bs.js"); var Common$AgdaModeVscode = require("../Common.bs.js"); var Json_Decode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Decode.bs.js"); function toString(x) { - if (x.TAG === /* SrcLoc */0) { + if (x.TAG === "SrcLoc") { return Common$AgdaModeVscode.AgdaRange.toString(x._0); } else { return "?" + String(x._0); @@ -21,10 +21,10 @@ var decode = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "LinkHole" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.$$int, (function (index) { return { - TAG: 1, + TAG: "Hole", _0: index, [Symbol.for("name")]: "Hole" }; @@ -33,10 +33,10 @@ var decode = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "LinkRange" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Common$AgdaModeVscode.AgdaRange.decode, (function (range) { return { - TAG: 0, + TAG: "SrcLoc", _0: range, [Symbol.for("name")]: "SrcLoc" }; @@ -52,27 +52,25 @@ var decode = Util$AgdaModeVscode.Decode.sum(function (x) { } }); -function encode(param) { - return Util$AgdaModeVscode.Encode.sum((function (x) { - if (x.TAG === /* SrcLoc */0) { - return { - TAG: 0, - _0: "LinkRange", - _1: Common$AgdaModeVscode.AgdaRange.encode(x._0), - [Symbol.for("name")]: "Payload" - }; - } else { - return { - TAG: 0, - _0: "LinkHole", - _1: x._0, - [Symbol.for("name")]: "Payload" - }; - } - }), param); -} +var encode = Util$AgdaModeVscode.Encode.sum(function (x) { + if (x.TAG === "SrcLoc") { + return { + TAG: "Payload", + _0: "LinkRange", + _1: Common$AgdaModeVscode.AgdaRange.encode(x._0), + [Symbol.for("name")]: "Payload" + }; + } else { + return { + TAG: "Payload", + _0: "LinkHole", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; + } + }); -var chan = Chan$AgdaModeVscode.make(undefined); +var chan = Chan$AgdaModeVscode.make(); var eventContext = React.createContext(chan); @@ -94,10 +92,10 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "JumpToTarget" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(decode, (function (target) { return { - TAG: 0, + TAG: "JumpToTarget", _0: target, [Symbol.for("name")]: "JumpToTarget" }; @@ -106,10 +104,10 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "MouseOut" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(decode, (function (target) { return { - TAG: 2, + TAG: "MouseOut", _0: target, [Symbol.for("name")]: "MouseOut" }; @@ -118,10 +116,10 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "MouseOver" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(decode, (function (target) { return { - TAG: 1, + TAG: "MouseOver", _0: target, [Symbol.for("name")]: "MouseOver" }; @@ -137,34 +135,32 @@ var decode$1 = Util$AgdaModeVscode.Decode.sum(function (x) { } }); -function encode$1(param) { - return Util$AgdaModeVscode.Encode.sum((function (x) { - switch (x.TAG | 0) { - case /* JumpToTarget */0 : - return { - TAG: 0, - _0: "JumpToTarget", - _1: encode(x._0), - [Symbol.for("name")]: "Payload" - }; - case /* MouseOver */1 : - return { - TAG: 0, - _0: "MouseOver", - _1: encode(x._0), - [Symbol.for("name")]: "Payload" - }; - case /* MouseOut */2 : - return { - TAG: 0, - _0: "MouseOut", - _1: encode(x._0), - [Symbol.for("name")]: "Payload" - }; - - } - }), param); -} +var encode$1 = Util$AgdaModeVscode.Encode.sum(function (x) { + switch (x.TAG) { + case "JumpToTarget" : + return { + TAG: "Payload", + _0: "JumpToTarget", + _1: encode(x._0), + [Symbol.for("name")]: "Payload" + }; + case "MouseOver" : + return { + TAG: "Payload", + _0: "MouseOver", + _1: encode(x._0), + [Symbol.for("name")]: "Payload" + }; + case "MouseOut" : + return { + TAG: "Payload", + _0: "MouseOut", + _1: encode(x._0), + [Symbol.for("name")]: "Payload" + }; + + } + }); var $$Event = { chan: chan, @@ -174,47 +170,46 @@ var $$Event = { encode: encode$1 }; -function Link(Props) { - var targetOpt = Props.target; - var jumpOpt = Props.jump; - var hoverOpt = Props.hover; - var classNameOpt = Props.className; - var children = Props.children; - var target = targetOpt !== undefined ? targetOpt : ({ - TAG: 0, - _0: /* NoRange */0, +function Link(props) { + var children = props.children; + var __className = props.className; + var __hover = props.hover; + var __jump = props.jump; + var __target = props.target; + var target = __target !== undefined ? __target : ({ + TAG: "SrcLoc", + _0: "NoRange", [Symbol.for("name")]: "SrcLoc" }); - var jump = jumpOpt !== undefined ? jumpOpt : false; - var hover = hoverOpt !== undefined ? hoverOpt : false; - var className = classNameOpt !== undefined ? classNameOpt : []; + var jump = __jump !== undefined ? __jump : false; + var hover = __hover !== undefined ? __hover : false; + var className = __className !== undefined ? __className : []; var sanitizedTarget; - if (target.TAG === /* SrcLoc */0) { + if (target.TAG === "SrcLoc") { var range = target._0; - sanitizedTarget = range && range._1.length !== 0 ? ({ - TAG: 0, + sanitizedTarget = typeof range !== "object" || range._1.length === 0 ? undefined : ({ + TAG: "SrcLoc", _0: range, [Symbol.for("name")]: "SrcLoc" - }) : undefined; + }); } else { sanitizedTarget = { - TAG: 1, + TAG: "Hole", _0: target._0, [Symbol.for("name")]: "Hole" }; } var link = React.useContext(eventContext); - var className$1 = Belt_List.fromArray(className); if (sanitizedTarget !== undefined) { return React.createElement("span", { - className: $$String.concat(" ", { - hd: "component-link", - tl: className$1 - }), + className: Caml_splice_call.spliceObjApply(" ", "concat", [Belt_Array.concatMany([ + ["component-link"], + className + ])]), onClick: (function (param) { if (jump) { return Chan$AgdaModeVscode.emit(link, { - TAG: 0, + TAG: "JumpToTarget", _0: sanitizedTarget, [Symbol.for("name")]: "JumpToTarget" }); @@ -224,7 +219,7 @@ function Link(Props) { onMouseOut: (function (param) { if (hover) { return Chan$AgdaModeVscode.emit(link, { - TAG: 2, + TAG: "MouseOut", _0: sanitizedTarget, [Symbol.for("name")]: "MouseOut" }); @@ -234,7 +229,7 @@ function Link(Props) { onMouseOver: (function (param) { if (hover) { return Chan$AgdaModeVscode.emit(link, { - TAG: 1, + TAG: "MouseOver", _0: sanitizedTarget, [Symbol.for("name")]: "MouseOver" }); @@ -244,7 +239,7 @@ function Link(Props) { }, children); } else { return React.createElement("span", { - className: $$String.concat(" ", className$1) + className: Caml_splice_call.spliceObjApply(" ", "concat", [className]) }, children); } } diff --git a/lib/js/src/View/Component/RichText.bs.js b/lib/js/src/View/Component/RichText.bs.js index d9521faa..f3b05cea 100644 --- a/lib/js/src/View/Component/RichText.bs.js +++ b/lib/js/src/View/Component/RichText.bs.js @@ -1,21 +1,19 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Curry = require("rescript/lib/js/curry.js"); var React = require("react"); -var $$String = require("rescript/lib/js/string.js"); -var Belt_List = require("rescript/lib/js/belt_List.js"); var Js_string = require("rescript/lib/js/js_string.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); +var Caml_splice_call = require("rescript/lib/js/caml_splice_call.js"); +var JsxPPXReactSupportU = require("rescript/lib/js/jsxPPXReactSupportU.js"); var Link$AgdaModeVscode = require("./Link.bs.js"); var Util$AgdaModeVscode = require("../../Util/Util.bs.js"); var Common$AgdaModeVscode = require("../Common.bs.js"); var Json_Decode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Decode.bs.js"); var Json_Encode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Encode.bs.js"); -function RichText$Parens(Props) { - var children = Props.children; +function RichText$Parens(props) { var match = React.useState(function () { return false; }); @@ -26,26 +24,26 @@ function RichText$Parens(Props) { var setContracted = match$1[1]; var className = match[0] ? "component-parentheses activated" : "component-parentheses"; var onMouseOver = function (param) { - Curry._1(setActivated, (function (param) { - return true; - })); + setActivated(function (param) { + return true; + }); }; var onMouseOut = function (param) { - Curry._1(setActivated, (function (param) { - return false; - })); + setActivated(function (param) { + return false; + }); }; var onClick = function (param) { - Curry._1(setContracted, (function (x) { - return !x; - })); + setContracted(function (x) { + return !x; + }); }; - return React.createElement(React.Fragment, undefined, React.createElement("span", { + return React.createElement(React.Fragment, {}, React.createElement("span", { className: className, onClick: onClick, onMouseOut: onMouseOut, onMouseOver: onMouseOver - }, "("), match$1[0] ? ".." : children, React.createElement("span", { + }, "("), match$1[0] ? ".." : props.children, React.createElement("span", { className: className, onClick: onClick, onMouseOut: onMouseOut, @@ -57,8 +55,7 @@ var Parens = { make: RichText$Parens }; -function RichText$Parens2(Props) { - var payload = Props.payload; +function RichText$Parens2(props) { var match = React.useState(function () { return false; }); @@ -69,19 +66,19 @@ function RichText$Parens2(Props) { }); var setContracted = match$1[1]; var onMouseOver = function (param) { - Curry._1(setActivated, (function (param) { - return true; - })); + setActivated(function (param) { + return true; + }); }; var onMouseOut = function (param) { - Curry._1(setActivated, (function (param) { - return false; - })); + setActivated(function (param) { + return false; + }); }; var onClick = function (param) { - Curry._1(setContracted, (function (x) { - return !x; - })); + setContracted(function (x) { + return !x; + }); }; var openParenClassName = "component-horz-item component-parentheses" + ( activated ? " activated" : "" @@ -113,7 +110,7 @@ function RichText$Parens2(Props) { } var children = Belt_Array.concatMany([ [openParen], - payload, + props.payload, [closeParen] ]); return React.createElement("span", { @@ -127,26 +124,24 @@ var Parens2 = { var decode = Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.string); -function encode(param) { - return Json_Encode$JsonCombinators.array((function (prim) { - return prim; - }), param); -} +var encode = Json_Encode$JsonCombinators.array(function (prim) { + return prim; + }); var ClassNames = { decode: decode, encode: encode }; -function decodeRec(param) { +function decodeRec() { return Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "Hole" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.$$int, (function (s) { return { - TAG: 3, + TAG: "Hole", _0: s, [Symbol.for("name")]: "Hole" }; @@ -155,10 +150,10 @@ function decodeRec(param) { }; case "Horz" : return { - TAG: 0, - _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.array(decodeRec(undefined))), (function (xs) { + TAG: "Payload", + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.array(decodeRec())), (function (xs) { return { - TAG: 4, + TAG: "Horz", _0: xs, [Symbol.for("name")]: "Horz" }; @@ -167,10 +162,10 @@ function decodeRec(param) { }; case "Icon" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.string, decode), (function (param) { return { - TAG: 0, + TAG: "Icon", _0: param[0], _1: param[1], [Symbol.for("name")]: "Icon" @@ -180,10 +175,10 @@ function decodeRec(param) { }; case "Link" : return { - TAG: 0, - _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.tuple3(Common$AgdaModeVscode.AgdaRange.decode, Json_Decode$JsonCombinators.array(decodeRec(undefined)), decode), (function (param) { + TAG: "Payload", + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.tuple3(Common$AgdaModeVscode.AgdaRange.decode, Json_Decode$JsonCombinators.array(decodeRec()), decode), (function (param) { return { - TAG: 2, + TAG: "Link", _0: param[0], _1: param[1], _2: param[2], @@ -194,10 +189,10 @@ function decodeRec(param) { }; case "Parn" : return { - TAG: 0, - _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.array(decodeRec(undefined)), (function (x) { + TAG: "Payload", + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.array(decodeRec()), (function (x) { return { - TAG: 6, + TAG: "Parn", _0: x, [Symbol.for("name")]: "Parn" }; @@ -206,10 +201,10 @@ function decodeRec(param) { }; case "PrHz" : return { - TAG: 0, - _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.array(decodeRec(undefined))), (function (xs) { + TAG: "Payload", + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.array(decodeRec())), (function (xs) { return { - TAG: 7, + TAG: "PrHz", _0: xs, [Symbol.for("name")]: "PrHz" }; @@ -218,10 +213,10 @@ function decodeRec(param) { }; case "Text" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.pair(Json_Decode$JsonCombinators.string, decode), (function (param) { return { - TAG: 1, + TAG: "Text", _0: param[0], _1: param[1], [Symbol.for("name")]: "Text" @@ -231,10 +226,10 @@ function decodeRec(param) { }; case "Vert" : return { - TAG: 0, - _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.array(decodeRec(undefined))), (function (xs) { + TAG: "Payload", + _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.array(decodeRec())), (function (xs) { return { - TAG: 5, + TAG: "Vert", _0: xs, [Symbol.for("name")]: "Vert" }; @@ -251,101 +246,87 @@ function decodeRec(param) { }); } -var decode$1 = decodeRec(undefined); +var decode$1 = decodeRec(); -function encodeRec(param) { - return function (param) { - return Util$AgdaModeVscode.Encode.sum((function (x) { - switch (x.TAG | 0) { - case /* Icon */0 : - return { - TAG: 0, - _0: "Icon", - _1: Json_Encode$JsonCombinators.pair((function (prim) { - return prim; - }), encode, [ - x._0, - x._1 - ]), - [Symbol.for("name")]: "Payload" - }; - case /* Text */1 : - return { - TAG: 0, - _0: "Text", - _1: Json_Encode$JsonCombinators.pair((function (prim) { - return prim; - }), encode, [ - x._0, - x._1 - ]), - [Symbol.for("name")]: "Payload" - }; - case /* Link */2 : - var partial_arg = encodeRec(undefined); - return { - TAG: 0, - _0: "Link", - _1: Json_Encode$JsonCombinators.tuple3(Common$AgdaModeVscode.AgdaRange.encode, (function (param) { - return Json_Encode$JsonCombinators.array(partial_arg, param); - }), encode, [ - x._0, - x._1, - x._2 - ]), - [Symbol.for("name")]: "Payload" - }; - case /* Hole */3 : - return { - TAG: 0, - _0: "Hole", - _1: x._0, - [Symbol.for("name")]: "Payload" - }; - case /* Horz */4 : - var partial_arg$1 = encodeRec(undefined); - return { - TAG: 0, - _0: "Horz", - _1: Json_Encode$JsonCombinators.array((function (param) { - return Json_Encode$JsonCombinators.array(partial_arg$1, param); - }), x._0), - [Symbol.for("name")]: "Payload" - }; - case /* Vert */5 : - var partial_arg$2 = encodeRec(undefined); - return { - TAG: 0, - _0: "Vert", - _1: Json_Encode$JsonCombinators.array((function (param) { - return Json_Encode$JsonCombinators.array(partial_arg$2, param); - }), x._0), - [Symbol.for("name")]: "Payload" - }; - case /* Parn */6 : - return { - TAG: 0, - _0: "Parn", - _1: Json_Encode$JsonCombinators.array(encodeRec(undefined), x._0), - [Symbol.for("name")]: "Payload" - }; - case /* PrHz */7 : - var partial_arg$3 = encodeRec(undefined); - return { - TAG: 0, - _0: "PrHz", - _1: Json_Encode$JsonCombinators.array((function (param) { - return Json_Encode$JsonCombinators.array(partial_arg$3, param); - }), x._0), - [Symbol.for("name")]: "Payload" - }; - - } - }), param); - }; +function encodeRec() { + return Util$AgdaModeVscode.Encode.sum(function (x) { + switch (x.TAG) { + case "Icon" : + return { + TAG: "Payload", + _0: "Icon", + _1: Json_Encode$JsonCombinators.pair((function (prim) { + return prim; + }), encode)([ + x._0, + x._1 + ]), + [Symbol.for("name")]: "Payload" + }; + case "Text" : + return { + TAG: "Payload", + _0: "Text", + _1: Json_Encode$JsonCombinators.pair((function (prim) { + return prim; + }), encode)([ + x._0, + x._1 + ]), + [Symbol.for("name")]: "Payload" + }; + case "Link" : + return { + TAG: "Payload", + _0: "Link", + _1: Json_Encode$JsonCombinators.tuple3(Common$AgdaModeVscode.AgdaRange.encode, Json_Encode$JsonCombinators.array(encodeRec()), encode)([ + x._0, + x._1, + x._2 + ]), + [Symbol.for("name")]: "Payload" + }; + case "Hole" : + return { + TAG: "Payload", + _0: "Hole", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; + case "Horz" : + return { + TAG: "Payload", + _0: "Horz", + _1: Json_Encode$JsonCombinators.array(Json_Encode$JsonCombinators.array(encodeRec()))(x._0), + [Symbol.for("name")]: "Payload" + }; + case "Vert" : + return { + TAG: "Payload", + _0: "Vert", + _1: Json_Encode$JsonCombinators.array(Json_Encode$JsonCombinators.array(encodeRec()))(x._0), + [Symbol.for("name")]: "Payload" + }; + case "Parn" : + return { + TAG: "Payload", + _0: "Parn", + _1: Json_Encode$JsonCombinators.array(encodeRec())(x._0), + [Symbol.for("name")]: "Payload" + }; + case "PrHz" : + return { + TAG: "Payload", + _0: "PrHz", + _1: Json_Encode$JsonCombinators.array(Json_Encode$JsonCombinators.array(encodeRec()))(x._0), + [Symbol.for("name")]: "Payload" + }; + + } + }); } -var encode$1 = encodeRec(undefined); +var encode$1 = encodeRec(); var Inline = { decodeRec: decodeRec, @@ -355,14 +336,16 @@ var Inline = { }; var empty = { + TAG: "RichText", _0: [], [Symbol.for("name")]: "RichText" }; function string(s) { return { + TAG: "RichText", _0: [{ - TAG: 1, + TAG: "Text", _0: s, _1: [], [Symbol.for("name")]: "Text" @@ -373,8 +356,9 @@ function string(s) { function hole(i) { return { + TAG: "RichText", _0: [{ - TAG: 3, + TAG: "Hole", _0: i, [Symbol.for("name")]: "Hole" }], @@ -384,18 +368,19 @@ function hole(i) { function srcLoc(range) { return { + TAG: "RichText", _0: [{ - TAG: 2, + TAG: "Link", _0: range, _1: [ { - TAG: 0, + TAG: "Icon", _0: "link ", _1: [], [Symbol.for("name")]: "Icon" }, { - TAG: 1, + TAG: "Text", _0: Common$AgdaModeVscode.AgdaRange.toString(range), _1: [], [Symbol.for("name")]: "Text" @@ -410,6 +395,7 @@ function srcLoc(range) { function concatMany(xs) { return { + TAG: "RichText", _0: Belt_Array.concatMany(Belt_Array.map(xs, (function (x) { return x._0; }))), @@ -418,78 +404,82 @@ function concatMany(xs) { } function parse(raw) { - return concatMany(Belt_Array.mapWithIndex(Belt_Array.keepMap(Js_string.splitByRe(/([^\(\)\s]+\:(?:\d+\,\d+\-\d+\,\d+|\d+\,\d+\-\d+|\d+\,\d+))/, raw), (function (x) { + return concatMany(Belt_Array.mapWithIndex(Belt_Array.keepMap((function (__x) { + return Js_string.splitByRe(/([^\(\)\s]+\:(?:\d+\,\d+\-\d+\,\d+|\d+\,\d+\-\d+|\d+\,\d+))/, __x); + })(raw), (function (x) { return x; })), (function (i, token) { var match = i % 2; if (match !== 1) { return string(token); } else { - return Belt_Option.mapWithDefault(Curry._1(Common$AgdaModeVscode.AgdaRange.parse, token), string(token), srcLoc); + return Belt_Option.mapWithDefault(Common$AgdaModeVscode.AgdaRange.parse(token), string(token), (function (loc) { + return srcLoc(loc); + })); } }))); } function make(value) { return React.createElement("span", undefined, Belt_Array.mapWithIndex(value._0, (function (i, x) { - switch (x.TAG | 0) { - case /* Icon */0 : + switch (x.TAG) { + case "Icon" : var className = Belt_Array.concat([ "codicon", "codicon-" + x._0 ], x._1); - var className$1 = $$String.concat(" ", Belt_List.fromArray(className)); + var className$1 = Caml_splice_call.spliceObjApply(" ", "concat", [className]); return React.createElement("div", { key: String(i), className: className$1 }); - case /* Text */1 : - var className$2 = $$String.concat(" ", Belt_List.fromArray(x._1)); + case "Text" : + var className$2 = Caml_splice_call.spliceObjApply(" ", "concat", [x._1]); return React.createElement("span", { key: String(i), className: className$2 }, x._0); - case /* Link */2 : + case "Link" : var child = make({ + TAG: "RichText", _0: x._1, [Symbol.for("name")]: "RichText" }); - return React.createElement(Link$AgdaModeVscode.make, { + return JsxPPXReactSupportU.createElementWithKey(String(i), Link$AgdaModeVscode.make, { target: { - TAG: 0, + TAG: "SrcLoc", _0: x._0, [Symbol.for("name")]: "SrcLoc" }, jump: true, hover: false, className: x._2, - children: child, - key: String(i) + children: child }); - case /* Hole */3 : + case "Hole" : var index = x._0; var className$3 = [ "component-link", "component-hole" ]; - return React.createElement(Link$AgdaModeVscode.make, { + return JsxPPXReactSupportU.createElementWithKey(String(i), Link$AgdaModeVscode.make, { target: { - TAG: 1, + TAG: "Hole", _0: index, [Symbol.for("name")]: "Hole" }, jump: true, hover: false, className: className$3, - children: "?" + String(index), - key: String(i) + children: "?" + String(index) }); - case /* Horz */4 : + case "Horz" : var children = Belt_Array.mapWithIndex(x._0, (function (j, element) { return React.createElement("span", { key: String(j), className: "component-horz-item" }, make({ + TAG: "RichText", _0: element, [Symbol.for("name")]: "RichText" })); @@ -498,12 +488,13 @@ function make(value) { key: String(i), className: "component-horz" }, children); - case /* Vert */5 : + case "Vert" : var children$1 = Belt_Array.mapWithIndex(x._0, (function (j, element) { return React.createElement("span", { key: String(j), className: "component-vert-item" }, make({ + TAG: "RichText", _0: element, [Symbol.for("name")]: "RichText" })); @@ -512,19 +503,21 @@ function make(value) { key: String(i), className: "component-vert" }, children$1); - case /* Parn */6 : + case "Parn" : return React.createElement(RichText$Parens, { children: make({ + TAG: "RichText", _0: x._0, [Symbol.for("name")]: "RichText" }) }); - case /* PrHz */7 : + case "PrHz" : var children$2 = Belt_Array.mapWithIndex(x._0, (function (index, element) { if (index === 0) { return React.createElement("span", { className: "component-horz-item compact" }, make({ + TAG: "RichText", _0: element, [Symbol.for("name")]: "RichText" })); @@ -532,6 +525,7 @@ function make(value) { return React.createElement("span", { className: "component-horz-item" }, make({ + TAG: "RichText", _0: element, [Symbol.for("name")]: "RichText" })); @@ -547,13 +541,14 @@ function make(value) { var decode$2 = Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.array(decode$1), (function (elems) { return { + TAG: "RichText", _0: elems, [Symbol.for("name")]: "RichText" }; })); function encode$2(x) { - return Json_Encode$JsonCombinators.array(encode$1, x._0); + return Json_Encode$JsonCombinators.array(encode$1)(x._0); } var Module = { @@ -570,8 +565,8 @@ var Module = { encode: encode$2 }; -function RichText(Props) { - return make(Props.value); +function RichText(props) { + return make(props.value); } var make$1 = RichText; diff --git a/lib/js/src/View/Hook.bs.js b/lib/js/src/View/Hook.bs.js index f2396412..67215adf 100644 --- a/lib/js/src/View/Hook.bs.js +++ b/lib/js/src/View/Hook.bs.js @@ -1,9 +1,7 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Curry = require("rescript/lib/js/curry.js"); var React = require("react"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); var Chan$AgdaModeVscode = require("../Util/Chan.bs.js"); @@ -12,9 +10,9 @@ var Webapi__Dom__Element = require("rescript-webapi/lib/js/src/Webapi/Dom/Webapi function recv(reqChan, resChan, handler) { React.useEffect((function () { return Chan$AgdaModeVscode.on(reqChan, (function (req) { - $$Promise.get(Curry._1(handler, req), (function (param) { - return Chan$AgdaModeVscode.emit(resChan, param); - })); + handler(req).then(function (res) { + Chan$AgdaModeVscode.emit(resChan, res); + }); })); }), []); } @@ -25,7 +23,7 @@ function on(chan, handler) { }), []); } -function useFocus(param) { +function useFocus() { var htmlElRef = React.useRef(null); var setFocus = function (param) { Belt_Option.forEach(Belt_Option.flatMap(Caml_option.nullable_to_opt(htmlElRef.current), Webapi__Dom__Element.asHtmlElement), (function (prim) { diff --git a/lib/js/src/View/Panel/Body.bs.js b/lib/js/src/View/Panel/Body.bs.js index b5cdf5f5..85050683 100644 --- a/lib/js/src/View/Panel/Body.bs.js +++ b/lib/js/src/View/Panel/Body.bs.js @@ -4,20 +4,20 @@ var React = require("react"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Item$AgdaModeVscode = require("../Component/Item.bs.js"); +var JsxPPXReactSupportU = require("rescript/lib/js/jsxPPXReactSupportU.js"); -function Body(Props) { - var items = Props.items; +function Body(props) { + var items = props.items; if (items.length !== 0) { return React.createElement("div", { className: "agda-mode-body" }, React.createElement("ul", undefined, Belt_Array.mapWithIndex(items, (function (i, item) { - return React.createElement(Item$AgdaModeVscode.make, { - item: item, - key: String(i) + return JsxPPXReactSupportU.createElementWithKey(String(i), Item$AgdaModeVscode.make, { + item: item }); })))); } else { - return React.createElement(React.Fragment, undefined); + return React.createElement(React.Fragment, {}); } } diff --git a/lib/js/src/View/Panel/CandidateSymbols.bs.js b/lib/js/src/View/Panel/CandidateSymbols.bs.js index 03173d48..a0e7425c 100644 --- a/lib/js/src/View/Panel/CandidateSymbols.bs.js +++ b/lib/js/src/View/Panel/CandidateSymbols.bs.js @@ -1,14 +1,13 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Curry = require("rescript/lib/js/curry.js"); var React = require("react"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); -function CandidateSymbols(Props) { - var candidates = Props.candidates; - var index = Props.index; - var onChooseSymbol = Props.onChooseSymbol; +function CandidateSymbols(props) { + var onChooseSymbol = props.onChooseSymbol; + var index = props.index; + var candidates = props.candidates; var rowStart = Math.imul(index / 10 | 0, 10); var row = Belt_Array.slice(candidates, rowStart, 10); var match = Belt_Array.get(candidates, index); @@ -22,10 +21,10 @@ function CandidateSymbols(Props) { isSelected ? "selected" : "" ), onClick: (function (param) { - Curry._1(onChooseSymbol, key); + onChooseSymbol(key); }) }, key); - })) : React.createElement(React.Fragment, undefined)); + })) : React.createElement(React.Fragment, {})); } var make = CandidateSymbols; diff --git a/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js b/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js index 6e7d8e7f..39105a12 100644 --- a/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js +++ b/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js @@ -1,7 +1,6 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Curry = require("rescript/lib/js/curry.js"); var Js_dict = require("rescript/lib/js/js_dict.js"); var Js_array = require("rescript/lib/js/js_array.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); @@ -17,7 +16,7 @@ function partite(xs, tagEntry) { ]; })), (function (param) { var i = param[0]; - return Belt_Option.map(Curry._1(tagEntry, [ + return Belt_Option.map(tagEntry([ param[1], i ]), (function (key) { @@ -58,7 +57,7 @@ function partite(xs, tagEntry) { function split(dict, key, splitter) { var value = Js_dict.get(dict, key); if (value !== undefined) { - Belt_Array.forEach(Js_dict.entries(Curry._1(splitter, value)), (function (param) { + Belt_Array.forEach(Js_dict.entries(splitter(value)), (function (param) { dict[param[0]] = param[1]; })); Util$AgdaModeVscode.Dict.$$delete(dict, key); @@ -71,7 +70,7 @@ function split(dict, key, splitter) { function update(dict, key, f) { var value = Js_dict.get(dict, key); if (value !== undefined) { - dict[key] = Curry._1(f, Caml_option.valFromOption(value)); + dict[key] = f(Caml_option.valFromOption(value)); return dict; } else { return dict; @@ -91,7 +90,7 @@ function partite$1(xs, p) { x ]; })), (function (param) { - return Curry._1(p, param[1]); + return p(param[1]); })), (function (prim) { return prim[0]; })); @@ -124,7 +123,7 @@ function mergeWithNext(xs, p) { return Belt_Array.reduce(xs, [], (function (acc, x) { var last = Belt_Array.get(acc, acc.length - 1 | 0); if (last !== undefined) { - if (Curry._1(p, last)) { + if (p(last)) { Belt_Array.set(acc, acc.length - 1 | 0, Belt_Array.concat(x, last)); return acc; } else { @@ -190,7 +189,7 @@ function choice(res, raw) { if (result !== undefined) { return Caml_option.some(Caml_option.valFromOption(result)); } else { - return Curry._1(parse, raw); + return parse(raw); } }), undefined, res); } diff --git a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js index 560b66b3..0aa5aae2 100644 --- a/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js +++ b/lib/js/src/View/Panel/Emacs/Emacs__Parser2.bs.js @@ -1,7 +1,6 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Curry = require("rescript/lib/js/curry.js"); var Js_dict = require("rescript/lib/js/js_dict.js"); var Js_array = require("rescript/lib/js/js_array.js"); var Js_string = require("rescript/lib/js/js_string.js"); @@ -19,7 +18,7 @@ function partiteMetas(xs) { return Emacs__Parser$AgdaModeVscode.Dict.split(xs, "metas", (function (rawMetas) { var metas = Emacs__Parser$AgdaModeVscode.aggregateLines(rawMetas); var indexOfHiddenMetas = Belt_Array.getIndexBy(metas, (function (s) { - return Belt_Option.isSome(Curry._1(Agda$AgdaModeVscode.Output.parseOutputWithLocation, s)); + return Belt_Option.isSome(Agda$AgdaModeVscode.Output.parseOutputWithLocation(s)); })); return Emacs__Parser$AgdaModeVscode.Dict.partite(metas, (function (param) { var i = param[1]; @@ -48,7 +47,7 @@ function partiteWarningsOrErrors(xs, key) { }))); var lines = hasDelimeter ? Js_array.sliceFrom(1, raw) : raw; var markWarningStart = function (line) { - return Belt_Option.isSome(Curry._1(Common$AgdaModeVscode.AgdaRange.parse, line)); + return Belt_Option.isSome(Common$AgdaModeVscode.AgdaRange.parse(line)); }; var glueBack = function (xs) { var partial_arg = /at$/; @@ -67,7 +66,7 @@ function parseError(raw) { return Js_string.match_(partial_arg, param); }))); var markWarningStart = function (line) { - return Belt_Option.isSome(Curry._1(Common$AgdaModeVscode.AgdaRange.parse, line)); + return Belt_Option.isSome(Common$AgdaModeVscode.AgdaRange.parse(line)); }; var glueBack = function (xs) { var partial_arg = /at$/; @@ -138,8 +137,8 @@ function parseGoalType(raw) { })); }; var removeDelimeter = function (xs) { - return Emacs__Parser$AgdaModeVscode.Dict.update(xs, "metas", (function (param) { - return Js_array.sliceFrom(1, param); + return Emacs__Parser$AgdaModeVscode.Dict.update(xs, "metas", (function (x) { + return Js_array.sliceFrom(1, x); })); }; var lines = Parser$AgdaModeVscode.splitToLines(raw); @@ -155,9 +154,11 @@ function render(dictionary) { return Item$AgdaModeVscode.error(RichText$AgdaModeVscode.parse(line), undefined); })); case "goal" : - return Belt_Option.mapWithDefault(Agda$AgdaModeVscode.Expr.parse(Js_string.sliceToEnd(5, Util$AgdaModeVscode.$$String.unlines(lines))), [], (function (expr) { + return Belt_Option.mapWithDefault(Agda$AgdaModeVscode.Expr.parse((function (__x) { + return Js_string.sliceToEnd(5, __x); + })(Util$AgdaModeVscode.$$String.unlines(lines))), [], (function (expr) { return [{ - TAG: 0, + TAG: "Labeled", _0: "Goal", _1: "special", _2: Agda$AgdaModeVscode.Expr.render(expr), @@ -167,9 +168,11 @@ function render(dictionary) { }]; })); case "have" : - return Belt_Option.mapWithDefault(Agda$AgdaModeVscode.Expr.parse(Js_string.sliceToEnd(5, Util$AgdaModeVscode.$$String.unlines(lines))), [], (function (expr) { + return Belt_Option.mapWithDefault(Agda$AgdaModeVscode.Expr.parse((function (__x) { + return Js_string.sliceToEnd(5, __x); + })(Util$AgdaModeVscode.$$String.unlines(lines))), [], (function (expr) { return [{ - TAG: 0, + TAG: "Labeled", _0: "Have", _1: "special", _2: Agda$AgdaModeVscode.Expr.render(expr), @@ -209,9 +212,15 @@ function render(dictionary) { function parseAllGoalsWarnings(title, body) { var partiteAllGoalsWarnings = function (title, body) { var lines = Parser$AgdaModeVscode.splitToLines(body); - var hasMetas = Belt_Option.isSome(Js_string.match_(/Goals/, title)); - var hasWarnings = Belt_Option.isSome(Js_string.match_(/Warnings/, title)); - var hasErrors = Belt_Option.isSome(Js_string.match_(/Errors/, title)); + var hasMetas = Belt_Option.isSome((function (__x) { + return Js_string.match_(/Goals/, __x); + })(title)); + var hasWarnings = Belt_Option.isSome((function (__x) { + return Js_string.match_(/Warnings/, __x); + })(title)); + var hasErrors = Belt_Option.isSome((function (__x) { + return Js_string.match_(/Errors/, __x); + })(title)); var markMetas = function (param) { if (hasMetas && param[1] === 0) { return "metas"; @@ -219,36 +228,40 @@ function parseAllGoalsWarnings(title, body) { }; var markWarnings = function (param) { - if (!hasWarnings) { - return ; - } - if (!hasMetas) { - if (param[1] === 0) { + if (hasWarnings) { + if (hasMetas) { + return Belt_Option.map((function (__x) { + return Js_string.match_(/Warnings/, __x); + })((function (__x) { + return Js_string.slice(5, 13, __x); + })(param[0])), (function (param) { + return "warnings"; + })); + } else if (param[1] === 0) { return "warnings"; } else { return ; } } - var __x = Js_string.slice(5, 13, param[0]); - return Belt_Option.map(Js_string.match_(/Warnings/, __x), (function (param) { - return "warnings"; - })); + }; var markErrors = function (param) { - if (!hasErrors) { - return ; - } - if (!(hasMetas || hasWarnings)) { - if (param[1] === 0) { + if (hasErrors) { + if (hasMetas || hasWarnings) { + return Belt_Option.map((function (__x) { + return Js_string.match_(/Errors/, __x); + })((function (__x) { + return Js_string.slice(5, 11, __x); + })(param[0])), (function (param) { + return "errors"; + })); + } else if (param[1] === 0) { return "errors"; } else { return ; } } - var __x = Js_string.slice(5, 11, param[0]); - return Belt_Option.map(Js_string.match_(/Errors/, __x), (function (param) { - return "errors"; - })); + }; return Emacs__Parser$AgdaModeVscode.Dict.partite(lines, (function (line) { var value = markMetas(line); @@ -280,7 +293,7 @@ function parseOutputs(raw) { function parseAndRenderTextWithLocation(raw) { return [{ - TAG: 1, + TAG: "Unlabeled", _0: RichText$AgdaModeVscode.parse(raw), _1: undefined, _2: undefined, @@ -290,7 +303,9 @@ function parseAndRenderTextWithLocation(raw) { function parseAndRenderSearchAbout(raw) { var lines = Parser$AgdaModeVscode.splitToLines(raw); - var outputs = Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(Emacs__Parser$AgdaModeVscode.aggregateLines(Belt_Array.map(Js_array.sliceFrom(1, lines), (function (param) { + var outputs = Belt_Array.map(Belt_Array.keepMap(Belt_Array.map(Emacs__Parser$AgdaModeVscode.aggregateLines(Belt_Array.map((function (__x) { + return Js_array.sliceFrom(1, __x); + })(lines), (function (param) { return Js_string.sliceToEnd(2, param); }))), Agda$AgdaModeVscode.Output.parse), (function (x) { return x; @@ -303,7 +318,7 @@ function parseAndRenderSearchAbout(raw) { if (target !== undefined) { if (outputs.length === 0) { return [{ - TAG: 1, + TAG: "Unlabeled", _0: RichText$AgdaModeVscode.parse("There are no definitions about " + target), _1: undefined, _2: undefined, @@ -312,7 +327,7 @@ function parseAndRenderSearchAbout(raw) { } else { return Belt_Array.concatMany([ [{ - TAG: 1, + TAG: "Unlabeled", _0: RichText$AgdaModeVscode.parse("Definitions about " + (target + ":")), _1: undefined, _2: undefined, @@ -323,7 +338,7 @@ function parseAndRenderSearchAbout(raw) { } } else { return [{ - TAG: 1, + TAG: "Unlabeled", _0: RichText$AgdaModeVscode.parse("Don't know what to search about"), _1: undefined, _2: undefined, diff --git a/lib/js/src/View/Panel/Header.bs.js b/lib/js/src/View/Panel/Header.bs.js index 1614f913..aa6c7080 100644 --- a/lib/js/src/View/Panel/Header.bs.js +++ b/lib/js/src/View/Panel/Header.bs.js @@ -3,29 +3,28 @@ var React = require("react"); -function Header(Props) { - var header = Props.header; - var status = Props.status; - var status$1 = React.createElement("div", { +function Header(props) { + var header = props.header; + var status = React.createElement("div", { className: "agda-mode-header-status" - }, status); - switch (header.TAG | 0) { - case /* Plain */0 : + }, props.status); + switch (header.TAG) { + case "Plain" : return React.createElement("div", { className: "agda-mode-header" - }, header._0, status$1); - case /* Success */1 : + }, header._0, status); + case "Success" : return React.createElement("div", { className: "agda-mode-header success" - }, header._0, status$1); - case /* Warning */2 : + }, header._0, status); + case "Warning" : return React.createElement("div", { className: "agda-mode-header warning" - }, header._0, status$1); - case /* Error */3 : + }, header._0, status); + case "Error" : return React.createElement("div", { className: "agda-mode-header error" - }, header._0, status$1); + }, header._0, status); } } diff --git a/lib/js/src/View/Panel/Keyboard.bs.js b/lib/js/src/View/Panel/Keyboard.bs.js index 85951f88..8f694a17 100644 --- a/lib/js/src/View/Panel/Keyboard.bs.js +++ b/lib/js/src/View/Panel/Keyboard.bs.js @@ -2,31 +2,31 @@ 'use strict'; var Caml = require("rescript/lib/js/caml.js"); -var Curry = require("rescript/lib/js/curry.js"); var React = require("react"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Translator$AgdaModeVscode = require("../../InputMethod/Translator.bs.js"); var CandidateSymbols$AgdaModeVscode = require("./CandidateSymbols.bs.js"); function reducer(state, action) { - if (typeof action === "number") { - if (action === 1) { - return ; + if (typeof action !== "object") { + switch (action) { + case "Activate" : + var translation = Translator$AgdaModeVscode.translate("", undefined); + return { + sequence: "", + translation: translation, + candidateIndex: 0 + }; + case "Deactivate" : + return ; + default: + } - if (action === 0) { - var translation = Translator$AgdaModeVscode.translate("", undefined); - return { - sequence: "", - translation: translation, - candidateIndex: 0 - }; - } - } if (state === undefined) { return ; } - if (typeof action !== "number") { + if (typeof action === "object") { return { sequence: action._0, translation: action._1, @@ -34,25 +34,25 @@ function reducer(state, action) { }; } switch (action) { - case /* BrowseUp */2 : + case "BrowseUp" : return { sequence: state.sequence, translation: state.translation, candidateIndex: Caml.int_max(0, state.candidateIndex - 10 | 0) }; - case /* BrowseRight */3 : + case "BrowseRight" : return { sequence: state.sequence, translation: state.translation, candidateIndex: Caml.int_min(state.translation.candidateSymbols.length - 1 | 0, state.candidateIndex + 1 | 0) }; - case /* BrowseDown */4 : + case "BrowseDown" : return { sequence: state.sequence, translation: state.translation, candidateIndex: Caml.int_min(state.translation.candidateSymbols.length - 1 | 0, state.candidateIndex + 10 | 0) }; - case /* BrowseLeft */5 : + case "BrowseLeft" : return { sequence: state.sequence, translation: state.translation, @@ -62,20 +62,18 @@ function reducer(state, action) { } } -function Keyboard(Props) { - var state = Props.state; - var onInsertChar = Props.onInsertChar; - var onChooseSymbol = Props.onChooseSymbol; - var prompting = Props.prompting; +function Keyboard(props) { + var state = props.state; if (state === undefined) { return React.createElement("div", { className: "agda-mode-keyboard deactivated" }); } var translation = state.translation; + var onInsertChar = props.onInsertChar; return React.createElement("div", { className: "agda-mode-keyboard" + ( - prompting ? " prompting" : "" + props.prompting ? " prompting" : "" ) }, React.createElement("div", { className: "agda-mode-keyboard-sequence-and-candidates" @@ -84,7 +82,7 @@ function Keyboard(Props) { }, state.sequence), React.createElement(CandidateSymbols$AgdaModeVscode.make, { candidates: translation.candidateSymbols, index: state.candidateIndex, - onChooseSymbol: onChooseSymbol + onChooseSymbol: props.onChooseSymbol })), React.createElement("div", { className: "agda-mode-keyboard-suggestions" }, Belt_Array.map(translation.keySuggestions, (function (key) { @@ -92,7 +90,7 @@ function Keyboard(Props) { key: key, className: "agda-mode-key", onClick: (function (param) { - Curry._1(onInsertChar, key); + onInsertChar(key); }) }, key); })))); diff --git a/lib/js/src/View/Panel/Panel.bs.js b/lib/js/src/View/Panel/Panel.bs.js index dcde9935..21dbe1d6 100644 --- a/lib/js/src/View/Panel/Panel.bs.js +++ b/lib/js/src/View/Panel/Panel.bs.js @@ -1,9 +1,7 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Curry = require("rescript/lib/js/curry.js"); var React = require("react"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Body$AgdaModeVscode = require("./Body.bs.js"); @@ -15,14 +13,11 @@ var Header$AgdaModeVscode = require("./Header.bs.js"); var Prompt$AgdaModeVscode = require("./Prompt.bs.js"); var Keyboard$AgdaModeVscode = require("./Keyboard.bs.js"); -function Panel(Props) { - var onRequest = Props.onRequest; - var onEventToView = Props.onEventToView; - var onResponse = Props.onResponse; - var onEventFromView = Props.onEventFromView; +function Panel(props) { + var onEventFromView = props.onEventFromView; var match = React.useState(function () { return { - TAG: 0, + TAG: "Plain", _0: "Loading ...", [Symbol.for("name")]: "Plain" }; @@ -43,6 +38,18 @@ function Panel(Props) { body ]; }; + var restoreHeaderAndBody = function () { + Belt_Option.forEach(savedHeaderAndBody.current, (function (param) { + var body = param[1]; + var header = param[0]; + setHeader(function (param) { + return header; + }); + setBody(function (param) { + return body; + }); + })); + }; var match$3 = React.useState(function () { }); @@ -53,191 +60,189 @@ function Panel(Props) { var runInputMethodAction = match$4[1]; var inputMethodState = match$4[0]; React.useEffect((function () { - Chan$AgdaModeVscode.emit(onEventFromView, /* Initialized */0); + Chan$AgdaModeVscode.emit(onEventFromView, "Initialized"); }), []); var promptResponseResolver = React.useRef(undefined); var onSubmit = function (result) { Belt_Option.forEach(promptResponseResolver.current, (function (resolve) { - Curry._1(setPrompt, (function (param) { - - })); - Curry._1(resolve, result); + setPrompt(function (param) { + + }); + resolve(result); promptResponseResolver.current = undefined; })); }; var onUpdatePromptIM = function (action) { Chan$AgdaModeVscode.emit(onEventFromView, { - TAG: 1, + TAG: "PromptIMUpdate", _0: action, [Symbol.for("name")]: "PromptIMUpdate" }); }; - Hook$AgdaModeVscode.recv(onRequest, onResponse, (function (msg) { + Hook$AgdaModeVscode.recv(props.onRequest, props.onResponse, (async function (msg) { var match = msg._1; var value = match.value; var placeholder = match.placeholder; var body = match.body; var header$p = msg._0; - Curry._1(setHeader, (function (param) { - return header$p; - })); - Curry._1(setBody, (function (param) { - return []; + setHeader(function (param) { + return header$p; + }); + setBody(function (param) { + return []; + }); + setPrompt(function (previous) { + if (previous === undefined) { + return [ + body, + placeholder, + value + ]; + } + var oldValue = previous[2]; + if (oldValue !== undefined) { + return [ + body, + placeholder, + oldValue + ]; + } else { + return [ + body, + placeholder, + value + ]; + } + }); + var promise = new Promise((function (resolve, param) { + promptResponseResolver.current = resolve; })); - Curry._1(setPrompt, (function (previous) { - if (previous === undefined) { - return [ - body, - placeholder, - value - ]; - } - var oldValue = previous[2]; - if (oldValue !== undefined) { - return [ - body, - placeholder, - oldValue - ]; - } else { - return [ - body, - placeholder, - value - ]; - } - })); - var match$1 = $$Promise.pending(undefined); - promptResponseResolver.current = match$1[1]; - return $$Promise.map(match$1[0], (function (x) { - if (x !== undefined) { - return { - _0: x, - [Symbol.for("name")]: "PromptSuccess" - }; - } else { - return /* PromptInterrupted */0; - } - })); + var result = await promise; + if (result !== undefined) { + return { + TAG: "PromptSuccess", + _0: result, + [Symbol.for("name")]: "PromptSuccess" + }; + } else { + return "PromptInterrupted"; + } })); - Hook$AgdaModeVscode.on(onEventToView, (function ($$event) { - if (typeof $$event === "number") { + Hook$AgdaModeVscode.on(props.onEventToView, (function ($$event) { + if (typeof $$event !== "object") { onSubmit(undefined); - Curry._1(setPrompt, (function (param) { - - })); - return Belt_Option.forEach(savedHeaderAndBody.current, (function (param) { - var body = param[1]; - var header = param[0]; - Curry._1(setHeader, (function (param) { - return header; - })); - Curry._1(setBody, (function (param) { - return body; - })); - })); + setPrompt(function (param) { + + }); + return restoreHeaderAndBody(); } - switch ($$event.TAG | 0) { - case /* Display */0 : + switch ($$event.TAG) { + case "Display" : var body = $$event._1; var header = $$event._0; onSubmit(undefined); saveHeaderAndBody(header, body); - Curry._1(setHeader, (function (param) { - return header; - })); - return Curry._1(setBody, (function (param) { - return body; - })); - case /* Append */1 : + setHeader(function (param) { + return header; + }); + return setBody(function (param) { + return body; + }); + case "Append" : var body$1 = $$event._1; var header$1 = $$event._0; onSubmit(undefined); saveHeaderAndBody(header$1, body$1); - Curry._1(setHeader, (function (param) { - return header$1; - })); - return Curry._1(setBody, (function (old) { - return Belt_Array.concat(old, body$1); - })); - case /* SetStatus */2 : + setHeader(function (param) { + return header$1; + }); + return setBody(function (old) { + return Belt_Array.concat(old, body$1); + }); + case "SetStatus" : var text = $$event._0; - return Curry._1(setStatus, (function (param) { - return text; - })); - case /* PromptIMUpdate */3 : + return setStatus(function (param) { + return text; + }); + case "PromptIMUpdate" : var text$1 = $$event._0; - return Curry._1(setPrompt, (function (x) { - if (x !== undefined) { - return [ - x[0], - x[1], - text$1 - ]; - } - - })); - case /* InputMethod */4 : - return Curry._1(runInputMethodAction, $$event._0); + return setPrompt(function (x) { + if (x !== undefined) { + return [ + x[0], + x[1], + text$1 + ]; + } + + }); + case "InputMethod" : + return runInputMethodAction($$event._0); } })); - var onLinkEvent = Chan$AgdaModeVscode.make(undefined); + var onLinkEvent = Chan$AgdaModeVscode.make(); Chan$AgdaModeVscode.on(onLinkEvent, (function ($$event) { - switch ($$event.TAG | 0) { - case /* JumpToTarget */0 : + switch ($$event.TAG) { + case "JumpToTarget" : return Chan$AgdaModeVscode.emit(onEventFromView, { - TAG: 2, + TAG: "JumpToTarget", _0: $$event._0, [Symbol.for("name")]: "JumpToTarget" }); - case /* MouseOver */1 : - case /* MouseOut */2 : + case "MouseOver" : + case "MouseOut" : return ; } })); - return React.createElement(Link$AgdaModeVscode.$$Event.Provider.make, Curry._3(Link$AgdaModeVscode.$$Event.Provider.makeProps, onLinkEvent, React.createElement(View$AgdaModeVscode.EventFromView.Provider.make, Curry._3(View$AgdaModeVscode.EventFromView.Provider.makeProps, onEventFromView, React.createElement("section", { - className: "agda-mode native-key-bindings", - tabIndex: -1 - }, React.createElement("div", { - className: "agda-mode-header-container" - }, React.createElement(Header$AgdaModeVscode.make, { - header: match[0], - status: match$1[0] - }), React.createElement(Prompt$AgdaModeVscode.make, { - inputMethodActivated: Belt_Option.isSome(inputMethodState), - prompt: prompt, - onSubmit: onSubmit, - onUpdatePromptIM: onUpdatePromptIM - }), React.createElement(Keyboard$AgdaModeVscode.make, { - state: inputMethodState, - onInsertChar: (function ($$char) { - Chan$AgdaModeVscode.emit(onEventFromView, { - TAG: 0, - _0: { - TAG: 0, - _0: $$char, - [Symbol.for("name")]: "InsertChar" - }, - [Symbol.for("name")]: "InputMethod" - }); - }), - onChooseSymbol: (function (symbol) { - Chan$AgdaModeVscode.emit(onEventFromView, { - TAG: 0, - _0: { - TAG: 1, - _0: symbol, - [Symbol.for("name")]: "ChooseSymbol" - }, - [Symbol.for("name")]: "InputMethod" - }); - }), - prompting: prompting - })), React.createElement(Body$AgdaModeVscode.make, { - items: match$2[0] - })), undefined)), undefined)); + return React.createElement(Link$AgdaModeVscode.$$Event.Provider.make, { + value: onLinkEvent, + children: React.createElement(View$AgdaModeVscode.EventFromView.Provider.make, { + value: onEventFromView, + children: React.createElement("section", { + className: "agda-mode native-key-bindings", + tabIndex: -1 + }, React.createElement("div", { + className: "agda-mode-header-container" + }, React.createElement(Header$AgdaModeVscode.make, { + header: match[0], + status: match$1[0] + }), React.createElement(Prompt$AgdaModeVscode.make, { + inputMethodActivated: Belt_Option.isSome(inputMethodState), + prompt: prompt, + onSubmit: onSubmit, + onUpdatePromptIM: onUpdatePromptIM + }), React.createElement(Keyboard$AgdaModeVscode.make, { + state: inputMethodState, + onInsertChar: (function ($$char) { + Chan$AgdaModeVscode.emit(onEventFromView, { + TAG: "InputMethod", + _0: { + TAG: "InsertChar", + _0: $$char, + [Symbol.for("name")]: "InsertChar" + }, + [Symbol.for("name")]: "InputMethod" + }); + }), + onChooseSymbol: (function (symbol) { + Chan$AgdaModeVscode.emit(onEventFromView, { + TAG: "InputMethod", + _0: { + TAG: "ChooseSymbol", + _0: symbol, + [Symbol.for("name")]: "ChooseSymbol" + }, + [Symbol.for("name")]: "InputMethod" + }); + }), + prompting: prompting + })), React.createElement(Body$AgdaModeVscode.make, { + items: match$2[0] + })) + }) + }); } var make = Panel; diff --git a/lib/js/src/View/Panel/Prompt.bs.js b/lib/js/src/View/Panel/Prompt.bs.js index 52f81f8f..5b7816d5 100644 --- a/lib/js/src/View/Panel/Prompt.bs.js +++ b/lib/js/src/View/Panel/Prompt.bs.js @@ -1,21 +1,20 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Curry = require("rescript/lib/js/curry.js"); var React = require("react"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); var Webapi__Dom__Element = require("rescript-webapi/lib/js/src/Webapi/Dom/Webapi__Dom__Element.bs.js"); -function Prompt(Props) { - var inputMethodActivated = Props.inputMethodActivated; - var prompt = Props.prompt; - var onSubmit = Props.onSubmit; - var onUpdatePromptIM = Props.onUpdatePromptIM; +function Prompt(props) { + var prompt = props.prompt; if (prompt === undefined) { - return React.createElement(React.Fragment, undefined); + return React.createElement(React.Fragment, {}); } var body = prompt[0]; + var onUpdatePromptIM = props.onUpdatePromptIM; + var onSubmit = props.onSubmit; + var inputMethodActivated = props.inputMethodActivated; var placeholder = Belt_Option.getWithDefault(prompt[1], ""); var value = Belt_Option.getWithDefault(prompt[2], ""); var match = React.useState(function () { @@ -33,30 +32,30 @@ function Prompt(Props) { var arrowKey; switch (match) { case "ArrowDown" : - arrowKey = /* BrowseDown */1; + arrowKey = "BrowseDown"; break; case "ArrowLeft" : - arrowKey = /* BrowseLeft */2; + arrowKey = "BrowseLeft"; break; case "ArrowRight" : - arrowKey = /* BrowseRight */3; + arrowKey = "BrowseRight"; break; case "ArrowUp" : - arrowKey = /* BrowseUp */0; + arrowKey = "BrowseUp"; break; case "Escape" : - arrowKey = /* Escape */4; + arrowKey = "Escape"; break; default: arrowKey = undefined; } Belt_Option.forEach(arrowKey, (function (action) { if (inputMethodActivated) { - Curry._1(onUpdatePromptIM, action); + onUpdatePromptIM(action); $$event.preventDefault(); return ; - } else if (action === /* Escape */4) { - Curry._1(onSubmit, undefined); + } else if (action === "Escape") { + onSubmit(undefined); $$event.preventDefault(); return ; } else { @@ -75,11 +74,11 @@ function Prompt(Props) { selectionInterval_0, selectionInterval_1 ]; - Curry._1(setSelectionInterval, (function (param) { - return selectionInterval; - })); - Curry._1(onUpdatePromptIM, { - TAG: 0, + setSelectionInterval(function (param) { + return selectionInterval; + }); + onUpdatePromptIM({ + TAG: "MouseSelect", _0: selectionInterval, [Symbol.for("name")]: "MouseSelect" }); @@ -87,14 +86,14 @@ function Prompt(Props) { var onChange = function ($$event) { var value = $$event.target.value; $$event.persist(); - Curry._1(setSelectionInterval, (function (param) { - return [ - $$event.target.selectionStart, - $$event.target.selectionEnd - ]; - })); - Curry._1(onUpdatePromptIM, { - TAG: 1, + setSelectionInterval(function (param) { + return [ + $$event.target.selectionStart, + $$event.target.selectionEnd + ]; + }); + onUpdatePromptIM({ + TAG: "KeyUpdate", _0: value, [Symbol.for("name")]: "KeyUpdate" }); @@ -107,28 +106,28 @@ function Prompt(Props) { setSelectionRange(input, param[0], param[1]); })); })); - setTimeout((function (param) { + setTimeout((function () { if (!hasFocused) { Belt_Option.forEach(Belt_Option.flatMap(Caml_option.nullable_to_opt(inputRef.current), Webapi__Dom__Element.asHtmlElement), (function (prim) { prim.focus(); })); - Curry._1(setHasFocused, (function (param) { - return true; - })); + setHasFocused(function (param) { + return true; + }); } }), 100); }); var onSubmit$1 = function (_event) { - Curry._1(onUpdatePromptIM, /* Escape */4); - Curry._1(onSubmit, value); + onUpdatePromptIM("Escape"); + onSubmit(value); }; return React.createElement("div", { className: "agda-mode-prompt" }, React.createElement("form", { onSubmit: onSubmit$1 - }, body !== undefined ? React.createElement("p", undefined, body) : React.createElement(React.Fragment, undefined), React.createElement("input", { - ref: inputRef, + }, body !== undefined ? React.createElement("p", undefined, body) : React.createElement(React.Fragment, {}), React.createElement("input", { + ref: Caml_option.some(inputRef), placeholder: placeholder, type: "text", value: value, diff --git a/lib/js/src/View/Root.bs.js b/lib/js/src/View/Root.bs.js index 4953cd93..5a75f9ee 100644 --- a/lib/js/src/View/Root.bs.js +++ b/lib/js/src/View/Root.bs.js @@ -13,39 +13,39 @@ var Panel$AgdaModeVscode = require("./Panel/Panel.bs.js"); var vscode = acquireVsCodeApi(); -var onRequest = Chan$AgdaModeVscode.make(undefined); +var onRequest = Chan$AgdaModeVscode.make(); -var onEventToView = Chan$AgdaModeVscode.make(undefined); +var onEventToView = Chan$AgdaModeVscode.make(); VSCode.Api.onMessage(function (stringifiedJSON) { var json = JSON.parse(stringifiedJSON); var match = Json$JsonCombinators.decode(json, View$AgdaModeVscode.RequestOrEventToView.decode); - if (match.TAG !== /* Ok */0) { + if (match.TAG !== "Ok") { return ; } var $$event = match._0; - if ($$event.TAG === /* Request */0) { + if ($$event.TAG === "Request") { return Chan$AgdaModeVscode.emit(onRequest, $$event._0); } else { return Chan$AgdaModeVscode.emit(onEventToView, $$event._0); } }); -var onResponse = Chan$AgdaModeVscode.make(undefined); +var onResponse = Chan$AgdaModeVscode.make(); Chan$AgdaModeVscode.on(onResponse, (function (response) { vscode.postMessage(View$AgdaModeVscode.ResponseOrEventFromView.encode({ - TAG: 0, + TAG: "Response", _0: response, [Symbol.for("name")]: "Response" })); })); -var onEventFromView = Chan$AgdaModeVscode.make(undefined); +var onEventFromView = Chan$AgdaModeVscode.make(); Chan$AgdaModeVscode.on(onEventFromView, (function ($$event) { vscode.postMessage(View$AgdaModeVscode.ResponseOrEventFromView.encode({ - TAG: 1, + TAG: "Event", _0: $$event, [Symbol.for("name")]: "Event" })); diff --git a/lib/js/src/View/Singleton.bs.js b/lib/js/src/View/Singleton.bs.js index af2c574d..ac31e6d8 100644 --- a/lib/js/src/View/Singleton.bs.js +++ b/lib/js/src/View/Singleton.bs.js @@ -1,7 +1,6 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); var WebviewPanel$AgdaModeVscode = require("./WebviewPanel.bs.js"); @@ -17,13 +16,13 @@ function make(extensionPath) { } var panel$1 = WebviewPanel$AgdaModeVscode.make("Agda", extensionPath); handle.contents = Caml_option.some(panel$1); - $$Promise.get(WebviewPanel$AgdaModeVscode.onceDestroyed(panel$1), (function (param) { - handle.contents = undefined; - })); + WebviewPanel$AgdaModeVscode.onceDestroyed(panel$1).finally(function () { + handle.contents = undefined; + }); return panel$1; } -function destroy(param) { +function destroy() { Belt_Option.forEach(handle.contents, WebviewPanel$AgdaModeVscode.destroy); handle.contents = undefined; } @@ -37,7 +36,7 @@ var handle$1 = { contents: undefined }; -function get(param) { +function get() { return handle$1.contents; } @@ -48,13 +47,13 @@ function make$1(extensionPath) { } var panel$1 = WebviewPanel$AgdaModeVscode.make("Agda Debug Buffer", extensionPath); handle$1.contents = Caml_option.some(panel$1); - $$Promise.get(WebviewPanel$AgdaModeVscode.onceDestroyed(panel$1), (function (param) { - handle$1.contents = undefined; - })); + WebviewPanel$AgdaModeVscode.onceDestroyed(panel$1).finally(function () { + handle$1.contents = undefined; + }); return panel$1; } -function destroy$1(param) { +function destroy$1() { Belt_Option.forEach(handle$1.contents, WebviewPanel$AgdaModeVscode.destroy); handle$1.contents = undefined; } @@ -67,4 +66,4 @@ var DebugBuffer = { exports.Panel = Panel; exports.DebugBuffer = DebugBuffer; -/* Promise Not a pure module */ +/* WebviewPanel-AgdaModeVscode Not a pure module */ diff --git a/lib/js/src/View/View.bs.js b/lib/js/src/View/View.bs.js index 99f0c7a1..08152deb 100644 --- a/lib/js/src/View/View.bs.js +++ b/lib/js/src/View/View.bs.js @@ -19,10 +19,10 @@ var decode = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "Error" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (text) { return { - TAG: 3, + TAG: "Error", _0: text, [Symbol.for("name")]: "Error" }; @@ -31,10 +31,10 @@ var decode = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "Plain" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (text) { return { - TAG: 0, + TAG: "Plain", _0: text, [Symbol.for("name")]: "Plain" }; @@ -43,10 +43,10 @@ var decode = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "Success" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (text) { return { - TAG: 1, + TAG: "Success", _0: text, [Symbol.for("name")]: "Success" }; @@ -55,10 +55,10 @@ var decode = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "Warning" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (text) { return { - TAG: 2, + TAG: "Warning", _0: text, [Symbol.for("name")]: "Warning" }; @@ -74,41 +74,39 @@ var decode = Util$AgdaModeVscode.Decode.sum(function (x) { } }); -function encode(param) { - return Util$AgdaModeVscode.Encode.sum((function (x) { - switch (x.TAG | 0) { - case /* Plain */0 : - return { - TAG: 0, - _0: "Plain", - _1: x._0, - [Symbol.for("name")]: "Payload" - }; - case /* Success */1 : - return { - TAG: 0, - _0: "Success", - _1: x._0, - [Symbol.for("name")]: "Payload" - }; - case /* Warning */2 : - return { - TAG: 0, - _0: "Warning", - _1: x._0, - [Symbol.for("name")]: "Payload" - }; - case /* Error */3 : - return { - TAG: 0, - _0: "Error", - _1: x._0, - [Symbol.for("name")]: "Payload" - }; - - } - }), param); -} +var encode = Util$AgdaModeVscode.Encode.sum(function (x) { + switch (x.TAG) { + case "Plain" : + return { + TAG: "Payload", + _0: "Plain", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; + case "Success" : + return { + TAG: "Payload", + _0: "Success", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; + case "Warning" : + return { + TAG: "Payload", + _0: "Warning", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; + case "Error" : + return { + TAG: "Payload", + _0: "Error", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; + + } + }); var Header = { toString: toString, @@ -126,15 +124,15 @@ var decode$1 = Json_Decode$JsonCombinators.object(function (field) { function encode$1(param) { return { - body: Json_Encode$JsonCombinators.option((function (prim) { + body: Json_Encode$JsonCombinators.option(function (prim) { return prim; - }), param.body), - placeholder: Json_Encode$JsonCombinators.option((function (prim) { + })(param.body), + placeholder: Json_Encode$JsonCombinators.option(function (prim) { return prim; - }), param.placeholder), - value: Json_Encode$JsonCombinators.option((function (prim) { + })(param.placeholder), + value: Json_Encode$JsonCombinators.option(function (prim) { return prim; - }), param.value) + })(param.value) }; } @@ -149,45 +147,46 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "Activate" : return { - TAG: 1, - _0: /* Activate */0, + TAG: "TagOnly", + _0: "Activate", [Symbol.for("name")]: "TagOnly" }; case "BrowseDown" : return { - TAG: 1, - _0: /* BrowseDown */4, + TAG: "TagOnly", + _0: "BrowseDown", [Symbol.for("name")]: "TagOnly" }; case "BrowseLeft" : return { - TAG: 1, - _0: /* BrowseLeft */5, + TAG: "TagOnly", + _0: "BrowseLeft", [Symbol.for("name")]: "TagOnly" }; case "BrowseRight" : return { - TAG: 1, - _0: /* BrowseRight */3, + TAG: "TagOnly", + _0: "BrowseRight", [Symbol.for("name")]: "TagOnly" }; case "BrowseUp" : return { - TAG: 1, - _0: /* BrowseUp */2, + TAG: "TagOnly", + _0: "BrowseUp", [Symbol.for("name")]: "TagOnly" }; case "Deactivate" : return { - TAG: 1, - _0: /* Deactivate */1, + TAG: "TagOnly", + _0: "Deactivate", [Symbol.for("name")]: "TagOnly" }; case "Update" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.tuple3(Json_Decode$JsonCombinators.string, Translator$AgdaModeVscode.decode, Json_Decode$JsonCombinators.$$int), (function (param) { return { + TAG: "Update", _0: param[0], _1: param[1], _2: param[2], @@ -205,65 +204,63 @@ var decode$2 = Util$AgdaModeVscode.Decode.sum(function (x) { } }); -function encode$2(param) { - return Util$AgdaModeVscode.Encode.sum((function (x) { - if (typeof x !== "number") { - return { - TAG: 0, - _0: "Update", - _1: Json_Encode$JsonCombinators.tuple3((function (prim) { - return prim; - }), Translator$AgdaModeVscode.encode, (function (prim) { - return prim; - }), [ - x._0, - x._1, - x._2 - ]), - [Symbol.for("name")]: "Payload" - }; - } - switch (x) { - case /* Activate */0 : - return { - TAG: 1, - _0: "Activate", - [Symbol.for("name")]: "TagOnly" - }; - case /* Deactivate */1 : - return { - TAG: 1, - _0: "Deactivate", - [Symbol.for("name")]: "TagOnly" - }; - case /* BrowseUp */2 : - return { - TAG: 1, - _0: "BrowseUp", - [Symbol.for("name")]: "TagOnly" - }; - case /* BrowseRight */3 : - return { - TAG: 1, - _0: "BrowseRight", - [Symbol.for("name")]: "TagOnly" - }; - case /* BrowseDown */4 : - return { - TAG: 1, - _0: "BrowseDown", - [Symbol.for("name")]: "TagOnly" - }; - case /* BrowseLeft */5 : - return { - TAG: 1, - _0: "BrowseLeft", - [Symbol.for("name")]: "TagOnly" - }; - - } - }), param); -} +var encode$2 = Util$AgdaModeVscode.Encode.sum(function (x) { + if (typeof x === "object") { + return { + TAG: "Payload", + _0: "Update", + _1: Json_Encode$JsonCombinators.tuple3((function (prim) { + return prim; + }), Translator$AgdaModeVscode.encode, (function (prim) { + return prim; + }))([ + x._0, + x._1, + x._2 + ]), + [Symbol.for("name")]: "Payload" + }; + } + switch (x) { + case "Activate" : + return { + TAG: "TagOnly", + _0: "Activate", + [Symbol.for("name")]: "TagOnly" + }; + case "Deactivate" : + return { + TAG: "TagOnly", + _0: "Deactivate", + [Symbol.for("name")]: "TagOnly" + }; + case "BrowseUp" : + return { + TAG: "TagOnly", + _0: "BrowseUp", + [Symbol.for("name")]: "TagOnly" + }; + case "BrowseRight" : + return { + TAG: "TagOnly", + _0: "BrowseRight", + [Symbol.for("name")]: "TagOnly" + }; + case "BrowseDown" : + return { + TAG: "TagOnly", + _0: "BrowseDown", + [Symbol.for("name")]: "TagOnly" + }; + case "BrowseLeft" : + return { + TAG: "TagOnly", + _0: "BrowseLeft", + [Symbol.for("name")]: "TagOnly" + }; + + } + }); var InputMethod = { decode: decode$2, @@ -271,19 +268,19 @@ var InputMethod = { }; function toString$1(x) { - if (typeof x === "number") { + if (typeof x !== "object") { return "PromptInterrupt"; } - switch (x.TAG | 0) { - case /* Display */0 : + switch (x.TAG) { + case "Display" : return "Display " + x._0._0; - case /* Append */1 : + case "Append" : return "Append " + x._0._0; - case /* SetStatus */2 : + case "SetStatus" : return "SetStatus " + x._0; - case /* PromptIMUpdate */3 : + case "PromptIMUpdate" : return "PromptIMUpdate " + x._0; - case /* InputMethod */4 : + case "InputMethod" : return "InputMethod"; } @@ -293,10 +290,10 @@ var decode$3 = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "Append" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.tuple2(decode, Json_Decode$JsonCombinators.array(Item$AgdaModeVscode.decode)), (function (param) { return { - TAG: 1, + TAG: "Append", _0: param[0], _1: param[1], [Symbol.for("name")]: "Append" @@ -306,10 +303,10 @@ var decode$3 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "Display" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.tuple2(decode, Json_Decode$JsonCombinators.array(Item$AgdaModeVscode.decode)), (function (param) { return { - TAG: 0, + TAG: "Display", _0: param[0], _1: param[1], [Symbol.for("name")]: "Display" @@ -319,10 +316,10 @@ var decode$3 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "InputMethod" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(decode$2, (function (payload) { return { - TAG: 4, + TAG: "InputMethod", _0: payload, [Symbol.for("name")]: "InputMethod" }; @@ -331,10 +328,10 @@ var decode$3 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "PromptIMUpdate" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (text) { return { - TAG: 3, + TAG: "PromptIMUpdate", _0: text, [Symbol.for("name")]: "PromptIMUpdate" }; @@ -343,16 +340,16 @@ var decode$3 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "PromptInterrupt" : return { - TAG: 1, - _0: /* PromptInterrupt */0, + TAG: "TagOnly", + _0: "PromptInterrupt", [Symbol.for("name")]: "TagOnly" }; case "SetStatus" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (text) { return { - TAG: 2, + TAG: "SetStatus", _0: text, [Symbol.for("name")]: "SetStatus" }; @@ -368,65 +365,59 @@ var decode$3 = Util$AgdaModeVscode.Decode.sum(function (x) { } }); -function encode$3(param) { - return Util$AgdaModeVscode.Encode.sum((function (x) { - if (typeof x === "number") { - return { - TAG: 1, - _0: "PromptInterrupt", - [Symbol.for("name")]: "TagOnly" - }; - } - switch (x.TAG | 0) { - case /* Display */0 : - return { - TAG: 0, - _0: "Display", - _1: Json_Encode$JsonCombinators.tuple2(encode, (function (param) { - return Json_Encode$JsonCombinators.array(Item$AgdaModeVscode.encode, param); - }), [ - x._0, - x._1 - ]), - [Symbol.for("name")]: "Payload" - }; - case /* Append */1 : - return { - TAG: 0, - _0: "Append", - _1: Json_Encode$JsonCombinators.tuple2(encode, (function (param) { - return Json_Encode$JsonCombinators.array(Item$AgdaModeVscode.encode, param); - }), [ - x._0, - x._1 - ]), - [Symbol.for("name")]: "Payload" - }; - case /* SetStatus */2 : - return { - TAG: 0, - _0: "SetStatus", - _1: x._0, - [Symbol.for("name")]: "Payload" - }; - case /* PromptIMUpdate */3 : - return { - TAG: 0, - _0: "PromptIMUpdate", - _1: x._0, - [Symbol.for("name")]: "Payload" - }; - case /* InputMethod */4 : - return { - TAG: 0, - _0: "InputMethod", - _1: encode$2(x._0), - [Symbol.for("name")]: "Payload" - }; - - } - }), param); -} +var encode$3 = Util$AgdaModeVscode.Encode.sum(function (x) { + if (typeof x !== "object") { + return { + TAG: "TagOnly", + _0: "PromptInterrupt", + [Symbol.for("name")]: "TagOnly" + }; + } + switch (x.TAG) { + case "Display" : + return { + TAG: "Payload", + _0: "Display", + _1: Json_Encode$JsonCombinators.tuple2(encode, Json_Encode$JsonCombinators.array(Item$AgdaModeVscode.encode))([ + x._0, + x._1 + ]), + [Symbol.for("name")]: "Payload" + }; + case "Append" : + return { + TAG: "Payload", + _0: "Append", + _1: Json_Encode$JsonCombinators.tuple2(encode, Json_Encode$JsonCombinators.array(Item$AgdaModeVscode.encode))([ + x._0, + x._1 + ]), + [Symbol.for("name")]: "Payload" + }; + case "SetStatus" : + return { + TAG: "Payload", + _0: "SetStatus", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; + case "PromptIMUpdate" : + return { + TAG: "Payload", + _0: "PromptIMUpdate", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; + case "InputMethod" : + return { + TAG: "Payload", + _0: "InputMethod", + _1: encode$2(x._0), + [Symbol.for("name")]: "Payload" + }; + + } + }); var EventToView = { InputMethod: InputMethod, @@ -441,6 +432,7 @@ function toString$2(x) { var decode$4 = Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.tuple2(decode, decode$1), (function (param) { return { + TAG: "Prompt", _0: param[0], _1: param[1], [Symbol.for("name")]: "Prompt" @@ -448,7 +440,7 @@ var decode$4 = Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.tuple })); function encode$4(request) { - return Json_Encode$JsonCombinators.tuple2(encode, encode$1, [ + return Json_Encode$JsonCombinators.tuple2(encode, encode$1)([ request._0, request._1 ]); @@ -461,7 +453,7 @@ var $$Request = { }; function toString$3(x) { - if (x.TAG === /* Request */0) { + if (x.TAG === "Request") { return toString$2(x._0); } else { return toString$1(x._0); @@ -472,10 +464,10 @@ var decode$5 = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "Event" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(decode$3, (function (payload) { return { - TAG: 1, + TAG: "Event", _0: payload, [Symbol.for("name")]: "Event" }; @@ -484,10 +476,10 @@ var decode$5 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "Request" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(decode$4, (function (payload) { return { - TAG: 0, + TAG: "Request", _0: payload, [Symbol.for("name")]: "Request" }; @@ -503,25 +495,23 @@ var decode$5 = Util$AgdaModeVscode.Decode.sum(function (x) { } }); -function encode$5(param) { - return Util$AgdaModeVscode.Encode.sum((function (x) { - if (x.TAG === /* Request */0) { - return { - TAG: 0, - _0: "Request", - _1: encode$4(x._0), - [Symbol.for("name")]: "Payload" - }; - } else { - return { - TAG: 0, - _0: "Event", - _1: encode$3(x._0), - [Symbol.for("name")]: "Payload" - }; - } - }), param); -} +var encode$5 = Util$AgdaModeVscode.Encode.sum(function (x) { + if (x.TAG === "Request") { + return { + TAG: "Payload", + _0: "Request", + _1: encode$4(x._0), + [Symbol.for("name")]: "Payload" + }; + } else { + return { + TAG: "Payload", + _0: "Event", + _1: encode$3(x._0), + [Symbol.for("name")]: "Payload" + }; + } + }); var RequestOrEventToView = { toString: toString$3, @@ -533,15 +523,16 @@ var decode$6 = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "PromptInterrupted" : return { - TAG: 1, - _0: /* PromptInterrupted */0, + TAG: "TagOnly", + _0: "PromptInterrupted", [Symbol.for("name")]: "TagOnly" }; case "PromptSuccess" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (result) { return { + TAG: "PromptSuccess", _0: result, [Symbol.for("name")]: "PromptSuccess" }; @@ -557,24 +548,22 @@ var decode$6 = Util$AgdaModeVscode.Decode.sum(function (x) { } }); -function encode$6(param) { - return Util$AgdaModeVscode.Encode.sum((function (x) { - if (x) { - return { - TAG: 0, - _0: "PromptSuccess", - _1: x._0, - [Symbol.for("name")]: "Payload" - }; - } else { - return { - TAG: 1, - _0: "PromptInterrupted", - [Symbol.for("name")]: "TagOnly" - }; - } - }), param); -} +var encode$6 = Util$AgdaModeVscode.Encode.sum(function (x) { + if (typeof x !== "object") { + return { + TAG: "TagOnly", + _0: "PromptInterrupted", + [Symbol.for("name")]: "TagOnly" + }; + } else { + return { + TAG: "Payload", + _0: "PromptSuccess", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; + } + }); var $$Response = { decode: decode$6, @@ -585,10 +574,10 @@ var decode$7 = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "ChooseSymbol" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function (symbol) { return { - TAG: 1, + TAG: "ChooseSymbol", _0: symbol, [Symbol.for("name")]: "ChooseSymbol" }; @@ -597,10 +586,10 @@ var decode$7 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "InsertChar" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function ($$char) { return { - TAG: 0, + TAG: "InsertChar", _0: $$char, [Symbol.for("name")]: "InsertChar" }; @@ -616,25 +605,23 @@ var decode$7 = Util$AgdaModeVscode.Decode.sum(function (x) { } }); -function encode$7(param) { - return Util$AgdaModeVscode.Encode.sum((function (x) { - if (x.TAG === /* InsertChar */0) { - return { - TAG: 0, - _0: "InsertChar", - _1: x._0, - [Symbol.for("name")]: "Payload" - }; - } else { - return { - TAG: 0, - _0: "ChooseSymbol", - _1: x._0, - [Symbol.for("name")]: "Payload" - }; - } - }), param); -} +var encode$7 = Util$AgdaModeVscode.Encode.sum(function (x) { + if (x.TAG === "InsertChar") { + return { + TAG: "Payload", + _0: "InsertChar", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; + } else { + return { + TAG: "Payload", + _0: "ChooseSymbol", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; + } + }); var InputMethod$1 = { decode: decode$7, @@ -645,40 +632,40 @@ var decode$8 = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "BrowseDown" : return { - TAG: 1, - _0: /* BrowseDown */1, + TAG: "TagOnly", + _0: "BrowseDown", [Symbol.for("name")]: "TagOnly" }; case "BrowseLeft" : return { - TAG: 1, - _0: /* BrowseLeft */2, + TAG: "TagOnly", + _0: "BrowseLeft", [Symbol.for("name")]: "TagOnly" }; case "BrowseRight" : return { - TAG: 1, - _0: /* BrowseRight */3, + TAG: "TagOnly", + _0: "BrowseRight", [Symbol.for("name")]: "TagOnly" }; case "BrowseUp" : return { - TAG: 1, - _0: /* BrowseUp */0, + TAG: "TagOnly", + _0: "BrowseUp", [Symbol.for("name")]: "TagOnly" }; case "Escape" : return { - TAG: 1, - _0: /* Escape */4, + TAG: "TagOnly", + _0: "Escape", [Symbol.for("name")]: "TagOnly" }; case "KeyUpdate" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.string, (function ($$char) { return { - TAG: 1, + TAG: "KeyUpdate", _0: $$char, [Symbol.for("name")]: "KeyUpdate" }; @@ -687,10 +674,10 @@ var decode$8 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "MouseSelect" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Common$AgdaModeVscode.Interval.decode, (function (interval) { return { - TAG: 0, + TAG: "MouseSelect", _0: interval, [Symbol.for("name")]: "MouseSelect" }; @@ -706,67 +693,65 @@ var decode$8 = Util$AgdaModeVscode.Decode.sum(function (x) { } }); -function encode$8(param) { - return Util$AgdaModeVscode.Encode.sum((function (x) { - if (typeof x !== "number") { - if (x.TAG === /* MouseSelect */0) { - return { - TAG: 0, - _0: "MouseSelect", - _1: Common$AgdaModeVscode.Interval.encode(x._0), - [Symbol.for("name")]: "Payload" - }; - } else { - return { - TAG: 0, - _0: "KeyUpdate", - _1: x._0, - [Symbol.for("name")]: "Payload" - }; - } - } - switch (x) { - case /* BrowseUp */0 : - return { - TAG: 1, - _0: "BrowseUp", - [Symbol.for("name")]: "TagOnly" - }; - case /* BrowseDown */1 : - return { - TAG: 1, - _0: "BrowseDown", - [Symbol.for("name")]: "TagOnly" - }; - case /* BrowseLeft */2 : - return { - TAG: 1, - _0: "BrowseLeft", - [Symbol.for("name")]: "TagOnly" - }; - case /* BrowseRight */3 : - return { - TAG: 1, - _0: "BrowseRight", - [Symbol.for("name")]: "TagOnly" - }; - case /* Escape */4 : - return { - TAG: 1, - _0: "Escape", - [Symbol.for("name")]: "TagOnly" - }; - - } - }), param); -} +var encode$8 = Util$AgdaModeVscode.Encode.sum(function (x) { + if (typeof x === "object") { + if (x.TAG === "MouseSelect") { + return { + TAG: "Payload", + _0: "MouseSelect", + _1: Common$AgdaModeVscode.Interval.encode(x._0), + [Symbol.for("name")]: "Payload" + }; + } else { + return { + TAG: "Payload", + _0: "KeyUpdate", + _1: x._0, + [Symbol.for("name")]: "Payload" + }; + } + } + switch (x) { + case "BrowseUp" : + return { + TAG: "TagOnly", + _0: "BrowseUp", + [Symbol.for("name")]: "TagOnly" + }; + case "BrowseDown" : + return { + TAG: "TagOnly", + _0: "BrowseDown", + [Symbol.for("name")]: "TagOnly" + }; + case "BrowseLeft" : + return { + TAG: "TagOnly", + _0: "BrowseLeft", + [Symbol.for("name")]: "TagOnly" + }; + case "BrowseRight" : + return { + TAG: "TagOnly", + _0: "BrowseRight", + [Symbol.for("name")]: "TagOnly" + }; + case "Escape" : + return { + TAG: "TagOnly", + _0: "Escape", + [Symbol.for("name")]: "TagOnly" + }; + + } + }); var PromptIMUpdate = { decode: decode$8, encode: encode$8 }; -var chan = Chan$AgdaModeVscode.make(undefined); +var chan = Chan$AgdaModeVscode.make(); var eventContext = React.createContext(chan); @@ -788,22 +773,22 @@ var decode$9 = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "Destroyed" : return { - TAG: 1, - _0: /* Destroyed */1, + TAG: "TagOnly", + _0: "Destroyed", [Symbol.for("name")]: "TagOnly" }; case "Initialized" : return { - TAG: 1, - _0: /* Initialized */0, + TAG: "TagOnly", + _0: "Initialized", [Symbol.for("name")]: "TagOnly" }; case "InputMethod" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(decode$7, (function (payload) { return { - TAG: 0, + TAG: "InputMethod", _0: payload, [Symbol.for("name")]: "InputMethod" }; @@ -812,10 +797,10 @@ var decode$9 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "JumpToTarget" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(Link$AgdaModeVscode.decode, (function (link) { return { - TAG: 2, + TAG: "JumpToTarget", _0: link, [Symbol.for("name")]: "JumpToTarget" }; @@ -824,10 +809,10 @@ var decode$9 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "PromptIMUpdate" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(decode$8, (function (payload) { return { - TAG: 1, + TAG: "PromptIMUpdate", _0: payload, [Symbol.for("name")]: "PromptIMUpdate" }; @@ -843,49 +828,47 @@ var decode$9 = Util$AgdaModeVscode.Decode.sum(function (x) { } }); -function encode$9(param) { - return Util$AgdaModeVscode.Encode.sum((function (x) { - if (typeof x === "number") { - if (x === /* Initialized */0) { - return { - TAG: 1, - _0: "Initialized", - [Symbol.for("name")]: "TagOnly" - }; - } else { - return { - TAG: 1, - _0: "Destroyed", - [Symbol.for("name")]: "TagOnly" - }; - } - } - switch (x.TAG | 0) { - case /* InputMethod */0 : - return { - TAG: 0, - _0: "InputMethod", - _1: encode$7(x._0), - [Symbol.for("name")]: "Payload" - }; - case /* PromptIMUpdate */1 : - return { - TAG: 0, - _0: "PromptIMUpdate", - _1: encode$8(x._0), - [Symbol.for("name")]: "Payload" - }; - case /* JumpToTarget */2 : - return { - TAG: 0, - _0: "JumpToTarget", - _1: Link$AgdaModeVscode.encode(x._0), - [Symbol.for("name")]: "Payload" - }; - - } - }), param); -} +var encode$9 = Util$AgdaModeVscode.Encode.sum(function (x) { + if (typeof x !== "object") { + if (x === "Initialized") { + return { + TAG: "TagOnly", + _0: "Initialized", + [Symbol.for("name")]: "TagOnly" + }; + } else { + return { + TAG: "TagOnly", + _0: "Destroyed", + [Symbol.for("name")]: "TagOnly" + }; + } + } + switch (x.TAG) { + case "InputMethod" : + return { + TAG: "Payload", + _0: "InputMethod", + _1: encode$7(x._0), + [Symbol.for("name")]: "Payload" + }; + case "PromptIMUpdate" : + return { + TAG: "Payload", + _0: "PromptIMUpdate", + _1: encode$8(x._0), + [Symbol.for("name")]: "Payload" + }; + case "JumpToTarget" : + return { + TAG: "Payload", + _0: "JumpToTarget", + _1: Link$AgdaModeVscode.encode(x._0), + [Symbol.for("name")]: "Payload" + }; + + } + }); var EventFromView = { InputMethod: InputMethod$1, @@ -901,10 +884,10 @@ var decode$10 = Util$AgdaModeVscode.Decode.sum(function (x) { switch (x) { case "Event" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(decode$9, (function (payload) { return { - TAG: 1, + TAG: "Event", _0: payload, [Symbol.for("name")]: "Event" }; @@ -913,10 +896,10 @@ var decode$10 = Util$AgdaModeVscode.Decode.sum(function (x) { }; case "Response" : return { - TAG: 0, + TAG: "Payload", _0: Json_Decode$JsonCombinators.map(decode$6, (function (payload) { return { - TAG: 0, + TAG: "Response", _0: payload, [Symbol.for("name")]: "Response" }; @@ -932,25 +915,23 @@ var decode$10 = Util$AgdaModeVscode.Decode.sum(function (x) { } }); -function encode$10(param) { - return Util$AgdaModeVscode.Encode.sum((function (x) { - if (x.TAG === /* Response */0) { - return { - TAG: 0, - _0: "Response", - _1: encode$6(x._0), - [Symbol.for("name")]: "Payload" - }; - } else { - return { - TAG: 0, - _0: "Event", - _1: encode$9(x._0), - [Symbol.for("name")]: "Payload" - }; - } - }), param); -} +var encode$10 = Util$AgdaModeVscode.Encode.sum(function (x) { + if (x.TAG === "Response") { + return { + TAG: "Payload", + _0: "Response", + _1: encode$6(x._0), + [Symbol.for("name")]: "Payload" + }; + } else { + return { + TAG: "Payload", + _0: "Event", + _1: encode$9(x._0), + [Symbol.for("name")]: "Payload" + }; + } + }); var ResponseOrEventFromView = { decode: decode$10, diff --git a/lib/js/src/View/WebviewPanel.bs.js b/lib/js/src/View/WebviewPanel.bs.js index f8e93e3f..2d907592 100644 --- a/lib/js/src/View/WebviewPanel.bs.js +++ b/lib/js/src/View/WebviewPanel.bs.js @@ -1,16 +1,15 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Path = require("path"); -var Curry = require("rescript/lib/js/curry.js"); var VSCode = require("rescript-vscode/lib/js/src/VSCode.bs.js"); var Vscode = require("vscode"); var Js_math = require("rescript/lib/js/js_math.js"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); var Js_array = require("rescript/lib/js/js_array.js"); var Js_string = require("rescript/lib/js/js_string.js"); +var Nodepath = require("node:path"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Chan$AgdaModeVscode = require("../Util/Chan.bs.js"); +var Util$AgdaModeVscode = require("../Util/Util.bs.js"); var View$AgdaModeVscode = require("./View.bs.js"); var Json$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json.bs.js"); var Config$AgdaModeVscode = require("../Config.bs.js"); @@ -36,7 +35,7 @@ function makeHTML(webview, extensionPath) { } function make(title, extensionPath) { - var distPath = Path.join(extensionPath, "dist"); + var distPath = Nodepath.join(extensionPath, "dist"); var panel = Vscode.window.createWebviewPanel("panel", title, { preserveFocus: true, viewColumn: 3 @@ -66,7 +65,7 @@ function reveal(panel) { VSCode.WebviewPanel.reveal(panel, undefined, true, undefined); } -function moveToBottom(param) { +function moveToBottom() { Vscode.commands.executeCommand((function () { switch (({ NAME: "setEditorLayout", @@ -100,63 +99,55 @@ var WebviewPanel = { moveToBottom: moveToBottom }; -function send$1(view, requestOrEvent) { +async function send$1(view, requestOrEvent) { var match = view.status; - if (match) { - if (requestOrEvent.TAG === /* Request */0) { - var match$1 = $$Promise.pending(undefined); - var resolve = match$1[1]; - Js_array.push([ - requestOrEvent._0, - (function (x) { - if (x.TAG === /* Response */0) { - return Curry._1(resolve, x._0); - } else { - return Curry._1(resolve, undefined); - } - }) - ], match._0); - return match$1[0]; + if (typeof match !== "object") { + var stringified = JSON.stringify(View$AgdaModeVscode.RequestOrEventToView.encode(requestOrEvent)); + if (requestOrEvent.TAG === "Request") { + var promise = Chan$AgdaModeVscode.once(view.onResponse); + await view.panel.webview.postMessage(stringified); + return await promise; } - Js_array.push(requestOrEvent._0, match._1); - return $$Promise.resolved(undefined); + await view.panel.webview.postMessage(stringified); + return ; } - var stringified = JSON.stringify(View$AgdaModeVscode.RequestOrEventToView.encode(requestOrEvent)); - if (requestOrEvent.TAG !== /* Request */0) { - return $$Promise.map(view.panel.webview.postMessage(stringified), (function (param) { - + var queuedRequests = match._0; + if (requestOrEvent.TAG === "Request") { + var req = requestOrEvent._0; + return await new Promise((function (resolve, param) { + Js_array.push([ + req, + (function (x) { + if (x.TAG === "Response") { + return resolve(x._0); + } else { + return resolve(undefined); + } + }) + ], queuedRequests); })); } - var promise = Chan$AgdaModeVscode.once(view.onResponse); - return $$Promise.map($$Promise.flatMap(view.panel.webview.postMessage(stringified), (function (param) { - return promise; - })), (function (res) { - return res; - })); + Js_array.push(requestOrEvent._0, match._1); } -function sendEvent(view, $$event) { - return $$Promise.map(send$1(view, { - TAG: 1, - _0: $$event, - [Symbol.for("name")]: "Event" - }), (function (param) { - - })); +async function sendEvent(view, $$event) { + await send$1(view, { + TAG: "Event", + _0: $$event, + [Symbol.for("name")]: "Event" + }); } -function sendRequest(view, request, callback) { - return $$Promise.flatMap(send$1(view, { - TAG: 0, - _0: request, - [Symbol.for("name")]: "Request" - }), (function (x) { - if (x !== undefined) { - return Curry._1(callback, x); - } else { - return $$Promise.resolved(undefined); - } - })); +async function sendRequest(view, request, callback) { + var response = await send$1(view, { + TAG: "Request", + _0: request, + [Symbol.for("name")]: "Request" + }); + if (response !== undefined) { + return await callback(response); + } + } function onEvent(view, callback) { @@ -166,26 +157,25 @@ function onEvent(view, callback) { function make$1(title, extensionPath) { var view = { panel: make(title, extensionPath), - onResponse: Chan$AgdaModeVscode.make(undefined), - onEvent: Chan$AgdaModeVscode.make(undefined), + onResponse: Chan$AgdaModeVscode.make(), + onEvent: Chan$AgdaModeVscode.make(), subscriptions: [], status: { + TAG: "Uninitialized", _0: [], _1: [], [Symbol.for("name")]: "Uninitialized" } }; - var match = Config$AgdaModeVscode.View.getPanelMountingPosition(undefined); - if (match) { - - } else { - moveToBottom(undefined); + var match = Config$AgdaModeVscode.View.getPanelMountingPosition(); + if (match === "Bottom") { + moveToBottom(); } Js_array.push(view.panel.webview.onDidReceiveMessage(function (json) { var e = Json$JsonCombinators.decode(json, View$AgdaModeVscode.ResponseOrEventFromView.decode); - if (e.TAG === /* Ok */0) { + if (e.TAG === "Ok") { var res = e._0; - if (res.TAG === /* Response */0) { + if (res.TAG === "Response") { return Chan$AgdaModeVscode.emit(view.onResponse, res._0); } else { return Chan$AgdaModeVscode.emit(view.onEvent, res._0); @@ -193,42 +183,45 @@ function make$1(title, extensionPath) { } console.log("[ panic ][ Webview.onDidReceiveMessage JSON decode error ]", e._0); }), view.subscriptions); - Js_array.push(view.panel.onDidDispose(function (param) { - Chan$AgdaModeVscode.emit(view.onEvent, /* Destroyed */1); + Js_array.push(view.panel.onDidDispose(function () { + Chan$AgdaModeVscode.emit(view.onEvent, "Destroyed"); }), view.subscriptions); Js_array.push(new Vscode.Disposable(Chan$AgdaModeVscode.on(view.onEvent, (function (x) { - if (x !== 0) { + if (typeof x === "object") { + return ; + } + if (x !== "Initialized") { return ; } var match = view.status; - if (match) { - view.status = /* Initialized */0; - Belt_Array.forEach(match._0, (function (param) { - var resolve = param[1]; - $$Promise.get(send$1(view, { - TAG: 0, - _0: param[0], - [Symbol.for("name")]: "Request" - }), (function (x) { - if (x !== undefined) { - return Curry._1(resolve, { - TAG: 0, - _0: x, - [Symbol.for("name")]: "Response" - }); - } - - })); - })); - return Belt_Array.forEach(match._1, (function ($$event) { - send$1(view, { - TAG: 1, - _0: $$event, - [Symbol.for("name")]: "Event" - }); - })); + if (typeof match !== "object") { + return ; } - + view.status = "Initialized"; + Belt_Array.forEach(match._0, (function (param) { + var resolve = param[1]; + send$1(view, { + TAG: "Request", + _0: param[0], + [Symbol.for("name")]: "Request" + }).then(function (x) { + if (x !== undefined) { + return resolve({ + TAG: "Response", + _0: x, + [Symbol.for("name")]: "Response" + }); + } + + }); + })); + Belt_Array.forEach(match._1, (function ($$event) { + send$1(view, { + TAG: "Event", + _0: $$event, + [Symbol.for("name")]: "Event" + }); + })); }))), view.subscriptions); return view; } @@ -243,15 +236,15 @@ function destroy$1(view) { } function onceDestroyed(view) { - var match = $$Promise.pending(undefined); + var match = Util$AgdaModeVscode.Promise_.pending(); var resolve = match[1]; var disposable = Chan$AgdaModeVscode.on(view.onEvent, (function (response) { - if (typeof response === "number" && response !== 0) { - return Curry._1(resolve, undefined); + if (typeof response !== "object" && response === "Destroyed") { + return resolve(); } })); - return $$Promise.tap(match[0], disposable); + return match[0].then(disposable); } function reveal$1(view) { @@ -277,4 +270,4 @@ exports.sendRequest = sendRequest; exports.onEvent = onEvent; exports.onceDestroyed = onceDestroyed; exports.reveal = reveal$1; -/* path Not a pure module */ +/* VSCode Not a pure module */ diff --git a/lib/js/test/RunTestFromCLI.bs.js b/lib/js/test/RunTestFromCLI.bs.js index 8bae02b6..4edd4e34 100644 --- a/lib/js/test/RunTestFromCLI.bs.js +++ b/lib/js/test/RunTestFromCLI.bs.js @@ -1,35 +1,35 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Path = require("path"); var Process = require("process"); -var Js_promise = require("rescript/lib/js/js_promise.js"); -var Caml_option = require("rescript/lib/js/caml_option.js"); +var Nodepath = require("node:path"); +var Caml_js_exceptions = require("rescript/lib/js/caml_js_exceptions.js"); var TestElectron = require("@vscode/test-electron"); -var dirname = typeof __dirname === "undefined" ? undefined : __dirname; - var testSuiteAdapterFileName = "TestSuiteAdapter.bs.js"; -var extensionDevelopmentPath = dirname !== undefined ? Path.resolve(dirname, "../") : Path.resolve(Process.cwd(), "../"); +var extensionDevelopmentPath = Nodepath.resolve(__dirname, "../"); -var extensionTestsPath = dirname !== undefined ? Path.resolve(dirname, testSuiteAdapterFileName) : Path.resolve(Process.cwd(), testSuiteAdapterFileName); +var extensionTestsPath = Nodepath.resolve(__dirname, testSuiteAdapterFileName); console.log("Running from the CLI, with\n extensionDevelopmentPath: " + (extensionDevelopmentPath + ("\n extensionTestsPath: " + extensionTestsPath))); -Js_promise.$$catch((function (error) { - console.log(error); - console.log("Failed to run tests"); - return Process.exit(1); - }), TestElectron.runTests({ +try { + TestElectron.runTests({ extensionDevelopmentPath: extensionDevelopmentPath, extensionTestsPath: extensionTestsPath - })); - -var dirname$1 = dirname === undefined ? undefined : Caml_option.some(dirname); + }).finally(function () { + Process.exit(0); + }); +} +catch (raw_error){ + var error = Caml_js_exceptions.internalToOCamlException(raw_error); + console.log(error); + console.log("Failed to run tests"); + Process.exit(1); +} -exports.dirname = dirname$1; exports.testSuiteAdapterFileName = testSuiteAdapterFileName; exports.extensionDevelopmentPath = extensionDevelopmentPath; exports.extensionTestsPath = extensionTestsPath; -/* dirname Not a pure module */ +/* extensionDevelopmentPath Not a pure module */ diff --git a/lib/js/test/TestSuiteAdapter.bs.js b/lib/js/test/TestSuiteAdapter.bs.js index 6977133d..b319f79e 100644 --- a/lib/js/test/TestSuiteAdapter.bs.js +++ b/lib/js/test/TestSuiteAdapter.bs.js @@ -2,32 +2,23 @@ 'use strict'; var Glob = require("glob"); -var Path = require("path"); var Mocha = require("mocha"); -var Belt_Array = require("rescript/lib/js/belt_Array.js"); -var Belt_Option = require("rescript/lib/js/belt_Option.js"); -var Caml_option = require("rescript/lib/js/caml_option.js"); +var Nodepath = require("node:path"); var Caml_exceptions = require("rescript/lib/js/caml_exceptions.js"); var Caml_js_exceptions = require("rescript/lib/js/caml_js_exceptions.js"); -var dirname = typeof __dirname === "undefined" ? undefined : __dirname; - -var dirname$1 = dirname === undefined ? undefined : Caml_option.some(dirname); - var Mocha$1 = {}; var Glob$1 = {}; var TestFailure = /* @__PURE__ */Caml_exceptions.create("TestSuiteAdapter-AgdaModeVscode.TestFailure"); -function run(param) { +function run() { var mocha = new Mocha({ ui: "bdd", color: true }); - var testsRoot = Belt_Option.mapWithDefault(dirname$1, "./", (function (dirname) { - return Path.resolve(dirname, "tests"); - })); + var testsRoot = Nodepath.resolve(__dirname, "tests"); return new Promise((function (resolve, reject) { Glob("**/*.js", { cwd: testsRoot @@ -35,9 +26,9 @@ function run(param) { if (!(err == null)) { return reject(err); } - Belt_Array.forEach(files, (function (file) { - mocha.addFile(Path.resolve(testsRoot, file)); - })); + files.forEach(function (file) { + mocha.addFile(Nodepath.resolve(testsRoot, file)); + }); try { mocha.run(function (failures) { if (failures > 0) { @@ -60,9 +51,8 @@ function run(param) { })); } -exports.dirname = dirname$1; exports.Mocha = Mocha$1; exports.Glob = Glob$1; exports.TestFailure = TestFailure; exports.run = run; -/* dirname Not a pure module */ +/* glob Not a pure module */ diff --git a/lib/js/test/tests/Parser/Test__Parser.bs.js b/lib/js/test/tests/Parser/Test__Parser.bs.js index b4026d5f..dad983f0 100644 --- a/lib/js/test/tests/Parser/Test__Parser.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser.bs.js @@ -1,30 +1,27 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Mocha$BsMocha = require("bs-mocha/lib/js/src/Mocha.bs.js"); -var Assert$BsMocha = require("bs-mocha/lib/js/src/Assert.bs.js"); +var Curry = require("rescript/lib/js/curry.js"); +var Assert = require("assert"); var Parser$AgdaModeVscode = require("../../../src/Parser/Parser.bs.js"); -Mocha$BsMocha.describe("when running Parser.userInputToSExpr")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.it("should make escaped backslash explicit")(undefined, undefined, undefined, (function (param) { +describe("when running Parser.userInputToSExpr", (function () { + it("should make escaped backslash explicit", (function () { var actual = Parser$AgdaModeVscode.userInputToSExpr("\\ x -> x"); - Assert$BsMocha.deep_equal(undefined, actual, "\\\\ x -> x"); + Curry._3(Assert.deepEqual, actual, "\\\\ x -> x", undefined); })); - Mocha$BsMocha.it("should make escaped newline on Unix explicit")(undefined, undefined, undefined, (function (param) { + it("should make escaped newline on Unix explicit", (function () { var actual = Parser$AgdaModeVscode.userInputToSExpr("x\ny"); - Assert$BsMocha.deep_equal(undefined, actual, "x\\ny"); + Curry._3(Assert.deepEqual, actual, "x\\ny", undefined); })); - Mocha$BsMocha.it("should make escaped newline on Windows explicit")(undefined, undefined, undefined, (function (param) { + it("should make escaped newline on Windows explicit", (function () { var actual = Parser$AgdaModeVscode.userInputToSExpr("x\r\ny"); - Assert$BsMocha.deep_equal(undefined, actual, "x\\r\\ny"); + Curry._3(Assert.deepEqual, actual, "x\\r\\ny", undefined); })); - Mocha$BsMocha.it("should make escaped double quote explicit")(undefined, undefined, undefined, (function (param) { + it("should make escaped double quote explicit", (function () { var actual = Parser$AgdaModeVscode.userInputToSExpr("\"x\""); - Assert$BsMocha.deep_equal(undefined, actual, "\\\"x\\\""); + Curry._3(Assert.deepEqual, actual, "\\\"x\\\"", undefined); })); })); -var Assert; - -exports.Assert = Assert; /* Not a pure module */ diff --git a/lib/js/test/tests/Parser/Test__Parser__Agda.bs.js b/lib/js/test/tests/Parser/Test__Parser__Agda.bs.js index d71cdd84..9f715dc7 100644 --- a/lib/js/test/tests/Parser/Test__Parser__Agda.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__Agda.bs.js @@ -2,82 +2,78 @@ 'use strict'; var Curry = require("rescript/lib/js/curry.js"); -var Mocha$BsMocha = require("bs-mocha/lib/js/src/Mocha.bs.js"); -var Assert$BsMocha = require("bs-mocha/lib/js/src/Assert.bs.js"); +var Assert = require("assert"); var Agda$AgdaModeVscode = require("../../../src/Agda.bs.js"); var RichText$AgdaModeVscode = require("../../../src/View/Component/RichText.bs.js"); -Mocha$BsMocha.describe("when running Agda.Expr.parse")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.it("should parse a plain string")(undefined, undefined, undefined, (function (param) { +describe("when running Agda.Expr.parse", (function () { + it("should parse a plain string", (function () { var expected = [{ - TAG: 0, + TAG: "Plain", _0: "ℕ", [Symbol.for("name")]: "Plain" }]; var actual = Agda$AgdaModeVscode.Expr.parse("ℕ"); - Assert$BsMocha.deep_equal(undefined, actual, expected); + Curry._3(Assert.deepEqual, actual, expected, undefined); })); - Mocha$BsMocha.it("should parse a question mark")(undefined, undefined, undefined, (function (param) { + it("should parse a question mark", (function () { var expected = [{ - TAG: 1, + TAG: "QuestionMark", _0: 3, [Symbol.for("name")]: "QuestionMark" }]; var actual = Agda$AgdaModeVscode.Expr.parse("?3"); - Assert$BsMocha.deep_equal(undefined, actual, expected); + Curry._3(Assert.deepEqual, actual, expected, undefined); })); - Mocha$BsMocha.it("should parse a underscore")(undefined, undefined, undefined, (function (param) { + it("should parse a underscore", (function () { var expected = [{ - TAG: 2, + TAG: "Underscore", _0: "_4hi", [Symbol.for("name")]: "Underscore" }]; var actual = Agda$AgdaModeVscode.Expr.parse(" _4hi "); - Assert$BsMocha.deep_equal(undefined, actual, expected); + Curry._3(Assert.deepEqual, actual, expected, undefined); })); })); -Mocha$BsMocha.describe("when running Agda.OutputConstraint.parse")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.it("should parse OfType")(undefined, undefined, undefined, (function (param) { +describe("when running Agda.OutputConstraint.parse", (function () { + it("should parse OfType", (function () { var expected = { - TAG: 0, + TAG: "OfType", _0: RichText$AgdaModeVscode.string("x"), _1: RichText$AgdaModeVscode.string("ℕ"), [Symbol.for("name")]: "OfType" }; - var actual = Curry._1(Agda$AgdaModeVscode.OutputConstraint.parse, "x : ℕ"); - Assert$BsMocha.deep_equal(undefined, actual, expected); + var actual = Agda$AgdaModeVscode.OutputConstraint.parse("x : ℕ"); + Curry._3(Assert.deepEqual, actual, expected, undefined); })); - Mocha$BsMocha.it("should parse JustType")(undefined, undefined, undefined, (function (param) { + it("should parse JustType", (function () { var expected = { - TAG: 1, + TAG: "JustType", _0: RichText$AgdaModeVscode.string("ℕ"), [Symbol.for("name")]: "JustType" }; - var actual = Curry._1(Agda$AgdaModeVscode.OutputConstraint.parse, "Type ℕ"); - Assert$BsMocha.deep_equal(undefined, actual, expected); + var actual = Agda$AgdaModeVscode.OutputConstraint.parse("Type ℕ"); + Curry._3(Assert.deepEqual, actual, expected, undefined); })); - Mocha$BsMocha.it("should parse JustSort on Windows")(undefined, undefined, undefined, (function (param) { + it("should parse JustSort on Windows", (function () { var expected = { - TAG: 2, + TAG: "JustSort", _0: RichText$AgdaModeVscode.string("ℕ\r\n ℕ"), [Symbol.for("name")]: "JustSort" }; - var actual = Curry._1(Agda$AgdaModeVscode.OutputConstraint.parse, "Sort ℕ\r\n ℕ"); - Assert$BsMocha.deep_equal(undefined, actual, expected); + var actual = Agda$AgdaModeVscode.OutputConstraint.parse("Sort ℕ\r\n ℕ"); + Curry._3(Assert.deepEqual, actual, expected, undefined); })); - Mocha$BsMocha.it("should parse JustSort on Unix")(undefined, undefined, undefined, (function (param) { + it("should parse JustSort on Unix", (function () { var expected = { - TAG: 2, + TAG: "JustSort", _0: RichText$AgdaModeVscode.string("ℕ\n ℕ"), [Symbol.for("name")]: "JustSort" }; - var actual = Curry._1(Agda$AgdaModeVscode.OutputConstraint.parse, "Sort ℕ\n ℕ"); - Assert$BsMocha.deep_equal(undefined, actual, expected); + var actual = Agda$AgdaModeVscode.OutputConstraint.parse("Sort ℕ\n ℕ"); + Curry._3(Assert.deepEqual, actual, expected, undefined); })); })); -var Assert; - -exports.Assert = Assert; /* Not a pure module */ diff --git a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js index 13999c9e..c17c5c7c 100644 --- a/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__Emacs2.bs.js @@ -1,31 +1,30 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; +var Curry = require("rescript/lib/js/curry.js"); +var Assert = require("assert"); var Js_dict = require("rescript/lib/js/js_dict.js"); -var Belt_Array = require("rescript/lib/js/belt_Array.js"); -var Mocha$BsMocha = require("bs-mocha/lib/js/src/Mocha.bs.js"); -var Assert$BsMocha = require("bs-mocha/lib/js/src/Assert.bs.js"); var Util$AgdaModeVscode = require("../../../src/Util/Util.bs.js"); var Emacs__Parser2$AgdaModeVscode = require("../../../src/View/Panel/Emacs/Emacs__Parser2.bs.js"); function tempNormalize(xs) { return Js_dict.map((function (value) { - return Belt_Array.map(value, (function (x) { - return Util$AgdaModeVscode.$$String.unlines(Util$AgdaModeVscode.$$String.lines(x)); - })); + return value.map(function (x) { + return Util$AgdaModeVscode.$$String.unlines(Util$AgdaModeVscode.$$String.lines(x)); + }); }), xs); } -Mocha$BsMocha.describe("when running Emacs__Parser2.parseGoalType")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.it("should parse goal only")(undefined, undefined, undefined, (function (param) { +describe("when running Emacs__Parser2.parseGoalType", (function () { + it("should parse goal only", (function () { var actual = Emacs__Parser2$AgdaModeVscode.parseGoalType("Goal: ℕ\n————————————————————————————————————————————————————————————"); var expected = Js_dict.fromArray([[ "goal", ["Goal: ℕ"] ]]); - Assert$BsMocha.deep_equal(undefined, actual, expected); + Curry._3(Assert.deepEqual, actual, expected, undefined); })); - Mocha$BsMocha.it("should parse goal + have")(undefined, undefined, undefined, (function (param) { + it("should parse goal + have", (function () { var actual = Emacs__Parser2$AgdaModeVscode.parseGoalType("Goal: ℕ\nHave: ℕ\n————————————————————————————————————————————————————————————"); var expected = Js_dict.fromArray([ [ @@ -37,9 +36,9 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseGoalType")(undefined, u ["Have: ℕ"] ] ]); - Assert$BsMocha.deep_equal(undefined, actual, expected); + Curry._3(Assert.deepEqual, actual, expected, undefined); })); - Mocha$BsMocha.it("should parse goal + have + context")(undefined, undefined, undefined, (function (param) { + it("should parse goal + have + context", (function () { var actual = Emacs__Parser2$AgdaModeVscode.parseGoalType("Goal: ℕ\nHave: ℕ\n————————————————————————————————————————————————————————————\ny : ℕ\nx : ℕ"); var expected = Js_dict.fromArray([ [ @@ -58,12 +57,12 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseGoalType")(undefined, u ] ] ]); - Assert$BsMocha.deep_equal(undefined, actual, expected); + Curry._3(Assert.deepEqual, actual, expected, undefined); })); })); -Mocha$BsMocha.describe("when running Emacs__Parser2.parseAllGoalsWarnings")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.it("should parse goals only")(undefined, undefined, undefined, (function (param) { +describe("when running Emacs__Parser2.parseAllGoalsWarnings", (function () { + it("should parse goals only", (function () { var actual = Emacs__Parser2$AgdaModeVscode.parseAllGoalsWarnings("*All Goals*", "\n?0 : ℕ\n?1 : ℕ\nSort _0 [ at /Users/banacorn/agda/examples/A.agda:11,5-20 ]\n"); var expected = Js_dict.fromArray([ [ @@ -78,9 +77,9 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseAllGoalsWarnings")(unde ["Sort _0 [ at /Users/banacorn/agda/examples/A.agda:11,5-20 ]"] ] ]); - Assert$BsMocha.deep_equal(undefined, actual, expected); + Curry._3(Assert.deepEqual, actual, expected, undefined); })); - Mocha$BsMocha.it("should parse goals + errors")(undefined, undefined, undefined, (function (param) { + it("should parse goals + errors", (function () { var actual = Emacs__Parser2$AgdaModeVscode.parseAllGoalsWarnings("*All Goals, Errors*", "?0 : _2\n\n———— Errors ————————————————————————————————————————————————\nUnsolved constraints"); var expected = Js_dict.fromArray([ [ @@ -92,28 +91,28 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseAllGoalsWarnings")(unde ["Unsolved constraints"] ] ]); - Assert$BsMocha.deep_equal(undefined, actual, expected); + Curry._3(Assert.deepEqual, actual, expected, undefined); })); - Mocha$BsMocha.it("should parse goals that span multiple lines")(undefined, undefined, undefined, (function (param) { + it("should parse goals that span multiple lines", (function () { var actual = Emacs__Parser2$AgdaModeVscode.parseAllGoalsWarnings("*All Goals, Errors*", "?0\n : BoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBool"); var expected = tempNormalize(Js_dict.fromArray([[ "interactionMetas", ["?0\n : BoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBoolBool"] ]])); - Assert$BsMocha.deep_equal(undefined, actual, expected); + Curry._3(Assert.deepEqual, actual, expected, undefined); })); })); -Mocha$BsMocha.describe("when running Emacs__Parser2.parseError")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.it("should parse an error only")(undefined, undefined, undefined, (function (param) { +describe("when running Emacs__Parser2.parseError", (function () { + it("should parse an error only", (function () { var actual = Emacs__Parser2$AgdaModeVscode.parseError("/Users/banacorn/agda/examples/A.agda:15,1-2\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8"); var expected = tempNormalize(Js_dict.fromArray([[ "errors", ["/Users/banacorn/agda/examples/A.agda:15,1-2\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8"] ]])); - Assert$BsMocha.deep_equal(undefined, actual, expected); + Curry._3(Assert.deepEqual, actual, expected, undefined); })); - Mocha$BsMocha.it("should parse an error + warnings")(undefined, undefined, undefined, (function (param) { + it("should parse an error + warnings", (function () { var actual = Emacs__Parser2$AgdaModeVscode.parseError("———— Error —————————————————————————————————————————————————\n/Users/banacorn/agda/examples/A.agda:15,1-2\nThe right-hand side can only be omitted if there is an absurd\npattern, () or {}, in the left-hand side.\nwhen checking that the clause a has type _8\n\n———— Warning(s) ————————————————————————————————————————————\n/Users/banacorn/agda/examples/A.agda:17,1-8\nThe following names are declared but not accompanied by a\ndefinition: boo\n/Users/banacorn/agda/examples/A.agda:9,1-10\nUnreachable clause\nwhen checking the definition of _+_"); var expected = tempNormalize(Js_dict.fromArray([ [ @@ -128,12 +127,9 @@ Mocha$BsMocha.describe("when running Emacs__Parser2.parseError")(undefined, unde ] ] ])); - Assert$BsMocha.deep_equal(undefined, actual, expected); + Curry._3(Assert.deepEqual, actual, expected, undefined); })); })); -var Assert; - -exports.Assert = Assert; exports.tempNormalize = tempNormalize; /* Not a pure module */ diff --git a/lib/js/test/tests/Parser/Test__Parser__Response.bs.js b/lib/js/test/tests/Parser/Test__Parser__Response.bs.js index 64393878..cb2de0bf 100644 --- a/lib/js/test/tests/Parser/Test__Parser__Response.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__Response.bs.js @@ -1,39 +1,33 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Belt_Array = require("rescript/lib/js/belt_Array.js"); -var Js_promise = require("rescript/lib/js/js_promise.js"); -var Mocha$BsMocha = require("bs-mocha/lib/js/src/Mocha.bs.js"); -var Assert$BsMocha = require("bs-mocha/lib/js/src/Assert.bs.js"); -var Promise$BsMocha = require("bs-mocha/lib/js/src/Promise.bs.js"); +var Assert = require("assert"); var Parser$AgdaModeVscode = require("../../../src/Parser/Parser.bs.js"); var Response$AgdaModeVscode = require("../../../src/Response.bs.js"); var Test__Util$AgdaModeVscode = require("../Test__Util.bs.js"); var Test__Parser__SExpression$AgdaModeVscode = require("./Test__Parser__SExpression.bs.js"); function toPrioritizedResponses(exprs) { - return Belt_Array.concatMany(Belt_Array.map(Belt_Array.map(exprs, Response$AgdaModeVscode.Prioritized.parse), (function (x) { - if (x.TAG === /* Ok */0) { - return [x._0]; - } - Assert$BsMocha.fail(Parser$AgdaModeVscode.$$Error.toString(x._0)); - return []; - }))); + return exprs.map(Response$AgdaModeVscode.Prioritized.parse).map(function (x) { + if (x.TAG === "Ok") { + return [x._0]; + } + Assert.fail(Parser$AgdaModeVscode.$$Error.toString(x._0)); + return []; + }).flat(); } -Mocha$BsMocha.describe("when parsing responses")(undefined, undefined, undefined, (function (param) { - Belt_Array.forEach(Test__Util$AgdaModeVscode.Golden.getGoldenFilepathsSync("../../../../test/tests/Parser/Response"), (function (filepath) { - Promise$BsMocha.it("should golden test " + filepath)(undefined, undefined, undefined, (function (param) { - return Js_promise.then_((function (raw) { - var partial_arg = []; - return Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (param) { - return Test__Parser__SExpression$AgdaModeVscode.parseSExpression(partial_arg, param); - })), toPrioritizedResponses), (function (param) { - return Test__Util$AgdaModeVscode.Strings.unlinesWith(Response$AgdaModeVscode.Prioritized.toString, param); - }))); - }), Test__Util$AgdaModeVscode.Golden.readFile(filepath)); - })); - })); +describe("when parsing responses", (function () { + Test__Util$AgdaModeVscode.Golden.getGoldenFilepathsSync("../../../../test/tests/Parser/Response").forEach(function (filepath) { + it("should golden test " + filepath, (async function () { + var raw = await Test__Util$AgdaModeVscode.Golden.readFile(filepath); + return await Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (extra) { + return Test__Parser__SExpression$AgdaModeVscode.parseSExpression([], extra); + })), toPrioritizedResponses), (function (extra) { + return Test__Util$AgdaModeVscode.Strings.unlinesWith(Response$AgdaModeVscode.Prioritized.toString, extra); + }))); + })); + }); })); exports.toPrioritizedResponses = toPrioritizedResponses; diff --git a/lib/js/test/tests/Parser/Test__Parser__SExpression.bs.js b/lib/js/test/tests/Parser/Test__Parser__SExpression.bs.js index ed33280d..a12e1bd1 100644 --- a/lib/js/test/tests/Parser/Test__Parser__SExpression.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__SExpression.bs.js @@ -1,12 +1,8 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; +var Assert = require("assert"); var Js_array = require("rescript/lib/js/js_array.js"); -var Belt_Array = require("rescript/lib/js/belt_Array.js"); -var Js_promise = require("rescript/lib/js/js_promise.js"); -var Mocha$BsMocha = require("bs-mocha/lib/js/src/Mocha.bs.js"); -var Assert$BsMocha = require("bs-mocha/lib/js/src/Assert.bs.js"); -var Promise$BsMocha = require("bs-mocha/lib/js/src/Promise.bs.js"); var Parser$AgdaModeVscode = require("../../../src/Parser/Parser.bs.js"); var Test__Util$AgdaModeVscode = require("../Test__Util.bs.js"); @@ -15,64 +11,60 @@ function parseSExpression(breakpoints, input) { contents: [] }; var parser = Parser$AgdaModeVscode.SExpression.makeIncr(function (x) { - if (!x) { + if (typeof x !== "object") { return ; } var a = x._0; - if (a.TAG === /* Ok */0) { + if (a.TAG === "Ok") { Js_array.push(a._0, output.contents); return ; } var match = a._0; - Assert$BsMocha.fail("Failed when parsing S-expression: " + Parser$AgdaModeVscode.$$Error.toString({ - TAG: 0, + Assert.fail("Failed when parsing S-expression: " + Parser$AgdaModeVscode.$$Error.toString({ + TAG: "SExpression", _0: match[0], _1: match[1], [Symbol.for("name")]: "SExpression" })); }); - Belt_Array.forEach(Belt_Array.concatMany(Belt_Array.map(Test__Util$AgdaModeVscode.Strings.breakInput(input.trim(), breakpoints), Parser$AgdaModeVscode.splitToLines)), (function (param) { - return Parser$AgdaModeVscode.Incr.feed(parser, param); - })); + Test__Util$AgdaModeVscode.Strings.breakInput(input.trim(), breakpoints).map(Parser$AgdaModeVscode.splitToLines).flat().forEach(function (extra) { + return Parser$AgdaModeVscode.Incr.feed(parser, extra); + }); return output.contents; } -Mocha$BsMocha.describe("when parsing S-expressions as a whole")(undefined, undefined, undefined, (function (param) { - Belt_Array.forEach(Test__Util$AgdaModeVscode.Golden.getGoldenFilepathsSync("../../../../test/tests/Parser/SExpression"), (function (filepath) { - Promise$BsMocha.it("should golden test " + filepath)(undefined, undefined, undefined, (function (param) { - return Js_promise.then_((function (raw) { - var partial_arg = []; - return Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (param) { - return parseSExpression(partial_arg, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.Strings.unlinesWith(Parser$AgdaModeVscode.SExpression.toString, param); - }))); - }), Test__Util$AgdaModeVscode.Golden.readFile(filepath)); - })); - })); +describe("when parsing S-expressions as a whole", (function () { + Test__Util$AgdaModeVscode.Golden.getGoldenFilepathsSync("../../../../test/tests/Parser/SExpression").forEach(function (filepath) { + it("should golden test " + filepath, (async function () { + var raw = await Test__Util$AgdaModeVscode.Golden.readFile(filepath); + return await Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (extra) { + return parseSExpression([], extra); + })), (function (extra) { + return Test__Util$AgdaModeVscode.Strings.unlinesWith(Parser$AgdaModeVscode.SExpression.toString, extra); + }))); + })); + }); })); -Mocha$BsMocha.describe("when parsing S-expressions incrementally")(undefined, undefined, undefined, (function (param) { - Belt_Array.forEach(Test__Util$AgdaModeVscode.Golden.getGoldenFilepathsSync("../../../../test/tests/Parser/SExpression"), (function (filepath) { - Promise$BsMocha.it("should golden test " + filepath)(undefined, undefined, undefined, (function (param) { - return Js_promise.then_((function (raw) { - var partial_arg = [ - 3, - 23, - 171, - 217, - 1234, - 2342, - 3453 - ]; - return Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (param) { - return parseSExpression(partial_arg, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.Strings.unlinesWith(Parser$AgdaModeVscode.SExpression.toString, param); - }))); - }), Test__Util$AgdaModeVscode.Golden.readFile(filepath)); - })); - })); +describe("when parsing S-expressions incrementally", (function () { + Test__Util$AgdaModeVscode.Golden.getGoldenFilepathsSync("../../../../test/tests/Parser/SExpression").forEach(function (filepath) { + it("should golden test " + filepath, (async function () { + var raw = await Test__Util$AgdaModeVscode.Golden.readFile(filepath); + return await Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (extra) { + return parseSExpression([ + 3, + 23, + 171, + 217, + 1234, + 2342, + 3453 + ], extra); + })), (function (extra) { + return Test__Util$AgdaModeVscode.Strings.unlinesWith(Parser$AgdaModeVscode.SExpression.toString, extra); + }))); + })); + }); })); exports.parseSExpression = parseSExpression; diff --git a/lib/js/test/tests/Parser/Test__Parser__SourceFile.bs.js b/lib/js/test/tests/Parser/Test__Parser__SourceFile.bs.js index b8be6670..e738239f 100644 --- a/lib/js/test/tests/Parser/Test__Parser__SourceFile.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__SourceFile.bs.js @@ -1,72 +1,67 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; +var Curry = require("rescript/lib/js/curry.js"); +var Assert = require("assert"); var Js_string = require("rescript/lib/js/js_string.js"); -var Belt_Array = require("rescript/lib/js/belt_Array.js"); -var Js_promise = require("rescript/lib/js/js_promise.js"); -var Mocha$BsMocha = require("bs-mocha/lib/js/src/Mocha.bs.js"); -var Assert$BsMocha = require("bs-mocha/lib/js/src/Assert.bs.js"); -var Promise$BsMocha = require("bs-mocha/lib/js/src/Promise.bs.js"); var SourceFile$AgdaModeVscode = require("../../../src/Parser/SourceFile.bs.js"); var Test__Util$AgdaModeVscode = require("../Test__Util.bs.js"); -Mocha$BsMocha.describe("when parsing file paths")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.it("should recognize the file extensions")(undefined, undefined, undefined, (function (param) { - Assert$BsMocha.equal(undefined, SourceFile$AgdaModeVscode.FileType.parse("a.agda"), /* Agda */0); - Assert$BsMocha.equal(undefined, SourceFile$AgdaModeVscode.FileType.parse("a.lagda"), /* LiterateTeX */1); - Assert$BsMocha.equal(undefined, SourceFile$AgdaModeVscode.FileType.parse("a.lagda.tex"), /* LiterateTeX */1); - Assert$BsMocha.equal(undefined, SourceFile$AgdaModeVscode.FileType.parse("a.lagda.md"), /* LiterateMarkdown */3); - Assert$BsMocha.equal(undefined, SourceFile$AgdaModeVscode.FileType.parse("a.lagda.rst"), /* LiterateRST */2); - Assert$BsMocha.equal(undefined, SourceFile$AgdaModeVscode.FileType.parse("a.lagda.org"), /* LiterateOrg */4); +describe("when parsing file paths", (function () { + it("should recognize the file extensions", (function () { + Curry._3(Assert.equal, SourceFile$AgdaModeVscode.FileType.parse("a.agda"), "Agda", undefined); + Curry._3(Assert.equal, SourceFile$AgdaModeVscode.FileType.parse("a.lagda"), "LiterateTeX", undefined); + Curry._3(Assert.equal, SourceFile$AgdaModeVscode.FileType.parse("a.lagda.tex"), "LiterateTeX", undefined); + Curry._3(Assert.equal, SourceFile$AgdaModeVscode.FileType.parse("a.lagda.md"), "LiterateMarkdown", undefined); + Curry._3(Assert.equal, SourceFile$AgdaModeVscode.FileType.parse("a.lagda.rst"), "LiterateRST", undefined); + Curry._3(Assert.equal, SourceFile$AgdaModeVscode.FileType.parse("a.lagda.org"), "LiterateOrg", undefined); })); })); if (Test__Util$AgdaModeVscode.onUnix) { - Mocha$BsMocha.describe("when parsing source files (Unix only)")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.describe("Regex.comment")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { - Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "no comment"), -1); - Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "no comment\n"), -1); - Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "-- comment"), 0); - Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "-- comment with newline\n"), 0); + describe("when parsing source files (Unix only)", (function () { + describe("Regex.comment", (function () { + it("should work", (function () { + Curry._3(Assert.equal, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "no comment"), -1, undefined); + Curry._3(Assert.equal, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "no comment\n"), -1, undefined); + Curry._3(Assert.equal, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "-- comment"), 0, undefined); + Curry._3(Assert.equal, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "-- comment with newline\n"), 0, undefined); })); - Mocha$BsMocha.it("should work when \"--\" is placed immediately after some text (issue #56)")(undefined, undefined, undefined, (function (param) { - Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "a -- comment after some text"), 2); - Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "a-- comment placed immediately after some text"), -1); - Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "_-- comment placed immediately after name parts"), 1); - Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, ";-- comment placed immediately after name parts"), 1); - Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, ".-- comment placed immediately after name parts"), 1); - Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "\"-- comment placed immediately after name parts"), 1); - Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "(-- comment placed immediately after name parts"), 1); - Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, ")-- comment placed immediately after name parts"), 1); - Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "{-- comment placed immediately after name parts"), 1); - Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "}-- comment placed immediately after name parts"), 1); - Assert$BsMocha.equal(undefined, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "@-- comment placed immediately after name parts"), 1); - })); - })); - Belt_Array.forEach(Test__Util$AgdaModeVscode.Golden.getGoldenFilepathsSync("../../../../test/tests/Parser/SourceFile"), (function (filepath) { - Promise$BsMocha.it("should golden test " + filepath)(undefined, undefined, undefined, (function (param) { - return Js_promise.then_((function (raw) { - var partial_arg = [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9 - ]; - return Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (param) { - return SourceFile$AgdaModeVscode.parse(partial_arg, filepath, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.Strings.unlinesWith(SourceFile$AgdaModeVscode.Diff.toString, param); - }))); - }), Test__Util$AgdaModeVscode.Golden.readFile(filepath)); + it("should work when \"--\" is placed immediately after some text (issue #56)", (function () { + Curry._3(Assert.equal, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "a -- comment after some text"), 2, undefined); + Curry._3(Assert.equal, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "a-- comment placed immediately after some text"), -1, undefined); + Curry._3(Assert.equal, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "_-- comment placed immediately after name parts"), 1, undefined); + Curry._3(Assert.equal, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, ";-- comment placed immediately after name parts"), 1, undefined); + Curry._3(Assert.equal, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, ".-- comment placed immediately after name parts"), 1, undefined); + Curry._3(Assert.equal, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "\"-- comment placed immediately after name parts"), 1, undefined); + Curry._3(Assert.equal, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "(-- comment placed immediately after name parts"), 1, undefined); + Curry._3(Assert.equal, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, ")-- comment placed immediately after name parts"), 1, undefined); + Curry._3(Assert.equal, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "{-- comment placed immediately after name parts"), 1, undefined); + Curry._3(Assert.equal, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "}-- comment placed immediately after name parts"), 1, undefined); + Curry._3(Assert.equal, Js_string.search(SourceFile$AgdaModeVscode.Regex.comment, "@-- comment placed immediately after name parts"), 1, undefined); })); })); + Test__Util$AgdaModeVscode.Golden.getGoldenFilepathsSync("../../../../test/tests/Parser/SourceFile").forEach(function (filepath) { + it("should golden test " + filepath, (async function () { + var raw = await Test__Util$AgdaModeVscode.Golden.readFile(filepath); + return await Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (extra) { + return SourceFile$AgdaModeVscode.parse([ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9 + ], filepath, extra); + })), (function (extra) { + return Test__Util$AgdaModeVscode.Strings.unlinesWith(SourceFile$AgdaModeVscode.Diff.toString, extra); + }))); + })); + }); })); } diff --git a/lib/js/test/tests/Test__CaseSplit.bs.js b/lib/js/test/tests/Test__CaseSplit.bs.js index 4f97ebe4..a22debca 100644 --- a/lib/js/test/tests/Test__CaseSplit.bs.js +++ b/lib/js/test/tests/Test__CaseSplit.bs.js @@ -1,119 +1,117 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; +var Curry = require("rescript/lib/js/curry.js"); +var Assert = require("assert"); var Vscode = require("vscode"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); -var Belt_Array = require("rescript/lib/js/belt_Array.js"); -var Mocha$BsMocha = require("bs-mocha/lib/js/src/Mocha.bs.js"); -var Assert$BsMocha = require("bs-mocha/lib/js/src/Assert.bs.js"); var Goal$AgdaModeVscode = require("../../src/Goal.bs.js"); var Editor$AgdaModeVscode = require("../../src/Editor.bs.js"); var Test__Util$AgdaModeVscode = require("./Test__Util.bs.js"); var State__Goal$AgdaModeVscode = require("../../src/State/State__Goal.bs.js"); -Mocha$BsMocha.describe("State__Goal.caseSplitAux dry run")(undefined, undefined, undefined, (function (param) { - Test__Util$AgdaModeVscode.Q.it("should calculate the infomation needed for case splitting correctly", (function (param) { - return $$Promise.flatMap(Vscode.window.showTextDocument(Vscode.Uri.file(Test__Util$AgdaModeVscode.Path.asset("CaseSplit1.agda")), undefined), (function (editor) { - var $$document = editor.document; - return $$Promise.map($$Promise.map(Goal$AgdaModeVscode.makeMany(editor, [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8 - ]), (function (goals) { - return Belt_Array.map(goals, (function (goal) { - var match = State__Goal$AgdaModeVscode.caseSplitAux($$document, goal); - var rewriteRange = match[2]; - var rewriteRange$1 = new Vscode.Range($$document.positionAt(rewriteRange[0]), $$document.positionAt(rewriteRange[1])); - return [ - match[0], - match[1], - Editor$AgdaModeVscode.$$Text.get($$document, rewriteRange$1) - ]; - })); - })), (function (results) { - return { - TAG: 0, - _0: Assert$BsMocha.deep_equal(undefined, results, [ - [ - false, - 9, - "x → {! !}" - ], - [ - false, - 23, - "y → {! !}" - ], - [ - false, - 4, - "x → {! !}" - ], - [ - false, - 4, - "y → {! !}" - ], - [ - true, - 13, - "x → {! !}" - ], - [ - true, - 13, - "y → {! !}" - ], - [ - true, - 2, - "x → {! !}" - ], - [ - true, - 2, - "y → {! !}" - ], - [ - false, - 13, - "x → {! !}" - ] - ]), - [Symbol.for("name")]: "Ok" - }; - })); - })); +describe("State__Goal.caseSplitAux dry run", (function () { + Test__Util$AgdaModeVscode.Q.it("should calculate the infomation needed for case splitting correctly", (async function () { + var editor = await Vscode.window.showTextDocument(Vscode.Uri.file(Test__Util$AgdaModeVscode.Path.asset("CaseSplit1.agda")), undefined); + var $$document = editor.document; + var goals = await Goal$AgdaModeVscode.makeMany(editor, [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ]); + var results = goals.map(function (goal) { + var match = State__Goal$AgdaModeVscode.caseSplitAux($$document, goal); + var rewriteRange = match[2]; + var rewriteRange$1 = new Vscode.Range($$document.positionAt(rewriteRange[0]), $$document.positionAt(rewriteRange[1])); + return [ + match[0], + match[1], + Editor$AgdaModeVscode.$$Text.get($$document, rewriteRange$1) + ]; + }); + return { + TAG: "Ok", + _0: Curry._3(Assert.deepEqual, results, [ + [ + false, + 9, + "x → {! !}" + ], + [ + false, + 23, + "y → {! !}" + ], + [ + false, + 4, + "x → {! !}" + ], + [ + false, + 4, + "y → {! !}" + ], + [ + true, + 13, + "x → {! !}" + ], + [ + true, + 13, + "y → {! !}" + ], + [ + true, + 2, + "x → {! !}" + ], + [ + true, + 2, + "y → {! !}" + ], + [ + false, + 13, + "x → {! !}" + ] + ], undefined), + [Symbol.for("name")]: "Ok" + }; })); })); -Mocha$BsMocha.describe_skip("Integration test")(undefined, undefined, undefined, (function (param) { - var context = Test__Util$AgdaModeVscode.Agda.make(undefined, "CaseSplit2.agda"); +describe.skip("Integration test", (function () { var fileContent = { contents: "" }; - Test__Util$AgdaModeVscode.Q.before(function (param) { + Test__Util$AgdaModeVscode.Q.before(function () { return Test__Util$AgdaModeVscode.readFile(Test__Util$AgdaModeVscode.Path.asset("CaseSplit2.agda"), fileContent); }); - Test__Util$AgdaModeVscode.Q.after(function (param) { + Test__Util$AgdaModeVscode.Q.after(function () { return Test__Util$AgdaModeVscode.restoreFile(Test__Util$AgdaModeVscode.Path.asset("CaseSplit2.agda"), fileContent); }); - Test__Util$AgdaModeVscode.Q.it("should have more goals after splitting", (function (param) { - var partial_arg = [ - new Vscode.Position(7, 16), - "x" - ]; - return $$Promise.mapOk($$Promise.flatMapOk($$Promise.flatMap(context, Test__Util$AgdaModeVscode.Agda.load), (function (param) { - return Test__Util$AgdaModeVscode.Agda.$$case(partial_arg, param); - })), (function (param) { - Assert$BsMocha.deep_equal(undefined, param[1].goals.length, 10); - })); + it("should have more goals after splitting", (async function () { + var context = await Test__Util$AgdaModeVscode.Agda.make(undefined, "CaseSplit2.agda"); + var result = await Test__Util$AgdaModeVscode.Agda.load(context); + if (result.TAG === "Ok") { + var error = await Test__Util$AgdaModeVscode.Agda.$$case([ + new Vscode.Position(7, 16), + "x" + ], result._0); + if (error.TAG === "Ok") { + return Curry._3(Assert.deepEqual, error._0[1].goals.length, 10, undefined); + } + throw error._0; + } + throw result._0; })); })); diff --git a/lib/js/test/tests/Test__Connection.bs.js b/lib/js/test/tests/Test__Connection.bs.js index d24593db..3097eb04 100644 --- a/lib/js/test/tests/Test__Connection.bs.js +++ b/lib/js/test/tests/Test__Connection.bs.js @@ -1,23 +1,26 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); -var Mocha$BsMocha = require("bs-mocha/lib/js/src/Mocha.bs.js"); var Connection$AgdaModeVscode = require("../../src/Connection/Connection.bs.js"); var Test__Util$AgdaModeVscode = require("./Test__Util.bs.js"); var Connection__Error$AgdaModeVscode = require("../../src/Connection/Connection__Error.bs.js"); -Mocha$BsMocha.describe_skip("Connection")(10000, undefined, undefined, (function (param) { - Test__Util$AgdaModeVscode.Q.it("should download the language server", (function (param) { - var globalStoragePath = Test__Util$AgdaModeVscode.Path.globalStoragePath(undefined); - return $$Promise.flatMapError($$Promise.mapOk(Connection$AgdaModeVscode.start(globalStoragePath, true, (function (param) { - - })), (function (param) { - - })), (function (e) { - var match = Connection__Error$AgdaModeVscode.toString(e); - return Test__Util$AgdaModeVscode.A.fail(match[0] + "\n" + match[1]); - })); +describe.skip("Connection", (function () { + Test__Util$AgdaModeVscode.Q.it("should download the language server", (async function () { + var globalStoragePath = Test__Util$AgdaModeVscode.Path.globalStoragePath; + var e = await Connection$AgdaModeVscode.start(globalStoragePath, true, (function (param) { + + })); + if (e.TAG === "Ok") { + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + var match = Connection__Error$AgdaModeVscode.toString(e._0); + var message = match[0] + "\n" + match[1]; + return await Test__Util$AgdaModeVscode.A.fail(message); })); })); diff --git a/lib/js/test/tests/Test__EditorIM.bs.js b/lib/js/test/tests/Test__EditorIM.bs.js index 3f2eaed2..dc49314a 100644 --- a/lib/js/test/tests/Test__EditorIM.bs.js +++ b/lib/js/test/tests/Test__EditorIM.bs.js @@ -1,1326 +1,6 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Curry = require("rescript/lib/js/curry.js"); -var Js_exn = require("rescript/lib/js/js_exn.js"); -var Vscode = require("vscode"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); -var Js_string = require("rescript/lib/js/js_string.js"); -var Belt_Array = require("rescript/lib/js/belt_Array.js"); -var Belt_Option = require("rescript/lib/js/belt_Option.js"); -var Caml_option = require("rescript/lib/js/caml_option.js"); -var Mocha$BsMocha = require("bs-mocha/lib/js/src/Mocha.bs.js"); -var IM$AgdaModeVscode = require("../../src/InputMethod/IM.bs.js"); -var Chan$AgdaModeVscode = require("../../src/Util/Chan.bs.js"); -var Util$AgdaModeVscode = require("../../src/Util/Util.bs.js"); -var Editor$AgdaModeVscode = require("../../src/Editor.bs.js"); -var Test__Util$AgdaModeVscode = require("./Test__Util.bs.js"); - -function acquire(setup) { - var setup$1 = setup.contents; - if (setup$1 !== undefined) { - return $$Promise.resolved({ - TAG: 0, - _0: Caml_option.valFromOption(setup$1), - [Symbol.for("name")]: "Ok" - }); - } else { - return $$Promise.resolved({ - TAG: 1, - _0: { - RE_EXN_ID: Util$AgdaModeVscode.$$Error, - _1: "Cannot acquire the setup" - }, - [Symbol.for("name")]: "Error" - }); - } -} - -function cleanup(setup) { - var range = new Vscode.Range(new Vscode.Position(0, 0), new Vscode.Position(100, 0)); - return Editor$AgdaModeVscode.$$Text.replace(setup.editor.document, range, ""); -} - -function equal(xs) { - return function (param) { - return Test__Util$AgdaModeVscode.A.equal(xs, param); - }; -} - -function deep_equal(xs) { - return function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(xs, param); - }; -} - -function wait(setup) { - return $$Promise.map(Chan$AgdaModeVscode.once(setup.channels.inputMethod), (function (x) { - return { - TAG: 0, - _0: x, - [Symbol.for("name")]: "Ok" - }; - })); -} - -function wait2nd(setup) { - return $$Promise.map($$Promise.flatMap(Chan$AgdaModeVscode.once(setup.channels.inputMethod), (function (param) { - return Chan$AgdaModeVscode.once(setup.channels.inputMethod); - })), (function (x) { - return { - TAG: 0, - _0: x, - [Symbol.for("name")]: "Ok" - }; - })); -} - -function activate(setup, positions, param) { - var promise = wait(setup); - var positions$1 = Belt_Option.getWithDefault(positions, Editor$AgdaModeVscode.Cursor.getMany(setup.editor)); - Editor$AgdaModeVscode.Cursor.setMany(setup.editor, positions$1); - return $$Promise.flatMap($$Promise.flatMap(Vscode.commands.executeCommand("agda-mode.input-symbol[Activate]"), (function (result) { - return result; - })), (function (param) { - return promise; - })); -} - -function deactivate(setup) { - var promise = wait(setup); - return $$Promise.flatMap($$Promise.flatMap(Vscode.commands.executeCommand("agda-mode.escape"), (function (result) { - return result; - })), (function (param) { - return promise; - })); -} - -function insertChar(setup, $$char) { - var promise1 = wait(setup); - var promise2 = wait2nd(setup); - var positions = Editor$AgdaModeVscode.Cursor.getMany(setup.editor); - return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.map(Editor$AgdaModeVscode.$$Text.batchInsert(setup.editor.document, positions, $$char), (function (succeed) { - if (succeed) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - } else { - return { - TAG: 1, - _0: Js_exn.raiseError("Failed to insert " + $$char), - [Symbol.for("name")]: "Error" - }; - } - })), (function (param) { - return promise1; - })), (function (result1) { - return $$Promise.mapOk(promise2, (function (result2) { - return Belt_Array.concat(result1, result2); - })); - })); -} - -function backspace(setup) { - var promise1 = wait(setup); - var promise2 = wait2nd(setup); - var end_ = Editor$AgdaModeVscode.Cursor.get(setup.editor); - var start = end_.translate(0, -1); - var range = new Vscode.Range(start, end_); - return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.map(Editor$AgdaModeVscode.$$Text.$$delete(setup.editor.document, range), (function (succeed) { - if (succeed) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - } else { - return { - TAG: 1, - _0: Js_exn.raiseError("Failed to backspace"), - [Symbol.for("name")]: "Error" - }; - } - })), (function (param) { - return promise1; - })), (function (result1) { - return $$Promise.mapOk(promise2, (function (result2) { - return Belt_Array.concat(result1, result2); - })); - })); -} - -function select(setup, intervals) { - var partial_arg = setup.editor.document; - var ranges = Belt_Array.map(intervals, (function (param) { - return Editor$AgdaModeVscode.$$Range.fromInterval(partial_arg, param); - })); - Editor$AgdaModeVscode.$$Selection.setMany(setup.editor, ranges); - return $$Promise.resolved({ - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }); -} - -function selectAndWait(setup, intervals) { - var promise = wait(setup); - var partial_arg = setup.editor.document; - var ranges = Belt_Array.map(intervals, (function (param) { - return Editor$AgdaModeVscode.$$Range.fromInterval(partial_arg, param); - })); - Editor$AgdaModeVscode.$$Selection.setMany(setup.editor, ranges); - return promise; -} - -var IM = { - Input: IM$AgdaModeVscode.Input, - Output: IM$AgdaModeVscode.Output, - Log: IM$AgdaModeVscode.Log, - Module: IM$AgdaModeVscode.Module, - make: IM$AgdaModeVscode.make, - isActivated: IM$AgdaModeVscode.isActivated, - bufferIsEmpty: IM$AgdaModeVscode.bufferIsEmpty, - run: IM$AgdaModeVscode.run, - equal: equal, - deep_equal: deep_equal, - wait: wait, - wait2nd: wait2nd, - activate: activate, - deactivate: deactivate, - insertChar: insertChar, - backspace: backspace, - select: select, - selectAndWait: selectAndWait -}; - -Mocha$BsMocha.describe("Input Method (Editor)")(undefined, undefined, undefined, (function (param) { - var setup = { - contents: undefined - }; - Test__Util$AgdaModeVscode.Q.before(function (param) { - return $$Promise.map(Test__Util$AgdaModeVscode.activateExtensionAndOpenFile(Test__Util$AgdaModeVscode.Path.asset("InputMethod.agda")), (function (param) { - setup.contents = { - editor: param[0], - channels: param[1] - }; - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); - }); - Test__Util$AgdaModeVscode.Q.after_each(function (param) { - return $$Promise.mapOk(acquire(setup), cleanup); - }); - Mocha$BsMocha.describe("Insertion")(undefined, undefined, undefined, (function (param) { - Test__Util$AgdaModeVscode.Q.it("should translate \"lambdabar\" to \"λ\"", (function (param) { - return $$Promise.flatMapOk(acquire(setup), (function (setup) { - var $$document = setup.editor.document; - var partial_arg = [/* Activate */2]; - var partial_arg$1 = [ - { - _0: [[ - [ - 0, - 1 - ], - "←" - ]], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$2 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$3 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$4 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$5 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$6 = [ - { - _0: [[ - [ - 0, - 6 - ], - "λ" - ]], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$7 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$8 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$9 = [ - { - _0: [[ - [ - 0, - 4 - ], - "ƛ" - ]], - [Symbol.for("name")]: "RewriteIssued" - }, - /* Deactivate */3, - /* RewriteApplied */1 - ]; - return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk(activate(setup, undefined, undefined), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg, param); - })), (function (param) { - return insertChar(setup, "l"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$1, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("←", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "a"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$2, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("←a", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "m"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$3, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("←am", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "b"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$4, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("←amb", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "d"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$5, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("←ambd", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "a"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$6, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("λ", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "b"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$7, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("λb", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "a"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$8, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("λba", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "r"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$9, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("ƛ", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })); - })); - })); - Test__Util$AgdaModeVscode.Q.it("should translate \"bn\" to \"𝕟\"", (function (param) { - return $$Promise.flatMapOk(acquire(setup), (function (setup) { - var $$document = setup.editor.document; - var partial_arg = [/* Activate */2]; - var partial_arg$1 = [ - { - _0: [[ - [ - 0, - 1 - ], - "♭" - ]], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$2 = [ - { - _0: [[ - [ - 0, - 2 - ], - "𝕟" - ]], - [Symbol.for("name")]: "RewriteIssued" - }, - /* Deactivate */3, - /* RewriteApplied */1 - ]; - return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk(activate(setup, undefined, undefined), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg, param); - })), (function (param) { - return insertChar(setup, "b"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$1, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("♭", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "n"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$2, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("𝕟", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })); - })); - })); - Test__Util$AgdaModeVscode.Q.it("Issue #55, should not deactivate when size of candidate symbols > 1", (function (param) { - return $$Promise.flatMapOk(acquire(setup), (function (setup) { - var $$document = setup.editor.document; - var partial_arg = [/* Activate */2]; - var partial_arg$1 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$2 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$3 = [ - { - _0: [[ - [ - 0, - 3 - ], - "∗" - ]], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$4 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$5 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$6 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$7 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$8 = [ - { - _0: [[ - [ - 0, - 6 - ], - "⁎" - ]], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$9 = [/* Deactivate */3]; - return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk(activate(setup, undefined, undefined), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg, param); - })), (function (param) { - return insertChar(setup, "a"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$1, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("a", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "s"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$2, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("as", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "t"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$3, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("∗", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "e"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$4, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("∗e", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "r"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$5, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("∗er", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "i"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$6, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("∗eri", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "s"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$7, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("∗eris", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "k"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$8, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("⁎", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return deactivate(setup); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$9, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("⁎", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })); - })); - })); - })); - Mocha$BsMocha.describe("Backspacing")(undefined, undefined, undefined, (function (param) { - Test__Util$AgdaModeVscode.Q.it("should work just fine", (function (param) { - return $$Promise.flatMapOk(acquire(setup), (function (setup) { - var $$document = setup.editor.document; - var partial_arg = [/* Activate */2]; - var partial_arg$1 = [ - { - _0: [[ - [ - 0, - 1 - ], - "←" - ]], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$2 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$3 = [ - { - _0: [[ - [ - 0, - 1 - ], - "←" - ]], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$4 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$5 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$6 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$7 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$8 = [ - { - _0: [[ - [ - 0, - 6 - ], - "λ" - ]], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$9 = [ - { - _0: [[ - [ - 0, - 0 - ], - "lambd" - ]], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$10 = [/* Deactivate */3]; - return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk(activate(setup, undefined, undefined), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg, param); - })), (function (param) { - return insertChar(setup, "l"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$1, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("←", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "a"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$2, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("←a", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return backspace(setup); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$3, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("←", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "a"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$4, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("←a", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "m"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$5, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("←am", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "b"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$6, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("←amb", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "d"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$7, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("←ambd", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "a"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$8, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("λ", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return backspace(setup); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$9, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("lambd", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return deactivate(setup); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$10, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("lambd", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })); - })); - })); - })); - Mocha$BsMocha.describe("Abortion")(undefined, undefined, undefined, (function (param) { - Test__Util$AgdaModeVscode.Q.it("should abort after hitting escape", (function (param) { - return $$Promise.flatMapOk(acquire(setup), (function (setup) { - var $$document = setup.editor.document; - var partial_arg = [/* Activate */2]; - var partial_arg$1 = [ - { - _0: [[ - [ - 0, - 1 - ], - "♭" - ]], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$2 = [/* Deactivate */3]; - return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk(activate(setup, undefined, undefined), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg, param); - })), (function (param) { - return insertChar(setup, "b"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$1, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("♭", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return deactivate(setup); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$2, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("♭", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })); - })); - })); - Test__Util$AgdaModeVscode.Q.it("should abort after typing the wrong sequence", (function (param) { - return $$Promise.flatMapOk(acquire(setup), (function (setup) { - var $$document = setup.editor.document; - var partial_arg = [/* Activate */2]; - var partial_arg$1 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$2 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* Deactivate */3, - /* RewriteApplied */1 - ]; - return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk(activate(setup, undefined, undefined), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg, param); - })), (function (param) { - return insertChar(setup, "a"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$1, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("a", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "d"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$2, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("ad", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })); - })); - })); - Test__Util$AgdaModeVscode.Q.it("should abort after backspacing to much", (function (param) { - return $$Promise.flatMapOk(acquire(setup), (function (setup) { - var $$document = setup.editor.document; - var partial_arg = [/* Activate */2]; - var partial_arg$1 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$2 = [ - { - _0: [[ - [ - 0, - 0 - ], - "" - ]], - [Symbol.for("name")]: "RewriteIssued" - }, - /* Deactivate */3, - /* RewriteApplied */1 - ]; - return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk(activate(setup, undefined, undefined), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg, param); - })), (function (param) { - return insertChar(setup, "a"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$1, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("a", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return backspace(setup); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$2, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })); - })); - })); - })); - Mocha$BsMocha.describe("Cursor")(undefined, undefined, undefined, (function (param) { - Test__Util$AgdaModeVscode.Q.it("should not abort when the cursor is placed inside the buffer", (function (param) { - return $$Promise.flatMapOk(acquire(setup), (function (setup) { - var $$document = setup.editor.document; - var partial_arg = [/* Activate */2]; - var partial_arg$1 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$2 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$3 = [ - { - _0: [[ - [ - 0, - 3 - ], - "∧" - ]], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$4 = [ - { - _0: [[ - [ - 0, - 2 - ], - "≙" - ]], - [Symbol.for("name")]: "RewriteIssued" - }, - /* Deactivate */3, - /* RewriteApplied */1 - ]; - return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk(activate(setup, undefined, undefined), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg, param); - })), (function (param) { - return insertChar(setup, "a"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$1, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("a", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "n"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$2, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("an", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return select(setup, [[ - 0, - 0 - ]]); - })), (function (param) { - return select(setup, [[ - 1, - 1 - ]]); - })), (function (param) { - return select(setup, [[ - 2, - 2 - ]]); - })), (function (param) { - return select(setup, [ - [ - 0, - 1 - ], - [ - 1, - 2 - ] - ]); - })), (function (param) { - return select(setup, [[ - 0, - 2 - ]]); - })), (function (param) { - return insertChar(setup, "d"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$3, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("∧", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "="); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$4, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("≙", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })); - })); - })); - Test__Util$AgdaModeVscode.Q.it("should abort when the cursor is placed outside the buffer", (function (param) { - return $$Promise.flatMapOk(acquire(setup), (function (setup) { - var positions = [new Vscode.Position(0, 3)]; - var $$document = setup.editor.document; - var partial_arg = [/* Activate */2]; - var partial_arg$1 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$2 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$3 = [/* Deactivate */3]; - return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMap(Editor$AgdaModeVscode.$$Text.insert($$document, new Vscode.Position(0, 0), "123"), (function (param) { - return activate(setup, positions, undefined); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg, param); - })), (function (param) { - return insertChar(setup, "a"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$1, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("123a", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return insertChar(setup, "n"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$2, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("123an", Editor$AgdaModeVscode.$$Text.getAll($$document)); - })), (function (param) { - return selectAndWait(setup, [[ - 1, - 1 - ]]); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$3, param); - })); - })); - })); - })); - Mocha$BsMocha.describe("Multiple cursors at once")(undefined, undefined, undefined, (function (param) { - var partial_arg = /\r\n/g; - var replaceCRLF = function (param) { - return Js_string.replaceByRe(partial_arg, "\n", param); - }; - Test__Util$AgdaModeVscode.Q.it("should work just fine (𝕟)", (function (param) { - var positions = [ - new Vscode.Position(0, 0), - new Vscode.Position(1, 0), - new Vscode.Position(2, 0), - new Vscode.Position(3, 0) - ]; - return $$Promise.flatMapOk(acquire(setup), (function (setup) { - var $$document = setup.editor.document; - var partial_arg = [/* Activate */2]; - return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMap(Editor$AgdaModeVscode.$$Text.insert($$document, new Vscode.Position(0, 0), "\n\n\n"), (function (param) { - return activate(setup, positions, undefined); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg, param); - })), (function (param) { - return insertChar(setup, "b"); - })), (function (actual) { - if (Test__Util$AgdaModeVscode.onUnix) { - var xs = [ - { - _0: [ - [ - [ - 0, - 1 - ], - "♭" - ], - [ - [ - 2, - 3 - ], - "♭" - ], - [ - [ - 4, - 5 - ], - "♭" - ], - [ - [ - 6, - 7 - ], - "♭" - ] - ], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - return Test__Util$AgdaModeVscode.A.deep_equal(xs, actual); - } - var xs$1 = [ - { - _0: [ - [ - [ - 0, - 1 - ], - "♭" - ], - [ - [ - 3, - 4 - ], - "♭" - ], - [ - [ - 6, - 7 - ], - "♭" - ], - [ - [ - 9, - 10 - ], - "♭" - ] - ], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - return Test__Util$AgdaModeVscode.A.deep_equal(xs$1, actual); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("♭\n♭\n♭\n♭", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); - })), (function (param) { - return insertChar(setup, "n"); - })), (function (actual) { - if (Test__Util$AgdaModeVscode.onUnix) { - var xs = [ - { - _0: [ - [ - [ - 0, - 2 - ], - "𝕟" - ], - [ - [ - 3, - 5 - ], - "𝕟" - ], - [ - [ - 6, - 8 - ], - "𝕟" - ], - [ - [ - 9, - 11 - ], - "𝕟" - ] - ], - [Symbol.for("name")]: "RewriteIssued" - }, - /* Deactivate */3, - /* RewriteApplied */1 - ]; - return Test__Util$AgdaModeVscode.A.deep_equal(xs, actual); - } - var xs$1 = [ - { - _0: [ - [ - [ - 0, - 2 - ], - "𝕟" - ], - [ - [ - 4, - 6 - ], - "𝕟" - ], - [ - [ - 8, - 10 - ], - "𝕟" - ], - [ - [ - 12, - 14 - ], - "𝕟" - ] - ], - [Symbol.for("name")]: "RewriteIssued" - }, - /* Deactivate */3, - /* RewriteApplied */1 - ]; - return Test__Util$AgdaModeVscode.A.deep_equal(xs$1, actual); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("𝕟\n𝕟\n𝕟\n𝕟", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); - })); - })); - })); - Test__Util$AgdaModeVscode.Q.it("should work just fine (∧)", (function (param) { - return $$Promise.flatMapOk(acquire(setup), (function (setup) { - var positions = [ - new Vscode.Position(0, 0), - new Vscode.Position(1, 1), - new Vscode.Position(2, 2), - new Vscode.Position(3, 3) - ]; - var $$document = setup.editor.document; - var partial_arg = [/* Activate */2]; - var partial_arg$1 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - var partial_arg$2 = [ - { - _0: [], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - return $$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMapOk($$Promise.flatMap(Editor$AgdaModeVscode.$$Text.insert($$document, new Vscode.Position(0, 0), "123\n123\n123\n123"), (function (param) { - return activate(setup, positions, undefined); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg, param); - })), (function (param) { - return insertChar(setup, "a"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$1, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("a123\n1a23\n12a3\n123a", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); - })), (function (param) { - return insertChar(setup, "n"); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.deep_equal(partial_arg$2, param); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("an123\n1an23\n12an3\n123an", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); - })), (function (param) { - return insertChar(setup, "d"); - })), (function (actual) { - if (Test__Util$AgdaModeVscode.onUnix) { - var xs = [ - { - _0: [ - [ - [ - 0, - 3 - ], - "∧" - ], - [ - [ - 8, - 11 - ], - "∧" - ], - [ - [ - 16, - 19 - ], - "∧" - ], - [ - [ - 24, - 27 - ], - "∧" - ] - ], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - return Test__Util$AgdaModeVscode.A.deep_equal(xs, actual); - } - var xs$1 = [ - { - _0: [ - [ - [ - 0, - 3 - ], - "∧" - ], - [ - [ - 9, - 12 - ], - "∧" - ], - [ - [ - 18, - 21 - ], - "∧" - ], - [ - [ - 27, - 30 - ], - "∧" - ] - ], - [Symbol.for("name")]: "RewriteIssued" - }, - /* UpdateView */0, - /* RewriteApplied */1 - ]; - return Test__Util$AgdaModeVscode.A.deep_equal(xs$1, actual); - })), (function (param) { - return Test__Util$AgdaModeVscode.A.equal("∧123\n1∧23\n12∧3\n123∧", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document))); - })); - })); - })); - })); - })); var Js$p; @@ -1328,7 +8,4 @@ var Js; exports.Js$p = Js$p; exports.Js = Js; -exports.acquire = acquire; -exports.cleanup = cleanup; -exports.IM = IM; -/* Not a pure module */ +/* No side effect */ diff --git a/lib/js/test/tests/Test__Tokens.bs.js b/lib/js/test/tests/Test__Tokens.bs.js index 333f82e5..d856702b 100644 --- a/lib/js/test/tests/Test__Tokens.bs.js +++ b/lib/js/test/tests/Test__Tokens.bs.js @@ -1,62 +1,2 @@ // Generated by ReScript, PLEASE EDIT WITH CARE -'use strict'; - -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); -var Belt_Array = require("rescript/lib/js/belt_Array.js"); -var Mocha$BsMocha = require("bs-mocha/lib/js/src/Mocha.bs.js"); -var Editor$AgdaModeVscode = require("../../src/Editor.bs.js"); -var Tokens$AgdaModeVscode = require("../../src/Tokens.bs.js"); -var Test__Util$AgdaModeVscode = require("./Test__Util.bs.js"); - -Mocha$BsMocha.describe("Tokens")(10000, undefined, undefined, (function (param) { - var context = Test__Util$AgdaModeVscode.Agda.make(undefined, "GotoDefinition.agda"); - Mocha$BsMocha.describe("GotoDefinition.agda")(undefined, undefined, undefined, (function (param) { - Test__Util$AgdaModeVscode.Q.it("should produce 28 tokens", (function (param) { - return $$Promise.flatMapOk($$Promise.flatMap(context, Test__Util$AgdaModeVscode.Agda.load), (function (param) { - var tokens = Belt_Array.map(Tokens$AgdaModeVscode.toArray(param[1].tokens), (function (param) { - return Editor$AgdaModeVscode.$$Range.toString(param[1]) + " " + Tokens$AgdaModeVscode.Token.toString(param[0]); - })); - return Test__Util$AgdaModeVscode.A.deep_equal(28, tokens.length); - })); - })); - Test__Util$AgdaModeVscode.Q.it("should produce correct tokens", (function (param) { - return $$Promise.flatMapOk($$Promise.flatMap(context, Test__Util$AgdaModeVscode.Agda.load), (function (param) { - var tokens = Belt_Array.map(Tokens$AgdaModeVscode.toArray(param[1].tokens), (function (param) { - return Editor$AgdaModeVscode.$$Range.toString(param[1]) + " " + Tokens$AgdaModeVscode.Token.toString(param[0]); - })); - return Test__Util$AgdaModeVscode.A.deep_equal([ - "0:0-6 Token (0, 6) [Keyword]", - "0:7-21 Token (7, 21) [Module] [src: 1]", - "0:22-27 Token (22, 27) [Keyword]", - "1:0-4 Token (28, 32) [Keyword]", - "1:5-6 Token (33, 34) [Datatype] [src: 34]", - "1:7-8 Token (35, 36) [Symbol]", - "1:9-12 Token (37, 40) [Primitive] [src: 388]", - "1:13-18 Token (41, 46) [Keyword]", - "2:2-3 Token (49, 50) [ConstructorInductive] [src: 50]", - "2:4-5 Token (51, 52) [Symbol]", - "2:6-7 Token (53, 54) [Datatype] [src: 34]", - "3:2-3 Token (57, 58) [ConstructorInductive] [src: 58]", - "3:4-5 Token (59, 60) [Symbol]", - "3:6-7 Token (61, 62) [Datatype] [src: 34]", - "3:8-9 Token (63, 64) [Symbol]", - "3:10-11 Token (65, 66) [Datatype] [src: 34]", - "5:0-3 Token (68, 71) [Function, Operator] [src: 69]", - "5:4-5 Token (72, 73) [Symbol]", - "5:6-7 Token (74, 75) [Datatype] [src: 34]", - "5:8-9 Token (76, 77) [Symbol]", - "5:10-11 Token (78, 79) [Datatype] [src: 34]", - "5:12-13 Token (80, 81) [Symbol]", - "5:14-15 Token (82, 83) [Datatype] [src: 34]", - "6:0-1 Token (84, 85) [Bound] [src: 85]", - "6:2-3 Token (86, 87) [Function, Operator] [src: 69]", - "6:4-5 Token (88, 89) [Bound] [src: 89]", - "6:6-7 Token (90, 91) [Symbol]", - "6:8-15 Token (92, 99) [Hole]" - ], tokens); - })); - })); - })); - })); - -/* Not a pure module */ +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/lib/js/test/tests/Test__Util.bs.js b/lib/js/test/tests/Test__Util.bs.js index b58342f1..12f64456 100644 --- a/lib/js/test/tests/Test__Util.bs.js +++ b/lib/js/test/tests/Test__Util.bs.js @@ -5,20 +5,17 @@ var Fs = require("fs"); var Os = require("os"); var Caml = require("rescript/lib/js/caml.js"); var Diff = require("diff"); -var Path = require("path"); var Util = require("util"); var Curry = require("rescript/lib/js/curry.js"); +var Assert = require("assert"); var Vscode = require("vscode"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); -var Process = require("process"); +var Nodefs = require("node:fs"); var Js_array = require("rescript/lib/js/js_array.js"); var Js_string = require("rescript/lib/js/js_string.js"); -var Belt_Array = require("rescript/lib/js/belt_Array.js"); +var Nodepath = require("node:path"); var Js_promise = require("rescript/lib/js/js_promise.js"); -var Belt_Option = require("rescript/lib/js/belt_Option.js"); -var Assert$BsMocha = require("bs-mocha/lib/js/src/Assert.bs.js"); +var Core__Option = require("@rescript/core/lib/js/src/Core__Option.bs.js"); var Caml_exceptions = require("rescript/lib/js/caml_exceptions.js"); -var Promise$BsMocha = require("bs-mocha/lib/js/src/Promise.bs.js"); var Chan$AgdaModeVscode = require("../../src/Util/Chan.bs.js"); var Main$AgdaModeVscode = require("../../src/Main.bs.js"); var Util$AgdaModeVscode = require("../../src/Util/Util.bs.js"); @@ -52,37 +49,18 @@ var runner = (function(f) { }); function toAbsolute(filepath) { - var dirname = typeof __dirname === "undefined" ? undefined : __dirname; - if (dirname !== undefined) { - return Path.resolve(dirname, filepath); - } else { - return Process.cwd(); - } + return Nodepath.resolve(__dirname, filepath); } -function extensionPath(param) { - var dirname = typeof __dirname === "undefined" ? undefined : __dirname; - if (dirname !== undefined) { - return Path.resolve(dirname, "../../../../"); - } else { - return Process.cwd(); - } -} +var extensionPath = Nodepath.resolve(__dirname, "../../../../"); -function globalStoragePath(param) { - var dirname = typeof __dirname === "undefined" ? undefined : __dirname; - if (dirname !== undefined) { - return Path.resolve(dirname, "../../../../test/globalStoragePath"); - } else { - return Process.cwd(); - } -} +var globalStoragePath = Nodepath.resolve(__dirname, "../../../../test/globalStoragePath"); function asset(filepath) { - return Path.join(extensionPath(undefined), "test/tests/assets", filepath); + return Nodepath.join(extensionPath, "test/tests/assets", filepath); } -var Path$1 = { +var Path = { toAbsolute: toAbsolute, extensionPath: extensionPath, globalStoragePath: globalStoragePath, @@ -93,15 +71,13 @@ var activationSingleton = { contents: undefined }; -function activateExtension(param) { +function activateExtension() { var channels = activationSingleton.contents; if (channels !== undefined) { return channels; } var disposables = []; - var extensionPath$1 = extensionPath(undefined); - var globalStoragePath$1 = globalStoragePath(undefined); - var channels$1 = Main$AgdaModeVscode.activateWithoutContext(disposables, extensionPath$1, globalStoragePath$1); + var channels$1 = Main$AgdaModeVscode.activateWithoutContext(disposables, extensionPath, globalStoragePath); activationSingleton.contents = channels$1; return channels$1; } @@ -110,114 +86,113 @@ function openFile(fileName) { return Vscode.window.showTextDocument(Vscode.Uri.file(fileName), undefined); } -function activateExtensionAndOpenFile(fileName) { - var channels = activateExtension(undefined); - return $$Promise.map(Vscode.window.showTextDocument(Vscode.Uri.file(fileName), undefined), (function (editor) { - return [ - editor, - channels - ]; - })); +async function activateExtensionAndOpenFile(fileName) { + var channels = activateExtension(); + var editor = await Vscode.window.showTextDocument(Vscode.Uri.file(fileName), undefined); + return [ + editor, + channels + ]; } function wait(ms) { - var match = $$Promise.pending(undefined); - setTimeout(match[1], ms); - return match[0]; + return new Promise((function (resolve, param) { + setTimeout(resolve, ms); + })); } function toPromise(f) { return new Promise((function (resolve, reject) { - $$Promise.get(f, (function (x) { - if (x.TAG === /* Ok */0) { - return resolve(x._0); - } else { - return reject(x._0); - } - })); + f.then(function (x) { + if (x.TAG === "Ok") { + return resolve(x._0); + } else { + return reject(x._0); + } + }); })); } -function it(s, f) { - Promise$BsMocha.it(s)(undefined, undefined, undefined, (function (param) { - return toPromise(Curry._1(f, undefined)); +function it$1(s, f) { + it(s, (function () { + return toPromise(f()); })); } function it_only(s, f) { - Promise$BsMocha.it_only(s)(undefined, undefined, undefined, (function (param) { - return toPromise(Curry._1(f, undefined)); + it.only(s, (function () { + return toPromise(f()); })); } function it_skip(s, f) { - Promise$BsMocha.it_skip(s)(undefined, undefined, undefined, (function (param) { - return toPromise(Curry._1(f, undefined)); + it.skip(s, (function () { + return toPromise(f()); })); } -function before(f) { - Promise$BsMocha.before(undefined)(undefined, undefined, undefined, (function (param) { - return toPromise(Curry._1(f, undefined)); - })); +function before$1(f) { + before(function () { + return toPromise(f()); + }); } function before_each(f) { - Promise$BsMocha.before_each(undefined)(undefined, undefined, undefined, (function (param) { - return toPromise(Curry._1(f, undefined)); - })); + beforeEach(function () { + return toPromise(f()); + }); } -function after(f) { - Promise$BsMocha.after(undefined)(undefined, undefined, undefined, (function (param) { - return toPromise(Curry._1(f, undefined)); - })); +function after$1(f) { + after(function () { + return toPromise(f()); + }); } function after_each(f) { - Promise$BsMocha.after_each(undefined)(undefined, undefined, undefined, (function (param) { - return toPromise(Curry._1(f, undefined)); - })); + afterEach(function () { + return toPromise(f()); + }); } var Q = { toPromise: toPromise, - it: it, + it: it$1, it_only: it_only, it_skip: it_skip, - before: before, + before: before$1, before_each: before_each, - after: after, + after: after$1, after_each: after_each }; function equal(expected, actual) { - return runner(function (param) { - Assert$BsMocha.equal(undefined, actual, expected); + return runner(function () { + Curry._3(Assert.equal, actual, expected, undefined); }); } -function deep_equal(expected, actual) { - return runner(function (param) { - Assert$BsMocha.deep_equal(undefined, actual, expected); +function deepEqual(expected, actual) { + return runner(function () { + Curry._3(Assert.deepEqual, actual, expected, undefined); }); } function deep_strict_equal(expected, actual) { - return runner(function (param) { - Assert$BsMocha.deep_strict_equal(undefined, actual, expected); + return runner(function () { + Curry._3(Assert.deepStrictEqual, actual, expected, undefined); }); } function fail(value) { - return runner(function (param) { - Assert$BsMocha.fail(value); + return runner(function () { + Assert.fail(value); }); } var A = { equal: equal, - deep_equal: deep_equal, + deepEqual: deepEqual, deep_strict_equal: deep_strict_equal, fail: fail }; @@ -227,27 +202,27 @@ function normalize(string) { } function unlinesWith(f, xs) { - return Util$AgdaModeVscode.$$String.unlines(Belt_Array.map(xs, f)); + return Util$AgdaModeVscode.$$String.unlines(xs.map(f)); } function breakInput(input, breakpoints) { - var breakpoints$p = Belt_Array.concat([0], breakpoints); - return Belt_Array.map(Belt_Array.mapWithIndex(breakpoints$p, (function (i, x) { - var next = Belt_Array.get(breakpoints$p, i + 1 | 0); - if (next !== undefined) { - return [ - x, - next - x | 0 - ]; - } else { - return [ - x, - input.length - x | 0 - ]; - } - })), (function (param) { - return Js_string.substrAtMost(param[0], param[1], input); - })); + var breakpoints$p = [0].concat(breakpoints); + return breakpoints$p.map(function (i, x) { + var next = breakpoints$p[i + 1 | 0]; + if (next !== undefined) { + return [ + x, + next - x | 0 + ]; + } else { + return [ + x, + input.length - x | 0 + ]; + } + }).map(function (param) { + return Js_string.substrAtMost(param[0], param[1], input); + }); } var Strings = { @@ -263,19 +238,19 @@ function getValue(x) { function fromChangeObject(obj) { if (obj.added) { return { - TAG: 0, + TAG: "Added", _0: obj.value, [Symbol.for("name")]: "Added" }; } else if (obj.removed) { return { - TAG: 1, + TAG: "Removed", _0: obj.value, [Symbol.for("name")]: "Removed" }; } else { return { - TAG: 2, + TAG: "NoChange", _0: obj.value, [Symbol.for("name")]: "NoChange" }; @@ -283,7 +258,7 @@ function fromChangeObject(obj) { } function wordsWithSpace(a, b) { - return Belt_Array.map(Diff.diffWordsWithSpace(a, b), fromChangeObject); + return Diff.diffWordsWithSpace(a, b).map(fromChangeObject); } function firstChange(diffs) { @@ -293,32 +268,32 @@ function firstChange(diffs) { var change = { contents: undefined }; - Belt_Array.forEach(diffs, (function (diff) { - if (!Belt_Option.isNone(change.contents)) { - return ; - } - switch (diff.TAG | 0) { - case /* Added */0 : - change.contents = { - TAG: 0, - _0: diff._0, - [Symbol.for("name")]: "Added" - }; - return ; - case /* Removed */1 : - change.contents = { - TAG: 1, - _0: diff._0, - [Symbol.for("name")]: "Removed" - }; - return ; - case /* NoChange */2 : - count.contents = count.contents + diff._0.length | 0; - return ; - - } - })); - return Belt_Option.map(change.contents, (function (change) { + diffs.forEach(function (diff) { + if (!Core__Option.isNone(change.contents)) { + return ; + } + switch (diff.TAG) { + case "Added" : + change.contents = { + TAG: "Added", + _0: diff._0, + [Symbol.for("name")]: "Added" + }; + return ; + case "Removed" : + change.contents = { + TAG: "Removed", + _0: diff._0, + [Symbol.for("name")]: "Removed" + }; + return ; + case "NoChange" : + count.contents = count.contents + diff._0.length | 0; + return ; + + } + }); + return Core__Option.map(change.contents, (function (change) { return [ change, count.contents @@ -334,48 +309,53 @@ var Diff$1 = { }; function getGoldenFilepaths(directoryPath) { - var directoryPath$1 = toAbsolute(directoryPath); - var readdir = Util.promisify(function (prim0, prim1) { - Fs.readdir(prim0, prim1); - }); - var isInFile = function (param) { - return Js_string.endsWith(".in", param); + var directoryPath$1 = Nodepath.resolve(__dirname, directoryPath); + var readdir = function (extra) { + return Util.promisify((function (prim0, prim1) { + Fs.readdir(prim0, prim1); + }), extra); + }; + var isInFile = function (x) { + return Js_string.endsWith(".in", x); }; var toBasename = function (path) { - return Path.join(directoryPath$1, Path.basename(path, ".in")); + return Nodepath.join(directoryPath$1, Nodepath.basename(path, ".in")); }; return Js_promise.then_((function (paths) { - return Promise.resolve(Belt_Array.map(Belt_Array.keep(paths, isInFile), toBasename)); + return Promise.resolve(paths.filter(isInFile).map(toBasename)); }), readdir(directoryPath$1)); } function getGoldenFilepathsSync(directoryPath) { - var directoryPath$1 = toAbsolute(directoryPath); - var isInFile = function (param) { - return Js_string.endsWith(".in", param); + var directoryPath$1 = Nodepath.resolve(__dirname, directoryPath); + var isInFile = function (x) { + return Js_string.endsWith(".in", x); }; var toBasename = function (path) { - return Path.join(directoryPath$1, Path.basename(path, ".in")); + return Nodepath.join(directoryPath$1, Nodepath.basename(path, ".in")); }; - return Belt_Array.map(Belt_Array.keep(Fs.readdirSync(directoryPath$1), isInFile), toBasename); + return Nodefs.readdirSync(directoryPath$1).filter(isInFile).map(toBasename); } var FileMissing = /* @__PURE__ */Caml_exceptions.create("Test__Util-AgdaModeVscode.Golden.FileMissing"); function map(param, f) { return { + TAG: "Golden", _0: param._0, - _1: Curry._1(f, param._1), + _1: f(param._1), _2: param._2, [Symbol.for("name")]: "Golden" }; } function readFile(filepath) { - var filepath$1 = toAbsolute(filepath); - var readFile$1 = Util.promisify(function (prim0, prim1) { - Fs.readFile(prim0, prim1); - }); + var filepath$1 = Nodepath.resolve(__dirname, filepath); + var readFile$1 = function (extra) { + return Util.promisify((function (prim0, prim1) { + Fs.readFile(prim0, prim1); + }), extra); + }; return Js_promise.then_((function (x) { if (x.length !== 2) { return Promise.reject({ @@ -386,6 +366,7 @@ function readFile(filepath) { var input = x[0]; var output = x[1]; return Promise.resolve({ + TAG: "Golden", _0: filepath$1, _1: input.toString(), _2: normalize(output.toString()), @@ -400,22 +381,27 @@ function readFile(filepath) { function compare(param) { var actual = normalize(param._1); var expected = normalize(param._2); - Belt_Option.forEach(firstChange(wordsWithSpace(actual, expected)), (function (param) { + Core__Option.forEach(firstChange(wordsWithSpace(actual, expected)), (function (param) { var count = param[1]; var diff = param[0]; var value = diff._0; + var change = value.length > 100 ? Js_string.substrAtMost(0, 100, value) + " ..." : value; var expected$1 = Js_string.substrAtMost(Caml.int_max(0, count - 50 | 0), (50 + value.length | 0) + 50 | 0, expected); var actual$1 = Js_string.substrAtMost(Caml.int_max(0, count - 50 | 0), (50 + value.length | 0) + 50 | 0, actual); - switch (diff.TAG | 0) { - case /* Added */0 : - case /* Removed */1 : - return Assert$BsMocha.fail$p(undefined, undefined, undefined, actual$1, expected$1); - case /* NoChange */2 : + var message = function (change) { + return "\n\nchange => " + change + "\n\nexpected => " + expected$1 + "\n\nactual => " + actual$1; + }; + switch (diff.TAG) { + case "Added" : + case "Removed" : + Assert.fail(message(change)); + return ; + case "NoChange" : return ; } })); - return Promise.resolve(undefined); + return Promise.resolve(); } var Golden = { @@ -433,8 +419,8 @@ var match = Os.type(); var onUnix = match === "Windows_NT" ? false : true; function toString(x) { - if (x.TAG === /* LanguageServerMuleErrors */0) { - return Js_array.joinWith(",", Belt_Array.map(x._0, Source$LanguageServerMule.$$Error.toString)); + if (x.TAG === "LanguageServerMuleErrors") { + return Js_array.joinWith(",", x._0.map(Source$LanguageServerMule.$$Error.toString)); } var match = Connection__Emacs__Error$AgdaModeVscode.toString(x._0); return "EmacsConnectionError: " + match[0] + ": " + match[1]; @@ -444,171 +430,121 @@ var $$Error = { toString: toString }; -function exists(command) { - return $$Promise.flatMapError($$Promise.flatMap(Source$LanguageServerMule.Module.searchUntilSuccess([{ - TAG: 1, - _0: command, - [Symbol.for("name")]: "FromCommand" - }]), (function (param) { - if (param[0] !== undefined) { - return $$Promise.resolved({ - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }); - } else { - return $$Promise.resolved({ - TAG: 1, - _0: param[1], - [Symbol.for("name")]: "Error" - }); - } - })), (function (errors) { - var msg = Js_array.joinWith(",", Belt_Array.map(errors, Source$LanguageServerMule.$$Error.toString)); - var value = "Cannot find \"Agda\" in PATH: " + msg; - return runner(function (param) { - Assert$BsMocha.fail(value); - }); - })); +async function exists(command) { + var match = await Source$LanguageServerMule.Module.searchUntilSuccess([{ + TAG: "FromCommand", + _0: command, + [Symbol.for("name")]: "FromCommand" + }]); + if (match[0] !== undefined) { + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; + } + var msg = Js_array.joinWith(",", match[1].map(Source$LanguageServerMule.$$Error.toString)); + return await fail("Cannot find \"Agda\" in PATH: " + msg); } -function make(alsOpt, filepath) { +async function make(alsOpt, filepath) { var als = alsOpt !== undefined ? alsOpt : false; var filepath$1 = asset(filepath); Config$AgdaModeVscode.inTestingMode.contents = true; - return $$Promise.map($$Promise.flatMap($$Promise.flatMap(Config$AgdaModeVscode.Connection.setAgdaVersion("agda"), (function (param) { - return Config$AgdaModeVscode.Connection.setUseAgdaLanguageServer(als); - })), (function (param) { - return exists("agda"); - })), (function (param) { - return { - filepath: filepath$1, - channels: activateExtension(undefined) - }; - })); + await Config$AgdaModeVscode.Connection.setAgdaVersion("agda"); + await Config$AgdaModeVscode.Connection.setUseAgdaLanguageServer(als); + await exists("agda"); + return { + filepath: filepath$1, + channels: activateExtension() + }; } -function load(self) { - var match = $$Promise.pending(undefined); +async function load(self) { + var match = Util$AgdaModeVscode.Promise_.pending(); var resolve = match[1]; - var promise = match[0]; var disposable = Chan$AgdaModeVscode.on(self.channels.responseHandled, (function (response) { - if (typeof response === "number" && response >= 4) { - return Curry._1(resolve, undefined); + if (typeof response !== "object" && response === "CompleteHighlightingAndMakePromptReappear") { + return resolve(); } })); - return $$Promise.flatMap($$Promise.flatMap(Vscode.window.showTextDocument(Vscode.Uri.file(self.filepath), undefined), (function (param) { - return Vscode.commands.executeCommand("agda-mode.load"); - })), (function (result) { - if (result !== undefined) { - if (result.TAG === /* Ok */0) { - var state = result._0; - return $$Promise.map(promise, (function (param) { - Curry._1(disposable, undefined); - return { - TAG: 0, - _0: [ - self, - state - ], - [Symbol.for("name")]: "Ok" - }; - })); - } - var match = Connection__Error$AgdaModeVscode.toString(result._0); - var value = match[0] + "\n" + match[1]; - return runner(function (param) { - Assert$BsMocha.fail(value); - }); - } - var value$1 = "Cannot load " + self.filepath; - return runner(function (param) { - Assert$BsMocha.fail(value$1); - }); - })); + await Vscode.window.showTextDocument(Vscode.Uri.file(self.filepath), undefined); + var match$1 = await Vscode.commands.executeCommand("agda-mode.load"); + if (match$1 === undefined) { + return await fail("Cannot load " + self.filepath); + } + if (match$1.TAG === "Ok") { + await match[0]; + disposable(); + return { + TAG: "Ok", + _0: [ + self, + match$1._0 + ], + [Symbol.for("name")]: "Ok" + }; + } + var match$2 = Connection__Error$AgdaModeVscode.toString(match$1._0); + return await fail(match$2[0] + "\n" + match$2[1]); } -function $$case(cursorAndPayload, param) { - var state = param[1]; +async function $$case(cursorAndPayload, param) { var self = param[0]; - return $$Promise.flatMap($$Promise.flatMap($$Promise.flatMap(Vscode.window.showTextDocument(Vscode.Uri.file(self.filepath), undefined), (function (editor) { - if (cursorAndPayload === undefined) { - return $$Promise.resolved(false); - } - var cursor = cursorAndPayload[0]; - return $$Promise.tap(Editor$AgdaModeVscode.$$Text.insert(state.document, cursor, cursorAndPayload[1]), (function (param) { - Editor$AgdaModeVscode.Cursor.set(editor, cursor); - })); - })), (function (param) { - return Vscode.commands.executeCommand("agda-mode.case"); - })), (function (result) { - if (result !== undefined) { - if (result.TAG === /* Ok */0) { - return $$Promise.resolved({ - TAG: 0, - _0: [ - self, - result._0 - ], - [Symbol.for("name")]: "Ok" - }); - } - var match = Connection__Error$AgdaModeVscode.toString(result._0); - var value = match[0] + "\n" + match[1]; - return runner(function (param) { - Assert$BsMocha.fail(value); - }); - } - var value$1 = "Cannot case split " + self.filepath; - return runner(function (param) { - Assert$BsMocha.fail(value$1); - }); - })); + var editor = await Vscode.window.showTextDocument(Vscode.Uri.file(self.filepath), undefined); + if (cursorAndPayload !== undefined) { + var cursor = cursorAndPayload[0]; + await Editor$AgdaModeVscode.$$Text.insert(param[1].document, cursor, cursorAndPayload[1]); + Editor$AgdaModeVscode.Cursor.set(editor, cursor); + } + var match = await Vscode.commands.executeCommand("agda-mode.case"); + if (match === undefined) { + return await fail("Cannot case split " + self.filepath); + } + if (match.TAG === "Ok") { + return { + TAG: "Ok", + _0: [ + self, + match._0 + ], + [Symbol.for("name")]: "Ok" + }; + } + var match$1 = Connection__Error$AgdaModeVscode.toString(match._0); + return await fail(match$1[0] + "\n" + match$1[1]); } -function refine(cursorAndPayload, param) { - var state = param[1]; +async function refine(cursorAndPayload, param) { var self = param[0]; - return $$Promise.flatMap($$Promise.flatMap($$Promise.flatMap(Vscode.window.showTextDocument(Vscode.Uri.file(self.filepath), undefined), (function (editor) { - if (cursorAndPayload === undefined) { - return $$Promise.resolved(false); - } - var payload = cursorAndPayload[1]; - var cursor = cursorAndPayload[0]; - if (payload !== undefined) { - return $$Promise.tap(Editor$AgdaModeVscode.$$Text.insert(state.document, cursor, payload), (function (param) { - Editor$AgdaModeVscode.Cursor.set(editor, cursor); - })); - } else { - Editor$AgdaModeVscode.Cursor.set(editor, cursor); - return $$Promise.resolved(false); - } - })), (function (param) { - return Vscode.commands.executeCommand("agda-mode.refine"); - })), (function (result) { - if (result !== undefined) { - if (result.TAG === /* Ok */0) { - return $$Promise.resolved({ - TAG: 0, - _0: [ - self, - result._0 - ], - [Symbol.for("name")]: "Ok" - }); - } - var match = Connection__Error$AgdaModeVscode.toString(result._0); - var value = match[0] + "\n" + match[1]; - return runner(function (param) { - Assert$BsMocha.fail(value); - }); - } - var value$1 = "Cannot case refine " + self.filepath; - return runner(function (param) { - Assert$BsMocha.fail(value$1); - }); - })); + var editor = await Vscode.window.showTextDocument(Vscode.Uri.file(self.filepath), undefined); + if (cursorAndPayload !== undefined) { + var payload = cursorAndPayload[1]; + var cursor = cursorAndPayload[0]; + if (payload !== undefined) { + await Editor$AgdaModeVscode.$$Text.insert(param[1].document, cursor, payload); + Editor$AgdaModeVscode.Cursor.set(editor, cursor); + } else { + Editor$AgdaModeVscode.Cursor.set(editor, cursor); + } + } + var match = await Vscode.commands.executeCommand("agda-mode.refine"); + if (match === undefined) { + return await fail("Cannot case refine " + self.filepath); + } + if (match.TAG === "Ok") { + return { + TAG: "Ok", + _0: [ + self, + match._0 + ], + [Symbol.for("name")]: "Ok" + }; + } + var match$1 = Connection__Error$AgdaModeVscode.toString(match._0); + return await fail(match$1[0] + "\n" + match$1[1]); } var Agda = { @@ -620,40 +556,33 @@ var Agda = { refine: refine }; -function readFile$1(filepath, $$var) { - return $$Promise.map(Vscode.window.showTextDocument(Vscode.Uri.file(filepath), undefined), (function (editor) { - $$var.contents = Editor$AgdaModeVscode.$$Text.getAll(editor.document); - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); +async function readFile$1(filepath, $$var) { + var editor = await Vscode.window.showTextDocument(Vscode.Uri.file(filepath), undefined); + $$var.contents = Editor$AgdaModeVscode.$$Text.getAll(editor.document); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; } -function restoreFile(filepath, $$var) { - return $$Promise.map($$Promise.flatMap(Vscode.window.showTextDocument(Vscode.Uri.file(filepath), undefined), (function (editor) { - var $$document = editor.document; - var lineCount = $$document.lineCount; - var replaceRange = new Vscode.Range(new Vscode.Position(0, 0), new Vscode.Position(lineCount, 0)); - return $$Promise.flatMap(Editor$AgdaModeVscode.$$Text.replace($$document, replaceRange, $$var.contents), (function (param) { - return $$document.save(); - })); - })), (function (param) { - return { - TAG: 0, - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - })); +async function restoreFile(filepath, $$var) { + var editor = await Vscode.window.showTextDocument(Vscode.Uri.file(filepath), undefined); + var $$document = editor.document; + var lineCount = $$document.lineCount; + var replaceRange = new Vscode.Range(new Vscode.Position(0, 0), new Vscode.Position(lineCount, 0)); + await Editor$AgdaModeVscode.$$Text.replace($$document, replaceRange, $$var.contents); + await $$document.save(); + return { + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }; } -var Assert; - -exports.Assert = Assert; exports.Exn = Exn; exports.runner = runner; -exports.Path = Path$1; +exports.Path = Path; exports.activationSingleton = activationSingleton; exports.activateExtension = activateExtension; exports.openFile = openFile; @@ -667,4 +596,4 @@ exports.onUnix = onUnix; exports.Agda = Agda; exports.readFile = readFile$1; exports.restoreFile = restoreFile; -/* match Not a pure module */ +/* extensionPath Not a pure module */ diff --git a/lib/js/test/tests/TextEditor/Test__AgdaOffset.bs.js b/lib/js/test/tests/TextEditor/Test__AgdaOffset.bs.js index 28071e61..d5ce2c66 100644 --- a/lib/js/test/tests/TextEditor/Test__AgdaOffset.bs.js +++ b/lib/js/test/tests/TextEditor/Test__AgdaOffset.bs.js @@ -1,39 +1,36 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; +var Curry = require("rescript/lib/js/curry.js"); +var Assert = require("assert"); var Vscode = require("vscode"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); -var Mocha$BsMocha = require("bs-mocha/lib/js/src/Mocha.bs.js"); -var Assert$BsMocha = require("bs-mocha/lib/js/src/Assert.bs.js"); -var Promise$BsMocha = require("bs-mocha/lib/js/src/Promise.bs.js"); var Agda$AgdaModeVscode = require("../../../src/Agda.bs.js"); var Editor$AgdaModeVscode = require("../../../src/Editor.bs.js"); var issue7 = "module Issue7 where\n-- 𝕁\na = {! !}"; -function openEditorWithContent(content) { - return $$Promise.flatMap(Vscode.workspace.openTextDocument({ - content: content, - language: "agda" - }), (function (textDocument) { - return Vscode.window.showTextDocument(textDocument, undefined); - })); +async function openEditorWithContent(content) { + var textDocument = await Vscode.workspace.openTextDocument({ + content: content, + language: "agda" + }); + return await Vscode.window.showTextDocument(textDocument, undefined); } -Mocha$BsMocha.describe("Conversion between Agda Offsets and Editor Offsets")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.describe("Agda.OffsetConverter.characterWidth")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.it("should calculate the width of some grapheme cluster")(undefined, undefined, undefined, (function (param) { +describe("Conversion between Agda Offsets and Editor Offsets", (function () { + describe("Agda.OffsetConverter.characterWidth", (function () { + it("should calculate the width of some grapheme cluster", (function () { var actual = Agda$AgdaModeVscode.OffsetConverter.characterWidth("𝐀"); - Assert$BsMocha.deep_equal(undefined, actual, 1); + Curry._3(Assert.deepEqual, actual, 1, undefined); })); - Mocha$BsMocha.it("should calculate the width of some ordinary ASCII character")(undefined, undefined, undefined, (function (param) { + it("should calculate the width of some ordinary ASCII character", (function () { var actual = Agda$AgdaModeVscode.OffsetConverter.characterWidth("a"); - Assert$BsMocha.deep_equal(undefined, actual, 1); + Curry._3(Assert.deepEqual, actual, 1, undefined); })); })); - Mocha$BsMocha.describe("Agda.OffsetConverter.computeUTF16SurrogatePairIndices")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀𝐀𝐀𝐀\n𝐀𝐀𝐀𝐀"), [ + describe("Agda.OffsetConverter.computeUTF16SurrogatePairIndices", (function () { + it("should work", (function () { + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀𝐀𝐀𝐀\n𝐀𝐀𝐀𝐀"), [ 0, 2, 4, @@ -42,8 +39,8 @@ Mocha$BsMocha.describe("Conversion between Agda Offsets and Editor Offsets")(und 11, 13, 15 - ]); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c𝐃dd𝐄e𝐅𝐆𝐇\na"), [ + ], undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c𝐃dd𝐄e𝐅𝐆𝐇\na"), [ 0, 3, 7, @@ -52,13 +49,13 @@ Mocha$BsMocha.describe("Conversion between Agda Offsets and Editor Offsets")(und 17, 19, 21 - ]); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices(issue7), [23]); + ], undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices(issue7), [23], undefined); })); })); - Mocha$BsMocha.describe("Common.Indices.make")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀𝐀𝐀𝐀\n𝐀𝐀𝐀𝐀")))[0], [ + describe("Common.Indices.make", (function () { + it("should work", (function () { + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.expose(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀𝐀𝐀𝐀\n𝐀𝐀𝐀𝐀")))[0], [ [ 0, 0 @@ -91,8 +88,8 @@ Mocha$BsMocha.describe("Conversion between Agda Offsets and Editor Offsets")(und 8, 8 ] - ]); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c𝐃dd𝐄e𝐅𝐆𝐇\na")))[0], [ + ], undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.expose(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c𝐃dd𝐄e𝐅𝐆𝐇\na")))[0], [ [ 0, 0 @@ -125,125 +122,115 @@ Mocha$BsMocha.describe("Conversion between Agda Offsets and Editor Offsets")(und 14, 14 ] - ]); + ], undefined); })); })); - Mocha$BsMocha.describe("Common.Indices.convert")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { + describe("Common.Indices.convert", (function () { + it("should work", (function () { var a = Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀𝐀𝐀𝐀\n𝐀𝐀𝐀𝐀")); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 0), 0); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 1), 2); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 1); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 2), 4); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 2); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 3), 6); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 3); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 0), 0); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 4), 8); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 5), 9); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 6), 11); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 7), 13); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 8), 15); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 9), 17); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 8); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 0), 0, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.expose(a)[1], 0, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 1), 2, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.expose(a)[1], 1, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 2), 4, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.expose(a)[1], 2, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 3), 6, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.expose(a)[1], 3, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 0), 0, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.expose(a)[1], 0, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 4), 8, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 5), 9, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 6), 11, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 7), 13, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 8), 15, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 9), 17, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.expose(a)[1], 8, undefined); })); - Mocha$BsMocha.it("issue #7")(undefined, undefined, undefined, (function (param) { + it("issue #7", (function () { var a = Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices(issue7)); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 0), 0); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 6), 6); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 14), 14); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 19), 19); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 20), 20); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 24), 25); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 1); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 27), 28); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 28), 29); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 29), 30); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 36), 37); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 1); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 0), 0); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 6), 6); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 7), 7); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 14), 14); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 19), 19); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 20), 20); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 24), 25); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 1); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 0), 0); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 0), 0, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 6), 6, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 14), 14, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 19), 19, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 20), 20, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.expose(a)[1], 0, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 24), 25, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.expose(a)[1], 1, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 27), 28, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 28), 29, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 29), 30, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 36), 37, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.expose(a)[1], 1, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 0), 0, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.expose(a)[1], 0, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 6), 6, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 7), 7, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 14), 14, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 19), 19, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 20), 20, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.expose(a)[1], 0, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 24), 25, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.expose(a)[1], 1, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 0), 0, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.expose(a)[1], 0, undefined); })); })); - Mocha$BsMocha.describe("Editor.toUTF8Offset")(undefined, undefined, undefined, (function (param) { - Promise$BsMocha.it("should do it right")(undefined, undefined, undefined, (function (param) { - return $$Promise.Js.toBsPromise($$Promise.map(openEditorWithContent("𝐀a𝐁bb𝐂c\\na"), (function (textEditor) { - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 0), 0); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 1), 1); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 2), 1); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 3), 2); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 5), 3); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 6), 4); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 7), 5); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 9), 6); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 10), 7); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 11), 8); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 12), 9); - }))); + describe("Editor.toUTF8Offset", (function () { + it("should do it right", (async function () { + var textEditor = await openEditorWithContent("𝐀a𝐁bb𝐂c\\na"); + var f = function (n) { + return Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n); + }; + Curry._3(Assert.equal, f(0), 0, undefined); + Curry._3(Assert.equal, f(1), 1, undefined); + Curry._3(Assert.equal, f(2), 1, undefined); + Curry._3(Assert.equal, f(3), 2, undefined); + Curry._3(Assert.equal, f(5), 3, undefined); + Curry._3(Assert.equal, f(6), 4, undefined); + Curry._3(Assert.equal, f(7), 5, undefined); + Curry._3(Assert.equal, f(9), 6, undefined); + Curry._3(Assert.equal, f(10), 7, undefined); + Curry._3(Assert.equal, f(11), 8, undefined); + return Curry._3(Assert.equal, f(12), 9, undefined); })); - Promise$BsMocha.it("should be a left inverse of Editor.fromUTF8Offset")(undefined, undefined, undefined, (function (param) { - return $$Promise.Js.toBsPromise($$Promise.map(openEditorWithContent("𝐀a𝐁bb𝐂c\\na"), (function (textEditor) { - var g = function (n) { - return Agda$AgdaModeVscode.Indices.convert(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c\\na")), n); - }; - var n = g(0); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n), 0); - var n$1 = g(1); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$1), 1); - var n$2 = g(2); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$2), 2); - var n$3 = g(3); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$3), 3); - var n$4 = g(4); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$4), 4); - var n$5 = g(5); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$5), 5); - var n$6 = g(6); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$6), 6); - var n$7 = g(7); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$7), 7); - var n$8 = g(8); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$8), 8); - var n$9 = g(9); - Assert$BsMocha.equal(undefined, Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n$9), 9); - }))); + it("should be a left inverse of Editor.fromUTF8Offset", (async function () { + var textEditor = await openEditorWithContent("𝐀a𝐁bb𝐂c\\na"); + var f = function (n) { + return Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n); + }; + var g = function (n) { + return Agda$AgdaModeVscode.Indices.convert(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c\\na")), n); + }; + Curry._3(Assert.equal, f(g(0)), 0, undefined); + Curry._3(Assert.equal, f(g(1)), 1, undefined); + Curry._3(Assert.equal, f(g(2)), 2, undefined); + Curry._3(Assert.equal, f(g(3)), 3, undefined); + Curry._3(Assert.equal, f(g(4)), 4, undefined); + Curry._3(Assert.equal, f(g(5)), 5, undefined); + Curry._3(Assert.equal, f(g(6)), 6, undefined); + Curry._3(Assert.equal, f(g(7)), 7, undefined); + Curry._3(Assert.equal, f(g(8)), 8, undefined); + return Curry._3(Assert.equal, f(g(9)), 9, undefined); })); - Promise$BsMocha.it("should be a right inverse of Editor.fromUTF8Offset ()")(undefined, undefined, undefined, (function (param) { - return $$Promise.Js.toBsPromise($$Promise.map(openEditorWithContent("𝐀a𝐁bb𝐂c\\na"), (function (textEditor) { - var f = function (n) { - return Agda$AgdaModeVscode.Indices.convert(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c\\na")), n); - }; - Assert$BsMocha.equal(undefined, f(Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 0)), 0); - Assert$BsMocha.equal(undefined, f(Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 2)), 2); - Assert$BsMocha.equal(undefined, f(Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 3)), 3); - Assert$BsMocha.equal(undefined, f(Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 5)), 5); - Assert$BsMocha.equal(undefined, f(Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 6)), 6); - Assert$BsMocha.equal(undefined, f(Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 7)), 7); - Assert$BsMocha.equal(undefined, f(Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, 9)), 9); - }))); + it("should be a right inverse of Editor.fromUTF8Offset ()", (async function () { + var textEditor = await openEditorWithContent("𝐀a𝐁bb𝐂c\\na"); + var f = function (n) { + return Agda$AgdaModeVscode.Indices.convert(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c\\na")), n); + }; + var g = function (n) { + return Editor$AgdaModeVscode.toUTF8Offset(textEditor.document, n); + }; + Curry._3(Assert.equal, f(g(0)), 0, undefined); + Curry._3(Assert.equal, f(g(2)), 2, undefined); + Curry._3(Assert.equal, f(g(3)), 3, undefined); + Curry._3(Assert.equal, f(g(5)), 5, undefined); + Curry._3(Assert.equal, f(g(6)), 6, undefined); + Curry._3(Assert.equal, f(g(7)), 7, undefined); + return Curry._3(Assert.equal, f(g(9)), 9, undefined); })); })); })); -var Assert; - -var P; - -exports.Assert = Assert; -exports.P = P; exports.issue7 = issue7; exports.openEditorWithContent = openEditorWithContent; /* Not a pure module */ diff --git a/lib/js/test/tests/TextEditor/Test__LineEnding.bs.js b/lib/js/test/tests/TextEditor/Test__LineEnding.bs.js index 49a07c2c..1bd0a664 100644 --- a/lib/js/test/tests/TextEditor/Test__LineEnding.bs.js +++ b/lib/js/test/tests/TextEditor/Test__LineEnding.bs.js @@ -1,34 +1,32 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; +var Curry = require("rescript/lib/js/curry.js"); +var Assert = require("assert"); var Vscode = require("vscode"); -var $$Promise = require("reason-promise/lib/js/src/js/promise.bs.js"); -var Mocha$BsMocha = require("bs-mocha/lib/js/src/Mocha.bs.js"); -var Assert$BsMocha = require("bs-mocha/lib/js/src/Assert.bs.js"); var Agda$AgdaModeVscode = require("../../../src/Agda.bs.js"); -function openEditorWithContent(content) { - return $$Promise.flatMap(Vscode.workspace.openTextDocument({ - content: content, - language: "agda" - }), (function (textDocument) { - return Vscode.window.showTextDocument(textDocument, undefined); - })); +async function openEditorWithContent(content) { + var textDocument = await Vscode.workspace.openTextDocument({ + content: content, + language: "agda" + }); + return await Vscode.window.showTextDocument(textDocument, undefined); } -Mocha$BsMocha.describe("Conversion of offsets between LF and CRLF line endings")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.describe("Editor.computeCRLFIndices")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.OffsetConverter.computeCRLFIndices("1234\r\n78"), [4]); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.OffsetConverter.computeCRLFIndices("12\r\n56\r\n90"), [ +describe("Conversion of offsets between LF and CRLF line endings", (function () { + describe("Editor.computeCRLFIndices", (function () { + it("should work", (function () { + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.OffsetConverter.computeCRLFIndices("1234\r\n78"), [4], undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.OffsetConverter.computeCRLFIndices("12\r\n56\r\n90"), [ 2, 6 - ]); + ], undefined); })); })); - Mocha$BsMocha.describe("Editor.Indices.make")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeCRLFIndices("12\r\n56\r\n90")))[0], [ + describe("Editor.Indices.make", (function () { + it("should work", (function () { + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.expose(Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeCRLFIndices("12\r\n56\r\n90")))[0], [ [ 0, 2 @@ -37,37 +35,31 @@ Mocha$BsMocha.describe("Conversion of offsets between LF and CRLF line endings") 3, 5 ] - ]); + ], undefined); })); })); - Mocha$BsMocha.describe("Editor.Indices.convert")(undefined, undefined, undefined, (function (param) { - Mocha$BsMocha.it("should work")(undefined, undefined, undefined, (function (param) { + describe("Editor.Indices.convert", (function () { + it("should work", (function () { var a = Agda$AgdaModeVscode.Indices.make(Agda$AgdaModeVscode.OffsetConverter.computeCRLFIndices("12\r\n56\r\n90")); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 0), 0); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 1), 1); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 2), 2); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 0); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 3), 4); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 1); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 4), 5); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 1); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 5), 6); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 1); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 6), 8); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 2); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.convert(a, 7), 9); - Assert$BsMocha.deep_equal(undefined, Agda$AgdaModeVscode.Indices.expose(a)[1], 2); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 0), 0, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.expose(a)[1], 0, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 1), 1, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.expose(a)[1], 0, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 2), 2, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.expose(a)[1], 0, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 3), 4, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.expose(a)[1], 1, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 4), 5, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.expose(a)[1], 1, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 5), 6, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.expose(a)[1], 1, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 6), 8, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.expose(a)[1], 2, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.convert(a, 7), 9, undefined); + Curry._3(Assert.deepEqual, Agda$AgdaModeVscode.Indices.expose(a)[1], 2, undefined); })); })); })); -var Assert; - -var P; - -exports.Assert = Assert; -exports.P = P; exports.openEditorWithContent = openEditorWithContent; /* Not a pure module */ diff --git a/package-lock.json b/package-lock.json index ad188b78..b4874685 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,31 +9,31 @@ "version": "0.4.7", "dependencies": { "@datastructures-js/binary-search-tree": "^4.3.0", - "@glennsl/rescript-json-combinators": "^1.3.0", - "@rescript/react": "^0.10.3", + "@glennsl/rescript-json-combinators": "^1.4.0", + "@rescript/core": "^1.3.0", + "@rescript/react": "^0.13.0", "compare-versions": "^3.5.1", "eventemitter3": ">=4.0.0", "getos": "^3.2.1", - "language-server-mule": "github:banacorn/language-server-mule#v0.4.2", - "react": "^16.9.0", - "react-dom": "^16.9.0", - "reason-promise": ">=1.1.0", - "rescript": "^10.1.4", - "rescript-nodejs": "^15.0.0", - "rescript-vscode": "github:banacorn/rescript-vscode#v0.0.17", + "language-server-mule": "github:banacorn/language-server-mule", + "react": "^18.0.0", + "react-dom": "^18.0.0", + "rescript": "^11.1.4", + "rescript-nodejs": "^16.1.0", + "rescript-vscode": "github:banacorn/rescript-vscode", "rescript-webapi": ">=0.2.0", "untildify": "^4.0.0", "vscode-codicons": "^0.0.7" }, "devDependencies": { "@vscode/test-electron": "^2.3.8", - "bs-mocha": "^1.0.0", "copy-webpack-plugin": "^6.0.3", "glob": "^7.1.6", "less": "^4.1.1", "less-loader": "^7.0.2", "less-watch-compiler": "^1.14.6", - "mocha": "^10.2.0", + "mocha": "^10.4.0", + "rescript-mocha": "github:DZakh-forks/rescript-mocha#uncurried", "webpack": "^5.76.0", "webpack-cli": "^4.2.0" }, @@ -43,10 +43,14 @@ }, "node_modules/@datastructures-js/binary-search-tree": { "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@datastructures-js/binary-search-tree/-/binary-search-tree-4.3.2.tgz", + "integrity": "sha512-fZV3GoZAPxfgGTky7Q+5oiMUtLhQoHxSlJt3DmUPbl+1pMpuopOSG/MymdcruWOBQU90kSzo0lN+3gmSaEYCTw==", "license": "MIT" }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true, "license": "MIT", "engines": { @@ -55,31 +59,39 @@ }, "node_modules/@gar/promisify": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", "dev": true, "license": "MIT" }, "node_modules/@glennsl/rescript-json-combinators": { - "version": "1.3.0", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@glennsl/rescript-json-combinators/-/rescript-json-combinators-1.4.0.tgz", + "integrity": "sha512-tIhAJoAqyfF3Mbd66Koipl6WZxLKJTJFHTx99jDG5+YAv/Hr6XrXYryCXs1Qi8BWUwx5WQcgKay3lUzElUYC7Q==", "license": "(LGPL-3.0 OR MPL-2.0)", "engines": { "node": "*" } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", "engines": { @@ -87,7 +99,9 @@ } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "license": "MIT", "engines": { @@ -95,21 +109,27 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.5", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "license": "MIT", "dependencies": { @@ -119,6 +139,8 @@ }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "license": "MIT", "dependencies": { @@ -131,6 +153,8 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "license": "MIT", "engines": { @@ -139,6 +163,8 @@ }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "license": "MIT", "dependencies": { @@ -151,6 +177,8 @@ }, "node_modules/@npmcli/fs": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", "dev": true, "license": "ISC", "dependencies": { @@ -160,6 +188,9 @@ }, "node_modules/@npmcli/move-file": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "deprecated": "This functionality has been moved to @npmcli/fs", "dev": true, "license": "MIT", "dependencies": { @@ -170,74 +201,70 @@ "node": ">=10" } }, - "node_modules/@rescript/react": { - "version": "0.10.3", + "node_modules/@rescript/core": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@rescript/core/-/core-1.6.1.tgz", + "integrity": "sha512-vyb5k90ck+65Fgui+5vCja/mUfzKaK3kOPT4Z6aAJdHLH1eljEi1zKhXroCiCtpNLSWp8k4ulh1bdB5WS0hvqA==", "license": "MIT", "peerDependencies": { - "react": ">=16.8.1", - "react-dom": ">=16.8.1" - } - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/@types/eslint": { - "version": "8.44.8", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" + "rescript": ">=11.1.0" } }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "dev": true, + "node_modules/@rescript/react": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@rescript/react/-/react-0.13.0.tgz", + "integrity": "sha512-YSIWIyMlyF9ZaP6Q3hScl1h3wRbdIP4+Cb7PlDt7Y1PG8M8VWYhLoIgLb78mbBHcwFbZu0d5zAt1LSX5ilOiWQ==", "license": "MIT", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" + "peerDependencies": { + "react": ">=18.0.0", + "react-dom": ">=18.0.0" } }, "node_modules/@types/estree": { - "version": "1.0.5", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true, "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true, "license": "MIT" }, "node_modules/@types/node": { - "version": "20.10.4", + "version": "22.7.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.7.tgz", + "integrity": "sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.19.2" } }, "node_modules/@vscode/test-electron": { - "version": "2.3.8", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.4.1.tgz", + "integrity": "sha512-Gc6EdaLANdktQ1t+zozoBVRynfIsMKMc94Svu1QreOBC8y76x4tvaK32TljrLi1LI2+PK58sDVbL7ALdqf3VRQ==", "dev": true, "license": "MIT", "dependencies": { - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", "jszip": "^3.10.1", - "semver": "^7.5.2" + "ora": "^7.0.1", + "semver": "^7.6.2" }, "engines": { "node": ">=16" } }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.6", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "dev": true, "license": "MIT", "dependencies": { @@ -247,21 +274,29 @@ }, "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.6", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, "license": "MIT", "dependencies": { @@ -272,22 +307,28 @@ }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" + "@webassemblyjs/wasm-gen": "1.12.1" } }, "node_modules/@webassemblyjs/ieee754": { "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, "license": "MIT", "dependencies": { @@ -296,6 +337,8 @@ }, "node_modules/@webassemblyjs/leb128": { "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -304,30 +347,36 @@ }, "node_modules/@webassemblyjs/utf8": { "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.6", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.6", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", "@webassemblyjs/leb128": "1.11.6", @@ -335,22 +384,26 @@ } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.6", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-api-error": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", @@ -359,16 +412,20 @@ } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, "node_modules/@webpack-cli/configtest": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", "dev": true, "license": "MIT", "peerDependencies": { @@ -378,6 +435,8 @@ }, "node_modules/@webpack-cli/info": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", "dev": true, "license": "MIT", "dependencies": { @@ -389,6 +448,8 @@ }, "node_modules/@webpack-cli/serve": { "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", "dev": true, "license": "MIT", "peerDependencies": { @@ -402,16 +463,22 @@ }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", "dev": true, "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true, "license": "Apache-2.0" }, "node_modules/acorn": { - "version": "8.11.2", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", + "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", "dev": true, "license": "MIT", "bin": { @@ -421,8 +488,10 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -430,18 +499,22 @@ } }, "node_modules/agent-base": { - "version": "6.0.2", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, "license": "MIT", "dependencies": { - "debug": "4" + "debug": "^4.3.4" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, "node_modules/aggregate-error": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "license": "MIT", "dependencies": { @@ -454,6 +527,8 @@ }, "node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", "dependencies": { @@ -469,6 +544,8 @@ }, "node_modules/ajv-keywords": { "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -477,6 +554,8 @@ }, "node_modules/amdefine": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", "dev": true, "license": "BSD-3-Clause OR MIT", "engines": { @@ -484,7 +563,9 @@ } }, "node_modules/ansi-colors": { - "version": "4.1.1", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, "license": "MIT", "engines": { @@ -492,15 +573,22 @@ } }, "node_modules/ansi-regex": { - "version": "5.0.1", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -515,6 +603,8 @@ }, "node_modules/anymatch": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "license": "ISC", "dependencies": { @@ -527,88 +617,58 @@ }, "node_modules/argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, "license": "Python-2.0" }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/array-union": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/array.prototype.reduce": { - "version": "1.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/async": { - "version": "3.2.5", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "license": "MIT" }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/balanced-match": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT" }, "node_modules/big-integer": { "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", "license": "Unlicense", "engines": { "node": ">=0.6" @@ -616,6 +676,8 @@ }, "node_modules/big.js": { "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, "license": "MIT", "engines": { @@ -624,26 +686,67 @@ }, "node_modules/binary": { "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", "license": "MIT", "dependencies": { "buffers": "~0.1.1", "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" } }, "node_modules/binary-extensions": { - "version": "2.2.0", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, "license": "MIT", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/bluebird": { "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", "license": "MIT" }, "node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -651,11 +754,13 @@ } }, "node_modules/braces": { - "version": "3.0.2", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -663,11 +768,15 @@ }, "node_modules/browser-stdout": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true, "license": "ISC" }, "node_modules/browserslist": { - "version": "4.22.2", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", + "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", "dev": true, "funding": [ { @@ -685,10 +794,10 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001565", - "electron-to-chromium": "^1.4.601", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "caniuse-lite": "^1.0.30001663", + "electron-to-chromium": "^1.5.28", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -697,633 +806,306 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/bs-mocha": { - "version": "1.0.0", + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT", "dependencies": { - "mocha": "^6.2.0" + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/bs-mocha/node_modules/ansi-colors": { - "version": "3.2.3", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true, + "license": "MIT" + }, + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.10" } }, - "node_modules/bs-mocha/node_modules/ansi-regex": { - "version": "4.1.1", - "dev": true, - "license": "MIT", + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", "engines": { - "node": ">=6" + "node": ">=0.2.0" } }, - "node_modules/bs-mocha/node_modules/ansi-styles": { - "version": "3.2.1", + "node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "color-convert": "^1.9.0" + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" }, "engines": { - "node": ">=4" - } - }, - "node_modules/bs-mocha/node_modules/argparse": { - "version": "1.0.10", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" + "node": ">= 10" } }, - "node_modules/bs-mocha/node_modules/camelcase": { - "version": "5.3.1", + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bs-mocha/node_modules/chalk": { - "version": "2.4.2", + "node_modules/caniuse-lite": { + "version": "1.0.30001669", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz", + "integrity": "sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==", "dev": true, - "license": "MIT", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "license": "MIT/X11", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "traverse": ">=0.3.0 <0.4" }, "engines": { - "node": ">=4" + "node": "*" } }, - "node_modules/bs-mocha/node_modules/chalk/node_modules/supports-color": { - "version": "5.5.0", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/bs-mocha/node_modules/cliui": { - "version": "5.0.0", + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/bs-mocha/node_modules/color-convert": { - "version": "1.9.3", + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/bs-mocha/node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/bs-mocha/node_modules/debug": { - "version": "3.2.6", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/bs-mocha/node_modules/decamelize": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/bs-mocha/node_modules/diff": { - "version": "3.5.0", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/bs-mocha/node_modules/emoji-regex": { - "version": "7.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/bs-mocha/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/bs-mocha/node_modules/find-up": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/bs-mocha/node_modules/flat": { - "version": "4.1.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "is-buffer": "~2.0.3" - }, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/bs-mocha/node_modules/glob": { - "version": "7.1.3", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/bs-mocha/node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/bs-mocha/node_modules/is-fullwidth-code-point": { + "node_modules/chownr": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">=4" - } - }, - "node_modules/bs-mocha/node_modules/js-yaml": { - "version": "3.13.1", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "node": ">=10" } }, - "node_modules/bs-mocha/node_modules/locate-path": { - "version": "3.0.0", + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, "engines": { - "node": ">=6" + "node": ">=6.0" } }, - "node_modules/bs-mocha/node_modules/log-symbols": { + "node_modules/clean-stack": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, "license": "MIT", - "dependencies": { - "chalk": "^2.0.1" - }, "engines": { - "node": ">=4" - } - }, - "node_modules/bs-mocha/node_modules/minimatch": { - "version": "3.0.4", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/bs-mocha/node_modules/mkdirp": { - "version": "0.5.4", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/bs-mocha/node_modules/mocha": { - "version": "6.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "2.2.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.4", - "ms": "2.1.1", - "node-environment-flags": "1.0.5", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 6.0.0" + "node": ">=6" } }, - "node_modules/bs-mocha/node_modules/ms": { - "version": "2.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/bs-mocha/node_modules/p-limit": { - "version": "2.3.0", + "node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", "dev": true, "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "restore-cursor": "^4.0.0" }, "engines": { - "node": ">=6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bs-mocha/node_modules/p-locate": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/bs-mocha/node_modules/path-exists": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/bs-mocha/node_modules/string-width": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/bs-mocha/node_modules/strip-ansi": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/bs-mocha/node_modules/strip-json-comments": { - "version": "2.0.1", + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/bs-mocha/node_modules/supports-color": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, "engines": { "node": ">=6" - } - }, - "node_modules/bs-mocha/node_modules/which": { - "version": "1.3.1", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/bs-mocha/node_modules/wrap-ansi": { - "version": "5.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/bs-mocha/node_modules/y18n": { - "version": "4.0.3", - "dev": true, - "license": "ISC" - }, - "node_modules/bs-mocha/node_modules/yargs": { - "version": "13.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bs-mocha/node_modules/yargs-parser": { - "version": "13.1.2", + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "license": "ISC", "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/bs-mocha/node_modules/yargs-unparser": { - "version": "1.6.0", + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", - "dependencies": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" - }, "engines": { - "node": ">=6" - } - }, - "node_modules/bs-platform": { - "version": "9.0.2", - "hasInstallScript": true, - "license": "SEE LICENSE IN LICENSE", - "bin": { - "bsb": "bsb", - "bsc": "bsc", - "bsrefmt": "bsrefmt", - "bstracing": "lib/bstracing" + "node": ">=8" } }, - "node_modules/buffer-from": { - "version": "1.1.2", + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, "license": "MIT" }, - "node_modules/buffer-indexof-polyfill": { - "version": "1.0.2", - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/buffers": { - "version": "0.1.1", - "engines": { - "node": ">=0.2.0" - } - }, - "node_modules/cacache": { - "version": "15.3.0", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/call-bind": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001568", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chainsaw": { - "version": "0.1.0", - "license": "MIT/X11", - "dependencies": { - "traverse": ">=0.3.0 <0.4" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/chokidar": { - "version": "3.5.3", + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" + "ansi-regex": "^5.0.1" }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chownr": { - "version": "2.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "dev": true, - "license": "MIT", "engines": { - "node": ">=6" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "node": ">=8" } }, "node_modules/clone-deep": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1337,6 +1119,8 @@ }, "node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1348,16 +1132,22 @@ }, "node_modules/color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, "node_modules/colorette": { "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true, "license": "MIT" }, "node_modules/commander": { "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, "license": "MIT", "engines": { @@ -1366,19 +1156,27 @@ }, "node_modules/commondir": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true, "license": "MIT" }, "node_modules/compare-versions": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "license": "MIT" }, "node_modules/copy-anything": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", "dev": true, "license": "MIT", "dependencies": { @@ -1390,6 +1188,8 @@ }, "node_modules/copy-webpack-plugin": { "version": "6.4.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.4.1.tgz", + "integrity": "sha512-MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA==", "dev": true, "license": "MIT", "dependencies": { @@ -1418,10 +1218,14 @@ }, "node_modules/core-util-is": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "license": "MIT" }, "node_modules/cross-spawn": { "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "license": "MIT", "dependencies": { @@ -1434,11 +1238,13 @@ } }, "node_modules/debug": { - "version": "4.3.4", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -1451,6 +1257,8 @@ }, "node_modules/decamelize": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, "license": "MIT", "engines": { @@ -1460,37 +1268,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/define-data-property": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/diff": { - "version": "5.0.0", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -1499,6 +1280,8 @@ }, "node_modules/dir-glob": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "license": "MIT", "dependencies": { @@ -1510,27 +1293,44 @@ }, "node_modules/dom-walk": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", "dev": true }, "node_modules/duplexer2": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", "license": "BSD-3-Clause", "dependencies": { "readable-stream": "^2.0.2" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, "node_modules/electron-to-chromium": { - "version": "1.4.609", + "version": "1.5.41", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.41.tgz", + "integrity": "sha512-dfdv/2xNjX0P8Vzme4cfzHqnPm5xsZXwsolTYr0eyW18IUmNyG08vL+fttvinTfhKfIKdRoqkDIC9e9iWQCNYQ==", "dev": true, "license": "ISC" }, "node_modules/emoji-regex": { - "version": "8.0.0", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", "dev": true, "license": "MIT" }, "node_modules/emojis-list": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, "license": "MIT", "engines": { @@ -1538,7 +1338,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.15.0", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dev": true, "license": "MIT", "dependencies": { @@ -1550,7 +1352,9 @@ } }, "node_modules/envinfo": { - "version": "7.11.0", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", + "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", "dev": true, "license": "MIT", "bin": { @@ -1562,6 +1366,8 @@ }, "node_modules/errno": { "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, "license": "MIT", "optional": true, @@ -1572,116 +1378,17 @@ "errno": "cli.js" } }, - "node_modules/es-abstract": { - "version": "1.22.3", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.5", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.2", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-abstract/node_modules/object.assign": { - "version": "4.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, "node_modules/es-module-lexer": { - "version": "1.4.1", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", "dev": true, "license": "MIT" }, - "node_modules/es-set-tostringtag": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/escalade": { - "version": "3.1.1", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "license": "MIT", "engines": { @@ -1690,6 +1397,8 @@ }, "node_modules/escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "license": "MIT", "engines": { @@ -1701,6 +1410,8 @@ }, "node_modules/eslint-scope": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -1711,20 +1422,10 @@ "node": ">=8.0.0" } }, - "node_modules/esprima": { - "version": "4.0.1", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -1736,6 +1437,8 @@ }, "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -1744,6 +1447,8 @@ }, "node_modules/estraverse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -1752,10 +1457,14 @@ }, "node_modules/eventemitter3": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "license": "MIT" }, "node_modules/events": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, "license": "MIT", "engines": { @@ -1764,16 +1473,22 @@ }, "node_modules/extend": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true, "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true, "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "license": "MIT", "dependencies": { @@ -1789,11 +1504,15 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, "license": "MIT" }, "node_modules/fastest-levenshtein": { "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true, "license": "MIT", "engines": { @@ -1801,7 +1520,9 @@ } }, "node_modules/fastq": { - "version": "1.15.0", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "license": "ISC", "dependencies": { @@ -1809,7 +1530,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "license": "MIT", "dependencies": { @@ -1821,6 +1544,8 @@ }, "node_modules/find-cache-dir": { "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, "license": "MIT", "dependencies": { @@ -1837,6 +1562,8 @@ }, "node_modules/find-up": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", "dependencies": { @@ -1852,22 +1579,18 @@ }, "node_modules/flat": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } }, - "node_modules/for-each": { - "version": "0.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.3" - } - }, "node_modules/fs-minipass": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, "license": "ISC", "dependencies": { @@ -1879,11 +1602,16 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, + "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ @@ -1895,6 +1623,9 @@ }, "node_modules/fstream": { "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "deprecated": "This package is no longer supported.", "license": "ISC", "dependencies": { "graceful-fs": "^4.1.2", @@ -1908,6 +1639,8 @@ }, "node_modules/fstream/node_modules/mkdirp": { "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "license": "MIT", "dependencies": { "minimist": "^1.2.6" @@ -1918,41 +1651,21 @@ }, "node_modules/fstream/node_modules/rimraf": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "license": "ISC", "dependencies": { "glob": "^7.1.3" }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "rimraf": "bin.js" } }, - "node_modules/functions-have-names": { - "version": "1.2.3", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, "license": "MIT", "funding": { @@ -1961,43 +1674,18 @@ }, "node_modules/get-caller-file": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/get-intrinsic": { - "version": "1.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/getos": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", "license": "MIT", "dependencies": { "async": "^3.2.0" @@ -2005,6 +1693,9 @@ }, "node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -2023,6 +1714,8 @@ }, "node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "license": "ISC", "dependencies": { @@ -2034,11 +1727,15 @@ }, "node_modules/glob-to-regexp": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true, "license": "BSD-2-Clause" }, "node_modules/global": { "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", "dev": true, "license": "MIT", "dependencies": { @@ -2046,22 +1743,10 @@ "process": "^0.11.10" } }, - "node_modules/globalthis": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/globby": { "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "license": "MIT", "dependencies": { @@ -2079,94 +1764,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gopd": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "license": "ISC" }, - "node_modules/growl": { - "version": "1.10.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.x" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/hasown": { - "version": "2.0.0", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2178,6 +1795,8 @@ }, "node_modules/he": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, "license": "MIT", "bin": { @@ -2185,32 +1804,37 @@ } }, "node_modules/http-proxy-agent": { - "version": "4.0.1", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "license": "MIT", "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/https-proxy-agent": { - "version": "5.0.1", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "6", + "agent-base": "^7.0.2", "debug": "4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/iconv-lite": { "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "license": "MIT", "optional": true, @@ -2221,8 +1845,31 @@ "node": ">=0.10.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/ignore": { - "version": "5.3.0", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", "engines": { @@ -2231,6 +1878,8 @@ }, "node_modules/image-size": { "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", "dev": true, "license": "MIT", "optional": true, @@ -2243,11 +1892,15 @@ }, "node_modules/immediate": { "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", "dev": true, "license": "MIT" }, "node_modules/import-local": { - "version": "3.1.0", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "license": "MIT", "dependencies": { @@ -2266,6 +1919,8 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", "engines": { @@ -2274,6 +1929,8 @@ }, "node_modules/indent-string": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, "license": "MIT", "engines": { @@ -2282,11 +1939,16 @@ }, "node_modules/infer-owner": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", "dev": true, "license": "ISC" }, "node_modules/inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -2295,55 +1957,24 @@ }, "node_modules/inherits": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, - "node_modules/internal-slot": { - "version": "1.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.2", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/interpret": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.10" } }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-binary-path": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "license": "MIT", "dependencies": { @@ -2353,71 +1984,14 @@ "node": ">=8" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "2.0.5", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-core-module": { - "version": "2.13.1", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -2428,153 +2002,87 @@ }, "node_modules/is-extglob": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "is-extglob": "^2.1.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/is-regex": { - "version": "1.1.4", + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-string": { - "version": "1.0.7", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.12.0" } }, - "node_modules/is-symbol": { - "version": "1.0.4", + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.2" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-typed-array": { - "version": "1.1.12", + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.11" + "isobject": "^3.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, "node_modules/is-unicode-supported": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, "license": "MIT", "engines": { @@ -2584,33 +2092,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-weakref": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-what": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", "dev": true, "license": "MIT" }, "node_modules/isarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, "license": "ISC" }, "node_modules/isobject": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, "license": "MIT", "engines": { @@ -2619,6 +2124,8 @@ }, "node_modules/jest-worker": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "license": "MIT", "dependencies": { @@ -2632,10 +2139,14 @@ }, "node_modules/js-tokens": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "license": "MIT", "dependencies": { @@ -2647,16 +2158,22 @@ }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true, "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, "node_modules/json5": { "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "license": "MIT", "bin": { @@ -2668,6 +2185,8 @@ }, "node_modules/jszip": { "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", "dev": true, "license": "(MIT OR GPL-3.0-or-later)", "dependencies": { @@ -2679,6 +2198,8 @@ }, "node_modules/kind-of": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, "license": "MIT", "engines": { @@ -2687,6 +2208,8 @@ }, "node_modules/klona": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", "dev": true, "license": "MIT", "engines": { @@ -2694,23 +2217,27 @@ } }, "node_modules/language-server-mule": { - "version": "0.4.2", - "resolved": "git+ssh://git@github.com/banacorn/language-server-mule.git#aa3b80718226359bbfb10b199a6aa4fcaa632582", + "version": "0.5.0", + "resolved": "git+ssh://git@github.com/banacorn/language-server-mule.git#2a0880440b1297ce7e07f4712380ec84cb19dcf4", "license": "MIT", "dependencies": { - "@glennsl/rescript-json-combinators": "^1.3.0", + "@glennsl/rescript-json-combinators": "^1.4.0", "eventemitter3": "^4.0.7", - "rescript-nodejs": "^15.0.0", + "rescript-nodejs": "^16.1.0", "unzipper": "^0.10.11", "vscode-languageclient": "^8.0.0" } }, "node_modules/language-server-mule/node_modules/eventemitter3": { "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "license": "MIT" }, "node_modules/less": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", + "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2736,6 +2263,8 @@ }, "node_modules/less-loader": { "version": "7.3.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-7.3.0.tgz", + "integrity": "sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==", "dev": true, "license": "MIT", "dependencies": { @@ -2757,6 +2286,8 @@ }, "node_modules/less-watch-compiler": { "version": "1.16.3", + "resolved": "https://registry.npmjs.org/less-watch-compiler/-/less-watch-compiler-1.16.3.tgz", + "integrity": "sha512-cxGUt8YdPpPPB72w1dfzPVXML5JYgfExXbFvDfG5XBU9qvj6uVjwTY2qOgwvf09Au5p2RvmWVcNps/cMTojJNQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2773,6 +2304,8 @@ }, "node_modules/less/node_modules/make-dir": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "license": "MIT", "optional": true, @@ -2786,6 +2319,8 @@ }, "node_modules/less/node_modules/semver": { "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "license": "ISC", "optional": true, @@ -2795,6 +2330,8 @@ }, "node_modules/lie": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2803,10 +2340,14 @@ }, "node_modules/listenercount": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==", "license": "ISC" }, "node_modules/loader-runner": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, "license": "MIT", "engines": { @@ -2815,6 +2356,8 @@ }, "node_modules/loader-utils": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "license": "MIT", "dependencies": { @@ -2828,6 +2371,8 @@ }, "node_modules/locate-path": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "license": "MIT", "dependencies": { @@ -2840,13 +2385,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash": { - "version": "4.17.21", - "dev": true, - "license": "MIT" - }, "node_modules/log-symbols": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "license": "MIT", "dependencies": { @@ -2862,6 +2404,8 @@ }, "node_modules/loose-envify": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" @@ -2872,6 +2416,9 @@ }, "node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -2882,6 +2429,8 @@ }, "node_modules/make-dir": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "license": "MIT", "dependencies": { @@ -2896,6 +2445,8 @@ }, "node_modules/make-dir/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", "bin": { @@ -2904,11 +2455,15 @@ }, "node_modules/merge-stream": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true, "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, "license": "MIT", "engines": { @@ -2916,11 +2471,13 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -2929,6 +2486,8 @@ }, "node_modules/mime": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, "license": "MIT", "optional": true, @@ -2941,6 +2500,8 @@ }, "node_modules/mime-db": { "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "license": "MIT", "engines": { @@ -2949,6 +2510,8 @@ }, "node_modules/mime-types": { "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "license": "MIT", "dependencies": { @@ -2958,8 +2521,20 @@ "node": ">= 0.6" } }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/min-document": { "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", "dev": true, "dependencies": { "dom-walk": "^0.1.0" @@ -2967,6 +2542,8 @@ }, "node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -2977,6 +2554,8 @@ }, "node_modules/minimist": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2984,6 +2563,8 @@ }, "node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "license": "ISC", "dependencies": { @@ -2995,6 +2576,8 @@ }, "node_modules/minipass-collect": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, "license": "ISC", "dependencies": { @@ -3006,6 +2589,8 @@ }, "node_modules/minipass-flush": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, "license": "ISC", "dependencies": { @@ -3017,6 +2602,8 @@ }, "node_modules/minipass-pipeline": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, "license": "ISC", "dependencies": { @@ -3028,6 +2615,8 @@ }, "node_modules/minizlib": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, "license": "MIT", "dependencies": { @@ -3040,6 +2629,8 @@ }, "node_modules/mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, "license": "MIT", "bin": { @@ -3050,31 +2641,32 @@ } }, "node_modules/mocha": { - "version": "10.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.7.3.tgz", + "integrity": "sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^8.1.0", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" }, "bin": { "_mocha": "bin/_mocha", @@ -3082,44 +2674,43 @@ }, "engines": { "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" } }, "node_modules/mocha/node_modules/glob": { - "version": "7.2.0", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mocha/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "license": "ISC", "dependencies": { @@ -3129,21 +2720,10 @@ "node": ">=10" } }, - "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "dev": true, - "license": "MIT" - }, "node_modules/mocha/node_modules/serialize-javascript": { - "version": "6.0.0", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -3151,23 +2731,16 @@ } }, "node_modules/ms": { - "version": "2.1.2", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, - "node_modules/nanoid": { - "version": "3.3.3", - "dev": true, - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/needle": { - "version": "3.3.0", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", "dev": true, "license": "MIT", "optional": true, @@ -3184,103 +2757,124 @@ }, "node_modules/neo-async": { "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true, "license": "MIT" }, - "node_modules/node-environment-flags": { - "version": "1.0.5", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - } - }, - "node_modules/node-environment-flags/node_modules/semver": { - "version": "5.7.2", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, "node_modules/node-releases": { - "version": "2.0.14", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", "dev": true, "license": "MIT" }, "node_modules/normalize-path": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/object-assign": { - "version": "4.1.1", + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object-inspect": { - "version": "1.13.1", + "node_modules/ora": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-7.0.1.tgz", + "integrity": "sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==", "dev": true, "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.9.0", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^1.3.0", + "log-symbols": "^5.1.0", + "stdin-discarder": "^0.1.0", + "string-width": "^6.1.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=16" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object-keys": { - "version": "1.1.1", + "node_modules/ora/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/object.assign": { - "version": "4.1.0", + "node_modules/ora/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", "dev": true, "license": "MIT", - "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - }, "engines": { - "node": ">= 0.4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.7", + "node_modules/ora/node_modules/log-symbols": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", + "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", "dev": true, "license": "MIT", "dependencies": { - "array.prototype.reduce": "^1.0.6", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "safe-array-concat": "^1.0.0" + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" }, "engines": { - "node": ">= 0.8" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "license": "ISC", - "dependencies": { - "wrappy": "1" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3295,6 +2889,8 @@ }, "node_modules/p-locate": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", "dependencies": { @@ -3309,6 +2905,8 @@ }, "node_modules/p-map": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3323,6 +2921,8 @@ }, "node_modules/p-try": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, "license": "MIT", "engines": { @@ -3331,11 +2931,15 @@ }, "node_modules/pako": { "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true, "license": "(MIT AND Zlib)" }, "node_modules/parse-node-version": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", "dev": true, "license": "MIT", "engines": { @@ -3344,6 +2948,8 @@ }, "node_modules/path-exists": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", "engines": { @@ -3352,6 +2958,8 @@ }, "node_modules/path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -3359,6 +2967,8 @@ }, "node_modules/path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "license": "MIT", "engines": { @@ -3367,11 +2977,15 @@ }, "node_modules/path-parse": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true, "license": "MIT" }, "node_modules/path-type": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, "license": "MIT", "engines": { @@ -3379,12 +2993,16 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { @@ -3396,6 +3014,8 @@ }, "node_modules/pify": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, "license": "MIT", "optional": true, @@ -3405,6 +3025,8 @@ }, "node_modules/pkg-dir": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3416,6 +3038,8 @@ }, "node_modules/pkg-dir/node_modules/find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "license": "MIT", "dependencies": { @@ -3428,6 +3052,8 @@ }, "node_modules/pkg-dir/node_modules/locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", "dependencies": { @@ -3439,6 +3065,8 @@ }, "node_modules/pkg-dir/node_modules/p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", "dependencies": { @@ -3453,6 +3081,8 @@ }, "node_modules/pkg-dir/node_modules/p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", "dependencies": { @@ -3464,6 +3094,8 @@ }, "node_modules/process": { "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "dev": true, "license": "MIT", "engines": { @@ -3472,30 +3104,29 @@ }, "node_modules/process-nextick-args": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "license": "MIT" }, "node_modules/promise-inflight": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "dev": true, "license": "ISC" }, - "node_modules/prop-types": { - "version": "15.8.1", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, "node_modules/prr": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true, "license": "MIT", "optional": true }, "node_modules/punycode": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "license": "MIT", "engines": { @@ -3504,6 +3135,8 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { @@ -3523,6 +3156,8 @@ }, "node_modules/randombytes": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3530,36 +3165,34 @@ } }, "node_modules/react": { - "version": "16.14.0", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" + "loose-envify": "^1.1.0" }, "engines": { "node": ">=0.10.0" } }, "node_modules/react-dom": { - "version": "16.14.0", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" + "scheduler": "^0.23.2" }, "peerDependencies": { - "react": "^16.14.0" + "react": "^18.3.1" } }, - "node_modules/react-is": { - "version": "16.13.1", - "license": "MIT" - }, "node_modules/readable-stream": { "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", @@ -3573,6 +3206,8 @@ }, "node_modules/readdirp": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "license": "MIT", "dependencies": { @@ -3582,12 +3217,10 @@ "node": ">=8.10.0" } }, - "node_modules/reason-promise": { - "version": "1.1.5", - "license": "MIT" - }, "node_modules/rechoir": { "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dev": true, "dependencies": { "resolve": "^1.1.6" @@ -3596,65 +3229,64 @@ "node": ">= 0.10" } }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/require-directory": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, "node_modules/rescript": { - "version": "10.1.4", + "version": "11.1.4", + "resolved": "https://registry.npmjs.org/rescript/-/rescript-11.1.4.tgz", + "integrity": "sha512-0bGU0bocihjSC6MsE3TMjHjY0EUpchyrREquLS8VsZ3ohSMD+VHUEwimEfB3kpBI1vYkw3UFZ3WD8R28guz/Vw==", "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE", "bin": { "bsc": "bsc", - "bsrefmt": "bsrefmt", "bstracing": "lib/bstracing", "rescript": "rescript" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/rescript-mocha": { + "version": "0.10.0", + "resolved": "git+ssh://git@github.com/DZakh-forks/rescript-mocha.git#f9ab90dcb787584f1fdbc9dd0ef863411201cd71", + "dev": true, + "license": "MIT", + "dependencies": { + "mocha": "^10.4.0" } }, "node_modules/rescript-nodejs": { - "version": "15.0.0", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/rescript-nodejs/-/rescript-nodejs-16.1.0.tgz", + "integrity": "sha512-RyXGIEsb8UhuShf5PwKcTkYNPz+cPQ0CZq74lbYCbCa5YFidbmiIWpQhCMtpsgP1PkLClhKGDkfZfmwwNOil4Q==", "license": "MIT" }, "node_modules/rescript-vscode": { - "version": "0.0.17", - "resolved": "git+ssh://git@github.com/banacorn/rescript-vscode.git#316ce927cd34f8a3ad7cc84b5d1fe6b97fa01e02", + "version": "0.0.22", + "resolved": "git+ssh://git@github.com/banacorn/rescript-vscode.git#5ec4285e89773ad393988b6914153e5649fb0a8f", "license": "MIT", "dependencies": { - "bs-platform": ">=8.2.0", - "reason-promise": ">=1.1.0" + "rescript": "^11.1.4" } }, "node_modules/rescript-webapi": { - "version": "0.9.0", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/rescript-webapi/-/rescript-webapi-0.10.0.tgz", + "integrity": "sha512-QgwMMQO7INz0SK8TX91ibGDrOCRAteOuOxhQi3CIR8FMx0wykbp2rRU/TF4GyfKagk2Nby8snPhQnstSxnmm/g==", "license": "MIT" }, "node_modules/resolve": { "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "license": "MIT", "dependencies": { @@ -3671,6 +3303,8 @@ }, "node_modules/resolve-cwd": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "license": "MIT", "dependencies": { @@ -3682,14 +3316,35 @@ }, "node_modules/resolve-from": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/reusify": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, "license": "MIT", "engines": { @@ -3699,6 +3354,9 @@ }, "node_modules/rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "license": "ISC", "dependencies": { @@ -3713,6 +3371,8 @@ }, "node_modules/run-parallel": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ { @@ -3733,67 +3393,41 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/safe-array-concat": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "dev": true, - "license": "MIT" - }, "node_modules/safe-buffer": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "license": "MIT" }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/safer-buffer": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, "license": "MIT", "optional": true }, "node_modules/sax": { - "version": "1.3.0", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", "dev": true, "license": "ISC", "optional": true }, "node_modules/scheduler": { - "version": "0.19.1", + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" } }, "node_modules/schema-utils": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "license": "MIT", "dependencies": { @@ -3810,11 +3444,10 @@ } }, "node_modules/semver": { - "version": "7.5.4", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -3824,50 +3457,24 @@ }, "node_modules/serialize-javascript": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/set-function-length": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/setimmediate": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", "license": "MIT" }, "node_modules/shallow-clone": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, "license": "MIT", "dependencies": { @@ -3879,6 +3486,8 @@ }, "node_modules/shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "license": "MIT", "dependencies": { @@ -3890,6 +3499,8 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "license": "MIT", "engines": { @@ -3898,6 +3509,8 @@ }, "node_modules/shelljs": { "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -3912,21 +3525,17 @@ "node": ">=4" } }, - "node_modules/side-channel": { - "version": "1.0.4", + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "ISC" }, "node_modules/slash": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", "engines": { @@ -3935,11 +3544,15 @@ }, "node_modules/source-list-map": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", "dev": true, "license": "MIT" }, "node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -3948,6 +3561,8 @@ }, "node_modules/source-map-support": { "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "license": "MIT", "dependencies": { @@ -3955,13 +3570,10 @@ "source-map": "^0.6.0" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "dev": true, - "license": "BSD-3-Clause" - }, "node_modules/ssri": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", "dev": true, "license": "ISC", "dependencies": { @@ -3971,81 +3583,69 @@ "node": ">= 8" } }, - "node_modules/string_decoder": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.8", + "node_modules/stdin-discarder": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz", + "integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "bl": "^5.0.0" }, "engines": { - "node": ">= 0.4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "dev": true, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "safe-buffer": "~5.1.0" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.7", + "node_modules/string-width": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-6.1.0.tgz", + "integrity": "sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^10.2.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=16" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-ansi": { - "version": "6.0.1", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "license": "MIT", "engines": { @@ -4057,6 +3657,8 @@ }, "node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { @@ -4071,6 +3673,8 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, "license": "MIT", "engines": { @@ -4082,6 +3686,8 @@ }, "node_modules/tapable": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, "license": "MIT", "engines": { @@ -4089,7 +3695,9 @@ } }, "node_modules/tar": { - "version": "6.2.0", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dev": true, "license": "ISC", "dependencies": { @@ -4106,6 +3714,8 @@ }, "node_modules/tar/node_modules/minipass": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, "license": "ISC", "engines": { @@ -4113,7 +3723,9 @@ } }, "node_modules/terser": { - "version": "5.26.0", + "version": "5.36.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", + "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -4130,15 +3742,17 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.9", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" @@ -4163,7 +3777,9 @@ } }, "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { - "version": "6.0.1", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -4172,11 +3788,15 @@ }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true, "license": "MIT" }, "node_modules/to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4188,95 +3808,31 @@ }, "node_modules/traverse": { "version": "0.3.9", - "license": "MIT/X11" - }, - "node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, - "node_modules/typed-array-buffer": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "license": "MIT/X11", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "*" } }, - "node_modules/unbox-primitive": { - "version": "1.0.2", + "node_modules/tslib": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "0BSD" }, "node_modules/undici-types": { - "version": "5.26.5", + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", "dev": true, "license": "MIT" }, "node_modules/unique-filename": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "dev": true, "license": "ISC", "dependencies": { @@ -4285,6 +3841,8 @@ }, "node_modules/unique-slug": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, "license": "ISC", "dependencies": { @@ -4293,6 +3851,8 @@ }, "node_modules/untildify": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "license": "MIT", "engines": { "node": ">=8" @@ -4300,6 +3860,8 @@ }, "node_modules/unzipper": { "version": "0.10.14", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz", + "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", "license": "MIT", "dependencies": { "big-integer": "^1.6.17", @@ -4315,7 +3877,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", "dev": true, "funding": [ { @@ -4333,8 +3897,8 @@ ], "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.0" }, "bin": { "update-browserslist-db": "cli.js" @@ -4345,6 +3909,8 @@ }, "node_modules/uri-js": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -4353,13 +3919,20 @@ }, "node_modules/util-deprecate": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, "node_modules/vscode-codicons": { - "version": "0.0.7" + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/vscode-codicons/-/vscode-codicons-0.0.7.tgz", + "integrity": "sha512-xqYypi4Ihth3bZgoE6961FYJBrmFErC+YouSC5Tn0pHqv0QSrP0PK++EIVNBi0I9Ted1OetZ3aWlNUWq1QaMBA==", + "deprecated": "This package is deprecated, please use @vscode/codicons https://www.npmjs.com/package/@vscode/codicons" }, "node_modules/vscode-jsonrpc": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz", + "integrity": "sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==", "license": "MIT", "engines": { "node": ">=14.0.0" @@ -4367,6 +3940,8 @@ }, "node_modules/vscode-languageclient": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.1.0.tgz", + "integrity": "sha512-GL4QdbYUF/XxQlAsvYWZRV3V34kOkpRlvV60/72ghHfsYFnS/v2MANZ9P6sHmxFcZKOse8O+L9G7Czg0NUWing==", "license": "MIT", "dependencies": { "minimatch": "^5.1.0", @@ -4379,6 +3954,8 @@ }, "node_modules/vscode-languageclient/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -4386,6 +3963,8 @@ }, "node_modules/vscode-languageclient/node_modules/minimatch": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -4396,6 +3975,8 @@ }, "node_modules/vscode-languageserver-protocol": { "version": "3.17.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz", + "integrity": "sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.1.0", @@ -4404,10 +3985,14 @@ }, "node_modules/vscode-languageserver-types": { "version": "3.17.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz", + "integrity": "sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==", "license": "MIT" }, "node_modules/watchpack": { - "version": "2.4.0", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", "dev": true, "license": "MIT", "dependencies": { @@ -4419,33 +4004,34 @@ } }, "node_modules/webpack": { - "version": "5.89.0", + "version": "5.95.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", + "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==", "dev": true, "license": "MIT", "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", + "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", + "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, "bin": { @@ -4466,6 +4052,8 @@ }, "node_modules/webpack-cli": { "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", "dev": true, "license": "MIT", "dependencies": { @@ -4512,6 +4100,8 @@ }, "node_modules/webpack-cli/node_modules/commander": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, "license": "MIT", "engines": { @@ -4520,6 +4110,8 @@ }, "node_modules/webpack-cli/node_modules/interpret": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", "dev": true, "license": "MIT", "engines": { @@ -4528,6 +4120,8 @@ }, "node_modules/webpack-cli/node_modules/rechoir": { "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", "dev": true, "license": "MIT", "dependencies": { @@ -4539,6 +4133,8 @@ }, "node_modules/webpack-merge": { "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", "dev": true, "license": "MIT", "dependencies": { @@ -4552,6 +4148,8 @@ }, "node_modules/webpack-sources": { "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4561,6 +4159,8 @@ }, "node_modules/webpack/node_modules/webpack-sources": { "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, "license": "MIT", "engines": { @@ -4569,6 +4169,8 @@ }, "node_modules/which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "license": "ISC", "dependencies": { @@ -4581,123 +4183,93 @@ "node": ">= 8" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, - "node_modules/which-module": { - "version": "2.0.1", + "node_modules/workerpool": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", "dev": true, - "license": "ISC" + "license": "Apache-2.0" }, - "node_modules/which-typed-array": { - "version": "1.1.13", + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wide-align": { - "version": "1.1.3", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2" - } - }, - "node_modules/wide-align/node_modules/ansi-regex": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wide-align/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/wide-align/node_modules/string-width": { - "version": "2.1.1", + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, - "license": "MIT", - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } + "license": "MIT" }, - "node_modules/wide-align/node_modules/strip-ansi": { - "version": "4.0.0", + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^3.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/wildcard": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/workerpool": { - "version": "6.2.1", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=8" } }, "node_modules/wrappy": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "license": "ISC" }, "node_modules/y18n": { "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, "license": "ISC", "engines": { @@ -4706,10 +4278,15 @@ }, "node_modules/yallist": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, "license": "ISC" }, "node_modules/yargs": { "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "license": "MIT", "dependencies": { @@ -4726,7 +4303,9 @@ } }, "node_modules/yargs-parser": { - "version": "20.2.4", + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, "license": "ISC", "engines": { @@ -4735,6 +4314,8 @@ }, "node_modules/yargs-unparser": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, "license": "MIT", "dependencies": { @@ -4747,8 +4328,55 @@ "node": ">=10" } }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index fd9a9772..84b15aa3 100644 --- a/package.json +++ b/package.json @@ -22,31 +22,31 @@ "vfx-dry-run": "npm list --production --parseable --depth=99999 --loglevel=error" }, "devDependencies": { - "bs-mocha": "^1.0.0", + "rescript-mocha": "github:DZakh-forks/rescript-mocha#uncurried", "copy-webpack-plugin": "^6.0.3", "glob": "^7.1.6", "less": "^4.1.1", "less-loader": "^7.0.2", "less-watch-compiler": "^1.14.6", - "mocha": "^10.2.0", + "mocha": "^10.4.0", "@vscode/test-electron": "^2.3.8", "webpack": "^5.76.0", "webpack-cli": "^4.2.0" }, "dependencies": { "@datastructures-js/binary-search-tree": "^4.3.0", - "@glennsl/rescript-json-combinators": "^1.3.0", - "@rescript/react": "^0.10.3", + "@glennsl/rescript-json-combinators": "^1.4.0", + "@rescript/react": "^0.13.0", + "@rescript/core": "^1.3.0", "compare-versions": "^3.5.1", "eventemitter3": ">=4.0.0", "getos": "^3.2.1", - "language-server-mule": "github:banacorn/language-server-mule#v0.4.2", - "react": "^16.9.0", - "react-dom": "^16.9.0", - "reason-promise": ">=1.1.0", - "rescript": "^10.1.4", - "rescript-nodejs": "^15.0.0", - "rescript-vscode": "github:banacorn/rescript-vscode#v0.0.17", + "language-server-mule": "github:banacorn/language-server-mule", + "react": "^18.0.0", + "react-dom": "^18.0.0", + "rescript": "^11.1.4", + "rescript-nodejs": "^16.1.0", + "rescript-vscode": "github:banacorn/rescript-vscode", "rescript-webapi": ">=0.2.0", "untildify": "^4.0.0", "vscode-codicons": "^0.0.7" diff --git a/bsconfig.json b/rescript.json similarity index 74% rename from bsconfig.json rename to rescript.json index 905f38da..53786898 100644 --- a/bsconfig.json +++ b/rescript.json @@ -1,8 +1,6 @@ { "name": "agda-mode-vscode", - "reason": { - "react-jsx": 3 - }, + "jsx": { "version": 4, "mode": "classic" }, "sources": [ { "dir": "src", @@ -27,15 +25,16 @@ "rescript-vscode", "rescript-webapi", "language-server-mule", - "reason-promise", - "@rescript/react" + "rescript-nodejs", + "@rescript/react", + "@rescript/core" ], "bs-dev-dependencies": [ - "bs-mocha", - "reason-promise" + "rescript-mocha" ], - "ppx-flags": [], "bsc-flags": [ + "-open RescriptCore", "-bs-g" - ] + ], + "ppx-flags": [] } \ No newline at end of file diff --git a/src/Agda.res b/src/Agda.res index 09ad663a..37a2e501 100644 --- a/src/Agda.res +++ b/src/Agda.res @@ -3,8 +3,6 @@ // VSCode imports should not be allowed in this module, otherwise it would contaminate the view // -open Belt - module Term = { type t = | Plain(string) @@ -25,13 +23,13 @@ module Expr = { raw ->Js.String.trim /* 1 2 */ - ->Js.String.splitByRe(%re("/(\?\d+)|(\_\d+[^\}\)\s]*)/"), _) + ->(Js.String.splitByRe(%re("/(\?\d+)|(\_\d+[^\}\)\s]*)/"), _)) ->// RegEx updated to v10.1.4 - Array.mapWithIndex((i, token) => + Array.mapWithIndex((token, i) => switch mod(i, 3) { | 1 => token - ->Option.map(Js.String.sliceToEnd(~from=1)) + ->Option.map(String.sliceToEnd(~start=1, ...)) ->Option.flatMap(int_of_string_opt) ->Option.map(x => Term.QuestionMark(x)) | 2 => token->Option.map(x => Term.Underscore(x)) @@ -45,7 +43,7 @@ module Expr = { ) } ) - ->Array.keepMap(x => x) + ->Array.filterMap(x => x) ->(x => Some(x)) let render = xs => xs->Array.map(Term.render)->RichText.concatMany } @@ -67,8 +65,7 @@ module OutputConstraint: { | JustSort(RichText.t) | Others(RichText.t) - let parseOfType = - %re("/^([^\:]*) \: ((?:\r\n|\n|.)+)/")->Emacs__Parser.captures(captured => + let parseOfType = %re("/^([^\:]*) \: ((?:\r\n|\n|.)+)/")->(Emacs__Parser.captures(captured => captured ->Emacs__Parser.at(2, Expr.parse) ->Option.flatMap(type_ => @@ -76,18 +73,20 @@ module OutputConstraint: { ->Emacs__Parser.at(1, Expr.parse) ->Option.flatMap(term => Some(OfType(Expr.render(term), Expr.render(type_)))) ) - ) - let parseJustType = - %re("/^Type ((?:\r\n|\n|.)+)/")->Emacs__Parser.captures(captured => - captured->Emacs__Parser.at(1, Expr.parse)->Option.map(type_ => JustType(Expr.render(type_))) - ) - let parseJustSort = - %re("/^Sort ((?:\r\n|\n|.)+)/")->Emacs__Parser.captures(captured => - captured->Emacs__Parser.at(1, Expr.parse)->Option.map(sort => JustSort(Expr.render(sort))) - ) + , ...)) + let parseJustType = %re("/^Type ((?:\r\n|\n|.)+)/")->(Emacs__Parser.captures(captured => + captured + ->Emacs__Parser.at(1, Expr.parse) + ->Option.map(type_ => JustType(Expr.render(type_))) + , ...)) + let parseJustSort = %re("/^Sort ((?:\r\n|\n|.)+)/")->(Emacs__Parser.captures(captured => + captured + ->Emacs__Parser.at(1, Expr.parse) + ->Option.map(sort => JustSort(Expr.render(sort))) + , ...)) let parseOthers = raw => raw->Expr.parse->Option.map(raw' => Others(Expr.render(raw'))) - let parse = Emacs__Parser.choice([parseOfType, parseJustType, parseJustSort, parseOthers]) + let parse = Emacs__Parser.choice([parseOfType, parseJustType, parseJustSort, parseOthers], ...) let renderItem = (value, location) => { open! RichText @@ -108,17 +107,16 @@ module Output = { // parsing serialized data let parseOutputWithoutLocation = raw => raw->OutputConstraint.parse->Option.map(x => Output(x, None)) - let parseOutputWithLocation = %re( - "/((?:\n|.)*\S+)\s*\[ at ([^\]]+) \]/" - )->Emacs__Parser.captures(captured => - captured[1] - ->Option.flatMap(x => x) - ->Option.flatMap(OutputConstraint.parse) - ->Option.map(oc => { - let r = captured[2]->Option.flatMap(x => x)->Option.flatMap(Common.AgdaRange.parse) - Output(oc, r) - }) - ) + let parseOutputWithLocation = + %re("/((?:\n|.)*\S+)\s*\[ at ([^\]]+) \]/")->(Emacs__Parser.captures(captured => + captured[1] + ->Option.flatMap(x => x) + ->Option.flatMap(OutputConstraint.parse) + ->Option.map(oc => { + let r = captured[2]->Option.flatMap(x => x)->Option.flatMap(Common.AgdaRange.parse) + Output(oc, r) + }) + , ...)) let parse = raw => { let locRe = %re("/\[ at (\S+\:(?:\d+\,\d+\-\d+\,\d+|\d+\,\d+\-\d+|\d+\,\d+)) \]$/") let hasLocation = Js.Re.test_(locRe, raw) diff --git a/src/Config.res b/src/Config.res index 41a6a176..84eda642 100644 --- a/src/Config.res +++ b/src/Config.res @@ -1,6 +1,5 @@ open VSCode module VSRange = Range -open Belt // this flag should be set as TRUE when testing let inTestingMode = ref(false) @@ -15,7 +14,7 @@ module Connection = { let setAgdaVersion = path => if inTestingMode.contents { agdaVersionInTestingMode := path - Promise.resolved() + Promise.resolve() } else { Workspace.getConfiguration( Some("agdaMode"), @@ -29,16 +28,16 @@ module Connection = { } else { Workspace.getConfiguration(Some("agdaMode"), None) ->WorkspaceConfiguration.get("connection.agdaVersion") - ->Option.map(Js.String.trim) + ->Option.map(String.trim) ->Option.flatMap(s => s == "" ? None : Some(s)) - ->Option.getWithDefault("agda") + ->Option.getOr("agda") } // Agda path let setAgdaPath = path => if inTestingMode.contents { agdaPathInTestingMode := path - Promise.resolved() + Promise.resolve() } else { Workspace.getConfiguration( Some("agdaMode"), @@ -51,15 +50,15 @@ module Connection = { } else { Workspace.getConfiguration(Some("agdaMode"), None) ->WorkspaceConfiguration.get("connection.agdaPath") - ->Option.mapWithDefault("", Js.String.trim) + ->Option.mapOr("", String.trim) } // Agda command-line options let getCommandLineOptions = () => Workspace.getConfiguration(Some("agdaMode"), None) ->WorkspaceConfiguration.get("connection.commandLineOptions") - ->Option.mapWithDefault([], s => Js.String.split(" ", Js.String.trim(s))) - ->Array.keep(s => Js.String.trim(s) != "") + ->Option.mapOr([], s => Js.String.split(" ", Js.String.trim(s))) + ->Array.filter(s => Js.String.trim(s) != "") // Agda Language Server let getUseAgdaLanguageServer = () => @@ -78,7 +77,7 @@ module Connection = { let setUseAgdaLanguageServer = (mode: bool) => if inTestingMode.contents { useAgdaLanguageServerInTestingMode := mode - Promise.resolved() + Promise.resolve() } else { Workspace.getConfiguration( Some("agdaMode"), @@ -101,8 +100,8 @@ module Connection = { let getAgdaLanguageServerCommandLineOptions = () => Workspace.getConfiguration(Some("agdaMode"), None) ->WorkspaceConfiguration.get("connection.agdaLanguageServerOptions") - ->Option.mapWithDefault([], s => Js.String.split(" ", Js.String.trim(s))) - ->Array.keep(s => Js.String.trim(s) != "") + ->Option.mapOr([], s => Js.String.split(" ", Js.String.trim(s))) + ->Array.filter(s => Js.String.trim(s) != "") } module View = { @@ -135,9 +134,9 @@ let getLibraryPath = () => { let raw = Workspace.getConfiguration(Some("agdaMode"), None) ->WorkspaceConfiguration.get("libraryPath") - ->Option.getWithDefault("") + ->Option.getOr("") // split by comma, and clean them up - Js.String.split(",", raw)->Array.keep(x => x !== "")->Array.map(Parser.filepath) + Js.String.split(",", raw)->Array.filter(x => x !== "")->Array.map(Parser.filepath) } module Highlighting = { diff --git a/src/Connection/Connection.res b/src/Connection/Connection.res index 9428bc0c..be8b591c 100644 --- a/src/Connection/Connection.res +++ b/src/Connection/Connection.res @@ -33,7 +33,7 @@ module Module: Module = { let encode = ({commandLineOptions}) => { open JsonCombinators.Json.Encode Unsafe.object({ - "commandLineOptions": array(string, commandLineOptions), + "commandLineOptions": array(string)(commandLineOptions), }) } @@ -61,64 +61,74 @@ module Module: Module = { Emacs(version, path) } - let start = (globalStoragePath, useLSP, onDownload) => + let start = async (globalStoragePath, useLSP, onDownload) => switch singleton.contents { - | Some(conn) => Promise.resolved(Ok(toStatus(conn))) + | Some(conn) => Ok(toStatus(conn)) | None => if useLSP { - Connection__Probe.probeLSP(globalStoragePath, onDownload) - ->Promise.flatMap(((result, errors)) => - switch result { - | None => - Promise.resolved(Error(Error.CannotAcquireHandle("Agda Language Server", errors))) - | Some(method) => Promise.resolved(Ok(method)) + let (result, errors) = await Connection__Probe.probeLSP(globalStoragePath, onDownload) + switch result { + | None => Error(Error.CannotAcquireHandle("Agda Language Server", errors)) + | Some(method) => + switch await LSP.Client.make( + "agda", + "Agda Language Server", + method, + InitOptions.getFromConfig(), + ) { + | Error(error) => Error(LSP(LSP.Error.ConnectionError(error))) + | exception Exn.Error(error) => Error(LSP(LSP.Error.ConnectionError(error))) + | Ok(conn) => + switch await LSP.make(conn) { + | Error(error) => Error(LSP(error)) + | Ok(conn) => + let method = LanguageServerMule.Client.LSP.getMethod(conn.client) + singleton := Some(LSP(conn)) + Ok(LSP(conn.version, method)) + } } - ) - ->Promise.flatMapOk(method => { - LSP.Client.make("agda", "Agda Language Server", method, InitOptions.getFromConfig()) - ->Util.P.toPromise - ->Promise.mapError(e => LSP.Error.ConnectionError(e)) - ->Promise.flatMapOk(LSP.make) - ->Promise.mapError(error => Error.LSP(error)) - }) - ->Promise.mapOk(conn => { - let method = LanguageServerMule.Client.LSP.getMethod(conn.client) - singleton := Some(LSP(conn)) - LSP(conn.version, method) - }) + } } else { - Connection__Probe.probeEmacs() - ->Promise.flatMap(((result, errors)) => - switch result { - | None => - let name = Config.Connection.getAgdaVersion() - Promise.resolved(Error(Error.CannotAcquireHandle(name, errors))) - | Some(method) => Promise.resolved(Ok(method)) + let (result, errors) = await Connection__Probe.probeEmacs() + switch result { + | None => + let name = Config.Connection.getAgdaVersion() + Error(Error.CannotAcquireHandle(name, errors)) + | Some(method) => + switch await Emacs.make(method) { + | Error(error) => Error(Error.Emacs(error)) + | Ok(conn) => + singleton := Some(Emacs(conn)) + let (version, path) = Emacs.getInfo(conn) + Ok(Emacs(version, path)) } - ) - ->Promise.flatMapOk(method => - Emacs.make(method)->Promise.mapError(error => Error.Emacs(error)) - ) - ->Promise.mapOk(conn => { - singleton := Some(Emacs(conn)) - let (version, path) = Emacs.getInfo(conn) - Emacs(version, path) - }) + } } } - let stop = () => + let stop = async () => switch singleton.contents { - | None => Promise.resolved(Ok()) + | None => Ok() | Some(Emacs(conn)) => singleton := None - Emacs.destroy(conn)->Promise.map(() => Ok()) + await Emacs.destroy(conn) + Ok() | Some(LSP(conn)) => singleton := None - LSP.destroy(conn)->Promise.mapError(err => Error.LSP(err)) + switch await LSP.destroy(conn) { + | Error(error) => Error(Error.LSP(error)) + | Ok(_) => Ok() + } } - let rec sendRequest = (globalStoragePath, onDownload, useLSP, document, request, handler) => { + let rec sendRequest = async ( + globalStoragePath, + onDownload, + useLSP, + document, + request, + handler, + ) => { // encode the Request to some string let encodeRequest = (document, version) => { let filepath = document->VSCode.TextDocument.fileName->Parser.filepath @@ -131,28 +141,29 @@ module Module: Module = { switch singleton.contents { | Some(LSP(conn)) => let handler = x => x->Util.Result.mapError(err => Error.LSP(err))->handler - LSP.sendRequest(conn, encodeRequest(document, conn.version), handler) - ->Promise.mapOk(() => toStatus(LSP(conn))) - ->Promise.flatMapError(error => { + switch await LSP.sendRequest(conn, encodeRequest(document, conn.version), handler) { + | Error(error) => // stop the connection on error - stop()->Promise.map(_ => Error(Error.LSP(error))) - }) + let _ = await stop() + Error(Error.LSP(error)) + | Ok(_) => Ok(toStatus(LSP(conn))) + } | Some(Emacs(conn)) => let (version, _path) = Emacs.getInfo(conn) let handler = x => x->Util.Result.mapError(err => Error.Emacs(err))->handler - Emacs.sendRequest(conn, encodeRequest(document, version), handler) - ->Promise.mapOk(() => toStatus(Emacs(conn))) - ->Promise.flatMapError(error => { + switch await Emacs.sendRequest(conn, encodeRequest(document, version), handler) { + | Error(error) => // stop the connection on error - stop() - // ->Promise.mapError(err => Error.LSP(err)) - ->Promise.map(_ => Error(Error.Emacs(error))) - }) + let _ = await stop() + Error(Error.Emacs(error)) + | Ok(_) => Ok(toStatus(Emacs(conn))) + } | None => - start(globalStoragePath, useLSP, onDownload)->Promise.flatMapOk(_ => - sendRequest(globalStoragePath, onDownload, useLSP, document, request, handler) - ) + switch await start(globalStoragePath, useLSP, onDownload) { + | Error(error) => Error(error) + | Ok(_) => await sendRequest(globalStoragePath, onDownload, useLSP, document, request, handler) + } } } } diff --git a/src/Connection/Connection__Probe.res b/src/Connection/Connection__Probe.res index 17a3053f..1576f490 100644 --- a/src/Connection/Connection__Probe.res +++ b/src/Connection/Connection__Probe.res @@ -3,125 +3,127 @@ open LanguageServerMule open Source.GitHub open Belt -module Platform = { - module GetOs = { - type t = {"os": string, "dist": string, "codename": string, "release": string} +// module Platform = { +// module GetOs = { +// type t = {"os": string, "dist": string, "codename": string, "release": string} - @module - external getos: (('e, t) => unit) => unit = "getos" +// @module +// external getos: (('e, t) => unit) => unit = "getos" - let runAsPromise = (): Promise.Js.t => { - let (promise, resolve, reject) = Promise.Js.pending() - getos((e, os) => { - let e = Js.Nullable.toOption(e) - switch e { - | Some(e) => reject(e) - | None => resolve(os) - } - }) - promise - } - } +// let runAsPromise = (): Promise.Js.t => { +// let (promise, resolve, reject) = Promise.Js.pending() +// getos((e, os) => { +// let e = Js.Nullable.toOption(e) +// switch e { +// | Some(e) => reject(e) +// | None => resolve(os) +// } +// }) +// promise +// } +// } - type t = Windows | MacOS | Ubuntu | Others +// type t = Windows | MacOS | Ubuntu | Others - let determine = () => - switch Node_process.process["platform"] { - | "darwin" => Promise.resolved(MacOS) - | "linux" => - // determine the distro - GetOs.runAsPromise()->Promise.map(result => - switch result["dist"] { - | "Ubuntu" => Ubuntu - | _ => Others - } - ) - | "win32" => Promise.resolved(Windows) - | _others => Promise.resolved(Others) - } -} +// let determine = () => +// switch Node_process.process["platform"] { +// | "darwin" => Promise.resolved(MacOS) +// | "linux" => +// // determine the distro +// GetOs.runAsPromise()->Promise.map(result => +// switch result["dist"] { +// | "Ubuntu" => Ubuntu +// | _ => Others +// } +// ) +// | "win32" => Promise.resolved(Windows) +// | _others => Promise.resolved(Others) +// } +// } -let chooseFromReleases = (platform: Platform.t, releases: array): option => { - let chooseRelease = (releases: array) => { - // fetch the latest release - let compare = (x: Release.t, y: Release.t) => { - let xTime = Js.Date.getTime(Js.Date.fromString(x.created_at)) - let yTime = Js.Date.getTime(Js.Date.fromString(y.created_at)) - compare(yTime, xTime) - } - let sorted = Js.Array.sortInPlaceWith(compare, releases) - sorted[0] - } +// let chooseFromReleases = (platform: Platform.t, releases: array): option => { +// let chooseRelease = (releases: array) => { +// // fetch the latest release +// let compare = (x: Release.t, y: Release.t) => { +// let xTime = Js.Date.getTime(Js.Date.fromString(x.created_at)) +// let yTime = Js.Date.getTime(Js.Date.fromString(y.created_at)) +// compare(yTime, xTime) +// } +// let sorted = Js.Array.sortInPlaceWith(compare, releases) +// sorted[0] +// } - let chooseAsset = (release: Release.t) => { - // expected suffix of asset name - let expectedSuffix = switch platform { - | MacOS => Some("macos.zip") - | Ubuntu => Some("ubuntu.zip") - | Windows => Some("windows.zip") - | Others => None - } +// let chooseAsset = (release: Release.t) => { +// // expected suffix of asset name +// let expectedSuffix = switch platform { +// | MacOS => Some("macos.zip") +// | Ubuntu => Some("ubuntu.zip") +// | Windows => Some("windows.zip") +// | Others => None +// } - // find the corresponding asset - expectedSuffix - ->Option.flatMap(suffix => { - let matched = release.assets->Array.keep(asset => Js.String2.endsWith(asset.name, suffix)) - matched[0] - }) - ->Option.map(asset => { - saveAsFileName: release.tag_name ++ "-" ++ Node_process.process["platform"], - Target.release, - asset, - }) - } +// // find the corresponding asset +// expectedSuffix +// ->Option.flatMap(suffix => { +// let matched = release.assets->Array.keep(asset => Js.String2.endsWith(asset.name, suffix)) +// matched[0] +// }) +// ->Option.map(asset => { +// saveAsFileName: release.tag_name ++ "-" ++ Node_process.process["platform"], +// Target.release, +// asset, +// }) +// } - chooseRelease(releases)->Option.flatMap(chooseAsset) -} +// chooseRelease(releases)->Option.flatMap(chooseAsset) +// } -let afterDownload = (fromCached, (path, target)) => { - let execPath = Node.Path.join2(path, "als") +let afterDownload = async (isCached, (path, target)) => { // include "Agda_datadir" in the environment variable let options = { - let assetPath = Node.Path.join2(path, "data") + let assetPath = NodeJs.Path.join2(path, "data") let env = Js.Dict.fromArray([("Agda_datadir", assetPath)]) - Client__LSP__Binding.ExecutableOptions.make(~env, ()) + { + LanguageServerMule.Client__LSP__Binding.env: env, + } + } + // chmod the executable after download + // no need to chmod if: + // 1. it's cached, already chmoded + // or + // 2. it's on Windows + let execPath = NodeJs.Path.join2(path, "als") + let shouldChmod = !isCached && NodeJs.Os.platform() != "win32" + if shouldChmod { + let _ = await chmodExecutable(execPath) } - // because it should've been chmod'ed after download - // because there's no need of chmod'ing on Windows - let shouldChmod777 = !fromCached && Node_process.process["platform"] != "win32" - if shouldChmod777 { - chmodExecutable(execPath)->Promise.map(_ => ()) - } else { - Promise.resolved() - }->Promise.map(() => Ok((execPath, [], Some(options), target))) -} + Ok((execPath, [], Some(options), target)) +} // see if the server is available // priorities: TCP => Prebuilt => StdIO -let probeLSP = (globalStoragePath, onDownload) => { +let probeLSP = async (globalStoragePath, onDownload) => { let port = Config.Connection.getAgdaLanguageServerPort() let name = "als" - Platform.determine()->Promise.flatMap(platform => - Source.Module.searchUntilSuccess([ - // when developing ALS, use `:main -p` in GHCi to open a port on localhost - Source.FromTCP(port, "localhost"), - // #71: Prefer locally installed language server binary over bundled als - // https://github.com/banacorn/agda-mode-vscode/issues/71 - Source.FromCommand(name), - Source.FromGitHub({ - username: "agda", - repository: "agda-language-server", - userAgent: "agda/agda-mode-vscode", - globalStoragePath, - chooseFromReleases: chooseFromReleases(platform), - onDownload, - afterDownload, - log: Js.log, - cacheInvalidateExpirationSecs: 86400, - }), - ]) - ) + await Source.Module.searchUntilSuccess([ + // when developing ALS, use `:main -p` in GHCi to open a port on localhost + Source.FromTCP(port, "localhost"), + // #71: Prefer locally installed language server binary over bundled als + // https://github.com/banacorn/agda-mode-vscode/issues/71 + Source.FromCommand(name), + Source.FromGitHub({ + username: "agda", + repository: "agda-language-server", + userAgent: "agda/agda-mode-vscode", + globalStoragePath, + chooseFromReleases: UseLatest, + onDownload, + afterDownload, + log: x => Js.log(x), + cacheInvalidateExpirationSecs: 86400, + }), + ]) } let probeEmacs = () => { diff --git a/src/Connection/Connection__Scheduler.res b/src/Connection/Connection__Scheduler.res index 7b820f00..07cd6c2d 100644 --- a/src/Connection/Connection__Scheduler.res +++ b/src/Connection/Connection__Scheduler.res @@ -34,12 +34,12 @@ module Module: { // NonLast Responses should fed here let runNonLast = (self, handler, response) => { self.tally = self.tally + 1 - handler(response)->Promise.get(_ => { + handler(response)->Promise.finally(_ => { self.tally = self.tally - 1 if self.tally == 0 { self.allDone->Chan.emit() } - }) + })->Promise.done } // deferred (Last) Responses are queued here let addLast = (self, priority, response) => { @@ -48,7 +48,7 @@ module Module: { // gets resolved once there's no NonLast Responses running let onceDone = self => if self.tally == 0 { - Promise.resolved() + Promise.resolve() } else { self.allDone->Chan.once } @@ -56,7 +56,7 @@ module Module: { let runLast = (self, handler) => self ->onceDone - ->Promise.get(() => { + ->Promise.finally(() => { // sort the deferred Responses by priority (ascending order) let deferredLastResponses = Js.Array.sortInPlaceWith( @@ -71,7 +71,7 @@ module Module: { )->ignore deferredLastResponses->Array.map(res => handler(res))->Util.oneByOne->ignore - }) + })->Promise.done } include Module diff --git a/src/Connection/Emacs/Connection__Emacs.res b/src/Connection/Emacs/Connection__Emacs.res index c0e71847..a40eaf2f 100644 --- a/src/Connection/Emacs/Connection__Emacs.res +++ b/src/Connection/Emacs/Connection__Emacs.res @@ -10,7 +10,7 @@ module ProcInfo: { args: array, version: string, } - let make: (string, array) => Promise.t> + let make: (string, array) => promise> let toString: t => string } = { type t = { @@ -22,14 +22,14 @@ module ProcInfo: { @module external untildify: string => string = "untildify" // a more sophiscated "make" - let make = (path, args): Promise.t> => { + let make = async (path, args): result => { // normailize the path by replacing the tild "~/" with the absolute path of home directory let path = untildify(path) let process = Process.make(path, ["-V"]) - let (promise, resolve) = Promise.pending() + let (promise, resolve, _) = Util.Promise_.pending() - let handle = process->Process.onOutput(output => + let destructor = process->Process.onOutput(output => switch output { | Process.Stdout(output) => switch Js.String.match_(%re("/Agda version (.*)/"), output) { @@ -56,7 +56,13 @@ module ProcInfo: { ) } ) - promise->Promise.tap(_ => handle())->Promise.mapError(e => Error.Validation(e)) + + let result = await promise + destructor() + switch result { + | Error(e) => Error(Error.Validation(e)) + | Ok(x) => Ok(x) + } } // for making error report @@ -75,14 +81,14 @@ module ProcInfo: { module type Module = { type t // lifecycle - let make: LanguageServerMule.Method.t => Promise.t> - let destroy: t => Promise.t + let make: LanguageServerMule.Method.t => promise> + let destroy: t => promise // messaging let sendRequest: ( t, string, - result => Promise.t, - ) => Promise.t> + result => promise, + ) => promise> let getInfo: t => (string, string) // version and path } @@ -114,12 +120,12 @@ module Module: Module = { // yield // stop let toResponse = Parser.Incr.Gen.flatMap(x => - switch x { - | Error((no, e)) => Parser.Incr.Gen.Yield(Error(Parser.Error.SExpression(no, e))) - | Ok(Parser.SExpression.A("Agda2>")) => Parser.Incr.Gen.Stop - | Ok(tokens) => Parser.Incr.Gen.Yield(Response.Prioritized.parse(tokens)) - } - ) + switch x { + | Error((no, e)) => Parser.Incr.Gen.Yield(Error(Parser.Error.SExpression(no, e))) + | Ok(Parser.SExpression.A("Agda2>")) => Parser.Incr.Gen.Stop + | Ok(tokens) => Parser.Incr.Gen.Yield(Response.Prioritized.parse(tokens)) + } + , ...) // resolves the requests in the queue let handleResponse = (res: Parser.Incr.Gen.t>) => @@ -152,7 +158,7 @@ module Module: Module = { self.chan->Chan.emit(Error(AgdaError(rawText))) } else { // split the raw text into pieces and feed it to the parser - rawText->Parser.splitToLines->Array.forEach(Parser.Incr.feed(incrParser)) + rawText->Parser.splitToLines->Array.forEach(Parser.Incr.feed(incrParser, ...)) } | Stderr(_) => () | Event(e) => self.chan->Chan.emit(Error(Process(e))) @@ -160,28 +166,31 @@ module Module: Module = { )->Some } - let make = method => + let make = async method => switch method { - | LanguageServerMule.Method.ViaTCP(_) => - Promise.resolved(Error(Error.ConnectionViaTCPNotSupported)) - | ViaCommand(path, _, _, _) => + | LanguageServerMule.Method.ViaTCP(_) => Error(Error.ConnectionViaTCPNotSupported) + | ViaPipe(path, _, _, _) => // Js.Array.concat([1, 2, 3], [4, 5, 6]) == [4, 5, 6, 1, 2, 3], fuck me right? let args = Js.Array.concat(Config.Connection.getCommandLineOptions(), ["--interaction"]) - ProcInfo.make(path, args) - ->Promise.mapOk(procInfo => { - procInfo, - process: Process.make(procInfo.path, procInfo.args), - chan: Chan.make(), - encountedFirstPrompt: false, - }) - ->Promise.tapOk(wire) + switch await ProcInfo.make(path, args) { + | Error(e) => Error(e) + | Ok(procInfo) => + let conn = { + procInfo, + process: Process.make(procInfo.path, procInfo.args), + chan: Chan.make(), + encountedFirstPrompt: false, + } + wire(conn) + Ok(conn) + } } - let onResponse = (conn, callback) => { + let onResponse = async (conn, callback) => { let scheduler = Scheduler.make() // this promise get resolved after all Responses has been received from Agda - let (responsePromise, stopResponseListener) = Promise.pending() + let (responsePromise, stopResponseListener, _) = Util.Promise_.pending() // There are 2 kinds of Responses // NonLast Response : @@ -217,12 +226,12 @@ module Module: Module = { let listenerHandle = ref(None) listenerHandle := Some(conn.chan->Chan.on(listener)) // destroy the listener after all responses have been received - responsePromise->Promise.tap(_ => - listenerHandle.contents->Option.forEach(destroyListener => destroyListener()) - ) + let result = await responsePromise + listenerHandle.contents->Option.forEach(destroyListener => destroyListener()) + result } - let sendRequest = (conn, request, handler): Promise.promise> => { + let sendRequest = (conn, request, handler): promise> => { // this promise gets resolved after all Responses have been received and handled let promise = onResponse(conn, handler) Process.send(conn.process, request)->ignore diff --git a/src/Connection/LSP/Connection__LSP.res b/src/Connection/LSP/Connection__LSP.res index 65771778..95d9df80 100644 --- a/src/Connection/LSP/Connection__LSP.res +++ b/src/Connection/LSP/Connection__LSP.res @@ -29,9 +29,9 @@ module CommandRes = { open JsonCombinators.Json.Decode Util.Decode.sum(x => switch x { - | "CmdResACK" => Payload(string->map((. version) => ACK(version))) + | "CmdResACK" => Payload(string->map(version => ACK(version))) | "CmdRes" => - Payload(option(Connection__LSP__Error.CommandErr.decode)->map((. error) => Result(error))) + Payload(option(Connection__LSP__Error.CommandErr.decode)->map(error => Result(error))) | tag => raise(DecodeError("[Connection.LSP.CommandRes] Unknown constructor: " ++ tag)) } ) @@ -57,7 +57,7 @@ module LSPResponse = { switch x { | "DisplayInfoGeneric" => Payload( - pair(string, array(Item.decode))->map((. (header, itmes)) => Generic(header, itmes)), + pair(string, array(Item.decode))->map(((header, itmes)) => Generic(header, itmes)), ) | "DisplayInfoAllGoalsWarnings" => Payload( @@ -67,7 +67,7 @@ module LSPResponse = { array(Item.decode), array(string), array(string), - )->map((. (header, goals, metas, warnings, errors)) => AllGoalsWarnings( + )->map(((header, goals, metas, warnings, errors)) => AllGoalsWarnings( header, goals, metas, @@ -75,19 +75,19 @@ module LSPResponse = { errors, )), ) - | "DisplayInfoCurrentGoal" => Payload(Item.decode->map((. body) => CurrentGoal(body))) - | "DisplayInfoInferredType" => Payload(Item.decode->map((. body) => InferredType(body))) + | "DisplayInfoCurrentGoal" => Payload(Item.decode->map(body => CurrentGoal(body))) + | "DisplayInfoInferredType" => Payload(Item.decode->map(body => InferredType(body))) | "DisplayInfoCompilationOk" => Payload( - pair(array(string), array(string))->map((. (warnings, errors)) => CompilationOk( + pair(array(string), array(string))->map(((warnings, errors)) => CompilationOk( warnings, errors, )), ) - | "DisplayInfoAuto" => Payload(string->map((. body) => Auto(body))) - | "DisplayInfoError" => Payload(string->map((. body) => Error'(body))) - | "DisplayInfoTime" => Payload(string->map((. body) => Time(body))) - | "DisplayInfoNormalForm" => Payload(string->map((. body) => NormalForm(body))) + | "DisplayInfoAuto" => Payload(string->map(body => Auto(body))) + | "DisplayInfoError" => Payload(string->map(body => Error'(body))) + | "DisplayInfoTime" => Payload(string->map(body => Time(body))) + | "DisplayInfoNormalForm" => Payload(string->map(body => NormalForm(body))) | tag => raise(DecodeError("[LSP.DisplayInfo] Unknown constructor: " ++ tag)) } ) @@ -114,20 +114,18 @@ module LSPResponse = { switch x { | "ResponseHighlightingInfoDirect" => Payload( - Tokens.Token.decodeResponseHighlightingInfoDirect->map((. ( + Tokens.Token.decodeResponseHighlightingInfoDirect->map((( keepHighlighting, infos, )) => ResponseNonLast(Response.HighlightingInfoDirect(keepHighlighting, infos))), ) | "ResponseHighlightingInfoIndirect" => Payload( - string->map((. filePath) => ResponseNonLast( - Response.HighlightingInfoIndirectJSON(filePath), - )), + string->map(filePath => ResponseNonLast(Response.HighlightingInfoIndirectJSON(filePath))), ) | "ResponseDisplayInfo" => Payload( - DisplayInfo.decode->map((. info) => + DisplayInfo.decode->map(info => switch info { | Generic(header, body) => ResponseNonLast(DisplayInfo(Generic(header, body))) | AllGoalsWarnings(header, goals, metas, warnings, errors) => @@ -147,13 +145,13 @@ module LSPResponse = { ) | "ResponseStatus" => Payload( - pair(bool, bool)->map((. (checked, displayImplicit)) => ResponseNonLast( + pair(bool, bool)->map(((checked, displayImplicit)) => ResponseNonLast( Response.Status(checked, displayImplicit), )), ) | "ResponseRunningInfo" => Payload( - pair(int, string)->map((. (verbosity, info)) => ResponseNonLast( + pair(int, string)->map(((verbosity, info)) => ResponseNonLast( Response.RunningInfo(verbosity, info), )), ) @@ -166,33 +164,30 @@ module LSPResponse = { | "ResponseDoneExiting" => TagOnly(ResponseNonLast(Response.DoneExiting)) | "ResponseGiveAction" => Payload( - pair(int, Response.GiveAction.decode)->map((. (id, giveAction)) => ResponseNonLast( + pair(int, Response.GiveAction.decode)->map(((id, giveAction)) => ResponseNonLast( Response.GiveAction(id, giveAction), )), ) | "ResponseInteractionPoints" => - Payload(array(int)->map((. ids) => ResponseLast(1, InteractionPoints(ids)))) + Payload(array(int)->map(ids => ResponseLast(1, InteractionPoints(ids)))) | "ResponseMakeCaseFunction" => Payload( - array(string)->map((. payload) => ResponseLast(2, Response.MakeCase(Function, payload))), + array(string)->map(payload => ResponseLast(2, Response.MakeCase(Function, payload))), ) | "ResponseMakeCaseExtendedLambda" => Payload( - array(string)->map((. payload) => ResponseLast( + array(string)->map(payload => ResponseLast( 2, Response.MakeCase(ExtendedLambda, payload), )), ) | "ResponseSolveAll" => Payload( - array(pair(int, string))->map((. payloads) => ResponseLast( - 2, - Response.SolveAll(payloads), - )), + array(pair(int, string))->map(payloads => ResponseLast(2, Response.SolveAll(payloads))), ) | "ResponseJumpToError" => Payload( - pair(string, int)->map((. (filePath, offset)) => ResponseLast( + pair(string, int)->map(((filePath, offset)) => ResponseLast( 3, Response.JumpToError(filePath, offset), )), @@ -211,14 +206,14 @@ module type Module = { method: LanguageServerMule.Method.t, } // lifecycle - let make: Client.t => Promise.t> - let destroy: t => Promise.t> + let make: Client.t => promise> + let destroy: t => promise> // messaging let sendRequest: ( t, string, - result => Promise.t, - ) => Promise.t> + result => promise, + ) => promise> } module Module: Module = { @@ -241,16 +236,16 @@ module Module: Module = { | Error(msg) => Error(CannotDecodeResponse(msg, json)) } - let sendRequestPrim = (client, request): Promise.t> => { - client - ->Client.sendRequest(CommandReq.encode(request)) - ->Util.P.toPromise - ->Promise.mapError(exn => Error.ConnectionError(exn)) - ->Promise.flatMapOk(json => Promise.resolved(decodeCommandRes(json))) + let sendRequestPrim = async (client, request): result => { + switch await client->Client.sendRequest(CommandReq.encode(request)) { + | Ok(json) => decodeCommandRes(json) + | Error(error) => Error(Error.ConnectionError(error)) + | exception Exn.Error(exn) => Error(Error.ConnectionError(exn)) + } } // start the LSP client - let make = client => + let make = async client => // let subsriptions = [] // // pipe error and notifications // client @@ -265,25 +260,26 @@ module Module: Module = { // ->ignore // send `ReqInitialize` and wait for `ResInitialize` before doing anything else - sendRequestPrim(client, SYN)->Promise.flatMapOk(response => - switch response { - | Result(_) => Promise.resolved(Error(Error.Initialize)) - | ACK(version) => Promise.resolved(Ok({client, version, method: Client.getMethod(client)})) - } - ) + switch await sendRequestPrim(client, SYN) { + | Error(error) => Error(error) + | Ok(Result(_)) => Error(Error.Initialize) + | Ok(ACK(version)) => Ok({client, version, method: Client.getMethod(client)}) + } // destroy the client - let destroy = self => - self.client->Client.destroy->Util.P.toPromise->Promise.mapError(e => Error.ConnectionError(e)) - - // let getInfo = self => (self.version, self.method) + let destroy = async self => + switch await self.client->Client.destroy { + | Ok(result) => Ok(result) + | Error(error) => Error(Error.ConnectionError(error)) + | exception Exn.Error(exn) => Error(Error.ConnectionError(exn)) + } - let sendRequest = (self, request, handler) => { + let sendRequest = async (self, request, handler) => { let handler = response => handler(Ok(response)) let scheduler = Scheduler.make() // waits for `ResponseEnd` - let (waitForResponseEnd, resolve) = Promise.pending() + let (waitForResponseEnd, resolve, _) = Util.Promise_.pending() // listens for responses from Agda let stopListeningForNotifications = self.client->Client.onRequest(async json => { @@ -298,21 +294,19 @@ module Module: Module = { }) // sends `Command` and waits for `ResponseEnd` - sendRequestPrim(self.client, Command(request)) - ->Promise.flatMapOk(result => { - switch result { - | ACK(_) => Promise.resolved(Error(Error.Initialize)) - | Result(Some(error)) => Promise.resolved(Error(Error.SendCommand(error))) - // waits for `ResponseEnd` - | Result(None) => waitForResponseEnd - } - }) + let result = switch await sendRequestPrim(self.client, Command(request)) { + | Error(error) => Error(error) + | Ok(ACK(_)) => Error(Error.Initialize) + | Ok(Result(Some(error))) => Error(Error.SendCommand(error)) + // waits for `ResponseEnd` + | Ok(Result(None)) => await waitForResponseEnd + } // stop listening for requests from server once `ResponseEnd` arrived - ->Promise.tap(_ => stopListeningForNotifications->VSCode.Disposable.dispose) - ->Promise.tap(_ => - // start handling Last Responses, after all NonLast Responses have been handled - scheduler->Scheduler.runLast(handler) - ) + stopListeningForNotifications->VSCode.Disposable.dispose + // start handling Last Responses, after all NonLast Responses have been handled + scheduler->Scheduler.runLast(handler) + + result } } include Module diff --git a/src/Editor.res b/src/Editor.res index 9ac05e2b..5ac711ab 100644 --- a/src/Editor.res +++ b/src/Editor.res @@ -1,6 +1,5 @@ open VSCode module VSRange = Range -open Belt open Common diff --git a/src/Goal.res b/src/Goal.res index dbe910d6..ceec4703 100644 --- a/src/Goal.res +++ b/src/Goal.res @@ -13,11 +13,11 @@ module type Module = { // let generateDiffs: (VSCode.TextDocument.t, array) => array - let makeMany: (VSCode.TextEditor.t, array) => Promise.t> + let makeMany: (VSCode.TextEditor.t, array) => promise> // get the content inside the hole let getContent: (t, VSCode.TextDocument.t) => string // set the content inside the hole - let setContent: (t, VSCode.TextDocument.t, string) => Promise.t + let setContent: (t, VSCode.TextDocument.t, string) => promise // set cursor inside the hole {! cursor here !} // ^ let setCursor: (t, VSCode.TextEditor.t) => unit @@ -44,7 +44,7 @@ module Module: Module = { // make an array of Goal.t with given goal indices // modifies the text buffer along the way - let makeMany = (editor: VSCode.TextEditor.t, indices: array): Promise.t> => { + let makeMany = async (editor: VSCode.TextEditor.t, indices: array): array => { let document = VSCode.TextEditor.document(editor) let diffs = generateDiffs(document, indices) // scan through the diffs to modify the text buffer one by one @@ -70,21 +70,20 @@ module Module: Module = { (range, text) }) - Editor.Text.batchReplace'(editor, replacements)->Promise.map(_ => { - diffs->Array.map(diff => { - // decorate the hole - let (decorationBackground, decorationIndex) = Highlighting.decorateHole( - editor, - diff.modifiedInterval, - diff.index, - ) - { - index: diff.index, - interval: diff.modifiedInterval, - decorationBackground, - decorationIndex, - } - }) + let _ = await Editor.Text.batchReplace'(editor, replacements) + diffs->Array.map(diff => { + // decorate the hole + let (decorationBackground, decorationIndex) = Highlighting.decorateHole( + editor, + diff.modifiedInterval, + diff.index, + ) + { + index: diff.index, + interval: diff.modifiedInterval, + decorationBackground, + decorationIndex, + } }) } diff --git a/src/Highlighting.res b/src/Highlighting.res index abaa66c8..f752c672 100644 --- a/src/Highlighting.res +++ b/src/Highlighting.res @@ -17,7 +17,7 @@ module type Module = { int, ) => (VSCode.TextEditorDecorationType.t, VSCode.TextEditorDecorationType.t) - let apply: (t, Tokens.t, VSCode.TextEditor.t) => Promise.t + let apply: (t, Tokens.t, VSCode.TextEditor.t) => promise let clear: t => unit // redecorate everything after the TextEditor has been replaced let redecorate: (t, VSCode.TextEditor.t) => unit @@ -192,7 +192,7 @@ module Module: Module = { } // trigger TextDocumentChangeEvent by inserting and then deleteing a space " " at the end of the file - let triggerDocumentChangeEvent = editor => { + let triggerDocumentChangeEvent = async editor => { let document = editor->VSCode.TextEditor.document let lineCount = document->VSCode.TextDocument.lineCount let lastLine = document->VSCode.TextDocument.lineAt(lineCount - 1) @@ -217,18 +217,18 @@ module Module: Module = { // ->Promise.map(_ => ()) // insert a space - Editor.Text.insert(document, insertPosition, " ") - ->Promise.flatMap(succeed => + let succeed = await Editor.Text.insert(document, insertPosition, " ") + + let _ = await ( if succeed { // delete that space Editor.Text.replace(document, deleteRange, "") } else { - Promise.resolved(false) + Promise.resolve(false) } ) // save after messing with the file - ->Promise.flatMap(_ => VSCode.TextDocument.save(document)) - ->Promise.map(_ => ()) + let _ = await VSCode.TextDocument.save(document) } let updateSemanticHighlighting = (self, event) => { @@ -263,7 +263,7 @@ module Module: Module = { } else { let decorations = Tokens.toDecorations(tokens, editor) self.decorations = Array.concat(self.decorations, decorations) - Promise.resolved() + Promise.resolve() } } } diff --git a/src/InputMethod/IM.res b/src/InputMethod/IM.res index ca68a26f..ca5c4ebd 100644 --- a/src/InputMethod/IM.res +++ b/src/InputMethod/IM.res @@ -338,14 +338,14 @@ module Module: Module = { // calculate the replacements to be made to the editor let replacements = rewrites->Array.map(({interval, text}) => (interval, text)) - let (promise, resolve) = Promise.pending() + let (promise, resolve, _) = Util.Promise_.pending() // this promise will be resolved, once the real edits have been made - promise->Promise.get(() => { + promise->Promise.finally(() => { // redecorate instances rewrites->Array.forEach(rewrite => { rewrite.instance->Option.forEach(instance => { - editor->Option.forEach(Instance.redecorate(instance)) + editor->Option.forEach(Instance.redecorate(instance, ...)) }) }) @@ -354,7 +354,7 @@ module Module: Module = { // for testing logRewriteApplied(self) - }) + })->Promise.done // deactivate if there are no instances left switch self.instances[0] { @@ -380,7 +380,7 @@ module Module: Module = { // instantiate from an array of offsets self.instances = Js.Array.sortInPlaceWith((x, y) => compare(fst(x), fst(y)), intervals)->Array.map( - Instance.make(editor), + Instance.make(editor, ...), ) [Output.Activate] diff --git a/src/InputMethod/Translator.res b/src/InputMethod/Translator.res index 88dee907..e1906e94 100644 --- a/src/InputMethod/Translator.res +++ b/src/InputMethod/Translator.res @@ -116,7 +116,7 @@ let translate = (input: string, state: option): translation => { } } } -let initialTranslation = translate("") +let initialTranslation = x => translate("", x) let lookup = (symbol): option> => Js.String.codePointAt(0, symbol)->Option.map(string_of_int)->Option.flatMap(Js.Dict.get(rawTable)) @@ -135,9 +135,9 @@ let decode = { let encode = translation => { open JsonCombinators.Json.Encode Unsafe.object({ - "symbol": option(string, translation.symbol), + "symbol": option(string)(translation.symbol), "further": bool(translation.further), - "keySuggestions": array(string, translation.keySuggestions), - "candidateSymbols": array(string, translation.candidateSymbols), + "keySuggestions": array(string)(translation.keySuggestions), + "candidateSymbols": array(string)(translation.candidateSymbols), }) } diff --git a/src/Main.res b/src/Main.res index ae68ac69..fb52edcf 100644 --- a/src/Main.res +++ b/src/Main.res @@ -1,5 +1,3 @@ -open Belt - // if end with '.agda' or '.lagda' let isAgda = (fileName): bool => { let fileName = fileName->Parser.filepath @@ -9,14 +7,14 @@ module Inputs: { let onOpenEditor: (VSCode.TextEditor.t => unit) => VSCode.Disposable.t let onCloseDocument: (VSCode.TextDocument.t => unit) => VSCode.Disposable.t let onTriggerCommand: ( - (Command.t, VSCode.TextEditor.t) => Promise.t>> + (Command.t, VSCode.TextEditor.t) => promise>> ) => array } = { let onOpenEditor = callback => { VSCode.Window.activeTextEditor->Option.forEach(callback) - VSCode.Window.onDidChangeActiveTextEditor(.next => next->Option.forEach(callback)) + VSCode.Window.onDidChangeActiveTextEditor(next => next->Option.forEach(callback)) } - let onCloseDocument = callback => VSCode.Workspace.onDidCloseTextDocument(. callback) + let onCloseDocument = callback => VSCode.Workspace.onDidCloseTextDocument(callback) // invoke the callback when: // 1. the triggered command has prefix "agda-mode." // 2. there's an active text edtior @@ -31,7 +29,7 @@ module Inputs: { if isAgda(fileName) { callback(command, editor) } else { - Promise.resolved(None) + Promise.resolve(None) } }, ) @@ -43,13 +41,18 @@ module Inputs: { let initialize = (debugChan, extensionPath, globalStoragePath, editor, fileName) => { let panel = Singleton.Panel.make(extensionPath) // if the panel is destroyed, destroy all every State in the Registry - WebviewPanel.onceDestroyed(panel)->Promise.get(() => Registry.removeAndDestroyAll()->ignore) + WebviewPanel.onceDestroyed(panel) + ->Promise.finally(() => Registry.removeAndDestroyAll()->ignore) + ->Promise.done // not in the Registry, instantiate a State let state = State.make(debugChan, globalStoragePath, extensionPath, editor) // remove it from the Registry on request - state.onRemoveFromRegistry->Chan.once->Promise.get(() => Registry.remove(fileName)) + state.onRemoveFromRegistry + ->Chan.once + ->Promise.finally(() => Registry.remove(fileName)) + ->Promise.done //////////////////////////////////////////////////////////////// // input events @@ -79,7 +82,7 @@ let initialize = (debugChan, extensionPath, globalStoragePath, editor, fileName) ->subscribe // register event listeners for the input method - VSCode.Window.onDidChangeTextEditorSelection(.event => { + VSCode.Window.onDidChangeTextEditorSelection(event => { let document = VSCode.TextEditor.document(editor) let intervals = event @@ -91,7 +94,7 @@ let initialize = (debugChan, extensionPath, globalStoragePath, editor, fileName) State__InputMethod.select(state, intervals)->ignore })->subscribe - VSCode.Workspace.onDidChangeTextDocument(.event => { + VSCode.Workspace.onDidChangeTextDocument(event => { let changes = IM.Input.fromTextDocumentChangeEvent(editor, event) State__InputMethod.keyUpdateEditorIM(state, changes)->ignore })->subscribe @@ -124,7 +127,7 @@ let registerDocumentSemanticTokensProvider = () => { let fileName = document->VSCode.TextDocument.fileName->Parser.filepath if useSemanticHighlighting { Registry.requestSemanticTokens(fileName) - ->Promise.map(tokens => { + ->Promise.thenResolve(tokens => { open Editor.Provider.Mock let semanticTokensLegend = SemanticTokensLegend.makeWithTokenModifiers( @@ -195,7 +198,6 @@ let finalize = isRestart => { Singleton.DebugBuffer.destroy() } } - Promise.resolved() } let activateWithoutContext = (subscriptions, extensionPath, globalStoragePath) => { @@ -227,7 +229,7 @@ let activateWithoutContext = (subscriptions, extensionPath, globalStoragePath) = // on TextDocumentChangeEvent // updates positions of semantic highlighting tokens accordingly - VSCode.Workspace.onDidChangeTextDocument(.(event: VSCode.TextDocumentChangeEvent.t) => { + VSCode.Workspace.onDidChangeTextDocument((event: VSCode.TextDocumentChangeEvent.t) => { // find the corresponding State let document = event->VSCode.TextDocumentChangeEvent.document let fileName = document->VSCode.TextDocument.fileName->Parser.filepath @@ -247,43 +249,40 @@ let activateWithoutContext = (subscriptions, extensionPath, globalStoragePath) = } })->subscribe // on triggering commands - Inputs.onTriggerCommand((command, editor) => { + Inputs.onTriggerCommand(async (command, editor) => { let fileName = editor->VSCode.TextEditor.document->VSCode.TextDocument.fileName->Parser.filepath // destroy switch command { - | Quit => Registry.removeAndDestroy(fileName)->Promise.flatMap(() => finalize(false)) - | Restart => Registry.removeAndDestroy(fileName)->Promise.flatMap(() => finalize(true)) - | _ => Promise.resolved() + | Quit => + await Registry.removeAndDestroy(fileName) + finalize(false) + | Restart => + await Registry.removeAndDestroy(fileName) + finalize(true) + | _ => () } // make - ->Promise.tap(() => - switch command { - | Load - | Restart - | InputMethod(Activate) => - switch Registry.get(fileName) { - | None => - let state = initialize(channels, extensionPath, globalStoragePath, editor, fileName) - Registry.add(fileName, state) - | Some(_) => () // already in the Registry, do nothing - } - | _ => () + switch command { + | Load + | Restart + | InputMethod(Activate) => + switch Registry.get(fileName) { + | None => + let state = initialize(channels, extensionPath, globalStoragePath, editor, fileName) + Registry.add(fileName, state) + | Some(_) => () // already in the Registry, do nothing } - ) + | _ => () + } // dispatch - ->Promise.flatMap(() => { - switch Registry.get(fileName) { - | None => Promise.resolved(None) - | Some(state) => - State__Command.dispatchCommand(state, command)->Promise.map( - result => - switch result { - | Error(error) => Some(Error(error)) - | Ok() => Some(Ok(state)) - }, - ) + switch Registry.get(fileName) { + | None => None + | Some(state) => + switch await State__Command.dispatchCommand(state, command) { + | Error(error) => Some(Error(error)) + | Ok() => Some(Ok(state)) } - }) + } })->subscribeMany // registerDocumentSemanticTokensProvider registerDocumentSemanticTokensProvider()->subscribe diff --git a/src/Node/Node__Fs.res b/src/Node/Node__Fs.res index 48bfae64..142110dc 100644 --- a/src/Node/Node__Fs.res +++ b/src/Node/Node__Fs.res @@ -4,6 +4,6 @@ external readdir: (string, (Js.nullable, array) => unit) => un @bs.module("fs") external access: (string, Js.null => unit) => unit = "access" @bs.module("fs") -external readFile: (string, (Js.nullable, Node.Buffer.t) => unit) => unit = "readFile" +external readFile: (string, (Js.nullable, NodeJs.Buffer.t) => unit) => unit = "readFile" @bs.module("fs") -external unlink: (string, Js.nullable => unit) => unit = "unlink" +external unlink: (string, Js.nullable => unit) => unit = "unlink" \ No newline at end of file diff --git a/src/Parser/Parser.res b/src/Parser/Parser.res index 68b84114..45556782 100644 --- a/src/Parser/Parser.res +++ b/src/Parser/Parser.res @@ -175,13 +175,13 @@ module SExpression = { switch v.contents { | L(xs) => switch xs[0] { - | None => Continue(parseSExpression(state)) + | None => Continue(parseSExpression(state, ...)) | Some(w) => Done(w) } | _ => Error((3, string)) } } - | _ => Continue(parseSExpression(state)) + | _ => Continue(parseSExpression(state, ...)) } } @@ -260,7 +260,7 @@ let filepath = s => { } // normalize the path with Node.Path.normalize - let normalized = Node.Path.normalize(removedBidi) + let normalized = NodeJs.Path.normalize(removedBidi) // replace Windows' stupid backslash with slash let replaced = Js.String.replaceByRe(%re("/\\/g"), "/", normalized) diff --git a/src/Parser/SourceFile.res b/src/Parser/SourceFile.res index 95f61f4e..17f5ea8f 100644 --- a/src/Parser/SourceFile.res +++ b/src/Parser/SourceFile.res @@ -190,10 +190,10 @@ module Literate = { }) } - let markMarkdown = markWithRules(Regex.markdown, Regex.markdown) - let markTex = markWithRules(Regex.texBegin, Regex.texEnd) - let markRST = markWithRules(Regex.rstBegin, Regex.rstEnd) - let markOrg = markWithRules(Regex.orgBegin, Regex.orgEnd) + let markMarkdown = markWithRules(Regex.markdown, Regex.markdown, ...) + let markTex = markWithRules(Regex.texBegin, Regex.texEnd, ...) + let markRST = markWithRules(Regex.rstBegin, Regex.rstEnd, ...) + let markOrg = markWithRules(Regex.orgBegin, Regex.orgEnd, ...) } module Diff = { diff --git a/src/Registry.res b/src/Registry.res index 75d53417..554ab1fd 100644 --- a/src/Registry.res +++ b/src/Registry.res @@ -43,8 +43,7 @@ module Module: { state.highlighting->Highlighting.getSemanticTokens->resolve // set the entry as Initialized dict->Js.Dict.set(fileName, Initialized(state)) - | Some(Initialized(_)) => - // do nothing + | Some(Initialized(_)) => // do nothing // Js.log("[ add ][ Initialized ]" ++ fileName) () | None => @@ -55,39 +54,38 @@ module Module: { // Removes the entry (but without triggering State.destroy() ) let remove = fileName => Util.Dict.delete(dict, fileName) - let removeAndDestroy = fileName => + let removeAndDestroy = async fileName => switch get'(fileName) { - | None => Promise.resolved() + | None => () | Some(PendingInit(_promise, resolve)) => remove(fileName) resolve([]) - Promise.resolved() | Some(Initialized(state)) => remove(fileName) - State.destroy(state, false)->Promise.map(_ => ()) + State.destroy(state, false)->ignore + () } - let removeAndDestroyAll = () => { - dict->Js.Dict.keys->Array.map(removeAndDestroy)->Util.oneByOne->Promise.map(_ => ()) + let removeAndDestroyAll = async () => { + let _ = await dict->Js.Dict.keys->Array.map(removeAndDestroy)->Util.oneByOne } let isEmpty = () => Js.Dict.keys(dict)->Array.length == 0 // Requesting Semantic Tokens // add PendingInit(_) to the Registry if the entry has not been created yet - let requestSemanticTokens = fileName => + let requestSemanticTokens = async fileName => switch get'(fileName) { - | Some(PendingInit(promise, _resolve)) => - // Js.log("[ req ][ PendingInit ]" ++ fileName) - promise + | Some(PendingInit(promise, _resolve)) => // Js.log("[ req ][ PendingInit ]" ++ fileName) + await promise | Some(Initialized(state)) => // Js.log("[ req ][ Initialized ]" ++ fileName) - state.highlighting->Highlighting.getSemanticTokens->Promise.resolved + state.highlighting->Highlighting.getSemanticTokens | None => // Js.log("[ req ][ None ]" ++ fileName) - let (promise, resolve) = Promise.pending() + let (promise, resolve, _) = Util.Promise_.pending() dict->Js.Dict.set(fileName, PendingInit(promise, resolve)) - promise + await promise } } diff --git a/src/State.res b/src/State.res index e6e5aacd..c29dbee3 100644 --- a/src/State.res +++ b/src/State.res @@ -32,37 +32,38 @@ let onDownload = (state, event) => { let sendRequest = ( state: state, - handleResponse: Response.t => Promise.t>, + handleResponse: Response.t => promise>, request: Request.t, -): Promise.t> => { +): promise> => { let sendRequestAndHandleResponses = ( state, request, - handler: Response.t => Promise.t>, - ): Promise.t> => { - let onResponse = result => + handler: Response.t => promise>, + ): promise> => { + let onResponse = async result => switch result { - | Error(error) => View.Panel.displayConnectionError(state, error) + | Error(error) => await View.Panel.displayConnectionError(state, error) | Ok(response) => - handler(response)->Promise.flatMap(result => - switch result { - | Error(error) => View.Panel.displayConnectionError(state, error) - | Ok() => Promise.resolved() - } - ) + switch await handler(response) { + | Error(error) => await View.Panel.displayConnectionError(state, error) + | Ok() => () + } } Connection.sendRequest( state.globalStoragePath, - onDownload(state), + onDownload(state, ...), Config.Connection.getUseAgdaLanguageServer(), state.document, request, - onResponse, - )->Promise.flatMap(result => + onResponse + )->Promise.then(async result => switch result { | Error(error) => - View.Panel.displayConnectionError(state, error)->Promise.map(() => Error(error)) - | Ok(status) => View.Panel.displayConnectionStatus(state, status)->Promise.map(() => Ok()) + await View.Panel.displayConnectionError(state, error) + Error(error) + | Ok(status) => + await View.Panel.displayConnectionStatus(state, status) + Ok() } ) } @@ -87,7 +88,7 @@ let destroy = (state, alsoRemoveFromRegistry) => { } let make = (channels, globalStoragePath, extensionPath, editor) => { - editor: editor, + editor, document: VSCode.TextEditor.document(editor), panelCache: ViewCache.make(), runningInfoLog: [], @@ -100,7 +101,7 @@ let make = (channels, globalStoragePath, extensionPath, editor) => { subscriptions: [], onRemoveFromRegistry: Chan.make(), agdaRequestQueue: RequestQueue.make(), - globalStoragePath: globalStoragePath, - extensionPath: extensionPath, - channels: channels, + globalStoragePath, + extensionPath, + channels, } diff --git a/src/State/State__Command.res b/src/State/State__Command.res index 43f207dc..3b03dc42 100644 --- a/src/State/State__Command.res +++ b/src/State/State__Command.res @@ -2,61 +2,63 @@ open Belt open Command // from Editor Command to Tasks -let rec dispatchCommand = (state: State.t, command): Promise.t< - result, -> => { - let dispatchCommand = dispatchCommand(state) - let sendAgdaRequest = State.sendRequest(state, State__Response.handle(state, dispatchCommand)) +let rec dispatchCommand = async (state: State.t, command): result => { + let dispatchCommand = dispatchCommand(state, ...) + let sendAgdaRequest = + State.sendRequest(state, State__Response.handle(state, dispatchCommand, ...), ...) let header = View.Header.Plain(Command.toString(command)) switch command { | Load => - State.View.DebugBuffer.restore(state) - ->Promise.flatMap(() => State.View.Panel.display(state, Plain("Loading ..."), [])) - ->Promise.flatMap(() => { - // save the document before loading - VSCode.TextDocument.save(state.document) - }) - ->Promise.flatMap(_ => { - // Issue #26 - don't load the document in preview mode - let options = Some(VSCode.TextDocumentShowOptions.make(~preview=false, ())) - VSCode.Window.showTextDocumentWithShowOptions(state.document, options)->Promise.flatMap(_ => - sendAgdaRequest(Load) - ) - }) - | Quit => Promise.resolved(Ok()) + await State.View.DebugBuffer.restore(state) + await State.View.Panel.display(state, Plain("Loading ..."), []) + // save the document before loading + let _ = await VSCode.TextDocument.save(state.document) + // Issue #26 - don't load the document in preview mode + let options = Some(VSCode.TextDocumentShowOptions.make(~preview=false, ())) + let _ = await VSCode.Window.showTextDocumentWithShowOptions(state.document, options) + await sendAgdaRequest(Load) + | Quit => Ok() | Restart => // clear the RunningInfo log state.runningInfoLog = [] - dispatchCommand(Load) + await dispatchCommand(Load) | Refresh => state.highlighting->Highlighting.redecorate(state.editor) State.View.Panel.restore(state) State__Goal.redecorate(state) - State.View.DebugBuffer.restore(state)->Promise.map(() => Ok()) - | Compile => sendAgdaRequest(Compile) - | ToggleDisplayOfImplicitArguments => sendAgdaRequest(ToggleDisplayOfImplicitArguments) - | ToggleDisplayOfIrrelevantArguments => sendAgdaRequest(ToggleDisplayOfIrrelevantArguments) - | ShowConstraints => sendAgdaRequest(ShowConstraints) + await State.View.DebugBuffer.restore(state) + Ok() + | Compile => await sendAgdaRequest(Compile) + | ToggleDisplayOfImplicitArguments => await sendAgdaRequest(ToggleDisplayOfImplicitArguments) + | ToggleDisplayOfIrrelevantArguments => await sendAgdaRequest(ToggleDisplayOfIrrelevantArguments) + | ShowConstraints => await sendAgdaRequest(ShowConstraints) | SolveConstraints(normalization) => switch State__Goal.pointed(state) { - | None => sendAgdaRequest(SolveConstraintsGlobal(normalization)) - | Some((goal, _)) => sendAgdaRequest(SolveConstraints(normalization, goal)) + | None => await sendAgdaRequest(SolveConstraintsGlobal(normalization)) + | Some((goal, _)) => await sendAgdaRequest(SolveConstraints(normalization, goal)) } - | ShowGoals(normalization) => sendAgdaRequest(ShowGoals(normalization)) - | NextGoal => State__Goal.next(state)->Promise.map(() => Ok()) - | PreviousGoal => State__Goal.previous(state)->Promise.map(() => Ok()) + | ShowGoals(normalization) => await sendAgdaRequest(ShowGoals(normalization)) + | NextGoal => + State__Goal.next(state) + Ok() + | PreviousGoal => + State__Goal.previous(state) + Ok() | SearchAbout(normalization) => - State.View.Panel.prompt( + await State.View.Panel.prompt( state, header, {body: None, placeholder: Some("name:"), value: None}, expr => sendAgdaRequest(SearchAbout(normalization, expr)), - )->Promise.map(() => Ok()) + ) + Ok() | Give => switch State__Goal.pointed(state) { - | None => State.View.Panel.displayOutOfGoalError(state)->Promise.map(() => Ok()) + | None => + await State.View.Panel.displayOutOfGoalError(state) + Ok() | Some((goal, "")) => - State.View.Panel.prompt( + await State.View.Panel.prompt( state, header, { @@ -64,28 +66,32 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< placeholder: Some("expression to give:"), value: None, }, - expr => + async expr => if expr == "" { - sendAgdaRequest(Give(goal)) + await sendAgdaRequest(Give(goal)) } else { - State__Goal.modify(state, goal, _ => expr)->Promise.flatMap(() => - sendAgdaRequest(Give(goal)) - ) + await State__Goal.modify(state, goal, _ => expr) + await sendAgdaRequest(Give(goal)) }, - )->Promise.map(() => Ok()) - | Some((goal, _)) => sendAgdaRequest(Give(goal)) + ) + Ok() + | Some((goal, _)) => await sendAgdaRequest(Give(goal)) } | Refine => switch State__Goal.pointed(state) { - | None => State.View.Panel.displayOutOfGoalError(state)->Promise.map(() => Ok()) - | Some((goal, _)) => sendAgdaRequest(Refine(goal)) + | None => + await State.View.Panel.displayOutOfGoalError(state) + Ok() + | Some((goal, _)) => await sendAgdaRequest(Refine(goal)) } | ElaborateAndGive(normalization) => { let placeholder = Some("expression to elaborate and give:") switch State__Goal.pointed(state) { - | None => State.View.Panel.displayOutOfGoalError(state)->Promise.map(() => Ok()) + | None => + await State.View.Panel.displayOutOfGoalError(state) + Ok() | Some((goal, "")) => - State.View.Panel.prompt( + await State.View.Panel.prompt( state, header, { @@ -93,29 +99,33 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< placeholder, value: None, }, - expr => + async expr => if expr == "" { - sendAgdaRequest(ElaborateAndGive(normalization, expr, goal)) + await sendAgdaRequest(ElaborateAndGive(normalization, expr, goal)) } else { - State__Goal.modify(state, goal, _ => expr)->Promise.flatMap(() => - sendAgdaRequest(ElaborateAndGive(normalization, expr, goal)) - ) + await State__Goal.modify(state, goal, _ => expr) + await sendAgdaRequest(ElaborateAndGive(normalization, expr, goal)) }, - )->Promise.map(() => Ok()) - | Some((goal, expr)) => sendAgdaRequest(ElaborateAndGive(normalization, expr, goal)) + ) + Ok() + | Some((goal, expr)) => await sendAgdaRequest(ElaborateAndGive(normalization, expr, goal)) } } | Auto => switch State__Goal.pointed(state) { - | None => State.View.Panel.displayOutOfGoalError(state)->Promise.map(() => Ok()) - | Some((goal, _)) => sendAgdaRequest(Auto(goal)) + | None => + await State.View.Panel.displayOutOfGoalError(state) + Ok() + | Some((goal, _)) => await sendAgdaRequest(Auto(goal)) } | Case => { let placeholder = Some("variable to case split:") switch State__Goal.pointed(state) { - | None => State.View.Panel.displayOutOfGoalError(state)->Promise.map(() => Ok()) + | None => + await State.View.Panel.displayOutOfGoalError(state) + Ok() | Some((goal, "")) => - State.View.Panel.prompt( + await State.View.Panel.prompt( state, header, { @@ -123,25 +133,27 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< placeholder, value: None, }, - expr => + async expr => if expr == "" { - sendAgdaRequest(Case(goal)) + await sendAgdaRequest(Case(goal)) } else { // place the queried expression in the goal - State__Goal.modify(state, goal, _ => expr)->Promise.flatMap(_ => - sendAgdaRequest(Case(goal)) - ) + await State__Goal.modify(state, goal, _ => expr) + await sendAgdaRequest(Case(goal)) }, - )->Promise.map(() => Ok()) - | Some((goal, _)) => sendAgdaRequest(Case(goal)) + ) + Ok() + | Some((goal, _)) => await sendAgdaRequest(Case(goal)) } } | HelperFunctionType(normalization) => { let placeholder = Some("expression:") switch State__Goal.pointed(state) { - | None => State.View.Panel.displayOutOfGoalError(state)->Promise.map(() => Ok()) + | None => + await State.View.Panel.displayOutOfGoalError(state) + Ok() | Some((goal, "")) => - State.View.Panel.prompt( + await State.View.Panel.prompt( state, header, { @@ -150,15 +162,16 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< value: None, }, expr => sendAgdaRequest(HelperFunctionType(normalization, expr, goal)), - )->Promise.map(() => Ok()) - | Some((goal, expr)) => sendAgdaRequest(HelperFunctionType(normalization, expr, goal)) + ) + Ok() + | Some((goal, expr)) => await sendAgdaRequest(HelperFunctionType(normalization, expr, goal)) } } | InferType(normalization) => let placeholder = Some("expression to infer:") switch State__Goal.pointed(state) { | None => - State.View.Panel.prompt( + await State.View.Panel.prompt( state, header, { @@ -167,9 +180,10 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< value: None, }, expr => sendAgdaRequest(InferTypeGlobal(normalization, expr)), - )->Promise.map(() => Ok()) + ) + Ok() | Some((goal, "")) => - State.View.Panel.prompt( + await State.View.Panel.prompt( state, header, { @@ -178,39 +192,50 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< value: None, }, expr => sendAgdaRequest(InferType(normalization, expr, goal)), - )->Promise.map(() => Ok()) - | Some((goal, expr)) => sendAgdaRequest(InferType(normalization, expr, goal)) + ) + Ok() + | Some((goal, expr)) => await sendAgdaRequest(InferType(normalization, expr, goal)) } | Context(normalization) => switch State__Goal.pointed(state) { - | None => State.View.Panel.displayOutOfGoalError(state)->Promise.map(() => Ok()) - | Some((goal, _)) => sendAgdaRequest(Context(normalization, goal)) + | None => + await State.View.Panel.displayOutOfGoalError(state) + Ok() + | Some((goal, _)) => await sendAgdaRequest(Context(normalization, goal)) } | GoalType(normalization) => switch State__Goal.pointed(state) { - | None => State.View.Panel.displayOutOfGoalError(state)->Promise.map(() => Ok()) - | Some((goal, _)) => sendAgdaRequest(GoalType(normalization, goal)) + | None => + await State.View.Panel.displayOutOfGoalError(state) + Ok() + | Some((goal, _)) => await sendAgdaRequest(GoalType(normalization, goal)) } | GoalTypeAndContext(normalization) => switch State__Goal.pointed(state) { - | None => State.View.Panel.displayOutOfGoalError(state)->Promise.map(() => Ok()) - | Some((goal, _)) => sendAgdaRequest(GoalTypeAndContext(normalization, goal)) + | None => + await State.View.Panel.displayOutOfGoalError(state) + Ok() + | Some((goal, _)) => await sendAgdaRequest(GoalTypeAndContext(normalization, goal)) } | GoalTypeContextAndInferredType(normalization) => switch State__Goal.pointed(state) { - | None => State.View.Panel.displayOutOfGoalError(state)->Promise.map(() => Ok()) + | None => + await State.View.Panel.displayOutOfGoalError(state) + Ok() | Some((goal, "")) => // fallback to `GoalTypeAndContext` when there's no content - sendAgdaRequest(GoalTypeAndContext(normalization, goal)) + await sendAgdaRequest(GoalTypeAndContext(normalization, goal)) | Some((goal, expr)) => - sendAgdaRequest(GoalTypeContextAndInferredType(normalization, expr, goal)) + await sendAgdaRequest(GoalTypeContextAndInferredType(normalization, expr, goal)) } | GoalTypeContextAndCheckedType(normalization) => let placeholder = Some("expression to type:") switch State__Goal.pointed(state) { - | None => State.View.Panel.displayOutOfGoalError(state)->Promise.map(() => Ok()) + | None => + await State.View.Panel.displayOutOfGoalError(state) + Ok() | Some((goal, "")) => - State.View.Panel.prompt( + await State.View.Panel.prompt( state, header, { @@ -219,15 +244,16 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< value: None, }, expr => sendAgdaRequest(GoalTypeContextAndCheckedType(normalization, expr, goal)), - )->Promise.map(() => Ok()) + ) + Ok() | Some((goal, expr)) => - sendAgdaRequest(GoalTypeContextAndCheckedType(normalization, expr, goal)) + await sendAgdaRequest(GoalTypeContextAndCheckedType(normalization, expr, goal)) } | ModuleContents(normalization) => let placeholder = Some("module name:") switch State__Goal.pointed(state) { | None => - State.View.Panel.prompt( + await State.View.Panel.prompt( state, header, { @@ -236,9 +262,10 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< value: None, }, expr => sendAgdaRequest(ModuleContentsGlobal(normalization, expr)), - )->Promise.map(() => Ok()) + ) + Ok() | Some((goal, "")) => - State.View.Panel.prompt( + await State.View.Panel.prompt( state, header, { @@ -247,14 +274,15 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< value: None, }, expr => sendAgdaRequest(ModuleContents(normalization, expr, goal)), - )->Promise.map(() => Ok()) - | Some((goal, expr)) => sendAgdaRequest(ModuleContents(normalization, expr, goal)) + ) + Ok() + | Some((goal, expr)) => await sendAgdaRequest(ModuleContents(normalization, expr, goal)) } | ComputeNormalForm(computeMode) => let placeholder = Some("expression to normalize:") switch State__Goal.pointed(state) { | None => - State.View.Panel.prompt( + await State.View.Panel.prompt( state, header, { @@ -263,9 +291,10 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< value: None, }, expr => sendAgdaRequest(ComputeNormalFormGlobal(computeMode, expr)), - )->Promise.map(() => Ok()) + ) + Ok() | Some((goal, "")) => - State.View.Panel.prompt( + await State.View.Panel.prompt( state, header, { @@ -274,14 +303,15 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< value: None, }, expr => sendAgdaRequest(ComputeNormalForm(computeMode, expr, goal)), - )->Promise.map(() => Ok()) - | Some((goal, expr)) => sendAgdaRequest(ComputeNormalForm(computeMode, expr, goal)) + ) + Ok() + | Some((goal, expr)) => await sendAgdaRequest(ComputeNormalForm(computeMode, expr, goal)) } | WhyInScope => let placeholder = Some("name:") switch State__Goal.pointed(state) { | None => - State.View.Panel.prompt( + await State.View.Panel.prompt( state, header, { @@ -290,9 +320,10 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< value: None, }, expr => sendAgdaRequest(WhyInScopeGlobal(expr)), - )->Promise.map(() => Ok()) + ) + Ok() | Some((goal, "")) => - State.View.Panel.prompt( + await State.View.Panel.prompt( state, header, { @@ -301,14 +332,15 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< value: None, }, expr => sendAgdaRequest(WhyInScope(expr, goal)), - )->Promise.map(() => Ok()) - | Some((goal, expr)) => sendAgdaRequest(WhyInScope(expr, goal)) + ) + Ok() + | Some((goal, expr)) => await sendAgdaRequest(WhyInScope(expr, goal)) } | SwitchAgdaVersion => // preserve the original version, in case the new one fails let oldAgdaVersion = Config.Connection.getAgdaVersion() // prompt the user for the new version - State.View.Panel.prompt( + await State.View.Panel.prompt( state, header, { @@ -316,106 +348,105 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< placeholder: None, value: Some(oldAgdaVersion), }, - expr => { + async expr => { let oldAgdaPath = Config.Connection.getAgdaPath() let newAgdaVersion = Js.String.trim(expr) // don't connect to the LSP server let useLSP = false - Config.Connection.setAgdaPath("") + await Config.Connection.setAgdaPath("") // set the name of executable to `newAgdaVersion` in the settings - ->Promise.flatMap(() => Config.Connection.setAgdaVersion(newAgdaVersion)) - ->Promise.flatMap(() => - State.View.Panel.display( - state, - View.Header.Plain("Switching to '" ++ newAgdaVersion ++ "'"), - [], - ) + await Config.Connection.setAgdaVersion(newAgdaVersion) + await State.View.Panel.display( + state, + View.Header.Plain("Switching to '" ++ newAgdaVersion ++ "'"), + [], ) // stop the old connection - ->Promise.flatMap(Connection.stop) - ->Promise.flatMap(_ => - Connection.start(state.globalStoragePath, useLSP, State.onDownload(state)) - ) - ->Promise.flatMap(result => - switch result { - | Ok(Emacs(version, path)) => - // update the connection status - State.View.Panel.displayStatus(state, "Emacs v" ++ version) - ->Promise.flatMap( - () => - State.View.Panel.display( - state, - View.Header.Success("Switched to version '" ++ version ++ "'"), - [Item.plainText("Found '" ++ newAgdaVersion ++ "' at: " ++ path)], - ), - ) - ->Promise.map(() => Ok()) - - | Ok(LSP(version, _)) => - // should not happen - State.View.Panel.display( - state, - View.Header.Success("Panic, Switched to LSP server '" ++ version ++ "'"), - [Item.plainText("Should have switched to an Agda executable, please file an issue")], - )->Promise.map(() => Ok()) - | Error(error) => - let (errorHeader, errorBody) = Connection.Error.toString(error) - let header = View.Header.Error( - "Cannot switch Agda version '" ++ newAgdaVersion ++ "' : " ++ errorHeader, - ) - let body = [Item.plainText(errorBody ++ "\n\n" ++ "Switching back to " ++ oldAgdaPath)] - Config.Connection.setAgdaPath(oldAgdaPath) - ->Promise.flatMap(() => State.View.Panel.display(state, header, body)) - ->Promise.map(() => Ok()) - } - ) + let _ = await Connection.stop() + switch await Connection.start( + state.globalStoragePath, + useLSP, + State.onDownload(state, ...) + ) { + | Ok(Emacs(version, path)) => + // update the connection status + await State.View.Panel.displayStatus(state, "Emacs v" ++ version) + await State.View.Panel.display( + state, + View.Header.Success("Switched to version '" ++ version ++ "'"), + [Item.plainText("Found '" ++ newAgdaVersion ++ "' at: " ++ path)], + ) + Ok() + | Ok(LSP(version, _)) => + // should not happen + await State.View.Panel.display( + state, + View.Header.Success("Panic, Switched to LSP server '" ++ version ++ "'"), + [Item.plainText("Should have switched to an Agda executable, please file an issue")], + ) + Ok() + | Error(error) => + let (errorHeader, errorBody) = Connection.Error.toString(error) + let header = View.Header.Error( + "Cannot switch Agda version '" ++ newAgdaVersion ++ "' : " ++ errorHeader, + ) + let body = [Item.plainText(errorBody ++ "\n\n" ++ "Switching back to " ++ oldAgdaPath)] + await Config.Connection.setAgdaPath(oldAgdaPath) + await State.View.Panel.display(state, header, body) + Ok() + } }, - )->Promise.map(() => Ok()) + ) + Ok() | EventFromView(event) => switch event { - | Initialized => Promise.resolved(Ok()) - | Destroyed => State.destroy(state, true) - | InputMethod(InsertChar(char)) => dispatchCommand(InputMethod(InsertChar(char))) + | Initialized => Ok() + | Destroyed => await State.destroy(state, true) + | InputMethod(InsertChar(char)) => await dispatchCommand(InputMethod(InsertChar(char))) | InputMethod(ChooseSymbol(symbol)) => - State__InputMethod.chooseSymbol(state, symbol)->Promise.map(() => Ok()) + await State__InputMethod.chooseSymbol(state, symbol) + Ok() | PromptIMUpdate(MouseSelect(interval)) => - State__InputMethod.select(state, [interval])->Promise.map(() => Ok()) + await State__InputMethod.select(state, [interval]) + Ok() | PromptIMUpdate(KeyUpdate(input)) => - State__InputMethod.keyUpdatePromptIM(state, input)->Promise.map(() => Ok()) - | PromptIMUpdate(BrowseUp) => dispatchCommand(InputMethod(BrowseUp)) - | PromptIMUpdate(BrowseDown) => dispatchCommand(InputMethod(BrowseDown)) - | PromptIMUpdate(BrowseLeft) => dispatchCommand(InputMethod(BrowseLeft)) - | PromptIMUpdate(BrowseRight) => dispatchCommand(InputMethod(BrowseRight)) + await State__InputMethod.keyUpdatePromptIM(state, input) + Ok() + | PromptIMUpdate(BrowseUp) => await dispatchCommand(InputMethod(BrowseUp)) + | PromptIMUpdate(BrowseDown) => await dispatchCommand(InputMethod(BrowseDown)) + | PromptIMUpdate(BrowseLeft) => await dispatchCommand(InputMethod(BrowseLeft)) + | PromptIMUpdate(BrowseRight) => await dispatchCommand(InputMethod(BrowseRight)) | PromptIMUpdate(Escape) => if state.editorIM->IM.isActivated || state.promptIM->IM.isActivated { - State__InputMethod.deactivate(state)->Promise.map(() => Ok()) + await State__InputMethod.deactivate(state) } else { - State.View.Panel.interruptPrompt(state)->Promise.map(() => Ok()) + await State.View.Panel.interruptPrompt(state) } + Ok() | JumpToTarget(link) => Editor.focus(state.document) let path = state.document->VSCode.TextDocument.fileName->Parser.filepath switch link { - | SrcLoc(NoRange) => Promise.resolved(Ok()) - | SrcLoc(Range(None, _intervals)) => Promise.resolved(Ok()) + | SrcLoc(NoRange) => Ok() + | SrcLoc(Range(None, _intervals)) => Ok() | SrcLoc(Range(Some(fileName), intervals)) => let fileName = Parser.filepath(fileName) // Issue #44 // In Windows, paths from Agda start from something like "c://" while they are "C://" from VS Code // We need to remove the root from the path before comparing them let removeRoot = path => { - let obj = Node_path.parse(path) - let rootLength = String.length(obj["root"]) - let newDir = Js.String.sliceToEnd(~from=rootLength, obj["dir"]) - let newObj = { - "root": "", - "dir": newDir, - "ext": obj["ext"], - "name": obj["name"], - "base": obj["base"], + let obj = NodeJs.Path.parse(path) + let rootLength = String.length(obj.root) + let newDir = Js.String.sliceToEnd(~from=rootLength, obj.dir) + let newObj: NodeJs.Path.t = { + root: "", + dir: newDir, + ext: obj.ext, + name: obj.name, + base: obj.base, } - Node_path.format(newObj) + NodeJs.Path.format(newObj) } // only select the ranges when it's on the same file @@ -428,44 +459,56 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< state.editor->VSCode.TextEditor.revealRange(range, None) }) } - Promise.resolved(Ok()) + Ok() | Hole(index) => let goal = Js.Array.find((goal: Goal.t) => goal.index == index, state.goals) switch goal { | None => () | Some(goal) => Goal.setCursor(goal, state.editor) } - Promise.resolved(Ok()) + Ok() } } | Escape => if state.editorIM->IM.isActivated || state.promptIM->IM.isActivated { - State__InputMethod.deactivate(state)->Promise.map(() => Ok()) + await State__InputMethod.deactivate(state) + Ok() } else { - State.View.Panel.interruptPrompt(state)->Promise.map(() => Ok()) + await State.View.Panel.interruptPrompt(state) + Ok() } | InputMethod(Activate) => if Config.InputMethod.getEnable() { - State__InputMethod.activateEditorIM(state)->Promise.map(() => Ok()) + await State__InputMethod.activateEditorIM(state) + Ok() } else { // insert the activation key (default: "\") instead let activationKey = Config.InputMethod.getActivationKey() Editor.Cursor.getMany(state.editor)->Array.forEach(point => Editor.Text.insert(state.document, point, activationKey)->ignore ) - Promise.resolved(Ok()) + Ok() } | InputMethod(InsertChar(char)) => - State__InputMethod.insertChar(state, char)->Promise.map(() => Ok()) - | InputMethod(BrowseUp) => State__InputMethod.moveUp(state)->Promise.map(() => Ok()) - | InputMethod(BrowseDown) => State__InputMethod.moveDown(state)->Promise.map(() => Ok()) - | InputMethod(BrowseLeft) => State__InputMethod.moveLeft(state)->Promise.map(() => Ok()) - | InputMethod(BrowseRight) => State__InputMethod.moveRight(state)->Promise.map(() => Ok()) + await State__InputMethod.insertChar(state, char) + Ok() + | InputMethod(BrowseUp) => + await State__InputMethod.moveUp(state) + Ok() + | InputMethod(BrowseDown) => + await State__InputMethod.moveDown(state) + Ok() + | InputMethod(BrowseLeft) => + await State__InputMethod.moveLeft(state) + Ok() + | InputMethod(BrowseRight) => + await State__InputMethod.moveRight(state) + Ok() | LookupSymbol => // get the selected text // query the user instead if no text is selected - let (promise, resolve) = Promise.pending() + let (promise, resolve, _) = Util.Promise_.pending() let selectedText = Editor.Text.get(state.document, Editor.Selection.get(state.editor))->Js.String.trim if selectedText == "" { @@ -475,7 +518,7 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< {body: None, placeholder: Some("symbol to lookup:"), value: None}, input => { resolve(Js.String.trim(input)) - Promise.resolved(Ok()) + Promise.resolve(Ok()) }, )->ignore } else { @@ -483,30 +526,29 @@ let rec dispatchCommand = (state: State.t, command): Promise.t< } // lookup and display - promise - ->Promise.flatMap(input => { - let sequences = Translator.lookup(input)->Option.getWithDefault([]) - if Js.Array.length(sequences) == 0 { - State.View.Panel.display( - state, - View.Header.Warning("No Input Sequences Found for \"" ++ selectedText ++ "\""), - [], - ) - } else { - State.View.Panel.display( - state, - View.Header.Success( - string_of_int(Js.Array.length(sequences)) ++ - " Input Sequences Found for \"" ++ - selectedText ++ "\"", - ), - sequences->Array.map(sequence => Item.plainText(sequence)), - ) - } - }) - ->Promise.map(() => Ok()) + let input = await promise + let sequences = Translator.lookup(input)->Option.getWithDefault([]) + if Js.Array.length(sequences) == 0 { + await State.View.Panel.display( + state, + View.Header.Warning("No Input Sequences Found for \"" ++ selectedText ++ "\""), + [], + ) + } else { + await State.View.Panel.display( + state, + View.Header.Success( + string_of_int(Js.Array.length(sequences)) ++ + " Input Sequences Found for \"" ++ + selectedText ++ "\"", + ), + sequences->Array.map(sequence => Item.plainText(sequence)), + ) + } + Ok() | OpenDebugBuffer => State.View.DebugBuffer.make(state)->ignore - State.View.DebugBuffer.reveal(state)->Promise.map(() => Ok()) + await State.View.DebugBuffer.reveal(state) + Ok() } } diff --git a/src/State/State__Goal.res b/src/State/State__Goal.res index 1842ebba..a03ac0f1 100644 --- a/src/State/State__Goal.res +++ b/src/State/State__Goal.res @@ -1,17 +1,17 @@ open Belt open Common module type Module = { - let instantiate: (State.t, array) => Promise.t - let modify: (State.t, Goal.t, string => string) => Promise.t - let removeBoundaryAndDestroy: (State.t, Goal.t) => Promise.t + let instantiate: (State.t, array) => promise + let modify: (State.t, Goal.t, string => string) => promise + let removeBoundaryAndDestroy: (State.t, Goal.t) => promise let pointed: State.t => option<(Goal.t, string)> - let replaceWithLines: (State.t, Goal.t, array) => Promise.t - let replaceWithLambda: (State.t, Goal.t, array) => Promise.t + let replaceWithLines: (State.t, Goal.t, array) => promise + let replaceWithLambda: (State.t, Goal.t, array) => promise let caseSplitAux: (VSCode.TextDocument.t, AgdaModeVscode.Goal.t) => (bool, int, Interval.t) let redecorate: State.t => unit - let next: State.t => Promise.t - let previous: State.t => Promise.t + let next: State.t => unit + let previous: State.t => unit } module Module: Module = { @@ -175,25 +175,21 @@ module Module: Module = { ) } - let modify = (state: State.t, goal, f) => { + let modify = async (state: State.t, goal, f) => { updateIntervals(state) let content = Goal.getContent(goal, state.document) - Goal.setContent(goal, state.document, f(content))->Promise.flatMap(x => { - switch x { - | true => - updateIntervals(state) - Promise.resolved() - | false => - State.View.Panel.display( - state, - Error("Goal-related Error"), - [Item.plainText("Failed to modify the content of goal #" ++ string_of_int(goal.index))], - ) - } - }) + if await Goal.setContent(goal, state.document, f(content)) { + updateIntervals(state) + } else { + await State.View.Panel.display( + state, + Error("Goal-related Error"), + [Item.plainText("Failed to modify the content of goal #" ++ string_of_int(goal.index))], + ) + } } - let next = (state: State.t): Promise.t => { + let next = (state: State.t): unit => { updateIntervals(state) let nextGoal = ref(None) @@ -213,16 +209,15 @@ module Module: Module = { } switch nextGoal.contents { - | None => Promise.resolved() + | None => () | Some(offset) => let point = state.document->VSCode.TextDocument.positionAt(offset) Editor.Cursor.set(state.editor, point) state->jumpToOffset(offset) - Promise.resolved() } } - let previous = (state: State.t): Promise.t => { + let previous = (state: State.t): unit => { updateIntervals(state) let previousGoal = ref(None) @@ -242,16 +237,15 @@ module Module: Module = { } switch previousGoal.contents { - | None => Promise.resolved() + | None => () | Some(offset) => let point = state.document->VSCode.TextDocument.positionAt(offset) Editor.Cursor.set(state.editor, point) state->jumpToOffset(offset) - Promise.resolved() } } - let instantiate = (state: State.t, indices) => { + let instantiate = async (state: State.t, indices) => { // destroy all existing goals state.goals->Array.forEach(Goal.destroyDecoration) @@ -265,32 +259,31 @@ module Module: Module = { let cursorEnd = VSCode.TextDocument.offsetAt(state.document, VSCode.Selection.end_(selection)) // instantiate new ones - Goal.makeMany(state.editor, indices)->Promise.map(goals => { - goals->Array.forEach(goal => { - // if there's a cursor that touches the hole's "boundary" - // - // {! some hole !} - // ^^ ^^ - // - // move the cursor inside the hole - // - // {! some hole !} - // ^ - // - let (left, right) = goal.interval - let touched = - (left <= cursorStart && cursorStart <= left + 2) || - right - 2 <= cursorStart && cursorStart <= right || - left <= cursorEnd && cursorEnd <= left + 2 || - (right - 2 <= cursorEnd && cursorEnd <= right) - - if touched { - Goal.setCursor(goal, state.editor) - } - }) - - state.goals = goals + let goals = await Goal.makeMany(state.editor, indices) + goals->Array.forEach(goal => { + // if there's a cursor that touches the hole's "boundary" + // + // {! some hole !} + // ^^ ^^ + // + // move the cursor inside the hole + // + // {! some hole !} + // ^ + // + let (left, right) = goal.interval + let touched = + (left <= cursorStart && cursorStart <= left + 2) || + right - 2 <= cursorStart && cursorStart <= right || + left <= cursorEnd && cursorEnd <= left + 2 || + (right - 2 <= cursorEnd && cursorEnd <= right) + + if touched { + Goal.setCursor(goal, state.editor) + } }) + + state.goals = goals } let pointed = (state: State.t): option<(Goal.t, string)> => { @@ -331,7 +324,7 @@ module Module: Module = { // 2. λ where // x → ? // y → ? - let replaceWithLambda = (state: State.t, goal, lines) => { + let replaceWithLambda = async (state: State.t, goal, lines) => { let (inWhereClause, indentWidth, rewriteInterval) = caseSplitAux(state.document, goal) let rewriteText = if inWhereClause { Js.Array.joinWith("\n" ++ Js.String.repeat(indentWidth, " "), lines) @@ -339,27 +332,24 @@ module Module: Module = { Js.Array.joinWith("\n" ++ (Js.String.repeat(indentWidth - 2, " ") ++ "; "), lines) } let rewriteRange = Editor.Range.fromInterval(state.document, rewriteInterval) - Editor.Text.replace(state.document, rewriteRange, rewriteText)->Promise.flatMap(x => - switch x { - | true => - // destroy the old goal - Goal.destroyDecoration(goal) - // locate the first new goal and place the cursor there - placeCursorAtFirstNewGoal(state, rewriteText, rewriteRange) - Promise.resolved() - | false => - State.View.Panel.display( - state, - Error("Goal-related Error"), - [Item.plainText("Unable to replace the lines of goal #" ++ string_of_int(goal.index))], - ) - } - ) + switch await Editor.Text.replace(state.document, rewriteRange, rewriteText) { + | true => + // destroy the old goal + Goal.destroyDecoration(goal) + // locate the first new goal and place the cursor there + placeCursorAtFirstNewGoal(state, rewriteText, rewriteRange) + | false => + await State.View.Panel.display( + state, + Error("Goal-related Error"), + [Item.plainText("Unable to replace the lines of goal #" ++ string_of_int(goal.index))], + ) + } } // replace and insert one or more lines of content at the goal // usage: case split - let replaceWithLines = (state: State.t, goal, lines) => { + let replaceWithLines = async (state: State.t, goal, lines) => { // get the width of indentation from the first line of the goal let (indentWidth, _, _) = indentationWidth(state.document, goal) let indentation = Js.String.repeat(indentWidth, " ") @@ -374,43 +364,35 @@ module Module: Module = { let end_ = Editor.Position.fromOffset(state.document, snd(goal.interval)) let rangeToBeReplaced = VSCode.Range.make(start, end_) - Editor.Text.replace(state.document, rangeToBeReplaced, indentedLines)->Promise.flatMap(x => - switch x { - | true => - // destroy the old goal - Goal.destroyDecoration(goal) - // locate the first new goal and place the cursor there - placeCursorAtFirstNewGoal(state, indentedLines, rangeToBeReplaced) - Promise.resolved() - | false => - State.View.Panel.display( - state, - Error("Goal-related Error"), - [Item.plainText("Unable to replace the lines of goal #" ++ string_of_int(goal.index))], - ) - } - ) + if await Editor.Text.replace(state.document, rangeToBeReplaced, indentedLines) { + // destroy the old goal + Goal.destroyDecoration(goal) + // locate the first new goal and place the cursor there + placeCursorAtFirstNewGoal(state, indentedLines, rangeToBeReplaced) + } else { + await State.View.Panel.display( + state, + Error("Goal-related Error"), + [Item.plainText("Unable to replace the lines of goal #" ++ string_of_int(goal.index))], + ) + } } - let removeBoundaryAndDestroy = (state: State.t, goal) => { + let removeBoundaryAndDestroy = async (state: State.t, goal) => { updateIntervals(state) let innerRange = Goal.getInnerRange(goal, state.document) let outerRange = Editor.Range.fromInterval(state.document, goal.interval) let content = Editor.Text.get(state.document, innerRange)->Js.String.trim - Editor.Text.replace(state.document, outerRange, content)->Promise.flatMap(x => - switch x { - | true => - Goal.destroyDecoration(goal) - Promise.resolved() - | false => - State.View.Panel.display( - state, - Error("Goal-related Error"), - [Item.plainText("Unable to remove the boundary of goal #" ++ string_of_int(goal.index))], - ) - } - ) + if await Editor.Text.replace(state.document, outerRange, content) { + Goal.destroyDecoration(goal) + } else { + await State.View.Panel.display( + state, + Error("Goal-related Error"), + [Item.plainText("Unable to remove the boundary of goal #" ++ string_of_int(goal.index))], + ) + } } let redecorate = state => { diff --git a/src/State/State__InputMethod.res b/src/State/State__InputMethod.res index b1b2fb03..d51374bf 100644 --- a/src/State/State__InputMethod.res +++ b/src/State/State__InputMethod.res @@ -1,51 +1,49 @@ open Common module type Module = { // shared by both EditorIM / PromptIM - let deactivate: State.t => Promise.t + let deactivate: State.t => promise - let select: (State.t, array) => Promise.t - let insertChar: (State.t, string) => Promise.t - let chooseSymbol: (State.t, string) => Promise.t - let moveUp: State.t => Promise.t - let moveDown: State.t => Promise.t - let moveLeft: State.t => Promise.t - let moveRight: State.t => Promise.t + let select: (State.t, array) => promise + let insertChar: (State.t, string) => promise + let chooseSymbol: (State.t, string) => promise + let moveUp: State.t => promise + let moveDown: State.t => promise + let moveLeft: State.t => promise + let moveRight: State.t => promise // EditorIM - let activateEditorIM: State.t => Promise.t - let keyUpdateEditorIM: (State.t, array) => Promise.t + let activateEditorIM: State.t => promise + let keyUpdateEditorIM: (State.t, array) => promise // PromptIM - let keyUpdatePromptIM: (State.t, string) => Promise.t + let keyUpdatePromptIM: (State.t, string) => promise } module Module: Module = { open Belt module EditorIM = { - let handle = (state: State.t, output): Promise.t => { + let handle = async (state: State.t, output): unit => { open IM.Output - let handle = kind => + let handle = async kind => switch kind { | UpdateView(sequence, translation, index) => - State.View.Panel.updateIM(state, Update(sequence, translation, index)) + await State.View.Panel.updateIM(state, Update(sequence, translation, index)) | Rewrite(replacements, resolve) => let replacements = replacements->Array.map(((interval, text)) => { let range = Editor.Range.fromInterval(state.document, interval) (range, text) }) - Editor.Text.batchReplace(state.document, replacements)->Promise.map(_ => { - resolve() - () - }) + let _ = await Editor.Text.batchReplace(state.document, replacements) + resolve() | Activate => State.Context.setIM(true) - State.View.Panel.updateIM(state, Activate) + await State.View.Panel.updateIM(state, Activate) | Deactivate => State.Context.setIM(false) - State.View.Panel.updateIM(state, Deactivate) + await State.View.Panel.updateIM(state, Deactivate) } - output->Array.map(handle)->Util.oneByOne->Promise.map(_ => ()) + let _ = await output->Array.map(handle)->Util.oneByOne } let runAndHandle = (state: State.t, action) => @@ -57,7 +55,9 @@ module Module: Module = { let activate = (state: State.t) => { // activated the input method with cursors positions let intervals: array = - Editor.Selection.getMany(state.editor)->Array.map(Editor.Range.toInterval(state.document)) + Editor.Selection.getMany(state.editor)->Array.map( + Editor.Range.toInterval(state.document, ...) + ) runAndHandle(state, Activate(intervals)) } @@ -69,12 +69,12 @@ module Module: Module = { // so that we can calculate what has been changed let previous = ref("") - let handle = (state, output) => { + let handle = async (state, output) => { open IM.Output - let handle = kind => + let handle = async kind => switch kind { | UpdateView(sequence, translation, index) => - State.View.Panel.updateIM(state, Update(sequence, translation, index)) + await State.View.Panel.updateIM(state, Update(sequence, translation, index)) | Rewrite(rewrites, f) => // TODO, postpone calling f f() @@ -94,17 +94,16 @@ module Module: Module = { // update the stored content and notify the view previous.contents = replaced.contents - State.View.Panel.updatePromptIM(state, replaced.contents) + await State.View.Panel.updatePromptIM(state, replaced.contents) | Activate => - State.View.Panel.updateIM(state, Activate)->Promise.flatMap(() => - State.View.Panel.updatePromptIM(state, previous.contents) - ) - | Deactivate => State.View.Panel.updateIM(state, Deactivate) + await State.View.Panel.updateIM(state, Activate) + await State.View.Panel.updatePromptIM(state, previous.contents) + | Deactivate => await State.View.Panel.updateIM(state, Deactivate) } - output->Array.map(handle)->Util.oneByOne->Promise.map(_ => ()) + let _ = await output->Array.map(handle)->Util.oneByOne } - let runAndHandle = (state: State.t, action): Promise.t => + let runAndHandle = (state: State.t, action): promise => handle(state, IM.run(state.promptIM, None, action)) let keyUpdate = (state: State.t, next) => { @@ -175,16 +174,16 @@ module Module: Module = { None } - let deactivate = (state: State.t): Promise.t => + let deactivate = (state: State.t): promise => switch isActivated(state) { | Editor => EditorIM.deactivate(state) | Prompt => PromptIM.deactivate(state) - | None => Promise.resolved() + | None => Promise.resolve() } let activationKey = Config.InputMethod.getActivationKey() - let activateEditorIM = (state: State.t): Promise.t => + let activateEditorIM = async (state: State.t): unit => switch isActivated(state) { | Editor => // Input method is already activated. @@ -195,113 +194,106 @@ module Module: Module = { ) } // else reactivate it - EditorIM.deactivate(state) - ->Promise.flatMap(() => EditorIM.activate(state)) + await EditorIM.deactivate(state) + await EditorIM.activate(state) | Prompt => // deactivate the prompt IM - PromptIM.deactivate(state)->Promise.flatMap(() => { - // activate the editor IM - EditorIM.activate(state) - }) + await PromptIM.deactivate(state) + // activate the editor IM + await EditorIM.activate(state) | None => // activate the editor IM - EditorIM.activate(state) + await EditorIM.activate(state) } // activate the prompt IM when the user typed the activation key (default: "\") let shouldActivatePromptIM = input => Js.String.endsWith(activationKey, input) - let keyUpdatePromptIM = (state: State.t, input) => + let keyUpdatePromptIM = async (state: State.t, input) => switch isActivated(state) { | Editor => if shouldActivatePromptIM(input) { // deactivate the editor IM - EditorIM.deactivate(state)->Promise.flatMap(() => - // activate the prompt IM - PromptIM.activate(state, input) - ) + await EditorIM.deactivate(state) + // activate the prompt IM + await PromptIM.activate(state, input) } else { - State.View.Panel.updatePromptIM(state, input) + await State.View.Panel.updatePromptIM(state, input) } - | Prompt => PromptIM.keyUpdate(state, input) + | Prompt => await PromptIM.keyUpdate(state, input) | None => if shouldActivatePromptIM(input) { - PromptIM.activate(state, input) + await PromptIM.activate(state, input) } else { - {State.View.Panel.updatePromptIM(state, input)} + await State.View.Panel.updatePromptIM(state, input) } } let keyUpdateEditorIM = (state: State.t, changes) => switch isActivated(state) { | Editor => EditorIM.keyUpdate(state, changes) - | Prompt => Promise.resolved() - | None => Promise.resolved() + | Prompt => Promise.resolve() + | None => Promise.resolve() } let select = (state: State.t, intervals) => { switch isActivated(state) { | Editor => EditorIM.runAndHandle(state, MouseSelect(intervals)) | Prompt => PromptIM.runAndHandle(state, MouseSelect(intervals)) - | None => Promise.resolved() + | None => Promise.resolve() } } - let chooseSymbol = (state: State.t, symbol): Promise.t => + let chooseSymbol = async (state: State.t, symbol): unit => // deactivate after passing `Candidate(ChooseSymbol(symbol))` to the IM switch isActivated(state) { | Editor => - EditorIM.runAndHandle(state, Candidate(ChooseSymbol(symbol)))->Promise.flatMap(() => - deactivate(state) - ) + await EditorIM.runAndHandle(state, Candidate(ChooseSymbol(symbol))) + await deactivate(state) | Prompt => - PromptIM.runAndHandle(state, Candidate(ChooseSymbol(symbol)))->Promise.flatMap(() => - deactivate(state) - ) - | None => Promise.resolved() + await PromptIM.runAndHandle(state, Candidate(ChooseSymbol(symbol))) + await deactivate(state) + | None => () } - let insertChar = (state: State.t, char) => + let insertChar = async (state: State.t, char) => switch isActivated(state) { | Editor => let char = Js.String.charAt(0, char) let positions = Editor.Cursor.getMany(state.editor) - state.document - ->Editor.Text.batchInsert(positions, char) - ->Promise.map(_ => { - Editor.focus(state.document) - }) - | Prompt => PromptIM.insertChar(state, char) - | None => Promise.resolved() + let _ = await state.document->Editor.Text.batchInsert(positions, char) + Editor.focus(state.document) + | Prompt => await PromptIM.insertChar(state, char) + | None => () } let moveUp = (state: State.t) => switch isActivated(state) { | Editor => EditorIM.runAndHandle(state, Candidate(BrowseUp)) | Prompt => PromptIM.runAndHandle(state, Candidate(BrowseUp)) - | None => Promise.resolved() + | None => Promise.resolve() } let moveDown = (state: State.t) => switch isActivated(state) { | Editor => EditorIM.runAndHandle(state, Candidate(BrowseDown)) | Prompt => PromptIM.runAndHandle(state, Candidate(BrowseDown)) - | None => Promise.resolved() + | None => Promise.resolve() } let moveLeft = (state: State.t) => switch isActivated(state) { | Editor => EditorIM.runAndHandle(state, Candidate(BrowseLeft)) | Prompt => PromptIM.runAndHandle(state, Candidate(BrowseLeft)) - | None => Promise.resolved() + | None => Promise.resolve() } let moveRight = (state: State.t) => switch isActivated(state) { | Editor => EditorIM.runAndHandle(state, Candidate(BrowseRight)) | Prompt => PromptIM.runAndHandle(state, Candidate(BrowseRight)) - | None => Promise.resolved() + | None => Promise.resolve() } } diff --git a/src/State/State__Response.res b/src/State/State__Response.res index 67c1d28f..c971eb35 100644 --- a/src/State/State__Response.res +++ b/src/State/State__Response.res @@ -5,225 +5,234 @@ let removeNewlines = string => string->Js.String2.split("\n")->Belt.Array.joinWi open Response module DisplayInfo = { - let handle = (state, x) => + let handle = async (state, x) => switch x { | Response.DisplayInfo.Generic(header, body) => - State.View.Panel.display(state, Plain(header), body) + await State.View.Panel.display(state, Plain(header), body) | CompilationOk(body) => - State.View.Panel.display(state, Success("Compilation result"), [Item.plainText(body)]) + await State.View.Panel.display(state, Success("Compilation result"), [Item.plainText(body)]) | CompilationOkLSP(warnings, errors) => let message = [Item.plainText("The module was successfully compiled.")] let errors = errors->Array.map(raw => Item.error(RichText.string(raw), Some(raw))) let warnings = warnings->Array.map(raw => Item.warning(RichText.string(raw), Some(raw))) - State.View.Panel.display( + await State.View.Panel.display( state, Success("Compilation result"), Array.concatMany([message, errors, warnings]), ) - | Constraints(None) => State.View.Panel.display(state, Plain("No Constraints"), []) + | Constraints(None) => await State.View.Panel.display(state, Plain("No Constraints"), []) | Constraints(Some(body)) => let items = Emacs__Parser2.parseOutputs(body) - State.View.Panel.display(state, Plain("Constraints"), items) - | AllGoalsWarnings(header, "nil") => State.View.Panel.display(state, Success(header), []) + await State.View.Panel.display(state, Plain("Constraints"), items) + | AllGoalsWarnings(header, "nil") => await State.View.Panel.display(state, Success(header), []) | AllGoalsWarnings(header, body) => let items = Emacs__Parser2.parseAllGoalsWarnings(header, body)->Emacs__Parser2.render - State.View.Panel.display(state, Plain(header), items) + await State.View.Panel.display(state, Plain(header), items) | AllGoalsWarningsLSP(header, goals, metas, warnings, errors) => let errors = errors->Array.map(raw => Item.error(RichText.string(raw), Some(raw))) let warnings = warnings->Array.map(raw => Item.warning(RichText.string(raw), Some(raw))) - State.View.Panel.display( + await State.View.Panel.display( state, Plain(header), Array.concatMany([goals, metas, errors, warnings]), ) | Time(body) => let items = Emacs__Parser2.parseAndRenderTextWithLocation(body) - State.View.Panel.display(state, Plain("Time"), items) + await State.View.Panel.display(state, Plain("Time"), items) | Error(body) => let items = Emacs__Parser2.parseError(body)->Emacs__Parser2.render - State.View.Panel.display(state, Error("Error"), items) + await State.View.Panel.display(state, Error("Error"), items) | Intro(body) => let items = Emacs__Parser2.parseAndRenderTextWithLocation(body) - State.View.Panel.display(state, Plain("Intro"), items) + await State.View.Panel.display(state, Plain("Intro"), items) | Auto(body) => let items = Emacs__Parser2.parseAndRenderTextWithLocation(body) - State.View.Panel.display(state, Plain("Auto"), items) + await State.View.Panel.display(state, Plain("Auto"), items) | ModuleContents(body) => let items = Emacs__Parser2.parseAndRenderTextWithLocation(body) - State.View.Panel.display(state, Plain("Module Contents"), items) + await State.View.Panel.display(state, Plain("Module Contents"), items) | SearchAbout(body) => let items = Emacs__Parser2.parseAndRenderSearchAbout(body) - State.View.Panel.display(state, Plain("Search About"), items) + await State.View.Panel.display(state, Plain("Search About"), items) | WhyInScope(body) => let items = Emacs__Parser2.parseAndRenderTextWithLocation(body) - State.View.Panel.display(state, Plain("Scope info"), items) + await State.View.Panel.display(state, Plain("Scope info"), items) | NormalForm(body) => let items = Emacs__Parser2.parseAndRenderTextWithLocation(body) - State.View.Panel.display(state, Plain("Normal form"), items) + await State.View.Panel.display(state, Plain("Normal form"), items) | GoalType(body) => let items = Emacs__Parser2.parseGoalType(body)->Emacs__Parser2.render - State.View.Panel.display(state, Plain("Goal and Context"), items) - | CurrentGoalLSP(item) => State.View.Panel.display(state, Plain("Current Goal"), [item]) + await State.View.Panel.display(state, Plain("Goal and Context"), items) + | CurrentGoalLSP(item) => await State.View.Panel.display(state, Plain("Current Goal"), [item]) | CurrentGoal(payload) => - State.View.Panel.display(state, Plain("Current Goal"), [Item.plainText(payload)]) + await State.View.Panel.display(state, Plain("Current Goal"), [Item.plainText(payload)]) | InferredType(payload) => - State.View.Panel.display(state, Plain("Inferred type"), [Item.plainText(payload)]) - | InferredTypeLSP(item) => State.View.Panel.display(state, Plain("Inferred type"), [item]) + await State.View.Panel.display(state, Plain("Inferred type"), [Item.plainText(payload)]) + | InferredTypeLSP(item) => await State.View.Panel.display(state, Plain("Inferred type"), [item]) | Context(body) => let items = Emacs__Parser2.parseOutputs(body) - State.View.Panel.display(state, Plain("Context"), items) + await State.View.Panel.display(state, Plain("Context"), items) | HelperFunction(payload) => - VSCode.Env.clipboard - ->VSCode.Clipboard.writeText(payload) - ->Promise.flatMap(() => - State.View.Panel.display( - state, - Plain("Helper function (copied to clipboard)"), - [Item.plainText(payload)], - ) + await VSCode.Env.clipboard->VSCode.Clipboard.writeText(payload) + await State.View.Panel.display( + state, + Plain("Helper function (copied to clipboard)"), + [Item.plainText(payload)], ) | Version(payload) => - State.View.Panel.display(state, Plain("Version"), [Item.plainText(payload)]) + await State.View.Panel.display(state, Plain("Version"), [Item.plainText(payload)]) } } -let rec handle = ( +let rec handle = async ( state: State.t, - dispatchCommand: Command.t => Promise.t>, + dispatchCommand: Command.t => promise>, response: Response.t, -): Promise.t> => { - let sendAgdaRequest = State.sendRequest(state, handle(state, dispatchCommand)) - let handleResponse = switch response { - | HighlightingInfoDirect(_keep, annotations) => - state.tokens->Tokens.insert(state.editor, annotations) - Promise.resolved(Ok()) - | HighlightingInfoIndirect(filepath) => - state.tokens->Tokens.addEmacsFilePath(filepath) - Promise.resolved(Ok()) - | HighlightingInfoIndirectJSON(filepath) => - state.tokens->Tokens.addJSONFilePath(filepath) - Promise.resolved(Ok()) - | ClearHighlighting => - state.tokens->Tokens.clear - state.highlighting->Highlighting.clear - Promise.resolved(Ok()) - | Status(_checked, _displayImplicit) => - // display( - // "Status", - // Some( - // "Typechecked: " - // ++ string_of_bool(checked) - // ++ "\nDisplay implicit arguments: " - // ++ string_of_bool(displayImplicit), - // ), - // ), - Promise.resolved(Ok()) +): result => { + let sendAgdaRequest = State.sendRequest(state, handle(state, dispatchCommand, ...), ...) + let handleResponse = async () => + switch response { + | HighlightingInfoDirect(_keep, annotations) => + state.tokens->Tokens.insert(state.editor, annotations) + Ok() + | HighlightingInfoIndirect(filepath) => + state.tokens->Tokens.addEmacsFilePath(filepath) + Ok() + | HighlightingInfoIndirectJSON(filepath) => + state.tokens->Tokens.addJSONFilePath(filepath) + Ok() + | ClearHighlighting => + state.tokens->Tokens.clear + state.highlighting->Highlighting.clear + Ok() + | Status(_checked, _displayImplicit) => + // display( + // "Status", + // Some( + // "Typechecked: " + // ++ string_of_bool(checked) + // ++ "\nDisplay implicit arguments: " + // ++ string_of_bool(displayImplicit), + // ), + // ), + Ok() - // if (displayImplicit || checked) { - // [ - // display( - // "Status", - // Some( - // "Typechecked: " - // ++ string_of_bool(checked) - // ++ "\nDisplay implicit arguments: " - // ++ string_of_bool(displayImplicit), - // ), - // ), - // ]; - // } else { - // []; - // } - | JumpToError(filepath, offset) => - // only jump to site of error - // when it's on the same file - let path = state.document->VSCode.TextDocument.fileName->Parser.filepath - if path == filepath { - let point = state.document->VSCode.TextDocument.positionAt(offset - 1) - Editor.Cursor.set(state.editor, point) - } - Promise.resolved(Ok()) - | InteractionPoints(indices) => State__Goal.instantiate(state, indices)->Promise.map(() => Ok()) - | GiveAction(index, give) => - let found = state.goals->Array.keep(goal => goal.index == index) - switch found[0] { - | None => - State.View.Panel.display( - state, - Error("Error: Give failed"), - [Item.plainText("Cannot find goal #" ++ string_of_int(index))], - )->Promise.map(() => Ok()) - | Some(goal) => - switch give { - | GiveParen => - State__Goal.modify(state, goal, content => "(" ++ (content ++ ")")) - ->Promise.flatMap(() => State__Goal.removeBoundaryAndDestroy(state, goal)) - ->Promise.map(() => Ok()) - | GiveNoParen => - // do nothing - State__Goal.removeBoundaryAndDestroy(state, goal)->Promise.map(() => Ok()) - | GiveString(content) => - State__Goal.modify(state, goal, _ => Js.String.replaceByRe(%re("/\\\\n/g"), "\n", content)) - ->Promise.flatMap(() => State__Goal.removeBoundaryAndDestroy(state, goal)) - ->Promise.map(() => Ok()) + // if (displayImplicit || checked) { + // [ + // display( + // "Status", + // Some( + // "Typechecked: " + // ++ string_of_bool(checked) + // ++ "\nDisplay implicit arguments: " + // ++ string_of_bool(displayImplicit), + // ), + // ), + // ]; + // } else { + // []; + // } + | JumpToError(filepath, offset) => + // only jump to site of error + // when it's on the same file + let path = state.document->VSCode.TextDocument.fileName->Parser.filepath + if path == filepath { + let point = state.document->VSCode.TextDocument.positionAt(offset - 1) + Editor.Cursor.set(state.editor, point) } - } - | MakeCase(makeCaseType, lines) => - switch State__Goal.pointed(state) { - | None => State.View.Panel.displayOutOfGoalError(state)->Promise.map(() => Ok()) - | Some((goal, _)) => - switch makeCaseType { - | Function => State__Goal.replaceWithLines(state, goal, lines) - | ExtendedLambda => State__Goal.replaceWithLambda(state, goal, lines) - }->Promise.flatMap(() => dispatchCommand(Load)) - } - | SolveAll(solutions) => - let solveOne = ((index, solution)): Promise.t> => { - let goals = state.goals->Array.keep(goal => goal.index == index) - switch goals[0] { - | None => Promise.resolved(Ok()) - | Some(goal) => - State__Goal.modify(state, goal, _ => solution)->Promise.flatMap(() => - sendAgdaRequest(Give(goal)) + Ok() + | InteractionPoints(indices) => + await State__Goal.instantiate(state, indices) + Ok() + | GiveAction(index, give) => + let found = state.goals->Array.keep(goal => goal.index == index) + switch found[0] { + | None => + await State.View.Panel.display( + state, + Error("Error: Give failed"), + [Item.plainText("Cannot find goal #" ++ string_of_int(index))], ) + Ok() + | Some(goal) => + switch give { + | GiveParen => + await State__Goal.modify(state, goal, content => "(" ++ (content ++ ")")) + await State__Goal.removeBoundaryAndDestroy(state, goal) + Ok() + | GiveNoParen => + // do nothing + await State__Goal.removeBoundaryAndDestroy(state, goal) + Ok() + | GiveString(content) => + await State__Goal.modify(state, goal, _ => + Js.String.replaceByRe(%re("/\\\\n/g"), "\n", content) + ) + await State__Goal.removeBoundaryAndDestroy(state, goal) + Ok() + } } - } - // solve them one by one - solutions - ->Array.map(solveOne) - ->Util.oneByOne - ->Promise.flatMap(_ => { + | MakeCase(makeCaseType, lines) => + switch State__Goal.pointed(state) { + | None => + await State.View.Panel.displayOutOfGoalError(state) + Ok() + | Some((goal, _)) => + switch makeCaseType { + | Function => await State__Goal.replaceWithLines(state, goal, lines) + | ExtendedLambda => await State__Goal.replaceWithLambda(state, goal, lines) + } + await dispatchCommand(Load) + } + | SolveAll(solutions) => + let solveOne = async ((index, solution)): result => { + let goals = state.goals->Array.keep(goal => goal.index == index) + switch goals[0] { + | None => Ok() + | Some(goal) => + await State__Goal.modify(state, goal, _ => solution) + await sendAgdaRequest(Give(goal)) + } + } + // solve them one by one + let _ = + await solutions + ->Array.map(solveOne) + ->Util.oneByOne let size = Array.length(solutions) if size == 0 { - State.View.Panel.display(state, Error("No solutions found"), []) + await State.View.Panel.display(state, Error("No solutions found"), []) } else { - State.View.Panel.display(state, Success(string_of_int(size) ++ " goals solved"), []) + await State.View.Panel.display(state, Success(string_of_int(size) ++ " goals solved"), []) } - }) - ->Promise.map(() => Ok()) + Ok() - | DisplayInfo(info) => DisplayInfo.handle(state, info)->Promise.map(() => Ok()) - | RunningInfo(1, message) => - let message = removeNewlines(message) - State.View.Panel.displayInAppendMode( - state, - Plain("Type-checking"), - [Item.plainText(message)], - )->Promise.map(() => Ok()) - | RunningInfo(verbosity, message) => - let message = removeNewlines(message) - state.runningInfoLog->Js.Array2.push((verbosity, message))->ignore - State.View.DebugBuffer.displayInAppendMode([(verbosity, message)])->Promise.map(() => Ok()) - | CompleteHighlightingAndMakePromptReappear => - // apply decoration before handling Last Responses - Tokens.readTempFiles(state.tokens, state.editor)->Promise.flatMap(() => { - Highlighting.apply(state.highlighting, state.tokens, state.editor)->Promise.map(() => Ok()) - }) - | _ => Promise.resolved(Ok()) - } + | DisplayInfo(info) => + await DisplayInfo.handle(state, info) + Ok() + | RunningInfo(1, message) => + let message = removeNewlines(message) + await State.View.Panel.displayInAppendMode( + state, + Plain("Type-checking"), + [Item.plainText(message)], + ) + Ok() + | RunningInfo(verbosity, message) => + let message = removeNewlines(message) + state.runningInfoLog->Js.Array2.push((verbosity, message))->ignore + await State.View.DebugBuffer.displayInAppendMode([(verbosity, message)]) + Ok() + | CompleteHighlightingAndMakePromptReappear => + // apply decoration before handling Last Responses + await Tokens.readTempFiles(state.tokens, state.editor) + await Highlighting.apply(state.highlighting, state.tokens, state.editor) + Ok() + | _ => Ok() + } - handleResponse->Promise.tapOk(() => { - // emit Response when it's been handled - state.channels.responseHandled->Chan.emit(response) - }) + let result = await handleResponse() + // emit Response when it's been handled + state.channels.responseHandled->Chan.emit(response) + result } diff --git a/src/State/State__Type.res b/src/State/State__Type.res index 567f39d2..3a809547 100644 --- a/src/State/State__Type.res +++ b/src/State/State__Type.res @@ -6,10 +6,10 @@ module RequestQueue: { type t<'a> let make: unit => t<'a> // only gets resolved after the Request has been handled - let push: (t<'a>, Request.t => Promise.t<'a>, Request.t) => Promise.t<'a> + let push: (t<'a>, Request.t => promise<'a>, Request.t) => promise<'a> } = { type t<'a> = { - queue: array Promise.t<'a>>, + queue: array promise<'a>>, mutable busy: bool, } @@ -28,17 +28,23 @@ module RequestQueue: { | None => () // nothing to pop | Some(thunk) => self.busy = true - thunk()->Promise.get(_ => { + thunk() + ->Promise.finally(_ => { self.busy = false kickStart(self) }) + ->Promise.done } } // only gets resolved after the Request has been handled let push = (self, sendRequestAndHandleResponses, request) => { - let (promise, resolve) = Promise.pending() - let thunk = () => sendRequestAndHandleResponses(request)->Promise.tap(resolve) + let (promise, resolve, _) = Util.Promise_.pending() + let thunk = async () => { + let response = await sendRequestAndHandleResponses(request) + resolve(response) + response + } // push to the back of the queue Js.Array.push(thunk, self.queue)->ignore // kick start @@ -51,7 +57,7 @@ module RequestQueue: { module ViewCache = { type t = { mutable display: option<(View.Header.t, View.Body.t)>, - mutable prompt: option<(View.Header.t, View.Prompt.t, View.Response.t => Promise.t)>, + mutable prompt: option<(View.Header.t, View.Prompt.t, View.Response.t => promise)>, } let make = () => { diff --git a/src/State/State__View.res b/src/State/State__View.res index 8ca89f08..865cceea 100644 --- a/src/State/State__View.res +++ b/src/State/State__View.res @@ -56,9 +56,9 @@ module Panel: Panel = { let displayConnectionStatus = (state, status) => switch status { | Connection.Emacs(version, _) => displayStatus(state, "Emacs v" ++ version) - | LSP(version, ViaCommand(_, _, _, LanguageServerMule.Method.FromGitHub(_, release, _))) => + | LSP(version, ViaPipe(_, _, _, LanguageServerMule.Method.FromGitHub(_, release, _))) => displayStatus(state, "ALS prebuilt " ++ release.tag_name ++ " (Agda v" ++ version ++ ")") - | LSP(version, ViaCommand(_)) => displayStatus(state, "ALS v" ++ version) + | LSP(version, ViaPipe(_)) => displayStatus(state, "ALS v" ++ version) | LSP(_, ViaTCP(_)) => displayStatus(state, "ALS (TCP)") } @@ -77,16 +77,15 @@ module Panel: Panel = { Context.setPrompt(true) // send request to view - sendRequest(state, Prompt(header, prompt), response => + sendRequest(state, Prompt(header, prompt), async response => switch response { | PromptSuccess(result) => - callbackOnPromptSuccess(result)->Promise.map(_ => { - Context.setPrompt(false) - // put the focus back to the editor after prompting - Editor.focus(state.document) - // prompt success, clear the cached prompt - ViewCache.clearPrompt(state.panelCache) - }) + let _ = await callbackOnPromptSuccess(result) + Context.setPrompt(false) + // put the focus back to the editor after prompting + Editor.focus(state.document) + // prompt success, clear the cached prompt + ViewCache.clearPrompt(state.panelCache) | PromptInterrupted => Context.setPrompt(false) // put the focus back to the editor after prompting @@ -95,21 +94,20 @@ module Panel: Panel = { ViewCache.clearPrompt(state.panelCache) // restore the previously cached view ViewCache.restore(state.panelCache, state->get) - Promise.resolved() } ) } - let interruptPrompt = state => - sendEvent(state, PromptInterrupt)->Promise.tap(() => { - Context.setPrompt(false) - // put the focus back to the editor after prompting - Editor.focus(state.document) - // prompt interrupted, clear the cached prompt - ViewCache.clearPrompt(state.panelCache) - // restore the previously cached view - ViewCache.restore(state.panelCache, state->get) - }) + let interruptPrompt = async state => { + await sendEvent(state, PromptInterrupt) + Context.setPrompt(false) + // put the focus back to the editor after prompting + Editor.focus(state.document) + // prompt interrupted, clear the cached prompt + ViewCache.clearPrompt(state.panelCache) + // restore the previously cached view + ViewCache.restore(state.panelCache, state->get) + } } module type DebugBuffer = { @@ -132,7 +130,7 @@ module DebugBuffer: DebugBuffer = { let destroy = Singleton.DebugBuffer.destroy let sendEvent = (event: View.EventToView.t) => - Singleton.DebugBuffer.get()->Option.mapWithDefault(Promise.resolved(), x => + Singleton.DebugBuffer.get()->Option.mapWithDefault(Promise.resolve(), x => x->WebviewPanel.sendEvent(event) ) @@ -154,7 +152,7 @@ module DebugBuffer: DebugBuffer = { } let reveal = state => - Singleton.DebugBuffer.get()->Option.mapWithDefault(Promise.resolved(), debugBuffer => { + Singleton.DebugBuffer.get()->Option.mapWithDefault(Promise.resolve(), debugBuffer => { WebviewPanel.reveal(debugBuffer) display(state.runningInfoLog) }) diff --git a/src/Tokens.res b/src/Tokens.res index 149ca10f..08595874 100644 --- a/src/Tokens.res +++ b/src/Tokens.res @@ -76,7 +76,7 @@ module Token = { // from SExpression let parseDirectHighlightings: array => array = tokens => - tokens->Js.Array.sliceFrom(2, _)->Array.map(parse)->Array.keepMap(x => x) + tokens->(Js.Array.sliceFrom(2, _))->Array.map(parse)->Array.keepMap(x => x) // from JSON let decodeToken = { @@ -88,7 +88,7 @@ module Token = { bool, option(string), option(pair(string, int)), - )->map((. (start, end_, aspects, isTokenBased, note, source)) => { + )->map(((start, end_, aspects, isTokenBased, note, source)) => { start: start - 1, end_: end_ - 1, aspects: aspects->Array.map(Aspect.parse), @@ -101,7 +101,7 @@ module Token = { // from JSON let decodeResponseHighlightingInfoDirect = { open JsonCombinators.Json.Decode - pair(bool, array(decodeToken))->map((. (keepHighlighting, xs)) => (keepHighlighting, xs)) + pair(bool, array(decodeToken))->map(((keepHighlighting, xs)) => (keepHighlighting, xs)) } } @@ -111,7 +111,7 @@ module type Module = { let make: unit => t let addEmacsFilePath: (t, string) => unit let addJSONFilePath: (t, string) => unit - let readTempFiles: (t, VSCode.TextEditor.t) => Promise.promise + let readTempFiles: (t, VSCode.TextEditor.t) => promise let insert: (t, VSCode.TextEditor.t, array) => unit let clear: t => unit @@ -142,42 +142,39 @@ module Module: Module = { | JSON(filepath) => filepath } - let readAndParse = format => { - N.Util.promisify(N.Fs.readFile)(. toFilepath(format)) - ->Promise.Js.fromBsPromise - ->Promise.Js.toResult - ->Promise.map(x => - switch x { - | Ok(buffer) => - switch format { - | Emacs(_) => - let tokens = switch Parser.SExpression.parse(Node.Buffer.toString(buffer))[0] { - | Some(Ok(L(xs))) => xs - | _ => [] - } - // RemoveTokenBasedHighlighting - let removeTokenBasedHighlighting = switch tokens[0] { - | Some(A("remove")) => true - | _ => false - } - let tokens = Js.Array.sliceFrom(1, tokens)->Array.keepMap(Token.parse) - (removeTokenBasedHighlighting, tokens) - | JSON(_) => - let raw = Node.Buffer.toString(buffer) - switch Js.Json.parseExn(raw) { - | exception _e => (false, []) - | json => - switch JsonCombinators.Json.decode(json, Token.decodeResponseHighlightingInfoDirect) { - | Ok((keepHighlighting, tokens)) => (keepHighlighting, tokens) - | Error(_err) => - Js.log("Error in decoding JSON: " ++ _err) - (false, []) - } + let readAndParse = async format => { + try { + let fileHandle = await NodeJs.Fs.open_(toFilepath(format), NodeJs.Fs.Flag.read) + let buffer = await NodeJs.Fs.FileHandle.readFile(fileHandle) + switch format { + | Emacs(_) => + let tokens = switch Parser.SExpression.parse(NodeJs.Buffer.toString(buffer))[0] { + | Some(Ok(L(xs))) => xs + | _ => [] + } + // RemoveTokenBasedHighlighting + let removeTokenBasedHighlighting = switch tokens[0] { + | Some(A("remove")) => true + | _ => false + } + let tokens = Js.Array.sliceFrom(1, tokens)->Array.keepMap(Token.parse) + (removeTokenBasedHighlighting, tokens) + | JSON(_) => + let raw = NodeJs.Buffer.toString(buffer) + switch Js.Json.parseExn(raw) { + | exception _e => (false, []) + | json => + switch JsonCombinators.Json.decode(json, Token.decodeResponseHighlightingInfoDirect) { + | Ok((keepHighlighting, tokens)) => (keepHighlighting, tokens) + | Error(_err) => + Js.log("Error in decoding JSON: " ++ _err) + (false, []) } } - | Error(_err) => (false, []) } - ) + } catch { + | _ => (false, []) + } } } @@ -234,16 +231,12 @@ module Module: Module = { Js.Array.push(TempFile.JSON(filepath), self.tempFiles)->ignore // read temp files and add Tokens added from "addEmacsFilePath" or "addJSONFilePath" - let readTempFiles = (self, editor) => { + let readTempFiles = async (self, editor) => { // read and parse and concat them - self.tempFiles - ->Array.map(TempFile.readAndParse) - ->Promise.allArray - ->Promise.map(xs => xs->Array.map(snd)->Array.concatMany) - ->Promise.map(tokens => { - insert(self, editor, tokens) - self.tempFiles = [] - }) + let xs = await self.tempFiles->Array.map(TempFile.readAndParse)->Promise.all + let tokens = xs->Array.map(snd)->Array.concatMany + insert(self, editor, tokens) + self.tempFiles = [] } let clear = self => { @@ -266,7 +259,7 @@ module Module: Module = { info.source->Option.map(((filepath, offset)) => (range, filepath, offset)) ) ->Option.map(((range, filepath, offset)) => { - VSCode.Workspace.openTextDocumentWithFileName(filepath)->Promise.map(document => { + VSCode.Workspace.openTextDocumentWithFileName(filepath)->Promise.thenResolve(document => { let text = Editor.Text.getAll(document) let offsetConverter = Agda.OffsetConverter.make(text) let offset = Agda.OffsetConverter.convert(offsetConverter, offset - 1) diff --git a/src/Util/Chan.res b/src/Util/Chan.res index e148513d..dc6841c6 100644 --- a/src/Util/Chan.res +++ b/src/Util/Chan.res @@ -10,106 +10,109 @@ module EventEmitter3 = { // Class: EventEmitter - @bs.module("eventemitter3") @bs.new + @module("eventemitter3") @new external make: unit => t = "EventEmitter" // Event: 'newListener' - @bs.send.pipe(: t) - external onNewListener: (@bs.as("newListener") _, listener2>) => t = "on" + @send + external onNewListener: (t, @as("newListener") _, listener2>) => t = "on" - @bs.send.pipe(: t) - external onNewListener2: (@bs.as("newListener") _, listener2>) => t = + @send + external onNewListener2: (t, @as("newListener") _, listener2>) => t = "on" - @bs.send.pipe(: t) + @send external onNewListener3: ( - @bs.as("newListener") _, + t, + @as("newListener") _, listener2>, ) => t = "on" - @bs.send.pipe(: t) - external onceNewListener: (@bs.as("newListener") _, listener2>) => t = + @send + external onceNewListener: (t, @as("newListener") _, listener2>) => t = "once" - @bs.send.pipe(: t) + @send external onceNewListener2: ( - @bs.as("newListener") _, + t, + @as("newListener") _, listener2>, ) => t = "once" - @bs.send.pipe(: t) + @send external onceNewListener3: ( - @bs.as("newListener") _, + t, + @as("newListener") _, listener2>, ) => t = "once" // Event: 'removeListener' - @bs.send.pipe(: t) - external onRemoveListener: (@bs.as("removeListener") _, listener) => t = "on" + @send + external onRemoveListener: (t, @as("removeListener") _, listener) => t = "on" - @bs.send.pipe(: t) - external onceRemoveListener: (@bs.as("removeListener") _, listener) => t = "once" + @send + external onceRemoveListener: (t, @as("removeListener") _, listener) => t = "once" // EventEmitter.defaultMaxListeners - @bs.val @bs.scope("EventEmitter") + @val @scope("EventEmitter") external defaultMaxListeners: int = "defaultMaxListeners" // emitter.addListener(eventName, listener) - @bs.send.pipe(: t) - external addListener: (eventName, listener<'a>) => t = "addListener" + @send + external addListener: (t, eventName, listener<'a>) => t = "addListener" - @bs.send.pipe(: t) - external addListener2: (eventName, listener2<'a, 'b>) => t = "addListener" + @send + external addListener2: (t, eventName, listener2<'a, 'b>) => t = "addListener" - @bs.send.pipe(: t) - external addListener3: (eventName, listener3<'a, 'b, 'c>) => t = "addListener" + @send + external addListener3: (t, eventName, listener3<'a, 'b, 'c>) => t = "addListener" // emitter.emit(eventName[, ...args]) - @bs.send.pipe(: t) external emit0: eventName => bool = "emit" + @send external emit0: (t, eventName) => bool = "emit" - @bs.send.pipe(: t) external emit: (eventName, 'a) => bool = "emit" + @send external emit: (t, eventName, 'a) => bool = "emit" - @bs.send.pipe(: t) external emit2: (eventName, 'a, 'b) => bool = "emit" + @send external emit2: (t, eventName, 'a, 'b) => bool = "emit" - @bs.send.pipe(: t) external emit3: (eventName, 'a, 'b, 'c) => bool = "emit" + @send external emit3: (t, eventName, 'a, 'b, 'c) => bool = "emit" // emitter.eventNames() - @bs.send.pipe(: t) - external eventNames: eventName => array = "eventNames" + @send + external eventNames: (t, eventName) => array = "eventNames" // emitter.getMaxListeners() - @bs.send.pipe(: t) external getMaxListeners: int = "getMaxListeners" + @send external getMaxListeners: t => int = "getMaxListeners" // emitter.listenerCount(eventName) - @bs.send.pipe(: t) - external listenerCount: eventName => int = "listenerCount" + @send + external listenerCount: (t, eventName) => int = "listenerCount" // emitter.listeners(eventName) - @bs.send.pipe(: t) - external listeners: eventName => array> = "listeners" + @send + external listeners: (t, eventName) => array> = "listeners" - @bs.send.pipe(: t) - external listeners2: eventName => array> = "listeners" + @send + external listeners2: (t, eventName) => array> = "listeners" - @bs.send.pipe(: t) - external listeners3: eventName => array> = "listeners" + @send + external listeners3: (t, eventName) => array> = "listeners" // emitter.off(eventName, listener) - @bs.send.pipe(: t) external off: (eventName, listener<'a>) => t = "off" - @bs.send.pipe(: t) - external off2: (eventName, listener2<'a, 'b>) => t = "off" - @bs.send.pipe(: t) - external off3: (eventName, listener3<'a, 'b, 'c>) => t = "off" + @send external off: (t, eventName, listener<'a>) => t = "off" + @send + external off2: (t, eventName, listener2<'a, 'b>) => t = "off" + @send + external off3: (t, eventName, listener3<'a, 'b, 'c>) => t = "off" // emitter.on(eventName, listener) @@ -119,42 +122,42 @@ module EventEmitter3 = { // emitter.once(eventName, listener) - @bs.send.pipe(: t) external once: (eventName, listener<'a>) => t = "once" + @send external once: (t, eventName, listener<'a>) => t = "once" - @bs.send.pipe(: t) - external once2: (eventName, listener2<'a, 'b>) => t = "once" + @send + external once2: (t, eventName, listener2<'a, 'b>) => t = "once" - @bs.send.pipe(: t) - external once3: (eventName, listener3<'a, 'b, 'c>) => t = "once" + @send + external once3: (t, eventName, listener3<'a, 'b, 'c>) => t = "once" // emitter.prependListener(eventName, listener) - @bs.send.pipe(: t) - external prependListener: (eventName, listener<'a>) => t = "prependListener" + @send + external prependListener: (t, eventName, listener<'a>) => t = "prependListener" - @bs.send.pipe(: t) - external prependListener2: (eventName, listener2<'a, 'b>) => t = "prependListener" + @send + external prependListener2: (t, eventName, listener2<'a, 'b>) => t = "prependListener" - @bs.send.pipe(: t) - external prependListener3: (eventName, listener3<'a, 'b, 'c>) => t = "prependListener" + @send + external prependListener3: (t, eventName, listener3<'a, 'b, 'c>) => t = "prependListener" // emitter.prependOnceListener(eventName, listener) - @bs.send.pipe(: t) - external prependOnceListener: (eventName, listener<'a>) => t = "prependOnceListener" + @send + external prependOnceListener: (t, eventName, listener<'a>) => t = "prependOnceListener" - @bs.send.pipe(: t) - external prependOnceListener2: (eventName, listener2<'a, 'b>) => t = "prependOnceListener" + @send + external prependOnceListener2: (t, eventName, listener2<'a, 'b>) => t = "prependOnceListener" - @bs.send.pipe(: t) - external prependOnceListener3: (eventName, listener3<'a, 'b, 'c>) => t = "prependOnceListener" + @send + external prependOnceListener3: (t, eventName, listener3<'a, 'b, 'c>) => t = "prependOnceListener" // emitter.removeAllListeners([eventName]) - @bs.send.pipe(: t) external removeAllListeners: t = "removeAllListeners" + @send external removeAllListeners: t => unit = "removeAllListeners" - @bs.send.pipe(: t) - external removeAllListeners_: array => t = "removeAllListeners" + @send + external removeAllListeners_: (t, array) => t = "removeAllListeners" // emitter.removeListener(eventName, listener) @@ -164,28 +167,28 @@ module EventEmitter3 = { // emitter.setMaxListeners(n) - @bs.send.pipe(: t) external setMaxListeners: int => t = "setMaxListeners" + @send external setMaxListeners: (t, int) => t = "setMaxListeners" // emitter.rawListeners(eventName) - @bs.send.pipe(: t) - external rawListeners: eventName => array> = "rawListeners" + @send + external rawListeners: (t, eventName) => array> = "rawListeners" - @bs.send.pipe(: t) - external rawListeners2: eventName => array> = "rawListeners" + @send + external rawListeners2: (t, eventName) => array> = "rawListeners" - @bs.send.pipe(: t) - external rawListeners3: eventName => array> = "rawListeners" + @send + external rawListeners3: (t, eventName) => array> = "rawListeners" // events.once(emitter, name) - @bs.module("eventemitter3") + @module("eventemitter3") external oncePromise: (t, string) => Js.Promise.t<'a> = "once" - @bs.module("eventemitter3") + @module("eventemitter3") external oncePromise2: (t, string) => Js.Promise.t<('a, 'b)> = "once" - @bs.module("eventemitter3") + @module("eventemitter3") external oncePromise3: (t, string) => Js.Promise.t<('a, 'b, 'c)> = "once" } @@ -193,23 +196,25 @@ module Module: { type t<'a> let make: unit => t<'a> let emit: (t<'a>, 'a) => unit - let on: (t<'a>, 'a => unit, unit) => unit - let once: t<'a> => Promise.t<'a> + let on: (t<'a>, 'a => unit) => (unit => unit) + let once: t<'a> => promise<'a> + let pipe: (t<'a>, t<'a>) => (unit => unit) let destroy: t<'a> => unit } = { type t<'a> = EventEmitter3.t let make = EventEmitter3.make - let emit = (self, x) => self |> EventEmitter3.emit("data", x) |> ignore + let emit = (self, x) => EventEmitter3.emit(self, "data", x)->ignore let on = (self, callback) => { - self |> EventEmitter3.on("data", callback) |> ignore - () => self |> EventEmitter3.removeListener("data", callback) |> ignore + self->EventEmitter3.on("data", callback)->ignore + () => self->EventEmitter3.removeListener("data", callback)->ignore } - let once = self => { - let (promise, resolve) = Promise.pending() - self |> EventEmitter3.once("data", resolve) |> ignore - promise + let once = self => Promise.make((resolve, _) => { + self->EventEmitter3.once("data", resolve)->ignore + }) + let pipe = (self, other) => { + self->on(val => other->emit(val)) } - let destroy = self => self |> EventEmitter3.removeAllListeners |> ignore + let destroy = self => self->EventEmitter3.removeAllListeners->ignore } include Module diff --git a/src/Util/Util.res b/src/Util/Util.res index 87f28914..8a1cfeb0 100644 --- a/src/Util/Util.res +++ b/src/Util/Util.res @@ -1,5 +1,3 @@ -open Belt - module Result = { let mapError = (x, f) => switch x { @@ -17,16 +15,16 @@ module Decode = { | TagOnly('a) let sum = decoder => { - field("tag", string)->flatMap((. tag) => + field("tag", string)->flatMap(tag => switch decoder(tag) { | Payload(d) => field("contents", d) - | TagOnly(d) => custom((. _) => d) + | TagOnly(d) => custom(_ => d) } ) } let tuple5 = (decodeA, decodeB, decodeC, decodeD, decodeE) => { - custom((. json) => { + custom(json => { if !Js.Array.isArray(json) { Error.expected("array", json) } @@ -63,7 +61,7 @@ module Decode = { } let tuple6 = (decodeA, decodeB, decodeC, decodeD, decodeE, decodeF) => { - custom((. json) => { + custom(json => { if !Js.Array.isArray(json) { Error.expected("array", json) } @@ -108,7 +106,7 @@ module Encode = { | Payload(string, Js.Json.t) | TagOnly('a) - let sum = (f, x) => + let sum = f => x => switch f(x) { | Payload(tag, json) => Unsafe.object({ @@ -197,14 +195,19 @@ module Pretty = { let list = xs => xs->List.toArray->array } -let rec oneByOne' = x => +let rec oneByOne' = async x => switch x { - | list{} => Promise.resolved(list{}) - | list{x, ...xs} => x->Promise.flatMap(x' => oneByOne'(xs)->Promise.map(xs' => list{x', ...xs'})) + | list{} => list{} + | list{x, ...xs} => + let x' = await x + let result = await oneByOne'(xs) + list{x', ...result} } -let oneByOne = xs => oneByOne'(List.fromArray(xs))->Promise.map(List.toArray) - +let oneByOne = async xs => { + let xs' = await oneByOne'(List.fromArray(xs)) + List.toArray(xs') +} module JsError = { let toString = (_e: Js.Exn.t): string => %raw("_e.toString()") } @@ -233,20 +236,37 @@ module List = { } } -module P = { - external toJsExn: Js.Promise.error => Js.Exn.t = "%identity" - - let toPromise = (p: promise>): Promise.t> => { - p - ->Promise.Js.fromBsPromise - ->Promise.Js.toResult - ->Promise.map(x => - switch x { - | Ok(Ok(x)) => Ok(x) - | Ok(Error(e)) => Error(e) - | Error(e) => Error(toJsExn(e)) - } - ) +// module P = { +// external toJsExn: Js.Promise.error => Js.Exn.t = "%identity" + +// let toPromise = (p: promise>): Promise.t> => { +// p +// ->Promise.Js.fromBsPromise +// ->Promise.Js.toResult +// ->Promise.map(x => +// switch x { +// | Ok(Ok(x)) => Ok(x) +// | Ok(Error(e)) => Error(e) +// | Error(e) => Error(toJsExn(e)) +// } +// ) +// } +// } + +module Promise_ = { + // Like `Promise.make` but without having to supply a callback + let pending: unit => (promise<'a>, 'a => unit, 'e => unit) = () => { + let resolve = ref(None) + let reject = ref(None) + let promise = Promise.make((res, rej) => { + resolve := Some(res) + reject := Some(rej) + }) + + switch (resolve.contents, reject.contents) { + | (Some(resolve), Some(reject)) => (promise, resolve, reject) + | _ => raise(Failure("Promise is not initialized")) + } } } @@ -266,4 +286,4 @@ module String = { } // let unlines = xs => xs->Js.Array2.joinWith(NodeJs.Os.eol) let unlines = xs => xs->Js.Array2.joinWith("\n") -} +} \ No newline at end of file diff --git a/src/View/Common.res b/src/View/Common.res index 09a13bca..927a4089 100644 --- a/src/View/Common.res +++ b/src/View/Common.res @@ -21,7 +21,7 @@ module AgdaPosition = { let encode = ({line, col, pos}) => { open JsonCombinators.Json.Encode - tuple3(int, int, int, (line, col, pos)) + tuple3(int, int, int)((line, col, pos)) } } @@ -70,7 +70,7 @@ module AgdaInterval = { let encode = ({start, end_}) => { open JsonCombinators.Json.Encode - tuple2(AgdaPosition.encode, AgdaPosition.encode, (start, end_)) + tuple2(AgdaPosition.encode, AgdaPosition.encode)((start, end_)) } } @@ -208,7 +208,7 @@ module AgdaRange = { ) ) } - }) + }, ...) let fuse = (a: t, b: t): t => { open AgdaInterval @@ -297,9 +297,9 @@ module AgdaRange = { switch x { | NoRange => TagOnly("NoRange") | Range(source, intervals) => - Payload("Range", pair(option(string), array(AgdaInterval.encode), (source, intervals))) + Payload("Range", pair(option(string), array(AgdaInterval.encode))((source, intervals))) } - ) + , ...) } } diff --git a/src/View/Component/Item.res b/src/View/Component/Item.res index ee9f6ef5..97b0340f 100644 --- a/src/View/Component/Item.res +++ b/src/View/Component/Item.res @@ -73,7 +73,7 @@ let decode = { JsonCombinators.Json.Decode.option(Common.AgdaRange.decode), string, string, - )->map((. (text, raw, range, label, style)) => Labeled(label, style, text, raw, range)), + )->map(((text, raw, range, label, style)) => Labeled(label, style, text, raw, range)), ) | "Unlabeled" => Payload( @@ -81,9 +81,9 @@ let decode = { RichText.decode, option(string), JsonCombinators.Json.Decode.option(Common.AgdaRange.decode), - )->map((. (text, raw, range)) => Unlabeled(text, raw, range)), + )->map(((text, raw, range)) => Unlabeled(text, raw, range)), ) - | "Header" => Payload(string->map((. s) => Header(s))) + | "Header" => Payload(string->map(s => Header(s))) | tag => raise(DecodeError("[Item] Unknown constructor: " ++ tag)) } ) @@ -108,14 +108,13 @@ let encode = { | Unlabeled(text, raw, range) => Payload(( "Unlabeled", - tuple3( - RichText.encode, - option(string), - option(Common.AgdaRange.encode), - (text, raw, range), - ), + tuple3(RichText.encode, option(string), option(Common.AgdaRange.encode))(( + text, + raw, + range, + )), )) - | Header(s) => Payload(("Header", s |> string)) + | Header(s) => Payload(("Header", string(s))) } - ) + , ...) } diff --git a/src/View/Component/Link.res b/src/View/Component/Link.res index 64c2bddf..93459f93 100644 --- a/src/View/Component/Link.res +++ b/src/View/Component/Link.res @@ -28,6 +28,7 @@ let encode = { | SrcLoc(range) => Payload("LinkRange", AgdaRange.encode(range)) | Hole(index) => Payload("LinkHole", int(index)) } + , ... ) } @@ -72,6 +73,7 @@ module Event = { | MouseOver(link) => Payload("MouseOver", encode(link)) | MouseOut(link) => Payload("MouseOut", encode(link)) } + , ... ) } } @@ -87,13 +89,11 @@ let make = (~target=SrcLoc(NoRange), ~jump=false, ~hover=false, ~className=[], ~ } let link = React.useContext(Event.eventContext) - let className = Belt.List.fromArray(className) - switch sanitizedTarget { - | None => children + | None => children | Some(t) => { if jump { link->Chan.emit(Event.JumpToTarget(t)) diff --git a/src/View/Component/RichText.res b/src/View/Component/RichText.res index bb44ca6a..7ed57664 100644 --- a/src/View/Component/RichText.res +++ b/src/View/Component/RichText.res @@ -125,19 +125,19 @@ module Module = { open JsonCombinators.Json.Encode Util.Encode.sum(x => switch x { - | Icon(s, cs) => Payload("Icon", pair(string, ClassNames.encode, (s, cs))) - | Text(s, cs) => Payload("Text", pair(string, ClassNames.encode, (s, cs))) + | Icon(s, cs) => Payload("Icon", pair(string, ClassNames.encode)((s, cs))) + | Text(s, cs) => Payload("Text", pair(string, ClassNames.encode)((s, cs))) | Link(r, s, cs) => Payload( "Link", - tuple3(Common.AgdaRange.encode, array(encodeRec()), ClassNames.encode, (r, s, cs)), + tuple3(Common.AgdaRange.encode, array(encodeRec()), ClassNames.encode)((r, s, cs)), ) | Hole(i) => Payload("Hole", int(i)) - | Horz(xs) => Payload("Horz", array(array(encodeRec()), xs)) - | Vert(xs) => Payload("Vert", array(array(encodeRec()), xs)) - | Parn(x) => Payload("Parn", array(encodeRec(), x)) - | PrHz(xs) => Payload("PrHz", array(array(encodeRec()), xs)) - } + | Horz(xs) => Payload("Horz", array(array(encodeRec()))(xs)) + | Vert(xs) => Payload("Vert", array(array(encodeRec()))(xs)) + | Parn(x) => Payload("Parn", array(encodeRec())(x)) + | PrHz(xs) => Payload("PrHz", array(array(encodeRec()))(xs)) + }, ... ) } let encode = encodeRec() @@ -193,11 +193,11 @@ module Module = { ->Array.mapWithIndex((i, x) => { switch x { | Text(text, className) => - let className = {String.concat(" ", List.fromArray(className))} + let className = {String.concatMany(" ", className)} {React.string(text)} | Icon(kind, className) => let className = Array.concat(["codicon", "codicon-" ++ kind], className) - let className = {String.concat(" ", List.fromArray(className))} + let className = {String.concatMany(" ", className)}
    | Link(range, children, className) => let child = make(~value=RichText(children)) @@ -251,7 +251,7 @@ module Module = { open JsonCombinators.Json.Encode x => switch x { - | RichText(elemss) => array(Inline.encode, elemss) + | RichText(elemss) => array(Inline.encode)(elemss) } } } diff --git a/src/View/Hook.res b/src/View/Hook.res index cfe37adc..0e2c559d 100644 --- a/src/View/Hook.res +++ b/src/View/Hook.res @@ -1,7 +1,9 @@ // React Hook for request-response handling let recv = (reqChan: Chan.t<'req>, resChan: Chan.t<'res>, handler: 'req => Promise.t<'res>) => React.useEffect1( - () => Some(reqChan->Chan.on(req => handler(req)->Promise.get(resChan->Chan.emit))), + () => Some(reqChan->Chan.on(req => { + handler(req)->Promise.thenResolve(res => resChan->Chan.emit(res))->Promise.done + })), [], ) diff --git a/src/View/Panel/Emacs/Emacs__Parser2.res b/src/View/Panel/Emacs/Emacs__Parser2.res index 2200a321..6b9e334f 100644 --- a/src/View/Panel/Emacs/Emacs__Parser2.res +++ b/src/View/Panel/Emacs/Emacs__Parser2.res @@ -112,7 +112,7 @@ let parseGoalType: string => Js.Dict.t> = raw => { } } ) - let removeDelimeter = xs => xs->Emacs__Parser.Dict.update("metas", Js.Array.sliceFrom(1)) + let removeDelimeter = xs => xs->Emacs__Parser.Dict.update("metas", x => Js.Array.sliceFrom(1, x)) let lines = Parser.splitToLines(raw) lines->partiteGoalTypeContext->removeDelimeter->partiteMetas } diff --git a/src/View/Panel/Panel.res b/src/View/Panel/Panel.res index 11c7105d..efbb8652 100644 --- a/src/View/Panel/Panel.res +++ b/src/View/Panel/Panel.res @@ -41,7 +41,7 @@ let make = ( let onUpdatePromptIM = action => onEventFromView->Chan.emit(PromptIMUpdate(action)) // on receiving View Requests - Hook.recv(onRequest, onResponse, msg => + Hook.recv(onRequest, onResponse, async msg => switch msg { | Prompt(header', {body, placeholder, value}) => // set the view @@ -56,14 +56,19 @@ let make = ( } ) - let (promise, resolve) = Promise.pending() - promptResponseResolver.current = Some(resolve) - promise->Promise.map(x => - switch x { - | None => View.Response.PromptInterrupted - | Some(result) => View.Response.PromptSuccess(result) - } - ) + // let (promise, resolve) = Promise.pending() + // promptResponseResolver.current = Some(resolve) + // promise->Promise.map(x => + // switch x { + // | None => View.Response.PromptInterrupted + // | Some(result) => View.Response.PromptSuccess(result) + // } + // ) + let promise = Promise.make((resolve, _) => promptResponseResolver.current = Some(resolve)) + switch await promise { + | None => View.Response.PromptInterrupted + | Some(result) => View.Response.PromptSuccess(result) + } } ) diff --git a/src/View/Panel/Prompt.res b/src/View/Panel/Prompt.res index e65ed89a..a08a08ab 100644 --- a/src/View/Panel/Prompt.res +++ b/src/View/Panel/Prompt.res @@ -69,7 +69,7 @@ let make = ( // analysis the input box let inputRef = React.useRef(Js.Nullable.null) - React.useEffect(() => { + React.useEffectOnEveryRender(() => { // Update mouse selection in inputRef.current ->Js.Nullable.toOption diff --git a/src/View/Singleton.res b/src/View/Singleton.res index 849499a1..bc4671d2 100644 --- a/src/View/Singleton.res +++ b/src/View/Singleton.res @@ -12,9 +12,9 @@ module Panel: { let panel = WebviewPanel.make("Agda", extensionPath) handle := Some(panel) // free the handle when the view has been forcibly destructed - WebviewPanel.onceDestroyed(panel)->Promise.get(() => { + WebviewPanel.onceDestroyed(panel)->Promise.finally(() => { handle := None - }) + })->Promise.done panel | Some(panel) => panel } @@ -38,9 +38,9 @@ module DebugBuffer: { let panel = WebviewPanel.make("Agda Debug Buffer", extensionPath) handle := Some(panel) // free the handle when the view has been forcibly destructed - WebviewPanel.onceDestroyed(panel)->Promise.get(() => { + WebviewPanel.onceDestroyed(panel)->Promise.finally(() => { handle := None - }) + })->Promise.done panel | Some(panel) => panel } diff --git a/src/View/View.res b/src/View/View.res index 9a5ac3d3..8fee5e62 100644 --- a/src/View/View.res +++ b/src/View/View.res @@ -19,10 +19,10 @@ module Header = { open JsonCombinators.Json.Decode Util.Decode.sum(x => { switch x { - | "Plain" => Payload(string->map((. text) => Plain(text))) - | "Success" => Payload(string->map((. text) => Success(text))) - | "Warning" => Payload(string->map((. text) => Warning(text))) - | "Error" => Payload(string->map((. text) => Error(text))) + | "Plain" => Payload(string->map(text => Plain(text))) + | "Success" => Payload(string->map(text => Success(text))) + | "Warning" => Payload(string->map(text => Warning(text))) + | "Error" => Payload(string->map(text => Error(text))) | tag => raise(DecodeError("[Header] Unknown constructor: " ++ tag)) } }) @@ -37,7 +37,7 @@ module Header = { | Warning(text) => Payload("Warning", string(text)) | Error(text) => Payload("Error", string(text)) } - ) + , ...) } } @@ -53,18 +53,18 @@ module Prompt = { // TODO: replace `field.required(. "body", option(string))` with `field.optional(. "body", string)` open JsonCombinators.Json.Decode object(field => { - body: field.required(. "body", option(string)), - placeholder: field.required(. "placeholder", option(string)), - value: field.required(. "value", option(string)), + body: field.required("body", option(string)), + placeholder: field.required("placeholder", option(string)), + value: field.required("value", option(string)), }) } let encode = ({body, placeholder, value}) => { open JsonCombinators.Json.Encode Unsafe.object({ - "body": option(string, body), - "placeholder": option(string, placeholder), - "value": option(string, value), + "body": option(string)(body), + "placeholder": option(string)(placeholder), + "value": option(string)(value), }) } } @@ -91,11 +91,11 @@ module EventToView = { | "Deactivate" => TagOnly(Deactivate) | "Update" => Payload( - tuple3(string, Translator.decode, int)->map((. ( + tuple3(string, Translator.decode, int)->map(((sequence, translation, index)) => Update( sequence, translation, index, - )) => Update(sequence, translation, index)), + )), ) | "BrowseUp" => TagOnly(BrowseUp) | "BrowseRight" => TagOnly(BrowseRight) @@ -113,13 +113,13 @@ module EventToView = { | Activate => TagOnly("Activate") | Deactivate => TagOnly("Deactivate") | Update(sequence, translation, index) => - Payload("Update", tuple3(string, Translator.encode, int, (sequence, translation, index))) + Payload("Update", tuple3(string, Translator.encode, int)((sequence, translation, index))) | BrowseUp => TagOnly("BrowseUp") | BrowseRight => TagOnly("BrowseRight") | BrowseDown => TagOnly("BrowseDown") | BrowseLeft => TagOnly("BrowseLeft") } - ) + , ...) } } @@ -147,22 +147,16 @@ module EventToView = { switch x { | "Display" => Payload( - tuple2(Header.decode, array(Item.decode))->map((. (header, body)) => Display( - header, - body, - )), + tuple2(Header.decode, array(Item.decode))->map(((header, body)) => Display(header, body)), ) | "Append" => Payload( - tuple2(Header.decode, array(Item.decode))->map((. (header, body)) => Append( - header, - body, - )), + tuple2(Header.decode, array(Item.decode))->map(((header, body)) => Append(header, body)), ) - | "SetStatus" => Payload(string->map((. text) => SetStatus(text))) + | "SetStatus" => Payload(string->map(text => SetStatus(text))) | "PromptInterrupt" => TagOnly(PromptInterrupt) - | "PromptIMUpdate" => Payload(string->map((. text) => PromptIMUpdate(text))) - | "InputMethod" => Payload(InputMethod.decode->map((. payload) => InputMethod(payload))) + | "PromptIMUpdate" => Payload(string->map(text => PromptIMUpdate(text))) + | "InputMethod" => Payload(InputMethod.decode->map(payload => InputMethod(payload))) | tag => raise(DecodeError("[EventToView] Unknown constructor: " ++ tag)) } }) @@ -173,15 +167,15 @@ module EventToView = { Util.Encode.sum(x => switch x { | Display(header, body) => - Payload("Display", tuple2(Header.encode, array(Item.encode), (header, body))) + Payload("Display", tuple2(Header.encode, array(Item.encode))((header, body))) | Append(header, body) => - Payload("Append", tuple2(Header.encode, array(Item.encode), (header, body))) + Payload("Append", tuple2(Header.encode, array(Item.encode))((header, body))) | SetStatus(text) => Payload("SetStatus", string(text)) | PromptInterrupt => TagOnly("PromptInterrupt") | PromptIMUpdate(text) => Payload("PromptIMUpdate", string(text)) | InputMethod(payload) => Payload("InputMethod", InputMethod.encode(payload)) } - ) + , ...) } } @@ -196,13 +190,13 @@ module Request = { // JSON encode/decode let decode = { open JsonCombinators.Json.Decode - tuple2(Header.decode, Prompt.decode)->map((. (header, prompt)) => Prompt(header, prompt)) + tuple2(Header.decode, Prompt.decode)->map(((header, prompt)) => Prompt(header, prompt)) } let encode = request => { open JsonCombinators.Json.Encode switch request { - | Prompt(header, prompt) => tuple2(Header.encode, Prompt.encode, (header, prompt)) + | Prompt(header, prompt) => tuple2(Header.encode, Prompt.encode)((header, prompt)) } } } @@ -223,8 +217,8 @@ module RequestOrEventToView = { open JsonCombinators.Json.Decode Util.Decode.sum(x => { switch x { - | "Request" => Payload(Request.decode->map((. payload) => Request(payload))) - | "Event" => Payload(EventToView.decode->map((. payload) => Event(payload))) + | "Request" => Payload(Request.decode->map(payload => Request(payload))) + | "Event" => Payload(EventToView.decode->map(payload => Event(payload))) | tag => raise(DecodeError("[RequestOrEventToView] Unknown constructor: " ++ tag)) } }) @@ -236,7 +230,7 @@ module RequestOrEventToView = { | Request(payload) => Payload("Request", Request.encode(payload)) | Event(payload) => Payload("Event", EventToView.encode(payload)) } - ) + , ...) } } @@ -249,7 +243,7 @@ module Response = { open JsonCombinators.Json.Decode Util.Decode.sum(x => { switch x { - | "PromptSuccess" => Payload(string->map((. result) => PromptSuccess(result))) + | "PromptSuccess" => Payload(string->map(result => PromptSuccess(result))) | "PromptInterrupted" => TagOnly(PromptInterrupted) | tag => raise(DecodeError("[Response] Unknown constructor: " ++ tag)) } @@ -263,7 +257,7 @@ module Response = { | PromptSuccess(result) => Payload("PromptSuccess", string(result)) | PromptInterrupted => TagOnly("PromptInterrupted") } - ) + , ...) } } @@ -277,8 +271,8 @@ module EventFromView = { open JsonCombinators.Json.Decode Util.Decode.sum(x => { switch x { - | "InsertChar" => Payload(string->map((. char) => InsertChar(char))) - | "ChooseSymbol" => Payload(string->map((. symbol) => ChooseSymbol(symbol))) + | "InsertChar" => Payload(string->map(char => InsertChar(char))) + | "ChooseSymbol" => Payload(string->map(symbol => ChooseSymbol(symbol))) | tag => raise(DecodeError("[EventFromView.InputMethod] Unknown constructor: " ++ tag)) } }) @@ -291,7 +285,7 @@ module EventFromView = { | InsertChar(char) => Payload("InsertChar", string(char)) | ChooseSymbol(symbol) => Payload("ChooseSymbol", string(symbol)) } - ) + , ...) } } @@ -309,8 +303,8 @@ module EventFromView = { open JsonCombinators.Json.Decode Util.Decode.sum(x => { switch x { - | "MouseSelect" => Payload(Interval.decode->map((. interval) => MouseSelect(interval))) - | "KeyUpdate" => Payload(string->map((. char) => KeyUpdate(char))) + | "MouseSelect" => Payload(Interval.decode->map(interval => MouseSelect(interval))) + | "KeyUpdate" => Payload(string->map(char => KeyUpdate(char))) | "BrowseUp" => TagOnly(BrowseUp) | "BrowseDown" => TagOnly(BrowseDown) | "BrowseLeft" => TagOnly(BrowseLeft) @@ -333,7 +327,7 @@ module EventFromView = { | BrowseRight => TagOnly("BrowseRight") | Escape => TagOnly("Escape") } - ) + , ...) } } @@ -363,10 +357,9 @@ module EventFromView = { switch x { | "Initialized" => TagOnly(Initialized) | "Destroyed" => TagOnly(Destroyed) - | "InputMethod" => Payload(InputMethod.decode->map((. payload) => InputMethod(payload))) - | "PromptIMUpdate" => - Payload(PromptIMUpdate.decode->map((. payload) => PromptIMUpdate(payload))) - | "JumpToTarget" => Payload(Link.decode->map((. link) => JumpToTarget(link))) + | "InputMethod" => Payload(InputMethod.decode->map(payload => InputMethod(payload))) + | "PromptIMUpdate" => Payload(PromptIMUpdate.decode->map(payload => PromptIMUpdate(payload))) + | "JumpToTarget" => Payload(Link.decode->map(link => JumpToTarget(link))) | tag => raise(DecodeError("[EventFromView] Unknown constructor: " ++ tag)) } }) @@ -381,7 +374,7 @@ module EventFromView = { | PromptIMUpdate(action) => Payload("PromptIMUpdate", PromptIMUpdate.encode(action)) | JumpToTarget(link) => Payload("JumpToTarget", Link.encode(link)) } - ) + , ...) } } @@ -395,19 +388,17 @@ module ResponseOrEventFromView = { open JsonCombinators.Json.Decode Util.Decode.sum(x => { switch x { - | "Response" => Payload(Response.decode->map((. payload) => Response(payload))) - | "Event" => Payload(EventFromView.decode->map((. payload) => Event(payload))) + | "Response" => Payload(Response.decode->map(payload => Response(payload))) + | "Event" => Payload(EventFromView.decode->map(payload => Event(payload))) | tag => raise(DecodeError("[ResponseOrEventFromView] Unknown constructor: " ++ tag)) } }) } - let encode = { - Util.Encode.sum(x => - switch x { - | Response(payload) => Payload("Response", Response.encode(payload)) - | Event(payload) => Payload("Event", EventFromView.encode(payload)) - } - ) - } + let encode = Util.Encode.sum(x => + switch x { + | Response(payload) => Payload("Response", Response.encode(payload)) + | Event(payload) => Payload("Event", EventFromView.encode(payload)) + } + ) } diff --git a/src/View/WebviewPanel.res b/src/View/WebviewPanel.res index 726db4a9..c9d90011 100644 --- a/src/View/WebviewPanel.res +++ b/src/View/WebviewPanel.res @@ -5,7 +5,7 @@ module WebviewPanel: { let make: (string, string) => t let destroy: t => unit // messaging - let send: (t, string) => Promise.t + let send: (t, string) => promise let recv: (t, Js.Json.t => unit) => VSCode.Disposable.t // events let onDestroyed: (t, unit => unit) => VSCode.Disposable.t @@ -93,7 +93,7 @@ module WebviewPanel: { } let make = (title, extensionPath) => { - let distPath = Node.Path.join2(extensionPath, "dist") + let distPath = NodeJs.Path.join2(extensionPath, "dist") let panel = VSCode.Window.createWebviewPanel( "panel", title, @@ -168,11 +168,11 @@ module type Module = { let make: (string, string) => t let destroy: t => unit - let sendEvent: (t, View.EventToView.t) => Promise.t - let sendRequest: (t, View.Request.t, View.Response.t => Promise.t) => Promise.t + let sendEvent: (t, View.EventToView.t) => promise + let sendRequest: (t, View.Request.t, View.Response.t => promise) => promise let onEvent: (t, View.EventFromView.t => unit) => VSCode.Disposable.t - let onceDestroyed: t => Promise.t + let onceDestroyed: t => promise let reveal: t => unit } @@ -194,28 +194,28 @@ module Module: Module = { } // messaging - let send = (view, requestOrEvent) => + let send = async (view, requestOrEvent) => switch view.status { | Uninitialized(queuedRequests, queuedEvents) => open View.RequestOrEventToView switch requestOrEvent { | Request(req) => - let (promise, resolve) = Promise.pending() - Js.Array.push( - ( - req, - x => - switch x { - | View.ResponseOrEventFromView.Event(_) => resolve(None) - | Response(res) => resolve(Some(res)) - }, - ), - queuedRequests, - )->ignore - promise + await Promise.make((resolve, _) => { + Js.Array.push( + ( + req, + x => + switch x { + | View.ResponseOrEventFromView.Event(_) => resolve(None) + | Response(res) => resolve(Some(res)) + }, + ), + queuedRequests, + )->ignore + }) | Event(event) => Js.Array.push(event, queuedEvents)->ignore - Promise.resolved(None) + None } | Initialized => open View.RequestOrEventToView @@ -224,24 +224,25 @@ module Module: Module = { switch requestOrEvent { | Request(_) => let promise = view.onResponse->Chan.once - view.panel - ->WebviewPanel.send(stringified) - ->Promise.flatMap(_ => promise) - ->Promise.map(res => Some(res)) - | Event(_) => view.panel->WebviewPanel.send(stringified)->Promise.map(_ => None) + let _ = await view.panel->WebviewPanel.send(stringified) + let res = await promise + Some(res) + | Event(_) => + let _ = await view.panel->WebviewPanel.send(stringified) + None } } - let sendEvent = (view, event) => - send(view, View.RequestOrEventToView.Event(event))->Promise.map(_ => ()) - let sendRequest = (view, request, callback) => - send(view, View.RequestOrEventToView.Request(request))->Promise.flatMap(x => - switch x { - | None => Promise.resolved() - | Some(response) => callback(response) - } - ) + let sendEvent = async (view, event) => { + let _ = await send(view, View.RequestOrEventToView.Event(event)) + () + } + let sendRequest = async (view, request, callback) => + switch await send(view, View.RequestOrEventToView.Request(request)) { + | None => () + | Some(response) => await callback(response) + } let onEvent = (view, callback) => // Handle events from the webview view.onEvent->Chan.on(callback)->VSCode.Disposable.make @@ -289,13 +290,13 @@ module Module: Module = { | Uninitialized(queuedRequests, queuedEvents) => view.status = Initialized queuedRequests->Belt.Array.forEach(((req, resolve)) => - send(view, View.RequestOrEventToView.Request(req))->Promise.get( + send(view, View.RequestOrEventToView.Request(req))->Promise.thenResolve( x => switch x { | None => () | Some(res) => resolve(View.ResponseOrEventFromView.Response(res)) }, - ) + )->Promise.done ) queuedEvents->Belt.Array.forEach(event => send(view, View.RequestOrEventToView.Event(event))->ignore @@ -325,8 +326,8 @@ module Module: Module = { } // resolves the returned promise once the view has been destroyed - let onceDestroyed = (view: t): Promise.t => { - let (promise, resolve) = Promise.pending() + let onceDestroyed = (view: t): promise => { + let (promise, resolve, _) = Util.Promise_.pending() let disposable = view.onEvent->Chan.on(response => switch response { @@ -335,7 +336,7 @@ module Module: Module = { } ) - promise->Promise.tap(disposable) + promise->Promise.thenResolve(disposable) } // show/focus diff --git a/test/RunTestFromCLI.res b/test/RunTestFromCLI.res index 206cc26f..e6078565 100644 --- a/test/RunTestFromCLI.res +++ b/test/RunTestFromCLI.res @@ -5,25 +5,17 @@ type options = { } @module("@vscode/test-electron") -external runTests: options => Js.Promise.t = "runTests" - -let dirname: option = %bs.node(__dirname) +external runTests: options => promise = "runTests" let testSuiteAdapterFileName = "TestSuiteAdapter.bs.js" // The folder containing the Extension Manifest package.json // Passed to `--extensionDevelopmentPath` -let extensionDevelopmentPath = switch dirname { -| None => Node.Path.resolve(Node.Process.cwd(), "../") -| Some(dirname) => Node.Path.resolve(dirname, "../") -} +let extensionDevelopmentPath = NodeJs.Path.resolve([NodeJs.Global.dirname, "../"]) // The path to the extension test script // Passed to --extensionTestsPath -let extensionTestsPath = switch dirname { -| None => Node.Path.resolve(Node.Process.cwd(), testSuiteAdapterFileName) -| Some(dirname) => Node.Path.resolve(dirname, testSuiteAdapterFileName) -} +let extensionTestsPath = NodeJs.Path.resolve([NodeJs.Global.dirname, testSuiteAdapterFileName]) Js.log( "Running from the CLI, with\n extensionDevelopmentPath: " ++ @@ -31,14 +23,17 @@ Js.log( ("\n extensionTestsPath: " ++ extensionTestsPath)), ) -Js.Promise.catch( - error => { - Js.log(error) - Js.log("Failed to run tests") - Node.Process.exit(1) - }, +try { runTests({ extensionDevelopmentPath, extensionTestsPath, - }), -)->ignore + })->Promise.finally(() => { + NodeJs.Process.process->NodeJs.Process.exitWithCode(0) + })->ignore +} catch { +| error => + Js.log(error) + Js.log("Failed to run tests") + NodeJs.Process.process->NodeJs.Process.exitWithCode(1) +} + diff --git a/test/TestSuiteAdapter.res b/test/TestSuiteAdapter.res index 9df1fcf5..0141be56 100644 --- a/test/TestSuiteAdapter.res +++ b/test/TestSuiteAdapter.res @@ -1,8 +1,3 @@ -open Belt - -// bindings for Node.js __dirname -let dirname: option = %bs.node(__dirname) - // bindings for using mocha programmatically module Mocha = { type t @@ -11,16 +6,16 @@ module Mocha = { color: bool, } - @bs.module @bs.new external make: options => t = "mocha" - @bs.send external addFile: (t, string) => unit = "addFile" - @bs.send external run: (t, int => unit) => unit = "run" + @module @new external make: options => t = "mocha" + @send external addFile: (t, string) => unit = "addFile" + @send external run: (t, int => unit) => unit = "run" } // bindings for glob module Glob = { type options = {cwd: string} - @bs.module + @module external glob: (string, options, (Js.nullable<'error>, array) => unit) => unit = "glob" } @@ -33,29 +28,31 @@ let run = () => { // dirname: ./lib/js/test // testsRoot: ./lib/js/test/tests - let testsRoot = - dirname->Option.mapWithDefault("./", dirname => Node.Path.resolve(dirname, "tests")) + let testsRoot = NodeJs.Path.resolve([NodeJs.Global.dirname, "tests"]) - Js.Promise.make((~resolve, ~reject) => Glob.glob("**/*.js", {cwd: testsRoot}, (err, files) => + Js.Promise.make((~resolve, ~reject) => + Glob.glob("**/*.js", {cwd: testsRoot}, (err, files) => switch Js.Nullable.toOption(err) { - | Some(err) => reject(. err) + | Some(err) => reject(err) | None => // Add files to the test suite - files->Array.forEach(file => mocha->Mocha.addFile(Node.Path.resolve(testsRoot, file))) + files->Array.forEach(file => mocha->Mocha.addFile(NodeJs.Path.resolve([testsRoot, file]))) // Run the mocha test - switch mocha->Mocha.run(failures => - if failures > 0 { - reject(. TestFailure(string_of_int(failures) ++ " tests failed.")) - } else { - resolve(. true) - } + switch mocha->Mocha.run( + failures => + if failures > 0 { + reject(TestFailure(string_of_int(failures) ++ " tests failed.")) + } else { + resolve(true) + }, ) { | () => () | exception exn => Js.Console.error(exn) - reject(. exn) + reject(exn) } } - )) + ) + ) } diff --git a/test/tests/Parser/Test__Parser.res b/test/tests/Parser/Test__Parser.res index 4e22df12..f2e37b37 100644 --- a/test/tests/Parser/Test__Parser.res +++ b/test/tests/Parser/Test__Parser.res @@ -1,35 +1,32 @@ -open! BsMocha.Mocha -open! Belt - -module Assert = BsMocha.Assert +open Mocha describe("when running Parser.userInputToSExpr", () => { it("should make escaped backslash explicit", () => { let raw = "\\ x -> x" let expected = "\\\\ x -> x" let actual = Parser.userInputToSExpr(raw) - Assert.deep_equal(actual, expected) + Assert.deepEqual(actual, expected) }) it("should make escaped newline on Unix explicit", () => { let raw = "x\ny" let expected = "x\\ny" let actual = Parser.userInputToSExpr(raw) - Assert.deep_equal(actual, expected) + Assert.deepEqual(actual, expected) }) it("should make escaped newline on Windows explicit", () => { let raw = "x\r\ny" let expected = "x\\r\\ny" let actual = Parser.userInputToSExpr(raw) - Assert.deep_equal(actual, expected) + Assert.deepEqual(actual, expected) }) it("should make escaped double quote explicit", () => { let raw = "\"x\"" let expected = "\\\"x\\\"" let actual = Parser.userInputToSExpr(raw) - Assert.deep_equal(actual, expected) + Assert.deepEqual(actual, expected) }) }) \ No newline at end of file diff --git a/test/tests/Parser/Test__Parser__Agda.res b/test/tests/Parser/Test__Parser__Agda.res index ebe6942d..9c4c23bb 100644 --- a/test/tests/Parser/Test__Parser__Agda.res +++ b/test/tests/Parser/Test__Parser__Agda.res @@ -1,27 +1,24 @@ -open! BsMocha.Mocha -open! Belt - -module Assert = BsMocha.Assert +open Mocha describe("when running Agda.Expr.parse", () => { it("should parse a plain string", () => { let raw = `ℕ` let expected = Some([Agda.Term.Plain("ℕ")]) let actual = Agda.Expr.parse(raw) - Assert.deep_equal(actual, expected) + Assert.deepEqual(actual, expected) }) it("should parse a question mark", () => { let raw = `?3` let expected = Some([Agda.Term.QuestionMark(3)]) let actual = Agda.Expr.parse(raw) - Assert.deep_equal(actual, expected) + Assert.deepEqual(actual, expected) }) it("should parse a underscore", () => { let raw = ` _4hi ` let expected = Some([Agda.Term.Underscore("_4hi")]) let actual = Agda.Expr.parse(raw) - Assert.deep_equal(actual, expected) + Assert.deepEqual(actual, expected) }) }) @@ -30,14 +27,14 @@ describe("when running Agda.OutputConstraint.parse", () => { let raw = `x : ℕ` let expected = Some(Agda.OutputConstraint.OfType(RichText.string("x"), RichText.string("ℕ"))) let actual = Agda.OutputConstraint.parse(raw) - Assert.deep_equal(actual, expected) + Assert.deepEqual(actual, expected) }) it("should parse JustType", () => { let raw = `Type ℕ` let expected = Some(Agda.OutputConstraint.JustType(RichText.string("ℕ"))) let actual = Agda.OutputConstraint.parse(raw) - Assert.deep_equal(actual, expected) + Assert.deepEqual(actual, expected) }) it("should parse JustSort on Windows", () => { @@ -48,7 +45,7 @@ describe("when running Agda.OutputConstraint.parse", () => { ), ) let actual = Agda.OutputConstraint.parse(raw) - Assert.deep_equal(actual, expected) + Assert.deepEqual(actual, expected) }) it("should parse JustSort on Unix", () => { @@ -59,6 +56,6 @@ describe("when running Agda.OutputConstraint.parse", () => { ), ) let actual = Agda.OutputConstraint.parse(raw) - Assert.deep_equal(actual, expected) + Assert.deepEqual(actual, expected) }) }) diff --git a/test/tests/Parser/Test__Parser__Emacs2.res b/test/tests/Parser/Test__Parser__Emacs2.res index 2b0e48bf..f7f7ca16 100644 --- a/test/tests/Parser/Test__Parser__Emacs2.res +++ b/test/tests/Parser/Test__Parser__Emacs2.res @@ -1,7 +1,4 @@ -open! BsMocha.Mocha -open! Belt - -module Assert = BsMocha.Assert +open Mocha let tempNormalize = xs => { Js.Dict.map((. value) => { @@ -15,7 +12,7 @@ describe("when running Emacs__Parser2.parseGoalType", () => { ————————————————————————————————————————————————————————————` let actual = Emacs__Parser2.parseGoalType(raw) let expected = Js.Dict.fromArray([("goal", ["Goal: ℕ"])]) - Assert.deep_equal(actual, expected) + Assert.deepEqual(actual, expected) }) it("should parse goal + have", () => { @@ -24,7 +21,7 @@ Have: ℕ ————————————————————————————————————————————————————————————` let actual = Emacs__Parser2.parseGoalType(raw) let expected = Js.Dict.fromArray([("goal", ["Goal: ℕ"]), ("have", ["Have: ℕ"])]) - Assert.deep_equal(actual, expected) + Assert.deepEqual(actual, expected) }) it("should parse goal + have + context", () => { @@ -39,7 +36,7 @@ x : ℕ` ("have", ["Have: ℕ"]), ("interactionMetas", ["y : ℕ", "x : ℕ"]), ]) - Assert.deep_equal(actual, expected) + Assert.deepEqual(actual, expected) }) }) @@ -55,7 +52,7 @@ Sort _0 [ at /Users/banacorn/agda/examples/A.agda:11,5-20 ] ("interactionMetas", ["?0 : ℕ", "?1 : ℕ"]), ("hiddenMetas", ["Sort _0 [ at /Users/banacorn/agda/examples/A.agda:11,5-20 ]"]), ]) - Assert.deep_equal(actual, expected) + Assert.deepEqual(actual, expected) }) it("should parse goals + errors", () => { @@ -68,7 +65,7 @@ Unsolved constraints` ("interactionMetas", ["?0 : _2"]), ("errors", ["Unsolved constraints"]), ]) - Assert.deep_equal(actual, expected) + Assert.deepEqual(actual, expected) }) it("should parse goals that span multiple lines", () => { @@ -84,7 +81,7 @@ Unsolved constraints` ], ), ])->tempNormalize - Assert.deep_equal(actual, expected) + Assert.deepEqual(actual, expected) }) }) @@ -106,7 +103,7 @@ when checking that the clause a has type _8`, ], ), ])->tempNormalize - Assert.deep_equal(actual, expected) + Assert.deepEqual(actual, expected) }) it("should parse an error + warnings", () => { let raw = `———— Error ————————————————————————————————————————————————— @@ -145,6 +142,6 @@ definition: boo`, ], ), ])->tempNormalize - Assert.deep_equal(actual, expected) + Assert.deepEqual(actual, expected) }) }) diff --git a/test/tests/Parser/Test__Parser__Response.res b/test/tests/Parser/Test__Parser__Response.res index 366a9484..1d1602bc 100644 --- a/test/tests/Parser/Test__Parser__Response.res +++ b/test/tests/Parser/Test__Parser__Response.res @@ -1,7 +1,4 @@ -open Belt -open BsMocha.Mocha -open Js.Promise - +open Mocha open! Test__Parser__SExpression open Test__Util @@ -19,18 +16,20 @@ let toPrioritizedResponses = exprs => | Ok(v) => [v] } ) - ->Array.concatMany + ->Array.flat describe("when parsing responses", () => Golden.getGoldenFilepathsSync("../../../../test/tests/Parser/Response")->Array.forEach(filepath => - BsMocha.Promise.it("should golden test " ++ filepath, () => - Golden.readFile(filepath) |> then_(raw => - raw - ->Golden.map(parseSExpression([])) + Async.it( + "should golden test " ++ filepath, + async () => { + let raw = await Golden.readFile(filepath) + await raw + ->Golden.map(parseSExpression([], ...)) ->Golden.map(toPrioritizedResponses) - ->Golden.map(Strings.unlinesWith(Response.Prioritized.toString)) + ->Golden.map(Strings.unlinesWith(Response.Prioritized.toString, ...)) ->Golden.compare - ) + }, ) ) ) diff --git a/test/tests/Parser/Test__Parser__SExpression.res b/test/tests/Parser/Test__Parser__SExpression.res index 06fb3929..ad392b48 100644 --- a/test/tests/Parser/Test__Parser__SExpression.res +++ b/test/tests/Parser/Test__Parser__SExpression.res @@ -1,10 +1,6 @@ -open BsMocha.Mocha -open Js.Promise - +open Mocha open Test__Util -open Belt - // [Int] -> String -> [SExpression] let parseSExpression = (breakpoints, input) => { open Parser.Incr.Gen @@ -17,7 +13,7 @@ let parseSExpression = (breakpoints, input) => { Assert.fail( "Failed when parsing S-expression: " ++ Parser.Error.toString(SExpression(errNo, raw)), ) - | Yield(Ok(a)) => Js.Array.push(a, output.contents) |> ignore + | Yield(Ok(a)) => ignore(Js.Array.push(a, output.contents)) | Stop => () } ) @@ -26,8 +22,8 @@ let parseSExpression = (breakpoints, input) => { ->Js.String.trim ->Strings.breakInput(breakpoints) ->Array.map(Parser.splitToLines) - ->Array.concatMany - ->Array.forEach(Parser.Incr.feed(parser)) + ->Array.flat + ->Array.forEach(Parser.Incr.feed(parser, ...)) output.contents } @@ -36,13 +32,15 @@ describe("when parsing S-expressions as a whole", () => Golden.getGoldenFilepathsSync( "../../../../test/tests/Parser/SExpression", )->Array.forEach(filepath => - BsMocha.Promise.it("should golden test " ++ filepath, () => - Golden.readFile(filepath) |> then_(raw => - raw - ->Golden.map(parseSExpression([])) - ->Golden.map(Strings.unlinesWith(Parser.SExpression.toString)) + Async.it( + "should golden test " ++ filepath, + async () => { + let raw = await Golden.readFile(filepath) + await raw + ->Golden.map(parseSExpression([], ...)) + ->Golden.map(Strings.unlinesWith(Parser.SExpression.toString, ...)) ->Golden.compare - ) + }, ) ) ) @@ -51,13 +49,15 @@ describe("when parsing S-expressions incrementally", () => Golden.getGoldenFilepathsSync( "../../../../test/tests/Parser/SExpression", )->Array.forEach(filepath => - BsMocha.Promise.it("should golden test " ++ filepath, () => - Golden.readFile(filepath) |> then_(raw => - raw - ->Golden.map(parseSExpression([3, 23, 171, 217, 1234, 2342, 3453])) - ->Golden.map(Strings.unlinesWith(Parser.SExpression.toString)) + Async.it( + "should golden test " ++ filepath, + async () => { + let raw = await Golden.readFile(filepath) + await raw + ->Golden.map(parseSExpression([3, 23, 171, 217, 1234, 2342, 3453], ...)) + ->Golden.map(Strings.unlinesWith(Parser.SExpression.toString, ...)) ->Golden.compare - ) + }, ) ) ) diff --git a/test/tests/Parser/Test__Parser__SourceFile.res b/test/tests/Parser/Test__Parser__SourceFile.res index 0b381b27..7c682122 100644 --- a/test/tests/Parser/Test__Parser__SourceFile.res +++ b/test/tests/Parser/Test__Parser__SourceFile.res @@ -1,7 +1,4 @@ -open Belt -open BsMocha.Mocha -open Js.Promise -open Test__Util +open Mocha describe("when parsing file paths", () => it("should recognize the file extensions", () => { @@ -15,45 +12,55 @@ describe("when parsing file paths", () => }) ) -if onUnix { +if Test__Util.onUnix { describe("when parsing source files (Unix only)", () => { describe("Regex.comment", () => { - it("should work", () => { - open SourceFile - let match = Js.String.search(Regex.comment) - Assert.equal(match("no comment"), -1) - Assert.equal(match("no comment\n"), -1) - Assert.equal(match("-- comment"), 0) - Assert.equal(match("-- comment with newline\n"), 0) - }) + it( + "should work", + () => { + open SourceFile + let match = Js.String.search(Regex.comment) + Assert.equal(match("no comment"), -1) + Assert.equal(match("no comment\n"), -1) + Assert.equal(match("-- comment"), 0) + Assert.equal(match("-- comment with newline\n"), 0) + }, + ) - it("should work when \"--\" is placed immediately after some text (issue #56)", () => { - open SourceFile - let match = Js.String.search(Regex.comment) - Assert.equal(match("a -- comment after some text"), 2) - Assert.equal(match("a-- comment placed immediately after some text"), -1) - Assert.equal(match("_-- comment placed immediately after name parts"), 1) - Assert.equal(match(";-- comment placed immediately after name parts"), 1) - Assert.equal(match(".-- comment placed immediately after name parts"), 1) - Assert.equal(match("\"-- comment placed immediately after name parts"), 1) - Assert.equal(match("(-- comment placed immediately after name parts"), 1) - Assert.equal(match(")-- comment placed immediately after name parts"), 1) - Assert.equal(match("{-- comment placed immediately after name parts"), 1) - Assert.equal(match("}-- comment placed immediately after name parts"), 1) - Assert.equal(match("@-- comment placed immediately after name parts"), 1) - }) + it( + "should work when \"--\" is placed immediately after some text (issue #56)", + () => { + open SourceFile + let match = Js.String.search(Regex.comment) + Assert.equal(match("a -- comment after some text"), 2) + Assert.equal(match("a-- comment placed immediately after some text"), -1) + Assert.equal(match("_-- comment placed immediately after name parts"), 1) + Assert.equal(match(";-- comment placed immediately after name parts"), 1) + Assert.equal(match(".-- comment placed immediately after name parts"), 1) + Assert.equal(match("\"-- comment placed immediately after name parts"), 1) + Assert.equal(match("(-- comment placed immediately after name parts"), 1) + Assert.equal(match(")-- comment placed immediately after name parts"), 1) + Assert.equal(match("{-- comment placed immediately after name parts"), 1) + Assert.equal(match("}-- comment placed immediately after name parts"), 1) + Assert.equal(match("@-- comment placed immediately after name parts"), 1) + }, + ) }) + open Test__Util + Golden.getGoldenFilepathsSync( "../../../../test/tests/Parser/SourceFile", )->Array.forEach(filepath => - BsMocha.Promise.it("should golden test " ++ filepath, () => - Golden.readFile(filepath) |> then_(raw => - raw - ->Golden.map(SourceFile.parse([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], filepath)) - ->Golden.map(Strings.unlinesWith(SourceFile.Diff.toString)) + Async.it( + "should golden test " ++ filepath, + async () => { + let raw = await Golden.readFile(filepath) + await raw + ->Golden.map(SourceFile.parse([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], filepath, ...)) + ->Golden.map(Strings.unlinesWith(SourceFile.Diff.toString, ...)) ->Golden.compare - ) + }, ) ) }) diff --git a/test/tests/Test__CaseSplit.res b/test/tests/Test__CaseSplit.res index 15dad557..b8807cbc 100644 --- a/test/tests/Test__CaseSplit.res +++ b/test/tests/Test__CaseSplit.res @@ -1,71 +1,59 @@ -open Belt -open! BsMocha.Mocha +open Mocha open! Test__Util describe("State__Goal.caseSplitAux dry run", () => { - Q.it("should calculate the infomation needed for case splitting correctly", () => - VSCode.Window.showTextDocumentWithUri( + Q.it("should calculate the infomation needed for case splitting correctly", async () => { + let editor = await VSCode.Window.showTextDocumentWithUri( VSCode.Uri.file(Path.asset("CaseSplit1.agda")), None, - )->Promise.flatMap( - editor => { - let document = VSCode.TextEditor.document(editor) - Goal.makeMany(editor, [0, 1, 2, 3, 4, 5, 6, 7, 8]) - ->Promise.map( - goals => - goals->Array.map( - goal => { - // convert `rewriteRange` to text in that range because range offsets are different on different OSs - let (inWhereClause, indentWidth, rewriteRange) = State__Goal.caseSplitAux( - document, - goal, - ) - let rewriteRange = VSCode.Range.make( - VSCode.TextDocument.positionAt(document, fst(rewriteRange)), - VSCode.TextDocument.positionAt(document, snd(rewriteRange)), - ) - (inWhereClause, indentWidth, Editor.Text.get(document, rewriteRange)) - }, - ), - ) - ->Promise.map( - results => Ok( - Assert.deep_equal( - results, - [ - (false, 9, `x → {! !}`), - (false, 23, `y → {! !}`), - (false, 4, `x → {! !}`), - (false, 4, `y → {! !}`), - (true, 13, `x → {! !}`), - (true, 13, `y → {! !}`), - (true, 2, `x → {! !}`), - (true, 2, `y → {! !}`), - (false, 13, `x → {! !}`), - ], - ), - ), + ) + let document = VSCode.TextEditor.document(editor) + let goals = await Goal.makeMany(editor, [0, 1, 2, 3, 4, 5, 6, 7, 8]) + let results = goals->Array.map( + goal => { + // convert `rewriteRange` to text in that range because range offsets are different on different OSs + let (inWhereClause, indentWidth, rewriteRange) = State__Goal.caseSplitAux(document, goal) + let rewriteRange = VSCode.Range.make( + VSCode.TextDocument.positionAt(document, fst(rewriteRange)), + VSCode.TextDocument.positionAt(document, snd(rewriteRange)), ) + (inWhereClause, indentWidth, Editor.Text.get(document, rewriteRange)) }, ) - ) + Ok( + Assert.deepEqual( + results, + [ + (false, 9, `x → {! !}`), + (false, 23, `y → {! !}`), + (false, 4, `x → {! !}`), + (false, 4, `y → {! !}`), + (true, 13, `x → {! !}`), + (true, 13, `y → {! !}`), + (true, 2, `x → {! !}`), + (true, 2, `y → {! !}`), + (false, 13, `x → {! !}`), + ], + ), + ) + }) }) describe_skip("Integration test", () => { - let context = Agda.make("CaseSplit2.agda") let fileContent = ref("") Q.before(() => readFile(Path.asset("CaseSplit2.agda"), fileContent)) Q.after(() => restoreFile(Path.asset("CaseSplit2.agda"), fileContent)) - Q.it("should have more goals after splitting", () => { - context - ->Promise.flatMap(Agda.load) - ->Promise.flatMapOk(Agda.case(Some(VSCode.Position.make(7, 16), "x"))) - ->Promise.mapOk( - ((_, state)) => { - Assert.deep_equal(Array.length(state.goals), 10) - }, - ) + Async.it("should have more goals after splitting", async () => { + let context = await Agda.make("CaseSplit2.agda") + switch await Agda.load(context) { + | Ok(result) => + switch await Agda.case(Some(VSCode.Position.make(7, 16), "x"), result) { + | Ok((_, state)) => Assert.deepEqual(Array.length(state.goals), 10) + | Error(error) => raise(error) + } + | Error(error) => raise(error) + } }) }) diff --git a/test/tests/Test__Connection.res b/test/tests/Test__Connection.res index d14cf8d2..26aec60f 100644 --- a/test/tests/Test__Connection.res +++ b/test/tests/Test__Connection.res @@ -1,17 +1,17 @@ -open! BsMocha.Mocha +open Mocha open Test__Util -describe_skip("Connection", ~timeout=10000, () => { - Q.it("should download the language server", () => { - let globalStoragePath = Path.globalStoragePath() +describe_skip("Connection", () => { + Q.it("should download the language server", async () => { + let globalStoragePath = Path.globalStoragePath let useLSP = true - Connection.start(globalStoragePath, useLSP, _ => ()) - ->Promise.mapOk(_ => ()) - ->Promise.flatMapError(e => { + switch await Connection.start(globalStoragePath, useLSP, _ => ()) { + | Ok(_) => Ok() + | Error(e) => let (header, body) = Connection.Error.toString(e) let message = header ++ "\n" ++ body - A.fail(message) - }) + await A.fail(message) + } }) }) diff --git a/test/tests/Test__EditorIM.res b/test/tests/Test__EditorIM.res index 4c30ad17..a9e88ea7 100644 --- a/test/tests/Test__EditorIM.res +++ b/test/tests/Test__EditorIM.res @@ -1,559 +1,558 @@ -open Belt -open! BsMocha.Mocha +open Mocha open Test__Util module Js' = Js open Promise module Js = Js' -type setup = { - editor: VSCode.TextEditor.t, - channels: State__Type.channels, -} +// type setup = { +// editor: VSCode.TextEditor.t, +// channels: State__Type.channels, +// } -let acquire = setup => - switch setup.contents { - | None => resolved(Error(Util.Error("Cannot acquire the setup"))) - | Some(setup) => resolved(Ok(setup)) - } +// let acquire = async setup => +// switch setup.contents { +// | None => Error(Util.Error("Cannot acquire the setup")) +// | Some(setup) => Ok(setup) +// } -let cleanup = setup => { - let range = VSCode.Range.make(VSCode.Position.make(0, 0), VSCode.Position.make(100, 0)) - setup.editor->VSCode.TextEditor.document->Editor.Text.replace(range, "") -} +// let cleanup = setup => { +// let range = VSCode.Range.make(VSCode.Position.make(0, 0), VSCode.Position.make(100, 0)) +// setup.editor->VSCode.TextEditor.document->Editor.Text.replace(range, "") +// } -module IM = { - include IM +// module IM = { +// include IM - let equal = (xs: IM.Log.t) => A.equal(xs) - let deep_equal = (xs: IM.Log.t) => A.deep_equal(xs) +// let equal = (xs: IM.Log.t) => A.equal(xs) +// let deepEqual = (xs: IM.Log.t) => A.deepEqual(xs) - let wait = setup => setup.channels.inputMethod->Chan.once->Promise.map(x => Ok(x)) - let wait2nd = setup => - setup.channels.inputMethod - ->Chan.once - ->Promise.flatMap(_ => setup.channels.inputMethod->Chan.once) - ->Promise.map(x => Ok(x)) +// let wait = setup => setup.channels.inputMethod->Chan.once->Promise.map(x => Ok(x)) +// let wait2nd = setup => +// setup.channels.inputMethod +// ->Chan.once +// ->Promise.flatMap(_ => setup.channels.inputMethod->Chan.once) +// ->Promise.map(x => Ok(x)) - let activate = (setup, ~positions=?, ()) => { - let promise = wait(setup) - let positions = positions->Option.getWithDefault(Editor.Cursor.getMany(setup.editor)) - Editor.Cursor.setMany(setup.editor, positions) - VSCode.Commands.executeCommand0("agda-mode.input-symbol[Activate]") - ->flatMap(result => result) - ->flatMap(_ => promise) - } +// let activate = (setup, ~positions=?, ()) => { +// let promise = wait(setup) +// let positions = positions->Option.getWithDefault(Editor.Cursor.getMany(setup.editor)) +// Editor.Cursor.setMany(setup.editor, positions) +// VSCode.Commands.executeCommand0("agda-mode.input-symbol[Activate]") +// ->flatMap(result => result) +// ->flatMap(_ => promise) +// } - let deactivate = setup => { - let promise = wait(setup) - VSCode.Commands.executeCommand0("agda-mode.escape") - ->flatMap(result => result) - ->flatMap(_ => promise) - } +// let deactivate = setup => { +// let promise = wait(setup) +// VSCode.Commands.executeCommand0("agda-mode.escape") +// ->flatMap(result => result) +// ->flatMap(_ => promise) +// } - let insertChar = (setup, char) => { - let promise1 = wait(setup) - let promise2 = wait2nd(setup) +// let insertChar = (setup, char) => { +// let promise1 = wait(setup) +// let promise2 = wait2nd(setup) - let positions = Editor.Cursor.getMany(setup.editor) +// let positions = Editor.Cursor.getMany(setup.editor) - setup.editor - ->VSCode.TextEditor.document - ->Editor.Text.batchInsert(positions, char) - ->map(succeed => succeed ? Ok() : Error(Js.Exn.raiseError("Failed to insert " ++ char))) - ->flatMapOk(() => promise1) - ->flatMapOk(result1 => promise2->Promise.mapOk(result2 => Array.concat(result1, result2))) - } +// setup.editor +// ->VSCode.TextEditor.document +// ->Editor.Text.batchInsert(positions, char) +// ->map(succeed => succeed ? Ok() : Error(Js.Exn.raiseError("Failed to insert " ++ char))) +// ->flatMapOk(() => promise1) +// ->flatMapOk(result1 => promise2->Promise.mapOk(result2 => Array.concat(result1, result2))) +// } - let backspace = setup => { - let promise1 = wait(setup) - let promise2 = wait2nd(setup) - let end_ = Editor.Cursor.get(setup.editor) - let start = end_->VSCode.Position.translate(0, -1) - let range = VSCode.Range.make(start, end_) - setup.editor - ->VSCode.TextEditor.document - ->Editor.Text.delete(range) - ->map(succeed => succeed ? Ok() : Error(Js.Exn.raiseError("Failed to backspace"))) - ->flatMapOk(() => promise1) - ->flatMapOk(result1 => promise2->Promise.mapOk(result2 => Array.concat(result1, result2))) - } +// let backspace = setup => { +// let promise1 = wait(setup) +// let promise2 = wait2nd(setup) +// let end_ = Editor.Cursor.get(setup.editor) +// let start = end_->VSCode.Position.translate(0, -1) +// let range = VSCode.Range.make(start, end_) +// setup.editor +// ->VSCode.TextEditor.document +// ->Editor.Text.delete(range) +// ->map(succeed => succeed ? Ok() : Error(Js.Exn.raiseError("Failed to backspace"))) +// ->flatMapOk(() => promise1) +// ->flatMapOk(result1 => promise2->Promise.mapOk(result2 => Array.concat(result1, result2))) +// } - let select = (setup, intervals) => { - let ranges = - intervals->Array.map(Editor.Range.fromInterval(setup.editor->VSCode.TextEditor.document)) - Editor.Selection.setMany(setup.editor, ranges) - Promise.resolved(Ok()) - } - let selectAndWait = (setup, intervals) => { - let promise = wait(setup) - let ranges = - intervals->Array.map(Editor.Range.fromInterval(setup.editor->VSCode.TextEditor.document)) - Editor.Selection.setMany(setup.editor, ranges) - promise - } -} +// let select = (setup, intervals) => { +// let ranges = +// intervals->Array.map(Editor.Range.fromInterval(setup.editor->VSCode.TextEditor.document)) +// Editor.Selection.setMany(setup.editor, ranges) +// Promise.resolved(Ok()) +// } +// let selectAndWait = (setup, intervals) => { +// let promise = wait(setup) +// let ranges = +// intervals->Array.map(Editor.Range.fromInterval(setup.editor->VSCode.TextEditor.document)) +// Editor.Selection.setMany(setup.editor, ranges) +// promise +// } +// } -describe("Input Method (Editor)", () => { - let setup = ref(None) +// describe("Input Method (Editor)", () => { +// let setup = ref(None) - Q.before(() => { - activateExtensionAndOpenFile(Path.asset("InputMethod.agda"))->map( - ((editor, channels)) => { - setup := Some({editor, channels}) - Ok() - }, - ) - }) +// Q.before(() => { +// activateExtensionAndOpenFile(Path.asset("InputMethod.agda"))->map( +// ((editor, channels)) => { +// setup := Some({editor, channels}) +// Ok() +// }, +// ) +// }) - Q.after_each(() => acquire(setup)->mapOk(cleanup)) +// Q.after_each(() => acquire(setup)->mapOk(cleanup)) - describe("Insertion", () => { - Q.it( - `should translate "lambdabar" to "λ"`, - () => - acquire(setup)->flatMapOk( - setup => { - let document = VSCode.TextEditor.document(setup.editor) - IM.activate(setup, ()) - ->flatMapOk(IM.deep_equal([Activate])) - ->flatMapOk(_ => IM.insertChar(setup, "l")) - ->flatMapOk( - IM.deep_equal([RewriteIssued([((0, 1), `←`)]), UpdateView, RewriteApplied]), - ) - ->flatMapOk(() => A.equal(`←`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "a")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(`←a`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "m")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(`←am`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "b")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(`←amb`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "d")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(`←ambd`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "a")) - ->flatMapOk( - IM.deep_equal([RewriteIssued([((0, 6), `λ`)]), UpdateView, RewriteApplied]), - ) - ->flatMapOk(() => A.equal(`λ`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "b")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(`λb`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "a")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(`λba`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "r")) - ->flatMapOk( - IM.deep_equal([RewriteIssued([((0, 4), `ƛ`)]), Deactivate, RewriteApplied]), - ) - ->flatMapOk(() => A.equal(`ƛ`, Editor.Text.getAll(document))) - }, - ), - ) - Q.it( - `should translate "bn" to "𝕟"`, - () => - acquire(setup)->flatMapOk( - setup => { - let document = VSCode.TextEditor.document(setup.editor) - IM.activate(setup, ()) - ->flatMapOk(IM.deep_equal([Activate])) - ->flatMapOk(() => IM.insertChar(setup, "b")) - ->flatMapOk( - IM.deep_equal([RewriteIssued([((0, 1), `♭`)]), UpdateView, RewriteApplied]), - ) - ->flatMapOk(() => A.equal(`♭`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "n")) - ->flatMapOk( - IM.deep_equal([RewriteIssued([((0, 2), `𝕟`)]), Deactivate, RewriteApplied]), - ) - ->flatMapOk(() => A.equal(`𝕟`, Editor.Text.getAll(document))) - }, - ), - ) - Q.it( - `Issue #55, should not deactivate when size of candidate symbols > 1`, - () => - acquire(setup)->flatMapOk( - setup => { - let document = VSCode.TextEditor.document(setup.editor) - IM.activate(setup, ()) - ->flatMapOk(IM.deep_equal([Activate])) - ->flatMapOk(() => IM.insertChar(setup, "a")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(`a`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "s")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(`as`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "t")) - ->flatMapOk( - IM.deep_equal([RewriteIssued([((0, 3), `∗`)]), UpdateView, RewriteApplied]), - ) - ->flatMapOk(() => A.equal(`∗`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "e")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(`∗e`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "r")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(`∗er`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "i")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(`∗eri`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "s")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(`∗eris`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "k")) - ->flatMapOk( - IM.deep_equal([RewriteIssued([((0, 6), `⁎`)]), UpdateView, RewriteApplied]), - ) - ->flatMapOk(() => A.equal(`⁎`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.deactivate(setup)) - ->flatMapOk(IM.deep_equal([Deactivate])) - ->flatMapOk(() => A.equal(`⁎`, Editor.Text.getAll(document))) - }, - ), - ) - }) - describe("Backspacing", () => - Q.it( - `should work just fine`, - () => - acquire(setup)->flatMapOk( - setup => { - let document = VSCode.TextEditor.document(setup.editor) - IM.activate(setup, ()) - ->flatMapOk(IM.deep_equal([Activate])) - ->flatMapOk(() => IM.insertChar(setup, "l")) - ->flatMapOk( - IM.deep_equal([RewriteIssued([((0, 1), `←`)]), UpdateView, RewriteApplied]), - ) - ->flatMapOk(() => A.equal(`←`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "a")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(`←a`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.backspace(setup)) - ->flatMapOk( - IM.deep_equal([RewriteIssued([((0, 1), `←`)]), UpdateView, RewriteApplied]), - ) - ->flatMapOk(() => A.equal(`←`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "a")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(`←a`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "m")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(`←am`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "b")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(`←amb`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "d")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(`←ambd`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "a")) - ->flatMapOk( - IM.deep_equal([RewriteIssued([((0, 6), `λ`)]), UpdateView, RewriteApplied]), - ) - ->flatMapOk(() => A.equal(`λ`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.backspace(setup)) - ->flatMapOk( - IM.deep_equal([RewriteIssued([((0, 0), `lambd`)]), UpdateView, RewriteApplied]), - ) - ->flatMapOk(() => A.equal(`lambd`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.deactivate(setup)) - ->flatMapOk(IM.deep_equal([Deactivate])) - ->flatMapOk(() => A.equal(`lambd`, Editor.Text.getAll(document))) - }, - ), - ) - ) +// describe("Insertion", () => { +// Q.it( +// `should translate "lambdabar" to "λ"`, +// () => +// acquire(setup)->flatMapOk( +// setup => { +// let document = VSCode.TextEditor.document(setup.editor) +// IM.activate(setup, ()) +// ->flatMapOk(IM.deepEqual([Activate])) +// ->flatMapOk(_ => IM.insertChar(setup, "l")) +// ->flatMapOk( +// IM.deepEqual([RewriteIssued([((0, 1), `←`)]), UpdateView, RewriteApplied]), +// ) +// ->flatMapOk(() => A.equal(`←`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "a")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk(() => A.equal(`←a`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "m")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk(() => A.equal(`←am`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "b")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk(() => A.equal(`←amb`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "d")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk(() => A.equal(`←ambd`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "a")) +// ->flatMapOk( +// IM.deepEqual([RewriteIssued([((0, 6), `λ`)]), UpdateView, RewriteApplied]), +// ) +// ->flatMapOk(() => A.equal(`λ`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "b")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk(() => A.equal(`λb`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "a")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk(() => A.equal(`λba`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "r")) +// ->flatMapOk( +// IM.deepEqual([RewriteIssued([((0, 4), `ƛ`)]), Deactivate, RewriteApplied]), +// ) +// ->flatMapOk(() => A.equal(`ƛ`, Editor.Text.getAll(document))) +// }, +// ), +// ) +// Q.it( +// `should translate "bn" to "𝕟"`, +// () => +// acquire(setup)->flatMapOk( +// setup => { +// let document = VSCode.TextEditor.document(setup.editor) +// IM.activate(setup, ()) +// ->flatMapOk(IM.deepEqual([Activate])) +// ->flatMapOk(() => IM.insertChar(setup, "b")) +// ->flatMapOk( +// IM.deepEqual([RewriteIssued([((0, 1), `♭`)]), UpdateView, RewriteApplied]), +// ) +// ->flatMapOk(() => A.equal(`♭`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "n")) +// ->flatMapOk( +// IM.deepEqual([RewriteIssued([((0, 2), `𝕟`)]), Deactivate, RewriteApplied]), +// ) +// ->flatMapOk(() => A.equal(`𝕟`, Editor.Text.getAll(document))) +// }, +// ), +// ) +// Q.it( +// `Issue #55, should not deactivate when size of candidate symbols > 1`, +// () => +// acquire(setup)->flatMapOk( +// setup => { +// let document = VSCode.TextEditor.document(setup.editor) +// IM.activate(setup, ()) +// ->flatMapOk(IM.deepEqual([Activate])) +// ->flatMapOk(() => IM.insertChar(setup, "a")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk(() => A.equal(`a`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "s")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk(() => A.equal(`as`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "t")) +// ->flatMapOk( +// IM.deepEqual([RewriteIssued([((0, 3), `∗`)]), UpdateView, RewriteApplied]), +// ) +// ->flatMapOk(() => A.equal(`∗`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "e")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk(() => A.equal(`∗e`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "r")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk(() => A.equal(`∗er`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "i")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk(() => A.equal(`∗eri`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "s")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk(() => A.equal(`∗eris`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "k")) +// ->flatMapOk( +// IM.deepEqual([RewriteIssued([((0, 6), `⁎`)]), UpdateView, RewriteApplied]), +// ) +// ->flatMapOk(() => A.equal(`⁎`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.deactivate(setup)) +// ->flatMapOk(IM.deepEqual([Deactivate])) +// ->flatMapOk(() => A.equal(`⁎`, Editor.Text.getAll(document))) +// }, +// ), +// ) +// }) +// describe("Backspacing", () => +// Q.it( +// `should work just fine`, +// () => +// acquire(setup)->flatMapOk( +// setup => { +// let document = VSCode.TextEditor.document(setup.editor) +// IM.activate(setup, ()) +// ->flatMapOk(IM.deepEqual([Activate])) +// ->flatMapOk(() => IM.insertChar(setup, "l")) +// ->flatMapOk( +// IM.deepEqual([RewriteIssued([((0, 1), `←`)]), UpdateView, RewriteApplied]), +// ) +// ->flatMapOk(() => A.equal(`←`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "a")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk(() => A.equal(`←a`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.backspace(setup)) +// ->flatMapOk( +// IM.deepEqual([RewriteIssued([((0, 1), `←`)]), UpdateView, RewriteApplied]), +// ) +// ->flatMapOk(() => A.equal(`←`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "a")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk(() => A.equal(`←a`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "m")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk(() => A.equal(`←am`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "b")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk(() => A.equal(`←amb`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "d")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk(() => A.equal(`←ambd`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "a")) +// ->flatMapOk( +// IM.deepEqual([RewriteIssued([((0, 6), `λ`)]), UpdateView, RewriteApplied]), +// ) +// ->flatMapOk(() => A.equal(`λ`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.backspace(setup)) +// ->flatMapOk( +// IM.deepEqual([RewriteIssued([((0, 0), `lambd`)]), UpdateView, RewriteApplied]), +// ) +// ->flatMapOk(() => A.equal(`lambd`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.deactivate(setup)) +// ->flatMapOk(IM.deepEqual([Deactivate])) +// ->flatMapOk(() => A.equal(`lambd`, Editor.Text.getAll(document))) +// }, +// ), +// ) +// ) - describe("Abortion", () => { - Q.it( - `should abort after hitting escape`, - () => - acquire(setup)->flatMapOk( - setup => { - let document = VSCode.TextEditor.document(setup.editor) - IM.activate(setup, ()) - ->flatMapOk(IM.deep_equal([Activate])) - ->flatMapOk(() => IM.insertChar(setup, "b")) - ->flatMapOk( - IM.deep_equal([RewriteIssued([((0, 1), `♭`)]), UpdateView, RewriteApplied]), - ) - ->flatMapOk(() => A.equal(`♭`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.deactivate(setup)) - ->flatMapOk(IM.deep_equal([Deactivate])) - ->flatMapOk(() => A.equal(`♭`, Editor.Text.getAll(document))) - }, - ), - ) - Q.it( - `should abort after typing the wrong sequence`, - () => - acquire(setup)->flatMapOk( - setup => { - let document = VSCode.TextEditor.document(setup.editor) - IM.activate(setup, ()) - ->flatMapOk(IM.deep_equal([Activate])) - ->flatMapOk(() => IM.insertChar(setup, "a")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(`a`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "d")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), Deactivate, RewriteApplied])) - ->flatMapOk(() => A.equal(`ad`, Editor.Text.getAll(document))) - }, - ), - ) - Q.it( - `should abort after backspacing to much`, - () => - acquire(setup)->flatMapOk( - setup => { - let document = VSCode.TextEditor.document(setup.editor) - IM.activate(setup, ()) - ->flatMapOk(IM.deep_equal([Activate])) - ->flatMapOk(() => IM.insertChar(setup, "a")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(`a`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.backspace(setup)) - ->flatMapOk(IM.deep_equal([RewriteIssued([((0, 0), ``)]), Deactivate, RewriteApplied])) - ->flatMapOk(() => A.equal(``, Editor.Text.getAll(document))) - }, - ), - ) - }) +// describe("Abortion", () => { +// Q.it( +// `should abort after hitting escape`, +// () => +// acquire(setup)->flatMapOk( +// setup => { +// let document = VSCode.TextEditor.document(setup.editor) +// IM.activate(setup, ()) +// ->flatMapOk(IM.deepEqual([Activate])) +// ->flatMapOk(() => IM.insertChar(setup, "b")) +// ->flatMapOk( +// IM.deepEqual([RewriteIssued([((0, 1), `♭`)]), UpdateView, RewriteApplied]), +// ) +// ->flatMapOk(() => A.equal(`♭`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.deactivate(setup)) +// ->flatMapOk(IM.deepEqual([Deactivate])) +// ->flatMapOk(() => A.equal(`♭`, Editor.Text.getAll(document))) +// }, +// ), +// ) +// Q.it( +// `should abort after typing the wrong sequence`, +// () => +// acquire(setup)->flatMapOk( +// setup => { +// let document = VSCode.TextEditor.document(setup.editor) +// IM.activate(setup, ()) +// ->flatMapOk(IM.deepEqual([Activate])) +// ->flatMapOk(() => IM.insertChar(setup, "a")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk(() => A.equal(`a`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "d")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), Deactivate, RewriteApplied])) +// ->flatMapOk(() => A.equal(`ad`, Editor.Text.getAll(document))) +// }, +// ), +// ) +// Q.it( +// `should abort after backspacing to much`, +// () => +// acquire(setup)->flatMapOk( +// setup => { +// let document = VSCode.TextEditor.document(setup.editor) +// IM.activate(setup, ()) +// ->flatMapOk(IM.deepEqual([Activate])) +// ->flatMapOk(() => IM.insertChar(setup, "a")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk(() => A.equal(`a`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.backspace(setup)) +// ->flatMapOk(IM.deepEqual([RewriteIssued([((0, 0), ``)]), Deactivate, RewriteApplied])) +// ->flatMapOk(() => A.equal(``, Editor.Text.getAll(document))) +// }, +// ), +// ) +// }) - describe("Cursor", () => { - Q.it( - `should not abort when the cursor is placed inside the buffer`, - () => - acquire(setup)->flatMapOk( - setup => { - let document = VSCode.TextEditor.document(setup.editor) - IM.activate(setup, ()) - ->flatMapOk(IM.deep_equal([Activate])) - ->flatMapOk(() => IM.insertChar(setup, "a")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(`a`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "n")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(`an`, Editor.Text.getAll(document))) - // messing with the cursor - ->flatMapOk(() => IM.select(setup, [(0, 0)])) - ->flatMapOk(() => IM.select(setup, [(1, 1)])) - ->flatMapOk(() => IM.select(setup, [(2, 2)])) - ->flatMapOk(() => IM.select(setup, [(0, 1), (1, 2)])) - ->flatMapOk(() => IM.select(setup, [(0, 2)])) - // resume insertion - ->flatMapOk(() => IM.insertChar(setup, "d")) - ->flatMapOk( - IM.deep_equal([RewriteIssued([((0, 3), `∧`)]), UpdateView, RewriteApplied]), - ) - ->flatMapOk(() => A.equal(`∧`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "=")) - ->flatMapOk( - IM.deep_equal([RewriteIssued([((0, 2), `≙`)]), Deactivate, RewriteApplied]), - ) - ->flatMapOk(() => A.equal(`≙`, Editor.Text.getAll(document))) - }, - ), - ) - Q.it( - `should abort when the cursor is placed outside the buffer`, - () => - acquire(setup)->flatMapOk( - setup => { - let positions = [VSCode.Position.make(0, 3)] +// describe("Cursor", () => { +// Q.it( +// `should not abort when the cursor is placed inside the buffer`, +// () => +// acquire(setup)->flatMapOk( +// setup => { +// let document = VSCode.TextEditor.document(setup.editor) +// IM.activate(setup, ()) +// ->flatMapOk(IM.deepEqual([Activate])) +// ->flatMapOk(() => IM.insertChar(setup, "a")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk(() => A.equal(`a`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "n")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk(() => A.equal(`an`, Editor.Text.getAll(document))) +// // messing with the cursor +// ->flatMapOk(() => IM.select(setup, [(0, 0)])) +// ->flatMapOk(() => IM.select(setup, [(1, 1)])) +// ->flatMapOk(() => IM.select(setup, [(2, 2)])) +// ->flatMapOk(() => IM.select(setup, [(0, 1), (1, 2)])) +// ->flatMapOk(() => IM.select(setup, [(0, 2)])) +// // resume insertion +// ->flatMapOk(() => IM.insertChar(setup, "d")) +// ->flatMapOk( +// IM.deepEqual([RewriteIssued([((0, 3), `∧`)]), UpdateView, RewriteApplied]), +// ) +// ->flatMapOk(() => A.equal(`∧`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "=")) +// ->flatMapOk( +// IM.deepEqual([RewriteIssued([((0, 2), `≙`)]), Deactivate, RewriteApplied]), +// ) +// ->flatMapOk(() => A.equal(`≙`, Editor.Text.getAll(document))) +// }, +// ), +// ) +// Q.it( +// `should abort when the cursor is placed outside the buffer`, +// () => +// acquire(setup)->flatMapOk( +// setup => { +// let positions = [VSCode.Position.make(0, 3)] - let document = VSCode.TextEditor.document(setup.editor) +// let document = VSCode.TextEditor.document(setup.editor) - document - ->Editor.Text.insert(VSCode.Position.make(0, 0), "123") - ->flatMap(_ => IM.activate(setup, ~positions, ())) - ->flatMapOk(IM.deep_equal([Activate])) - ->flatMapOk(() => IM.insertChar(setup, "a")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(`123a`, Editor.Text.getAll(document))) - ->flatMapOk(() => IM.insertChar(setup, "n")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk(() => A.equal(`123an`, Editor.Text.getAll(document))) - // messing with the cursor - ->flatMapOk(() => IM.selectAndWait(setup, [(1, 1)])) - ->flatMapOk(IM.deep_equal([Deactivate])) - }, - ), - ) - }) +// document +// ->Editor.Text.insert(VSCode.Position.make(0, 0), "123") +// ->flatMap(_ => IM.activate(setup, ~positions, ())) +// ->flatMapOk(IM.deepEqual([Activate])) +// ->flatMapOk(() => IM.insertChar(setup, "a")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk(() => A.equal(`123a`, Editor.Text.getAll(document))) +// ->flatMapOk(() => IM.insertChar(setup, "n")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk(() => A.equal(`123an`, Editor.Text.getAll(document))) +// // messing with the cursor +// ->flatMapOk(() => IM.selectAndWait(setup, [(1, 1)])) +// ->flatMapOk(IM.deepEqual([Deactivate])) +// }, +// ), +// ) +// }) - describe("Multiple cursors at once", () => { - let replaceCRLF = Js.String.replaceByRe(%re("/\r\n/g"), "\n") // RegEx updated to v10.1.4 - Q.it( - `should work just fine (𝕟)`, - () => { - let positions = [ - VSCode.Position.make(0, 0), - VSCode.Position.make(1, 0), - VSCode.Position.make(2, 0), - VSCode.Position.make(3, 0), - ] +// describe("Multiple cursors at once", () => { +// let replaceCRLF = Js.String.replaceByRe(%re("/\r\n/g"), "\n") // RegEx updated to v10.1.4 +// Q.it( +// `should work just fine (𝕟)`, +// () => { +// let positions = [ +// VSCode.Position.make(0, 0), +// VSCode.Position.make(1, 0), +// VSCode.Position.make(2, 0), +// VSCode.Position.make(3, 0), +// ] - acquire(setup)->flatMapOk( - setup => { - let document = VSCode.TextEditor.document(setup.editor) +// acquire(setup)->flatMapOk( +// setup => { +// let document = VSCode.TextEditor.document(setup.editor) - document - ->Editor.Text.insert(VSCode.Position.make(0, 0), "\n\n\n") - ->flatMap(_ => IM.activate(setup, ~positions, ())) - ->flatMapOk(IM.deep_equal([Activate])) - ->flatMapOk(() => IM.insertChar(setup, "b")) - ->flatMapOk( - actual => - if onUnix { - IM.deep_equal( - [ - RewriteIssued([ - ((0, 1), `♭`), - ((2, 3), `♭`), - ((4, 5), `♭`), - ((6, 7), `♭`), - ]), - UpdateView, - RewriteApplied, - ], - actual, - ) - } else { - IM.deep_equal( - [ - RewriteIssued([ - ((0, 1), `♭`), - ((3, 4), `♭`), - ((6, 7), `♭`), - ((9, 10), `♭`), - ]), - UpdateView, - RewriteApplied, - ], - actual, - ) - }, - ) - ->flatMapOk( - () => A.equal(`♭\n♭\n♭\n♭`, replaceCRLF(Editor.Text.getAll(document))), // string literal updated to v10.1.4 - ) - ->flatMapOk(() => IM.insertChar(setup, "n")) - ->flatMapOk( - actual => - if onUnix { - IM.deep_equal( - [ - RewriteIssued([ - ((0, 2), `𝕟`), - ((3, 5), `𝕟`), - ((6, 8), `𝕟`), - ((9, 11), `𝕟`), - ]), - Deactivate, - RewriteApplied, - ], - actual, - ) - } else { - IM.deep_equal( - [ - RewriteIssued([ - ((0, 2), `𝕟`), - ((4, 6), `𝕟`), - ((8, 10), `𝕟`), - ((12, 14), `𝕟`), - ]), - Deactivate, - RewriteApplied, - ], - actual, - ) - }, - ) - ->flatMapOk( - () => A.equal(`𝕟\n𝕟\n𝕟\n𝕟`, replaceCRLF(Editor.Text.getAll(document))), // string literal updated to v10.1.4 - ) - }, - ) - }, - ) - Q.it( - `should work just fine (∧)`, - () => { - acquire(setup)->flatMapOk( - setup => { - let positions = [ - VSCode.Position.make(0, 0), - VSCode.Position.make(1, 1), - VSCode.Position.make(2, 2), - VSCode.Position.make(3, 3), - ] - let document = VSCode.TextEditor.document(setup.editor) +// document +// ->Editor.Text.insert(VSCode.Position.make(0, 0), "\n\n\n") +// ->flatMap(_ => IM.activate(setup, ~positions, ())) +// ->flatMapOk(IM.deepEqual([Activate])) +// ->flatMapOk(() => IM.insertChar(setup, "b")) +// ->flatMapOk( +// actual => +// if onUnix { +// IM.deepEqual( +// [ +// RewriteIssued([ +// ((0, 1), `♭`), +// ((2, 3), `♭`), +// ((4, 5), `♭`), +// ((6, 7), `♭`), +// ]), +// UpdateView, +// RewriteApplied, +// ], +// actual, +// ) +// } else { +// IM.deepEqual( +// [ +// RewriteIssued([ +// ((0, 1), `♭`), +// ((3, 4), `♭`), +// ((6, 7), `♭`), +// ((9, 10), `♭`), +// ]), +// UpdateView, +// RewriteApplied, +// ], +// actual, +// ) +// }, +// ) +// ->flatMapOk( +// () => A.equal(`♭\n♭\n♭\n♭`, replaceCRLF(Editor.Text.getAll(document))), // string literal updated to v10.1.4 +// ) +// ->flatMapOk(() => IM.insertChar(setup, "n")) +// ->flatMapOk( +// actual => +// if onUnix { +// IM.deepEqual( +// [ +// RewriteIssued([ +// ((0, 2), `𝕟`), +// ((3, 5), `𝕟`), +// ((6, 8), `𝕟`), +// ((9, 11), `𝕟`), +// ]), +// Deactivate, +// RewriteApplied, +// ], +// actual, +// ) +// } else { +// IM.deepEqual( +// [ +// RewriteIssued([ +// ((0, 2), `𝕟`), +// ((4, 6), `𝕟`), +// ((8, 10), `𝕟`), +// ((12, 14), `𝕟`), +// ]), +// Deactivate, +// RewriteApplied, +// ], +// actual, +// ) +// }, +// ) +// ->flatMapOk( +// () => A.equal(`𝕟\n𝕟\n𝕟\n𝕟`, replaceCRLF(Editor.Text.getAll(document))), // string literal updated to v10.1.4 +// ) +// }, +// ) +// }, +// ) +// Q.it( +// `should work just fine (∧)`, +// () => { +// acquire(setup)->flatMapOk( +// setup => { +// let positions = [ +// VSCode.Position.make(0, 0), +// VSCode.Position.make(1, 1), +// VSCode.Position.make(2, 2), +// VSCode.Position.make(3, 3), +// ] +// let document = VSCode.TextEditor.document(setup.editor) - document - ->Editor.Text.insert(VSCode.Position.make(0, 0), "123\n123\n123\n123") - ->flatMap(_ => IM.activate(setup, ~positions, ())) - ->flatMapOk(IM.deep_equal([Activate])) - ->flatMapOk(() => IM.insertChar(setup, "a")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk( - () => A.equal(`a123\n1a23\n12a3\n123a`, replaceCRLF(Editor.Text.getAll(document))), // string literal updated to v10.1.4 - ) - ->flatMapOk(() => IM.insertChar(setup, "n")) - ->flatMapOk(IM.deep_equal([RewriteIssued([]), UpdateView, RewriteApplied])) - ->flatMapOk( - () => - A.equal(`an123\n1an23\n12an3\n123an`, replaceCRLF(Editor.Text.getAll(document))), // string literal updated to v10.1.4 - ) - ->flatMapOk(() => IM.insertChar(setup, "d")) - ->flatMapOk( - actual => - if onUnix { - IM.deep_equal( - [ - RewriteIssued([ - ((0, 3), `∧`), - ((8, 11), `∧`), - ((16, 19), `∧`), - ((24, 27), `∧`), - ]), - UpdateView, - RewriteApplied, - ], - actual, - ) - } else { - IM.deep_equal( - [ - RewriteIssued([ - ((0, 3), `∧`), - ((9, 12), `∧`), - ((18, 21), `∧`), - ((27, 30), `∧`), - ]), - UpdateView, - RewriteApplied, - ], - actual, - ) - }, - ) - ->flatMapOk( - () => - A.equal( - `∧123\n1∧23\n12∧3\n123∧`, // string literal updated to v10.1.4 - replaceCRLF(Editor.Text.getAll(document)), - ), - ) - }, - ) - }, - ) - }) -}) +// document +// ->Editor.Text.insert(VSCode.Position.make(0, 0), "123\n123\n123\n123") +// ->flatMap(_ => IM.activate(setup, ~positions, ())) +// ->flatMapOk(IM.deepEqual([Activate])) +// ->flatMapOk(() => IM.insertChar(setup, "a")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk( +// () => A.equal(`a123\n1a23\n12a3\n123a`, replaceCRLF(Editor.Text.getAll(document))), // string literal updated to v10.1.4 +// ) +// ->flatMapOk(() => IM.insertChar(setup, "n")) +// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) +// ->flatMapOk( +// () => +// A.equal(`an123\n1an23\n12an3\n123an`, replaceCRLF(Editor.Text.getAll(document))), // string literal updated to v10.1.4 +// ) +// ->flatMapOk(() => IM.insertChar(setup, "d")) +// ->flatMapOk( +// actual => +// if onUnix { +// IM.deepEqual( +// [ +// RewriteIssued([ +// ((0, 3), `∧`), +// ((8, 11), `∧`), +// ((16, 19), `∧`), +// ((24, 27), `∧`), +// ]), +// UpdateView, +// RewriteApplied, +// ], +// actual, +// ) +// } else { +// IM.deepEqual( +// [ +// RewriteIssued([ +// ((0, 3), `∧`), +// ((9, 12), `∧`), +// ((18, 21), `∧`), +// ((27, 30), `∧`), +// ]), +// UpdateView, +// RewriteApplied, +// ], +// actual, +// ) +// }, +// ) +// ->flatMapOk( +// () => +// A.equal( +// `∧123\n1∧23\n12∧3\n123∧`, // string literal updated to v10.1.4 +// replaceCRLF(Editor.Text.getAll(document)), +// ), +// ) +// }, +// ) +// }, +// ) +// }) +// }) diff --git a/test/tests/Test__Tokens.res b/test/tests/Test__Tokens.res index 3ab2cafb..9de8289e 100644 --- a/test/tests/Test__Tokens.res +++ b/test/tests/Test__Tokens.res @@ -1,69 +1,69 @@ -open! BsMocha.Mocha -open! Test__Util -open Belt +// open! BsMocha.Mocha +// open! Test__Util +// open Belt -describe("Tokens", ~timeout=10000, () => { - let context = Agda.make("GotoDefinition.agda") +// describe("Tokens", ~timeout=10000, () => { +// let context = Agda.make("GotoDefinition.agda") - describe("GotoDefinition.agda", () => { - Q.it("should produce 28 tokens", () => { - context - ->Promise.flatMap(Agda.load) - ->Promise.flatMapOk(((_, state)) => { - let tokens = - state.tokens - ->Tokens.toArray - ->Belt.Array.map(((token, range)) => - Editor.Range.toString(range) ++ " " ++ Tokens.Token.toString(token) - ) - A.deep_equal(28, Array.length(tokens)) - }) - }) +// describe("GotoDefinition.agda", () => { +// Q.it("should produce 28 tokens", () => { +// context +// ->Promise.flatMap(Agda.load) +// ->Promise.flatMapOk(((_, state)) => { +// let tokens = +// state.tokens +// ->Tokens.toArray +// ->Belt.Array.map(((token, range)) => +// Editor.Range.toString(range) ++ " " ++ Tokens.Token.toString(token) +// ) +// A.deepEqual(28, Array.length(tokens)) +// }) +// }) - Q.it("should produce correct tokens", () => { - context - ->Promise.flatMap(Agda.load) - ->Promise.flatMapOk(((_, state)) => { - let tokens = - state.tokens - ->Tokens.toArray - ->Belt.Array.map(((token, range)) => - Editor.Range.toString(range) ++ " " ++ Tokens.Token.toString(token) - ) - A.deep_equal( - [ - "0:0-6 Token (0, 6) [Keyword]", - "0:7-21 Token (7, 21) [Module] [src: 1]", - "0:22-27 Token (22, 27) [Keyword]", - "1:0-4 Token (28, 32) [Keyword]", - "1:5-6 Token (33, 34) [Datatype] [src: 34]", - "1:7-8 Token (35, 36) [Symbol]", - "1:9-12 Token (37, 40) [Primitive] [src: 388]", - "1:13-18 Token (41, 46) [Keyword]", - "2:2-3 Token (49, 50) [ConstructorInductive] [src: 50]", - "2:4-5 Token (51, 52) [Symbol]", - "2:6-7 Token (53, 54) [Datatype] [src: 34]", - "3:2-3 Token (57, 58) [ConstructorInductive] [src: 58]", - "3:4-5 Token (59, 60) [Symbol]", - "3:6-7 Token (61, 62) [Datatype] [src: 34]", - "3:8-9 Token (63, 64) [Symbol]", - "3:10-11 Token (65, 66) [Datatype] [src: 34]", - "5:0-3 Token (68, 71) [Function, Operator] [src: 69]", - "5:4-5 Token (72, 73) [Symbol]", - "5:6-7 Token (74, 75) [Datatype] [src: 34]", - "5:8-9 Token (76, 77) [Symbol]", - "5:10-11 Token (78, 79) [Datatype] [src: 34]", - "5:12-13 Token (80, 81) [Symbol]", - "5:14-15 Token (82, 83) [Datatype] [src: 34]", - "6:0-1 Token (84, 85) [Bound] [src: 85]", - "6:2-3 Token (86, 87) [Function, Operator] [src: 69]", - "6:4-5 Token (88, 89) [Bound] [src: 89]", - "6:6-7 Token (90, 91) [Symbol]", - "6:8-15 Token (92, 99) [Hole]", - ], - tokens, - ) - }) - }) - }) -}) +// Q.it("should produce correct tokens", () => { +// context +// ->Promise.flatMap(Agda.load) +// ->Promise.flatMapOk(((_, state)) => { +// let tokens = +// state.tokens +// ->Tokens.toArray +// ->Belt.Array.map(((token, range)) => +// Editor.Range.toString(range) ++ " " ++ Tokens.Token.toString(token) +// ) +// A.deepEqual( +// [ +// "0:0-6 Token (0, 6) [Keyword]", +// "0:7-21 Token (7, 21) [Module] [src: 1]", +// "0:22-27 Token (22, 27) [Keyword]", +// "1:0-4 Token (28, 32) [Keyword]", +// "1:5-6 Token (33, 34) [Datatype] [src: 34]", +// "1:7-8 Token (35, 36) [Symbol]", +// "1:9-12 Token (37, 40) [Primitive] [src: 388]", +// "1:13-18 Token (41, 46) [Keyword]", +// "2:2-3 Token (49, 50) [ConstructorInductive] [src: 50]", +// "2:4-5 Token (51, 52) [Symbol]", +// "2:6-7 Token (53, 54) [Datatype] [src: 34]", +// "3:2-3 Token (57, 58) [ConstructorInductive] [src: 58]", +// "3:4-5 Token (59, 60) [Symbol]", +// "3:6-7 Token (61, 62) [Datatype] [src: 34]", +// "3:8-9 Token (63, 64) [Symbol]", +// "3:10-11 Token (65, 66) [Datatype] [src: 34]", +// "5:0-3 Token (68, 71) [Function, Operator] [src: 69]", +// "5:4-5 Token (72, 73) [Symbol]", +// "5:6-7 Token (74, 75) [Datatype] [src: 34]", +// "5:8-9 Token (76, 77) [Symbol]", +// "5:10-11 Token (78, 79) [Datatype] [src: 34]", +// "5:12-13 Token (80, 81) [Symbol]", +// "5:14-15 Token (82, 83) [Datatype] [src: 34]", +// "6:0-1 Token (84, 85) [Bound] [src: 85]", +// "6:2-3 Token (86, 87) [Function, Operator] [src: 69]", +// "6:4-5 Token (88, 89) [Bound] [src: 89]", +// "6:6-7 Token (90, 91) [Symbol]", +// "6:8-15 Token (92, 99) [Hole]", +// ], +// tokens, +// ) +// }) +// }) +// }) +// }) diff --git a/test/tests/Test__Util.res b/test/tests/Test__Util.res index 8c88657d..58745be0 100644 --- a/test/tests/Test__Util.res +++ b/test/tests/Test__Util.res @@ -1,12 +1,11 @@ -open Belt -module Assert = BsMocha.Assert +open Mocha open Js.Promise exception Exn(string) // wrapper around BsMocha's Assertions -let runner: (unit => unit) => Promise.promise> = %raw(` function(f) { +let runner: (unit => unit) => promise> = %raw(` function(f) { var tmp try { var result = f(); @@ -28,35 +27,15 @@ let runner: (unit => unit) => Promise.promise> = %raw(` function }`) module Path = { - let toAbsolute = filepath => { - let dirname: option = %bs.node(__dirname) - switch dirname { - | None => Node.Process.cwd() - | Some(dirname) => Node.Path.resolve(dirname, filepath) - } - } + let toAbsolute = filepath => NodeJs.Path.resolve([NodeJs.Global.dirname, filepath]) // replacement of ExtensionContext.getExtensionPath as ExtensionContext.t is out of reach - let extensionPath = () => { - let dirname: option = %bs.node(__dirname) - switch dirname { - | None => Node.Process.cwd() - | Some(dirname) => Node.Path.resolve(dirname, "../../../../") - } - } + let extensionPath = toAbsolute("../../../../") // replacement of ExtensionContext.globalStoragePath as ExtensionContext.t is out ofreach - let globalStoragePath = () => { - let dirname: option = %bs.node(__dirname) - switch dirname { - | None => Node.Process.cwd() - | Some(dirname) => - // this directory should be ignored by git - Node.Path.resolve(dirname, "../../../../test/globalStoragePath") - } - } + let globalStoragePath = toAbsolute("../../../../test/globalStoragePath") - let asset = filepath => Node.Path.join([extensionPath(), "test/tests/assets", filepath]) + let asset = filepath => NodeJs.Path.join([extensionPath, "test/tests/assets", filepath]) } // to prevent an extension from being activated twice @@ -67,8 +46,8 @@ let activateExtension = (): State__Type.channels => { | None => // activate the extension let disposables = [] - let extensionPath = Path.extensionPath() - let globalStoragePath = Path.globalStoragePath() + let extensionPath = Path.extensionPath + let globalStoragePath = Path.globalStoragePath let channels = Main.activateWithoutContext(disposables, extensionPath, globalStoragePath) // store the singleton of activation activationSingleton := Some(channels) @@ -80,51 +59,49 @@ let activateExtension = (): State__Type.channels => { let openFile = (fileName): Promise.t => VSCode.Window.showTextDocumentWithUri(VSCode.Uri.file(fileName), None) -let activateExtensionAndOpenFile = fileName => { +let activateExtensionAndOpenFile = async fileName => { let channels = activateExtension() - openFile(fileName)->Promise.map(editor => (editor, channels)) + let editor = await openFile(fileName) + (editor, channels) } @module("vscode") @scope("commands") external executeCommand: string => Promise.t>> = "executeCommand" -let wait = ms => { - let (promise, resolve) = Promise.pending() - Js.Global.setTimeout(resolve, ms)->ignore - promise -} +let wait = ms => Promise.make((resolve, _) => Js.Global.setTimeout(resolve, ms)->ignore) module Q = { let toPromise = f => - Js.Promise.make((~resolve, ~reject) => - f->Promise.get(x => + Promise.make((resolve, reject) => + f + ->Promise.thenResolve(x => switch x { - | Error(error) => reject(. error) - | Ok(result) => resolve(. result) + | Error(error) => reject(error) + | Ok(result) => resolve(result) } ) + ->Promise.done ) - let it = (s, f: unit => Promise.t>) => - BsMocha.Promise.it(s, () => f()->toPromise) + let it = (s, f: unit => Promise.t>) => Async.it(s, () => f()->toPromise) - let it_only = (s, f) => BsMocha.Promise.it_only(s, () => f()->toPromise) + let it_only = (s, f) => Async.it_only(s, () => f()->toPromise) - let it_skip = (s, f) => BsMocha.Promise.it_skip(s, () => f()->toPromise) + let it_skip = (s, f) => Async.it_skip(s, () => f()->toPromise) - let before = f => BsMocha.Promise.before(() => f()->toPromise) - let before_each = f => BsMocha.Promise.before_each(() => f()->toPromise) - let after = f => BsMocha.Promise.after(() => f()->toPromise) - let after_each = f => BsMocha.Promise.after_each(() => f()->toPromise) + let before = f => Async.before(() => f()->toPromise) + let before_each = f => Async.beforeEach(() => f()->toPromise) + let after = f => Async.after(() => f()->toPromise) + let after_each = f => Async.afterEach(() => f()->toPromise) } module A = { - let equal = (expected, actual) => runner(() => BsMocha.Assert.equal(actual, expected)) - let deep_equal = (expected, actual) => runner(() => BsMocha.Assert.deep_equal(actual, expected)) + let equal = (expected, actual) => runner(() => Assert.equal(actual, expected)) + let deepEqual = (expected, actual) => runner(() => Assert.deepEqual(actual, expected)) let deep_strict_equal = (expected, actual) => - runner(() => BsMocha.Assert.deep_strict_equal(actual, expected)) - let fail = value => runner(() => BsMocha.Assert.fail(value)) + runner(() => Assert.deepStrictEqual(actual, expected)) + let fail = value => runner(() => Assert.fail(value)) } module Strings = { @@ -205,21 +182,22 @@ module Golden = { // get all filepaths of golden tests (asynchronously) let getGoldenFilepaths = directoryPath => { let directoryPath = Path.toAbsolute(directoryPath) - let readdir = N.Fs.readdir |> N.Util.promisify - let isInFile = Js.String.endsWith(".in") - let toBasename = path => Node.Path.join2(directoryPath, Node.Path.basename_ext(path, ".in")) - readdir(. directoryPath) |> then_(paths => - paths->Array.keep(isInFile)->Array.map(toBasename)->resolve + let readdir = N.Util.promisify(N.Fs.readdir, ...) + let isInFile = x => Js.String.endsWith(".in", x) + let toBasename = path => NodeJs.Path.join2(directoryPath, NodeJs.Path.basenameExt(path, ".in")) + then_( + paths => paths->Array.filter(isInFile)->Array.map(toBasename)->resolve, + readdir(directoryPath), ) } // get all filepaths of golden tests (synchronously) let getGoldenFilepathsSync = directoryPath => { let directoryPath = Path.toAbsolute(directoryPath) - let readdir = Node.Fs.readdirSync - let isInFile = Js.String.endsWith(".in") - let toBasename = path => Node.Path.join2(directoryPath, Node.Path.basename_ext(path, ".in")) - readdir(directoryPath)->Array.keep(isInFile)->Array.map(toBasename) + let readdir = NodeJs.Fs.readdirSync + let isInFile = x => Js.String.endsWith(".in", x) + let toBasename = path => NodeJs.Path.join2(directoryPath, NodeJs.Path.basenameExt(path, ".in")) + readdir(directoryPath)->Array.filter(isInFile)->Array.map(toBasename) } exception FileMissing(string) @@ -235,23 +213,21 @@ module Golden = { // FilePath -> Promise (Golden String) let readFile = filepath => { let filepath = Path.toAbsolute(filepath) - let readFile = N.Fs.readFile |> N.Util.promisify + let readFile = N.Util.promisify(N.Fs.readFile, ...) - [readFile(. filepath ++ ".in"), readFile(. filepath ++ ".out")] - |> all - |> then_(x => + then_(x => switch x { | [input, output] => resolve( Golden( filepath, - Node.Buffer.toString(input), - Strings.normalize(Node.Buffer.toString(output)), + NodeJs.Buffer.toString(input), + Strings.normalize(NodeJs.Buffer.toString(output)), ), ) | _ => reject(FileMissing(filepath)) } - ) + , all([readFile(filepath ++ ".in"), readFile(filepath ++ ".out")])) } // Golden String -> Promise () @@ -265,10 +241,10 @@ module Golden = { open Diff let value = Diff.getValue(diff) - // let change = - // Js.String.length(value) > 100 - // ? Js.String.substrAtMost(~from=0, ~length=100, value) ++ " ..." - // : value; + let change = + Js.String.length(value) > 100 + ? Js.String.substrAtMost(~from=0, ~length=100, value) ++ " ..." + : value let expected = Js.String.substrAtMost( ~from=max(0, count - 50), @@ -282,17 +258,12 @@ module Golden = { actual, ) - // let message = change => - // "\n\nchange => " - // ++ change - // ++ "\n\nexpected => " - // ++ expected - // ++ "\n\nactual => " - // ++ actual; + let message = change => + "\n\nchange => " ++ change ++ "\n\nexpected => " ++ expected ++ "\n\nactual => " ++ actual switch diff { - | Added(_) => BsMocha.Assert.fail'(actual, expected) - // BsMocha.Assert.fail( + | Added(_) => Assert.fail(message(change)) + // Assert.fail( // message( // " added \"" // ++ change @@ -300,7 +271,7 @@ module Golden = { // ++ string_of_int(count), // ), // ) - | Removed(_) => BsMocha.Assert.fail'(actual, expected) + | Removed(_) => Assert.fail(message(change)) // ~actual: actual, // ~expected: expected, // ~message=change, @@ -340,18 +311,17 @@ module Agda = { } } - let exists = command => - LanguageServerMule.Source.Module.searchUntilSuccess([FromCommand(command)]) - ->Promise.flatMap(((result, errors)) => - switch result { - | None => Promise.resolved(Error(errors)) - | Some(_method) => Promise.resolved(Ok()) - } - ) - ->Promise.flatMapError(errors => { + let exists = async command => { + let (result, errors) = await LanguageServerMule.Source.Module.searchUntilSuccess([ + FromCommand(command), + ]) + switch result { + | None => let msg = Js.Array.joinWith(",", errors->Array.map(LanguageServerMule.Source.Error.toString)) - A.fail("Cannot find \"Agda\" in PATH: " ++ msg) - }) + await A.fail("Cannot find \"Agda\" in PATH: " ++ msg) + | Some(_method) => Ok() + } + } type t = { // ready: Promise.t, @@ -359,22 +329,22 @@ module Agda = { channels: State__Type.channels, } - let make = (~als=false, filepath) => { + let make = async (~als=false, filepath) => { let filepath = Path.asset(filepath) // for mocking Configs Config.inTestingMode := true // set name for searching Agda - Config.Connection.setAgdaVersion("agda") - ->Promise.flatMap(() => Config.Connection.setUseAgdaLanguageServer(als)) - ->Promise.flatMap(() => exists("agda")) - ->Promise.map(_ => { + await Config.Connection.setAgdaVersion("agda") + await Config.Connection.setUseAgdaLanguageServer(als) + let _ = await exists("agda") + { filepath, channels: activateExtension(), - }) + } } - let load = self => { - let (promise, resolve) = Promise.pending() + let load = async self => { + let (promise, resolve, _) = Util.Promise_.pending() // agda-mode:load is consider finished // when `CompleteHighlightingAndMakePromptReappear` has been handled @@ -385,97 +355,75 @@ module Agda = { } }) - openFile(self.filepath) - ->Promise.flatMap(_ => executeCommand("agda-mode.load")) - ->Promise.flatMap(result => - switch result { - | None => A.fail("Cannot load " ++ self.filepath) - | Some(Ok(state)) => - promise->Promise.map(() => { - disposable() // stop listening to responses - Ok(self, state) - }) - // Promise.resolved(Ok(self, state)) - - | Some(Error(error)) => - let (header, body) = Connection.Error.toString(error) - A.fail(header ++ "\n" ++ body) - } - ) + let _ = await openFile(self.filepath) + switch await executeCommand("agda-mode.load") { + | None => await A.fail("Cannot load " ++ self.filepath) + | Some(Ok(state)) => + await promise + disposable() // stop listening to responses + Ok(self, state) + | Some(Error(error)) => + let (header, body) = Connection.Error.toString(error) + await A.fail(header ++ "\n" ++ body) + } } - let case = (cursorAndPayload, (self, state: State__Type.t)) => { - openFile(self.filepath) - ->Promise.flatMap(editor => - switch cursorAndPayload { - | None => Promise.resolved(false) - | Some(cursor, payload) => - Editor.Text.insert(state.document, cursor, payload)->Promise.tap(_ => - Editor.Cursor.set(editor, cursor) - ) - } - ) - ->Promise.flatMap(_ => executeCommand("agda-mode.case")) - ->Promise.flatMap(result => - switch result { - | None => A.fail("Cannot case split " ++ self.filepath) - | Some(Ok(state)) => Promise.resolved(Ok(self, state)) - | Some(Error(error)) => - let (header, body) = Connection.Error.toString(error) - A.fail(header ++ "\n" ++ body) - } - ) + let case = async (cursorAndPayload, (self, state: State__Type.t)) => { + let editor = await openFile(self.filepath) + + switch cursorAndPayload { + | None => () + | Some(cursor, payload) => + let _ = await Editor.Text.insert(state.document, cursor, payload) + Editor.Cursor.set(editor, cursor) + } + switch await executeCommand("agda-mode.case") { + | None => await A.fail("Cannot case split " ++ self.filepath) + | Some(Ok(state)) => Ok(self, state) + | Some(Error(error)) => + let (header, body) = Connection.Error.toString(error) + await A.fail(header ++ "\n" ++ body) + } } - let refine = (cursorAndPayload, (self, state: State__Type.t)): Promise.promise< - result<(t, AgdaModeVscode.State.t), exn>, + let refine = async (cursorAndPayload, (self, state: State__Type.t)): result< + (t, AgdaModeVscode.State.t), + exn, > => { - openFile(self.filepath) - ->Promise.flatMap(editor => - switch cursorAndPayload { - | None => Promise.resolved(false) - | Some(cursor, None) => - Editor.Cursor.set(editor, cursor) - Promise.resolved(false) - | Some(cursor, Some(payload)) => - Editor.Text.insert(state.document, cursor, payload)->Promise.tap(_ => - Editor.Cursor.set(editor, cursor) - ) - } - ) - ->Promise.flatMap(_ => executeCommand("agda-mode.refine")) - ->Promise.flatMap(result => - switch result { - | None => A.fail("Cannot case refine " ++ self.filepath) - | Some(Ok(state)) => Promise.resolved(Ok(self, state)) - | Some(Error(error)) => - let (header, body) = Connection.Error.toString(error) - A.fail(header ++ "\n" ++ body) - } - ) + let editor = await openFile(self.filepath) + switch cursorAndPayload { + | None => () + | Some(cursor, None) => Editor.Cursor.set(editor, cursor) + | Some(cursor, Some(payload)) => + let _ = await Editor.Text.insert(state.document, cursor, payload) + Editor.Cursor.set(editor, cursor) + } + switch await executeCommand("agda-mode.refine") { + | None => await A.fail("Cannot case refine " ++ self.filepath) + | Some(Ok(state)) => Ok(self, state) + | Some(Error(error)) => + let (header, body) = Connection.Error.toString(error) + await A.fail(header ++ "\n" ++ body) + } } } // store file content before testing so that we can restore it later -let readFile = (filepath, var) => { - openFile(filepath)->Promise.map(editor => { - var := Editor.Text.getAll(VSCode.TextEditor.document(editor)) - Ok() - }) +let readFile = async (filepath, var) => { + let editor = await openFile(filepath) + var := Editor.Text.getAll(VSCode.TextEditor.document(editor)) + Ok() } -let restoreFile = (filepath, var) => { - openFile(filepath) - ->Promise.flatMap(editor => { - let document = VSCode.TextEditor.document(editor) - let lineCount = document->VSCode.TextDocument.lineCount - let replaceRange = VSCode.Range.make( - VSCode.Position.make(0, 0), - VSCode.Position.make(lineCount, 0), - ) - Editor.Text.replace(document, replaceRange, var.contents)->Promise.flatMap(_ => - VSCode.TextDocument.save(document) - ) - }) - ->Promise.map(_ => Ok()) +let restoreFile = async (filepath, var) => { + let editor = await openFile(filepath) + let document = VSCode.TextEditor.document(editor) + let lineCount = document->VSCode.TextDocument.lineCount + let replaceRange = VSCode.Range.make( + VSCode.Position.make(0, 0), + VSCode.Position.make(lineCount, 0), + ) + let _ = await Editor.Text.replace(document, replaceRange, var.contents) + let _ = await VSCode.TextDocument.save(document) + Ok() } diff --git a/test/tests/TextEditor/Test__AgdaOffset.res b/test/tests/TextEditor/Test__AgdaOffset.res index 45107de8..bc2559d6 100644 --- a/test/tests/TextEditor/Test__AgdaOffset.res +++ b/test/tests/TextEditor/Test__AgdaOffset.res @@ -1,16 +1,13 @@ -// open BsMocha; -open! BsMocha.Mocha -module Assert = BsMocha.Assert -module P = BsMocha.Promise +open Mocha let issue7 = "module Issue7 where\n-- 𝕁\na = {! !}" // String literal updated to v10.1.4 -let openEditorWithContent = content => - VSCode.Workspace.openTextDocumentWithOptions( +let openEditorWithContent = async content => { + let textDocument = await VSCode.Workspace.openTextDocumentWithOptions( Some({"content": content, "language": "agda"}), - )->Promise.flatMap(textDocument => - VSCode.Window.showTextDocumentWithShowOptions(textDocument, None) ) + await VSCode.Window.showTextDocumentWithShowOptions(textDocument, None) +} describe("Conversion between Agda Offsets and Editor Offsets", () => { describe("Agda.OffsetConverter.characterWidth", () => { @@ -19,7 +16,7 @@ describe("Conversion between Agda Offsets and Editor Offsets", () => { () => { let expected = 1 let actual = Agda.OffsetConverter.characterWidth("𝐀") - Assert.deep_equal(actual, expected) + Assert.deepEqual(actual, expected) }, ) it( @@ -27,7 +24,7 @@ describe("Conversion between Agda Offsets and Editor Offsets", () => { () => { let expected = 1 let actual = Agda.OffsetConverter.characterWidth("a") - Assert.deep_equal(actual, expected) + Assert.deepEqual(actual, expected) }, ) }) @@ -36,20 +33,20 @@ describe("Conversion between Agda Offsets and Editor Offsets", () => { it( "should work", () => { - Assert.deep_equal( + Assert.deepEqual( Agda.OffsetConverter.computeUTF16SurrogatePairIndices( "𝐀𝐀𝐀𝐀\n𝐀𝐀𝐀𝐀", // String literal updated to v10.1.4 ), [0, 2, 4, 6, 9, 11, 13, 15], ) - Assert.deep_equal( + Assert.deepEqual( Agda.OffsetConverter.computeUTF16SurrogatePairIndices( "𝐀a𝐁bb𝐂c𝐃dd𝐄e𝐅𝐆𝐇\na", // String literal updated to v10.1.4 ), [0, 3, 7, 10, 14, 17, 19, 21], ) // Issue #7 - Assert.deep_equal(Agda.OffsetConverter.computeUTF16SurrogatePairIndices(issue7), [23]) + Assert.deepEqual(Agda.OffsetConverter.computeUTF16SurrogatePairIndices(issue7), [23]) }, ) ) @@ -59,7 +56,7 @@ describe("Conversion between Agda Offsets and Editor Offsets", () => { "should work", () => { open Agda.Indices - Assert.deep_equal( + Assert.deepEqual( "𝐀𝐀𝐀𝐀\n𝐀𝐀𝐀𝐀" // String literal updated to v10.1.4 ->Agda.OffsetConverter.computeUTF16SurrogatePairIndices ->make @@ -67,7 +64,7 @@ describe("Conversion between Agda Offsets and Editor Offsets", () => { ->fst, [(0, 0), (1, 1), (2, 2), (3, 3), (4, 5), (6, 6), (7, 7), (8, 8)], ) - Assert.deep_equal( + Assert.deepEqual( "𝐀a𝐁bb𝐂c𝐃dd𝐄e𝐅𝐆𝐇\na" // String literal updated to v10.1.4 ->Agda.OffsetConverter.computeUTF16SurrogatePairIndices ->make @@ -89,23 +86,23 @@ describe("Conversion between Agda Offsets and Editor Offsets", () => { "𝐀𝐀𝐀𝐀\n𝐀𝐀𝐀𝐀", // String literal updated to v10.1.4 ), ) - Assert.deep_equal(convert(a, 0), 0) - Assert.deep_equal(a->expose->snd, 0) - Assert.deep_equal(convert(a, 1), 2) - Assert.deep_equal(a->expose->snd, 1) - Assert.deep_equal(convert(a, 2), 4) - Assert.deep_equal(a->expose->snd, 2) - Assert.deep_equal(convert(a, 3), 6) - Assert.deep_equal(a->expose->snd, 3) - Assert.deep_equal(convert(a, 0), 0) - Assert.deep_equal(a->expose->snd, 0) - Assert.deep_equal(convert(a, 4), 8) - Assert.deep_equal(convert(a, 5), 9) - Assert.deep_equal(convert(a, 6), 11) - Assert.deep_equal(convert(a, 7), 13) - Assert.deep_equal(convert(a, 8), 15) - Assert.deep_equal(convert(a, 9), 17) - Assert.deep_equal(a->expose->snd, 8) + Assert.deepEqual(convert(a, 0), 0) + Assert.deepEqual(a->expose->snd, 0) + Assert.deepEqual(convert(a, 1), 2) + Assert.deepEqual(a->expose->snd, 1) + Assert.deepEqual(convert(a, 2), 4) + Assert.deepEqual(a->expose->snd, 2) + Assert.deepEqual(convert(a, 3), 6) + Assert.deepEqual(a->expose->snd, 3) + Assert.deepEqual(convert(a, 0), 0) + Assert.deepEqual(a->expose->snd, 0) + Assert.deepEqual(convert(a, 4), 8) + Assert.deepEqual(convert(a, 5), 9) + Assert.deepEqual(convert(a, 6), 11) + Assert.deepEqual(convert(a, 7), 13) + Assert.deepEqual(convert(a, 8), 15) + Assert.deepEqual(convert(a, 9), 17) + Assert.deepEqual(a->expose->snd, 8) }, ) @@ -114,109 +111,97 @@ describe("Conversion between Agda Offsets and Editor Offsets", () => { () => { open Agda.Indices let a = make(Agda.OffsetConverter.computeUTF16SurrogatePairIndices(issue7)) - Assert.deep_equal(convert(a, 0), 0) - Assert.deep_equal(convert(a, 6), 6) - Assert.deep_equal(convert(a, 14), 14) - Assert.deep_equal(convert(a, 19), 19) - Assert.deep_equal(convert(a, 20), 20) - Assert.deep_equal(a->expose->snd, 0) - Assert.deep_equal(convert(a, 24), 25) - Assert.deep_equal(a->expose->snd, 1) - Assert.deep_equal(convert(a, 27), 28) - Assert.deep_equal(convert(a, 28), 29) - Assert.deep_equal(convert(a, 29), 30) - Assert.deep_equal(convert(a, 36), 37) - Assert.deep_equal(a->expose->snd, 1) - Assert.deep_equal(convert(a, 0), 0) - Assert.deep_equal(a->expose->snd, 0) // the cursor should be reset to 0 - Assert.deep_equal(convert(a, 6), 6) - Assert.deep_equal(convert(a, 7), 7) - Assert.deep_equal(convert(a, 14), 14) - Assert.deep_equal(convert(a, 19), 19) - Assert.deep_equal(convert(a, 20), 20) - Assert.deep_equal(a->expose->snd, 0) - Assert.deep_equal(convert(a, 24), 25) - Assert.deep_equal(a->expose->snd, 1) - Assert.deep_equal(convert(a, 0), 0) - Assert.deep_equal(a->expose->snd, 0) // the cursor should be reset to 0 + Assert.deepEqual(convert(a, 0), 0) + Assert.deepEqual(convert(a, 6), 6) + Assert.deepEqual(convert(a, 14), 14) + Assert.deepEqual(convert(a, 19), 19) + Assert.deepEqual(convert(a, 20), 20) + Assert.deepEqual(a->expose->snd, 0) + Assert.deepEqual(convert(a, 24), 25) + Assert.deepEqual(a->expose->snd, 1) + Assert.deepEqual(convert(a, 27), 28) + Assert.deepEqual(convert(a, 28), 29) + Assert.deepEqual(convert(a, 29), 30) + Assert.deepEqual(convert(a, 36), 37) + Assert.deepEqual(a->expose->snd, 1) + Assert.deepEqual(convert(a, 0), 0) + Assert.deepEqual(a->expose->snd, 0) // the cursor should be reset to 0 + Assert.deepEqual(convert(a, 6), 6) + Assert.deepEqual(convert(a, 7), 7) + Assert.deepEqual(convert(a, 14), 14) + Assert.deepEqual(convert(a, 19), 19) + Assert.deepEqual(convert(a, 20), 20) + Assert.deepEqual(a->expose->snd, 0) + Assert.deepEqual(convert(a, 24), 25) + Assert.deepEqual(a->expose->snd, 1) + Assert.deepEqual(convert(a, 0), 0) + Assert.deepEqual(a->expose->snd, 0) // the cursor should be reset to 0 }, ) }) describe("Editor.toUTF8Offset", () => { - P.it( + Async.it( "should do it right", - () => - openEditorWithContent("𝐀a𝐁bb𝐂c\\na") - ->Promise.map( - textEditor => { - let f = n => textEditor->VSCode.TextEditor.document->Editor.toUTF8Offset(n) - Assert.equal(f(0), 0) - Assert.equal(f(1), 1) // cuts grapheme in half, toUTF8Offset is a partial function - Assert.equal(f(2), 1) - Assert.equal(f(3), 2) - Assert.equal(f(5), 3) - Assert.equal(f(6), 4) - Assert.equal(f(7), 5) - Assert.equal(f(9), 6) - Assert.equal(f(10), 7) - Assert.equal(f(11), 8) - Assert.equal(f(12), 9) - }, - ) - ->Promise.Js.toBsPromise, + async () => { + let textEditor = await openEditorWithContent("𝐀a𝐁bb𝐂c\\na") + let f = n => textEditor->VSCode.TextEditor.document->Editor.toUTF8Offset(n) + Assert.equal(f(0), 0) + Assert.equal(f(1), 1) // cuts grapheme in half, toUTF8Offset is a partial function + Assert.equal(f(2), 1) + Assert.equal(f(3), 2) + Assert.equal(f(5), 3) + Assert.equal(f(6), 4) + Assert.equal(f(7), 5) + Assert.equal(f(9), 6) + Assert.equal(f(10), 7) + Assert.equal(f(11), 8) + Assert.equal(f(12), 9) + }, ) - P.it( + Async.it( "should be a left inverse of Editor.fromUTF8Offset", - () => + async () => { // toUTF8Offset . fromUTF8Offset = id - openEditorWithContent("𝐀a𝐁bb𝐂c\\na") - ->Promise.map( - textEditor => { - let f = n => textEditor->VSCode.TextEditor.document->Editor.toUTF8Offset(n) - let g = n => - Agda.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c\\na") - ->Agda.Indices.make - ->Agda.Indices.convert(n) - Assert.equal(f(g(0)), 0) - Assert.equal(f(g(1)), 1) - Assert.equal(f(g(2)), 2) - Assert.equal(f(g(3)), 3) - Assert.equal(f(g(4)), 4) - Assert.equal(f(g(5)), 5) - Assert.equal(f(g(6)), 6) - Assert.equal(f(g(7)), 7) - Assert.equal(f(g(8)), 8) - Assert.equal(f(g(9)), 9) - }, - ) - ->Promise.Js.toBsPromise, + let textEditor = await openEditorWithContent("𝐀a𝐁bb𝐂c\\na") + let f = n => textEditor->VSCode.TextEditor.document->Editor.toUTF8Offset(n) + let g = n => + Agda.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c\\na") + ->Agda.Indices.make + ->Agda.Indices.convert(n) + Assert.equal(f(g(0)), 0) + Assert.equal(f(g(1)), 1) + Assert.equal(f(g(2)), 2) + Assert.equal(f(g(3)), 3) + Assert.equal(f(g(4)), 4) + Assert.equal(f(g(5)), 5) + Assert.equal(f(g(6)), 6) + Assert.equal(f(g(7)), 7) + Assert.equal(f(g(8)), 8) + Assert.equal(f(g(9)), 9) + }, ) - P.it( + Async.it( "should be a right inverse of Editor.fromUTF8Offset ()", - () => + async () => { // NOTE: toUTF8Offset is a partial function // fromUTF8Offset . toUTF8Offset = id - openEditorWithContent("𝐀a𝐁bb𝐂c\\na") - ->Promise.map( - textEditor => { - let f = n => - Agda.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c\\na") - ->Agda.Indices.make - ->Agda.Indices.convert(n) - let g = n => textEditor->VSCode.TextEditor.document->Editor.toUTF8Offset(n) - Assert.equal(f(g(0)), 0) - Assert.equal(f(g(2)), 2) - Assert.equal(f(g(3)), 3) - Assert.equal(f(g(5)), 5) - Assert.equal(f(g(6)), 6) - Assert.equal(f(g(7)), 7) - Assert.equal(f(g(9)), 9) - }, - ) - ->Promise.Js.toBsPromise, + let textEditor = await openEditorWithContent("𝐀a𝐁bb𝐂c\\na") + let f = n => + Agda.OffsetConverter.computeUTF16SurrogatePairIndices("𝐀a𝐁bb𝐂c\\na") + ->Agda.Indices.make + ->Agda.Indices.convert(n) + let g = n => textEditor->VSCode.TextEditor.document->Editor.toUTF8Offset(n) + Assert.equal(f(g(0)), 0) + Assert.equal(f(g(2)), 2) + Assert.equal(f(g(3)), 3) + Assert.equal(f(g(5)), 5) + Assert.equal(f(g(6)), 6) + Assert.equal(f(g(7)), 7) + Assert.equal(f(g(9)), 9) + }, ) }) }) diff --git a/test/tests/TextEditor/Test__LineEnding.res b/test/tests/TextEditor/Test__LineEnding.res index a9c716de..20531e1f 100644 --- a/test/tests/TextEditor/Test__LineEnding.res +++ b/test/tests/TextEditor/Test__LineEnding.res @@ -1,21 +1,25 @@ -open! BsMocha.Mocha -module Assert = BsMocha.Assert -module P = BsMocha.Promise +open Mocha + +// open! BsMocha.Mocha +// module Assert = BsMocha.Assert +// module P = BsMocha.Promise open VSCode -let openEditorWithContent = content => - Workspace.openTextDocumentWithOptions( +let openEditorWithContent = async content => { + let textDocument = await Workspace.openTextDocumentWithOptions( Some({"content": content, "language": "agda"}), - )->Promise.flatMap(textDocument => Window.showTextDocumentWithShowOptions(textDocument, None)) + ) + await Window.showTextDocumentWithShowOptions(textDocument, None) +} describe("Conversion of offsets between LF and CRLF line endings", () => { describe("Editor.computeCRLFIndices", () => it( "should work", () => { - Assert.deep_equal(Agda.OffsetConverter.computeCRLFIndices("1234\r\n78"), [4]) // String literal updated to v10.1.4 - Assert.deep_equal(Agda.OffsetConverter.computeCRLFIndices("12\r\n56\r\n90"), [2, 6]) // String literal updated to v10.1.4 + Assert.deepEqual(Agda.OffsetConverter.computeCRLFIndices("1234\r\n78"), [4]) // String literal updated to v10.1.4 + Assert.deepEqual(Agda.OffsetConverter.computeCRLFIndices("12\r\n56\r\n90"), [2, 6]) // String literal updated to v10.1.4 }, ) ) @@ -26,7 +30,7 @@ describe("Conversion of offsets between LF and CRLF line endings", () => { () => { open Agda.Indices () - Assert.deep_equal( + Assert.deepEqual( "12\r\n56\r\n90"->Agda.OffsetConverter.computeCRLFIndices->make->expose->fst, // String literal updated to v10.1.4 [(0, 2), (3, 5)], ) @@ -40,22 +44,22 @@ describe("Conversion of offsets between LF and CRLF line endings", () => { () => { open Agda.Indices let a = make(Agda.OffsetConverter.computeCRLFIndices("12\r\n56\r\n90")) // String literal updated to v10.1.4 - Assert.deep_equal(convert(a, 0), 0) - Assert.deep_equal(a->expose->snd, 0) - Assert.deep_equal(convert(a, 1), 1) - Assert.deep_equal(a->expose->snd, 0) - Assert.deep_equal(convert(a, 2), 2) - Assert.deep_equal(a->expose->snd, 0) - Assert.deep_equal(convert(a, 3), 4) - Assert.deep_equal(a->expose->snd, 1) - Assert.deep_equal(convert(a, 4), 5) - Assert.deep_equal(a->expose->snd, 1) - Assert.deep_equal(convert(a, 5), 6) - Assert.deep_equal(a->expose->snd, 1) - Assert.deep_equal(convert(a, 6), 8) - Assert.deep_equal(a->expose->snd, 2) - Assert.deep_equal(convert(a, 7), 9) - Assert.deep_equal(a->expose->snd, 2) + Assert.deepEqual(convert(a, 0), 0) + Assert.deepEqual(a->expose->snd, 0) + Assert.deepEqual(convert(a, 1), 1) + Assert.deepEqual(a->expose->snd, 0) + Assert.deepEqual(convert(a, 2), 2) + Assert.deepEqual(a->expose->snd, 0) + Assert.deepEqual(convert(a, 3), 4) + Assert.deepEqual(a->expose->snd, 1) + Assert.deepEqual(convert(a, 4), 5) + Assert.deepEqual(a->expose->snd, 1) + Assert.deepEqual(convert(a, 5), 6) + Assert.deepEqual(a->expose->snd, 1) + Assert.deepEqual(convert(a, 6), 8) + Assert.deepEqual(a->expose->snd, 2) + Assert.deepEqual(convert(a, 7), 9) + Assert.deepEqual(a->expose->snd, 2) }, ) ) From 70d1d5f237a6f54fcd344c938322f5c505f2cfb3 Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Sun, 20 Oct 2024 21:48:44 +0800 Subject: [PATCH 085/109] [ fix ] Close file handles after reading files in testings --- lib/js/src/Node/Node__Fs.bs.js | 14 +++++- lib/js/src/Tokens.bs.js | 10 ++-- .../tests/Parser/Test__Parser__Response.bs.js | 2 +- .../Parser/Test__Parser__SExpression.bs.js | 4 +- .../Parser/Test__Parser__SourceFile.bs.js | 2 +- lib/js/test/tests/Test__Util.bs.js | 47 +++++++----------- src/Node/N.res | 2 +- src/Node/Node__Fs.res | 18 ++++--- src/Tokens.res | 7 ++- test/tests/Parser/Test__Parser__Response.res | 2 +- .../Parser/Test__Parser__SExpression.res | 4 +- .../tests/Parser/Test__Parser__SourceFile.res | 2 +- test/tests/Test__Util.res | 49 ++++++------------- 13 files changed, 73 insertions(+), 90 deletions(-) diff --git a/lib/js/src/Node/Node__Fs.bs.js b/lib/js/src/Node/Node__Fs.bs.js index d856702b..97c1605a 100644 --- a/lib/js/src/Node/Node__Fs.bs.js +++ b/lib/js/src/Node/Node__Fs.bs.js @@ -1,2 +1,14 @@ // Generated by ReScript, PLEASE EDIT WITH CARE -/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ +'use strict'; + +var Nodefs = require("node:fs"); + +async function readFile(filepath) { + var fileHandle = await Nodefs.promises.open(filepath, "r"); + var buffer = await fileHandle.readFile(); + await fileHandle.close(); + return buffer.toString(); +} + +exports.readFile = readFile; +/* node:fs Not a pure module */ diff --git a/lib/js/src/Tokens.bs.js b/lib/js/src/Tokens.bs.js index d21d969b..e563c24b 100644 --- a/lib/js/src/Tokens.bs.js +++ b/lib/js/src/Tokens.bs.js @@ -3,7 +3,6 @@ var Fs = require("fs"); var Vscode = require("vscode"); -var Nodefs = require("node:fs"); var Caml_obj = require("rescript/lib/js/caml_obj.js"); var Js_array = require("rescript/lib/js/js_array.js"); var Belt_List = require("rescript/lib/js/belt_List.js"); @@ -16,6 +15,7 @@ var Json$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/sr var Editor$AgdaModeVscode = require("./Editor.bs.js"); var Parser$AgdaModeVscode = require("./Parser/Parser.bs.js"); var AVLTree$AgdaModeVscode = require("./Util/AVLTree.bs.js"); +var Node__Fs$AgdaModeVscode = require("./Node/Node__Fs.bs.js"); var Json_Decode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Decode.bs.js"); var BinarySearchTree = require("@datastructures-js/binary-search-tree"); var Highlighting__AgdaAspect$AgdaModeVscode = require("./Highlighting/Highlighting__AgdaAspect.bs.js"); @@ -176,10 +176,9 @@ var Token = { async function readAndParse(format) { try { - var fileHandle = await Nodefs.promises.open(format._0, "r"); - var buffer = await fileHandle.readFile(); + var content = await Node__Fs$AgdaModeVscode.readFile(format._0); if (format.TAG === "Emacs") { - var match = Belt_Array.get(Parser$AgdaModeVscode.SExpression.parse(buffer.toString()), 0); + var match = Belt_Array.get(Parser$AgdaModeVscode.SExpression.parse(content), 0); var tokens; if (match !== undefined) { if (match.TAG === "Ok") { @@ -199,11 +198,10 @@ async function readAndParse(format) { tokens$1 ]; } - var raw = buffer.toString(); var exit = 0; var json; try { - json = JSON.parse(raw); + json = JSON.parse(content); exit = 1; } catch (_e){ diff --git a/lib/js/test/tests/Parser/Test__Parser__Response.bs.js b/lib/js/test/tests/Parser/Test__Parser__Response.bs.js index cb2de0bf..91d1019e 100644 --- a/lib/js/test/tests/Parser/Test__Parser__Response.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__Response.bs.js @@ -21,7 +21,7 @@ describe("when parsing responses", (function () { Test__Util$AgdaModeVscode.Golden.getGoldenFilepathsSync("../../../../test/tests/Parser/Response").forEach(function (filepath) { it("should golden test " + filepath, (async function () { var raw = await Test__Util$AgdaModeVscode.Golden.readFile(filepath); - return await Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (extra) { + return Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (extra) { return Test__Parser__SExpression$AgdaModeVscode.parseSExpression([], extra); })), toPrioritizedResponses), (function (extra) { return Test__Util$AgdaModeVscode.Strings.unlinesWith(Response$AgdaModeVscode.Prioritized.toString, extra); diff --git a/lib/js/test/tests/Parser/Test__Parser__SExpression.bs.js b/lib/js/test/tests/Parser/Test__Parser__SExpression.bs.js index a12e1bd1..59bfe141 100644 --- a/lib/js/test/tests/Parser/Test__Parser__SExpression.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__SExpression.bs.js @@ -37,7 +37,7 @@ describe("when parsing S-expressions as a whole", (function () { Test__Util$AgdaModeVscode.Golden.getGoldenFilepathsSync("../../../../test/tests/Parser/SExpression").forEach(function (filepath) { it("should golden test " + filepath, (async function () { var raw = await Test__Util$AgdaModeVscode.Golden.readFile(filepath); - return await Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (extra) { + return Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (extra) { return parseSExpression([], extra); })), (function (extra) { return Test__Util$AgdaModeVscode.Strings.unlinesWith(Parser$AgdaModeVscode.SExpression.toString, extra); @@ -50,7 +50,7 @@ describe("when parsing S-expressions incrementally", (function () { Test__Util$AgdaModeVscode.Golden.getGoldenFilepathsSync("../../../../test/tests/Parser/SExpression").forEach(function (filepath) { it("should golden test " + filepath, (async function () { var raw = await Test__Util$AgdaModeVscode.Golden.readFile(filepath); - return await Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (extra) { + return Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (extra) { return parseSExpression([ 3, 23, diff --git a/lib/js/test/tests/Parser/Test__Parser__SourceFile.bs.js b/lib/js/test/tests/Parser/Test__Parser__SourceFile.bs.js index e738239f..75cceb0d 100644 --- a/lib/js/test/tests/Parser/Test__Parser__SourceFile.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__SourceFile.bs.js @@ -44,7 +44,7 @@ if (Test__Util$AgdaModeVscode.onUnix) { Test__Util$AgdaModeVscode.Golden.getGoldenFilepathsSync("../../../../test/tests/Parser/SourceFile").forEach(function (filepath) { it("should golden test " + filepath, (async function () { var raw = await Test__Util$AgdaModeVscode.Golden.readFile(filepath); - return await Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (extra) { + return Test__Util$AgdaModeVscode.Golden.compare(Test__Util$AgdaModeVscode.Golden.map(Test__Util$AgdaModeVscode.Golden.map(raw, (function (extra) { return SourceFile$AgdaModeVscode.parse([ 0, 1, diff --git a/lib/js/test/tests/Test__Util.bs.js b/lib/js/test/tests/Test__Util.bs.js index 12f64456..85f72e2f 100644 --- a/lib/js/test/tests/Test__Util.bs.js +++ b/lib/js/test/tests/Test__Util.bs.js @@ -21,6 +21,7 @@ var Main$AgdaModeVscode = require("../../src/Main.bs.js"); var Util$AgdaModeVscode = require("../../src/Util/Util.bs.js"); var Config$AgdaModeVscode = require("../../src/Config.bs.js"); var Editor$AgdaModeVscode = require("../../src/Editor.bs.js"); +var Node__Fs$AgdaModeVscode = require("../../src/Node/Node__Fs.bs.js"); var Source$LanguageServerMule = require("language-server-mule/lib/js/src/Source.bs.js"); var Connection__Error$AgdaModeVscode = require("../../src/Connection/Connection__Error.bs.js"); var Connection__Emacs__Error$AgdaModeVscode = require("../../src/Connection/Emacs/Connection__Emacs__Error.bs.js"); @@ -339,6 +340,10 @@ function getGoldenFilepathsSync(directoryPath) { var FileMissing = /* @__PURE__ */Caml_exceptions.create("Test__Util-AgdaModeVscode.Golden.FileMissing"); +function toString(param) { + return "Golden file at: " + param._0 + "\nExpected: \n" + param._2 + "\nActual: \n" + param._1; +} + function map(param, f) { return { TAG: "Golden", @@ -349,33 +354,17 @@ function map(param, f) { }; } -function readFile(filepath) { +async function readFile(filepath) { var filepath$1 = Nodepath.resolve(__dirname, filepath); - var readFile$1 = function (extra) { - return Util.promisify((function (prim0, prim1) { - Fs.readFile(prim0, prim1); - }), extra); - }; - return Js_promise.then_((function (x) { - if (x.length !== 2) { - return Promise.reject({ - RE_EXN_ID: FileMissing, - _1: filepath$1 - }); - } - var input = x[0]; - var output = x[1]; - return Promise.resolve({ - TAG: "Golden", - _0: filepath$1, - _1: input.toString(), - _2: normalize(output.toString()), - [Symbol.for("name")]: "Golden" - }); - }), Promise.all([ - readFile$1(filepath$1 + ".in"), - readFile$1(filepath$1 + ".out") - ])); + var inFile = await Node__Fs$AgdaModeVscode.readFile(filepath$1 + ".in"); + var outFile = await Node__Fs$AgdaModeVscode.readFile(filepath$1 + ".out"); + return { + TAG: "Golden", + _0: filepath$1, + _1: inFile, + _2: outFile, + [Symbol.for("name")]: "Golden" + }; } function compare(param) { @@ -401,7 +390,6 @@ function compare(param) { } })); - return Promise.resolve(); } var Golden = { @@ -409,6 +397,7 @@ var Golden = { getGoldenFilepaths: getGoldenFilepaths, getGoldenFilepathsSync: getGoldenFilepathsSync, FileMissing: FileMissing, + toString: toString, map: map, readFile: readFile, compare: compare @@ -418,7 +407,7 @@ var match = Os.type(); var onUnix = match === "Windows_NT" ? false : true; -function toString(x) { +function toString$1(x) { if (x.TAG === "LanguageServerMuleErrors") { return Js_array.joinWith(",", x._0.map(Source$LanguageServerMule.$$Error.toString)); } @@ -427,7 +416,7 @@ function toString(x) { } var $$Error = { - toString: toString + toString: toString$1 }; async function exists(command) { diff --git a/src/Node/N.res b/src/Node/N.res index 80bafdcf..f1ca39f0 100644 --- a/src/Node/N.res +++ b/src/Node/N.res @@ -5,4 +5,4 @@ exception Exception(Js.Exn.t) module OS = Node__OS module Net = Node__Net module Util = Node__Util -module Fs = Node__Fs +module Fs = Node__Fs \ No newline at end of file diff --git a/src/Node/Node__Fs.res b/src/Node/Node__Fs.res index 142110dc..78828c09 100644 --- a/src/Node/Node__Fs.res +++ b/src/Node/Node__Fs.res @@ -1,9 +1,15 @@ -@bs.module("fs") +@module("fs") external readdir: (string, (Js.nullable, array) => unit) => unit = "readdir" -@bs.module("fs") +@module("fs") external access: (string, Js.null => unit) => unit = "access" -@bs.module("fs") -external readFile: (string, (Js.nullable, NodeJs.Buffer.t) => unit) => unit = "readFile" -@bs.module("fs") -external unlink: (string, Js.nullable => unit) => unit = "unlink" \ No newline at end of file + +@module("fs") +external unlink: (string, Js.nullable => unit) => unit = "unlink" + +let readFile = async filepath => { + let fileHandle = await NodeJs.Fs.open_(filepath, NodeJs.Fs.Flag.read) + let buffer = await NodeJs.Fs.FileHandle.readFile(fileHandle) + await NodeJs.Fs.FileHandle.close(fileHandle) + NodeJs.Buffer.toString(buffer) +} diff --git a/src/Tokens.res b/src/Tokens.res index 08595874..670dfa39 100644 --- a/src/Tokens.res +++ b/src/Tokens.res @@ -144,11 +144,10 @@ module Module: Module = { let readAndParse = async format => { try { - let fileHandle = await NodeJs.Fs.open_(toFilepath(format), NodeJs.Fs.Flag.read) - let buffer = await NodeJs.Fs.FileHandle.readFile(fileHandle) + let content = await Node__Fs.readFile(toFilepath(format)) switch format { | Emacs(_) => - let tokens = switch Parser.SExpression.parse(NodeJs.Buffer.toString(buffer))[0] { + let tokens = switch Parser.SExpression.parse(content)[0] { | Some(Ok(L(xs))) => xs | _ => [] } @@ -160,7 +159,7 @@ module Module: Module = { let tokens = Js.Array.sliceFrom(1, tokens)->Array.keepMap(Token.parse) (removeTokenBasedHighlighting, tokens) | JSON(_) => - let raw = NodeJs.Buffer.toString(buffer) + let raw = content switch Js.Json.parseExn(raw) { | exception _e => (false, []) | json => diff --git a/test/tests/Parser/Test__Parser__Response.res b/test/tests/Parser/Test__Parser__Response.res index 1d1602bc..1e47fe4d 100644 --- a/test/tests/Parser/Test__Parser__Response.res +++ b/test/tests/Parser/Test__Parser__Response.res @@ -24,7 +24,7 @@ describe("when parsing responses", () => "should golden test " ++ filepath, async () => { let raw = await Golden.readFile(filepath) - await raw + raw ->Golden.map(parseSExpression([], ...)) ->Golden.map(toPrioritizedResponses) ->Golden.map(Strings.unlinesWith(Response.Prioritized.toString, ...)) diff --git a/test/tests/Parser/Test__Parser__SExpression.res b/test/tests/Parser/Test__Parser__SExpression.res index ad392b48..a651974a 100644 --- a/test/tests/Parser/Test__Parser__SExpression.res +++ b/test/tests/Parser/Test__Parser__SExpression.res @@ -36,7 +36,7 @@ describe("when parsing S-expressions as a whole", () => "should golden test " ++ filepath, async () => { let raw = await Golden.readFile(filepath) - await raw + raw ->Golden.map(parseSExpression([], ...)) ->Golden.map(Strings.unlinesWith(Parser.SExpression.toString, ...)) ->Golden.compare @@ -53,7 +53,7 @@ describe("when parsing S-expressions incrementally", () => "should golden test " ++ filepath, async () => { let raw = await Golden.readFile(filepath) - await raw + raw ->Golden.map(parseSExpression([3, 23, 171, 217, 1234, 2342, 3453], ...)) ->Golden.map(Strings.unlinesWith(Parser.SExpression.toString, ...)) ->Golden.compare diff --git a/test/tests/Parser/Test__Parser__SourceFile.res b/test/tests/Parser/Test__Parser__SourceFile.res index 7c682122..b3420666 100644 --- a/test/tests/Parser/Test__Parser__SourceFile.res +++ b/test/tests/Parser/Test__Parser__SourceFile.res @@ -56,7 +56,7 @@ if Test__Util.onUnix { "should golden test " ++ filepath, async () => { let raw = await Golden.readFile(filepath) - await raw + raw ->Golden.map(SourceFile.parse([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], filepath, ...)) ->Golden.map(Strings.unlinesWith(SourceFile.Diff.toString, ...)) ->Golden.compare diff --git a/test/tests/Test__Util.res b/test/tests/Test__Util.res index 58745be0..2471e360 100644 --- a/test/tests/Test__Util.res +++ b/test/tests/Test__Util.res @@ -207,27 +207,26 @@ module Golden = { // parameterized only by 'actual; type t<'actual> = Golden(filepath, 'actual, expected) + let toString = (Golden(filepath, actual, expected)) => + "Golden file at: " ++ + filepath ++ + "\n" ++ + "Expected: \n" ++ + expected ++ + "\n" ++ + "Actual: \n" ++ + actual + // (A -> B) -> Golden A -> Golden B let map = (Golden(filepath, actual, expected), f) => Golden(filepath, f(actual), expected) // FilePath -> Promise (Golden String) - let readFile = filepath => { + let readFile = async filepath => { let filepath = Path.toAbsolute(filepath) - let readFile = N.Util.promisify(N.Fs.readFile, ...) + let inFile = await Node__Fs.readFile(filepath ++ ".in") + let outFile = await Node__Fs.readFile(filepath ++ ".out") - then_(x => - switch x { - | [input, output] => - resolve( - Golden( - filepath, - NodeJs.Buffer.toString(input), - Strings.normalize(NodeJs.Buffer.toString(output)), - ), - ) - | _ => reject(FileMissing(filepath)) - } - , all([readFile(filepath ++ ".in"), readFile(filepath ++ ".out")])) + Golden(filepath, inFile, outFile) } // Golden String -> Promise () @@ -263,30 +262,10 @@ module Golden = { switch diff { | Added(_) => Assert.fail(message(change)) - // Assert.fail( - // message( - // " added \"" - // ++ change - // ++ "\"\n at position " - // ++ string_of_int(count), - // ), - // ) | Removed(_) => Assert.fail(message(change)) - // ~actual: actual, - // ~expected: expected, - // ~message=change, - // ) - - // message( - // " removed \"" - // ++ change - // ++ "\"\n\n at position " - // ++ string_of_int(count), - // ), | NoChange(_) => () } }) - Js.Promise.resolve() } } From e65cefc34d63a101bc1e9642436f4b1ff92b5854 Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Sun, 20 Oct 2024 22:31:53 +0800 Subject: [PATCH 086/109] [ fix ] Array indexing problem from deprecating `Belt` --- lib/js/src/Agda.bs.js | 4 +- lib/js/src/Parser/Parser.bs.js | 37 +++++++--- lib/js/src/Response.bs.js | 68 +++++++++--------- .../Parser/Test__Parser__SExpression.bs.js | 2 +- lib/js/test/tests/Test__Util.bs.js | 2 +- src/Agda.res | 4 +- src/Parser/Parser.res | 70 ++++++++++++------- src/Response.res | 10 ++- .../Parser/Test__Parser__SExpression.res | 5 +- test/tests/Test__Util.res | 2 +- 10 files changed, 117 insertions(+), 87 deletions(-) diff --git a/lib/js/src/Agda.bs.js b/lib/js/src/Agda.bs.js index 3aaab939..47ed1159 100644 --- a/lib/js/src/Agda.bs.js +++ b/lib/js/src/Agda.bs.js @@ -227,10 +227,10 @@ var Output = { }; function make(indicesUTF16) { - var indicesUTF8 = indicesUTF16.map(function (i, x) { + var indicesUTF8 = indicesUTF16.map(function (x, i) { return x - i | 0; }); - var intervals = indicesUTF8.map(function (i, rightEndpoint) { + var intervals = indicesUTF8.map(function (rightEndpoint, i) { var x = indicesUTF8[i - 1 | 0]; var leftEndpoint = x !== undefined ? x + 1 | 0 : 0; return [ diff --git a/lib/js/src/Parser/Parser.bs.js b/lib/js/src/Parser/Parser.bs.js index aee2fa6f..c25f68ed 100644 --- a/lib/js/src/Parser/Parser.bs.js +++ b/lib/js/src/Parser/Parser.bs.js @@ -114,10 +114,26 @@ var Incr = { }; function toString(x) { + switch (x) { + case "StackEmpty" : + return "StackEmpty"; + case "StackElementNullReference" : + return "StackElementNullReference"; + case "PreprocessError" : + return "PreprocessError"; + + } +} + +var SExprParseError = { + toString: toString +}; + +function toString$1(x) { if (x.TAG === "A") { return "\"" + (x._0 + "\""); } else { - return "[" + (Js_array.joinWith(", ", Belt_Array.map(x._0, toString)) + "]"); + return "[" + (Js_array.joinWith(", ", Belt_Array.map(x._0, toString$1)) + "]"); } } @@ -228,7 +244,7 @@ function parseWithContinuation(string) { return { TAG: "Error", _0: [ - 0, + "StackEmpty", string ], [Symbol.for("name")]: "Error" @@ -248,7 +264,7 @@ function parseWithContinuation(string) { return { TAG: "Error", _0: [ - 1, + "StackEmpty", string ], [Symbol.for("name")]: "Error" @@ -259,7 +275,7 @@ function parseWithContinuation(string) { return { TAG: "Error", _0: [ - 3, + "StackElementNullReference", string ], [Symbol.for("name")]: "Error" @@ -309,7 +325,7 @@ function parseWithContinuation(string) { return { TAG: "Error", _0: [ - 4, + "PreprocessError", string ], [Symbol.for("name")]: "Error" @@ -357,7 +373,7 @@ function makeIncr(callback) { } var SExpression = { - toString: toString, + toString: toString$1, preprocess: preprocess, flatten: flatten, parseWithContinuation: parseWithContinuation, @@ -365,16 +381,16 @@ var SExpression = { makeIncr: makeIncr }; -function toString$1(x) { +function toString$2(x) { if (x.TAG === "SExpression") { - return "Something went wrong when parsing S-expressions. Error code: S" + (String(x._0) + (" \"" + (x._1 + "\""))); + return "Something went wrong when parsing S-expressions. Error code " + (toString(x._0) + (" \"" + (x._1 + "\""))); } else { - return "Perhaps the underlying protocol used by Agda for communicating with agda-mode has changed.\nPlease report which version of Agda you are using.\nError code: R" + (String(x._0) + (" \"" + (toString(x._1) + "\""))); + return "Perhaps the underlying protocol used by Agda for communicating with agda-mode has changed.\nPlease report which version of Agda you are using.\nError code: R" + (String(x._0) + (" \"" + (toString$1(x._1) + "\""))); } } var $$Error = { - toString: toString$1 + toString: toString$2 }; function userInputToSExpr(s) { @@ -389,6 +405,7 @@ function filepath(s) { exports.splitToLines = splitToLines; exports.Incr = Incr; +exports.SExprParseError = SExprParseError; exports.SExpression = SExpression; exports.$$Error = $$Error; exports.userInputToSExpr = userInputToSExpr; diff --git a/lib/js/src/Response.bs.js b/lib/js/src/Response.bs.js index 01b65e8b..69e5bed8 100644 --- a/lib/js/src/Response.bs.js +++ b/lib/js/src/Response.bs.js @@ -3,11 +3,11 @@ var Js_array = require("rescript/lib/js/js_array.js"); var Js_string = require("rescript/lib/js/js_string.js"); -var Belt_Array = require("rescript/lib/js/belt_Array.js"); -var Belt_Option = require("rescript/lib/js/belt_Option.js"); -var Belt_Result = require("rescript/lib/js/belt_Result.js"); var Caml_format = require("rescript/lib/js/caml_format.js"); +var Core__Array = require("@rescript/core/lib/js/src/Core__Array.bs.js"); var PervasivesU = require("rescript/lib/js/pervasivesU.js"); +var Core__Option = require("@rescript/core/lib/js/src/Core__Option.bs.js"); +var Core__Result = require("@rescript/core/lib/js/src/Core__Result.bs.js"); var Util$AgdaModeVscode = require("./Util/Util.bs.js"); var Parser$AgdaModeVscode = require("./Parser/Parser.bs.js"); var Tokens$AgdaModeVscode = require("./Tokens.bs.js"); @@ -108,7 +108,7 @@ function toString(x) { } function parse(xs) { - var match = Belt_Array.get(xs, 1); + var match = xs[1]; if (match === undefined) { return ; } @@ -116,7 +116,7 @@ function parse(xs) { return ; } var payload = Js_string.replaceByRe(/\\n|\\r\\n/g, "\n", match._0); - var match$1 = Belt_Array.get(xs, 0); + var match$1 = xs[0]; if (match$1 === undefined) { return ; } @@ -278,9 +278,9 @@ function toString$1(x) { case "JumpToError" : return "JumpToError " + (x._0 + (" " + String(x._1))); case "InteractionPoints" : - return "InteractionPoints " + Util$AgdaModeVscode.Pretty.array(Belt_Array.map(x._0, (function (prim) { - return String(prim); - }))); + return "InteractionPoints " + Util$AgdaModeVscode.Pretty.array(x._0.map(function (prim) { + return String(prim); + })); case "GiveAction" : var string = x._1; var index = x._0; @@ -300,9 +300,9 @@ function toString$1(x) { return "MakeCase ExtendedLambda " + Util$AgdaModeVscode.Pretty.array(x._1); } case "SolveAll" : - return "SolveAll " + Util$AgdaModeVscode.Pretty.array(Belt_Array.map(x._0, (function (param) { - return String(param[0]) + (" " + param[1]); - }))); + return "SolveAll " + Util$AgdaModeVscode.Pretty.array(x._0.map(function (param) { + return String(param[0]) + (" " + param[1]); + })); case "DisplayInfo" : return "DisplayInfo " + toString(x._0); case "RunningInfo" : @@ -326,7 +326,7 @@ function parse$1(tokens) { }; } var xs = tokens._0; - var match = Belt_Array.get(xs, 0); + var match = xs[0]; var exit = 0; if (match === undefined) { return { @@ -366,10 +366,10 @@ function parse$1(tokens) { [Symbol.for("name")]: "Ok" }; case "agda2-give-action" : - var match$1 = Belt_Array.get(xs, 1); + var match$1 = xs[1]; if (match$1 !== undefined && match$1.TAG === "A") { - return Belt_Option.mapWithDefault(Belt_Option.flatMap(PervasivesU.int_of_string_opt(match$1._0), (function (i) { - var match = Belt_Array.get(xs, 2); + return Core__Option.mapOr(Core__Option.flatMap(PervasivesU.int_of_string_opt(match$1._0), (function (i) { + var match = xs[2]; if (match === undefined) { return ; } @@ -433,13 +433,13 @@ function parse$1(tokens) { }; } case "agda2-goals-action" : - var xs$1 = Belt_Array.get(xs, 1); + var xs$1 = xs[1]; if (xs$1 !== undefined) { return { TAG: "Ok", _0: { TAG: "InteractionPoints", - _0: Belt_Array.keepMap(Parser$AgdaModeVscode.SExpression.flatten(xs$1), PervasivesU.int_of_string_opt), + _0: Core__Array.filterMap(Parser$AgdaModeVscode.SExpression.flatten(xs$1), PervasivesU.int_of_string_opt), [Symbol.for("name")]: "InteractionPoints" }, [Symbol.for("name")]: "Ok" @@ -458,7 +458,7 @@ function parse$1(tokens) { } case "agda2-highlight-add-annotations" : var annotations = Tokens$AgdaModeVscode.Token.parseDirectHighlightings(xs); - var match$2 = Belt_Array.get(xs, 1); + var match$2 = xs[1]; if (match$2 === undefined) { return { TAG: "Ok", @@ -525,7 +525,7 @@ function parse$1(tokens) { [Symbol.for("name")]: "Ok" }; case "agda2-highlight-load-and-delete-action" : - var match$3 = Belt_Array.get(xs, 1); + var match$3 = xs[1]; if (match$3 !== undefined && match$3.TAG === "A") { return { TAG: "Ok", @@ -553,7 +553,7 @@ function parse$1(tokens) { exit = 1; break; case "agda2-make-case-action" : - var xs$2 = Belt_Array.get(xs, 1); + var xs$2 = xs[1]; if (xs$2 !== undefined) { return { TAG: "Ok", @@ -578,7 +578,7 @@ function parse$1(tokens) { }; } case "agda2-make-case-action-extendlam" : - var xs$3 = Belt_Array.get(xs, 1); + var xs$3 = xs[1]; if (xs$3 !== undefined) { return { TAG: "Ok", @@ -603,7 +603,7 @@ function parse$1(tokens) { }; } case "agda2-maybe-goto" : - var match$4 = Belt_Array.get(xs, 1); + var match$4 = xs[1]; if (match$4 === undefined) { return { TAG: "Error", @@ -657,7 +657,7 @@ function parse$1(tokens) { var filepath$1 = filepath._0; var index$p = match$5[2]; if (index$p.TAG === "A") { - return Belt_Option.mapWithDefault(Belt_Option.flatMap(PervasivesU.int_of_string_opt(index$p._0), (function (index) { + return Core__Option.mapOr(Core__Option.flatMap(PervasivesU.int_of_string_opt(index$p._0), (function (index) { return { TAG: "JumpToError", _0: filepath$1, @@ -693,7 +693,7 @@ function parse$1(tokens) { }; } case "agda2-solveAll-action" : - var xs$4 = Belt_Array.get(xs, 1); + var xs$4 = xs[1]; if (xs$4 === undefined) { return { TAG: "Error", @@ -713,9 +713,9 @@ function parse$1(tokens) { var i = { contents: 0 }; - var solutions = Belt_Array.keepMap(tokens$1, (function (token) { - var solution = isEven(i.contents) ? Belt_Option.flatMap(PervasivesU.int_of_string_opt(token), (function (index) { - return Belt_Option.map(Belt_Array.get(tokens$1, i.contents + 1 | 0), (function (s) { + var solutions = Core__Array.filterMap(tokens$1, (function (token) { + var solution = isEven(i.contents) ? Core__Option.flatMap(PervasivesU.int_of_string_opt(token), (function (index) { + return Core__Option.map(tokens$1[i.contents + 1 | 0], (function (s) { return [ index, s @@ -735,7 +735,7 @@ function parse$1(tokens) { [Symbol.for("name")]: "Ok" }; case "agda2-status-action" : - var match$6 = Belt_Array.get(xs, 1); + var match$6 = xs[1]; if (match$6 === undefined) { return { TAG: "Ok", @@ -772,7 +772,7 @@ function parse$1(tokens) { [Symbol.for("name")]: "Ok" }; case "agda2-verbose" : - var match$7 = Belt_Array.get(xs, 1); + var match$7 = xs[1]; if (match$7 !== undefined && match$7.TAG === "A") { return { TAG: "Ok", @@ -809,11 +809,11 @@ function parse$1(tokens) { }; } if (exit === 1) { - var match$8 = Belt_Array.get(xs, 1); + var match$8 = xs[1]; var exit$1 = 0; if (match$8 !== undefined && match$8.TAG === "A") { if (match$8._0 === "*Type-checking*") { - var match$9 = Belt_Array.get(xs, 3); + var match$9 = xs[3]; if (match$9 === undefined) { return { TAG: "Ok", @@ -835,7 +835,7 @@ function parse$1(tokens) { [Symbol.for("name")]: "Ok" }; } - var match$10 = Belt_Array.get(xs, 2); + var match$10 = xs[2]; if (match$10 !== undefined && match$10.TAG === "A") { return { TAG: "Ok", @@ -920,7 +920,7 @@ function parse$2(tokens) { var match$5 = match[1]; if (match$5.TAG === "A" && match$5._0 === ".") { var xs = match[2]; - return Belt_Result.map(parse$1(xs), (function (response) { + return Core__Result.map(parse$1(xs), (function (response) { return { TAG: "Last", _0: Caml_format.int_of_string(priority$1), @@ -943,7 +943,7 @@ function parse$2(tokens) { } } - return Belt_Result.map(parse$1(tokens), (function (response) { + return Core__Result.map(parse$1(tokens), (function (response) { return { TAG: "NonLast", _0: response, diff --git a/lib/js/test/tests/Parser/Test__Parser__SExpression.bs.js b/lib/js/test/tests/Parser/Test__Parser__SExpression.bs.js index 59bfe141..b908c9dd 100644 --- a/lib/js/test/tests/Parser/Test__Parser__SExpression.bs.js +++ b/lib/js/test/tests/Parser/Test__Parser__SExpression.bs.js @@ -20,7 +20,7 @@ function parseSExpression(breakpoints, input) { return ; } var match = a._0; - Assert.fail("Failed when parsing S-expression: " + Parser$AgdaModeVscode.$$Error.toString({ + Assert.fail(Parser$AgdaModeVscode.$$Error.toString({ TAG: "SExpression", _0: match[0], _1: match[1], diff --git a/lib/js/test/tests/Test__Util.bs.js b/lib/js/test/tests/Test__Util.bs.js index 85f72e2f..94e83cc9 100644 --- a/lib/js/test/tests/Test__Util.bs.js +++ b/lib/js/test/tests/Test__Util.bs.js @@ -208,7 +208,7 @@ function unlinesWith(f, xs) { function breakInput(input, breakpoints) { var breakpoints$p = [0].concat(breakpoints); - return breakpoints$p.map(function (i, x) { + return breakpoints$p.map(function (x, i) { var next = breakpoints$p[i + 1 | 0]; if (next !== undefined) { return [ diff --git a/src/Agda.res b/src/Agda.res index 37a2e501..2dd52088 100644 --- a/src/Agda.res +++ b/src/Agda.res @@ -180,10 +180,10 @@ module Indices: Indices = { // indicesUTF16 = [6000, 6003] // [6000, 6002] - let indicesUTF8 = indicesUTF16->Array.mapWithIndex((i, x) => x - i) + let indicesUTF8 = indicesUTF16->Array.mapWithIndex((x, i) => x - i) // [(0, 6000), (6001, 6002)] - let intervals = indicesUTF8->Array.mapWithIndex((i, rightEndpoint) => { + let intervals = indicesUTF8->Array.mapWithIndex((rightEndpoint, i) => { let leftEndpoint = switch indicesUTF8[i - 1] { | Some(x) => x + 1 // first interval diff --git a/src/Parser/Parser.res b/src/Parser/Parser.res index 45556782..6b882cce 100644 --- a/src/Parser/Parser.res +++ b/src/Parser/Parser.res @@ -3,7 +3,7 @@ open Belt let splitToLines = s => // RegEx updated to v10.1.4 s - ->Js.String.splitByRe(%re("/\r\n|\n/"), _) + ->(Js.String.splitByRe(%re("/\r\n|\n/"), _)) ->Array.map(x => switch x { | None => None @@ -75,6 +75,19 @@ module Incr = { /* Parsing S-Expressions */ /* Courtesy of @NightRa */ +// indicates at which stage the parse error happened +module SExprParseError = { + type t = StackEmpty | StackElementNullReference | PreprocessError + + let toString = x => { + switch x { + | StackEmpty => "StackEmpty" + | StackElementNullReference => "StackElementNullReference" + | PreprocessError => "PreprocessError" + } + } +} + module SExpression = { type rec t = | A(string) @@ -106,10 +119,10 @@ module SExpression = { | L(xs) => xs->Array.map(flatten)->Array.concatMany } - let parseWithContinuation = (string: string): Incr.continuation => { + let parseWithContinuation = (string: string): Incr.continuation => { let rec parseSExpression = (state: state, string: string): Incr.continuation< t, - (int, string), + (SExprParseError.t, string), > => { let {stack, word, escaped, in_str} = state @@ -120,7 +133,7 @@ module SExpression = { | Some(expr) => switch expr.contents { | A(_) => expr := L([expr.contents, elem]) - | L(xs) => xs |> Js.Array.push(elem) |> ignore + | L(xs) => ignore(Js.Array.push(elem, xs)) } | None => () } @@ -129,7 +142,7 @@ module SExpression = { let totalLength = String.length(string) for i in 0 to totalLength - 1 { - let char = string |> Js.String.charAt(i) + let char = Js.String.charAt(i, string) if escaped.contents { /* something was being escaped */ @@ -142,13 +155,13 @@ module SExpression = { } else if char == "\'" && !in_str.contents { () } else if char == "(" && !in_str.contents { - stack |> Js.Array.push(ref(L([]))) |> ignore + ignore(Js.Array.push(ref(L([])), stack)) } else if char == ")" && !in_str.contents { if word.contents != "" { pushToTheTop(A(word.contents)) word := "" } - switch stack |> Js.Array.pop { + switch Js.Array.pop(stack) { | Some(expr) => pushToTheTop(expr.contents) | None => () } @@ -167,10 +180,10 @@ module SExpression = { } } switch Array.length(stack) { - | 0 => Error((0, string)) + | 0 => Error((StackEmpty, string)) | 1 => switch stack[0] { - | None => Error((1, string)) + | None => Error((StackEmpty, string)) | Some(v) => switch v.contents { | L(xs) => @@ -178,7 +191,7 @@ module SExpression = { | None => Continue(parseSExpression(state, ...)) | Some(w) => Done(w) } - | _ => Error((3, string)) + | _ => Error((StackElementNullReference, string)) } } | _ => Continue(parseSExpression(state, ...)) @@ -193,14 +206,14 @@ module SExpression = { } switch preprocess(string) { - | Error(_) => Error((4, string)) + | Error(_) => Error((PreprocessError, string)) | Ok(processed) => parseSExpression(initialState(), processed) } } // returns an array of S-expressions and errors - let parse = (input: string): array> => { - let resultAccum: ref>> = ref([]) + let parse = (input: string): array> => { + let resultAccum: ref>> = ref([]) let continuation = ref(None) input ->splitToLines @@ -210,31 +223,31 @@ module SExpression = { // continue parsing with the given continuation switch continue(line) { - | Error(err) => Js.Array.push(Error(err), resultAccum.contents) |> ignore + | Error(err) => ignore(Js.Array.push(Error(err), resultAccum.contents)) | Continue(continue) => continuation := Some(continue) | Done(result) => - Js.Array.push(Ok(result), resultAccum.contents) |> ignore + ignore(Js.Array.push(Ok(result), resultAccum.contents)) continuation := None } }) resultAccum.contents } - type incr = Incr.t + type incr = Incr.t let makeIncr = callback => Incr.make(parseWithContinuation, callback) } // indicates at which stage the parse error happened module Error = { type t = - | SExpression(int, string) + | SExpression(SExprParseError.t, string) | Response(int, SExpression.t) let toString = x => switch x { - | SExpression(errno, string) => - "Something went wrong when parsing S-expressions. Error code: S" ++ - (string_of_int(errno) ++ + | SExpression(error, string) => + "Something went wrong when parsing S-expressions. Error code " ++ + (SExprParseError.toString(error) ++ (" \"" ++ (string ++ "\""))) | Response(errno, sexpr) => "Perhaps the underlying protocol used by Agda for communicating with agda-mode has changed.\nPlease report which version of Agda you are using.\nError code: R" ++ @@ -244,12 +257,17 @@ module Error = { } let userInputToSExpr = (s: string): string => - s - |> Js.String.replaceByRe(%re("/\\/g"), "\\\\") - |> Js.String.replaceByRe(%re("/\"/g"), "\\\"") - |> Js.String.replaceByRe(%re("/\r\n/g"), "\\r\\n") - |> Js.String.replaceByRe(%re("/\n/g"), "\\n") - |> Js.String.trim + Js.String.trim( + Js.String.replaceByRe( + %re("/\n/g"), + "\\n", + Js.String.replaceByRe( + %re("/\r\n/g"), + "\\r\\n", + Js.String.replaceByRe(%re("/\"/g"), "\\\"", Js.String.replaceByRe(%re("/\\/g"), "\\\\", s)), + ), + ), + ) let filepath = s => { // remove the Windows Bidi control character diff --git a/src/Response.res b/src/Response.res index 37834559..858472a6 100644 --- a/src/Response.res +++ b/src/Response.res @@ -1,5 +1,3 @@ -open Belt - type filepath = string type index = int @@ -223,12 +221,12 @@ let parse = (tokens: Token.t): result => { | Some(L([A(filepath), _, A(index')])) => int_of_string_opt(index') ->Option.flatMap(index => Some(JumpToError(filepath, index))) - ->Option.mapWithDefault(err(3), x => Ok(x)) + ->Option.mapOr(err(3), x => Ok(x)) | _ => err(4) } | Some(A("agda2-goals-action")) => switch xs[1] { - | Some(xs) => Ok(InteractionPoints(xs->Token.flatten->Array.keepMap(int_of_string_opt))) + | Some(xs) => Ok(InteractionPoints(xs->Token.flatten->Array.filterMap(int_of_string_opt))) | _ => err(5) } | Some(A("agda2-give-action")) => @@ -244,7 +242,7 @@ let parse = (tokens: Token.t): result => { | _ => None } ) - ->Option.mapWithDefault(err(6), x => Ok(x)) + ->Option.mapOr(err(6), x => Ok(x)) | _ => err(7) } | Some(A("agda2-make-case-action")) => @@ -265,7 +263,7 @@ let parse = (tokens: Token.t): result => { let isEven = i => Int32.rem(Int32.of_int(i), Int32.of_int(2)) == Int32.of_int(0) let i = ref(0) - let solutions = tokens->Array.keepMap(token => { + let solutions = tokens->Array.filterMap(token => { let solution = if isEven(i.contents) { int_of_string_opt(token)->Option.flatMap(index => tokens[i.contents + 1]->Option.map(s => (index, s)) diff --git a/test/tests/Parser/Test__Parser__SExpression.res b/test/tests/Parser/Test__Parser__SExpression.res index a651974a..304450c5 100644 --- a/test/tests/Parser/Test__Parser__SExpression.res +++ b/test/tests/Parser/Test__Parser__SExpression.res @@ -9,10 +9,7 @@ let parseSExpression = (breakpoints, input) => { let parser = Parser.SExpression.makeIncr(x => switch x { - | Yield(Error((errNo, raw))) => - Assert.fail( - "Failed when parsing S-expression: " ++ Parser.Error.toString(SExpression(errNo, raw)), - ) + | Yield(Error((errNo, raw))) => Assert.fail(Parser.Error.toString(SExpression(errNo, raw))) | Yield(Ok(a)) => ignore(Js.Array.push(a, output.contents)) | Stop => () } diff --git a/test/tests/Test__Util.res b/test/tests/Test__Util.res index 2471e360..234b3472 100644 --- a/test/tests/Test__Util.res +++ b/test/tests/Test__Util.res @@ -117,7 +117,7 @@ module Strings = { let breakpoints' = Array.concat([0], breakpoints) breakpoints' - ->Array.mapWithIndex((i, x: int) => + ->Array.mapWithIndex((x: int, i) => switch breakpoints'[i + 1] { | Some(next) => (x, next - x) | None => (x, Js.String.length(input) - x) From b4b1f221abdf66d23e24ca5b06c289de3e991482 Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Tue, 22 Oct 2024 13:49:23 +0800 Subject: [PATCH 087/109] [ fix ] Fix bindings to VSCode events & restore testings for the input method --- lib/js/src/Main.bs.js | 75 +- lib/js/test/tests/Test__EditorIM.bs.js | 951 +++++++++++++++++++++- lib/js/test/tests/Test__Util.bs.js | 22 + package-lock.json | 11 +- package.json | 4 +- src/Main.res | 1 - test/tests/Test__EditorIM.res | 1002 +++++++++++------------- test/tests/Test__Util.res | 16 + 8 files changed, 1477 insertions(+), 605 deletions(-) diff --git a/lib/js/src/Main.bs.js b/lib/js/src/Main.bs.js index 907436ec..4fd4f743 100644 --- a/lib/js/src/Main.bs.js +++ b/lib/js/src/Main.bs.js @@ -1,7 +1,6 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Curry = require("rescript/lib/js/curry.js"); var Vscode = require("vscode"); var Js_array = require("rescript/lib/js/js_array.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); @@ -30,13 +29,13 @@ function isAgda(fileName) { function onOpenEditor(callback) { Core__Option.forEach(Vscode.window.activeTextEditor, callback); - return Curry._1(Vscode.window.onDidChangeActiveTextEditor, (function (next) { - Core__Option.forEach(next, callback); - })); + return Vscode.window.onDidChangeActiveTextEditor(function (next) { + Core__Option.forEach(next, callback); + }); } function onCloseDocument(callback) { - return Curry._1(Vscode.workspace.onDidCloseTextDocument, callback); + return Vscode.workspace.onDidCloseTextDocument(callback); } function onTriggerCommand(callback) { @@ -97,20 +96,20 @@ function initialize(debugChan, extensionPath, globalStoragePath, editor, fileNam } }))); - subscribe(Curry._1(Vscode.window.onDidChangeTextEditorSelection, (function ($$event) { - var $$document = editor.document; - var intervals = $$event.selections.map(function (selection) { - return [ - Editor$AgdaModeVscode.Position.toOffset($$document, selection.start), - Editor$AgdaModeVscode.Position.toOffset($$document, selection.end) - ]; - }); - State__InputMethod$AgdaModeVscode.select(state, intervals); - }))); - subscribe(Curry._1(Vscode.workspace.onDidChangeTextDocument, (function ($$event) { - var changes = IM$AgdaModeVscode.Input.fromTextDocumentChangeEvent(editor, $$event); - State__InputMethod$AgdaModeVscode.keyUpdateEditorIM(state, changes); - }))); + subscribe(Vscode.window.onDidChangeTextEditorSelection(function ($$event) { + var $$document = editor.document; + var intervals = $$event.selections.map(function (selection) { + return [ + Editor$AgdaModeVscode.Position.toOffset($$document, selection.start), + Editor$AgdaModeVscode.Position.toOffset($$document, selection.end) + ]; + }); + State__InputMethod$AgdaModeVscode.select(state, intervals); + })); + subscribe(Vscode.workspace.onDidChangeTextDocument(function ($$event) { + var changes = IM$AgdaModeVscode.Input.fromTextDocumentChangeEvent(editor, $$event); + State__InputMethod$AgdaModeVscode.keyUpdateEditorIM(state, changes); + })); subscribe(Editor$AgdaModeVscode.Provider.registerDefinitionProvider(function (fileName, position) { var currentFileName = Parser$AgdaModeVscode.filepath(state.document.fileName); var normalizedFileName = Parser$AgdaModeVscode.filepath(fileName); @@ -180,26 +179,26 @@ function activateWithoutContext(subscriptions, extensionPath, globalStoragePath) }); Js_array.push(x, subscriptions); - var x$1 = Curry._1(Vscode.workspace.onDidChangeTextDocument, (function ($$event) { - var $$document = $$event.document; - var fileName = Parser$AgdaModeVscode.filepath($$document.fileName); - if (isAgda(fileName)) { - return Core__Option.forEach(Registry$AgdaModeVscode.get(fileName), (function (state) { - Highlighting$AgdaModeVscode.updateSemanticHighlighting(state.highlighting, $$event); - })); - } - - })); + var x$1 = Vscode.workspace.onDidChangeTextDocument(function ($$event) { + var $$document = $$event.document; + var fileName = Parser$AgdaModeVscode.filepath($$document.fileName); + if (isAgda(fileName)) { + return Core__Option.forEach(Registry$AgdaModeVscode.get(fileName), (function (state) { + Highlighting$AgdaModeVscode.updateSemanticHighlighting(state.highlighting, $$event); + })); + } + + }); Js_array.push(x$1, subscriptions); - var x$2 = Curry._1(Vscode.workspace.onDidCloseTextDocument, (function ($$document) { - var fileName = Parser$AgdaModeVscode.filepath($$document.fileName); - if (isAgda(fileName)) { - Registry$AgdaModeVscode.removeAndDestroy(fileName); - finalize(false); - return ; - } - - })); + var x$2 = Vscode.workspace.onDidCloseTextDocument(function ($$document) { + var fileName = Parser$AgdaModeVscode.filepath($$document.fileName); + if (isAgda(fileName)) { + Registry$AgdaModeVscode.removeAndDestroy(fileName); + finalize(false); + return ; + } + + }); Js_array.push(x$2, subscriptions); var xs = onTriggerCommand(async function (command, editor) { var fileName = Parser$AgdaModeVscode.filepath(editor.document.fileName); diff --git a/lib/js/test/tests/Test__EditorIM.bs.js b/lib/js/test/tests/Test__EditorIM.bs.js index dc49314a..8560eb91 100644 --- a/lib/js/test/tests/Test__EditorIM.bs.js +++ b/lib/js/test/tests/Test__EditorIM.bs.js @@ -1,11 +1,952 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; +var Curry = require("rescript/lib/js/curry.js"); +var Js_exn = require("rescript/lib/js/js_exn.js"); +var Assert = require("assert"); +var Vscode = require("vscode"); +var Js_string = require("rescript/lib/js/js_string.js"); +var Caml_option = require("rescript/lib/js/caml_option.js"); +var Core__Option = require("@rescript/core/lib/js/src/Core__Option.bs.js"); +var IM$AgdaModeVscode = require("../../src/InputMethod/IM.bs.js"); +var Chan$AgdaModeVscode = require("../../src/Util/Chan.bs.js"); +var Editor$AgdaModeVscode = require("../../src/Editor.bs.js"); +var Test__Util$AgdaModeVscode = require("./Test__Util.bs.js"); -var Js$p; +function acquire(setup) { + var setup$1 = setup.contents; + if (setup$1 !== undefined) { + return Caml_option.valFromOption(setup$1); + } + throw { + RE_EXN_ID: Test__Util$AgdaModeVscode.Exn, + _1: "Setup is not initialized", + Error: new Error() + }; +} -var Js; +async function cleanup(setup) { + var range = new Vscode.Range(new Vscode.Position(0, 0), new Vscode.Position(100, 0)); + await Editor$AgdaModeVscode.$$Text.replace(setup.editor.document, range, ""); +} -exports.Js$p = Js$p; -exports.Js = Js; -/* No side effect */ +function equal(xs) { + return function (extra) { + return Test__Util$AgdaModeVscode.A.equal(xs, extra); + }; +} + +function deepEqual(xs) { + return function (extra) { + return Test__Util$AgdaModeVscode.A.deepEqual(xs, extra); + }; +} + +async function wait(setup) { + return await Chan$AgdaModeVscode.once(setup.channels.inputMethod); +} + +async function wait2nd(setup) { + await Chan$AgdaModeVscode.once(setup.channels.inputMethod); + return await Chan$AgdaModeVscode.once(setup.channels.inputMethod); +} + +async function activate(setup, positions, param) { + var promise = wait(setup); + var positions$1 = Core__Option.getOr(positions, Editor$AgdaModeVscode.Cursor.getMany(setup.editor)); + Editor$AgdaModeVscode.Cursor.setMany(setup.editor, positions$1); + var result = Vscode.commands.executeCommand("agda-mode.input-symbol[Activate]"); + await result; + return await promise; +} + +async function deactivate(setup) { + var promise = wait(setup); + var result = Vscode.commands.executeCommand("agda-mode.escape"); + await result; + return await promise; +} + +async function insertChar(setup, $$char) { + var promise1 = wait(setup); + var promise2 = wait2nd(setup); + var positions = Editor$AgdaModeVscode.Cursor.getMany(setup.editor); + var succeed = await Editor$AgdaModeVscode.$$Text.batchInsert(setup.editor.document, positions, $$char); + if (succeed) { + var result1 = await promise1; + var result2 = await promise2; + return result1.concat(result2); + } + throw Js_exn.raiseError("Failed to insert " + $$char); +} + +async function backspace(setup) { + var promise1 = wait(setup); + var promise2 = wait2nd(setup); + var end_ = Editor$AgdaModeVscode.Cursor.get(setup.editor); + var start = end_.translate(0, -1); + var range = new Vscode.Range(start, end_); + var succeed = await Editor$AgdaModeVscode.$$Text.$$delete(setup.editor.document, range); + if (succeed) { + var result1 = await promise1; + var result2 = await promise2; + return result1.concat(result2); + } + throw Js_exn.raiseError("Failed to backspace"); +} + +async function select(setup, intervals) { + var ranges = intervals.map(function (extra) { + return Editor$AgdaModeVscode.$$Range.fromInterval(setup.editor.document, extra); + }); + return Editor$AgdaModeVscode.$$Selection.setMany(setup.editor, ranges); +} + +async function selectAndWait(setup, intervals) { + var promise = wait(setup); + var ranges = intervals.map(function (extra) { + return Editor$AgdaModeVscode.$$Range.fromInterval(setup.editor.document, extra); + }); + Editor$AgdaModeVscode.$$Selection.setMany(setup.editor, ranges); + return await promise; +} + +var IM = { + Input: IM$AgdaModeVscode.Input, + Output: IM$AgdaModeVscode.Output, + Log: IM$AgdaModeVscode.Log, + Module: IM$AgdaModeVscode.Module, + make: IM$AgdaModeVscode.make, + isActivated: IM$AgdaModeVscode.isActivated, + bufferIsEmpty: IM$AgdaModeVscode.bufferIsEmpty, + run: IM$AgdaModeVscode.run, + equal: equal, + deepEqual: deepEqual, + wait: wait, + wait2nd: wait2nd, + activate: activate, + deactivate: deactivate, + insertChar: insertChar, + backspace: backspace, + select: select, + selectAndWait: selectAndWait +}; + +describe("Input Method (Editor)", (function () { + var setup = { + contents: undefined + }; + before(async function () { + var match = await Test__Util$AgdaModeVscode.activateExtensionAndOpenFile(Test__Util$AgdaModeVscode.Path.asset("InputMethod.agda")); + setup.contents = { + editor: match[0], + channels: match[1] + }; + }); + afterEach(async function () { + var setup$1 = acquire(setup); + return await cleanup(setup$1); + }); + describe("Insertion", (function () { + it("should translate \"lambdabar\" to \"λ\"", (async function () { + var setup$1 = acquire(setup); + var $$document = setup$1.editor.document; + var log = await activate(setup$1, undefined, undefined); + Curry._3(Assert.deepEqual, ["Activate"], log, undefined); + var log$1 = await insertChar(setup$1, "l"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 1 + ], + "←" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$1, undefined); + Curry._3(Assert.equal, "←", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$2 = await insertChar(setup$1, "a"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$2, undefined); + Curry._3(Assert.equal, "←a", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$3 = await insertChar(setup$1, "m"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$3, undefined); + Curry._3(Assert.equal, "←am", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$4 = await insertChar(setup$1, "b"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$4, undefined); + Curry._3(Assert.equal, "←amb", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$5 = await insertChar(setup$1, "d"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$5, undefined); + Curry._3(Assert.equal, "←ambd", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$6 = await insertChar(setup$1, "a"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 6 + ], + "λ" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$6, undefined); + Curry._3(Assert.equal, "λ", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$7 = await insertChar(setup$1, "b"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$7, undefined); + Curry._3(Assert.equal, "λb", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$8 = await insertChar(setup$1, "a"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$8, undefined); + Curry._3(Assert.equal, "λba", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$9 = await insertChar(setup$1, "r"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 4 + ], + "ƛ" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "Deactivate", + "RewriteApplied" + ], log$9, undefined); + return Curry._3(Assert.equal, "ƛ", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + })); + it("should translate \"bn\" to \"𝕟\"", (async function () { + var setup$1 = acquire(setup); + var $$document = setup$1.editor.document; + var log = await activate(setup$1, undefined, undefined); + Curry._3(Assert.deepEqual, ["Activate"], log, undefined); + var log$1 = await insertChar(setup$1, "b"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 1 + ], + "♭" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$1, undefined); + Curry._3(Assert.equal, "♭", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$2 = await insertChar(setup$1, "n"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 2 + ], + "𝕟" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "Deactivate", + "RewriteApplied" + ], log$2, undefined); + return Curry._3(Assert.equal, "𝕟", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + })); + it("Issue #55, should not deactivate when size of candidate symbols > 1", (async function () { + var setup$1 = acquire(setup); + var $$document = setup$1.editor.document; + var log = await activate(setup$1, undefined, undefined); + Curry._3(Assert.deepEqual, ["Activate"], log, undefined); + var log$1 = await insertChar(setup$1, "a"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$1, undefined); + Curry._3(Assert.equal, "a", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$2 = await insertChar(setup$1, "s"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$2, undefined); + Curry._3(Assert.equal, "as", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$3 = await insertChar(setup$1, "t"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 3 + ], + "∗" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$3, undefined); + Curry._3(Assert.equal, "∗", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$4 = await insertChar(setup$1, "e"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$4, undefined); + Curry._3(Assert.equal, "∗e", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$5 = await insertChar(setup$1, "r"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$5, undefined); + Curry._3(Assert.equal, "∗er", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$6 = await insertChar(setup$1, "i"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$6, undefined); + Curry._3(Assert.equal, "∗eri", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$7 = await insertChar(setup$1, "s"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$7, undefined); + Curry._3(Assert.equal, "∗eris", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$8 = await insertChar(setup$1, "k"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 6 + ], + "⁎" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$8, undefined); + Curry._3(Assert.equal, "⁎", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$9 = await deactivate(setup$1); + Curry._3(Assert.deepEqual, ["Deactivate"], log$9, undefined); + return Curry._3(Assert.equal, "⁎", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + })); + })); + describe("Backspacing", (function () { + it("should work just fine", (async function () { + var setup$1 = acquire(setup); + var $$document = setup$1.editor.document; + var log = await activate(setup$1, undefined, undefined); + Curry._3(Assert.deepEqual, ["Activate"], log, undefined); + var log$1 = await insertChar(setup$1, "l"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 1 + ], + "←" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$1, undefined); + Curry._3(Assert.equal, "←", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$2 = await insertChar(setup$1, "a"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$2, undefined); + Curry._3(Assert.equal, "←a", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$3 = await backspace(setup$1); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 1 + ], + "←" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$3, undefined); + Curry._3(Assert.equal, "←", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$4 = await insertChar(setup$1, "a"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$4, undefined); + Curry._3(Assert.equal, "←a", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$5 = await insertChar(setup$1, "m"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$5, undefined); + Curry._3(Assert.equal, "←am", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$6 = await insertChar(setup$1, "b"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$6, undefined); + Curry._3(Assert.equal, "←amb", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$7 = await insertChar(setup$1, "d"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$7, undefined); + Curry._3(Assert.equal, "←ambd", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$8 = await insertChar(setup$1, "a"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 6 + ], + "λ" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$8, undefined); + Curry._3(Assert.equal, "λ", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$9 = await backspace(setup$1); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 0 + ], + "lambd" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$9, undefined); + Curry._3(Assert.equal, "lambd", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$10 = await deactivate(setup$1); + Curry._3(Assert.deepEqual, ["Deactivate"], log$10, undefined); + return Curry._3(Assert.equal, "lambd", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + })); + })); + describe("Abortion", (function () { + it("should abort after hitting escape", (async function () { + var setup$1 = acquire(setup); + var $$document = setup$1.editor.document; + var log = await activate(setup$1, undefined, undefined); + Curry._3(Assert.deepEqual, ["Activate"], log, undefined); + var log$1 = await insertChar(setup$1, "b"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 1 + ], + "♭" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$1, undefined); + Curry._3(Assert.equal, "♭", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$2 = await deactivate(setup$1); + Curry._3(Assert.deepEqual, ["Deactivate"], log$2, undefined); + return Curry._3(Assert.equal, "♭", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + })); + it("should abort after typing the wrong sequence", (async function () { + var setup$1 = acquire(setup); + var $$document = setup$1.editor.document; + var log = await activate(setup$1, undefined, undefined); + Curry._3(Assert.deepEqual, ["Activate"], log, undefined); + var log$1 = await insertChar(setup$1, "a"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$1, undefined); + Curry._3(Assert.equal, "a", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$2 = await insertChar(setup$1, "d"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "Deactivate", + "RewriteApplied" + ], log$2, undefined); + return Curry._3(Assert.equal, "ad", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + })); + it("should abort after backspacing to much", (async function () { + var setup$1 = acquire(setup); + var $$document = setup$1.editor.document; + var log = await activate(setup$1, undefined, undefined); + Curry._3(Assert.deepEqual, ["Activate"], log, undefined); + var log$1 = await insertChar(setup$1, "a"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$1, undefined); + Curry._3(Assert.equal, "a", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$2 = await backspace(setup$1); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 0 + ], + "" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "Deactivate", + "RewriteApplied" + ], log$2, undefined); + return Curry._3(Assert.equal, "", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + })); + })); + describe("Cursor", (function () { + it("should not abort when the cursor is placed inside the buffer", (async function () { + var setup$1 = acquire(setup); + var $$document = setup$1.editor.document; + var log = await activate(setup$1, undefined, undefined); + Curry._3(Assert.deepEqual, ["Activate"], log, undefined); + var log$1 = await insertChar(setup$1, "a"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$1, undefined); + Curry._3(Assert.equal, "a", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$2 = await insertChar(setup$1, "n"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$2, undefined); + Curry._3(Assert.equal, "an", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + await select(setup$1, [[ + 0, + 0 + ]]); + await select(setup$1, [[ + 1, + 1 + ]]); + await select(setup$1, [[ + 2, + 2 + ]]); + await select(setup$1, [ + [ + 0, + 1 + ], + [ + 1, + 2 + ] + ]); + await select(setup$1, [[ + 0, + 2 + ]]); + var log$3 = await insertChar(setup$1, "d"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 3 + ], + "∧" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$3, undefined); + Curry._3(Assert.equal, "∧", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$4 = await insertChar(setup$1, "="); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 2 + ], + "≙" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "Deactivate", + "RewriteApplied" + ], log$4, undefined); + return Curry._3(Assert.equal, "≙", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + })); + it("should abort when the cursor is placed outside the buffer", (async function () { + var setup$1 = acquire(setup); + var positions = [new Vscode.Position(0, 3)]; + var $$document = setup$1.editor.document; + await Editor$AgdaModeVscode.$$Text.insert($$document, new Vscode.Position(0, 0), "123"); + var log = await activate(setup$1, positions, undefined); + Curry._3(Assert.deepEqual, ["Activate"], log, undefined); + var log$1 = await insertChar(setup$1, "a"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$1, undefined); + Curry._3(Assert.equal, "123a", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$2 = await insertChar(setup$1, "n"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$2, undefined); + Curry._3(Assert.equal, "123an", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$3 = await selectAndWait(setup$1, [[ + 1, + 1 + ]]); + return Curry._3(Assert.deepEqual, ["Deactivate"], log$3, undefined); + })); + })); + describe("Multiple cursors at once", (function () { + var partial_arg = /\r\n/g; + var replaceCRLF = function (param) { + return Js_string.replaceByRe(partial_arg, "\n", param); + }; + it("should work just fine (𝕟)", (async function () { + var positions = [ + new Vscode.Position(0, 0), + new Vscode.Position(1, 0), + new Vscode.Position(2, 0), + new Vscode.Position(3, 0) + ]; + var setup$1 = acquire(setup); + var $$document = setup$1.editor.document; + await Editor$AgdaModeVscode.$$Text.insert($$document, new Vscode.Position(0, 0), "\n\n\n"); + var log = await activate(setup$1, positions, undefined); + Curry._3(Assert.deepEqual, ["Activate"], log, undefined); + var log$1 = await insertChar(setup$1, "b"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [ + [ + [ + 0, + 1 + ], + "♭" + ], + [ + [ + 2, + 3 + ], + "♭" + ], + [ + [ + 4, + 5 + ], + "♭" + ], + [ + [ + 6, + 7 + ], + "♭" + ] + ], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$1, undefined); + Curry._3(Assert.equal, "♭\n♭\n♭\n♭", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document)), undefined); + var log$2 = await insertChar(setup$1, "n"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [ + [ + [ + 0, + 2 + ], + "𝕟" + ], + [ + [ + 3, + 5 + ], + "𝕟" + ], + [ + [ + 6, + 8 + ], + "𝕟" + ], + [ + [ + 9, + 11 + ], + "𝕟" + ] + ], + [Symbol.for("name")]: "RewriteIssued" + }, + "Deactivate", + "RewriteApplied" + ], log$2, undefined); + return Curry._3(Assert.equal, "𝕟\n𝕟\n𝕟\n𝕟", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document)), undefined); + })); + it("should work just fine (∧)", (async function () { + var positions = [ + new Vscode.Position(0, 0), + new Vscode.Position(1, 1), + new Vscode.Position(2, 2), + new Vscode.Position(3, 3) + ]; + var setup$1 = acquire(setup); + var $$document = setup$1.editor.document; + await Editor$AgdaModeVscode.$$Text.insert($$document, new Vscode.Position(0, 0), "123\n123\n123\n123"); + var log = await activate(setup$1, positions, undefined); + Curry._3(Assert.deepEqual, ["Activate"], log, undefined); + var log$1 = await insertChar(setup$1, "a"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$1, undefined); + Curry._3(Assert.equal, "a123\n1a23\n12a3\n123a", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document)), undefined); + var log$2 = await insertChar(setup$1, "n"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$2, undefined); + Curry._3(Assert.equal, "an123\n1an23\n12an3\n123an", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document)), undefined); + var log$3 = await insertChar(setup$1, "d"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [ + [ + [ + 0, + 3 + ], + "∧" + ], + [ + [ + 8, + 11 + ], + "∧" + ], + [ + [ + 16, + 19 + ], + "∧" + ], + [ + [ + 24, + 27 + ], + "∧" + ] + ], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$3, undefined); + return Curry._3(Assert.equal, "∧123\n1∧23\n12∧3\n123∧", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document)), undefined); + })); + })); + })); + +exports.acquire = acquire; +exports.cleanup = cleanup; +exports.IM = IM; +/* Not a pure module */ diff --git a/lib/js/test/tests/Test__Util.bs.js b/lib/js/test/tests/Test__Util.bs.js index 94e83cc9..aaf334b3 100644 --- a/lib/js/test/tests/Test__Util.bs.js +++ b/lib/js/test/tests/Test__Util.bs.js @@ -569,6 +569,26 @@ async function restoreFile(filepath, $$var) { }; } +function unwrap(x) { + if (x.TAG === "Ok") { + return x._0; + } + throw x._0; +} + +var R = { + unwrap: unwrap +}; + +async function unwrap$1(promise) { + var result = await promise; + return unwrap(result); +} + +var P = { + unwrap: unwrap$1 +}; + exports.Exn = Exn; exports.runner = runner; exports.Path = Path; @@ -585,4 +605,6 @@ exports.onUnix = onUnix; exports.Agda = Agda; exports.readFile = readFile$1; exports.restoreFile = restoreFile; +exports.R = R; +exports.P = P; /* extensionPath Not a pure module */ diff --git a/package-lock.json b/package-lock.json index b4874685..b5e41f96 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,12 +15,12 @@ "compare-versions": "^3.5.1", "eventemitter3": ">=4.0.0", "getos": "^3.2.1", - "language-server-mule": "github:banacorn/language-server-mule", + "language-server-mule": "github:banacorn/language-server-mule#v0.0.5", "react": "^18.0.0", "react-dom": "^18.0.0", "rescript": "^11.1.4", "rescript-nodejs": "^16.1.0", - "rescript-vscode": "github:banacorn/rescript-vscode", + "rescript-vscode": "github:banacorn/rescript-vscode#v0.0.23", "rescript-webapi": ">=0.2.0", "untildify": "^4.0.0", "vscode-codicons": "^0.0.7" @@ -41,6 +41,9 @@ "vscode": "^1.74.0" } }, + "../banacorn/rescript-vscode": { + "extraneous": true + }, "node_modules/@datastructures-js/binary-search-tree": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/@datastructures-js/binary-search-tree/-/binary-search-tree-4.3.2.tgz", @@ -3270,8 +3273,8 @@ "license": "MIT" }, "node_modules/rescript-vscode": { - "version": "0.0.22", - "resolved": "git+ssh://git@github.com/banacorn/rescript-vscode.git#5ec4285e89773ad393988b6914153e5649fb0a8f", + "version": "0.0.23", + "resolved": "git+ssh://git@github.com/banacorn/rescript-vscode.git#69e3183f14b1ffafc1df462982b2e7eedaa75966", "license": "MIT", "dependencies": { "rescript": "^11.1.4" diff --git a/package.json b/package.json index 84b15aa3..c310b467 100644 --- a/package.json +++ b/package.json @@ -41,12 +41,12 @@ "compare-versions": "^3.5.1", "eventemitter3": ">=4.0.0", "getos": "^3.2.1", - "language-server-mule": "github:banacorn/language-server-mule", + "language-server-mule": "github:banacorn/language-server-mule#v0.0.5", "react": "^18.0.0", "react-dom": "^18.0.0", "rescript": "^11.1.4", "rescript-nodejs": "^16.1.0", - "rescript-vscode": "github:banacorn/rescript-vscode", + "rescript-vscode": "github:banacorn/rescript-vscode#v0.0.23", "rescript-webapi": ">=0.2.0", "untildify": "^4.0.0", "vscode-codicons": "^0.0.7" diff --git a/src/Main.res b/src/Main.res index fb52edcf..1caf3f11 100644 --- a/src/Main.res +++ b/src/Main.res @@ -80,7 +80,6 @@ let initialize = (debugChan, extensionPath, globalStoragePath, editor, fileName) } }) ->subscribe - // register event listeners for the input method VSCode.Window.onDidChangeTextEditorSelection(event => { let document = VSCode.TextEditor.document(editor) diff --git a/test/tests/Test__EditorIM.res b/test/tests/Test__EditorIM.res index a9e88ea7..3058b956 100644 --- a/test/tests/Test__EditorIM.res +++ b/test/tests/Test__EditorIM.res @@ -1,558 +1,450 @@ open Mocha open Test__Util -module Js' = Js -open Promise -module Js = Js' - -// type setup = { -// editor: VSCode.TextEditor.t, -// channels: State__Type.channels, -// } - -// let acquire = async setup => -// switch setup.contents { -// | None => Error(Util.Error("Cannot acquire the setup")) -// | Some(setup) => Ok(setup) -// } - -// let cleanup = setup => { -// let range = VSCode.Range.make(VSCode.Position.make(0, 0), VSCode.Position.make(100, 0)) -// setup.editor->VSCode.TextEditor.document->Editor.Text.replace(range, "") -// } - -// module IM = { -// include IM - -// let equal = (xs: IM.Log.t) => A.equal(xs) -// let deepEqual = (xs: IM.Log.t) => A.deepEqual(xs) - -// let wait = setup => setup.channels.inputMethod->Chan.once->Promise.map(x => Ok(x)) -// let wait2nd = setup => -// setup.channels.inputMethod -// ->Chan.once -// ->Promise.flatMap(_ => setup.channels.inputMethod->Chan.once) -// ->Promise.map(x => Ok(x)) - -// let activate = (setup, ~positions=?, ()) => { -// let promise = wait(setup) -// let positions = positions->Option.getWithDefault(Editor.Cursor.getMany(setup.editor)) -// Editor.Cursor.setMany(setup.editor, positions) -// VSCode.Commands.executeCommand0("agda-mode.input-symbol[Activate]") -// ->flatMap(result => result) -// ->flatMap(_ => promise) -// } - -// let deactivate = setup => { -// let promise = wait(setup) -// VSCode.Commands.executeCommand0("agda-mode.escape") -// ->flatMap(result => result) -// ->flatMap(_ => promise) -// } - -// let insertChar = (setup, char) => { -// let promise1 = wait(setup) -// let promise2 = wait2nd(setup) - -// let positions = Editor.Cursor.getMany(setup.editor) - -// setup.editor -// ->VSCode.TextEditor.document -// ->Editor.Text.batchInsert(positions, char) -// ->map(succeed => succeed ? Ok() : Error(Js.Exn.raiseError("Failed to insert " ++ char))) -// ->flatMapOk(() => promise1) -// ->flatMapOk(result1 => promise2->Promise.mapOk(result2 => Array.concat(result1, result2))) -// } - -// let backspace = setup => { -// let promise1 = wait(setup) -// let promise2 = wait2nd(setup) -// let end_ = Editor.Cursor.get(setup.editor) -// let start = end_->VSCode.Position.translate(0, -1) -// let range = VSCode.Range.make(start, end_) -// setup.editor -// ->VSCode.TextEditor.document -// ->Editor.Text.delete(range) -// ->map(succeed => succeed ? Ok() : Error(Js.Exn.raiseError("Failed to backspace"))) -// ->flatMapOk(() => promise1) -// ->flatMapOk(result1 => promise2->Promise.mapOk(result2 => Array.concat(result1, result2))) -// } - -// let select = (setup, intervals) => { -// let ranges = -// intervals->Array.map(Editor.Range.fromInterval(setup.editor->VSCode.TextEditor.document)) -// Editor.Selection.setMany(setup.editor, ranges) -// Promise.resolved(Ok()) -// } -// let selectAndWait = (setup, intervals) => { -// let promise = wait(setup) -// let ranges = -// intervals->Array.map(Editor.Range.fromInterval(setup.editor->VSCode.TextEditor.document)) -// Editor.Selection.setMany(setup.editor, ranges) -// promise -// } -// } - -// describe("Input Method (Editor)", () => { -// let setup = ref(None) - -// Q.before(() => { -// activateExtensionAndOpenFile(Path.asset("InputMethod.agda"))->map( -// ((editor, channels)) => { -// setup := Some({editor, channels}) -// Ok() -// }, -// ) -// }) - -// Q.after_each(() => acquire(setup)->mapOk(cleanup)) - -// describe("Insertion", () => { -// Q.it( -// `should translate "lambdabar" to "λ"`, -// () => -// acquire(setup)->flatMapOk( -// setup => { -// let document = VSCode.TextEditor.document(setup.editor) -// IM.activate(setup, ()) -// ->flatMapOk(IM.deepEqual([Activate])) -// ->flatMapOk(_ => IM.insertChar(setup, "l")) -// ->flatMapOk( -// IM.deepEqual([RewriteIssued([((0, 1), `←`)]), UpdateView, RewriteApplied]), -// ) -// ->flatMapOk(() => A.equal(`←`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "a")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk(() => A.equal(`←a`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "m")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk(() => A.equal(`←am`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "b")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk(() => A.equal(`←amb`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "d")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk(() => A.equal(`←ambd`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "a")) -// ->flatMapOk( -// IM.deepEqual([RewriteIssued([((0, 6), `λ`)]), UpdateView, RewriteApplied]), -// ) -// ->flatMapOk(() => A.equal(`λ`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "b")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk(() => A.equal(`λb`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "a")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk(() => A.equal(`λba`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "r")) -// ->flatMapOk( -// IM.deepEqual([RewriteIssued([((0, 4), `ƛ`)]), Deactivate, RewriteApplied]), -// ) -// ->flatMapOk(() => A.equal(`ƛ`, Editor.Text.getAll(document))) -// }, -// ), -// ) -// Q.it( -// `should translate "bn" to "𝕟"`, -// () => -// acquire(setup)->flatMapOk( -// setup => { -// let document = VSCode.TextEditor.document(setup.editor) -// IM.activate(setup, ()) -// ->flatMapOk(IM.deepEqual([Activate])) -// ->flatMapOk(() => IM.insertChar(setup, "b")) -// ->flatMapOk( -// IM.deepEqual([RewriteIssued([((0, 1), `♭`)]), UpdateView, RewriteApplied]), -// ) -// ->flatMapOk(() => A.equal(`♭`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "n")) -// ->flatMapOk( -// IM.deepEqual([RewriteIssued([((0, 2), `𝕟`)]), Deactivate, RewriteApplied]), -// ) -// ->flatMapOk(() => A.equal(`𝕟`, Editor.Text.getAll(document))) -// }, -// ), -// ) -// Q.it( -// `Issue #55, should not deactivate when size of candidate symbols > 1`, -// () => -// acquire(setup)->flatMapOk( -// setup => { -// let document = VSCode.TextEditor.document(setup.editor) -// IM.activate(setup, ()) -// ->flatMapOk(IM.deepEqual([Activate])) -// ->flatMapOk(() => IM.insertChar(setup, "a")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk(() => A.equal(`a`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "s")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk(() => A.equal(`as`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "t")) -// ->flatMapOk( -// IM.deepEqual([RewriteIssued([((0, 3), `∗`)]), UpdateView, RewriteApplied]), -// ) -// ->flatMapOk(() => A.equal(`∗`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "e")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk(() => A.equal(`∗e`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "r")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk(() => A.equal(`∗er`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "i")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk(() => A.equal(`∗eri`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "s")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk(() => A.equal(`∗eris`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "k")) -// ->flatMapOk( -// IM.deepEqual([RewriteIssued([((0, 6), `⁎`)]), UpdateView, RewriteApplied]), -// ) -// ->flatMapOk(() => A.equal(`⁎`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.deactivate(setup)) -// ->flatMapOk(IM.deepEqual([Deactivate])) -// ->flatMapOk(() => A.equal(`⁎`, Editor.Text.getAll(document))) -// }, -// ), -// ) -// }) -// describe("Backspacing", () => -// Q.it( -// `should work just fine`, -// () => -// acquire(setup)->flatMapOk( -// setup => { -// let document = VSCode.TextEditor.document(setup.editor) -// IM.activate(setup, ()) -// ->flatMapOk(IM.deepEqual([Activate])) -// ->flatMapOk(() => IM.insertChar(setup, "l")) -// ->flatMapOk( -// IM.deepEqual([RewriteIssued([((0, 1), `←`)]), UpdateView, RewriteApplied]), -// ) -// ->flatMapOk(() => A.equal(`←`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "a")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk(() => A.equal(`←a`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.backspace(setup)) -// ->flatMapOk( -// IM.deepEqual([RewriteIssued([((0, 1), `←`)]), UpdateView, RewriteApplied]), -// ) -// ->flatMapOk(() => A.equal(`←`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "a")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk(() => A.equal(`←a`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "m")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk(() => A.equal(`←am`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "b")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk(() => A.equal(`←amb`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "d")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk(() => A.equal(`←ambd`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "a")) -// ->flatMapOk( -// IM.deepEqual([RewriteIssued([((0, 6), `λ`)]), UpdateView, RewriteApplied]), -// ) -// ->flatMapOk(() => A.equal(`λ`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.backspace(setup)) -// ->flatMapOk( -// IM.deepEqual([RewriteIssued([((0, 0), `lambd`)]), UpdateView, RewriteApplied]), -// ) -// ->flatMapOk(() => A.equal(`lambd`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.deactivate(setup)) -// ->flatMapOk(IM.deepEqual([Deactivate])) -// ->flatMapOk(() => A.equal(`lambd`, Editor.Text.getAll(document))) -// }, -// ), -// ) -// ) - -// describe("Abortion", () => { -// Q.it( -// `should abort after hitting escape`, -// () => -// acquire(setup)->flatMapOk( -// setup => { -// let document = VSCode.TextEditor.document(setup.editor) -// IM.activate(setup, ()) -// ->flatMapOk(IM.deepEqual([Activate])) -// ->flatMapOk(() => IM.insertChar(setup, "b")) -// ->flatMapOk( -// IM.deepEqual([RewriteIssued([((0, 1), `♭`)]), UpdateView, RewriteApplied]), -// ) -// ->flatMapOk(() => A.equal(`♭`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.deactivate(setup)) -// ->flatMapOk(IM.deepEqual([Deactivate])) -// ->flatMapOk(() => A.equal(`♭`, Editor.Text.getAll(document))) -// }, -// ), -// ) -// Q.it( -// `should abort after typing the wrong sequence`, -// () => -// acquire(setup)->flatMapOk( -// setup => { -// let document = VSCode.TextEditor.document(setup.editor) -// IM.activate(setup, ()) -// ->flatMapOk(IM.deepEqual([Activate])) -// ->flatMapOk(() => IM.insertChar(setup, "a")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk(() => A.equal(`a`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "d")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), Deactivate, RewriteApplied])) -// ->flatMapOk(() => A.equal(`ad`, Editor.Text.getAll(document))) -// }, -// ), -// ) -// Q.it( -// `should abort after backspacing to much`, -// () => -// acquire(setup)->flatMapOk( -// setup => { -// let document = VSCode.TextEditor.document(setup.editor) -// IM.activate(setup, ()) -// ->flatMapOk(IM.deepEqual([Activate])) -// ->flatMapOk(() => IM.insertChar(setup, "a")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk(() => A.equal(`a`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.backspace(setup)) -// ->flatMapOk(IM.deepEqual([RewriteIssued([((0, 0), ``)]), Deactivate, RewriteApplied])) -// ->flatMapOk(() => A.equal(``, Editor.Text.getAll(document))) -// }, -// ), -// ) -// }) - -// describe("Cursor", () => { -// Q.it( -// `should not abort when the cursor is placed inside the buffer`, -// () => -// acquire(setup)->flatMapOk( -// setup => { -// let document = VSCode.TextEditor.document(setup.editor) -// IM.activate(setup, ()) -// ->flatMapOk(IM.deepEqual([Activate])) -// ->flatMapOk(() => IM.insertChar(setup, "a")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk(() => A.equal(`a`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "n")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk(() => A.equal(`an`, Editor.Text.getAll(document))) -// // messing with the cursor -// ->flatMapOk(() => IM.select(setup, [(0, 0)])) -// ->flatMapOk(() => IM.select(setup, [(1, 1)])) -// ->flatMapOk(() => IM.select(setup, [(2, 2)])) -// ->flatMapOk(() => IM.select(setup, [(0, 1), (1, 2)])) -// ->flatMapOk(() => IM.select(setup, [(0, 2)])) -// // resume insertion -// ->flatMapOk(() => IM.insertChar(setup, "d")) -// ->flatMapOk( -// IM.deepEqual([RewriteIssued([((0, 3), `∧`)]), UpdateView, RewriteApplied]), -// ) -// ->flatMapOk(() => A.equal(`∧`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "=")) -// ->flatMapOk( -// IM.deepEqual([RewriteIssued([((0, 2), `≙`)]), Deactivate, RewriteApplied]), -// ) -// ->flatMapOk(() => A.equal(`≙`, Editor.Text.getAll(document))) -// }, -// ), -// ) -// Q.it( -// `should abort when the cursor is placed outside the buffer`, -// () => -// acquire(setup)->flatMapOk( -// setup => { -// let positions = [VSCode.Position.make(0, 3)] - -// let document = VSCode.TextEditor.document(setup.editor) - -// document -// ->Editor.Text.insert(VSCode.Position.make(0, 0), "123") -// ->flatMap(_ => IM.activate(setup, ~positions, ())) -// ->flatMapOk(IM.deepEqual([Activate])) -// ->flatMapOk(() => IM.insertChar(setup, "a")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk(() => A.equal(`123a`, Editor.Text.getAll(document))) -// ->flatMapOk(() => IM.insertChar(setup, "n")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk(() => A.equal(`123an`, Editor.Text.getAll(document))) -// // messing with the cursor -// ->flatMapOk(() => IM.selectAndWait(setup, [(1, 1)])) -// ->flatMapOk(IM.deepEqual([Deactivate])) -// }, -// ), -// ) -// }) - -// describe("Multiple cursors at once", () => { -// let replaceCRLF = Js.String.replaceByRe(%re("/\r\n/g"), "\n") // RegEx updated to v10.1.4 -// Q.it( -// `should work just fine (𝕟)`, -// () => { -// let positions = [ -// VSCode.Position.make(0, 0), -// VSCode.Position.make(1, 0), -// VSCode.Position.make(2, 0), -// VSCode.Position.make(3, 0), -// ] - -// acquire(setup)->flatMapOk( -// setup => { -// let document = VSCode.TextEditor.document(setup.editor) - -// document -// ->Editor.Text.insert(VSCode.Position.make(0, 0), "\n\n\n") -// ->flatMap(_ => IM.activate(setup, ~positions, ())) -// ->flatMapOk(IM.deepEqual([Activate])) -// ->flatMapOk(() => IM.insertChar(setup, "b")) -// ->flatMapOk( -// actual => -// if onUnix { -// IM.deepEqual( -// [ -// RewriteIssued([ -// ((0, 1), `♭`), -// ((2, 3), `♭`), -// ((4, 5), `♭`), -// ((6, 7), `♭`), -// ]), -// UpdateView, -// RewriteApplied, -// ], -// actual, -// ) -// } else { -// IM.deepEqual( -// [ -// RewriteIssued([ -// ((0, 1), `♭`), -// ((3, 4), `♭`), -// ((6, 7), `♭`), -// ((9, 10), `♭`), -// ]), -// UpdateView, -// RewriteApplied, -// ], -// actual, -// ) -// }, -// ) -// ->flatMapOk( -// () => A.equal(`♭\n♭\n♭\n♭`, replaceCRLF(Editor.Text.getAll(document))), // string literal updated to v10.1.4 -// ) -// ->flatMapOk(() => IM.insertChar(setup, "n")) -// ->flatMapOk( -// actual => -// if onUnix { -// IM.deepEqual( -// [ -// RewriteIssued([ -// ((0, 2), `𝕟`), -// ((3, 5), `𝕟`), -// ((6, 8), `𝕟`), -// ((9, 11), `𝕟`), -// ]), -// Deactivate, -// RewriteApplied, -// ], -// actual, -// ) -// } else { -// IM.deepEqual( -// [ -// RewriteIssued([ -// ((0, 2), `𝕟`), -// ((4, 6), `𝕟`), -// ((8, 10), `𝕟`), -// ((12, 14), `𝕟`), -// ]), -// Deactivate, -// RewriteApplied, -// ], -// actual, -// ) -// }, -// ) -// ->flatMapOk( -// () => A.equal(`𝕟\n𝕟\n𝕟\n𝕟`, replaceCRLF(Editor.Text.getAll(document))), // string literal updated to v10.1.4 -// ) -// }, -// ) -// }, -// ) -// Q.it( -// `should work just fine (∧)`, -// () => { -// acquire(setup)->flatMapOk( -// setup => { -// let positions = [ -// VSCode.Position.make(0, 0), -// VSCode.Position.make(1, 1), -// VSCode.Position.make(2, 2), -// VSCode.Position.make(3, 3), -// ] -// let document = VSCode.TextEditor.document(setup.editor) - -// document -// ->Editor.Text.insert(VSCode.Position.make(0, 0), "123\n123\n123\n123") -// ->flatMap(_ => IM.activate(setup, ~positions, ())) -// ->flatMapOk(IM.deepEqual([Activate])) -// ->flatMapOk(() => IM.insertChar(setup, "a")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk( -// () => A.equal(`a123\n1a23\n12a3\n123a`, replaceCRLF(Editor.Text.getAll(document))), // string literal updated to v10.1.4 -// ) -// ->flatMapOk(() => IM.insertChar(setup, "n")) -// ->flatMapOk(IM.deepEqual([RewriteIssued([]), UpdateView, RewriteApplied])) -// ->flatMapOk( -// () => -// A.equal(`an123\n1an23\n12an3\n123an`, replaceCRLF(Editor.Text.getAll(document))), // string literal updated to v10.1.4 -// ) -// ->flatMapOk(() => IM.insertChar(setup, "d")) -// ->flatMapOk( -// actual => -// if onUnix { -// IM.deepEqual( -// [ -// RewriteIssued([ -// ((0, 3), `∧`), -// ((8, 11), `∧`), -// ((16, 19), `∧`), -// ((24, 27), `∧`), -// ]), -// UpdateView, -// RewriteApplied, -// ], -// actual, -// ) -// } else { -// IM.deepEqual( -// [ -// RewriteIssued([ -// ((0, 3), `∧`), -// ((9, 12), `∧`), -// ((18, 21), `∧`), -// ((27, 30), `∧`), -// ]), -// UpdateView, -// RewriteApplied, -// ], -// actual, -// ) -// }, -// ) -// ->flatMapOk( -// () => -// A.equal( -// `∧123\n1∧23\n12∧3\n123∧`, // string literal updated to v10.1.4 -// replaceCRLF(Editor.Text.getAll(document)), -// ), -// ) -// }, -// ) -// }, -// ) -// }) -// }) +type setup = { + editor: VSCode.TextEditor.t, + channels: State__Type.channels, +} + +let acquire = setup => + switch setup.contents { + | None => raise(Exn("Setup is not initialized")) + | Some(setup) => setup + } + +let cleanup = async setup => { + let range = VSCode.Range.make(VSCode.Position.make(0, 0), VSCode.Position.make(100, 0)) + let _ = await setup.editor->VSCode.TextEditor.document->Editor.Text.replace(range, "") +} + +module IM = { + include IM + + let equal = (xs: IM.Log.t) => A.equal(xs, ...) + let deepEqual = (xs: IM.Log.t) => A.deepEqual(xs, ...) + + let wait = async setup => await setup.channels.inputMethod->Chan.once + let wait2nd = async setup => { + let _ = await setup.channels.inputMethod->Chan.once + await setup.channels.inputMethod->Chan.once + } + + let activate = async (setup, ~positions=?, ()) => { + let promise = wait(setup) + let positions = positions->Option.getOr(Editor.Cursor.getMany(setup.editor)) + Editor.Cursor.setMany(setup.editor, positions) + let result = VSCode.Commands.executeCommand0("agda-mode.input-symbol[Activate]") + let _ = await result + await promise + } + + let deactivate = async setup => { + let promise = wait(setup) + let result = VSCode.Commands.executeCommand0("agda-mode.escape") + let _ = await result + await promise + } + + let insertChar = async (setup, char) => { + let promise1 = wait(setup) + let promise2 = wait2nd(setup) + + let positions = Editor.Cursor.getMany(setup.editor) + + let succeed = + await setup.editor + ->VSCode.TextEditor.document + ->Editor.Text.batchInsert(positions, char) + + if succeed { + let result1 = await promise1 + let result2 = await promise2 + Array.concat(result1, result2) + } else { + raise(Js.Exn.raiseError("Failed to insert " ++ char)) + } + } + + let backspace = async setup => { + let promise1 = wait(setup) + let promise2 = wait2nd(setup) + let end_ = Editor.Cursor.get(setup.editor) + let start = end_->VSCode.Position.translate(0, -1) + let range = VSCode.Range.make(start, end_) + let succeed = + await setup.editor + ->VSCode.TextEditor.document + ->Editor.Text.delete(range) + + if succeed { + let result1 = await promise1 + let result2 = await promise2 + Array.concat(result1, result2) + } else { + raise(Js.Exn.raiseError("Failed to backspace")) + } + } + + let select = async (setup, intervals) => { + let ranges = + intervals->Array.map(Editor.Range.fromInterval(setup.editor->VSCode.TextEditor.document, ...)) + Editor.Selection.setMany(setup.editor, ranges) + } + + let selectAndWait = async (setup, intervals) => { + let promise = wait(setup) + let ranges = + intervals->Array.map(Editor.Range.fromInterval(setup.editor->VSCode.TextEditor.document, ...)) + Editor.Selection.setMany(setup.editor, ranges) + await promise + } +} + +describe("Input Method (Editor)", () => { + let setup = ref(None) + + // initialize the setup before all tests + Async.before(async () => { + let (editor, channels) = await activateExtensionAndOpenFile(Path.asset("InputMethod.agda")) + setup := Some({editor, channels}) + }) + + // cleanup the editor after each test + Async.afterEach(async () => { + let setup = acquire(setup) + await cleanup(setup) + }) + + describe("Insertion", () => { + Async.it( + `should translate "lambdabar" to "λ"`, + async () => { + let setup = acquire(setup) + let document = setup.editor->VSCode.TextEditor.document + let log = await IM.activate(setup, ()) + Assert.deepEqual([IM.Log.Activate], log) + let log = await IM.insertChar(setup, "l") + Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "←")]), UpdateView, RewriteApplied], log) + Assert.equal("←", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "a") + Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) + Assert.equal("←a", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "m") + Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) + Assert.equal("←am", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "b") + Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) + Assert.equal("←amb", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "d") + Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) + Assert.equal("←ambd", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "a") + Assert.deepEqual([IM.Log.RewriteIssued([((0, 6), "λ")]), UpdateView, RewriteApplied], log) + Assert.equal("λ", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "b") + Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) + Assert.equal("λb", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "a") + Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) + Assert.equal("λba", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "r") + Assert.deepEqual([IM.Log.RewriteIssued([((0, 4), "ƛ")]), Deactivate, RewriteApplied], log) + Assert.equal("ƛ", document->Editor.Text.getAll) + }, + ) + + Async.it( + `should translate "bn" to "𝕟"`, + async () => { + let setup = acquire(setup) + let document = setup.editor->VSCode.TextEditor.document + let log = await IM.activate(setup, ()) + Assert.deepEqual([IM.Log.Activate], log) + let log = await IM.insertChar(setup, "b") + Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "♭")]), UpdateView, RewriteApplied], log) + Assert.equal("♭", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "n") + Assert.deepEqual( + [IM.Log.RewriteIssued([((0, 2), "𝕟")]), Deactivate, RewriteApplied], + log, + ) + Assert.equal("𝕟", document->Editor.Text.getAll) + }, + ) + + Async.it( + `Issue #55, should not deactivate when size of candidate symbols > 1`, + async () => { + let setup = acquire(setup) + let document = setup.editor->VSCode.TextEditor.document + let log = await IM.activate(setup, ()) + Assert.deepEqual([IM.Log.Activate], log) + let log = await IM.insertChar(setup, "a") + Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) + Assert.equal("a", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "s") + Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) + Assert.equal("as", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "t") + Assert.deepEqual([IM.Log.RewriteIssued([((0, 3), "∗")]), UpdateView, RewriteApplied], log) + Assert.equal("∗", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "e") + Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) + Assert.equal("∗e", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "r") + Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) + Assert.equal("∗er", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "i") + Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) + Assert.equal("∗eri", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "s") + Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) + Assert.equal("∗eris", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "k") + Assert.deepEqual([IM.Log.RewriteIssued([((0, 6), "⁎")]), UpdateView, RewriteApplied], log) + Assert.equal("⁎", document->Editor.Text.getAll) + let log = await IM.deactivate(setup) + Assert.deepEqual([IM.Log.Deactivate], log) + Assert.equal("⁎", document->Editor.Text.getAll) + }, + ) + }) + + describe("Backspacing", () => { + Async.it( + `should work just fine`, + async () => { + let setup = acquire(setup) + let document = setup.editor->VSCode.TextEditor.document + let log = await IM.activate(setup, ()) + Assert.deepEqual([IM.Log.Activate], log) + let log = await IM.insertChar(setup, "l") + Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "←")]), UpdateView, RewriteApplied], log) + Assert.equal("←", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "a") + Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) + Assert.equal("←a", document->Editor.Text.getAll) + let log = await IM.backspace(setup) + Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "←")]), UpdateView, RewriteApplied], log) + Assert.equal("←", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "a") + Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) + Assert.equal("←a", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "m") + Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) + Assert.equal("←am", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "b") + Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) + Assert.equal("←amb", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "d") + Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) + Assert.equal("←ambd", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "a") + Assert.deepEqual([IM.Log.RewriteIssued([((0, 6), "λ")]), UpdateView, RewriteApplied], log) + Assert.equal("λ", document->Editor.Text.getAll) + let log = await IM.backspace(setup) + Assert.deepEqual( + [IM.Log.RewriteIssued([((0, 0), "lambd")]), UpdateView, RewriteApplied], + log, + ) + Assert.equal("lambd", document->Editor.Text.getAll) + let log = await IM.deactivate(setup) + Assert.deepEqual([IM.Log.Deactivate], log) + Assert.equal("lambd", document->Editor.Text.getAll) + }, + ) + }) + + describe("Abortion", () => { + Async.it( + `should abort after hitting escape`, + async () => { + let setup = acquire(setup) + let document = setup.editor->VSCode.TextEditor.document + let log = await IM.activate(setup, ()) + Assert.deepEqual([IM.Log.Activate], log) + let log = await IM.insertChar(setup, "b") + Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "♭")]), UpdateView, RewriteApplied], log) + Assert.equal("♭", document->Editor.Text.getAll) + let log = await IM.deactivate(setup) + Assert.deepEqual([IM.Log.Deactivate], log) + Assert.equal("♭", document->Editor.Text.getAll) + }, + ) + + Async.it( + `should abort after typing the wrong sequence`, + async () => { + let setup = acquire(setup) + let document = setup.editor->VSCode.TextEditor.document + let log = await IM.activate(setup, ()) + Assert.deepEqual([IM.Log.Activate], log) + let log = await IM.insertChar(setup, "a") + Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) + Assert.equal("a", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "d") + Assert.deepEqual([IM.Log.RewriteIssued([]), Deactivate, RewriteApplied], log) + Assert.equal("ad", document->Editor.Text.getAll) + }, + ) + + Async.it( + `should abort after backspacing to much`, + async () => { + let setup = acquire(setup) + let document = setup.editor->VSCode.TextEditor.document + let log = await IM.activate(setup, ()) + Assert.deepEqual([IM.Log.Activate], log) + let log = await IM.insertChar(setup, "a") + Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) + Assert.equal("a", document->Editor.Text.getAll) + let log = await IM.backspace(setup) + Assert.deepEqual([IM.Log.RewriteIssued([((0, 0), "")]), Deactivate, RewriteApplied], log) + Assert.equal("", document->Editor.Text.getAll) + }, + ) + }) + + describe("Cursor", () => { + Async.it( + `should not abort when the cursor is placed inside the buffer`, + async () => { + let setup = acquire(setup) + let document = setup.editor->VSCode.TextEditor.document + let log = await IM.activate(setup, ()) + Assert.deepEqual([IM.Log.Activate], log) + let log = await IM.insertChar(setup, "a") + Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) + Assert.equal("a", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "n") + Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) + Assert.equal("an", document->Editor.Text.getAll) + // messing with the cursor + await IM.select(setup, [(0, 0)]) + await IM.select(setup, [(1, 1)]) + await IM.select(setup, [(2, 2)]) + await IM.select(setup, [(0, 1), (1, 2)]) + await IM.select(setup, [(0, 2)]) + // resume insertion + let log = await IM.insertChar(setup, "d") + Assert.deepEqual([IM.Log.RewriteIssued([((0, 3), "∧")]), UpdateView, RewriteApplied], log) + Assert.equal("∧", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "=") + Assert.deepEqual([IM.Log.RewriteIssued([((0, 2), "≙")]), Deactivate, RewriteApplied], log) + Assert.equal("≙", document->Editor.Text.getAll) + }, + ) + + Async.it( + `should abort when the cursor is placed outside the buffer`, + async () => { + let setup = acquire(setup) + let positions = [VSCode.Position.make(0, 3)] + let document = setup.editor->VSCode.TextEditor.document + let _ = await document->Editor.Text.insert(VSCode.Position.make(0, 0), "123") + let log = await IM.activate(setup, ~positions, ()) + Assert.deepEqual([IM.Log.Activate], log) + let log = await IM.insertChar(setup, "a") + Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) + Assert.equal("123a", document->Editor.Text.getAll) + let log = await IM.insertChar(setup, "n") + Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) + Assert.equal("123an", document->Editor.Text.getAll) + // messing with the cursor + let log = await IM.selectAndWait(setup, [(1, 1)]) + Assert.deepEqual([IM.Log.Deactivate], log) + }, + ) + }) + + describe("Multiple cursors at once", () => { + let replaceCRLF = Js.String.replaceByRe(%re("/\r\n/g"), "\n") // RegEx updated to v10.1.4 + + Async.it( + `should work just fine (𝕟)`, + async () => { + let positions = [ + VSCode.Position.make(0, 0), + VSCode.Position.make(1, 0), + VSCode.Position.make(2, 0), + VSCode.Position.make(3, 0), + ] + + let setup = acquire(setup) + let document = setup.editor->VSCode.TextEditor.document + let _ = await document->Editor.Text.insert(VSCode.Position.make(0, 0), "\n\n\n") + let log = await IM.activate(setup, ~positions, ()) + Assert.deepEqual([IM.Log.Activate], log) + let log = await IM.insertChar(setup, "b") + Assert.deepEqual( + [ + IM.Log.RewriteIssued([ + ((0, 1), "♭"), + ((2, 3), "♭"), + ((4, 5), "♭"), + ((6, 7), "♭"), + ]), + IM.Log.UpdateView, + IM.Log.RewriteApplied, + ], + log, + ) + Assert.equal("♭\n♭\n♭\n♭", Editor.Text.getAll(document)->replaceCRLF) + let log = await IM.insertChar(setup, "n") + Assert.deepEqual( + [ + IM.Log.RewriteIssued([ + ((0, 2), "𝕟"), + ((3, 5), "𝕟"), + ((6, 8), "𝕟"), + ((9, 11), "𝕟"), + ]), + IM.Log.Deactivate, + IM.Log.RewriteApplied, + ], + log, + ) + Assert.equal("𝕟\n𝕟\n𝕟\n𝕟", Editor.Text.getAll(document)->replaceCRLF) + }, + ) + + Async.it( + `should work just fine (∧)`, + async () => { + let positions = [ + VSCode.Position.make(0, 0), + VSCode.Position.make(1, 1), + VSCode.Position.make(2, 2), + VSCode.Position.make(3, 3), + ] + + let setup = acquire(setup) + let document = setup.editor->VSCode.TextEditor.document + let _ = await document->Editor.Text.insert(VSCode.Position.make(0, 0), "123\n123\n123\n123") + let log = await IM.activate(setup, ~positions, ()) + Assert.deepEqual([IM.Log.Activate], log) + let log = await IM.insertChar(setup, "a") + Assert.deepEqual([IM.Log.RewriteIssued([]), IM.Log.UpdateView, IM.Log.RewriteApplied], log) + Assert.equal("a123\n1a23\n12a3\n123a", Editor.Text.getAll(document)->replaceCRLF) + let log = await IM.insertChar(setup, "n") + Assert.deepEqual([IM.Log.RewriteIssued([]), IM.Log.UpdateView, IM.Log.RewriteApplied], log) + Assert.equal("an123\n1an23\n12an3\n123an", Editor.Text.getAll(document)->replaceCRLF) + let log = await IM.insertChar(setup, "d") + Assert.deepEqual( + [ + IM.Log.RewriteIssued([ + ((0, 3), "∧"), + ((8, 11), "∧"), + ((16, 19), "∧"), + ((24, 27), "∧"), + ]), + IM.Log.UpdateView, + IM.Log.RewriteApplied, + ], + log, + ) + Assert.equal("∧123\n1∧23\n12∧3\n123∧", Editor.Text.getAll(document)->replaceCRLF) + }, + ) + }) +}) diff --git a/test/tests/Test__Util.res b/test/tests/Test__Util.res index 234b3472..2ccad0e8 100644 --- a/test/tests/Test__Util.res +++ b/test/tests/Test__Util.res @@ -406,3 +406,19 @@ let restoreFile = async (filepath, var) => { let _ = await VSCode.TextDocument.save(document) Ok() } + +module R = { + let unwrap = (x: result<'a, 'e>): 'a => + switch x { + | Ok(x) => x + | Error(error) => raise(error) + } +} + +// for handling promise> in tests +module P = { + let unwrap = async (promise: promise>): 'a => { + let result = await promise + R.unwrap(result) + } +} \ No newline at end of file From daebe43d9e21654b058bc75652997163b695d3e1 Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Tue, 22 Oct 2024 15:08:49 +0800 Subject: [PATCH 088/109] [ fix ] Restore all testings disabled from the migration to Rescript v11 --- lib/js/test/tests/Test__CaseSplit.bs.js | 120 ++++++------- lib/js/test/tests/Test__Connection.bs.js | 16 +- lib/js/test/tests/Test__EditorIM.bs.js | 17 +- lib/js/test/tests/Test__Tokens.bs.js | 63 ++++++- lib/js/test/tests/Test__Util.bs.js | 209 ++++++----------------- package-lock.json | 35 ++-- package.json | 4 +- test/tests/Test__CaseSplit.res | 48 +++--- test/tests/Test__Connection.res | 6 +- test/tests/Test__EditorIM.res | 6 +- test/tests/Test__PromptIM.res | 133 +++++++++++---- test/tests/Test__Tokens.res | 134 ++++++++------- test/tests/Test__Util.res | 67 ++------ 13 files changed, 413 insertions(+), 445 deletions(-) diff --git a/lib/js/test/tests/Test__CaseSplit.bs.js b/lib/js/test/tests/Test__CaseSplit.bs.js index a22debca..99204855 100644 --- a/lib/js/test/tests/Test__CaseSplit.bs.js +++ b/lib/js/test/tests/Test__CaseSplit.bs.js @@ -10,7 +10,7 @@ var Test__Util$AgdaModeVscode = require("./Test__Util.bs.js"); var State__Goal$AgdaModeVscode = require("../../src/State/State__Goal.bs.js"); describe("State__Goal.caseSplitAux dry run", (function () { - Test__Util$AgdaModeVscode.Q.it("should calculate the infomation needed for case splitting correctly", (async function () { + it("should calculate the infomation needed for case splitting correctly", (async function () { var editor = await Vscode.window.showTextDocument(Vscode.Uri.file(Test__Util$AgdaModeVscode.Path.asset("CaseSplit1.agda")), undefined); var $$document = editor.document; var goals = await Goal$AgdaModeVscode.makeMany(editor, [ @@ -34,57 +34,53 @@ describe("State__Goal.caseSplitAux dry run", (function () { Editor$AgdaModeVscode.$$Text.get($$document, rewriteRange$1) ]; }); - return { - TAG: "Ok", - _0: Curry._3(Assert.deepEqual, results, [ - [ - false, - 9, - "x → {! !}" - ], - [ - false, - 23, - "y → {! !}" - ], - [ - false, - 4, - "x → {! !}" - ], - [ - false, - 4, - "y → {! !}" - ], - [ - true, - 13, - "x → {! !}" - ], - [ - true, - 13, - "y → {! !}" - ], - [ - true, - 2, - "x → {! !}" - ], - [ - true, - 2, - "y → {! !}" - ], - [ - false, - 13, - "x → {! !}" - ] - ], undefined), - [Symbol.for("name")]: "Ok" - }; + return Curry._3(Assert.deepEqual, results, [ + [ + false, + 9, + "x → {! !}" + ], + [ + false, + 23, + "y → {! !}" + ], + [ + false, + 4, + "x → {! !}" + ], + [ + false, + 4, + "y → {! !}" + ], + [ + true, + 13, + "x → {! !}" + ], + [ + true, + 13, + "y → {! !}" + ], + [ + true, + 2, + "x → {! !}" + ], + [ + true, + 2, + "y → {! !}" + ], + [ + false, + 13, + "x → {! !}" + ] + ], undefined); })); })); @@ -92,26 +88,20 @@ describe.skip("Integration test", (function () { var fileContent = { contents: "" }; - Test__Util$AgdaModeVscode.Q.before(function () { + before(function () { return Test__Util$AgdaModeVscode.readFile(Test__Util$AgdaModeVscode.Path.asset("CaseSplit2.agda"), fileContent); }); - Test__Util$AgdaModeVscode.Q.after(function () { + after(function () { return Test__Util$AgdaModeVscode.restoreFile(Test__Util$AgdaModeVscode.Path.asset("CaseSplit2.agda"), fileContent); }); it("should have more goals after splitting", (async function () { var context = await Test__Util$AgdaModeVscode.Agda.make(undefined, "CaseSplit2.agda"); var result = await Test__Util$AgdaModeVscode.Agda.load(context); - if (result.TAG === "Ok") { - var error = await Test__Util$AgdaModeVscode.Agda.$$case([ - new Vscode.Position(7, 16), - "x" - ], result._0); - if (error.TAG === "Ok") { - return Curry._3(Assert.deepEqual, error._0[1].goals.length, 10, undefined); - } - throw error._0; - } - throw result._0; + var match = await Test__Util$AgdaModeVscode.Agda.$$case([ + new Vscode.Position(7, 16), + "x" + ], result); + return Curry._3(Assert.deepEqual, match[1].goals.length, 10, undefined); })); })); diff --git a/lib/js/test/tests/Test__Connection.bs.js b/lib/js/test/tests/Test__Connection.bs.js index 3097eb04..1718aa52 100644 --- a/lib/js/test/tests/Test__Connection.bs.js +++ b/lib/js/test/tests/Test__Connection.bs.js @@ -1,26 +1,28 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; +var Assert = require("assert"); var Connection$AgdaModeVscode = require("../../src/Connection/Connection.bs.js"); var Test__Util$AgdaModeVscode = require("./Test__Util.bs.js"); var Connection__Error$AgdaModeVscode = require("../../src/Connection/Connection__Error.bs.js"); describe.skip("Connection", (function () { - Test__Util$AgdaModeVscode.Q.it("should download the language server", (async function () { + it("should download the language server", (async function () { var globalStoragePath = Test__Util$AgdaModeVscode.Path.globalStoragePath; var e = await Connection$AgdaModeVscode.start(globalStoragePath, true, (function (param) { })); if (e.TAG === "Ok") { - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + Assert.ok(true); + return ; } var match = Connection__Error$AgdaModeVscode.toString(e._0); var message = match[0] + "\n" + match[1]; - return await Test__Util$AgdaModeVscode.A.fail(message); + throw { + RE_EXN_ID: "Failure", + _1: message, + Error: new Error() + }; })); })); diff --git a/lib/js/test/tests/Test__EditorIM.bs.js b/lib/js/test/tests/Test__EditorIM.bs.js index 8560eb91..ab4dd0da 100644 --- a/lib/js/test/tests/Test__EditorIM.bs.js +++ b/lib/js/test/tests/Test__EditorIM.bs.js @@ -30,18 +30,6 @@ async function cleanup(setup) { await Editor$AgdaModeVscode.$$Text.replace(setup.editor.document, range, ""); } -function equal(xs) { - return function (extra) { - return Test__Util$AgdaModeVscode.A.equal(xs, extra); - }; -} - -function deepEqual(xs) { - return function (extra) { - return Test__Util$AgdaModeVscode.A.deepEqual(xs, extra); - }; -} - async function wait(setup) { return await Chan$AgdaModeVscode.once(setup.channels.inputMethod); } @@ -55,8 +43,7 @@ async function activate(setup, positions, param) { var promise = wait(setup); var positions$1 = Core__Option.getOr(positions, Editor$AgdaModeVscode.Cursor.getMany(setup.editor)); Editor$AgdaModeVscode.Cursor.setMany(setup.editor, positions$1); - var result = Vscode.commands.executeCommand("agda-mode.input-symbol[Activate]"); - await result; + await Vscode.commands.executeCommand("agda-mode.input-symbol[Activate]"); return await promise; } @@ -120,8 +107,6 @@ var IM = { isActivated: IM$AgdaModeVscode.isActivated, bufferIsEmpty: IM$AgdaModeVscode.bufferIsEmpty, run: IM$AgdaModeVscode.run, - equal: equal, - deepEqual: deepEqual, wait: wait, wait2nd: wait2nd, activate: activate, diff --git a/lib/js/test/tests/Test__Tokens.bs.js b/lib/js/test/tests/Test__Tokens.bs.js index d856702b..0b4695e8 100644 --- a/lib/js/test/tests/Test__Tokens.bs.js +++ b/lib/js/test/tests/Test__Tokens.bs.js @@ -1,2 +1,63 @@ // Generated by ReScript, PLEASE EDIT WITH CARE -/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ +'use strict'; + +var Curry = require("rescript/lib/js/curry.js"); +var Assert = require("assert"); +var Belt_Array = require("rescript/lib/js/belt_Array.js"); +var Editor$AgdaModeVscode = require("../../src/Editor.bs.js"); +var Tokens$AgdaModeVscode = require("../../src/Tokens.bs.js"); +var Test__Util$AgdaModeVscode = require("./Test__Util.bs.js"); + +describe("Tokens", (function () { + this.timeout(10000); + Test__Util$AgdaModeVscode.Agda.make(undefined, "GotoDefinition.agda"); + describe("GotoDefinition.agda", (function () { + it("should produce 28 tokens", (async function () { + var context = await Test__Util$AgdaModeVscode.Agda.make(undefined, "GotoDefinition.agda"); + var match = await Test__Util$AgdaModeVscode.Agda.load(context); + var tokens = Belt_Array.map(Tokens$AgdaModeVscode.toArray(match[1].tokens), (function (param) { + return Editor$AgdaModeVscode.$$Range.toString(param[1]) + " " + Tokens$AgdaModeVscode.Token.toString(param[0]); + })); + return Curry._3(Assert.deepEqual, 28, tokens.length, undefined); + })); + it("should produce correct tokens", (async function () { + var context = await Test__Util$AgdaModeVscode.Agda.make(undefined, "GotoDefinition.agda"); + var match = await Test__Util$AgdaModeVscode.Agda.load(context); + var tokens = Belt_Array.map(Tokens$AgdaModeVscode.toArray(match[1].tokens), (function (param) { + return Editor$AgdaModeVscode.$$Range.toString(param[1]) + " " + Tokens$AgdaModeVscode.Token.toString(param[0]); + })); + return Curry._3(Assert.deepEqual, [ + "0:0-6 Token (0, 6) [Keyword]", + "0:7-21 Token (7, 21) [Module] [src: 1]", + "0:22-27 Token (22, 27) [Keyword]", + "1:0-4 Token (28, 32) [Keyword]", + "1:5-6 Token (33, 34) [Datatype] [src: 34]", + "1:7-8 Token (35, 36) [Symbol]", + "1:9-12 Token (37, 40) [Primitive] [src: 388]", + "1:13-18 Token (41, 46) [Keyword]", + "2:2-3 Token (49, 50) [ConstructorInductive] [src: 50]", + "2:4-5 Token (51, 52) [Symbol]", + "2:6-7 Token (53, 54) [Datatype] [src: 34]", + "3:2-3 Token (57, 58) [ConstructorInductive] [src: 58]", + "3:4-5 Token (59, 60) [Symbol]", + "3:6-7 Token (61, 62) [Datatype] [src: 34]", + "3:8-9 Token (63, 64) [Symbol]", + "3:10-11 Token (65, 66) [Datatype] [src: 34]", + "5:0-3 Token (68, 71) [Function, Operator] [src: 69]", + "5:4-5 Token (72, 73) [Symbol]", + "5:6-7 Token (74, 75) [Datatype] [src: 34]", + "5:8-9 Token (76, 77) [Symbol]", + "5:10-11 Token (78, 79) [Datatype] [src: 34]", + "5:12-13 Token (80, 81) [Symbol]", + "5:14-15 Token (82, 83) [Datatype] [src: 34]", + "6:0-1 Token (84, 85) [Bound] [src: 85]", + "6:2-3 Token (86, 87) [Function, Operator] [src: 69]", + "6:4-5 Token (88, 89) [Bound] [src: 89]", + "6:6-7 Token (90, 91) [Symbol]", + "6:8-15 Token (92, 99) [Hole]" + ], tokens, undefined); + })); + })); + })); + +/* Not a pure module */ diff --git a/lib/js/test/tests/Test__Util.bs.js b/lib/js/test/tests/Test__Util.bs.js index aaf334b3..e987d68f 100644 --- a/lib/js/test/tests/Test__Util.bs.js +++ b/lib/js/test/tests/Test__Util.bs.js @@ -6,7 +6,6 @@ var Os = require("os"); var Caml = require("rescript/lib/js/caml.js"); var Diff = require("diff"); var Util = require("util"); -var Curry = require("rescript/lib/js/curry.js"); var Assert = require("assert"); var Vscode = require("vscode"); var Nodefs = require("node:fs"); @@ -102,102 +101,6 @@ function wait(ms) { })); } -function toPromise(f) { - return new Promise((function (resolve, reject) { - f.then(function (x) { - if (x.TAG === "Ok") { - return resolve(x._0); - } else { - return reject(x._0); - } - }); - })); -} - -function it$1(s, f) { - it(s, (function () { - return toPromise(f()); - })); -} - -function it_only(s, f) { - it.only(s, (function () { - return toPromise(f()); - })); -} - -function it_skip(s, f) { - it.skip(s, (function () { - return toPromise(f()); - })); -} - -function before$1(f) { - before(function () { - return toPromise(f()); - }); -} - -function before_each(f) { - beforeEach(function () { - return toPromise(f()); - }); -} - -function after$1(f) { - after(function () { - return toPromise(f()); - }); -} - -function after_each(f) { - afterEach(function () { - return toPromise(f()); - }); -} - -var Q = { - toPromise: toPromise, - it: it$1, - it_only: it_only, - it_skip: it_skip, - before: before$1, - before_each: before_each, - after: after$1, - after_each: after_each -}; - -function equal(expected, actual) { - return runner(function () { - Curry._3(Assert.equal, actual, expected, undefined); - }); -} - -function deepEqual(expected, actual) { - return runner(function () { - Curry._3(Assert.deepEqual, actual, expected, undefined); - }); -} - -function deep_strict_equal(expected, actual) { - return runner(function () { - Curry._3(Assert.deepStrictEqual, actual, expected, undefined); - }); -} - -function fail(value) { - return runner(function () { - Assert.fail(value); - }); -} - -var A = { - equal: equal, - deepEqual: deepEqual, - deep_strict_equal: deep_strict_equal, - fail: fail -}; - function normalize(string) { return Js_string.replaceByRe(/\r\n|\n/g, "\n", string.trim()); } @@ -426,14 +329,14 @@ async function exists(command) { [Symbol.for("name")]: "FromCommand" }]); if (match[0] !== undefined) { - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return ; } var msg = Js_array.joinWith(",", match[1].map(Source$LanguageServerMule.$$Error.toString)); - return await fail("Cannot find \"Agda\" in PATH: " + msg); + throw { + RE_EXN_ID: "Failure", + _1: "Cannot find \"Agda\" in PATH: " + msg, + Error: new Error() + }; } async function make(alsOpt, filepath) { @@ -460,23 +363,27 @@ async function load(self) { })); await Vscode.window.showTextDocument(Vscode.Uri.file(self.filepath), undefined); var match$1 = await Vscode.commands.executeCommand("agda-mode.load"); - if (match$1 === undefined) { - return await fail("Cannot load " + self.filepath); - } - if (match$1.TAG === "Ok") { - await match[0]; - disposable(); - return { - TAG: "Ok", - _0: [ + if (match$1 !== undefined) { + if (match$1.TAG === "Ok") { + await match[0]; + disposable(); + return [ self, match$1._0 - ], - [Symbol.for("name")]: "Ok" - }; + ]; + } + var match$2 = Connection__Error$AgdaModeVscode.toString(match$1._0); + throw { + RE_EXN_ID: "Failure", + _1: match$2[0] + "\n" + match$2[1], + Error: new Error() + }; } - var match$2 = Connection__Error$AgdaModeVscode.toString(match$1._0); - return await fail(match$2[0] + "\n" + match$2[1]); + throw { + RE_EXN_ID: "Failure", + _1: "Cannot load " + self.filepath, + Error: new Error() + }; } async function $$case(cursorAndPayload, param) { @@ -488,21 +395,25 @@ async function $$case(cursorAndPayload, param) { Editor$AgdaModeVscode.Cursor.set(editor, cursor); } var match = await Vscode.commands.executeCommand("agda-mode.case"); - if (match === undefined) { - return await fail("Cannot case split " + self.filepath); - } - if (match.TAG === "Ok") { - return { - TAG: "Ok", - _0: [ + if (match !== undefined) { + if (match.TAG === "Ok") { + return [ self, match._0 - ], - [Symbol.for("name")]: "Ok" - }; + ]; + } + var match$1 = Connection__Error$AgdaModeVscode.toString(match._0); + throw { + RE_EXN_ID: "Failure", + _1: match$1[0] + "\n" + match$1[1], + Error: new Error() + }; } - var match$1 = Connection__Error$AgdaModeVscode.toString(match._0); - return await fail(match$1[0] + "\n" + match$1[1]); + throw { + RE_EXN_ID: "Failure", + _1: "Cannot case split " + self.filepath, + Error: new Error() + }; } async function refine(cursorAndPayload, param) { @@ -519,21 +430,25 @@ async function refine(cursorAndPayload, param) { } } var match = await Vscode.commands.executeCommand("agda-mode.refine"); - if (match === undefined) { - return await fail("Cannot case refine " + self.filepath); - } - if (match.TAG === "Ok") { - return { - TAG: "Ok", - _0: [ + if (match !== undefined) { + if (match.TAG === "Ok") { + return [ self, match._0 - ], - [Symbol.for("name")]: "Ok" - }; + ]; + } + var match$1 = Connection__Error$AgdaModeVscode.toString(match._0); + throw { + RE_EXN_ID: "Failure", + _1: match$1[0] + "\n" + match$1[1], + Error: new Error() + }; } - var match$1 = Connection__Error$AgdaModeVscode.toString(match._0); - return await fail(match$1[0] + "\n" + match$1[1]); + throw { + RE_EXN_ID: "Failure", + _1: "Cannot case refine " + self.filepath, + Error: new Error() + }; } var Agda = { @@ -548,11 +463,6 @@ var Agda = { async function readFile$1(filepath, $$var) { var editor = await Vscode.window.showTextDocument(Vscode.Uri.file(filepath), undefined); $$var.contents = Editor$AgdaModeVscode.$$Text.getAll(editor.document); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; } async function restoreFile(filepath, $$var) { @@ -562,11 +472,6 @@ async function restoreFile(filepath, $$var) { var replaceRange = new Vscode.Range(new Vscode.Position(0, 0), new Vscode.Position(lineCount, 0)); await Editor$AgdaModeVscode.$$Text.replace($$document, replaceRange, $$var.contents); await $$document.save(); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; } function unwrap(x) { @@ -597,8 +502,6 @@ exports.activateExtension = activateExtension; exports.openFile = openFile; exports.activateExtensionAndOpenFile = activateExtensionAndOpenFile; exports.wait = wait; -exports.Q = Q; -exports.A = A; exports.Strings = Strings; exports.Golden = Golden; exports.onUnix = onUnix; diff --git a/package-lock.json b/package-lock.json index b5e41f96..57915d0a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "agda-mode", - "version": "0.4.7", + "version": "0.4.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "agda-mode", - "version": "0.4.7", + "version": "0.4.8", "dependencies": { "@datastructures-js/binary-search-tree": "^4.3.0", "@glennsl/rescript-json-combinators": "^1.4.0", @@ -15,7 +15,7 @@ "compare-versions": "^3.5.1", "eventemitter3": ">=4.0.0", "getos": "^3.2.1", - "language-server-mule": "github:banacorn/language-server-mule#v0.0.5", + "language-server-mule": "github:banacorn/language-server-mule#v0.5.0", "react": "^18.0.0", "react-dom": "^18.0.0", "rescript": "^11.1.4", @@ -38,12 +38,9 @@ "webpack-cli": "^4.2.0" }, "engines": { - "vscode": "^1.74.0" + "vscode": "^1.94.0" } }, - "../banacorn/rescript-vscode": { - "extraneous": true - }, "node_modules/@datastructures-js/binary-search-tree": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/@datastructures-js/binary-search-tree/-/binary-search-tree-4.3.2.tgz", @@ -238,9 +235,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.7.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.7.tgz", - "integrity": "sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==", + "version": "22.7.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.8.tgz", + "integrity": "sha512-a922jJy31vqR5sk+kAdIENJjHblqcZ4RmERviFsER4WJcEONqxKcjNOlk0q7OUfrF5sddT+vng070cdfMlrPLg==", "dev": true, "license": "MIT", "dependencies": { @@ -777,9 +774,9 @@ "license": "ISC" }, "node_modules/browserslist": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", - "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", "dev": true, "funding": [ { @@ -797,10 +794,10 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001663", - "electron-to-chromium": "^1.5.28", + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -1317,9 +1314,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.41", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.41.tgz", - "integrity": "sha512-dfdv/2xNjX0P8Vzme4cfzHqnPm5xsZXwsolTYr0eyW18IUmNyG08vL+fttvinTfhKfIKdRoqkDIC9e9iWQCNYQ==", + "version": "1.5.42", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.42.tgz", + "integrity": "sha512-gIfKavKDw1mhvic9nbzA5lZw8QSHpdMwLwXc0cWidQz9B15pDoDdDH4boIatuFfeoCatb3a/NGL6CYRVFxGZ9g==", "dev": true, "license": "ISC" }, diff --git a/package.json b/package.json index c310b467..a750be52 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "publisher": "banacorn", "version": "0.4.7", "engines": { - "vscode": "^1.74.0" + "vscode": "^1.94.0" }, "categories": [ "Other" @@ -41,7 +41,7 @@ "compare-versions": "^3.5.1", "eventemitter3": ">=4.0.0", "getos": "^3.2.1", - "language-server-mule": "github:banacorn/language-server-mule#v0.0.5", + "language-server-mule": "github:banacorn/language-server-mule#v0.5.0", "react": "^18.0.0", "react-dom": "^18.0.0", "rescript": "^11.1.4", diff --git a/test/tests/Test__CaseSplit.res b/test/tests/Test__CaseSplit.res index b8807cbc..78b39901 100644 --- a/test/tests/Test__CaseSplit.res +++ b/test/tests/Test__CaseSplit.res @@ -1,8 +1,8 @@ open Mocha -open! Test__Util +open Test__Util describe("State__Goal.caseSplitAux dry run", () => { - Q.it("should calculate the infomation needed for case splitting correctly", async () => { + Async.it("should calculate the infomation needed for case splitting correctly", async () => { let editor = await VSCode.Window.showTextDocumentWithUri( VSCode.Uri.file(Path.asset("CaseSplit1.agda")), None, @@ -20,21 +20,20 @@ describe("State__Goal.caseSplitAux dry run", () => { (inWhereClause, indentWidth, Editor.Text.get(document, rewriteRange)) }, ) - Ok( - Assert.deepEqual( - results, - [ - (false, 9, `x → {! !}`), - (false, 23, `y → {! !}`), - (false, 4, `x → {! !}`), - (false, 4, `y → {! !}`), - (true, 13, `x → {! !}`), - (true, 13, `y → {! !}`), - (true, 2, `x → {! !}`), - (true, 2, `y → {! !}`), - (false, 13, `x → {! !}`), - ], - ), + + Assert.deepEqual( + results, + [ + (false, 9, `x → {! !}`), + (false, 23, `y → {! !}`), + (false, 4, `x → {! !}`), + (false, 4, `y → {! !}`), + (true, 13, `x → {! !}`), + (true, 13, `y → {! !}`), + (true, 2, `x → {! !}`), + (true, 2, `y → {! !}`), + (false, 13, `x → {! !}`), + ], ) }) }) @@ -42,18 +41,13 @@ describe("State__Goal.caseSplitAux dry run", () => { describe_skip("Integration test", () => { let fileContent = ref("") - Q.before(() => readFile(Path.asset("CaseSplit2.agda"), fileContent)) - Q.after(() => restoreFile(Path.asset("CaseSplit2.agda"), fileContent)) + Async.before(() => readFile(Path.asset("CaseSplit2.agda"), fileContent)) + Async.after(() => restoreFile(Path.asset("CaseSplit2.agda"), fileContent)) Async.it("should have more goals after splitting", async () => { let context = await Agda.make("CaseSplit2.agda") - switch await Agda.load(context) { - | Ok(result) => - switch await Agda.case(Some(VSCode.Position.make(7, 16), "x"), result) { - | Ok((_, state)) => Assert.deepEqual(Array.length(state.goals), 10) - | Error(error) => raise(error) - } - | Error(error) => raise(error) - } + let result = await Agda.load(context) + let (_, state) = await Agda.case(Some(VSCode.Position.make(7, 16), "x"), result) + Assert.deepEqual(Array.length(state.goals), 10) }) }) diff --git a/test/tests/Test__Connection.res b/test/tests/Test__Connection.res index 26aec60f..9ecbec43 100644 --- a/test/tests/Test__Connection.res +++ b/test/tests/Test__Connection.res @@ -2,16 +2,16 @@ open Mocha open Test__Util describe_skip("Connection", () => { - Q.it("should download the language server", async () => { + Async.it("should download the language server", async () => { let globalStoragePath = Path.globalStoragePath let useLSP = true switch await Connection.start(globalStoragePath, useLSP, _ => ()) { - | Ok(_) => Ok() + | Ok(_) => Assert.ok(true) | Error(e) => let (header, body) = Connection.Error.toString(e) let message = header ++ "\n" ++ body - await A.fail(message) + raise(Failure(message)) } }) }) diff --git a/test/tests/Test__EditorIM.res b/test/tests/Test__EditorIM.res index 3058b956..cca5f125 100644 --- a/test/tests/Test__EditorIM.res +++ b/test/tests/Test__EditorIM.res @@ -20,9 +20,6 @@ let cleanup = async setup => { module IM = { include IM - let equal = (xs: IM.Log.t) => A.equal(xs, ...) - let deepEqual = (xs: IM.Log.t) => A.deepEqual(xs, ...) - let wait = async setup => await setup.channels.inputMethod->Chan.once let wait2nd = async setup => { let _ = await setup.channels.inputMethod->Chan.once @@ -33,8 +30,7 @@ module IM = { let promise = wait(setup) let positions = positions->Option.getOr(Editor.Cursor.getMany(setup.editor)) Editor.Cursor.setMany(setup.editor, positions) - let result = VSCode.Commands.executeCommand0("agda-mode.input-symbol[Activate]") - let _ = await result + await VSCode.Commands.executeCommand0("agda-mode.input-symbol[Activate]") await promise } diff --git a/test/tests/Test__PromptIM.res b/test/tests/Test__PromptIM.res index 62ec6547..6ef1eb17 100644 --- a/test/tests/Test__PromptIM.res +++ b/test/tests/Test__PromptIM.res @@ -1,13 +1,79 @@ -// // open Belt -// // open! BsMocha.Mocha -// // open Test__Util +// open Test__Util +// open Mocha + +// type setup = { +// editor: VSCode.TextEditor.t, +// channels: State__Type.channels, +// } + +// let acquire = setup => +// switch setup.contents { +// | None => raise(Exn("Setup is not initialized")) +// | Some(setup) => setup +// } + +// let cleanup = async setup => { +// let range = VSCode.Range.make(VSCode.Position.make(0, 0), VSCode.Position.make(100, 0)) +// let _ = await setup.editor->VSCode.TextEditor.document->Editor.Text.replace(range, "") +// } + +// module IM = { +// include IM + +// let wait = async setup => await setup.channels.inputMethod->Chan.once +// let wait2nd = async setup => { +// let _ = await setup.channels.inputMethod->Chan.once +// await setup.channels.inputMethod->Chan.once +// } + +// let activate = async (setup: setup, ~positions=?, ()) => { +// let positions = positions->Option.getOr(Editor.Cursor.getMany(setup.editor)) +// Editor.Cursor.setMany(setup.editor, positions) +// let commandLoad = wait(setup) +// let commandComputeNormalForm = wait2nd(setup) +// // load +// let _ = await VSCode.Commands.executeCommand0("agda-mode.load") +// // compute normal form +// let _ = await VSCode.Commands.executeCommand0("agda-mode.compute-normal-form[DefaultCompute]") + +// // view->WebviewPanel.sendRequest + +// let _ = await commandLoad +// await commandComputeNormalForm +// } +// } + +// describe_only("Input Method (Prompt)", () => { +// let setup = ref(None) + +// // initialize the setup before all tests +// Async.before(async () => { +// let (editor, channels) = await activateExtensionAndOpenFile(Path.asset("InputMethod.agda")) +// setup := Some({editor, channels}) +// }) + +// // cleanup the editor after each test +// Async.afterEach(async () => { +// let setup = acquire(setup) +// await cleanup(setup) +// }) + +// describe("Activation", () => { +// Async.it(`should be successful`, async () => { +// let setup = acquire(setup) +// let log = await IM.activate(setup, ()) +// Assert.deepEqual([IM.Log.Activate], log) +// }, +// ) +// }) +// }) // // module Js' = Js // // open Promise // // module Js = Js' // // let testPromptIMUpdate = (self, ~input, ~output, ~command=?, ()) => { -// // let result = self->Editor.update(input) +// // let result = self->State__InputMethod.PromptIM.update(input) // // switch result { // // | None => Assert.fail("shouldn't be deactivated after \"" ++ (input ++ "\"")) // // | Some((output', command')) => @@ -24,40 +90,48 @@ // chan: Chan.t, // } -// // let activateExtensionAndLoad = (): Promise.t => { -// // // let disposables = [] -// // // let extensionPath = Path.extensionPath() -// // // let chan = Main.activateWithoutContext(disposables, extensionPath) - -// // // VSCode.Commands.executeCommand0("agda-mode.load") -// // // VSCode.Commands.executeCommand0("agda-mode.load")->flatMap(result => { -// // // result -// // // })= - -// // // VSCode.Window.showTextDocumentWithUri( -// // // VSCode.Uri.file(Path.asset("InputMethod.agda")), -// // // None, -// // // )->map(editor => { -// // // editor: editor, -// // // chan: chan, -// // // }) +// // let acquire = setup => +// // switch setup.contents { +// // | None => raise(Exn("Setup is not initialized")) +// // | Some(setup) => setup +// // } + +// // let cleanup = async setup => { +// // let range = VSCode.Range.make(VSCode.Position.make(0, 0), VSCode.Position.make(100, 0)) +// // let _ = await setup.editor->VSCode.TextEditor.document->Editor.Text.replace(range, "") // // } +// let activateExtensionAndLoad = async (): setup => { +// let disposables = [] +// let extensionPath = Path.extensionPath +// let chan = Main.activateWithoutContext(disposables, extensionPath, ...) + +// let promise = await VSCode.Commands.executeCommand0("agda-mode.load") +// let _ = await promise + +// let view = await VSCode.Window.showTextDocumentWithUri(VSCode.Uri.file(Path.asset("InputMethod.agda")),None,) + +// { +// view: view, +// chan: chan, +// } +// } + // // let acquire = setup => // // switch setup.contents { // // | None => resolved(Error(Util.Error("Cannot acquire the setup"))) // // | Some(setup) => resolved(Ok(setup)) // // } -// describe_only("Input Method (Prompt)", () => { +// describe_only("Input Method in Prompt", () => { // describe("Insertion", () => { -// // it(`test`, () => { -// // activateExtensionAndLoad()->get(chan => { -// // () -// // // let document = VSCode.TextEditor.document(setup.editor) -// // // IM.activate(setup, ()) -// // }) -// // }) +// it(`test`, () => { +// activateExtensionAndLoad()->get(chan => { +// () +// // let document = VSCode.TextEditor.document(setup.editor) +// // IM.activate(setup, ()) +// }) +// }) // // it(`should translate "\\bn" to "𝕟"`, () => { // // let promptIM = PromptIM.make() @@ -105,4 +179,3 @@ // // promptIM->testPromptIMUpdate(~input=`λbar`, ~output=`ƛ`, ~command=Deactivate, ()) // // })) // }) - diff --git a/test/tests/Test__Tokens.res b/test/tests/Test__Tokens.res index 9de8289e..a4a4a67e 100644 --- a/test/tests/Test__Tokens.res +++ b/test/tests/Test__Tokens.res @@ -1,69 +1,71 @@ -// open! BsMocha.Mocha -// open! Test__Util -// open Belt +open Mocha +open Test__Util -// describe("Tokens", ~timeout=10000, () => { -// let context = Agda.make("GotoDefinition.agda") +describe("Tokens", () => { + This.timeout(10000) + let context = Agda.make("GotoDefinition.agda") -// describe("GotoDefinition.agda", () => { -// Q.it("should produce 28 tokens", () => { -// context -// ->Promise.flatMap(Agda.load) -// ->Promise.flatMapOk(((_, state)) => { -// let tokens = -// state.tokens -// ->Tokens.toArray -// ->Belt.Array.map(((token, range)) => -// Editor.Range.toString(range) ++ " " ++ Tokens.Token.toString(token) -// ) -// A.deepEqual(28, Array.length(tokens)) -// }) -// }) + describe("GotoDefinition.agda", () => { + Async.it( + "should produce 28 tokens", + async () => { + let context = await Agda.make("GotoDefinition.agda") + let (_, state) = await Agda.load(context) + let tokens = + state.tokens + ->Tokens.toArray + ->Belt.Array.map( + ((token, range)) => Editor.Range.toString(range) ++ " " ++ Tokens.Token.toString(token), + ) + Assert.deepEqual(28, Array.length(tokens)) + }, + ) -// Q.it("should produce correct tokens", () => { -// context -// ->Promise.flatMap(Agda.load) -// ->Promise.flatMapOk(((_, state)) => { -// let tokens = -// state.tokens -// ->Tokens.toArray -// ->Belt.Array.map(((token, range)) => -// Editor.Range.toString(range) ++ " " ++ Tokens.Token.toString(token) -// ) -// A.deepEqual( -// [ -// "0:0-6 Token (0, 6) [Keyword]", -// "0:7-21 Token (7, 21) [Module] [src: 1]", -// "0:22-27 Token (22, 27) [Keyword]", -// "1:0-4 Token (28, 32) [Keyword]", -// "1:5-6 Token (33, 34) [Datatype] [src: 34]", -// "1:7-8 Token (35, 36) [Symbol]", -// "1:9-12 Token (37, 40) [Primitive] [src: 388]", -// "1:13-18 Token (41, 46) [Keyword]", -// "2:2-3 Token (49, 50) [ConstructorInductive] [src: 50]", -// "2:4-5 Token (51, 52) [Symbol]", -// "2:6-7 Token (53, 54) [Datatype] [src: 34]", -// "3:2-3 Token (57, 58) [ConstructorInductive] [src: 58]", -// "3:4-5 Token (59, 60) [Symbol]", -// "3:6-7 Token (61, 62) [Datatype] [src: 34]", -// "3:8-9 Token (63, 64) [Symbol]", -// "3:10-11 Token (65, 66) [Datatype] [src: 34]", -// "5:0-3 Token (68, 71) [Function, Operator] [src: 69]", -// "5:4-5 Token (72, 73) [Symbol]", -// "5:6-7 Token (74, 75) [Datatype] [src: 34]", -// "5:8-9 Token (76, 77) [Symbol]", -// "5:10-11 Token (78, 79) [Datatype] [src: 34]", -// "5:12-13 Token (80, 81) [Symbol]", -// "5:14-15 Token (82, 83) [Datatype] [src: 34]", -// "6:0-1 Token (84, 85) [Bound] [src: 85]", -// "6:2-3 Token (86, 87) [Function, Operator] [src: 69]", -// "6:4-5 Token (88, 89) [Bound] [src: 89]", -// "6:6-7 Token (90, 91) [Symbol]", -// "6:8-15 Token (92, 99) [Hole]", -// ], -// tokens, -// ) -// }) -// }) -// }) -// }) + Async.it( + "should produce correct tokens", + async () => { + let context = await Agda.make("GotoDefinition.agda") + let (_, state) = await Agda.load(context) + let tokens = + state.tokens + ->Tokens.toArray + ->Belt.Array.map( + ((token, range)) => Editor.Range.toString(range) ++ " " ++ Tokens.Token.toString(token), + ) + Assert.deepEqual( + [ + "0:0-6 Token (0, 6) [Keyword]", + "0:7-21 Token (7, 21) [Module] [src: 1]", + "0:22-27 Token (22, 27) [Keyword]", + "1:0-4 Token (28, 32) [Keyword]", + "1:5-6 Token (33, 34) [Datatype] [src: 34]", + "1:7-8 Token (35, 36) [Symbol]", + "1:9-12 Token (37, 40) [Primitive] [src: 388]", + "1:13-18 Token (41, 46) [Keyword]", + "2:2-3 Token (49, 50) [ConstructorInductive] [src: 50]", + "2:4-5 Token (51, 52) [Symbol]", + "2:6-7 Token (53, 54) [Datatype] [src: 34]", + "3:2-3 Token (57, 58) [ConstructorInductive] [src: 58]", + "3:4-5 Token (59, 60) [Symbol]", + "3:6-7 Token (61, 62) [Datatype] [src: 34]", + "3:8-9 Token (63, 64) [Symbol]", + "3:10-11 Token (65, 66) [Datatype] [src: 34]", + "5:0-3 Token (68, 71) [Function, Operator] [src: 69]", + "5:4-5 Token (72, 73) [Symbol]", + "5:6-7 Token (74, 75) [Datatype] [src: 34]", + "5:8-9 Token (76, 77) [Symbol]", + "5:10-11 Token (78, 79) [Datatype] [src: 34]", + "5:12-13 Token (80, 81) [Symbol]", + "5:14-15 Token (82, 83) [Datatype] [src: 34]", + "6:0-1 Token (84, 85) [Bound] [src: 85]", + "6:2-3 Token (86, 87) [Function, Operator] [src: 69]", + "6:4-5 Token (88, 89) [Bound] [src: 89]", + "6:6-7 Token (90, 91) [Symbol]", + "6:8-15 Token (92, 99) [Hole]", + ], + tokens, + ) + }, + ) + }) +}) diff --git a/test/tests/Test__Util.res b/test/tests/Test__Util.res index 2ccad0e8..4af50a23 100644 --- a/test/tests/Test__Util.res +++ b/test/tests/Test__Util.res @@ -71,39 +71,6 @@ external executeCommand: string => Promise.t Promise.make((resolve, _) => Js.Global.setTimeout(resolve, ms)->ignore) -module Q = { - let toPromise = f => - Promise.make((resolve, reject) => - f - ->Promise.thenResolve(x => - switch x { - | Error(error) => reject(error) - | Ok(result) => resolve(result) - } - ) - ->Promise.done - ) - - let it = (s, f: unit => Promise.t>) => Async.it(s, () => f()->toPromise) - - let it_only = (s, f) => Async.it_only(s, () => f()->toPromise) - - let it_skip = (s, f) => Async.it_skip(s, () => f()->toPromise) - - let before = f => Async.before(() => f()->toPromise) - let before_each = f => Async.beforeEach(() => f()->toPromise) - let after = f => Async.after(() => f()->toPromise) - let after_each = f => Async.afterEach(() => f()->toPromise) -} - -module A = { - let equal = (expected, actual) => runner(() => Assert.equal(actual, expected)) - let deepEqual = (expected, actual) => runner(() => Assert.deepEqual(actual, expected)) - let deep_strict_equal = (expected, actual) => - runner(() => Assert.deepStrictEqual(actual, expected)) - let fail = value => runner(() => Assert.fail(value)) -} - module Strings = { // trim and replace all occurences of line breaks with "\n" let normalize = string => { @@ -297,8 +264,8 @@ module Agda = { switch result { | None => let msg = Js.Array.joinWith(",", errors->Array.map(LanguageServerMule.Source.Error.toString)) - await A.fail("Cannot find \"Agda\" in PATH: " ++ msg) - | Some(_method) => Ok() + raise(Failure("Cannot find \"Agda\" in PATH: " ++ msg)) + | Some(_method) => () } } @@ -336,14 +303,14 @@ module Agda = { let _ = await openFile(self.filepath) switch await executeCommand("agda-mode.load") { - | None => await A.fail("Cannot load " ++ self.filepath) + | None => raise(Failure("Cannot load " ++ self.filepath)) | Some(Ok(state)) => await promise disposable() // stop listening to responses - Ok(self, state) + (self, state) | Some(Error(error)) => let (header, body) = Connection.Error.toString(error) - await A.fail(header ++ "\n" ++ body) + raise(Failure(header ++ "\n" ++ body)) } } @@ -357,18 +324,18 @@ module Agda = { Editor.Cursor.set(editor, cursor) } switch await executeCommand("agda-mode.case") { - | None => await A.fail("Cannot case split " ++ self.filepath) - | Some(Ok(state)) => Ok(self, state) + | None => raise(Failure("Cannot case split " ++ self.filepath)) + | Some(Ok(state)) => (self, state) | Some(Error(error)) => let (header, body) = Connection.Error.toString(error) - await A.fail(header ++ "\n" ++ body) + raise(Failure(header ++ "\n" ++ body)) } } - let refine = async (cursorAndPayload, (self, state: State__Type.t)): result< - (t, AgdaModeVscode.State.t), - exn, - > => { + let refine = async (cursorAndPayload, (self, state: State__Type.t)): ( + t, + AgdaModeVscode.State.t, + ) => { let editor = await openFile(self.filepath) switch cursorAndPayload { | None => () @@ -378,11 +345,11 @@ module Agda = { Editor.Cursor.set(editor, cursor) } switch await executeCommand("agda-mode.refine") { - | None => await A.fail("Cannot case refine " ++ self.filepath) - | Some(Ok(state)) => Ok(self, state) + | None => raise(Failure("Cannot case refine " ++ self.filepath)) + | Some(Ok(state)) => (self, state) | Some(Error(error)) => let (header, body) = Connection.Error.toString(error) - await A.fail(header ++ "\n" ++ body) + raise(Failure(header ++ "\n" ++ body)) } } } @@ -391,7 +358,6 @@ module Agda = { let readFile = async (filepath, var) => { let editor = await openFile(filepath) var := Editor.Text.getAll(VSCode.TextEditor.document(editor)) - Ok() } let restoreFile = async (filepath, var) => { @@ -404,7 +370,6 @@ let restoreFile = async (filepath, var) => { ) let _ = await Editor.Text.replace(document, replaceRange, var.contents) let _ = await VSCode.TextDocument.save(document) - Ok() } module R = { @@ -421,4 +386,4 @@ module P = { let result = await promise R.unwrap(result) } -} \ No newline at end of file +} From 1fb22d856008d5db0f7cab00236b9a4902d42576 Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Wed, 23 Oct 2024 15:01:03 +0800 Subject: [PATCH 089/109] [ refactor ] Deprecate functions from the `Belt` & `Js` API in the top-level modules --- lib/js/src/Agda.bs.js | 2 +- lib/js/src/Config.bs.js | 9 +- lib/js/src/Goal.bs.js | 41 ++-- lib/js/src/Highlighting.bs.js | 100 +++++---- lib/js/src/Main.bs.js | 193 ++++++++--------- lib/js/src/Registry.bs.js | 21 +- lib/js/src/Request.bs.js | 10 +- lib/js/src/Response.bs.js | 12 +- lib/js/src/State.bs.js | 9 +- lib/js/src/Tokens.bs.js | 198 +++++++++--------- lib/js/src/Util/Util.bs.js | 7 - .../src/View/Panel/Emacs/Emacs__Parser.bs.js | 3 +- src/Agda.res | 2 +- src/Config.res | 12 +- src/Goal.res | 5 +- src/Highlighting.res | 35 +--- src/Main.res | 8 +- src/Registry.res | 26 ++- src/Request.res | 6 +- src/Response.res | 17 +- src/State.res | 2 - src/Tokens.res | 47 ++--- src/Util/Util.res | 4 - src/View/Panel/Emacs/Emacs__Parser.res | 2 +- 24 files changed, 360 insertions(+), 411 deletions(-) diff --git a/lib/js/src/Agda.bs.js b/lib/js/src/Agda.bs.js index 47ed1159..679a639a 100644 --- a/lib/js/src/Agda.bs.js +++ b/lib/js/src/Agda.bs.js @@ -238,7 +238,7 @@ function make(indicesUTF16) { rightEndpoint ]; }); - var lastInterval = Core__Option.mapWithDefault(intervals[intervals.length - 1 | 0], 0, (function (param) { + var lastInterval = Core__Option.mapOr(intervals[intervals.length - 1 | 0], 0, (function (param) { return param[1] + 1 | 0; })); return { diff --git a/lib/js/src/Config.bs.js b/lib/js/src/Config.bs.js index d195254d..2c05fa06 100644 --- a/lib/js/src/Config.bs.js +++ b/lib/js/src/Config.bs.js @@ -2,7 +2,6 @@ 'use strict'; var Vscode = require("vscode"); -var Js_string = require("rescript/lib/js/js_string.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); var Core__Option = require("@rescript/core/lib/js/src/Core__Option.bs.js"); var Parser$AgdaModeVscode = require("./Parser/Parser.bs.js"); @@ -69,7 +68,7 @@ function getAgdaPath() { function getCommandLineOptions() { return Core__Option.mapOr(Vscode.workspace.getConfiguration("agdaMode", undefined).get("connection.commandLineOptions"), [], (function (s) { - return Js_string.split(" ", s.trim()); + return s.trim().split(" "); })).filter(function (s) { return s.trim() !== ""; }); @@ -107,7 +106,7 @@ function getAgdaLanguageServerPort() { function getAgdaLanguageServerCommandLineOptions() { return Core__Option.mapOr(Vscode.workspace.getConfiguration("agdaMode", undefined).get("connection.agdaLanguageServerOptions"), [], (function (s) { - return Js_string.split(" ", s.trim()); + return s.trim().split(" "); })).filter(function (s) { return s.trim() !== ""; }); @@ -150,7 +149,7 @@ var View = { function getLibraryPath() { var raw = Core__Option.getOr(Vscode.workspace.getConfiguration("agdaMode", undefined).get("libraryPath"), ""); - return Js_string.split(",", raw).filter(function (x) { + return raw.split(",").filter(function (x) { return x !== ""; }).map(Parser$AgdaModeVscode.filepath); } @@ -207,7 +206,7 @@ function getActivationKey() { if (raw === undefined) { return "\\"; } - var key = Js_string.substrAtMost(0, 1, Caml_option.valFromOption(raw)); + var key = Caml_option.valFromOption(raw).substring(0, 1); if (key === "") { return "\\"; } else { diff --git a/lib/js/src/Goal.bs.js b/lib/js/src/Goal.bs.js index 209226eb..2766342d 100644 --- a/lib/js/src/Goal.bs.js +++ b/lib/js/src/Goal.bs.js @@ -3,7 +3,6 @@ var VSCode = require("rescript-vscode/lib/js/src/VSCode.bs.js"); var Vscode = require("vscode"); -var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Util$AgdaModeVscode = require("./Util/Util.bs.js"); var Editor$AgdaModeVscode = require("./Editor.bs.js"); var Parser$AgdaModeVscode = require("./Parser/Parser.bs.js"); @@ -22,27 +21,27 @@ async function makeMany(editor, indices) { var delta = { contents: 0 }; - var replacements = Belt_Array.map(Belt_Array.keep(diffs, (function (diff) { - return diff.changed; - })), (function (diff) { - var range = new Vscode.Range($$document.positionAt(diff.originalInterval[0] - delta.contents | 0), $$document.positionAt(diff.originalInterval[1] - delta.contents | 0)); - delta.contents = (delta.contents + (diff.modifiedInterval[1] - diff.modifiedInterval[0] | 0) | 0) - (diff.originalInterval[1] - diff.originalInterval[0] | 0) | 0; - var text = diff.content; - return [ - range, - text - ]; - })); + var replacements = diffs.filter(function (diff) { + return diff.changed; + }).map(function (diff) { + var range = new Vscode.Range($$document.positionAt(diff.originalInterval[0] - delta.contents | 0), $$document.positionAt(diff.originalInterval[1] - delta.contents | 0)); + delta.contents = (delta.contents + (diff.modifiedInterval[1] - diff.modifiedInterval[0] | 0) | 0) - (diff.originalInterval[1] - diff.originalInterval[0] | 0) | 0; + var text = diff.content; + return [ + range, + text + ]; + }); await Editor$AgdaModeVscode.$$Text.batchReplace$p(editor, replacements); - return Belt_Array.map(diffs, (function (diff) { - var match = Highlighting$AgdaModeVscode.decorateHole(editor, diff.modifiedInterval, diff.index); - return { - index: diff.index, - interval: diff.modifiedInterval, - decorationBackground: match[0], - decorationIndex: match[1] - }; - })); + return diffs.map(function (diff) { + var match = Highlighting$AgdaModeVscode.decorateHole(editor, diff.modifiedInterval, diff.index); + return { + index: diff.index, + interval: diff.modifiedInterval, + decorationBackground: match[0], + decorationIndex: match[1] + }; + }); } function getInnerRange(self, $$document) { diff --git a/lib/js/src/Highlighting.bs.js b/lib/js/src/Highlighting.bs.js index 1f2b7494..9f49ca56 100644 --- a/lib/js/src/Highlighting.bs.js +++ b/lib/js/src/Highlighting.bs.js @@ -2,7 +2,6 @@ 'use strict'; var Vscode = require("vscode"); -var Belt_Array = require("rescript/lib/js/belt_Array.js"); var PervasivesU = require("rescript/lib/js/pervasivesU.js"); var Config$AgdaModeVscode = require("./Config.bs.js"); var Editor$AgdaModeVscode = require("./Editor.bs.js"); @@ -37,9 +36,9 @@ function make() { } function clear(self) { - Belt_Array.forEach(self.decorations, (function (param) { - Editor$AgdaModeVscode.Decoration.destroy(param[0]); - })); + self.decorations.forEach(function (param) { + Editor$AgdaModeVscode.Decoration.destroy(param[0]); + }); self.decorations = []; } @@ -48,9 +47,9 @@ function destroy(self) { } function redecorate(self, editor) { - Belt_Array.forEach(self.decorations, (function (param) { - Editor$AgdaModeVscode.Decoration.decorate(editor, param[0], param[1]); - })); + self.decorations.forEach(function (param) { + Editor$AgdaModeVscode.Decoration.decorate(editor, param[0], param[1]); + }); } function classify(change, token) { @@ -72,7 +71,7 @@ function classify(change, token) { ]; } else { var columnDeltaOfRemovedRange = removedRange.end.character - removedRange.start.character | 0; - var line = Belt_Array.get(lines, lineDelta); + var line = lines[lineDelta]; var columnDelta$1 = line !== undefined ? line.length - columnDeltaOfRemovedRange | 0 : 0; match = [ 0, @@ -110,67 +109,66 @@ async function triggerDocumentChangeEvent(editor) { var insertPosition = lastLine.range.end; var deleteRange = new Vscode.Range(insertPosition, insertPosition.translate(0, 1)); var succeed = await Editor$AgdaModeVscode.$$Text.insert($$document, insertPosition, " "); - await ( - succeed ? Editor$AgdaModeVscode.$$Text.replace($$document, deleteRange, "") : Promise.resolve(false) - ); + if (succeed) { + await Editor$AgdaModeVscode.$$Text.replace($$document, deleteRange, ""); + } await $$document.save(); } function updateSemanticHighlighting(self, $$event) { var changes = $$event.contentChanges; var applyChange = function (tokens, change) { - return Belt_Array.concatMany(Belt_Array.map(tokens, (function (token) { - var action = classify(change, token); - if (typeof action !== "object") { - if (action === "NoOp") { - return [token]; - } else { - return []; - } - } - if (action.TAG !== "Move") { - return [{ - range: { - line: token.range.line + action._0 | 0, - column: token.range.column - }, - type_: token.type_, - modifiers: token.modifiers - }]; - } - var columnDelta = action._1; - return [{ - range: { - line: token.range.line + action._0 | 0, - column: [ - PervasivesU.abs(token.range.column[0] + columnDelta | 0), - PervasivesU.abs(token.range.column[1] + columnDelta | 0) - ] - }, - type_: token.type_, - modifiers: token.modifiers - }]; - }))); + return tokens.map(function (token) { + var action = classify(change, token); + if (typeof action !== "object") { + if (action === "NoOp") { + return [token]; + } else { + return []; + } + } + if (action.TAG !== "Move") { + return [{ + range: { + line: token.range.line + action._0 | 0, + column: token.range.column + }, + type_: token.type_, + modifiers: token.modifiers + }]; + } + var columnDelta = action._1; + return [{ + range: { + line: token.range.line + action._0 | 0, + column: [ + PervasivesU.abs(token.range.column[0] + columnDelta | 0), + PervasivesU.abs(token.range.column[1] + columnDelta | 0) + ] + }, + type_: token.type_, + modifiers: token.modifiers + }]; + }).flat(); }; - Belt_Array.forEach(changes, (function (change) { - self.semanticTokens = applyChange(self.semanticTokens, change); - })); + changes.forEach(function (change) { + self.semanticTokens = applyChange(self.semanticTokens, change); + }); } function getSemanticTokens(self) { return self.semanticTokens; } -function apply(self, tokens, editor) { +async function apply(self, tokens, editor) { if (Config$AgdaModeVscode.Highlighting.getHighlightWithThemeColors()) { var match = Tokens$AgdaModeVscode.toDecorationsAndSemanticTokens(tokens, editor); self.semanticTokens = match[1]; - self.decorations = Belt_Array.concat(self.decorations, match[0]); - return triggerDocumentChangeEvent(editor); + self.decorations = self.decorations.concat(match[0]); + return await triggerDocumentChangeEvent(editor); } var decorations = Tokens$AgdaModeVscode.toDecorations(tokens, editor); - self.decorations = Belt_Array.concat(self.decorations, decorations); - return Promise.resolve(); + self.decorations = self.decorations.concat(decorations); } var Module = { diff --git a/lib/js/src/Main.bs.js b/lib/js/src/Main.bs.js index 4fd4f743..0a93d1b5 100644 --- a/lib/js/src/Main.bs.js +++ b/lib/js/src/Main.bs.js @@ -2,9 +2,9 @@ 'use strict'; var Vscode = require("vscode"); -var Js_array = require("rescript/lib/js/js_array.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); var Core__Option = require("@rescript/core/lib/js/src/Core__Option.bs.js"); +var Caml_splice_call = require("rescript/lib/js/caml_splice_call.js"); var IM$AgdaModeVscode = require("./InputMethod/IM.bs.js"); var Chan$AgdaModeVscode = require("./Util/Chan.bs.js"); var State$AgdaModeVscode = require("./State.bs.js"); @@ -70,7 +70,7 @@ function initialize(debugChan, extensionPath, globalStoragePath, editor, fileNam Registry$AgdaModeVscode.remove(fileName); }); var subscribe = function (disposable) { - Js_array.push(disposable, state.subscriptions); + state.subscriptions.push(disposable); }; var getCurrentEditor = function () { var editor = Vscode.window.activeTextEditor; @@ -161,108 +161,109 @@ function finalize(isRestart) { } function activateWithoutContext(subscriptions, extensionPath, globalStoragePath) { + var subscribe = function (x) { + subscriptions.push(x); + }; + var subscribeMany = function (xs) { + Caml_splice_call.spliceObjApply(subscriptions, "push", [xs]); + }; var channels_inputMethod = Chan$AgdaModeVscode.make(); var channels_responseHandled = Chan$AgdaModeVscode.make(); var channels = { inputMethod: channels_inputMethod, responseHandled: channels_responseHandled }; - var x = onOpenEditor(function (editor) { - var fileName = Parser$AgdaModeVscode.filepath(editor.document.fileName); - if (isAgda(fileName)) { - return Core__Option.forEach(Registry$AgdaModeVscode.get(fileName), (function (state) { - state.editor = editor; - state.document = editor.document; - State__Command$AgdaModeVscode.dispatchCommand(state, "Refresh"); - })); - } - - }); - Js_array.push(x, subscriptions); - var x$1 = Vscode.workspace.onDidChangeTextDocument(function ($$event) { - var $$document = $$event.document; - var fileName = Parser$AgdaModeVscode.filepath($$document.fileName); - if (isAgda(fileName)) { - return Core__Option.forEach(Registry$AgdaModeVscode.get(fileName), (function (state) { - Highlighting$AgdaModeVscode.updateSemanticHighlighting(state.highlighting, $$event); - })); - } - - }); - Js_array.push(x$1, subscriptions); - var x$2 = Vscode.workspace.onDidCloseTextDocument(function ($$document) { - var fileName = Parser$AgdaModeVscode.filepath($$document.fileName); - if (isAgda(fileName)) { - Registry$AgdaModeVscode.removeAndDestroy(fileName); - finalize(false); - return ; - } - - }); - Js_array.push(x$2, subscriptions); - var xs = onTriggerCommand(async function (command, editor) { - var fileName = Parser$AgdaModeVscode.filepath(editor.document.fileName); - if (typeof command !== "object") { - switch (command) { - case "Quit" : - await Registry$AgdaModeVscode.removeAndDestroy(fileName); - finalize(false); - break; - case "Restart" : - await Registry$AgdaModeVscode.removeAndDestroy(fileName); - finalize(true); - break; - default: - - } - } - var exit = 0; - if (typeof command !== "object") { - switch (command) { - case "Load" : - case "Restart" : + subscribe(onOpenEditor(function (editor) { + var fileName = Parser$AgdaModeVscode.filepath(editor.document.fileName); + if (isAgda(fileName)) { + return Core__Option.forEach(Registry$AgdaModeVscode.get(fileName), (function (state) { + state.editor = editor; + state.document = editor.document; + State__Command$AgdaModeVscode.dispatchCommand(state, "Refresh"); + })); + } + + })); + subscribe(Vscode.workspace.onDidChangeTextDocument(function ($$event) { + var $$document = $$event.document; + var fileName = Parser$AgdaModeVscode.filepath($$document.fileName); + if (isAgda(fileName)) { + return Core__Option.forEach(Registry$AgdaModeVscode.get(fileName), (function (state) { + Highlighting$AgdaModeVscode.updateSemanticHighlighting(state.highlighting, $$event); + })); + } + + })); + subscribe(Vscode.workspace.onDidCloseTextDocument(function ($$document) { + var fileName = Parser$AgdaModeVscode.filepath($$document.fileName); + if (isAgda(fileName)) { + Registry$AgdaModeVscode.removeAndDestroy(fileName); + finalize(false); + return ; + } + + })); + subscribeMany(onTriggerCommand(async function (command, editor) { + var fileName = Parser$AgdaModeVscode.filepath(editor.document.fileName); + if (typeof command !== "object") { + switch (command) { + case "Quit" : + await Registry$AgdaModeVscode.removeAndDestroy(fileName); + finalize(false); + break; + case "Restart" : + await Registry$AgdaModeVscode.removeAndDestroy(fileName); + finalize(true); + break; + default: + + } + } + var exit = 0; + if (typeof command !== "object") { + switch (command) { + case "Load" : + case "Restart" : + exit = 1; + break; + default: + + } + } else if (command.TAG === "InputMethod") { + var tmp = command._0; + if (typeof tmp !== "object" && tmp === "Activate") { exit = 1; - break; - default: + } - } - } else if (command.TAG === "InputMethod") { - var tmp = command._0; - if (typeof tmp !== "object" && tmp === "Activate") { - exit = 1; - } - - } - if (exit === 1) { - var match = Registry$AgdaModeVscode.get(fileName); - if (match === undefined) { - var state = initialize(channels, extensionPath, globalStoragePath, editor, fileName); - Registry$AgdaModeVscode.add(fileName, state); - } - - } - var state$1 = Registry$AgdaModeVscode.get(fileName); - if (state$1 === undefined) { - return ; - } - var error = await State__Command$AgdaModeVscode.dispatchCommand(state$1, command); - if (error.TAG === "Ok") { - return { - TAG: "Ok", - _0: state$1, - [Symbol.for("name")]: "Ok" - }; - } else { - return { - TAG: "Error", - _0: error._0, - [Symbol.for("name")]: "Error" - }; - } - }); - Js_array.pushMany(xs, subscriptions); - var x$3 = registerDocumentSemanticTokensProvider(); - Js_array.push(x$3, subscriptions); + } + if (exit === 1) { + var match = Registry$AgdaModeVscode.get(fileName); + if (match === undefined) { + var state = initialize(channels, extensionPath, globalStoragePath, editor, fileName); + Registry$AgdaModeVscode.add(fileName, state); + } + + } + var state$1 = Registry$AgdaModeVscode.get(fileName); + if (state$1 === undefined) { + return ; + } + var error = await State__Command$AgdaModeVscode.dispatchCommand(state$1, command); + if (error.TAG === "Ok") { + return { + TAG: "Ok", + _0: state$1, + [Symbol.for("name")]: "Ok" + }; + } else { + return { + TAG: "Error", + _0: error._0, + [Symbol.for("name")]: "Error" + }; + } + })); + subscribe(registerDocumentSemanticTokensProvider()); return channels; } diff --git a/lib/js/src/Registry.bs.js b/lib/js/src/Registry.bs.js index 0f6c0a8a..423d33e4 100644 --- a/lib/js/src/Registry.bs.js +++ b/lib/js/src/Registry.bs.js @@ -1,9 +1,8 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Js_dict = require("rescript/lib/js/js_dict.js"); -var Belt_Array = require("rescript/lib/js/belt_Array.js"); -var Belt_Option = require("rescript/lib/js/belt_Option.js"); +var Core__Dict = require("@rescript/core/lib/js/src/Core__Dict.bs.js"); +var Core__Option = require("@rescript/core/lib/js/src/Core__Option.bs.js"); var Util$AgdaModeVscode = require("./Util/Util.bs.js"); var State$AgdaModeVscode = require("./State.bs.js"); var Highlighting$AgdaModeVscode = require("./Highlighting.bs.js"); @@ -19,11 +18,11 @@ function getState(status) { var dict = {}; function get(fileName) { - return Belt_Option.flatMap(Js_dict.get(dict, fileName), getState); + return Core__Option.flatMap(dict[fileName], getState); } function add(fileName, state) { - var match = Js_dict.get(dict, fileName); + var match = dict[fileName]; if (match !== undefined) { if (match.TAG !== "PendingInit") { return ; @@ -44,24 +43,24 @@ function add(fileName, state) { } function remove(fileName) { - Util$AgdaModeVscode.Dict.$$delete(dict, fileName); + Core__Dict.$$delete(dict, fileName); } async function removeAndDestroy(fileName) { - var match = Js_dict.get(dict, fileName); + var match = dict[fileName]; if (match === undefined) { return ; } if (match.TAG === "PendingInit") { - remove(fileName); + Core__Dict.$$delete(dict, fileName); return match._1([]); } - remove(fileName); + Core__Dict.$$delete(dict, fileName); State$AgdaModeVscode.destroy(match._0, false); } async function removeAndDestroyAll() { - await Util$AgdaModeVscode.oneByOne(Belt_Array.map(Object.keys(dict), removeAndDestroy)); + await Util$AgdaModeVscode.oneByOne(Object.keys(dict).map(removeAndDestroy)); } function isEmpty() { @@ -69,7 +68,7 @@ function isEmpty() { } async function requestSemanticTokens(fileName) { - var match = Js_dict.get(dict, fileName); + var match = dict[fileName]; if (match !== undefined) { if (match.TAG === "PendingInit") { return await match._0; diff --git a/lib/js/src/Request.bs.js b/lib/js/src/Request.bs.js index e357a36e..1c6683a5 100644 --- a/lib/js/src/Request.bs.js +++ b/lib/js/src/Request.bs.js @@ -1,8 +1,6 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Js_array = require("rescript/lib/js/js_array.js"); -var Belt_Array = require("rescript/lib/js/belt_Array.js"); var PervasivesU = require("rescript/lib/js/pervasivesU.js"); var Goal$AgdaModeVscode = require("./Goal.bs.js"); var Util$AgdaModeVscode = require("./Util/Util.bs.js"); @@ -78,10 +76,10 @@ function toString(x) { } function encode($$document, version, filepath, backend, libraryPath, highlightingMethod, request) { - Js_array.unshift(".", libraryPath); - var libraryPath$1 = Js_array.joinWith(", ", Belt_Array.map(libraryPath, (function (x) { - return "\"" + (Parser$AgdaModeVscode.filepath(x) + "\""); - }))); + libraryPath.unshift("."); + var libraryPath$1 = libraryPath.map(function (x) { + return "\"" + (Parser$AgdaModeVscode.filepath(x) + "\""); + }).join(", "); var highlightingMethod$1 = highlightingMethod ? "Direct" : "Indirect"; var commonPart = function (level) { var level$1; diff --git a/lib/js/src/Response.bs.js b/lib/js/src/Response.bs.js index 69e5bed8..544c2153 100644 --- a/lib/js/src/Response.bs.js +++ b/lib/js/src/Response.bs.js @@ -1,8 +1,6 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Js_array = require("rescript/lib/js/js_array.js"); -var Js_string = require("rescript/lib/js/js_string.js"); var Caml_format = require("rescript/lib/js/caml_format.js"); var Core__Array = require("@rescript/core/lib/js/src/Core__Array.bs.js"); var PervasivesU = require("rescript/lib/js/pervasivesU.js"); @@ -115,7 +113,7 @@ function parse(xs) { if (match.TAG !== "A") { return ; } - var payload = Js_string.replaceByRe(/\\n|\\r\\n/g, "\n", match._0); + var payload = match._0.replace(/\\n|\\r\\n/g, "\n"); var match$1 = xs[0]; if (match$1 === undefined) { return ; @@ -760,13 +758,13 @@ function parse$1(tokens) { [Symbol.for("name")]: "Ok" }; } - var pulp = Js_string.split(",", match$6._0); + var pulp = match$6._0.split(","); return { TAG: "Ok", _0: { TAG: "Status", - _0: Js_array.includes("ShowImplicit", pulp), - _1: Js_array.includes("Checked", pulp), + _0: pulp.includes("ShowImplicit"), + _1: pulp.includes("Checked"), [Symbol.for("name")]: "Status" }, [Symbol.for("name")]: "Ok" @@ -865,7 +863,7 @@ function parse$1(tokens) { exit$1 = 2; } if (exit$1 === 2) { - var info = parse(Js_array.sliceFrom(1, xs)); + var info = parse(xs.slice(1)); if (info !== undefined) { return { TAG: "Ok", diff --git a/lib/js/src/State.bs.js b/lib/js/src/State.bs.js index c3801bcd..ec1490c4 100644 --- a/lib/js/src/State.bs.js +++ b/lib/js/src/State.bs.js @@ -1,7 +1,6 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Belt_Array = require("rescript/lib/js/belt_Array.js"); var IM$AgdaModeVscode = require("./InputMethod/IM.bs.js"); var Chan$AgdaModeVscode = require("./Util/Chan.bs.js"); var Goal$AgdaModeVscode = require("./Goal.bs.js"); @@ -69,11 +68,11 @@ function destroy(state, alsoRemoveFromRegistry) { Chan$AgdaModeVscode.emit(state.onRemoveFromRegistry, undefined); } Chan$AgdaModeVscode.destroy(state.onRemoveFromRegistry); - Belt_Array.forEach(state.goals, Goal$AgdaModeVscode.destroyDecoration); + state.goals.forEach(Goal$AgdaModeVscode.destroyDecoration); Highlighting$AgdaModeVscode.destroy(state.highlighting); - Belt_Array.forEach(state.subscriptions, (function (prim) { - return prim.dispose(); - })); + state.subscriptions.forEach(function (prim) { + return prim.dispose(); + }); return Connection$AgdaModeVscode.stop(); } diff --git a/lib/js/src/Tokens.bs.js b/lib/js/src/Tokens.bs.js index e563c24b..8a7d34cf 100644 --- a/lib/js/src/Tokens.bs.js +++ b/lib/js/src/Tokens.bs.js @@ -4,11 +4,11 @@ var Fs = require("fs"); var Vscode = require("vscode"); var Caml_obj = require("rescript/lib/js/caml_obj.js"); -var Js_array = require("rescript/lib/js/js_array.js"); -var Belt_List = require("rescript/lib/js/belt_List.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); -var Belt_Option = require("rescript/lib/js/belt_Option.js"); +var Core__List = require("@rescript/core/lib/js/src/Core__List.bs.js"); +var Core__Array = require("@rescript/core/lib/js/src/Core__Array.bs.js"); var PervasivesU = require("rescript/lib/js/pervasivesU.js"); +var Core__Option = require("@rescript/core/lib/js/src/Core__Option.bs.js"); var Agda$AgdaModeVscode = require("./Agda.bs.js"); var Util$AgdaModeVscode = require("./Util/Util.bs.js"); var Json$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json.bs.js"); @@ -24,7 +24,7 @@ var Highlighting__SemanticToken$AgdaModeVscode = require("./Highlighting/Highlig function toString(self) { var match = self.source; - return "Token (" + String(self.start) + ", " + String(self.end_) + ") " + Util$AgdaModeVscode.Pretty.list(Belt_List.fromArray(Belt_Array.map(self.aspects, Highlighting__AgdaAspect$AgdaModeVscode.toString))) + ( + return "Token (" + String(self.start) + ", " + String(self.end_) + ") " + Util$AgdaModeVscode.Pretty.list(Core__List.fromArray(self.aspects.map(Highlighting__AgdaAspect$AgdaModeVscode.toString))) + ( match !== undefined ? " [src: " + String(match[1]) + "]" : "" ); } @@ -50,12 +50,12 @@ function parse(x) { } var end_$p$1 = end_$p._0; var aspects = xs[2]; - return Belt_Option.flatMap(PervasivesU.int_of_string_opt(start$p._0), (function (start) { - return Belt_Option.map(PervasivesU.int_of_string_opt(end_$p$1), (function (end_) { + return Core__Option.flatMap(PervasivesU.int_of_string_opt(start$p._0), (function (start) { + return Core__Option.map(PervasivesU.int_of_string_opt(end_$p$1), (function (end_) { return { start: start - 1 | 0, end_: end_ - 1 | 0, - aspects: Belt_Array.map(Parser$AgdaModeVscode.SExpression.flatten(aspects), Highlighting__AgdaAspect$AgdaModeVscode.parse), + aspects: Parser$AgdaModeVscode.SExpression.flatten(aspects).map(Highlighting__AgdaAspect$AgdaModeVscode.parse), isTokenBased: false, note: undefined, source: undefined @@ -73,12 +73,12 @@ function parse(x) { } var end_$p$3 = end_$p$2._0; var aspects$1 = xs[2]; - return Belt_Option.flatMap(PervasivesU.int_of_string_opt(start$p$1._0), (function (start) { - return Belt_Option.map(PervasivesU.int_of_string_opt(end_$p$3), (function (end_) { + return Core__Option.flatMap(PervasivesU.int_of_string_opt(start$p$1._0), (function (start) { + return Core__Option.map(PervasivesU.int_of_string_opt(end_$p$3), (function (end_) { return { start: start - 1 | 0, end_: end_ - 1 | 0, - aspects: Belt_Array.map(Parser$AgdaModeVscode.SExpression.flatten(aspects$1), Highlighting__AgdaAspect$AgdaModeVscode.parse), + aspects: Parser$AgdaModeVscode.SExpression.flatten(aspects$1).map(Highlighting__AgdaAspect$AgdaModeVscode.parse), isTokenBased: false, note: undefined, source: undefined @@ -119,13 +119,13 @@ function parse(x) { return ; } var index$p$1 = index$p._0; - return Belt_Option.flatMap(PervasivesU.int_of_string_opt(start$p$2._0), (function (start) { - return Belt_Option.flatMap(PervasivesU.int_of_string_opt(end_$p$5), (function (end_) { - return Belt_Option.map(PervasivesU.int_of_string_opt(index$p$1), (function (index) { + return Core__Option.flatMap(PervasivesU.int_of_string_opt(start$p$2._0), (function (start) { + return Core__Option.flatMap(PervasivesU.int_of_string_opt(end_$p$5), (function (end_) { + return Core__Option.map(PervasivesU.int_of_string_opt(index$p$1), (function (index) { return { start: start - 1 | 0, end_: end_ - 1 | 0, - aspects: Belt_Array.map(Parser$AgdaModeVscode.SExpression.flatten(aspects$2), Highlighting__AgdaAspect$AgdaModeVscode.parse), + aspects: Parser$AgdaModeVscode.SExpression.flatten(aspects$2).map(Highlighting__AgdaAspect$AgdaModeVscode.parse), isTokenBased: false, note: undefined, source: [ @@ -141,9 +141,7 @@ function parse(x) { } function parseDirectHighlightings(tokens) { - return Belt_Array.keepMap(Belt_Array.map((function (__x) { - return Js_array.sliceFrom(2, __x); - })(tokens), parse), (function (x) { + return Core__Array.filterMap(tokens.slice(2).map(parse), (function (x) { return x; })); } @@ -152,7 +150,7 @@ var decodeToken = Json_Decode$JsonCombinators.map(Util$AgdaModeVscode.Decode.tup return { start: param[0] - 1 | 0, end_: param[1] - 1 | 0, - aspects: Belt_Array.map(param[2], Highlighting__AgdaAspect$AgdaModeVscode.parse), + aspects: param[2].map(Highlighting__AgdaAspect$AgdaModeVscode.parse), isTokenBased: param[3], note: param[4], source: param[5] @@ -178,7 +176,7 @@ async function readAndParse(format) { try { var content = await Node__Fs$AgdaModeVscode.readFile(format._0); if (format.TAG === "Emacs") { - var match = Belt_Array.get(Parser$AgdaModeVscode.SExpression.parse(content), 0); + var match = Parser$AgdaModeVscode.SExpression.parse(content)[0]; var tokens; if (match !== undefined) { if (match.TAG === "Ok") { @@ -190,9 +188,9 @@ async function readAndParse(format) { } else { tokens = []; } - var match$1 = Belt_Array.get(tokens, 0); + var match$1 = tokens[0]; var removeTokenBasedHighlighting = match$1 !== undefined && match$1.TAG === "A" && match$1._0 === "remove" ? true : false; - var tokens$1 = Belt_Array.keepMap(Js_array.sliceFrom(1, tokens), parse); + var tokens$1 = Core__Array.filterMap(tokens.slice(1), parse); return [ removeTokenBasedHighlighting, tokens$1 @@ -243,76 +241,76 @@ function make() { } function insert(self, editor, tokens) { - Belt_Array.forEach(tokens, (function (info) { - var $$document = editor.document; - var text = Editor$AgdaModeVscode.$$Text.getAll($$document); - var offsetConverter = Agda$AgdaModeVscode.OffsetConverter.make(text); - var startOffset = Agda$AgdaModeVscode.OffsetConverter.convert(offsetConverter, info.start); - var existing = AVLTree$AgdaModeVscode.find(self.tokens, startOffset); - if (existing !== undefined) { - var old = existing[0]; - self.tokens.remove(startOffset); - var newAspects = Caml_obj.equal(old.aspects, info.aspects) ? old.aspects : Belt_Array.concat(old.aspects, info.aspects); - var new_start = old.start; - var new_end_ = old.end_; - var new_isTokenBased = old.isTokenBased; - var new_note = old.note; - var new_source = old.source; - var $$new = { - start: new_start, - end_: new_end_, - aspects: newAspects, - isTokenBased: new_isTokenBased, - note: new_note, - source: new_source - }; - self.tokens.insert(startOffset, [ - $$new, - existing[1] - ]); - return ; - } - var start = Editor$AgdaModeVscode.Position.fromOffset($$document, startOffset); - var end_ = Editor$AgdaModeVscode.Position.fromOffset($$document, Agda$AgdaModeVscode.OffsetConverter.convert(offsetConverter, info.end_)); - var range = new Vscode.Range(start, end_); + tokens.forEach(function (info) { + var $$document = editor.document; + var text = Editor$AgdaModeVscode.$$Text.getAll($$document); + var offsetConverter = Agda$AgdaModeVscode.OffsetConverter.make(text); + var startOffset = Agda$AgdaModeVscode.OffsetConverter.convert(offsetConverter, info.start); + var existing = AVLTree$AgdaModeVscode.find(self.tokens, startOffset); + if (existing !== undefined) { + var old = existing[0]; + self.tokens.remove(startOffset); + var newAspects = Caml_obj.equal(old.aspects, info.aspects) ? old.aspects : old.aspects.concat(info.aspects); + var new_start = old.start; + var new_end_ = old.end_; + var new_isTokenBased = old.isTokenBased; + var new_note = old.note; + var new_source = old.source; + var $$new = { + start: new_start, + end_: new_end_, + aspects: newAspects, + isTokenBased: new_isTokenBased, + note: new_note, + source: new_source + }; self.tokens.insert(startOffset, [ - info, - range + $$new, + existing[1] ]); - })); + return ; + } + var start = Editor$AgdaModeVscode.Position.fromOffset($$document, startOffset); + var end_ = Editor$AgdaModeVscode.Position.fromOffset($$document, Agda$AgdaModeVscode.OffsetConverter.convert(offsetConverter, info.end_)); + var range = new Vscode.Range(start, end_); + self.tokens.insert(startOffset, [ + info, + range + ]); + }); } function addEmacsFilePath(self, filepath) { - Js_array.push({ + self.tempFiles.push({ TAG: "Emacs", _0: filepath, [Symbol.for("name")]: "Emacs" - }, self.tempFiles); + }); } function addJSONFilePath(self, filepath) { - Js_array.push({ + self.tempFiles.push({ TAG: "JSON", _0: filepath, [Symbol.for("name")]: "JSON" - }, self.tempFiles); + }); } async function readTempFiles(self, editor) { - var xs = await Promise.all(Belt_Array.map(self.tempFiles, readAndParse)); - var tokens = Belt_Array.concatMany(Belt_Array.map(xs, (function (prim) { - return prim[1]; - }))); + var xs = await Promise.all(self.tempFiles.map(readAndParse)); + var tokens = xs.map(function (prim) { + return prim[1]; + }).flat(); insert(self, editor, tokens); self.tempFiles = []; } function clear(self) { - Belt_Array.forEach(self.tempFiles, (function (format) { - Fs.unlink(format._0, (function (param) { - - })); - })); + self.tempFiles.forEach(function (format) { + Fs.unlink(format._0, (function (param) { + + })); + }); self.tokens = new BinarySearchTree.BinarySearchTree(); } @@ -321,9 +319,9 @@ function toArray(self) { } function lookupSrcLoc(self, offset) { - return Belt_Option.map(Belt_Option.flatMap(AVLTree$AgdaModeVscode.lowerBound(self.tokens, offset), (function (param) { + return Core__Option.map(Core__Option.flatMap(AVLTree$AgdaModeVscode.lowerBound(self.tokens, offset), (function (param) { var range = param[1]; - return Belt_Option.map(param[0].source, (function (param) { + return Core__Option.map(param[0].source, (function (param) { return [ range, param[0], @@ -349,32 +347,32 @@ function lookupSrcLoc(self, offset) { } function toDecorationsAndSemanticTokens(tokens, editor) { - var match = Belt_Array.unzip(Belt_Array.keepMap(Belt_Array.concatMany(Belt_Array.map(AVLTree$AgdaModeVscode.toArray(tokens.tokens), (function (param) { - var info = param[0]; - var ranges = Highlighting__SemanticToken$AgdaModeVscode.Module.SingleLineRange.splitRange(editor.document, param[1]); - return Belt_Array.map(ranges, (function (range) { - return [ - info.aspects, - range - ]; - })); - }))), (function (param) { + var match = Belt_Array.unzip(Core__Array.filterMap(AVLTree$AgdaModeVscode.toArray(tokens.tokens).map(function (param) { + var info = param[0]; + var ranges = Highlighting__SemanticToken$AgdaModeVscode.Module.SingleLineRange.splitRange(editor.document, param[1]); + return ranges.map(function (range) { + return [ + info.aspects, + range + ]; + }); + }).flat(), (function (param) { var range = param[1]; - var match = Belt_Array.unzip(Belt_Array.map(param[0], Highlighting__AgdaAspect$AgdaModeVscode.toTokenTypeAndModifiersAndDecoration)); + var match = Belt_Array.unzip(param[0].map(Highlighting__AgdaAspect$AgdaModeVscode.toTokenTypeAndModifiersAndDecoration)); var match$1 = Belt_Array.unzip(match[0]); - var tokenTypes = Belt_Array.keepMap(match$1[0], (function (x) { + var tokenTypes = Core__Array.filterMap(match$1[0], (function (x) { return x; })); - var tokenModifiers = Belt_Array.concatMany(match$1[1]); - var decorations = Belt_Array.keepMap(match[1], (function (x) { - return Belt_Option.map(x, (function (x) { + var tokenModifiers = match$1[1].flat(); + var decorations = Core__Array.filterMap(match[1], (function (x) { + return Core__Option.map(x, (function (x) { return [ x, Highlighting__SemanticToken$AgdaModeVscode.Module.SingleLineRange.toVsCodeRange(range) ]; })); })); - var semanticToken = Belt_Option.map(Belt_Array.get(tokenTypes, 0), (function (tokenType) { + var semanticToken = Core__Option.map(tokenTypes[0], (function (tokenType) { return { range: range, type_: tokenType, @@ -386,10 +384,10 @@ function toDecorationsAndSemanticTokens(tokens, editor) { decorations ]; }))); - var semanticTokens = Belt_Array.keepMap(match[0], (function (x) { + var semanticTokens = Core__Array.filterMap(match[0], (function (x) { return x; })); - var decorations = Highlighting__Decoration$AgdaModeVscode.toVSCodeDecorations(Belt_Array.concatMany(match[1]), editor); + var decorations = Highlighting__Decoration$AgdaModeVscode.toVSCodeDecorations(match[1].flat(), editor); return [ decorations, semanticTokens @@ -397,18 +395,18 @@ function toDecorationsAndSemanticTokens(tokens, editor) { } function toDecorations(self, editor) { - var aspects = Belt_Array.concatMany(Belt_Array.map(AVLTree$AgdaModeVscode.toArray(self.tokens), (function (param) { - var range = param[1]; - return Belt_Array.map(param[0].aspects, (function (aspect) { - return [ - aspect, - range - ]; - })); - }))); - return Highlighting__Decoration$AgdaModeVscode.toVSCodeDecorations(Belt_Array.keepMap(aspects, (function (param) { + var aspects = AVLTree$AgdaModeVscode.toArray(self.tokens).map(function (param) { + var range = param[1]; + return param[0].aspects.map(function (aspect) { + return [ + aspect, + range + ]; + }); + }).flat(); + return Highlighting__Decoration$AgdaModeVscode.toVSCodeDecorations(Core__Array.filterMap(aspects, (function (param) { var range = param[1]; - return Belt_Option.map(Highlighting__AgdaAspect$AgdaModeVscode.toDecoration(param[0]), (function (x) { + return Core__Option.map(Highlighting__AgdaAspect$AgdaModeVscode.toDecoration(param[0]), (function (x) { return [ x, range diff --git a/lib/js/src/Util/Util.bs.js b/lib/js/src/Util/Util.bs.js index 60555215..6691860b 100644 --- a/lib/js/src/Util/Util.bs.js +++ b/lib/js/src/Util/Util.bs.js @@ -435,12 +435,6 @@ var Promise_ = { pending: pending }; -var $$delete = (function (dict, key) {delete dict[key]}); - -var Dict = { - $$delete: $$delete -}; - function lines(s) { return s.split(/\r\n|\n/g); } @@ -469,6 +463,5 @@ exports.oneByOne = oneByOne; exports.JsError = JsError; exports.List = List; exports.Promise_ = Promise_; -exports.Dict = Dict; exports.$$String = $$String$1; /* react Not a pure module */ diff --git a/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js b/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js index 39105a12..86c606c5 100644 --- a/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js +++ b/lib/js/src/View/Panel/Emacs/Emacs__Parser.bs.js @@ -4,6 +4,7 @@ var Js_dict = require("rescript/lib/js/js_dict.js"); var Js_array = require("rescript/lib/js/js_array.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); +var Core__Dict = require("@rescript/core/lib/js/src/Core__Dict.bs.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); var Util$AgdaModeVscode = require("../../../Util/Util.bs.js"); @@ -60,7 +61,7 @@ function split(dict, key, splitter) { Belt_Array.forEach(Js_dict.entries(splitter(value)), (function (param) { dict[param[0]] = param[1]; })); - Util$AgdaModeVscode.Dict.$$delete(dict, key); + Core__Dict.$$delete(dict, key); return dict; } else { return dict; diff --git a/src/Agda.res b/src/Agda.res index 2dd52088..ac209033 100644 --- a/src/Agda.res +++ b/src/Agda.res @@ -194,7 +194,7 @@ module Indices: Indices = { // 6003 let lastInterval = - intervals[Array.length(intervals) - 1]->Option.mapWithDefault(0, ((_, x)) => x + 1) + intervals[Array.length(intervals) - 1]->Option.mapOr(0, ((_, x)) => x + 1) { intervals, diff --git a/src/Config.res b/src/Config.res index 84eda642..19adeea2 100644 --- a/src/Config.res +++ b/src/Config.res @@ -57,8 +57,8 @@ module Connection = { let getCommandLineOptions = () => Workspace.getConfiguration(Some("agdaMode"), None) ->WorkspaceConfiguration.get("connection.commandLineOptions") - ->Option.mapOr([], s => Js.String.split(" ", Js.String.trim(s))) - ->Array.filter(s => Js.String.trim(s) != "") + ->Option.mapOr([], s => String.trim(s)->String.split(" ")) + ->Array.filter(s => String.trim(s) != "") // Agda Language Server let getUseAgdaLanguageServer = () => @@ -100,8 +100,8 @@ module Connection = { let getAgdaLanguageServerCommandLineOptions = () => Workspace.getConfiguration(Some("agdaMode"), None) ->WorkspaceConfiguration.get("connection.agdaLanguageServerOptions") - ->Option.mapOr([], s => Js.String.split(" ", Js.String.trim(s))) - ->Array.filter(s => Js.String.trim(s) != "") + ->Option.mapOr([], s => String.trim(s)->String.split(" ")) + ->Array.filter(s => String.trim(s) != "") } module View = { @@ -136,7 +136,7 @@ let getLibraryPath = () => { ->WorkspaceConfiguration.get("libraryPath") ->Option.getOr("") // split by comma, and clean them up - Js.String.split(",", raw)->Array.filter(x => x !== "")->Array.map(Parser.filepath) + raw->String.split(",")->Array.filter(x => x !== "")->Array.map(Parser.filepath) } module Highlighting = { @@ -196,7 +196,7 @@ module InputMethod = { ) switch raw { | Some(s) => - switch Js.String.substrAtMost(~from=0, ~length=1, s) { + switch s->String.substring(~start=0, ~end=1) { | "" => "\\" | key => key } diff --git a/src/Goal.res b/src/Goal.res index ceec4703..83c07bb0 100644 --- a/src/Goal.res +++ b/src/Goal.res @@ -1,4 +1,3 @@ -open Belt open Common module type Module = { type t = { @@ -52,7 +51,7 @@ module Module: Module = { let delta = ref(0) let replacements = diffs - ->Array.keep(diff => diff.changed) + ->Array.filter(diff => diff.changed) ->Array.map(diff => { let range = VSCode.Range.make( document->VSCode.TextDocument.positionAt(fst(diff.originalInterval) - delta.contents), @@ -96,7 +95,7 @@ module Module: Module = { let getContent = (self, document) => { let innerRange = getInnerRange(self, document) - Editor.Text.get(document, innerRange)->Js.String.trim + Editor.Text.get(document, innerRange)->String.trim } let setContent = (self, document, text) => { diff --git a/src/Highlighting.res b/src/Highlighting.res index f752c672..537ba98d 100644 --- a/src/Highlighting.res +++ b/src/Highlighting.res @@ -1,5 +1,4 @@ open Common -open Belt module Decoration = Highlighting__Decoration module SemanticToken = Highlighting__SemanticToken @@ -202,31 +201,13 @@ module Module: Module = { VSCode.Position.translate(insertPosition, 0, 1), ) - // // insert a space - // Editor.Text.batchInsert'(editor, [insertPosition], " ") - // ->Promise.flatMap(succeed => - // if succeed { - // // delete that space - // Editor.Text.batchReplace'(editor, [(deleteRange, "")]) - // } else { - // Promise.resolved(false) - // } - // ) - // // save after messing with the file - // ->Promise.flatMap(_ => VSCode.TextDocument.save(document)) - // ->Promise.map(_ => ()) - // insert a space let succeed = await Editor.Text.insert(document, insertPosition, " ") - let _ = await ( - if succeed { - // delete that space - Editor.Text.replace(document, deleteRange, "") - } else { - Promise.resolve(false) - } - ) + if succeed { + // delete that space + let _ = await Editor.Text.replace(document, deleteRange, "") + } // save after messing with the file let _ = await VSCode.TextDocument.save(document) } @@ -243,7 +224,7 @@ module Module: Module = { let action = Change.classify(change, token) Change.apply(token, action) }) - ->Array.concatMany + ->Array.flat // apply changes to the cached tokens changes->Array.forEach(change => { @@ -253,17 +234,17 @@ module Module: Module = { let getSemanticTokens = (self: t) => self.semanticTokens - let apply = (self, tokens, editor) => { + let apply = async (self, tokens, editor) => { if Config.Highlighting.getHighlightWithThemeColors() { let (decorations, semanticTokens) = Tokens.toDecorationsAndSemanticTokens(tokens, editor) self.semanticTokens = semanticTokens self.decorations = Array.concat(self.decorations, decorations) // apply cached tokens to the editor, by making a change to the file - triggerDocumentChangeEvent(editor) + await triggerDocumentChangeEvent(editor) } else { let decorations = Tokens.toDecorations(tokens, editor) self.decorations = Array.concat(self.decorations, decorations) - Promise.resolve() + () } } } diff --git a/src/Main.res b/src/Main.res index 1caf3f11..0f3b281a 100644 --- a/src/Main.res +++ b/src/Main.res @@ -1,7 +1,7 @@ // if end with '.agda' or '.lagda' let isAgda = (fileName): bool => { let fileName = fileName->Parser.filepath - Js.Re.test_(%re("/\.agda$|\.lagda/i"), fileName) // RegEx updated to v10.1.4 + RegExp.test(%re("/\.agda$|\.lagda/i"), fileName) } module Inputs: { let onOpenEditor: (VSCode.TextEditor.t => unit) => VSCode.Disposable.t @@ -58,7 +58,7 @@ let initialize = (debugChan, extensionPath, globalStoragePath, editor, fileName) // input events //////////////////////////////////////////////////////////////// - let subscribe = disposable => disposable->Js.Array.push(state.subscriptions)->ignore + let subscribe = disposable => state.subscriptions->Array.push(disposable)->ignore let getCurrentEditor = () => switch VSCode.Window.activeTextEditor { @@ -200,8 +200,8 @@ let finalize = isRestart => { } let activateWithoutContext = (subscriptions, extensionPath, globalStoragePath) => { - let subscribe = x => x->Js.Array.push(subscriptions)->ignore - let subscribeMany = xs => xs->Js.Array.pushMany(subscriptions)->ignore + let subscribe = x => subscriptions->Array.push(x)->ignore + let subscribeMany = xs => subscriptions->Array.pushMany(xs)->ignore // Channel for testing, emits events when something has been completed, // for example, when the input method has translated a key sequence into a symbol let channels = { diff --git a/src/Registry.res b/src/Registry.res index 554ab1fd..5776d720 100644 --- a/src/Registry.res +++ b/src/Registry.res @@ -2,20 +2,18 @@ module Module: { let get: string => option let add: (string, State.t) => unit let remove: string => unit - let removeAndDestroy: string => Promise.t - let removeAndDestroyAll: unit => Promise.t + let removeAndDestroy: string => promise + let removeAndDestroyAll: unit => promise let isEmpty: unit => bool - let requestSemanticTokens: string => Promise.t> + let requestSemanticTokens: string => promise> } = { - open Belt - module Status = { type tokens = array type t = // Waiting for Semantic Tokens, but the State has not been initiated yet - | PendingInit(Promise.t, tokens => unit) + | PendingInit(promise, tokens => unit) // State has been initiated yet | Initialized(State.t) @@ -27,10 +25,10 @@ module Module: { } // A dictionary of FileName-Status entries - let dict: Js.Dict.t = Js.Dict.empty() + let dict: Dict.t = Dict.make() // Private helper that returns Status - let get' = fileName => dict->Js.Dict.get(fileName) + let get' = fileName => dict->Dict.get(fileName) // Public getter that returns State let get = fileName => get'(fileName)->Option.flatMap(Status.getState) @@ -42,17 +40,17 @@ module Module: { // Fulfill the request for Semantic Tokens state.highlighting->Highlighting.getSemanticTokens->resolve // set the entry as Initialized - dict->Js.Dict.set(fileName, Initialized(state)) + dict->Dict.set(fileName, Initialized(state)) | Some(Initialized(_)) => // do nothing // Js.log("[ add ][ Initialized ]" ++ fileName) () | None => // Js.log("[ add ][ None ]" ++ fileName) - dict->Js.Dict.set(fileName, Initialized(state)) + dict->Dict.set(fileName, Initialized(state)) } // Removes the entry (but without triggering State.destroy() ) - let remove = fileName => Util.Dict.delete(dict, fileName) + let remove = fileName => Dict.delete(dict, fileName) let removeAndDestroy = async fileName => switch get'(fileName) { @@ -67,10 +65,10 @@ module Module: { } let removeAndDestroyAll = async () => { - let _ = await dict->Js.Dict.keys->Array.map(removeAndDestroy)->Util.oneByOne + let _ = await dict->Dict.keysToArray->Array.map(removeAndDestroy)->Util.oneByOne } - let isEmpty = () => Js.Dict.keys(dict)->Array.length == 0 + let isEmpty = () => Dict.keysToArray(dict)->Array.length == 0 // Requesting Semantic Tokens // add PendingInit(_) to the Registry if the entry has not been created yet @@ -84,7 +82,7 @@ module Module: { | None => // Js.log("[ req ][ None ]" ++ fileName) let (promise, resolve, _) = Util.Promise_.pending() - dict->Js.Dict.set(fileName, PendingInit(promise, resolve)) + dict->Dict.set(fileName, PendingInit(promise, resolve)) await promise } } diff --git a/src/Request.res b/src/Request.res index c9d512ca..b83f19a4 100644 --- a/src/Request.res +++ b/src/Request.res @@ -1,5 +1,3 @@ -open Belt - type t = | Load | Compile @@ -80,9 +78,9 @@ let encode = ( ) => { let libraryPath: string = { // add the current directory to the front - Js.Array.unshift(".", libraryPath)->ignore + libraryPath->Array.unshift(".")->ignore // add quotes and then concatenate the paths with commas - Js.Array.joinWith(", ", Array.map(libraryPath, x => "\"" ++ (Parser.filepath(x) ++ "\""))) + libraryPath->Array.map(x => "\"" ++ (Parser.filepath(x) ++ "\""))->Array.join(", ") } let highlightingMethod = highlightingMethod ? "Direct" : "Indirect" diff --git a/src/Response.res b/src/Response.res index 858472a6..ccb30ea1 100644 --- a/src/Response.res +++ b/src/Response.res @@ -13,7 +13,7 @@ module GiveAction = { open JsonCombinators.Json.Decode Util.Decode.sum(x => { switch x { - | "GiveString" => Payload(string->map((. s) => GiveString(s))) + | "GiveString" => Payload(string->map(s => GiveString(s))) | "GiveParen" => TagOnly(GiveParen) | "GiveNoParen" => TagOnly(GiveNoParen) | tag => raise(DecodeError("[Response.GiveAction] Unknown constructor: " ++ tag)) @@ -78,12 +78,12 @@ module DisplayInfo = { | Version(string) => "Version " ++ string } - let parse = (xs: array): option =>{ + let parse = (xs: array): option => { switch xs[1] { | Some(A(rawPayload)) => - // there are some explicitly escaped EOLs like "\n" or "\r\n" in the s-expressions + // there are some explicitly escaped EOLs like "\n" or "\r\n" in the s-expressions // we need to replace them with actual EOLs - let payload = Js.String.replaceByRe(%re("/\\n|\\r\\n/g"), "\n", rawPayload) + let payload = rawPayload->String.replaceRegExp(%re("/\\n|\\r\\n/g"), "\n") switch xs[0] { | Some(A("*Compilation result*")) => Some(CompilationOk(payload)) | Some(A("*Constraints*")) => @@ -109,7 +109,8 @@ module DisplayInfo = { | _ => None } | _ => None - }} + } + } } // Here's the corresponding datatype in Haskell: @@ -212,8 +213,8 @@ let parse = (tokens: Token.t): result => { | Some(A("agda2-status-action")) => switch xs[1] { | Some(A(status)) => - let pulp = status |> Js.String.split(",") - Ok(Status(pulp |> Js.Array.includes("ShowImplicit"), pulp |> Js.Array.includes("Checked"))) + let pulp = status->String.split(",") + Ok(Status(pulp->Array.includes("ShowImplicit"), pulp->Array.includes("Checked"))) | _ => Ok(Status(false, false)) } | Some(A("agda2-maybe-goto")) => @@ -290,7 +291,7 @@ let parse = (tokens: Token.t): result => { | _ => Ok(ClearRunningInfo) } | _ => - switch DisplayInfo.parse(xs |> Js.Array.sliceFrom(1)) { + switch DisplayInfo.parse(xs->Array.sliceToEnd(~start=1)) { | Some(info) => Ok(DisplayInfo(info)) | None => err(12) } diff --git a/src/State.res b/src/State.res index c29dbee3..199f74be 100644 --- a/src/State.res +++ b/src/State.res @@ -1,5 +1,3 @@ -open Belt - open State__Type module View = State__View module Context = State__Type.Context diff --git a/src/Tokens.res b/src/Tokens.res index 670dfa39..d9466abb 100644 --- a/src/Tokens.res +++ b/src/Tokens.res @@ -1,5 +1,3 @@ -open Belt - module Aspect = Highlighting__AgdaAspect // information of Tokens from Agda @@ -76,7 +74,7 @@ module Token = { // from SExpression let parseDirectHighlightings: array => array = tokens => - tokens->(Js.Array.sliceFrom(2, _))->Array.map(parse)->Array.keepMap(x => x) + tokens->Array.sliceToEnd(~start=2)->Array.map(parse)->Array.filterMap(x => x) // from JSON let decodeToken = { @@ -120,7 +118,7 @@ module type Module = { let lookupSrcLoc: ( t, int, - ) => option>> + ) => option>> let toDecorations: (t, VSCode.TextEditor.t) => array<(Editor.Decoration.t, array)> let toDecorationsAndSemanticTokens: ( @@ -156,11 +154,11 @@ module Module: Module = { | Some(A("remove")) => true | _ => false } - let tokens = Js.Array.sliceFrom(1, tokens)->Array.keepMap(Token.parse) + let tokens = tokens->Array.sliceToEnd(~start=1)->Array.filterMap(Token.parse) (removeTokenBasedHighlighting, tokens) | JSON(_) => let raw = content - switch Js.Json.parseExn(raw) { + switch JSON.parseExn(raw) { | exception _e => (false, []) | json => switch JsonCombinators.Json.decode(json, Token.decodeResponseHighlightingInfoDirect) { @@ -219,21 +217,19 @@ module Module: Module = { ...old, aspects: newAspects, } - self.tokens->AVLTree.insert(startOffset, (new, range))->ignore + self.tokens->AVLTree.insert(startOffset, (new, range)) } }) } - let addEmacsFilePath = (self, filepath) => - Js.Array.push(TempFile.Emacs(filepath), self.tempFiles)->ignore - let addJSONFilePath = (self, filepath) => - Js.Array.push(TempFile.JSON(filepath), self.tempFiles)->ignore + let addEmacsFilePath = (self, filepath) => self.tempFiles->Array.push(TempFile.Emacs(filepath)) + let addJSONFilePath = (self, filepath) => self.tempFiles->Array.push(TempFile.JSON(filepath)) // read temp files and add Tokens added from "addEmacsFilePath" or "addJSONFilePath" let readTempFiles = async (self, editor) => { // read and parse and concat them let xs = await self.tempFiles->Array.map(TempFile.readAndParse)->Promise.all - let tokens = xs->Array.map(snd)->Array.concatMany + let tokens = xs->Array.map(snd)->Array.flat insert(self, editor, tokens) self.tempFiles = [] } @@ -250,7 +246,7 @@ module Module: Module = { // for goto definition let lookupSrcLoc = (self, offset): option< - Promise.t>, + promise>, > => { self.tokens ->AVLTree.lowerBound(offset) @@ -281,17 +277,17 @@ module Module: Module = { ) ranges->Array.map(range => (info.aspects, range)) }) - ->Array.concatMany - ->Array.keepMap(((aspects, range)) => { + ->Array.flat + ->Array.filterMap(((aspects, range)) => { // convert Aspects to TokenType / TokenModifiers / Backgrounds let (tokenTypeAndModifiers, decorations) = - aspects->Array.map(Aspect.toTokenTypeAndModifiersAndDecoration)->Array.unzip - let (tokenTypes, tokenModifiers) = tokenTypeAndModifiers->Array.unzip + aspects->Array.map(Aspect.toTokenTypeAndModifiersAndDecoration)->Belt.Array.unzip + let (tokenTypes, tokenModifiers) = tokenTypeAndModifiers->Belt.Array.unzip // merge TokenType / TokenModifiers / Backgrounds - let tokenTypes = tokenTypes->Array.keepMap(x => x) - let tokenModifiers = tokenModifiers->Array.concatMany + let tokenTypes = tokenTypes->Array.filterMap(x => x) + let tokenModifiers = tokenModifiers->Array.flat let decorations = - decorations->Array.keepMap(x => + decorations->Array.filterMap(x => x->Option.map( x => (x, Highlighting__SemanticToken.SingleLineRange.toVsCodeRange(range)), ) @@ -305,10 +301,9 @@ module Module: Module = { }) Some(semanticToken, decorations) }) - ->Array.unzip - let semanticTokens = semanticTokens->Array.keepMap(x => x) - let decorations = - decorations->Array.concatMany->Highlighting__Decoration.toVSCodeDecorations(editor) + ->Belt.Array.unzip + let semanticTokens = semanticTokens->Array.filterMap(x => x) + let decorations = decorations->Array.flat->Highlighting__Decoration.toVSCodeDecorations(editor) (decorations, semanticTokens) } @@ -322,10 +317,10 @@ module Module: Module = { // pair the aspect with the range info.aspects->Array.map(aspect => (aspect, range)) ) - ->Array.concatMany + ->Array.flat aspects - ->Array.keepMap(((aspect, range)) => Aspect.toDecoration(aspect)->Option.map(x => (x, range))) + ->Array.filterMap(((aspect, range)) => Aspect.toDecoration(aspect)->Option.map(x => (x, range))) ->Highlighting__Decoration.toVSCodeDecorations(editor) } } diff --git a/src/Util/Util.res b/src/Util/Util.res index 8a1cfeb0..97e245e1 100644 --- a/src/Util/Util.res +++ b/src/Util/Util.res @@ -270,10 +270,6 @@ module Promise_ = { } } -module Dict = { - let delete: (Js.Dict.t<'a>, string) => unit = %raw("function (dict, key) {delete dict[key]}") -} - module String = { // let eol = switch VSCode.TextDocument.eol { // | VSCode.EndOfLine.LF => "\n" diff --git a/src/View/Panel/Emacs/Emacs__Parser.res b/src/View/Panel/Emacs/Emacs__Parser.res index b4359689..e18ba433 100644 --- a/src/View/Panel/Emacs/Emacs__Parser.res +++ b/src/View/Panel/Emacs/Emacs__Parser.res @@ -26,7 +26,7 @@ module Dict = { // insert new entries entries(splitter(value))->Array.forEach(((k, v)) => set(dict, k, v)) // remove old entry - Util.Dict.delete(dict, key) + Dict.delete(dict, key) dict | None => dict } From 215d0b3ba21631c205683a62499cf8607d78518a Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Thu, 24 Oct 2024 14:45:59 +0800 Subject: [PATCH 090/109] [ fix ] Change how edits are applied on VSCode TextEditor --- lib/js/src/Editor.bs.js | 25 ++----------- lib/js/src/Goal.bs.js | 2 +- lib/js/test/tests/Test__CaseSplit.bs.js | 13 +++---- lib/js/test/tests/Test__EditorIM.bs.js | 16 ++++----- lib/js/test/tests/Test__Tokens.bs.js | 22 ++++++------ lib/js/test/tests/Test__Util.bs.js | 48 +++++++++++++------------ src/Editor.res | 26 +++++++------- src/Goal.res | 2 +- src/State/State__Goal.res | 5 ++- test/tests/Test__CaseSplit.res | 9 ++--- test/tests/Test__EditorIM.res | 4 +-- test/tests/Test__Tokens.res | 14 ++++---- test/tests/Test__Util.res | 31 ++++++++-------- 13 files changed, 98 insertions(+), 119 deletions(-) diff --git a/lib/js/src/Editor.bs.js b/lib/js/src/Editor.bs.js index 1e4bea85..53a3aaca 100644 --- a/lib/js/src/Editor.bs.js +++ b/lib/js/src/Editor.bs.js @@ -3,7 +3,6 @@ var VSCode = require("rescript-vscode/lib/js/src/VSCode.bs.js"); var Vscode = require("vscode"); -var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); var Agda$AgdaModeVscode = require("./Agda.bs.js"); @@ -236,14 +235,6 @@ function batchReplace($$document, replacements) { return Vscode.workspace.applyEdit(workspaceEdit); } -function batchReplace$p(editor, replacements) { - return editor.edit((function (editBuilder) { - replacements.forEach(function (param) { - editBuilder.replace(param[0], param[1]); - }); - }), undefined); -} - function insert($$document, point, text) { var workspaceEdit = new Vscode.WorkspaceEdit(); workspaceEdit.insert($$document.uri, point, text, undefined); @@ -259,14 +250,6 @@ function batchInsert($$document, points, text) { return Vscode.workspace.applyEdit(workspaceEdit); } -function batchInsert$p(editor, points, text) { - return editor.edit((function (editBuilder) { - points.forEach(function (point) { - editBuilder.insert(point, text); - }); - }), undefined); -} - function $$delete($$document, range) { var workspaceEdit = new Vscode.WorkspaceEdit(); workspaceEdit.delete($$document.uri, range, undefined); @@ -278,10 +261,8 @@ var $$Text = { getAll: getAll, replace: replace, batchReplace: batchReplace, - batchReplace$p: batchReplace$p, insert: insert, batchInsert: batchInsert, - batchInsert$p: batchInsert$p, $$delete: $$delete }; @@ -322,9 +303,9 @@ function registerHoverProvider(hoverProvider) { return Vscode.languages.registerHoverProvider(documentSelector, { provideHover: (function (textDocument, point, param) { return VSCode.ProviderResult.map(hoverProvider(textDocument.fileName, point), (function (param) { - var markdownStrings = Belt_Array.map(param[0], (function (string) { - return new Vscode.MarkdownString(string, true); - })); + var markdownStrings = param[0].map(function (string) { + return new Vscode.MarkdownString(string, true); + }); return new Vscode.Hover(markdownStrings, param[1]); })); }) diff --git a/lib/js/src/Goal.bs.js b/lib/js/src/Goal.bs.js index 2766342d..8161ab4e 100644 --- a/lib/js/src/Goal.bs.js +++ b/lib/js/src/Goal.bs.js @@ -32,7 +32,7 @@ async function makeMany(editor, indices) { text ]; }); - await Editor$AgdaModeVscode.$$Text.batchReplace$p(editor, replacements); + await Editor$AgdaModeVscode.$$Text.batchReplace($$document, replacements); return diffs.map(function (diff) { var match = Highlighting$AgdaModeVscode.decorateHole(editor, diff.modifiedInterval, diff.index); return { diff --git a/lib/js/test/tests/Test__CaseSplit.bs.js b/lib/js/test/tests/Test__CaseSplit.bs.js index 99204855..e9ad563c 100644 --- a/lib/js/test/tests/Test__CaseSplit.bs.js +++ b/lib/js/test/tests/Test__CaseSplit.bs.js @@ -91,17 +91,14 @@ describe.skip("Integration test", (function () { before(function () { return Test__Util$AgdaModeVscode.readFile(Test__Util$AgdaModeVscode.Path.asset("CaseSplit2.agda"), fileContent); }); - after(function () { - return Test__Util$AgdaModeVscode.restoreFile(Test__Util$AgdaModeVscode.Path.asset("CaseSplit2.agda"), fileContent); - }); it("should have more goals after splitting", (async function () { - var context = await Test__Util$AgdaModeVscode.Agda.make(undefined, "CaseSplit2.agda"); - var result = await Test__Util$AgdaModeVscode.Agda.load(context); - var match = await Test__Util$AgdaModeVscode.Agda.$$case([ + var ctx = await Test__Util$AgdaModeVscode.AgdaMode.make(undefined, "CaseSplit2.agda"); + var state = await Test__Util$AgdaModeVscode.AgdaMode.load(ctx); + var state$1 = await Test__Util$AgdaModeVscode.AgdaMode.$$case(ctx, [ new Vscode.Position(7, 16), "x" - ], result); - return Curry._3(Assert.deepEqual, match[1].goals.length, 10, undefined); + ], state); + return Curry._3(Assert.deepEqual, state$1.goals.length, 10, undefined); })); })); diff --git a/lib/js/test/tests/Test__EditorIM.bs.js b/lib/js/test/tests/Test__EditorIM.bs.js index ab4dd0da..57c0b98b 100644 --- a/lib/js/test/tests/Test__EditorIM.bs.js +++ b/lib/js/test/tests/Test__EditorIM.bs.js @@ -5,7 +5,6 @@ var Curry = require("rescript/lib/js/curry.js"); var Js_exn = require("rescript/lib/js/js_exn.js"); var Assert = require("assert"); var Vscode = require("vscode"); -var Js_string = require("rescript/lib/js/js_string.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); var Core__Option = require("@rescript/core/lib/js/src/Core__Option.bs.js"); var IM$AgdaModeVscode = require("../../src/InputMethod/IM.bs.js"); @@ -756,9 +755,8 @@ describe("Input Method (Editor)", (function () { })); })); describe("Multiple cursors at once", (function () { - var partial_arg = /\r\n/g; - var replaceCRLF = function (param) { - return Js_string.replaceByRe(partial_arg, "\n", param); + var replaceCRLF = function (x) { + return x.replace(/\r\n/g, "\n"); }; it("should work just fine (𝕟)", (async function () { var positions = [ @@ -811,7 +809,7 @@ describe("Input Method (Editor)", (function () { "UpdateView", "RewriteApplied" ], log$1, undefined); - Curry._3(Assert.equal, "♭\n♭\n♭\n♭", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document)), undefined); + Curry._3(Assert.equal, "♭\n♭\n♭\n♭", replaceCRLF(Editor$AgdaModeVscode.$$Text.getAll($$document)), undefined); var log$2 = await insertChar(setup$1, "n"); Curry._3(Assert.deepEqual, [ { @@ -851,7 +849,7 @@ describe("Input Method (Editor)", (function () { "Deactivate", "RewriteApplied" ], log$2, undefined); - return Curry._3(Assert.equal, "𝕟\n𝕟\n𝕟\n𝕟", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document)), undefined); + return Curry._3(Assert.equal, "𝕟\n𝕟\n𝕟\n𝕟", replaceCRLF(Editor$AgdaModeVscode.$$Text.getAll($$document)), undefined); })); it("should work just fine (∧)", (async function () { var positions = [ @@ -875,7 +873,7 @@ describe("Input Method (Editor)", (function () { "UpdateView", "RewriteApplied" ], log$1, undefined); - Curry._3(Assert.equal, "a123\n1a23\n12a3\n123a", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document)), undefined); + Curry._3(Assert.equal, "a123\n1a23\n12a3\n123a", replaceCRLF(Editor$AgdaModeVscode.$$Text.getAll($$document)), undefined); var log$2 = await insertChar(setup$1, "n"); Curry._3(Assert.deepEqual, [ { @@ -886,7 +884,7 @@ describe("Input Method (Editor)", (function () { "UpdateView", "RewriteApplied" ], log$2, undefined); - Curry._3(Assert.equal, "an123\n1an23\n12an3\n123an", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document)), undefined); + Curry._3(Assert.equal, "an123\n1an23\n12an3\n123an", replaceCRLF(Editor$AgdaModeVscode.$$Text.getAll($$document)), undefined); var log$3 = await insertChar(setup$1, "d"); Curry._3(Assert.deepEqual, [ { @@ -926,7 +924,7 @@ describe("Input Method (Editor)", (function () { "UpdateView", "RewriteApplied" ], log$3, undefined); - return Curry._3(Assert.equal, "∧123\n1∧23\n12∧3\n123∧", Curry._1(replaceCRLF, Editor$AgdaModeVscode.$$Text.getAll($$document)), undefined); + return Curry._3(Assert.equal, "∧123\n1∧23\n12∧3\n123∧", replaceCRLF(Editor$AgdaModeVscode.$$Text.getAll($$document)), undefined); })); })); })); diff --git a/lib/js/test/tests/Test__Tokens.bs.js b/lib/js/test/tests/Test__Tokens.bs.js index 0b4695e8..efbe9ae3 100644 --- a/lib/js/test/tests/Test__Tokens.bs.js +++ b/lib/js/test/tests/Test__Tokens.bs.js @@ -3,29 +3,27 @@ var Curry = require("rescript/lib/js/curry.js"); var Assert = require("assert"); -var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Editor$AgdaModeVscode = require("../../src/Editor.bs.js"); var Tokens$AgdaModeVscode = require("../../src/Tokens.bs.js"); var Test__Util$AgdaModeVscode = require("./Test__Util.bs.js"); describe("Tokens", (function () { this.timeout(10000); - Test__Util$AgdaModeVscode.Agda.make(undefined, "GotoDefinition.agda"); describe("GotoDefinition.agda", (function () { it("should produce 28 tokens", (async function () { - var context = await Test__Util$AgdaModeVscode.Agda.make(undefined, "GotoDefinition.agda"); - var match = await Test__Util$AgdaModeVscode.Agda.load(context); - var tokens = Belt_Array.map(Tokens$AgdaModeVscode.toArray(match[1].tokens), (function (param) { - return Editor$AgdaModeVscode.$$Range.toString(param[1]) + " " + Tokens$AgdaModeVscode.Token.toString(param[0]); - })); + var ctx = await Test__Util$AgdaModeVscode.AgdaMode.make(undefined, "GotoDefinition.agda"); + var state = await Test__Util$AgdaModeVscode.AgdaMode.load(ctx); + var tokens = Tokens$AgdaModeVscode.toArray(state.tokens).map(function (param) { + return Editor$AgdaModeVscode.$$Range.toString(param[1]) + " " + Tokens$AgdaModeVscode.Token.toString(param[0]); + }); return Curry._3(Assert.deepEqual, 28, tokens.length, undefined); })); it("should produce correct tokens", (async function () { - var context = await Test__Util$AgdaModeVscode.Agda.make(undefined, "GotoDefinition.agda"); - var match = await Test__Util$AgdaModeVscode.Agda.load(context); - var tokens = Belt_Array.map(Tokens$AgdaModeVscode.toArray(match[1].tokens), (function (param) { - return Editor$AgdaModeVscode.$$Range.toString(param[1]) + " " + Tokens$AgdaModeVscode.Token.toString(param[0]); - })); + var ctx = await Test__Util$AgdaModeVscode.AgdaMode.make(undefined, "GotoDefinition.agda"); + var state = await Test__Util$AgdaModeVscode.AgdaMode.load(ctx); + var tokens = Tokens$AgdaModeVscode.toArray(state.tokens).map(function (param) { + return Editor$AgdaModeVscode.$$Range.toString(param[1]) + " " + Tokens$AgdaModeVscode.Token.toString(param[0]); + }); return Curry._3(Assert.deepEqual, [ "0:0-6 Token (0, 6) [Keyword]", "0:7-21 Token (7, 21) [Module] [src: 1]", diff --git a/lib/js/test/tests/Test__Util.bs.js b/lib/js/test/tests/Test__Util.bs.js index e987d68f..7eb44bfb 100644 --- a/lib/js/test/tests/Test__Util.bs.js +++ b/lib/js/test/tests/Test__Util.bs.js @@ -367,10 +367,7 @@ async function load(self) { if (match$1.TAG === "Ok") { await match[0]; disposable(); - return [ - self, - match$1._0 - ]; + return match$1._0; } var match$2 = Connection__Error$AgdaModeVscode.toString(match$1._0); throw { @@ -386,21 +383,24 @@ async function load(self) { }; } -async function $$case(cursorAndPayload, param) { - var self = param[0]; +async function $$case(self, cursorAndPayload, state) { var editor = await Vscode.window.showTextDocument(Vscode.Uri.file(self.filepath), undefined); if (cursorAndPayload !== undefined) { var cursor = cursorAndPayload[0]; - await Editor$AgdaModeVscode.$$Text.insert(param[1].document, cursor, cursorAndPayload[1]); + var succeed = await Editor$AgdaModeVscode.$$Text.insert(state.document, cursor, cursorAndPayload[1]); + if (!succeed) { + throw { + RE_EXN_ID: "Failure", + _1: "Failed to insert text", + Error: new Error() + }; + } Editor$AgdaModeVscode.Cursor.set(editor, cursor); } var match = await Vscode.commands.executeCommand("agda-mode.case"); if (match !== undefined) { if (match.TAG === "Ok") { - return [ - self, - match._0 - ]; + return match._0; } var match$1 = Connection__Error$AgdaModeVscode.toString(match._0); throw { @@ -416,14 +416,13 @@ async function $$case(cursorAndPayload, param) { }; } -async function refine(cursorAndPayload, param) { - var self = param[0]; +async function refine(self, cursorAndPayload, state) { var editor = await Vscode.window.showTextDocument(Vscode.Uri.file(self.filepath), undefined); if (cursorAndPayload !== undefined) { var payload = cursorAndPayload[1]; var cursor = cursorAndPayload[0]; if (payload !== undefined) { - await Editor$AgdaModeVscode.$$Text.insert(param[1].document, cursor, payload); + await Editor$AgdaModeVscode.$$Text.insert(state.document, cursor, payload); Editor$AgdaModeVscode.Cursor.set(editor, cursor); } else { Editor$AgdaModeVscode.Cursor.set(editor, cursor); @@ -432,10 +431,7 @@ async function refine(cursorAndPayload, param) { var match = await Vscode.commands.executeCommand("agda-mode.refine"); if (match !== undefined) { if (match.TAG === "Ok") { - return [ - self, - match._0 - ]; + return match._0; } var match$1 = Connection__Error$AgdaModeVscode.toString(match._0); throw { @@ -451,7 +447,7 @@ async function refine(cursorAndPayload, param) { }; } -var Agda = { +var AgdaMode = { $$Error: $$Error, exists: exists, make: make, @@ -470,8 +466,16 @@ async function restoreFile(filepath, $$var) { var $$document = editor.document; var lineCount = $$document.lineCount; var replaceRange = new Vscode.Range(new Vscode.Position(0, 0), new Vscode.Position(lineCount, 0)); - await Editor$AgdaModeVscode.$$Text.replace($$document, replaceRange, $$var.contents); - await $$document.save(); + var succeed = await Editor$AgdaModeVscode.$$Text.replace($$document, replaceRange, $$var.contents); + if (succeed) { + await $$document.save(); + return ; + } + throw { + RE_EXN_ID: "Failure", + _1: "Failed to restore the file", + Error: new Error() + }; } function unwrap(x) { @@ -505,7 +509,7 @@ exports.wait = wait; exports.Strings = Strings; exports.Golden = Golden; exports.onUnix = onUnix; -exports.Agda = Agda; +exports.AgdaMode = AgdaMode; exports.readFile = readFile$1; exports.restoreFile = restoreFile; exports.R = R; diff --git a/src/Editor.res b/src/Editor.res index 5ac711ab..cc1b26a5 100644 --- a/src/Editor.res +++ b/src/Editor.res @@ -183,13 +183,13 @@ module Text = { ) Workspace.applyEdit(workspaceEdit) } - let batchReplace' = (editor, replacements) => { - editor->TextEditor.edit(editBuilder => { - replacements->Array.forEach(((range, text)) => - editBuilder->TextEditorEdit.replaceAtRange(range, text) - ) - }, None) - } + // let batchReplace' = (editor, replacements) => { + // editor->TextEditor.edit(editBuilder => { + // replacements->Array.forEach(((range, text)) => + // editBuilder->TextEditorEdit.replaceAtRange(range, text) + // ) + // }, None) + // } let insert = (document, point, text) => { let workspaceEdit = WorkspaceEdit.make() @@ -202,11 +202,11 @@ module Text = { workspaceEdit->WorkspaceEdit.set(document->TextDocument.uri, textEdits) Workspace.applyEdit(workspaceEdit) } - let batchInsert' = (editor, points, text) => { - editor->TextEditor.edit(editBuilder => { - points->Array.forEach(point => editBuilder->TextEditorEdit.insert(point, text)) - }, None) - } + // let batchInsert' = (editor, points, text) => { + // editor->TextEditor.edit(editBuilder => { + // points->Array.forEach(point => editBuilder->TextEditorEdit.insert(point, text)) + // }, None) + // } let delete = (document, range) => { let workspaceEdit = WorkspaceEdit.make() workspaceEdit->WorkspaceEdit.delete(document->TextDocument.uri, range, None) @@ -264,7 +264,7 @@ module Provider = { range, )) => { let markdownStrings = - strings->Belt.Array.map(string => MarkdownString.make(string, true)) + strings->Array.map(string => MarkdownString.make(string, true)) Hover.makeWithRange(markdownStrings, range) }), } diff --git a/src/Goal.res b/src/Goal.res index 83c07bb0..04471b0e 100644 --- a/src/Goal.res +++ b/src/Goal.res @@ -69,7 +69,7 @@ module Module: Module = { (range, text) }) - let _ = await Editor.Text.batchReplace'(editor, replacements) + let _ = await Editor.Text.batchReplace(document, replacements) diffs->Array.map(diff => { // decorate the hole let (decorationBackground, decorationIndex) = Highlighting.decorateHole( diff --git a/src/State/State__Goal.res b/src/State/State__Goal.res index a03ac0f1..0df179c7 100644 --- a/src/State/State__Goal.res +++ b/src/State/State__Goal.res @@ -332,13 +332,12 @@ module Module: Module = { Js.Array.joinWith("\n" ++ (Js.String.repeat(indentWidth - 2, " ") ++ "; "), lines) } let rewriteRange = Editor.Range.fromInterval(state.document, rewriteInterval) - switch await Editor.Text.replace(state.document, rewriteRange, rewriteText) { - | true => + if await Editor.Text.replace(state.document, rewriteRange, rewriteText) { // destroy the old goal Goal.destroyDecoration(goal) // locate the first new goal and place the cursor there placeCursorAtFirstNewGoal(state, rewriteText, rewriteRange) - | false => + } else { await State.View.Panel.display( state, Error("Goal-related Error"), diff --git a/test/tests/Test__CaseSplit.res b/test/tests/Test__CaseSplit.res index 78b39901..ed0e30ba 100644 --- a/test/tests/Test__CaseSplit.res +++ b/test/tests/Test__CaseSplit.res @@ -42,12 +42,13 @@ describe_skip("Integration test", () => { let fileContent = ref("") Async.before(() => readFile(Path.asset("CaseSplit2.agda"), fileContent)) - Async.after(() => restoreFile(Path.asset("CaseSplit2.agda"), fileContent)) + // Async.after(() => restoreFile(Path.asset("CaseSplit2.agda"), fileContent)) Async.it("should have more goals after splitting", async () => { - let context = await Agda.make("CaseSplit2.agda") - let result = await Agda.load(context) - let (_, state) = await Agda.case(Some(VSCode.Position.make(7, 16), "x"), result) + let ctx = await AgdaMode.make("CaseSplit2.agda") + let state = await ctx->AgdaMode.load + let state = await ctx->AgdaMode.case(Some(VSCode.Position.make(7, 16), "x"), state) Assert.deepEqual(Array.length(state.goals), 10) + }) }) diff --git a/test/tests/Test__EditorIM.res b/test/tests/Test__EditorIM.res index cca5f125..22c4cc15 100644 --- a/test/tests/Test__EditorIM.res +++ b/test/tests/Test__EditorIM.res @@ -30,7 +30,7 @@ module IM = { let promise = wait(setup) let positions = positions->Option.getOr(Editor.Cursor.getMany(setup.editor)) Editor.Cursor.setMany(setup.editor, positions) - await VSCode.Commands.executeCommand0("agda-mode.input-symbol[Activate]") + let _ = await VSCode.Commands.executeCommand0("agda-mode.input-symbol[Activate]") await promise } @@ -354,7 +354,7 @@ describe("Input Method (Editor)", () => { }) describe("Multiple cursors at once", () => { - let replaceCRLF = Js.String.replaceByRe(%re("/\r\n/g"), "\n") // RegEx updated to v10.1.4 + let replaceCRLF = x => x->String.replaceRegExp(%re("/\r\n/g"), "\n") // RegEx updated to v10.1.4 Async.it( `should work just fine (𝕟)`, diff --git a/test/tests/Test__Tokens.res b/test/tests/Test__Tokens.res index a4a4a67e..fca5b7b3 100644 --- a/test/tests/Test__Tokens.res +++ b/test/tests/Test__Tokens.res @@ -3,18 +3,16 @@ open Test__Util describe("Tokens", () => { This.timeout(10000) - let context = Agda.make("GotoDefinition.agda") - describe("GotoDefinition.agda", () => { Async.it( "should produce 28 tokens", async () => { - let context = await Agda.make("GotoDefinition.agda") - let (_, state) = await Agda.load(context) + let ctx = await AgdaMode.make("GotoDefinition.agda") + let state = await ctx->AgdaMode.load let tokens = state.tokens ->Tokens.toArray - ->Belt.Array.map( + ->Array.map( ((token, range)) => Editor.Range.toString(range) ++ " " ++ Tokens.Token.toString(token), ) Assert.deepEqual(28, Array.length(tokens)) @@ -24,12 +22,12 @@ describe("Tokens", () => { Async.it( "should produce correct tokens", async () => { - let context = await Agda.make("GotoDefinition.agda") - let (_, state) = await Agda.load(context) + let ctx = await AgdaMode.make("GotoDefinition.agda") + let state = await ctx->AgdaMode.load let tokens = state.tokens ->Tokens.toArray - ->Belt.Array.map( + ->Array.map( ((token, range)) => Editor.Range.toString(range) ++ " " ++ Tokens.Token.toString(token), ) Assert.deepEqual( diff --git a/test/tests/Test__Util.res b/test/tests/Test__Util.res index 4af50a23..cdf76b9b 100644 --- a/test/tests/Test__Util.res +++ b/test/tests/Test__Util.res @@ -26,6 +26,7 @@ let runner: (unit => unit) => promise> = %raw(` function(f) { return $$Promise.resolved(tmp); }`) +// Paths of the extension and assets module Path = { let toAbsolute = filepath => NodeJs.Path.resolve([NodeJs.Global.dirname, filepath]) @@ -241,8 +242,7 @@ let onUnix = switch N.OS.type_() { | _ => true } -// module for checking if Agda is present in PATH -module Agda = { +module AgdaMode = { module Error = { type t = | LanguageServerMuleErrors(array) @@ -270,7 +270,6 @@ module Agda = { } type t = { - // ready: Promise.t, filepath: string, channels: State__Type.channels, } @@ -307,35 +306,35 @@ module Agda = { | Some(Ok(state)) => await promise disposable() // stop listening to responses - (self, state) + state | Some(Error(error)) => let (header, body) = Connection.Error.toString(error) raise(Failure(header ++ "\n" ++ body)) } } - let case = async (cursorAndPayload, (self, state: State__Type.t)) => { + let case = async (self, cursorAndPayload, state: State__Type.t) => { let editor = await openFile(self.filepath) switch cursorAndPayload { | None => () | Some(cursor, payload) => - let _ = await Editor.Text.insert(state.document, cursor, payload) + let succeed = await Editor.Text.insert(state.document, cursor, payload) + if !succeed { + raise(Failure("Failed to insert text")) + } Editor.Cursor.set(editor, cursor) } switch await executeCommand("agda-mode.case") { | None => raise(Failure("Cannot case split " ++ self.filepath)) - | Some(Ok(state)) => (self, state) + | Some(Ok(state)) => state | Some(Error(error)) => let (header, body) = Connection.Error.toString(error) raise(Failure(header ++ "\n" ++ body)) } } - let refine = async (cursorAndPayload, (self, state: State__Type.t)): ( - t, - AgdaModeVscode.State.t, - ) => { + let refine = async (self, cursorAndPayload, state: State__Type.t): AgdaModeVscode.State.t => { let editor = await openFile(self.filepath) switch cursorAndPayload { | None => () @@ -346,7 +345,7 @@ module Agda = { } switch await executeCommand("agda-mode.refine") { | None => raise(Failure("Cannot case refine " ++ self.filepath)) - | Some(Ok(state)) => (self, state) + | Some(Ok(state)) => state | Some(Error(error)) => let (header, body) = Connection.Error.toString(error) raise(Failure(header ++ "\n" ++ body)) @@ -368,8 +367,12 @@ let restoreFile = async (filepath, var) => { VSCode.Position.make(0, 0), VSCode.Position.make(lineCount, 0), ) - let _ = await Editor.Text.replace(document, replaceRange, var.contents) - let _ = await VSCode.TextDocument.save(document) + let succeed = await Editor.Text.replace(document, replaceRange, var.contents) + if succeed { + let _ = await VSCode.TextDocument.save(document) + } else { + raise(Failure("Failed to restore the file")) + } } module R = { From 85179a630187aa399203f3bc5b6b0cb1f55f5515 Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Thu, 24 Oct 2024 15:19:01 +0800 Subject: [PATCH 091/109] [ refactor ] Make the command handler handle error on site instead of passing it out --- lib/js/src/Main.bs.js | 14 +- lib/js/src/State.bs.js | 26 +- lib/js/src/State/State__Command.bs.js | 1282 ++++++++++-------------- lib/js/src/State/State__Response.bs.js | 220 ++-- src/Main.res | 6 +- src/State.res | 19 +- src/State/State__Command.res | 119 +-- src/State/State__Response.res | 32 +- src/State/State__Type.res | 2 +- src/State/State__View.res | 4 +- 10 files changed, 644 insertions(+), 1080 deletions(-) diff --git a/lib/js/src/Main.bs.js b/lib/js/src/Main.bs.js index 0a93d1b5..de753463 100644 --- a/lib/js/src/Main.bs.js +++ b/lib/js/src/Main.bs.js @@ -245,23 +245,15 @@ function activateWithoutContext(subscriptions, extensionPath, globalStoragePath) } var state$1 = Registry$AgdaModeVscode.get(fileName); - if (state$1 === undefined) { - return ; - } - var error = await State__Command$AgdaModeVscode.dispatchCommand(state$1, command); - if (error.TAG === "Ok") { + if (state$1 !== undefined) { + await State__Command$AgdaModeVscode.dispatchCommand(state$1, command); return { TAG: "Ok", _0: state$1, [Symbol.for("name")]: "Ok" }; - } else { - return { - TAG: "Error", - _0: error._0, - [Symbol.for("name")]: "Error" - }; } + })); subscribe(registerDocumentSemanticTokensProvider()); return channels; diff --git a/lib/js/src/State.bs.js b/lib/js/src/State.bs.js index ec1490c4..bf2c2df1 100644 --- a/lib/js/src/State.bs.js +++ b/lib/js/src/State.bs.js @@ -31,34 +31,20 @@ function onDownload(state, $$event) { function sendRequest(state, handleResponse, request) { return State__Type$AgdaModeVscode.RequestQueue.push(state.agdaRequestQueue, (function (request) { var onResponse = async function (result) { - if (result.TAG !== "Ok") { - return await State__View$AgdaModeVscode.Panel.displayConnectionError(state, result._0); - } - var error = await handleResponse(result._0); - if (error.TAG === "Ok") { - return ; + if (result.TAG === "Ok") { + return await handleResponse(result._0); } else { - return await State__View$AgdaModeVscode.Panel.displayConnectionError(state, error._0); + return await State__View$AgdaModeVscode.Panel.displayConnectionError(state, result._0); } }; return Connection$AgdaModeVscode.sendRequest(state.globalStoragePath, (function (extra) { return onDownload(state, extra); }), Config$AgdaModeVscode.Connection.getUseAgdaLanguageServer(), state.document, request, onResponse).then(async function (result) { if (result.TAG === "Ok") { - await State__View$AgdaModeVscode.Panel.displayConnectionStatus(state, result._0); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return await State__View$AgdaModeVscode.Panel.displayConnectionStatus(state, result._0); + } else { + return await State__View$AgdaModeVscode.Panel.displayConnectionError(state, result._0); } - var error = result._0; - await State__View$AgdaModeVscode.Panel.displayConnectionError(state, error); - return { - TAG: "Error", - _0: error, - [Symbol.for("name")]: "Error" - }; }); }), request); } diff --git a/lib/js/src/State/State__Command.bs.js b/lib/js/src/State/State__Command.bs.js index b3e5b36a..f1f5a7a5 100644 --- a/lib/js/src/State/State__Command.bs.js +++ b/lib/js/src/State/State__Command.bs.js @@ -54,11 +54,7 @@ async function dispatchCommand(state, command) { await Vscode.window.showTextDocument(state.document, options); return await sendAgdaRequest("Load"); case "Quit" : - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return ; case "Restart" : state.runningInfoLog = []; return await dispatchCommand(state, "Load"); @@ -66,12 +62,7 @@ async function dispatchCommand(state, command) { Highlighting$AgdaModeVscode.redecorate(state.highlighting, state.editor); State__View$AgdaModeVscode.Panel.restore(state); State__Goal$AgdaModeVscode.redecorate(state); - await State__View$AgdaModeVscode.DebugBuffer.restore(state); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return await State__View$AgdaModeVscode.DebugBuffer.restore(state); case "Compile" : return await sendAgdaRequest("Compile"); case "ToggleDisplayOfImplicitArguments" : @@ -81,64 +72,45 @@ async function dispatchCommand(state, command) { case "ShowConstraints" : return await sendAgdaRequest("ShowConstraints"); case "NextGoal" : - State__Goal$AgdaModeVscode.next(state); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return State__Goal$AgdaModeVscode.next(state); case "PreviousGoal" : - State__Goal$AgdaModeVscode.previous(state); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return State__Goal$AgdaModeVscode.previous(state); case "Give" : var match = State__Goal$AgdaModeVscode.pointed(state); - if (match !== undefined) { - var goal = match[0]; - if (match[1] !== "") { - return await sendAgdaRequest({ - TAG: "Give", - _0: goal, - [Symbol.for("name")]: "Give" - }); - } - await State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: "expression to give:", - value: undefined - }, (async function (expr) { - if (expr === "") { - return await sendAgdaRequest({ - TAG: "Give", - _0: goal, - [Symbol.for("name")]: "Give" - }); - } else { - await State__Goal$AgdaModeVscode.modify(state, goal, (function (param) { - return expr; - })); - return await sendAgdaRequest({ - TAG: "Give", - _0: goal, - [Symbol.for("name")]: "Give" - }); - } - })); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + if (match === undefined) { + return await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); + } + var goal = match[0]; + if (match[1] === "") { + return await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: "expression to give:", + value: undefined + }, (async function (expr) { + if (expr === "") { + return await sendAgdaRequest({ + TAG: "Give", + _0: goal, + [Symbol.for("name")]: "Give" + }); + } else { + await State__Goal$AgdaModeVscode.modify(state, goal, (function (param) { + return expr; + })); + return await sendAgdaRequest({ + TAG: "Give", + _0: goal, + [Symbol.for("name")]: "Give" + }); + } + })); + } else { + return await sendAgdaRequest({ + TAG: "Give", + _0: goal, + [Symbol.for("name")]: "Give" + }); } - await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; case "Refine" : var match$1 = State__Goal$AgdaModeVscode.pointed(state); if (match$1 !== undefined) { @@ -148,12 +120,7 @@ async function dispatchCommand(state, command) { [Symbol.for("name")]: "Refine" }); } else { - await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); } case "Auto" : var match$2 = State__Goal$AgdaModeVscode.pointed(state); @@ -164,188 +131,135 @@ async function dispatchCommand(state, command) { [Symbol.for("name")]: "Auto" }); } else { - await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); } case "Case" : var match$3 = State__Goal$AgdaModeVscode.pointed(state); - if (match$3 !== undefined) { - var goal$1 = match$3[0]; - if (match$3[1] !== "") { - return await sendAgdaRequest({ - TAG: "Case", - _0: goal$1, - [Symbol.for("name")]: "Case" - }); - } - await State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: "Please specify which variable you wish to split", - placeholder: "variable to case split:", - value: undefined - }, (async function (expr) { - if (expr === "") { - return await sendAgdaRequest({ - TAG: "Case", - _0: goal$1, - [Symbol.for("name")]: "Case" - }); - } else { - await State__Goal$AgdaModeVscode.modify(state, goal$1, (function (param) { - return expr; - })); - return await sendAgdaRequest({ - TAG: "Case", - _0: goal$1, - [Symbol.for("name")]: "Case" - }); - } - })); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + if (match$3 === undefined) { + return await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); + } + var goal$1 = match$3[0]; + if (match$3[1] === "") { + return await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: "Please specify which variable you wish to split", + placeholder: "variable to case split:", + value: undefined + }, (async function (expr) { + if (expr === "") { + return await sendAgdaRequest({ + TAG: "Case", + _0: goal$1, + [Symbol.for("name")]: "Case" + }); + } else { + await State__Goal$AgdaModeVscode.modify(state, goal$1, (function (param) { + return expr; + })); + return await sendAgdaRequest({ + TAG: "Case", + _0: goal$1, + [Symbol.for("name")]: "Case" + }); + } + })); + } else { + return await sendAgdaRequest({ + TAG: "Case", + _0: goal$1, + [Symbol.for("name")]: "Case" + }); } - await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; case "WhyInScope" : var placeholder = "name:"; var match$4 = State__Goal$AgdaModeVscode.pointed(state); - if (match$4 !== undefined) { - var expr = match$4[1]; - var goal$2 = match$4[0]; - if (expr !== "") { - return await sendAgdaRequest({ - TAG: "WhyInScope", - _0: expr, - _1: goal$2, - [Symbol.for("name")]: "WhyInScope" - }); - } - await State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: placeholder, - value: undefined - }, (function (expr) { - return sendAgdaRequest({ - TAG: "WhyInScope", - _0: expr, - _1: goal$2, - [Symbol.for("name")]: "WhyInScope" - }); - })); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + if (match$4 === undefined) { + return await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: placeholder, + value: undefined + }, (function (expr) { + return sendAgdaRequest({ + TAG: "WhyInScopeGlobal", + _0: expr, + [Symbol.for("name")]: "WhyInScopeGlobal" + }); + })); + } + var expr = match$4[1]; + var goal$2 = match$4[0]; + if (expr === "") { + return await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: placeholder, + value: undefined + }, (function (expr) { + return sendAgdaRequest({ + TAG: "WhyInScope", + _0: expr, + _1: goal$2, + [Symbol.for("name")]: "WhyInScope" + }); + })); + } else { + return await sendAgdaRequest({ + TAG: "WhyInScope", + _0: expr, + _1: goal$2, + [Symbol.for("name")]: "WhyInScope" + }); } - await State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: placeholder, - value: undefined - }, (function (expr) { - return sendAgdaRequest({ - TAG: "WhyInScopeGlobal", - _0: expr, - [Symbol.for("name")]: "WhyInScopeGlobal" - }); - })); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; case "SwitchAgdaVersion" : var oldAgdaVersion = Config$AgdaModeVscode.Connection.getAgdaVersion(); - await State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: undefined, - value: oldAgdaVersion - }, (async function (expr) { - var oldAgdaPath = Config$AgdaModeVscode.Connection.getAgdaPath(); - var newAgdaVersion = expr.trim(); - await Config$AgdaModeVscode.Connection.setAgdaPath(""); - await Config$AgdaModeVscode.Connection.setAgdaVersion(newAgdaVersion); - await State__View$AgdaModeVscode.Panel.display(state, { - TAG: "Plain", - _0: "Switching to '" + newAgdaVersion + "'", - [Symbol.for("name")]: "Plain" - }, []); - await Connection$AgdaModeVscode.stop(); - var error = await Connection$AgdaModeVscode.start(state.globalStoragePath, false, (function (extra) { - return State$AgdaModeVscode.onDownload(state, extra); - })); - if (error.TAG === "Ok") { - var match = error._0; - if (match.TAG === "Emacs") { - var version = match._0; - await State__View$AgdaModeVscode.Panel.displayStatus(state, "Emacs v" + version); - await State__View$AgdaModeVscode.Panel.display(state, { - TAG: "Success", - _0: "Switched to version '" + version + "'", - [Symbol.for("name")]: "Success" - }, [Item$AgdaModeVscode.plainText("Found '" + newAgdaVersion + "' at: " + match._1)]); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - } - await State__View$AgdaModeVscode.Panel.display(state, { - TAG: "Success", - _0: "Panic, Switched to LSP server '" + match._0 + "'", - [Symbol.for("name")]: "Success" - }, [Item$AgdaModeVscode.plainText("Should have switched to an Agda executable, please file an issue")]); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - } - var match$1 = Connection__Error$AgdaModeVscode.toString(error._0); - var header = { - TAG: "Error", - _0: "Cannot switch Agda version '" + newAgdaVersion + "' : " + match$1[0], - [Symbol.for("name")]: "Error" - }; - var body = [Item$AgdaModeVscode.plainText(match$1[1] + "\n\nSwitching back to " + oldAgdaPath)]; - await Config$AgdaModeVscode.Connection.setAgdaPath(oldAgdaPath); - await State__View$AgdaModeVscode.Panel.display(state, header, body); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" + return await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: undefined, + value: oldAgdaVersion + }, (async function (expr) { + var oldAgdaPath = Config$AgdaModeVscode.Connection.getAgdaPath(); + var newAgdaVersion = expr.trim(); + await Config$AgdaModeVscode.Connection.setAgdaPath(""); + await Config$AgdaModeVscode.Connection.setAgdaVersion(newAgdaVersion); + await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Plain", + _0: "Switching to '" + newAgdaVersion + "'", + [Symbol.for("name")]: "Plain" + }, []); + await Connection$AgdaModeVscode.stop(); + var error = await Connection$AgdaModeVscode.start(state.globalStoragePath, false, (function (extra) { + return State$AgdaModeVscode.onDownload(state, extra); + })); + if (error.TAG === "Ok") { + var match = error._0; + if (match.TAG !== "Emacs") { + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Success", + _0: "Panic, Switched to LSP server '" + match._0 + "'", + [Symbol.for("name")]: "Success" + }, [Item$AgdaModeVscode.plainText("Should have switched to an Agda executable, please file an issue")]); + } + var version = match._0; + await State__View$AgdaModeVscode.Panel.displayStatus(state, "Emacs v" + version); + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Success", + _0: "Switched to version '" + version + "'", + [Symbol.for("name")]: "Success" + }, [Item$AgdaModeVscode.plainText("Found '" + newAgdaVersion + "' at: " + match._1)]); + } + var match$1 = Connection__Error$AgdaModeVscode.toString(error._0); + var header = { + TAG: "Error", + _0: "Cannot switch Agda version '" + newAgdaVersion + "' : " + match$1[0], + [Symbol.for("name")]: "Error" }; - })); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + var body = [Item$AgdaModeVscode.plainText(match$1[1] + "\n\nSwitching back to " + oldAgdaPath)]; + await Config$AgdaModeVscode.Connection.setAgdaPath(oldAgdaPath); + return await State__View$AgdaModeVscode.Panel.display(state, header, body); + })); case "Escape" : if (IM$AgdaModeVscode.isActivated(state.editorIM) || IM$AgdaModeVscode.isActivated(state.promptIM)) { - await State__InputMethod$AgdaModeVscode.deactivate(state); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return await State__InputMethod$AgdaModeVscode.deactivate(state); } else { - await State__View$AgdaModeVscode.Panel.interruptPrompt(state); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return await State__View$AgdaModeVscode.Panel.interruptPrompt(state); } case "LookupSymbol" : var match$5 = Util$AgdaModeVscode.Promise_.pending(); @@ -362,11 +276,7 @@ async function dispatchCommand(state, command) { value: undefined }, (function (input) { resolve(input.trim()); - return Promise.resolve({ - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }); + return Promise.resolve(); })); } else { resolve(selectedText); @@ -374,33 +284,23 @@ async function dispatchCommand(state, command) { var input = await match$5[0]; var sequences = Belt_Option.getWithDefault(Translator$AgdaModeVscode.lookup(input), []); if (sequences.length === 0) { - await State__View$AgdaModeVscode.Panel.display(state, { - TAG: "Warning", - _0: "No Input Sequences Found for \"" + selectedText + "\"", - [Symbol.for("name")]: "Warning" - }, []); + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Warning", + _0: "No Input Sequences Found for \"" + selectedText + "\"", + [Symbol.for("name")]: "Warning" + }, []); } else { - await State__View$AgdaModeVscode.Panel.display(state, { - TAG: "Success", - _0: String(sequences.length) + " Input Sequences Found for \"" + selectedText + "\"", - [Symbol.for("name")]: "Success" - }, Belt_Array.map(sequences, (function (sequence) { - return Item$AgdaModeVscode.plainText(sequence); - }))); + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Success", + _0: String(sequences.length) + " Input Sequences Found for \"" + selectedText + "\"", + [Symbol.for("name")]: "Success" + }, Belt_Array.map(sequences, (function (sequence) { + return Item$AgdaModeVscode.plainText(sequence); + }))); } - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; case "OpenDebugBuffer" : State__View$AgdaModeVscode.DebugBuffer.make(state); - await State__View$AgdaModeVscode.DebugBuffer.reveal(state); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return await State__View$AgdaModeVscode.DebugBuffer.reveal(state); } } else { @@ -430,168 +330,136 @@ async function dispatchCommand(state, command) { }); case "SearchAbout" : var normalization$1 = command._0; - await State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: "name:", - value: undefined - }, (function (expr) { - return sendAgdaRequest({ - TAG: "SearchAbout", - _0: normalization$1, - _1: expr, - [Symbol.for("name")]: "SearchAbout" - }); - })); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: "name:", + value: undefined + }, (function (expr) { + return sendAgdaRequest({ + TAG: "SearchAbout", + _0: normalization$1, + _1: expr, + [Symbol.for("name")]: "SearchAbout" + }); + })); case "ElaborateAndGive" : var normalization$2 = command._0; var match$7 = State__Goal$AgdaModeVscode.pointed(state); - if (match$7 !== undefined) { - var expr$1 = match$7[1]; - var goal$3 = match$7[0]; - if (expr$1 !== "") { - return await sendAgdaRequest({ - TAG: "ElaborateAndGive", - _0: normalization$2, - _1: expr$1, - _2: goal$3, - [Symbol.for("name")]: "ElaborateAndGive" - }); - } - await State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: "expression to elaborate and give:", - value: undefined - }, (async function (expr) { - if (expr === "") { - return await sendAgdaRequest({ - TAG: "ElaborateAndGive", - _0: normalization$2, - _1: expr, - _2: goal$3, - [Symbol.for("name")]: "ElaborateAndGive" - }); - } else { - await State__Goal$AgdaModeVscode.modify(state, goal$3, (function (param) { - return expr; - })); - return await sendAgdaRequest({ - TAG: "ElaborateAndGive", - _0: normalization$2, - _1: expr, - _2: goal$3, - [Symbol.for("name")]: "ElaborateAndGive" - }); - } - })); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + if (match$7 === undefined) { + return await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); + } + var expr$1 = match$7[1]; + var goal$3 = match$7[0]; + if (expr$1 === "") { + return await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: "expression to elaborate and give:", + value: undefined + }, (async function (expr) { + if (expr === "") { + return await sendAgdaRequest({ + TAG: "ElaborateAndGive", + _0: normalization$2, + _1: expr, + _2: goal$3, + [Symbol.for("name")]: "ElaborateAndGive" + }); + } else { + await State__Goal$AgdaModeVscode.modify(state, goal$3, (function (param) { + return expr; + })); + return await sendAgdaRequest({ + TAG: "ElaborateAndGive", + _0: normalization$2, + _1: expr, + _2: goal$3, + [Symbol.for("name")]: "ElaborateAndGive" + }); + } + })); + } else { + return await sendAgdaRequest({ + TAG: "ElaborateAndGive", + _0: normalization$2, + _1: expr$1, + _2: goal$3, + [Symbol.for("name")]: "ElaborateAndGive" + }); } - await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; case "HelperFunctionType" : var normalization$3 = command._0; var match$8 = State__Goal$AgdaModeVscode.pointed(state); - if (match$8 !== undefined) { - var expr$2 = match$8[1]; - var goal$4 = match$8[0]; - if (expr$2 !== "") { - return await sendAgdaRequest({ - TAG: "HelperFunctionType", - _0: normalization$3, - _1: expr$2, - _2: goal$4, - [Symbol.for("name")]: "HelperFunctionType" - }); - } - await State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: "expression:", - value: undefined - }, (function (expr) { - return sendAgdaRequest({ - TAG: "HelperFunctionType", - _0: normalization$3, - _1: expr, - _2: goal$4, - [Symbol.for("name")]: "HelperFunctionType" - }); - })); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + if (match$8 === undefined) { + return await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); + } + var expr$2 = match$8[1]; + var goal$4 = match$8[0]; + if (expr$2 === "") { + return await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: "expression:", + value: undefined + }, (function (expr) { + return sendAgdaRequest({ + TAG: "HelperFunctionType", + _0: normalization$3, + _1: expr, + _2: goal$4, + [Symbol.for("name")]: "HelperFunctionType" + }); + })); + } else { + return await sendAgdaRequest({ + TAG: "HelperFunctionType", + _0: normalization$3, + _1: expr$2, + _2: goal$4, + [Symbol.for("name")]: "HelperFunctionType" + }); } - await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; case "InferType" : var normalization$4 = command._0; var placeholder$1 = "expression to infer:"; var match$9 = State__Goal$AgdaModeVscode.pointed(state); - if (match$9 !== undefined) { - var expr$3 = match$9[1]; - var goal$5 = match$9[0]; - if (expr$3 !== "") { - return await sendAgdaRequest({ - TAG: "InferType", - _0: normalization$4, - _1: expr$3, - _2: goal$5, - [Symbol.for("name")]: "InferType" - }); - } - await State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: placeholder$1, - value: undefined - }, (function (expr) { - return sendAgdaRequest({ - TAG: "InferType", - _0: normalization$4, - _1: expr, - _2: goal$5, - [Symbol.for("name")]: "InferType" - }); - })); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + if (match$9 === undefined) { + return await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: placeholder$1, + value: undefined + }, (function (expr) { + return sendAgdaRequest({ + TAG: "InferTypeGlobal", + _0: normalization$4, + _1: expr, + [Symbol.for("name")]: "InferTypeGlobal" + }); + })); + } + var expr$3 = match$9[1]; + var goal$5 = match$9[0]; + if (expr$3 === "") { + return await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: placeholder$1, + value: undefined + }, (function (expr) { + return sendAgdaRequest({ + TAG: "InferType", + _0: normalization$4, + _1: expr, + _2: goal$5, + [Symbol.for("name")]: "InferType" + }); + })); + } else { + return await sendAgdaRequest({ + TAG: "InferType", + _0: normalization$4, + _1: expr$3, + _2: goal$5, + [Symbol.for("name")]: "InferType" + }); } - await State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: placeholder$1, - value: undefined - }, (function (expr) { - return sendAgdaRequest({ - TAG: "InferTypeGlobal", - _0: normalization$4, - _1: expr, - [Symbol.for("name")]: "InferTypeGlobal" - }); - })); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; case "Context" : var match$10 = State__Goal$AgdaModeVscode.pointed(state); if (match$10 !== undefined) { @@ -602,12 +470,7 @@ async function dispatchCommand(state, command) { [Symbol.for("name")]: "Context" }); } else { - await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); } case "GoalType" : var match$11 = State__Goal$AgdaModeVscode.pointed(state); @@ -619,12 +482,7 @@ async function dispatchCommand(state, command) { [Symbol.for("name")]: "GoalType" }); } else { - await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); } case "GoalTypeAndContext" : var match$12 = State__Goal$AgdaModeVscode.pointed(state); @@ -636,49 +494,52 @@ async function dispatchCommand(state, command) { [Symbol.for("name")]: "GoalTypeAndContext" }); } else { - await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); } case "EventFromView" : var $$event = command._0; if (typeof $$event !== "object") { if ($$event === "Initialized") { - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - } else { - return await State$AgdaModeVscode.destroy(state, true); + return ; } - } - switch ($$event.TAG) { - case "InputMethod" : - var $$char = $$event._0; - if ($$char.TAG === "InsertChar") { - return await dispatchCommand(state, { - TAG: "InputMethod", - _0: { - TAG: "InsertChar", - _0: $$char._0, - [Symbol.for("name")]: "InsertChar" - }, - [Symbol.for("name")]: "InputMethod" - }); - } - await State__InputMethod$AgdaModeVscode.chooseSymbol(state, $$char._0); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - case "PromptIMUpdate" : - var interval = $$event._0; - if (typeof interval !== "object") { + var error = await State$AgdaModeVscode.destroy(state, true); + if (error.TAG === "Ok") { + return ; + } + var match$13 = Connection__Error$AgdaModeVscode.toString(error._0); + var header$1 = { + TAG: "Error", + _0: "Cannot destruct the view: " + match$13[0], + [Symbol.for("name")]: "Error" + }; + var body = [Item$AgdaModeVscode.plainText(match$13[1])]; + return await State__View$AgdaModeVscode.Panel.display(state, header$1, body); + } else { + switch ($$event.TAG) { + case "InputMethod" : + var $$char = $$event._0; + if ($$char.TAG === "InsertChar") { + return await dispatchCommand(state, { + TAG: "InputMethod", + _0: { + TAG: "InsertChar", + _0: $$char._0, + [Symbol.for("name")]: "InsertChar" + }, + [Symbol.for("name")]: "InputMethod" + }); + } else { + return await State__InputMethod$AgdaModeVscode.chooseSymbol(state, $$char._0); + } + case "PromptIMUpdate" : + var interval = $$event._0; + if (typeof interval === "object") { + if (interval.TAG === "MouseSelect") { + return await State__InputMethod$AgdaModeVscode.select(state, [interval._0]); + } else { + return await State__InputMethod$AgdaModeVscode.keyUpdatePromptIM(state, interval._0); + } + } switch (interval) { case "BrowseUp" : return await dispatchCommand(state, { @@ -706,326 +567,223 @@ async function dispatchCommand(state, command) { }); case "Escape" : if (IM$AgdaModeVscode.isActivated(state.editorIM) || IM$AgdaModeVscode.isActivated(state.promptIM)) { - await State__InputMethod$AgdaModeVscode.deactivate(state); + return await State__InputMethod$AgdaModeVscode.deactivate(state); } else { - await State__View$AgdaModeVscode.Panel.interruptPrompt(state); + return await State__View$AgdaModeVscode.Panel.interruptPrompt(state); } - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; } - } else { - if (interval.TAG === "MouseSelect") { - await State__InputMethod$AgdaModeVscode.select(state, [interval._0]); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - } - await State__InputMethod$AgdaModeVscode.keyUpdatePromptIM(state, interval._0); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - } - case "JumpToTarget" : - var link = $$event._0; - Editor$AgdaModeVscode.focus(state.document); - var path = Parser$AgdaModeVscode.filepath(state.document.fileName); - if (link.TAG === "SrcLoc") { - var match$13 = link._0; - if (typeof match$13 !== "object") { - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - } - var fileName = match$13._0; - if (fileName === undefined) { - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - } - var fileName$1 = Parser$AgdaModeVscode.filepath(fileName); - var removeRoot = function (path) { - var obj = Nodepath.parse(path); - var rootLength = obj.root.length; - var newDir = Js_string.sliceToEnd(rootLength, obj.dir); - return Nodepath.format({ - dir: newDir, - root: "", - base: obj.base, - name: obj.name, - ext: obj.ext - }); - }; - if (removeRoot(path) === removeRoot(fileName$1)) { - var ranges = Belt_Array.map(match$13._1, Editor$AgdaModeVscode.$$Range.fromAgdaInterval); + case "JumpToTarget" : + var link = $$event._0; + Editor$AgdaModeVscode.focus(state.document); + var path = Parser$AgdaModeVscode.filepath(state.document.fileName); + if (link.TAG === "SrcLoc") { + var match$14 = link._0; + if (typeof match$14 !== "object") { + return ; + } + var fileName = match$14._0; + if (fileName === undefined) { + return ; + } + var fileName$1 = Parser$AgdaModeVscode.filepath(fileName); + var removeRoot = function (path) { + var obj = Nodepath.parse(path); + var rootLength = obj.root.length; + var newDir = Js_string.sliceToEnd(rootLength, obj.dir); + return Nodepath.format({ + dir: newDir, + root: "", + base: obj.base, + name: obj.name, + ext: obj.ext + }); + }; + if (removeRoot(path) !== removeRoot(fileName$1)) { + return ; + } + var ranges = Belt_Array.map(match$14._1, Editor$AgdaModeVscode.$$Range.fromAgdaInterval); Editor$AgdaModeVscode.$$Selection.setMany(state.editor, ranges); - Belt_Option.forEach(Belt_Array.get(ranges, 0), (function (range) { - VSCode.TextEditor.revealRange(state.editor, range, undefined); - })); + return Belt_Option.forEach(Belt_Array.get(ranges, 0), (function (range) { + VSCode.TextEditor.revealRange(state.editor, range, undefined); + })); } - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - } - var index = link._0; - var goal$6 = Js_array.find((function (goal) { - return goal.index === index; - }), state.goals); - if (goal$6 !== undefined) { - Goal$AgdaModeVscode.setCursor(goal$6, state.editor); - } - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - + var index = link._0; + var goal$6 = Js_array.find((function (goal) { + return goal.index === index; + }), state.goals); + if (goal$6 !== undefined) { + return Goal$AgdaModeVscode.setCursor(goal$6, state.editor); + } else { + return ; + } + + } } case "GoalTypeContextAndInferredType" : var normalization$5 = command._0; - var match$14 = State__Goal$AgdaModeVscode.pointed(state); - if (match$14 !== undefined) { - var expr$4 = match$14[1]; - var goal$7 = match$14[0]; - if (expr$4 === "") { - return await sendAgdaRequest({ - TAG: "GoalTypeAndContext", - _0: normalization$5, - _1: goal$7, - [Symbol.for("name")]: "GoalTypeAndContext" - }); - } else { - return await sendAgdaRequest({ - TAG: "GoalTypeContextAndInferredType", - _0: normalization$5, - _1: expr$4, - _2: goal$7, - [Symbol.for("name")]: "GoalTypeContextAndInferredType" - }); - } + var match$15 = State__Goal$AgdaModeVscode.pointed(state); + if (match$15 === undefined) { + return await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); + } + var expr$4 = match$15[1]; + var goal$7 = match$15[0]; + if (expr$4 === "") { + return await sendAgdaRequest({ + TAG: "GoalTypeAndContext", + _0: normalization$5, + _1: goal$7, + [Symbol.for("name")]: "GoalTypeAndContext" + }); + } else { + return await sendAgdaRequest({ + TAG: "GoalTypeContextAndInferredType", + _0: normalization$5, + _1: expr$4, + _2: goal$7, + [Symbol.for("name")]: "GoalTypeContextAndInferredType" + }); } - await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; case "GoalTypeContextAndCheckedType" : var normalization$6 = command._0; - var match$15 = State__Goal$AgdaModeVscode.pointed(state); - if (match$15 !== undefined) { - var expr$5 = match$15[1]; - var goal$8 = match$15[0]; - if (expr$5 !== "") { - return await sendAgdaRequest({ - TAG: "GoalTypeContextAndCheckedType", - _0: normalization$6, - _1: expr$5, - _2: goal$8, - [Symbol.for("name")]: "GoalTypeContextAndCheckedType" - }); - } - await State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: "expression to type:", - value: undefined - }, (function (expr) { - return sendAgdaRequest({ - TAG: "GoalTypeContextAndCheckedType", - _0: normalization$6, - _1: expr, - _2: goal$8, - [Symbol.for("name")]: "GoalTypeContextAndCheckedType" - }); - })); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + var match$16 = State__Goal$AgdaModeVscode.pointed(state); + if (match$16 === undefined) { + return await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); + } + var expr$5 = match$16[1]; + var goal$8 = match$16[0]; + if (expr$5 === "") { + return await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: "expression to type:", + value: undefined + }, (function (expr) { + return sendAgdaRequest({ + TAG: "GoalTypeContextAndCheckedType", + _0: normalization$6, + _1: expr, + _2: goal$8, + [Symbol.for("name")]: "GoalTypeContextAndCheckedType" + }); + })); + } else { + return await sendAgdaRequest({ + TAG: "GoalTypeContextAndCheckedType", + _0: normalization$6, + _1: expr$5, + _2: goal$8, + [Symbol.for("name")]: "GoalTypeContextAndCheckedType" + }); } - await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; case "ModuleContents" : var normalization$7 = command._0; var placeholder$2 = "module name:"; - var match$16 = State__Goal$AgdaModeVscode.pointed(state); - if (match$16 !== undefined) { - var expr$6 = match$16[1]; - var goal$9 = match$16[0]; - if (expr$6 !== "") { - return await sendAgdaRequest({ - TAG: "ModuleContents", - _0: normalization$7, - _1: expr$6, - _2: goal$9, - [Symbol.for("name")]: "ModuleContents" - }); - } - await State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: placeholder$2, - value: undefined - }, (function (expr) { - return sendAgdaRequest({ - TAG: "ModuleContents", - _0: normalization$7, - _1: expr, - _2: goal$9, - [Symbol.for("name")]: "ModuleContents" - }); - })); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + var match$17 = State__Goal$AgdaModeVscode.pointed(state); + if (match$17 === undefined) { + return await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: placeholder$2, + value: undefined + }, (function (expr) { + return sendAgdaRequest({ + TAG: "ModuleContentsGlobal", + _0: normalization$7, + _1: expr, + [Symbol.for("name")]: "ModuleContentsGlobal" + }); + })); + } + var expr$6 = match$17[1]; + var goal$9 = match$17[0]; + if (expr$6 === "") { + return await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: placeholder$2, + value: undefined + }, (function (expr) { + return sendAgdaRequest({ + TAG: "ModuleContents", + _0: normalization$7, + _1: expr, + _2: goal$9, + [Symbol.for("name")]: "ModuleContents" + }); + })); + } else { + return await sendAgdaRequest({ + TAG: "ModuleContents", + _0: normalization$7, + _1: expr$6, + _2: goal$9, + [Symbol.for("name")]: "ModuleContents" + }); } - await State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: placeholder$2, - value: undefined - }, (function (expr) { - return sendAgdaRequest({ - TAG: "ModuleContentsGlobal", - _0: normalization$7, - _1: expr, - [Symbol.for("name")]: "ModuleContentsGlobal" - }); - })); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; case "ComputeNormalForm" : var computeMode = command._0; var placeholder$3 = "expression to normalize:"; - var match$17 = State__Goal$AgdaModeVscode.pointed(state); - if (match$17 !== undefined) { - var expr$7 = match$17[1]; - var goal$10 = match$17[0]; - if (expr$7 !== "") { - return await sendAgdaRequest({ - TAG: "ComputeNormalForm", - _0: computeMode, - _1: expr$7, - _2: goal$10, - [Symbol.for("name")]: "ComputeNormalForm" - }); - } - await State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: placeholder$3, - value: undefined - }, (function (expr) { - return sendAgdaRequest({ - TAG: "ComputeNormalForm", - _0: computeMode, - _1: expr, - _2: goal$10, - [Symbol.for("name")]: "ComputeNormalForm" - }); - })); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + var match$18 = State__Goal$AgdaModeVscode.pointed(state); + if (match$18 === undefined) { + return await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: placeholder$3, + value: undefined + }, (function (expr) { + return sendAgdaRequest({ + TAG: "ComputeNormalFormGlobal", + _0: computeMode, + _1: expr, + [Symbol.for("name")]: "ComputeNormalFormGlobal" + }); + })); } - await State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: undefined, - placeholder: placeholder$3, - value: undefined - }, (function (expr) { - return sendAgdaRequest({ - TAG: "ComputeNormalFormGlobal", - _0: computeMode, - _1: expr, - [Symbol.for("name")]: "ComputeNormalFormGlobal" - }); - })); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - case "InputMethod" : - var $$char$1 = command._0; - if (typeof $$char$1 !== "object") { - switch ($$char$1) { - case "Activate" : - if (Config$AgdaModeVscode.InputMethod.getEnable()) { - await State__InputMethod$AgdaModeVscode.activateEditorIM(state); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - } - var activationKey = Config$AgdaModeVscode.InputMethod.getActivationKey(); - Belt_Array.forEach(Editor$AgdaModeVscode.Cursor.getMany(state.editor), (function (point) { - Editor$AgdaModeVscode.$$Text.insert(state.document, point, activationKey); + var expr$7 = match$18[1]; + var goal$10 = match$18[0]; + if (expr$7 === "") { + return await State__View$AgdaModeVscode.Panel.prompt(state, header, { + body: undefined, + placeholder: placeholder$3, + value: undefined + }, (function (expr) { + return sendAgdaRequest({ + TAG: "ComputeNormalForm", + _0: computeMode, + _1: expr, + _2: goal$10, + [Symbol.for("name")]: "ComputeNormalForm" + }); })); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - case "BrowseUp" : - await State__InputMethod$AgdaModeVscode.moveUp(state); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - case "BrowseRight" : - await State__InputMethod$AgdaModeVscode.moveRight(state); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - case "BrowseDown" : - await State__InputMethod$AgdaModeVscode.moveDown(state); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - case "BrowseLeft" : - await State__InputMethod$AgdaModeVscode.moveLeft(state); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - - } } else { - await State__InputMethod$AgdaModeVscode.insertChar(state, $$char$1._0); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return await sendAgdaRequest({ + TAG: "ComputeNormalForm", + _0: computeMode, + _1: expr$7, + _2: goal$10, + [Symbol.for("name")]: "ComputeNormalForm" + }); + } + case "InputMethod" : + var $$char$1 = command._0; + if (typeof $$char$1 === "object") { + return await State__InputMethod$AgdaModeVscode.insertChar(state, $$char$1._0); + } + switch ($$char$1) { + case "Activate" : + if (Config$AgdaModeVscode.InputMethod.getEnable()) { + return await State__InputMethod$AgdaModeVscode.activateEditorIM(state); + } + var activationKey = Config$AgdaModeVscode.InputMethod.getActivationKey(); + return Belt_Array.forEach(Editor$AgdaModeVscode.Cursor.getMany(state.editor), (function (point) { + Editor$AgdaModeVscode.$$Text.insert(state.document, point, activationKey); + })); + case "BrowseUp" : + return await State__InputMethod$AgdaModeVscode.moveUp(state); + case "BrowseRight" : + return await State__InputMethod$AgdaModeVscode.moveRight(state); + case "BrowseDown" : + return await State__InputMethod$AgdaModeVscode.moveDown(state); + case "BrowseLeft" : + return await State__InputMethod$AgdaModeVscode.moveLeft(state); + } } diff --git a/lib/js/src/State/State__Response.bs.js b/lib/js/src/State/State__Response.bs.js index f2aee0f4..30baf84c 100644 --- a/lib/js/src/State/State__Response.bs.js +++ b/lib/js/src/State/State__Response.bs.js @@ -229,74 +229,32 @@ async function handle$1(state, dispatchCommand, response) { switch (response) { case "ClearHighlighting" : Tokens$AgdaModeVscode.clear(state.tokens); - Highlighting$AgdaModeVscode.clear(state.highlighting); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return Highlighting$AgdaModeVscode.clear(state.highlighting); case "CompleteHighlightingAndMakePromptReappear" : await Tokens$AgdaModeVscode.readTempFiles(state.tokens, state.editor); - await Highlighting$AgdaModeVscode.apply(state.highlighting, state.tokens, state.editor); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return await Highlighting$AgdaModeVscode.apply(state.highlighting, state.tokens, state.editor); default: - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return ; } } else { switch (response.TAG) { case "HighlightingInfoDirect" : - Tokens$AgdaModeVscode.insert(state.tokens, state.editor, response._1); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return Tokens$AgdaModeVscode.insert(state.tokens, state.editor, response._1); case "HighlightingInfoIndirect" : - Tokens$AgdaModeVscode.addEmacsFilePath(state.tokens, response._0); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return Tokens$AgdaModeVscode.addEmacsFilePath(state.tokens, response._0); case "HighlightingInfoIndirectJSON" : - Tokens$AgdaModeVscode.addJSONFilePath(state.tokens, response._0); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return Tokens$AgdaModeVscode.addJSONFilePath(state.tokens, response._0); case "Status" : - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return ; case "JumpToError" : var path = Parser$AgdaModeVscode.filepath(state.document.fileName); - if (path === response._0) { - var point = state.document.positionAt(response._1 - 1 | 0); - Editor$AgdaModeVscode.Cursor.set(state.editor, point); + if (path !== response._0) { + return ; } - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + var point = state.document.positionAt(response._1 - 1 | 0); + return Editor$AgdaModeVscode.Cursor.set(state.editor, point); case "InteractionPoints" : - await State__Goal$AgdaModeVscode.instantiate(state, response._0); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return await State__Goal$AgdaModeVscode.instantiate(state, response._0); case "GiveAction" : var give = response._1; var index = response._0; @@ -304,67 +262,41 @@ async function handle$1(state, dispatchCommand, response) { return goal.index === index; })); var goal = Belt_Array.get(found, 0); - if (goal !== undefined) { - if (typeof give !== "object") { - if (give === "GiveParen") { - await State__Goal$AgdaModeVscode.modify(state, goal, (function (content) { - return "(" + (content + ")"); - })); - await State__Goal$AgdaModeVscode.removeBoundaryAndDestroy(state, goal); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - } - await State__Goal$AgdaModeVscode.removeBoundaryAndDestroy(state, goal); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; - } else { - var content = give._0; - await State__Goal$AgdaModeVscode.modify(state, goal, (function (param) { - return Js_string.replaceByRe(/\\\\n/g, "\n", content); - })); - await State__Goal$AgdaModeVscode.removeBoundaryAndDestroy(state, goal); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + if (goal === undefined) { + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Error", + _0: "Error: Give failed", + [Symbol.for("name")]: "Error" + }, [Item$AgdaModeVscode.plainText("Cannot find goal #" + String(index))]); + } + if (typeof give !== "object") { + if (give !== "GiveParen") { + return await State__Goal$AgdaModeVscode.removeBoundaryAndDestroy(state, goal); } + await State__Goal$AgdaModeVscode.modify(state, goal, (function (content) { + return "(" + (content + ")"); + })); + return await State__Goal$AgdaModeVscode.removeBoundaryAndDestroy(state, goal); } else { - await State__View$AgdaModeVscode.Panel.display(state, { - TAG: "Error", - _0: "Error: Give failed", - [Symbol.for("name")]: "Error" - }, [Item$AgdaModeVscode.plainText("Cannot find goal #" + String(index))]); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + var content = give._0; + await State__Goal$AgdaModeVscode.modify(state, goal, (function (param) { + return Js_string.replaceByRe(/\\\\n/g, "\n", content); + })); + return await State__Goal$AgdaModeVscode.removeBoundaryAndDestroy(state, goal); } case "MakeCase" : var lines = response._1; var match = State__Goal$AgdaModeVscode.pointed(state); - if (match !== undefined) { - var goal$1 = match[0]; - if (response._0 === "Function") { - await State__Goal$AgdaModeVscode.replaceWithLines(state, goal$1, lines); - } else { - await State__Goal$AgdaModeVscode.replaceWithLambda(state, goal$1, lines); - } - return await dispatchCommand("Load"); + if (match === undefined) { + return await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); + } + var goal$1 = match[0]; + if (response._0 === "Function") { + await State__Goal$AgdaModeVscode.replaceWithLines(state, goal$1, lines); + } else { + await State__Goal$AgdaModeVscode.replaceWithLambda(state, goal$1, lines); } - await State__View$AgdaModeVscode.Panel.displayOutOfGoalError(state); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return await dispatchCommand("Load"); case "SolveAll" : var solutions = response._0; var solveOne = async function (param) { @@ -383,41 +315,26 @@ async function handle$1(state, dispatchCommand, response) { _0: goal, [Symbol.for("name")]: "Give" }); - } else { - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; } + }; await Util$AgdaModeVscode.oneByOne(Belt_Array.map(solutions, solveOne)); var size = solutions.length; if (size === 0) { - await State__View$AgdaModeVscode.Panel.display(state, { - TAG: "Error", - _0: "No solutions found", - [Symbol.for("name")]: "Error" - }, []); + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Error", + _0: "No solutions found", + [Symbol.for("name")]: "Error" + }, []); } else { - await State__View$AgdaModeVscode.Panel.display(state, { - TAG: "Success", - _0: String(size) + " goals solved", - [Symbol.for("name")]: "Success" - }, []); + return await State__View$AgdaModeVscode.Panel.display(state, { + TAG: "Success", + _0: String(size) + " goals solved", + [Symbol.for("name")]: "Success" + }, []); } - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; case "DisplayInfo" : - await handle(state, response._0); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return await handle(state, response._0); case "RunningInfo" : var verbosity = response._0; if (verbosity !== 1) { @@ -426,34 +343,23 @@ async function handle$1(state, dispatchCommand, response) { verbosity, message ]); - await State__View$AgdaModeVscode.DebugBuffer.displayInAppendMode([[ - verbosity, - message - ]]); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return await State__View$AgdaModeVscode.DebugBuffer.displayInAppendMode([[ + verbosity, + message + ]]); } var message$1 = removeNewlines(response._1); - await State__View$AgdaModeVscode.Panel.displayInAppendMode(state, { - TAG: "Plain", - _0: "Type-checking", - [Symbol.for("name")]: "Plain" - }, [Item$AgdaModeVscode.plainText(message$1)]); - return { - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" - }; + return await State__View$AgdaModeVscode.Panel.displayInAppendMode(state, { + TAG: "Plain", + _0: "Type-checking", + [Symbol.for("name")]: "Plain" + }, [Item$AgdaModeVscode.plainText(message$1)]); } } }; - var result = await handleResponse(); - Chan$AgdaModeVscode.emit(state.channels.responseHandled, response); - return result; + await handleResponse(); + return Chan$AgdaModeVscode.emit(state.channels.responseHandled, response); } exports.removeNewlines = removeNewlines; diff --git a/src/Main.res b/src/Main.res index 0f3b281a..0803b0a1 100644 --- a/src/Main.res +++ b/src/Main.res @@ -277,10 +277,8 @@ let activateWithoutContext = (subscriptions, extensionPath, globalStoragePath) = switch Registry.get(fileName) { | None => None | Some(state) => - switch await State__Command.dispatchCommand(state, command) { - | Error(error) => Some(Error(error)) - | Ok() => Some(Ok(state)) - } + await State__Command.dispatchCommand(state, command) + Some(Ok(state)) } })->subscribeMany // registerDocumentSemanticTokensProvider diff --git a/src/State.res b/src/State.res index 199f74be..13d29831 100644 --- a/src/State.res +++ b/src/State.res @@ -30,22 +30,23 @@ let onDownload = (state, event) => { let sendRequest = ( state: state, - handleResponse: Response.t => promise>, + handleResponse: Response.t => promise, request: Request.t, -): promise> => { +): promise => { let sendRequestAndHandleResponses = ( state, request, - handler: Response.t => promise>, - ): promise> => { + handler: Response.t => promise, + ): promise => { let onResponse = async result => switch result { | Error(error) => await View.Panel.displayConnectionError(state, error) | Ok(response) => - switch await handler(response) { - | Error(error) => await View.Panel.displayConnectionError(state, error) - | Ok() => () - } + await handler(response) + // switch await handler(response) { + // | Error(error) => await View.Panel.displayConnectionError(state, error) + // | Ok() => () + // } } Connection.sendRequest( state.globalStoragePath, @@ -58,10 +59,8 @@ let sendRequest = ( switch result { | Error(error) => await View.Panel.displayConnectionError(state, error) - Error(error) | Ok(status) => await View.Panel.displayConnectionStatus(state, status) - Ok() } ) } diff --git a/src/State/State__Command.res b/src/State/State__Command.res index 3b03dc42..141214e6 100644 --- a/src/State/State__Command.res +++ b/src/State/State__Command.res @@ -2,7 +2,7 @@ open Belt open Command // from Editor Command to Tasks -let rec dispatchCommand = async (state: State.t, command): result => { +let rec dispatchCommand = async (state: State.t, command): unit => { let dispatchCommand = dispatchCommand(state, ...) let sendAgdaRequest = State.sendRequest(state, State__Response.handle(state, dispatchCommand, ...), ...) @@ -17,7 +17,7 @@ let rec dispatchCommand = async (state: State.t, command): result Ok() + | Quit => () | Restart => // clear the RunningInfo log state.runningInfoLog = [] @@ -27,7 +27,6 @@ let rec dispatchCommand = async (state: State.t, command): result await sendAgdaRequest(Compile) | ToggleDisplayOfImplicitArguments => await sendAgdaRequest(ToggleDisplayOfImplicitArguments) | ToggleDisplayOfIrrelevantArguments => await sendAgdaRequest(ToggleDisplayOfIrrelevantArguments) @@ -38,12 +37,8 @@ let rec dispatchCommand = async (state: State.t, command): result await sendAgdaRequest(SolveConstraints(normalization, goal)) } | ShowGoals(normalization) => await sendAgdaRequest(ShowGoals(normalization)) - | NextGoal => - State__Goal.next(state) - Ok() - | PreviousGoal => - State__Goal.previous(state) - Ok() + | NextGoal => State__Goal.next(state) + | PreviousGoal => State__Goal.previous(state) | SearchAbout(normalization) => await State.View.Panel.prompt( state, @@ -51,12 +46,9 @@ let rec dispatchCommand = async (state: State.t, command): result sendAgdaRequest(SearchAbout(normalization, expr)), ) - Ok() | Give => switch State__Goal.pointed(state) { - | None => - await State.View.Panel.displayOutOfGoalError(state) - Ok() + | None => await State.View.Panel.displayOutOfGoalError(state) | Some((goal, "")) => await State.View.Panel.prompt( state, @@ -74,22 +66,17 @@ let rec dispatchCommand = async (state: State.t, command): result await sendAgdaRequest(Give(goal)) } | Refine => switch State__Goal.pointed(state) { - | None => - await State.View.Panel.displayOutOfGoalError(state) - Ok() + | None => await State.View.Panel.displayOutOfGoalError(state) | Some((goal, _)) => await sendAgdaRequest(Refine(goal)) } | ElaborateAndGive(normalization) => { let placeholder = Some("expression to elaborate and give:") switch State__Goal.pointed(state) { - | None => - await State.View.Panel.displayOutOfGoalError(state) - Ok() + | None => await State.View.Panel.displayOutOfGoalError(state) | Some((goal, "")) => await State.View.Panel.prompt( state, @@ -107,23 +94,18 @@ let rec dispatchCommand = async (state: State.t, command): result await sendAgdaRequest(ElaborateAndGive(normalization, expr, goal)) } } | Auto => switch State__Goal.pointed(state) { - | None => - await State.View.Panel.displayOutOfGoalError(state) - Ok() + | None => await State.View.Panel.displayOutOfGoalError(state) | Some((goal, _)) => await sendAgdaRequest(Auto(goal)) } | Case => { let placeholder = Some("variable to case split:") switch State__Goal.pointed(state) { - | None => - await State.View.Panel.displayOutOfGoalError(state) - Ok() + | None => await State.View.Panel.displayOutOfGoalError(state) | Some((goal, "")) => await State.View.Panel.prompt( state, @@ -142,16 +124,13 @@ let rec dispatchCommand = async (state: State.t, command): result await sendAgdaRequest(Case(goal)) } } | HelperFunctionType(normalization) => { let placeholder = Some("expression:") switch State__Goal.pointed(state) { - | None => - await State.View.Panel.displayOutOfGoalError(state) - Ok() + | None => await State.View.Panel.displayOutOfGoalError(state) | Some((goal, "")) => await State.View.Panel.prompt( state, @@ -163,7 +142,6 @@ let rec dispatchCommand = async (state: State.t, command): result sendAgdaRequest(HelperFunctionType(normalization, expr, goal)), ) - Ok() | Some((goal, expr)) => await sendAgdaRequest(HelperFunctionType(normalization, expr, goal)) } } @@ -181,7 +159,6 @@ let rec dispatchCommand = async (state: State.t, command): result sendAgdaRequest(InferTypeGlobal(normalization, expr)), ) - Ok() | Some((goal, "")) => await State.View.Panel.prompt( state, @@ -193,35 +170,26 @@ let rec dispatchCommand = async (state: State.t, command): result sendAgdaRequest(InferType(normalization, expr, goal)), ) - Ok() | Some((goal, expr)) => await sendAgdaRequest(InferType(normalization, expr, goal)) } | Context(normalization) => switch State__Goal.pointed(state) { - | None => - await State.View.Panel.displayOutOfGoalError(state) - Ok() + | None => await State.View.Panel.displayOutOfGoalError(state) | Some((goal, _)) => await sendAgdaRequest(Context(normalization, goal)) } | GoalType(normalization) => switch State__Goal.pointed(state) { - | None => - await State.View.Panel.displayOutOfGoalError(state) - Ok() + | None => await State.View.Panel.displayOutOfGoalError(state) | Some((goal, _)) => await sendAgdaRequest(GoalType(normalization, goal)) } | GoalTypeAndContext(normalization) => switch State__Goal.pointed(state) { - | None => - await State.View.Panel.displayOutOfGoalError(state) - Ok() + | None => await State.View.Panel.displayOutOfGoalError(state) | Some((goal, _)) => await sendAgdaRequest(GoalTypeAndContext(normalization, goal)) } | GoalTypeContextAndInferredType(normalization) => switch State__Goal.pointed(state) { - | None => - await State.View.Panel.displayOutOfGoalError(state) - Ok() + | None => await State.View.Panel.displayOutOfGoalError(state) | Some((goal, "")) => // fallback to `GoalTypeAndContext` when there's no content await sendAgdaRequest(GoalTypeAndContext(normalization, goal)) @@ -231,9 +199,7 @@ let rec dispatchCommand = async (state: State.t, command): result let placeholder = Some("expression to type:") switch State__Goal.pointed(state) { - | None => - await State.View.Panel.displayOutOfGoalError(state) - Ok() + | None => await State.View.Panel.displayOutOfGoalError(state) | Some((goal, "")) => await State.View.Panel.prompt( state, @@ -245,7 +211,6 @@ let rec dispatchCommand = async (state: State.t, command): result sendAgdaRequest(GoalTypeContextAndCheckedType(normalization, expr, goal)), ) - Ok() | Some((goal, expr)) => await sendAgdaRequest(GoalTypeContextAndCheckedType(normalization, expr, goal)) } @@ -263,7 +228,6 @@ let rec dispatchCommand = async (state: State.t, command): result sendAgdaRequest(ModuleContentsGlobal(normalization, expr)), ) - Ok() | Some((goal, "")) => await State.View.Panel.prompt( state, @@ -275,7 +239,6 @@ let rec dispatchCommand = async (state: State.t, command): result sendAgdaRequest(ModuleContents(normalization, expr, goal)), ) - Ok() | Some((goal, expr)) => await sendAgdaRequest(ModuleContents(normalization, expr, goal)) } | ComputeNormalForm(computeMode) => @@ -292,7 +255,6 @@ let rec dispatchCommand = async (state: State.t, command): result sendAgdaRequest(ComputeNormalFormGlobal(computeMode, expr)), ) - Ok() | Some((goal, "")) => await State.View.Panel.prompt( state, @@ -304,7 +266,6 @@ let rec dispatchCommand = async (state: State.t, command): result sendAgdaRequest(ComputeNormalForm(computeMode, expr, goal)), ) - Ok() | Some((goal, expr)) => await sendAgdaRequest(ComputeNormalForm(computeMode, expr, goal)) } | WhyInScope => @@ -321,7 +282,6 @@ let rec dispatchCommand = async (state: State.t, command): result sendAgdaRequest(WhyInScopeGlobal(expr)), ) - Ok() | Some((goal, "")) => await State.View.Panel.prompt( state, @@ -333,7 +293,6 @@ let rec dispatchCommand = async (state: State.t, command): result sendAgdaRequest(WhyInScope(expr, goal)), ) - Ok() | Some((goal, expr)) => await sendAgdaRequest(WhyInScope(expr, goal)) } | SwitchAgdaVersion => @@ -377,7 +336,6 @@ let rec dispatchCommand = async (state: State.t, command): result // should not happen await State.View.Panel.display( @@ -385,7 +343,6 @@ let rec dispatchCommand = async (state: State.t, command): result let (errorHeader, errorBody) = Connection.Error.toString(error) let header = View.Header.Error( @@ -394,25 +351,25 @@ let rec dispatchCommand = async (state: State.t, command): result switch event { - | Initialized => Ok() - | Destroyed => await State.destroy(state, true) + | Initialized => () + | Destroyed => + switch await State.destroy(state, true) { + | Error(error) => + let (errorHeader, errorBody) = Connection.Error.toString(error) + let header = View.Header.Error("Cannot destruct the view: " ++ errorHeader) + let body = [Item.plainText(errorBody)] + await State.View.Panel.display(state, header, body) + | Ok() => () + } | InputMethod(InsertChar(char)) => await dispatchCommand(InputMethod(InsertChar(char))) - | InputMethod(ChooseSymbol(symbol)) => - await State__InputMethod.chooseSymbol(state, symbol) - Ok() - | PromptIMUpdate(MouseSelect(interval)) => - await State__InputMethod.select(state, [interval]) - Ok() - | PromptIMUpdate(KeyUpdate(input)) => - await State__InputMethod.keyUpdatePromptIM(state, input) - Ok() + | InputMethod(ChooseSymbol(symbol)) => await State__InputMethod.chooseSymbol(state, symbol) + | PromptIMUpdate(MouseSelect(interval)) => await State__InputMethod.select(state, [interval]) + | PromptIMUpdate(KeyUpdate(input)) => await State__InputMethod.keyUpdatePromptIM(state, input) | PromptIMUpdate(BrowseUp) => await dispatchCommand(InputMethod(BrowseUp)) | PromptIMUpdate(BrowseDown) => await dispatchCommand(InputMethod(BrowseDown)) | PromptIMUpdate(BrowseLeft) => await dispatchCommand(InputMethod(BrowseLeft)) @@ -423,13 +380,12 @@ let rec dispatchCommand = async (state: State.t, command): result Editor.focus(state.document) let path = state.document->VSCode.TextDocument.fileName->Parser.filepath switch link { - | SrcLoc(NoRange) => Ok() - | SrcLoc(Range(None, _intervals)) => Ok() + | SrcLoc(NoRange) => () + | SrcLoc(Range(None, _intervals)) => () | SrcLoc(Range(Some(fileName), intervals)) => let fileName = Parser.filepath(fileName) // Issue #44 @@ -459,52 +415,41 @@ let rec dispatchCommand = async (state: State.t, command): resultVSCode.TextEditor.revealRange(range, None) }) } - Ok() | Hole(index) => let goal = Js.Array.find((goal: Goal.t) => goal.index == index, state.goals) switch goal { | None => () | Some(goal) => Goal.setCursor(goal, state.editor) } - Ok() } } | Escape => if state.editorIM->IM.isActivated || state.promptIM->IM.isActivated { await State__InputMethod.deactivate(state) - Ok() } else { await State.View.Panel.interruptPrompt(state) - Ok() } | InputMethod(Activate) => if Config.InputMethod.getEnable() { await State__InputMethod.activateEditorIM(state) - Ok() } else { // insert the activation key (default: "\") instead let activationKey = Config.InputMethod.getActivationKey() Editor.Cursor.getMany(state.editor)->Array.forEach(point => Editor.Text.insert(state.document, point, activationKey)->ignore ) - Ok() } | InputMethod(InsertChar(char)) => await State__InputMethod.insertChar(state, char) - Ok() | InputMethod(BrowseUp) => await State__InputMethod.moveUp(state) - Ok() | InputMethod(BrowseDown) => await State__InputMethod.moveDown(state) - Ok() | InputMethod(BrowseLeft) => await State__InputMethod.moveLeft(state) - Ok() | InputMethod(BrowseRight) => await State__InputMethod.moveRight(state) - Ok() | LookupSymbol => // get the selected text // query the user instead if no text is selected @@ -518,7 +463,7 @@ let rec dispatchCommand = async (state: State.t, command): result { resolve(Js.String.trim(input)) - Promise.resolve(Ok()) + Promise.resolve() }, )->ignore } else { @@ -545,10 +490,8 @@ let rec dispatchCommand = async (state: State.t, command): resultArray.map(sequence => Item.plainText(sequence)), ) } - Ok() | OpenDebugBuffer => State.View.DebugBuffer.make(state)->ignore await State.View.DebugBuffer.reveal(state) - Ok() } } diff --git a/src/State/State__Response.res b/src/State/State__Response.res index c971eb35..a01f6e61 100644 --- a/src/State/State__Response.res +++ b/src/State/State__Response.res @@ -86,25 +86,21 @@ module DisplayInfo = { let rec handle = async ( state: State.t, - dispatchCommand: Command.t => promise>, + dispatchCommand: Command.t => promise, response: Response.t, -): result => { +): unit => { let sendAgdaRequest = State.sendRequest(state, handle(state, dispatchCommand, ...), ...) let handleResponse = async () => switch response { | HighlightingInfoDirect(_keep, annotations) => state.tokens->Tokens.insert(state.editor, annotations) - Ok() | HighlightingInfoIndirect(filepath) => state.tokens->Tokens.addEmacsFilePath(filepath) - Ok() | HighlightingInfoIndirectJSON(filepath) => state.tokens->Tokens.addJSONFilePath(filepath) - Ok() | ClearHighlighting => state.tokens->Tokens.clear state.highlighting->Highlighting.clear - Ok() | Status(_checked, _displayImplicit) => // display( // "Status", @@ -115,7 +111,7 @@ let rec handle = async ( // ++ string_of_bool(displayImplicit), // ), // ), - Ok() + () // if (displayImplicit || checked) { // [ @@ -140,10 +136,8 @@ let rec handle = async ( let point = state.document->VSCode.TextDocument.positionAt(offset - 1) Editor.Cursor.set(state.editor, point) } - Ok() | InteractionPoints(indices) => await State__Goal.instantiate(state, indices) - Ok() | GiveAction(index, give) => let found = state.goals->Array.keep(goal => goal.index == index) switch found[0] { @@ -153,30 +147,25 @@ let rec handle = async ( Error("Error: Give failed"), [Item.plainText("Cannot find goal #" ++ string_of_int(index))], ) - Ok() | Some(goal) => switch give { | GiveParen => await State__Goal.modify(state, goal, content => "(" ++ (content ++ ")")) await State__Goal.removeBoundaryAndDestroy(state, goal) - Ok() | GiveNoParen => // do nothing await State__Goal.removeBoundaryAndDestroy(state, goal) - Ok() | GiveString(content) => await State__Goal.modify(state, goal, _ => Js.String.replaceByRe(%re("/\\\\n/g"), "\n", content) ) await State__Goal.removeBoundaryAndDestroy(state, goal) - Ok() } } | MakeCase(makeCaseType, lines) => switch State__Goal.pointed(state) { | None => await State.View.Panel.displayOutOfGoalError(state) - Ok() | Some((goal, _)) => switch makeCaseType { | Function => await State__Goal.replaceWithLines(state, goal, lines) @@ -185,10 +174,10 @@ let rec handle = async ( await dispatchCommand(Load) } | SolveAll(solutions) => - let solveOne = async ((index, solution)): result => { + let solveOne = async ((index, solution)) => { let goals = state.goals->Array.keep(goal => goal.index == index) switch goals[0] { - | None => Ok() + | None => () | Some(goal) => await State__Goal.modify(state, goal, _ => solution) await sendAgdaRequest(Give(goal)) @@ -205,11 +194,8 @@ let rec handle = async ( } else { await State.View.Panel.display(state, Success(string_of_int(size) ++ " goals solved"), []) } - Ok() - | DisplayInfo(info) => await DisplayInfo.handle(state, info) - Ok() | RunningInfo(1, message) => let message = removeNewlines(message) await State.View.Panel.displayInAppendMode( @@ -217,22 +203,18 @@ let rec handle = async ( Plain("Type-checking"), [Item.plainText(message)], ) - Ok() | RunningInfo(verbosity, message) => let message = removeNewlines(message) state.runningInfoLog->Js.Array2.push((verbosity, message))->ignore await State.View.DebugBuffer.displayInAppendMode([(verbosity, message)]) - Ok() | CompleteHighlightingAndMakePromptReappear => // apply decoration before handling Last Responses await Tokens.readTempFiles(state.tokens, state.editor) await Highlighting.apply(state.highlighting, state.tokens, state.editor) - Ok() - | _ => Ok() + | _ => () } - let result = await handleResponse() + await handleResponse() // emit Response when it's been handled state.channels.responseHandled->Chan.emit(response) - result } diff --git a/src/State/State__Type.res b/src/State/State__Type.res index 3a809547..13dde333 100644 --- a/src/State/State__Type.res +++ b/src/State/State__Type.res @@ -112,7 +112,7 @@ type t = { // for self destruction onRemoveFromRegistry: Chan.t, // Agda Request queue - mutable agdaRequestQueue: RequestQueue.t>, + mutable agdaRequestQueue: RequestQueue.t, globalStoragePath: string, extensionPath: string, channels: channels, diff --git a/src/State/State__View.res b/src/State/State__View.res index 865cceea..312735a5 100644 --- a/src/State/State__View.res +++ b/src/State/State__View.res @@ -20,7 +20,7 @@ module type Panel = { state, View.Header.t, View.Prompt.t, - string => Promise.t>, + string => Promise.t, ) => Promise.t let interruptPrompt: state => Promise.t } @@ -71,7 +71,7 @@ module Panel: Panel = { state, header, prompt, - callbackOnPromptSuccess: string => Promise.t>, + callbackOnPromptSuccess: string => Promise.t, ): Promise.t => { // focus on the panel before prompting Context.setPrompt(true) From 96813b01ea11ea7915fd499c73c82bd2b5ee2189 Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Fri, 25 Oct 2024 14:35:52 +0800 Subject: [PATCH 092/109] [ new ] Channel for debugging info --- lib/js/src/Main.bs.js | 9 ++++++--- lib/js/src/State/State__Command.bs.js | 19 +++++++++++++++---- lib/js/src/State/State__Type.bs.js | 18 ++++++++++++++++++ src/Main.res | 15 +++++++++++++-- src/State.res | 13 +++---------- src/State/State__Command.res | 22 ++++++++++------------ src/State/State__Type.res | 17 +++++++++++++++++ 7 files changed, 82 insertions(+), 31 deletions(-) diff --git a/lib/js/src/Main.bs.js b/lib/js/src/Main.bs.js index de753463..c1878737 100644 --- a/lib/js/src/Main.bs.js +++ b/lib/js/src/Main.bs.js @@ -15,6 +15,7 @@ var Tokens$AgdaModeVscode = require("./Tokens.bs.js"); var Command$AgdaModeVscode = require("./Command.bs.js"); var Registry$AgdaModeVscode = require("./Registry.bs.js"); var Singleton$AgdaModeVscode = require("./View/Singleton.bs.js"); +var State__Type$AgdaModeVscode = require("./State/State__Type.bs.js"); var State__View$AgdaModeVscode = require("./State/State__View.bs.js"); var Highlighting$AgdaModeVscode = require("./Highlighting.bs.js"); var WebviewPanel$AgdaModeVscode = require("./View/WebviewPanel.bs.js"); @@ -60,12 +61,12 @@ var Inputs = { onTriggerCommand: onTriggerCommand }; -function initialize(debugChan, extensionPath, globalStoragePath, editor, fileName) { +function initialize(channels, extensionPath, globalStoragePath, editor, fileName) { var panel = Singleton$AgdaModeVscode.Panel.make(extensionPath); WebviewPanel$AgdaModeVscode.onceDestroyed(panel).finally(function () { Registry$AgdaModeVscode.removeAndDestroyAll(); }); - var state = State$AgdaModeVscode.make(debugChan, globalStoragePath, extensionPath, editor); + var state = State$AgdaModeVscode.make(channels, globalStoragePath, extensionPath, editor); Chan$AgdaModeVscode.once(state.onRemoveFromRegistry).finally(function () { Registry$AgdaModeVscode.remove(fileName); }); @@ -169,9 +170,11 @@ function activateWithoutContext(subscriptions, extensionPath, globalStoragePath) }; var channels_inputMethod = Chan$AgdaModeVscode.make(); var channels_responseHandled = Chan$AgdaModeVscode.make(); + var channels_log = Chan$AgdaModeVscode.make(); var channels = { inputMethod: channels_inputMethod, - responseHandled: channels_responseHandled + responseHandled: channels_responseHandled, + log: channels_log }; subscribe(onOpenEditor(function (editor) { var fileName = Parser$AgdaModeVscode.filepath(editor.document.fileName); diff --git a/lib/js/src/State/State__Command.bs.js b/lib/js/src/State/State__Command.bs.js index f1f5a7a5..355274f8 100644 --- a/lib/js/src/State/State__Command.bs.js +++ b/lib/js/src/State/State__Command.bs.js @@ -9,6 +9,7 @@ var Nodepath = require("node:path"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var IM$AgdaModeVscode = require("../InputMethod/IM.bs.js"); +var Chan$AgdaModeVscode = require("../Util/Chan.bs.js"); var Goal$AgdaModeVscode = require("../Goal.bs.js"); var Item$AgdaModeVscode = require("../View/Component/Item.bs.js"); var Util$AgdaModeVscode = require("../Util/Util.bs.js"); @@ -27,13 +28,23 @@ var Connection__Error$AgdaModeVscode = require("../Connection/Connection__Error. var State__InputMethod$AgdaModeVscode = require("./State__InputMethod.bs.js"); async function dispatchCommand(state, command) { + Chan$AgdaModeVscode.emit(state.channels.log, { + TAG: "CommandDispatched", + _0: command, + [Symbol.for("name")]: "CommandDispatched" + }); var dispatchCommand$1 = function (extra) { return dispatchCommand(state, extra); }; - var sendAgdaRequest = function (extra) { - return State$AgdaModeVscode.sendRequest(state, (function (extra) { - return State__Response$AgdaModeVscode.handle(state, dispatchCommand$1, extra); - }), extra); + var sendAgdaRequest = async function (request) { + await State$AgdaModeVscode.sendRequest(state, (function (extra) { + return State__Response$AgdaModeVscode.handle(state, dispatchCommand$1, extra); + }), request); + return Chan$AgdaModeVscode.emit(state.channels.log, { + TAG: "CommandHandled", + _0: command, + [Symbol.for("name")]: "CommandHandled" + }); }; var header = { TAG: "Plain", diff --git a/lib/js/src/State/State__Type.bs.js b/lib/js/src/State/State__Type.bs.js index c601c149..ef74686d 100644 --- a/lib/js/src/State/State__Type.bs.js +++ b/lib/js/src/State/State__Type.bs.js @@ -5,6 +5,7 @@ var Vscode = require("vscode"); var Js_array = require("rescript/lib/js/js_array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Util$AgdaModeVscode = require("../Util/Util.bs.js"); +var Command$AgdaModeVscode = require("../Command.bs.js"); var WebviewPanel$AgdaModeVscode = require("../View/WebviewPanel.bs.js"); function make() { @@ -109,6 +110,22 @@ var ViewCache = { restore: restore }; +function toString(log) { + switch (log.TAG) { + case "CommandDispatched" : + return "[ command ] dispatched: " + Command$AgdaModeVscode.toString(log._0); + case "CommandHandled" : + return "[ command ] handled: " + Command$AgdaModeVscode.toString(log._0); + case "Others" : + return log._0; + + } +} + +var Log = { + toString: toString +}; + function setPrompt(value) { Vscode.commands.executeCommand("setContext", "agdaModePrompting", value); } @@ -124,5 +141,6 @@ var Context = { exports.RequestQueue = RequestQueue; exports.ViewCache = ViewCache; +exports.Log = Log; exports.Context = Context; /* vscode Not a pure module */ diff --git a/src/Main.res b/src/Main.res index 0803b0a1..e15d5869 100644 --- a/src/Main.res +++ b/src/Main.res @@ -38,7 +38,7 @@ module Inputs: { } } -let initialize = (debugChan, extensionPath, globalStoragePath, editor, fileName) => { +let initialize = (channels, extensionPath, globalStoragePath, editor, fileName) => { let panel = Singleton.Panel.make(extensionPath) // if the panel is destroyed, destroy all every State in the Registry WebviewPanel.onceDestroyed(panel) @@ -46,7 +46,7 @@ let initialize = (debugChan, extensionPath, globalStoragePath, editor, fileName) ->Promise.done // not in the Registry, instantiate a State - let state = State.make(debugChan, globalStoragePath, extensionPath, editor) + let state = State.make(channels, globalStoragePath, extensionPath, editor) // remove it from the Registry on request state.onRemoveFromRegistry @@ -207,6 +207,17 @@ let activateWithoutContext = (subscriptions, extensionPath, globalStoragePath) = let channels = { State__Type.inputMethod: Chan.make(), responseHandled: Chan.make(), + log: Chan.make(), + } + // subscribe to the logging channel when in debug mode + let debug = false + if debug { + // log the event + channels.log + ->Chan.on(message => { + Js.log(State__Type.Log.toString(message)) + }) + ->ignore } // on open editor diff --git a/src/State.res b/src/State.res index 13d29831..6aaf94d5 100644 --- a/src/State.res +++ b/src/State.res @@ -41,12 +41,7 @@ let sendRequest = ( let onResponse = async result => switch result { | Error(error) => await View.Panel.displayConnectionError(state, error) - | Ok(response) => - await handler(response) - // switch await handler(response) { - // | Error(error) => await View.Panel.displayConnectionError(state, error) - // | Ok() => () - // } + | Ok(response) => await handler(response) } Connection.sendRequest( state.globalStoragePath, @@ -57,10 +52,8 @@ let sendRequest = ( onResponse )->Promise.then(async result => switch result { - | Error(error) => - await View.Panel.displayConnectionError(state, error) - | Ok(status) => - await View.Panel.displayConnectionStatus(state, status) + | Error(error) => await View.Panel.displayConnectionError(state, error) + | Ok(status) => await View.Panel.displayConnectionStatus(state, status) } ) } diff --git a/src/State/State__Command.res b/src/State/State__Command.res index 141214e6..78f42d4f 100644 --- a/src/State/State__Command.res +++ b/src/State/State__Command.res @@ -3,9 +3,12 @@ open Command // from Editor Command to Tasks let rec dispatchCommand = async (state: State.t, command): unit => { + state.channels.log->Chan.emit(CommandDispatched(command)) let dispatchCommand = dispatchCommand(state, ...) - let sendAgdaRequest = - State.sendRequest(state, State__Response.handle(state, dispatchCommand, ...), ...) + let sendAgdaRequest = async request => { + await State.sendRequest(state, State__Response.handle(state, dispatchCommand, ...), request) + state.channels.log->Chan.emit(CommandHandled(command)) + } let header = View.Header.Plain(Command.toString(command)) switch command { | Load => @@ -440,16 +443,11 @@ let rec dispatchCommand = async (state: State.t, command): unit => { ) } - | InputMethod(InsertChar(char)) => - await State__InputMethod.insertChar(state, char) - | InputMethod(BrowseUp) => - await State__InputMethod.moveUp(state) - | InputMethod(BrowseDown) => - await State__InputMethod.moveDown(state) - | InputMethod(BrowseLeft) => - await State__InputMethod.moveLeft(state) - | InputMethod(BrowseRight) => - await State__InputMethod.moveRight(state) + | InputMethod(InsertChar(char)) => await State__InputMethod.insertChar(state, char) + | InputMethod(BrowseUp) => await State__InputMethod.moveUp(state) + | InputMethod(BrowseDown) => await State__InputMethod.moveDown(state) + | InputMethod(BrowseLeft) => await State__InputMethod.moveLeft(state) + | InputMethod(BrowseRight) => await State__InputMethod.moveRight(state) | LookupSymbol => // get the selected text // query the user instead if no text is selected diff --git a/src/State/State__Type.res b/src/State/State__Type.res index 13dde333..f91c95f8 100644 --- a/src/State/State__Type.res +++ b/src/State/State__Type.res @@ -91,10 +91,27 @@ module ViewCache = { } } +// datatype for logging +module Log = { + type t = + | CommandDispatched(Command.t) + | CommandHandled(Command.t) + | Others(string) // generic string + + let toString = log => + switch log { + | CommandDispatched(command) => "[ command ] dispatched: " ++ Command.toString(command) + | CommandHandled(command) => "[ command ] handled: " ++ Command.toString(command) + | Others(str) => str + } +} + type channels = { inputMethod: Chan.t, // emits when a Response has been handled responseHandled: Chan.t, + // for debugging + log: Chan.t, } type t = { From 08a3231c81493a70dbb28abc979e5532a93f95d6 Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Fri, 25 Oct 2024 21:01:42 +0800 Subject: [PATCH 093/109] [ change ] Only resolve `State.Command.dispatchCommand` after all responses has been handled --- lib/js/src/Main.bs.js | 3 ++ lib/js/src/State.bs.js | 14 +++-- lib/js/src/State/State__Response.bs.js | 69 ++++++++++++------------- lib/js/src/State/State__Type.bs.js | 5 +- lib/js/test/tests/Test__CaseSplit.bs.js | 5 +- src/Main.res | 2 +- src/State.res | 14 +++-- src/State/State__Response.res | 30 ++++------- src/State/State__Type.res | 17 +++--- test/tests/Test__CaseSplit.res | 4 +- test/tests/Test__Util.res | 4 +- test/tests/assets/CaseSplit2.agda | 2 +- 12 files changed, 89 insertions(+), 80 deletions(-) diff --git a/lib/js/src/Main.bs.js b/lib/js/src/Main.bs.js index c1878737..05f593ba 100644 --- a/lib/js/src/Main.bs.js +++ b/lib/js/src/Main.bs.js @@ -176,6 +176,9 @@ function activateWithoutContext(subscriptions, extensionPath, globalStoragePath) responseHandled: channels_responseHandled, log: channels_log }; + Chan$AgdaModeVscode.on(channels_log, (function (message) { + console.log(State__Type$AgdaModeVscode.Log.toString(message)); + })); subscribe(onOpenEditor(function (editor) { var fileName = Parser$AgdaModeVscode.filepath(editor.document.fileName); if (isAgda(fileName)) { diff --git a/lib/js/src/State.bs.js b/lib/js/src/State.bs.js index bf2c2df1..a498f5ae 100644 --- a/lib/js/src/State.bs.js +++ b/lib/js/src/State.bs.js @@ -4,6 +4,7 @@ var IM$AgdaModeVscode = require("./InputMethod/IM.bs.js"); var Chan$AgdaModeVscode = require("./Util/Chan.bs.js"); var Goal$AgdaModeVscode = require("./Goal.bs.js"); +var Util$AgdaModeVscode = require("./Util/Util.bs.js"); var Config$AgdaModeVscode = require("./Config.bs.js"); var Tokens$AgdaModeVscode = require("./Tokens.bs.js"); var Connection$AgdaModeVscode = require("./Connection/Connection.bs.js"); @@ -30,21 +31,26 @@ function onDownload(state, $$event) { function sendRequest(state, handleResponse, request) { return State__Type$AgdaModeVscode.RequestQueue.push(state.agdaRequestQueue, (function (request) { + var match = Util$AgdaModeVscode.Promise_.pending(); + var resolve = match[1]; + var responseHandlerPromise = match[0]; var onResponse = async function (result) { if (result.TAG === "Ok") { - return await handleResponse(result._0); + await handleResponse(result._0); } else { - return await State__View$AgdaModeVscode.Panel.displayConnectionError(state, result._0); + await State__View$AgdaModeVscode.Panel.displayConnectionError(state, result._0); } + return resolve(); }; return Connection$AgdaModeVscode.sendRequest(state.globalStoragePath, (function (extra) { return onDownload(state, extra); }), Config$AgdaModeVscode.Connection.getUseAgdaLanguageServer(), state.document, request, onResponse).then(async function (result) { if (result.TAG === "Ok") { - return await State__View$AgdaModeVscode.Panel.displayConnectionStatus(state, result._0); + await State__View$AgdaModeVscode.Panel.displayConnectionStatus(state, result._0); } else { - return await State__View$AgdaModeVscode.Panel.displayConnectionError(state, result._0); + await State__View$AgdaModeVscode.Panel.displayConnectionError(state, result._0); } + return await responseHandlerPromise; }); }), request); } diff --git a/lib/js/src/State/State__Response.bs.js b/lib/js/src/State/State__Response.bs.js index 30baf84c..eb0f97d6 100644 --- a/lib/js/src/State/State__Response.bs.js +++ b/lib/js/src/State/State__Response.bs.js @@ -3,7 +3,6 @@ var Vscode = require("vscode"); var Js_string = require("rescript/lib/js/js_string.js"); -var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Chan$AgdaModeVscode = require("../Util/Chan.bs.js"); var Item$AgdaModeVscode = require("../View/Component/Item.bs.js"); var Util$AgdaModeVscode = require("../Util/Util.bs.js"); @@ -18,9 +17,7 @@ var Highlighting$AgdaModeVscode = require("../Highlighting.bs.js"); var Emacs__Parser2$AgdaModeVscode = require("../View/Panel/Emacs/Emacs__Parser2.bs.js"); function removeNewlines(string) { - return Belt_Array.joinWith(string.split("\n"), "\n", (function (x) { - return x; - })); + return string.split("\n").join("\n"); } async function handle(state, x) { @@ -39,21 +36,21 @@ async function handle(state, x) { }, [Item$AgdaModeVscode.plainText(x._0)]); case "CompilationOkLSP" : var message = [Item$AgdaModeVscode.plainText("The module was successfully compiled.")]; - var errors = Belt_Array.map(x._1, (function (raw) { - return Item$AgdaModeVscode.error(RichText$AgdaModeVscode.string(raw), raw); - })); - var warnings = Belt_Array.map(x._0, (function (raw) { - return Item$AgdaModeVscode.warning(RichText$AgdaModeVscode.string(raw), raw); - })); + var errors = x._1.map(function (raw) { + return Item$AgdaModeVscode.error(RichText$AgdaModeVscode.string(raw), raw); + }); + var warnings = x._0.map(function (raw) { + return Item$AgdaModeVscode.warning(RichText$AgdaModeVscode.string(raw), raw); + }); return await State__View$AgdaModeVscode.Panel.display(state, { TAG: "Success", _0: "Compilation result", [Symbol.for("name")]: "Success" - }, Belt_Array.concatMany([ - message, - errors, - warnings - ])); + }, [ + message, + errors, + warnings + ].flat()); case "Constraints" : var body = x._0; if (body === undefined) { @@ -86,22 +83,22 @@ async function handle(state, x) { [Symbol.for("name")]: "Plain" }, items$1); case "AllGoalsWarningsLSP" : - var errors$1 = Belt_Array.map(x._4, (function (raw) { - return Item$AgdaModeVscode.error(RichText$AgdaModeVscode.string(raw), raw); - })); - var warnings$1 = Belt_Array.map(x._3, (function (raw) { - return Item$AgdaModeVscode.warning(RichText$AgdaModeVscode.string(raw), raw); - })); + var errors$1 = x._4.map(function (raw) { + return Item$AgdaModeVscode.error(RichText$AgdaModeVscode.string(raw), raw); + }); + var warnings$1 = x._3.map(function (raw) { + return Item$AgdaModeVscode.warning(RichText$AgdaModeVscode.string(raw), raw); + }); return await State__View$AgdaModeVscode.Panel.display(state, { TAG: "Plain", _0: x._0, [Symbol.for("name")]: "Plain" - }, Belt_Array.concatMany([ - x._1, - x._2, - errors$1, - warnings$1 - ])); + }, [ + x._1, + x._2, + errors$1, + warnings$1 + ].flat()); case "Time" : var items$2 = Emacs__Parser2$AgdaModeVscode.parseAndRenderTextWithLocation(x._0); return await State__View$AgdaModeVscode.Panel.display(state, { @@ -258,10 +255,10 @@ async function handle$1(state, dispatchCommand, response) { case "GiveAction" : var give = response._1; var index = response._0; - var found = Belt_Array.keep(state.goals, (function (goal) { - return goal.index === index; - })); - var goal = Belt_Array.get(found, 0); + var found = state.goals.filter(function (goal) { + return goal.index === index; + }); + var goal = found[0]; if (goal === undefined) { return await State__View$AgdaModeVscode.Panel.display(state, { TAG: "Error", @@ -302,10 +299,10 @@ async function handle$1(state, dispatchCommand, response) { var solveOne = async function (param) { var solution = param[1]; var index = param[0]; - var goals = Belt_Array.keep(state.goals, (function (goal) { - return goal.index === index; - })); - var goal = Belt_Array.get(goals, 0); + var goals = state.goals.filter(function (goal) { + return goal.index === index; + }); + var goal = goals[0]; if (goal !== undefined) { await State__Goal$AgdaModeVscode.modify(state, goal, (function (param) { return solution; @@ -318,7 +315,7 @@ async function handle$1(state, dispatchCommand, response) { } }; - await Util$AgdaModeVscode.oneByOne(Belt_Array.map(solutions, solveOne)); + await Util$AgdaModeVscode.oneByOne(solutions.map(solveOne)); var size = solutions.length; if (size === 0) { return await State__View$AgdaModeVscode.Panel.display(state, { diff --git a/lib/js/src/State/State__Type.bs.js b/lib/js/src/State/State__Type.bs.js index ef74686d..d743f6a8 100644 --- a/lib/js/src/State/State__Type.bs.js +++ b/lib/js/src/State/State__Type.bs.js @@ -35,9 +35,8 @@ function push(self, sendRequestAndHandleResponses, request) { var match = Util$AgdaModeVscode.Promise_.pending(); var resolve = match[1]; var thunk = async function () { - var response = await sendRequestAndHandleResponses(request); - resolve(response); - return response; + await sendRequestAndHandleResponses(request); + return resolve(); }; Js_array.push(thunk, self.queue); kickStart(self); diff --git a/lib/js/test/tests/Test__CaseSplit.bs.js b/lib/js/test/tests/Test__CaseSplit.bs.js index e9ad563c..87467b30 100644 --- a/lib/js/test/tests/Test__CaseSplit.bs.js +++ b/lib/js/test/tests/Test__CaseSplit.bs.js @@ -84,13 +84,16 @@ describe("State__Goal.caseSplitAux dry run", (function () { })); })); -describe.skip("Integration test", (function () { +describe.only("Integration test", (function () { var fileContent = { contents: "" }; before(function () { return Test__Util$AgdaModeVscode.readFile(Test__Util$AgdaModeVscode.Path.asset("CaseSplit2.agda"), fileContent); }); + after(function () { + return Test__Util$AgdaModeVscode.restoreFile(Test__Util$AgdaModeVscode.Path.asset("CaseSplit2.agda"), fileContent); + }); it("should have more goals after splitting", (async function () { var ctx = await Test__Util$AgdaModeVscode.AgdaMode.make(undefined, "CaseSplit2.agda"); var state = await Test__Util$AgdaModeVscode.AgdaMode.load(ctx); diff --git a/src/Main.res b/src/Main.res index e15d5869..a0a1b9f2 100644 --- a/src/Main.res +++ b/src/Main.res @@ -210,7 +210,7 @@ let activateWithoutContext = (subscriptions, extensionPath, globalStoragePath) = log: Chan.make(), } // subscribe to the logging channel when in debug mode - let debug = false + let debug = true if debug { // log the event channels.log diff --git a/src/State.res b/src/State.res index 6aaf94d5..bb55c3dd 100644 --- a/src/State.res +++ b/src/State.res @@ -38,11 +38,18 @@ let sendRequest = ( request, handler: Response.t => promise, ): promise => { - let onResponse = async result => + let (responseHandlerPromise, resolve, _) = Util.Promise_.pending() + let onResponse = async result => { switch result { | Error(error) => await View.Panel.displayConnectionError(state, error) | Ok(response) => await handler(response) } + resolve() + } + + // only resolve the promise after: + // 1. the result of connection has been displayed + // 2. the response has been handled Connection.sendRequest( state.globalStoragePath, onDownload(state, ...), @@ -50,12 +57,13 @@ let sendRequest = ( state.document, request, onResponse - )->Promise.then(async result => + )->Promise.then(async result => { switch result { | Error(error) => await View.Panel.displayConnectionError(state, error) | Ok(status) => await View.Panel.displayConnectionStatus(state, status) } - ) + await responseHandlerPromise + }) } state.agdaRequestQueue->RequestQueue.push( diff --git a/src/State/State__Response.res b/src/State/State__Response.res index a01f6e61..09099353 100644 --- a/src/State/State__Response.res +++ b/src/State/State__Response.res @@ -1,7 +1,5 @@ // from Agda Response to Tasks -open Belt - -let removeNewlines = string => string->Js.String2.split("\n")->Belt.Array.joinWith("\n", x => x) +let removeNewlines = string => string->String.split("\n")->Array.join("\n") open Response module DisplayInfo = { @@ -18,7 +16,7 @@ module DisplayInfo = { await State.View.Panel.display( state, Success("Compilation result"), - Array.concatMany([message, errors, warnings]), + Array.flat([message, errors, warnings]), ) | Constraints(None) => await State.View.Panel.display(state, Plain("No Constraints"), []) | Constraints(Some(body)) => @@ -34,7 +32,7 @@ module DisplayInfo = { await State.View.Panel.display( state, Plain(header), - Array.concatMany([goals, metas, errors, warnings]), + Array.flat([goals, metas, errors, warnings]), ) | Time(body) => let items = Emacs__Parser2.parseAndRenderTextWithLocation(body) @@ -94,15 +92,12 @@ let rec handle = async ( switch response { | HighlightingInfoDirect(_keep, annotations) => state.tokens->Tokens.insert(state.editor, annotations) - | HighlightingInfoIndirect(filepath) => - state.tokens->Tokens.addEmacsFilePath(filepath) - | HighlightingInfoIndirectJSON(filepath) => - state.tokens->Tokens.addJSONFilePath(filepath) + | HighlightingInfoIndirect(filepath) => state.tokens->Tokens.addEmacsFilePath(filepath) + | HighlightingInfoIndirectJSON(filepath) => state.tokens->Tokens.addJSONFilePath(filepath) | ClearHighlighting => state.tokens->Tokens.clear state.highlighting->Highlighting.clear - | Status(_checked, _displayImplicit) => - // display( + | Status(_checked, _displayImplicit) => // display( // "Status", // Some( // "Typechecked: " @@ -136,10 +131,9 @@ let rec handle = async ( let point = state.document->VSCode.TextDocument.positionAt(offset - 1) Editor.Cursor.set(state.editor, point) } - | InteractionPoints(indices) => - await State__Goal.instantiate(state, indices) + | InteractionPoints(indices) => await State__Goal.instantiate(state, indices) | GiveAction(index, give) => - let found = state.goals->Array.keep(goal => goal.index == index) + let found = state.goals->Array.filter(goal => goal.index == index) switch found[0] { | None => await State.View.Panel.display( @@ -164,8 +158,7 @@ let rec handle = async ( } | MakeCase(makeCaseType, lines) => switch State__Goal.pointed(state) { - | None => - await State.View.Panel.displayOutOfGoalError(state) + | None => await State.View.Panel.displayOutOfGoalError(state) | Some((goal, _)) => switch makeCaseType { | Function => await State__Goal.replaceWithLines(state, goal, lines) @@ -175,7 +168,7 @@ let rec handle = async ( } | SolveAll(solutions) => let solveOne = async ((index, solution)) => { - let goals = state.goals->Array.keep(goal => goal.index == index) + let goals = state.goals->Array.filter(goal => goal.index == index) switch goals[0] { | None => () | Some(goal) => @@ -194,8 +187,7 @@ let rec handle = async ( } else { await State.View.Panel.display(state, Success(string_of_int(size) ++ " goals solved"), []) } - | DisplayInfo(info) => - await DisplayInfo.handle(state, info) + | DisplayInfo(info) => await DisplayInfo.handle(state, info) | RunningInfo(1, message) => let message = removeNewlines(message) await State.View.Panel.displayInAppendMode( diff --git a/src/State/State__Type.res b/src/State/State__Type.res index f91c95f8..54535354 100644 --- a/src/State/State__Type.res +++ b/src/State/State__Type.res @@ -3,13 +3,13 @@ open Belt // For throttling Requests send to Agda // 1 Request to Agda at a time module RequestQueue: { - type t<'a> - let make: unit => t<'a> + type t + let make: unit => t // only gets resolved after the Request has been handled - let push: (t<'a>, Request.t => promise<'a>, Request.t) => promise<'a> + let push: (t, Request.t => promise, Request.t) => promise } = { - type t<'a> = { - queue: array promise<'a>>, + type t = { + queue: array promise>, mutable busy: bool, } @@ -41,9 +41,8 @@ module RequestQueue: { let push = (self, sendRequestAndHandleResponses, request) => { let (promise, resolve, _) = Util.Promise_.pending() let thunk = async () => { - let response = await sendRequestAndHandleResponses(request) - resolve(response) - response + await sendRequestAndHandleResponses(request) + resolve() } // push to the back of the queue Js.Array.push(thunk, self.queue)->ignore @@ -129,7 +128,7 @@ type t = { // for self destruction onRemoveFromRegistry: Chan.t, // Agda Request queue - mutable agdaRequestQueue: RequestQueue.t, + mutable agdaRequestQueue: RequestQueue.t, globalStoragePath: string, extensionPath: string, channels: channels, diff --git a/test/tests/Test__CaseSplit.res b/test/tests/Test__CaseSplit.res index ed0e30ba..9d9b4011 100644 --- a/test/tests/Test__CaseSplit.res +++ b/test/tests/Test__CaseSplit.res @@ -38,11 +38,11 @@ describe("State__Goal.caseSplitAux dry run", () => { }) }) -describe_skip("Integration test", () => { +describe_only("Integration test", () => { let fileContent = ref("") Async.before(() => readFile(Path.asset("CaseSplit2.agda"), fileContent)) - // Async.after(() => restoreFile(Path.asset("CaseSplit2.agda"), fileContent)) + Async.after(() => restoreFile(Path.asset("CaseSplit2.agda"), fileContent)) Async.it("should have more goals after splitting", async () => { let ctx = await AgdaMode.make("CaseSplit2.agda") diff --git a/test/tests/Test__Util.res b/test/tests/Test__Util.res index cdf76b9b..e76c40df 100644 --- a/test/tests/Test__Util.res +++ b/test/tests/Test__Util.res @@ -327,7 +327,9 @@ module AgdaMode = { } switch await executeCommand("agda-mode.case") { | None => raise(Failure("Cannot case split " ++ self.filepath)) - | Some(Ok(state)) => state + | Some(Ok(state)) => + // state.channels. + state | Some(Error(error)) => let (header, body) = Connection.Error.toString(error) raise(Failure(header ++ "\n" ++ body)) diff --git a/test/tests/assets/CaseSplit2.agda b/test/tests/assets/CaseSplit2.agda index d293c9b4..e7621b1b 100644 --- a/test/tests/assets/CaseSplit2.agda +++ b/test/tests/assets/CaseSplit2.agda @@ -22,5 +22,5 @@ g1 = λ where x → {! !} y → {! !} -issue16 : ℕ → ℕ +issue16 : ℕ → ℕ issue16 = λ {x → {! !} } \ No newline at end of file From d9e44f07e0e34f33cc4481e5b9bec5002c101840 Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Tue, 29 Oct 2024 15:43:21 +0800 Subject: [PATCH 094/109] [ change ] Better handle the async behaviour of the interaction with Agda --- lib/js/src/Command.bs.js | 5 ++- .../Connection/Connection__Scheduler.bs.js | 23 +++++------ .../Connection/Emacs/Connection__Emacs.bs.js | 24 ++++++----- .../src/Connection/LSP/Connection__LSP.bs.js | 2 +- lib/js/src/Main.bs.js | 5 +-- lib/js/src/State.bs.js | 13 +++++- lib/js/src/State/State__Command.bs.js | 11 ++--- lib/js/src/State/State__Response.bs.js | 3 +- lib/js/src/State/State__Type.bs.js | 10 ++++- lib/js/src/View/View.bs.js | 20 ++++++++++ lib/js/test/tests/Test__CaseSplit.bs.js | 11 ++--- lib/js/test/tests/Test__Util.bs.js | 22 +++++++--- src/Command.res | 2 +- src/Connection/Connection__Scheduler.res | 40 +++++++++---------- src/Connection/Emacs/Connection__Emacs.res | 14 ++++--- src/Connection/LSP/Connection__LSP.res | 3 +- src/Main.res | 3 +- src/State.res | 5 ++- src/State/State__Command.res | 1 + src/State/State__Response.res | 7 +++- src/State/State__Type.res | 10 ++++- src/View/View.res | 9 +++++ test/tests/Test__CaseSplit.res | 11 ++--- test/tests/Test__Util.res | 23 +++++++++-- .../{CaseSplit1.agda => CaseSplit.agda} | 2 +- test/tests/assets/CaseSplit2.agda | 26 ------------ test/tests/assets/Load.agda | 4 ++ 27 files changed, 190 insertions(+), 119 deletions(-) rename test/tests/assets/{CaseSplit1.agda => CaseSplit.agda} (93%) delete mode 100644 test/tests/assets/CaseSplit2.agda create mode 100644 test/tests/assets/Load.agda diff --git a/lib/js/src/Command.bs.js b/lib/js/src/Command.bs.js index 6423f6be..74b23f3e 100644 --- a/lib/js/src/Command.bs.js +++ b/lib/js/src/Command.bs.js @@ -1,6 +1,7 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; +var View$AgdaModeVscode = require("./View/View.bs.js"); function encode(x) { switch (x) { @@ -597,7 +598,7 @@ function toString$2(x) { case "GoalTypeAndContext" : return "Goal type and context " + toString(x._0); case "EventFromView" : - return "Event from the view"; + return "Event from the view (" + View$AgdaModeVscode.EventFromView.toString(x._0) + ")"; case "GoalTypeContextAndInferredType" : return "Goal type, context and inferred type " + toString(x._0); case "GoalTypeContextAndCheckedType" : @@ -626,4 +627,4 @@ exports.ComputeMode = ComputeMode; exports.InputMethod = InputMethod; exports.names = names; exports.toString = toString$2; -/* No side effect */ +/* View-AgdaModeVscode Not a pure module */ diff --git a/lib/js/src/Connection/Connection__Scheduler.bs.js b/lib/js/src/Connection/Connection__Scheduler.bs.js index 116207d1..e655eefd 100644 --- a/lib/js/src/Connection/Connection__Scheduler.bs.js +++ b/lib/js/src/Connection/Connection__Scheduler.bs.js @@ -41,18 +41,17 @@ function onceDone(self) { } } -function runLast(self, handler) { - onceDone(self).finally(function () { - var deferredLastResponses = Belt_Array.map(Js_array.sortInPlaceWith((function (x, y) { - return Caml.int_compare(x[0], y[0]); - }), self.deferredLastResponses), (function (prim) { - return prim[1]; - })); - Js_array.unshift("CompleteHighlightingAndMakePromptReappear", deferredLastResponses); - Util$AgdaModeVscode.oneByOne(Belt_Array.map(deferredLastResponses, (function (res) { - return handler(res); - }))); - }); +async function runLast(self, handler) { + await onceDone(self); + var deferredLastResponses = Belt_Array.map(Js_array.sortInPlaceWith((function (x, y) { + return Caml.int_compare(x[0], y[0]); + }), self.deferredLastResponses), (function (prim) { + return prim[1]; + })); + Js_array.unshift("CompleteHighlightingAndMakePromptReappear", deferredLastResponses); + await Util$AgdaModeVscode.oneByOne(Belt_Array.map(deferredLastResponses, (function (res) { + return handler(res); + }))); } var Module = { diff --git a/lib/js/src/Connection/Emacs/Connection__Emacs.bs.js b/lib/js/src/Connection/Emacs/Connection__Emacs.bs.js index fcaf4679..917606b8 100644 --- a/lib/js/src/Connection/Emacs/Connection__Emacs.bs.js +++ b/lib/js/src/Connection/Emacs/Connection__Emacs.bs.js @@ -260,18 +260,20 @@ async function onResponse(conn, callback) { if (x.TAG === "Ok") { var match = x._0; if (typeof match !== "object") { - stopResponseListener({ - TAG: "Ok", - _0: undefined, - [Symbol.for("name")]: "Ok" + Connection__Scheduler$AgdaModeVscode.runLast(scheduler, (function (response) { + return callback({ + TAG: "Ok", + _0: response, + [Symbol.for("name")]: "Ok" + }); + })).finally(function () { + stopResponseListener({ + TAG: "Ok", + _0: undefined, + [Symbol.for("name")]: "Ok" + }); }); - return Connection__Scheduler$AgdaModeVscode.runLast(scheduler, (function (response) { - return callback({ - TAG: "Ok", - _0: response, - [Symbol.for("name")]: "Ok" - }); - })); + return ; } var response = match._0; if (response.TAG === "NonLast") { diff --git a/lib/js/src/Connection/LSP/Connection__LSP.bs.js b/lib/js/src/Connection/LSP/Connection__LSP.bs.js index d22f792a..b871e42b 100644 --- a/lib/js/src/Connection/LSP/Connection__LSP.bs.js +++ b/lib/js/src/Connection/LSP/Connection__LSP.bs.js @@ -835,7 +835,7 @@ async function sendRequest(self, request, handler) { }; } stopListeningForNotifications.dispose(); - Connection__Scheduler$AgdaModeVscode.runLast(scheduler, handler$1); + await Connection__Scheduler$AgdaModeVscode.runLast(scheduler, handler$1); return result; } diff --git a/lib/js/src/Main.bs.js b/lib/js/src/Main.bs.js index 05f593ba..351e7b8b 100644 --- a/lib/js/src/Main.bs.js +++ b/lib/js/src/Main.bs.js @@ -170,15 +170,14 @@ function activateWithoutContext(subscriptions, extensionPath, globalStoragePath) }; var channels_inputMethod = Chan$AgdaModeVscode.make(); var channels_responseHandled = Chan$AgdaModeVscode.make(); + var channels_commandHandled = Chan$AgdaModeVscode.make(); var channels_log = Chan$AgdaModeVscode.make(); var channels = { inputMethod: channels_inputMethod, responseHandled: channels_responseHandled, + commandHandled: channels_commandHandled, log: channels_log }; - Chan$AgdaModeVscode.on(channels_log, (function (message) { - console.log(State__Type$AgdaModeVscode.Log.toString(message)); - })); subscribe(onOpenEditor(function (editor) { var fileName = Parser$AgdaModeVscode.filepath(editor.document.fileName); if (isAgda(fileName)) { diff --git a/lib/js/src/State.bs.js b/lib/js/src/State.bs.js index a498f5ae..56546e3c 100644 --- a/lib/js/src/State.bs.js +++ b/lib/js/src/State.bs.js @@ -36,12 +36,23 @@ function sendRequest(state, handleResponse, request) { var responseHandlerPromise = match[0]; var onResponse = async function (result) { if (result.TAG === "Ok") { - await handleResponse(result._0); + var response = result._0; + await handleResponse(response); + Chan$AgdaModeVscode.emit(state.channels.log, { + TAG: "ResponseHandled", + _0: response, + [Symbol.for("name")]: "ResponseHandled" + }); } else { await State__View$AgdaModeVscode.Panel.displayConnectionError(state, result._0); } return resolve(); }; + Chan$AgdaModeVscode.emit(state.channels.log, { + TAG: "RequestSent", + _0: request, + [Symbol.for("name")]: "RequestSent" + }); return Connection$AgdaModeVscode.sendRequest(state.globalStoragePath, (function (extra) { return onDownload(state, extra); }), Config$AgdaModeVscode.Connection.getUseAgdaLanguageServer(), state.document, request, onResponse).then(async function (result) { diff --git a/lib/js/src/State/State__Command.bs.js b/lib/js/src/State/State__Command.bs.js index 355274f8..6799aae1 100644 --- a/lib/js/src/State/State__Command.bs.js +++ b/lib/js/src/State/State__Command.bs.js @@ -40,11 +40,12 @@ async function dispatchCommand(state, command) { await State$AgdaModeVscode.sendRequest(state, (function (extra) { return State__Response$AgdaModeVscode.handle(state, dispatchCommand$1, extra); }), request); - return Chan$AgdaModeVscode.emit(state.channels.log, { - TAG: "CommandHandled", - _0: command, - [Symbol.for("name")]: "CommandHandled" - }); + Chan$AgdaModeVscode.emit(state.channels.log, { + TAG: "CommandHandled", + _0: command, + [Symbol.for("name")]: "CommandHandled" + }); + return Chan$AgdaModeVscode.emit(state.channels.commandHandled, command); }; var header = { TAG: "Plain", diff --git a/lib/js/src/State/State__Response.bs.js b/lib/js/src/State/State__Response.bs.js index eb0f97d6..32cf3b5a 100644 --- a/lib/js/src/State/State__Response.bs.js +++ b/lib/js/src/State/State__Response.bs.js @@ -293,7 +293,8 @@ async function handle$1(state, dispatchCommand, response) { } else { await State__Goal$AgdaModeVscode.replaceWithLambda(state, goal$1, lines); } - return await dispatchCommand("Load"); + dispatchCommand("Load"); + return ; case "SolveAll" : var solutions = response._0; var solveOne = async function (param) { diff --git a/lib/js/src/State/State__Type.bs.js b/lib/js/src/State/State__Type.bs.js index d743f6a8..efc735ed 100644 --- a/lib/js/src/State/State__Type.bs.js +++ b/lib/js/src/State/State__Type.bs.js @@ -6,6 +6,8 @@ var Js_array = require("rescript/lib/js/js_array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Util$AgdaModeVscode = require("../Util/Util.bs.js"); var Command$AgdaModeVscode = require("../Command.bs.js"); +var Request$AgdaModeVscode = require("../Request.bs.js"); +var Response$AgdaModeVscode = require("../Response.bs.js"); var WebviewPanel$AgdaModeVscode = require("../View/WebviewPanel.bs.js"); function make() { @@ -112,9 +114,13 @@ var ViewCache = { function toString(log) { switch (log.TAG) { case "CommandDispatched" : - return "[ command ] dispatched: " + Command$AgdaModeVscode.toString(log._0); + return " <=== " + Command$AgdaModeVscode.toString(log._0); case "CommandHandled" : - return "[ command ] handled: " + Command$AgdaModeVscode.toString(log._0); + return " ===> " + Command$AgdaModeVscode.toString(log._0); + case "RequestSent" : + return " <- " + Request$AgdaModeVscode.toString(log._0); + case "ResponseHandled" : + return " > " + Response$AgdaModeVscode.toString(log._0); case "Others" : return log._0; diff --git a/lib/js/src/View/View.bs.js b/lib/js/src/View/View.bs.js index 08152deb..ae518a3e 100644 --- a/lib/js/src/View/View.bs.js +++ b/lib/js/src/View/View.bs.js @@ -751,6 +751,25 @@ var PromptIMUpdate = { encode: encode$8 }; +function toString$4(x) { + if (typeof x !== "object") { + if (x === "Initialized") { + return "Initialized"; + } else { + return "Destroyed"; + } + } + switch (x.TAG) { + case "InputMethod" : + return "InputMethod"; + case "PromptIMUpdate" : + return "PromptIMUpdate"; + case "JumpToTarget" : + return "JumpToTarget"; + + } +} + var chan = Chan$AgdaModeVscode.make(); var eventContext = React.createContext(chan); @@ -873,6 +892,7 @@ var encode$9 = Util$AgdaModeVscode.Encode.sum(function (x) { var EventFromView = { InputMethod: InputMethod$1, PromptIMUpdate: PromptIMUpdate, + toString: toString$4, chan: chan, eventContext: eventContext, Provider: Provider, diff --git a/lib/js/test/tests/Test__CaseSplit.bs.js b/lib/js/test/tests/Test__CaseSplit.bs.js index 87467b30..51b99304 100644 --- a/lib/js/test/tests/Test__CaseSplit.bs.js +++ b/lib/js/test/tests/Test__CaseSplit.bs.js @@ -11,7 +11,7 @@ var State__Goal$AgdaModeVscode = require("../../src/State/State__Goal.bs.js"); describe("State__Goal.caseSplitAux dry run", (function () { it("should calculate the infomation needed for case splitting correctly", (async function () { - var editor = await Vscode.window.showTextDocument(Vscode.Uri.file(Test__Util$AgdaModeVscode.Path.asset("CaseSplit1.agda")), undefined); + var editor = await Vscode.window.showTextDocument(Vscode.Uri.file(Test__Util$AgdaModeVscode.Path.asset("CaseSplit.agda")), undefined); var $$document = editor.document; var goals = await Goal$AgdaModeVscode.makeMany(editor, [ 0, @@ -84,18 +84,19 @@ describe("State__Goal.caseSplitAux dry run", (function () { })); })); -describe.only("Integration test", (function () { +describe("agda-mode:case", (function () { + this.timeout(10000); var fileContent = { contents: "" }; before(function () { - return Test__Util$AgdaModeVscode.readFile(Test__Util$AgdaModeVscode.Path.asset("CaseSplit2.agda"), fileContent); + return Test__Util$AgdaModeVscode.readFile(Test__Util$AgdaModeVscode.Path.asset("CaseSplit.agda"), fileContent); }); after(function () { - return Test__Util$AgdaModeVscode.restoreFile(Test__Util$AgdaModeVscode.Path.asset("CaseSplit2.agda"), fileContent); + return Test__Util$AgdaModeVscode.restoreFile(Test__Util$AgdaModeVscode.Path.asset("CaseSplit.agda"), fileContent); }); it("should have more goals after splitting", (async function () { - var ctx = await Test__Util$AgdaModeVscode.AgdaMode.make(undefined, "CaseSplit2.agda"); + var ctx = await Test__Util$AgdaModeVscode.AgdaMode.make(undefined, "CaseSplit.agda"); var state = await Test__Util$AgdaModeVscode.AgdaMode.load(ctx); var state$1 = await Test__Util$AgdaModeVscode.AgdaMode.$$case(ctx, [ new Vscode.Position(7, 16), diff --git a/lib/js/test/tests/Test__Util.bs.js b/lib/js/test/tests/Test__Util.bs.js index 7eb44bfb..d76414cb 100644 --- a/lib/js/test/tests/Test__Util.bs.js +++ b/lib/js/test/tests/Test__Util.bs.js @@ -397,15 +397,25 @@ async function $$case(self, cursorAndPayload, state) { } Editor$AgdaModeVscode.Cursor.set(editor, cursor); } - var match = await Vscode.commands.executeCommand("agda-mode.case"); - if (match !== undefined) { - if (match.TAG === "Ok") { - return match._0; + var match = Util$AgdaModeVscode.Promise_.pending(); + var resolve = match[1]; + var destructor = Chan$AgdaModeVscode.on(state.channels.commandHandled, (function (command) { + if (typeof command !== "object" && command === "Load") { + return resolve(); + } + + })); + var match$1 = await Vscode.commands.executeCommand("agda-mode.case"); + if (match$1 !== undefined) { + if (match$1.TAG === "Ok") { + await match[0]; + destructor(); + return match$1._0; } - var match$1 = Connection__Error$AgdaModeVscode.toString(match._0); + var match$2 = Connection__Error$AgdaModeVscode.toString(match$1._0); throw { RE_EXN_ID: "Failure", - _1: match$1[0] + "\n" + match$1[1], + _1: match$2[0] + "\n" + match$2[1], Error: new Error() }; } diff --git a/src/Command.res b/src/Command.res index 5f02690f..d81a3dd3 100644 --- a/src/Command.res +++ b/src/Command.res @@ -208,7 +208,7 @@ let toString = x => | ComputeNormalForm(UseShowInstance) => "Compute normal form (UseShowInstance)" | WhyInScope => "Why in scope" | SwitchAgdaVersion => "Switch to a different Agda version" - | EventFromView(_) => "Event from the view" + | EventFromView(event) => "Event from the view (" ++ View.EventFromView.toString(event) ++ ")" | Refresh => "Refresh " | Escape => "Escape" | InputMethod(action) => "Input symbol " ++ InputMethod.toString(action) diff --git a/src/Connection/Connection__Scheduler.res b/src/Connection/Connection__Scheduler.res index 07cd6c2d..f6f046ec 100644 --- a/src/Connection/Connection__Scheduler.res +++ b/src/Connection/Connection__Scheduler.res @@ -18,7 +18,7 @@ module Module: { let make: unit => t<'a> let addLast: (t<'a>, int, Response.t) => unit let runNonLast: (t<'a>, Response.t => Promise.t<'a>, Response.t) => unit - let runLast: (t<'a>, Response.t => Promise.t<'a>) => unit + let runLast: (t<'a>, Response.t => Promise.t<'a>) => promise } = { type t<'a> = { // keep the number of running NonLast Response @@ -34,12 +34,14 @@ module Module: { // NonLast Responses should fed here let runNonLast = (self, handler, response) => { self.tally = self.tally + 1 - handler(response)->Promise.finally(_ => { + handler(response) + ->Promise.finally(_ => { self.tally = self.tally - 1 if self.tally == 0 { self.allDone->Chan.emit() } - })->Promise.done + }) + ->Promise.done } // deferred (Last) Responses are queued here let addLast = (self, priority, response) => { @@ -53,25 +55,23 @@ module Module: { self.allDone->Chan.once } // start handling Last Responses, after all NonLast Responses have been handled - let runLast = (self, handler) => - self - ->onceDone - ->Promise.finally(() => { - // sort the deferred Responses by priority (ascending order) - let deferredLastResponses = - Js.Array.sortInPlaceWith( - (x, y) => compare(fst(x), fst(y)), - self.deferredLastResponses, - )->Array.map(snd) + let runLast = async (self, handler) => { + await self->onceDone + // sort the deferred Responses by priority (ascending order) + let deferredLastResponses = + Js.Array.sortInPlaceWith( + (x, y) => compare(fst(x), fst(y)), + self.deferredLastResponses, + )->Array.map(snd) - // insert `CompleteHighlightingAndMakePromptReappear` after handling Last Responses - Js.Array.unshift( - Response.CompleteHighlightingAndMakePromptReappear, - deferredLastResponses, - )->ignore + // insert `CompleteHighlightingAndMakePromptReappear` after handling Last Responses + Js.Array.unshift( + Response.CompleteHighlightingAndMakePromptReappear, + deferredLastResponses, + )->ignore - deferredLastResponses->Array.map(res => handler(res))->Util.oneByOne->ignore - })->Promise.done + let _ = await deferredLastResponses->Array.map(res => handler(res))->Util.oneByOne + } } include Module diff --git a/src/Connection/Emacs/Connection__Emacs.res b/src/Connection/Emacs/Connection__Emacs.res index a40eaf2f..5019bba1 100644 --- a/src/Connection/Emacs/Connection__Emacs.res +++ b/src/Connection/Emacs/Connection__Emacs.res @@ -213,13 +213,15 @@ module Module: Module = { scheduler->Scheduler.runNonLast(response => callback(Ok(response)), response) | Ok(Yield(Last(priority, response))) => scheduler->Scheduler.addLast(priority, response) | Ok(Stop) => - // stop the Agda Response listener - stopResponseListener(Ok()) // start handling Last Responses, after all NonLast Responses have been handled - scheduler->Scheduler.runLast(response => { - callback(Ok(response)) - // resolve the `responseHandlingPromise` after all Last Responses have been handled - }) + // resolve the `responseHandlingPromise` after all Last Responses have been handled + scheduler + ->Scheduler.runLast(response => callback(Ok(response))) + ->Promise.finally(() => + // stop the Agda Response listener + stopResponseListener(Ok()) + ) + ->Promise.done } // start listening for responses diff --git a/src/Connection/LSP/Connection__LSP.res b/src/Connection/LSP/Connection__LSP.res index 95d9df80..8eb4a26f 100644 --- a/src/Connection/LSP/Connection__LSP.res +++ b/src/Connection/LSP/Connection__LSP.res @@ -304,8 +304,7 @@ module Module: Module = { // stop listening for requests from server once `ResponseEnd` arrived stopListeningForNotifications->VSCode.Disposable.dispose // start handling Last Responses, after all NonLast Responses have been handled - scheduler->Scheduler.runLast(handler) - + await scheduler->Scheduler.runLast(handler) result } } diff --git a/src/Main.res b/src/Main.res index a0a1b9f2..8ae817ff 100644 --- a/src/Main.res +++ b/src/Main.res @@ -207,10 +207,11 @@ let activateWithoutContext = (subscriptions, extensionPath, globalStoragePath) = let channels = { State__Type.inputMethod: Chan.make(), responseHandled: Chan.make(), + commandHandled: Chan.make(), log: Chan.make(), } // subscribe to the logging channel when in debug mode - let debug = true + let debug = false if debug { // log the event channels.log diff --git a/src/State.res b/src/State.res index bb55c3dd..e66d02c0 100644 --- a/src/State.res +++ b/src/State.res @@ -42,11 +42,14 @@ let sendRequest = ( let onResponse = async result => { switch result { | Error(error) => await View.Panel.displayConnectionError(state, error) - | Ok(response) => await handler(response) + | Ok(response) => + await handler(response) + state.channels.log->Chan.emit(ResponseHandled(response)) } resolve() } + state.channels.log->Chan.emit(RequestSent(request)) // only resolve the promise after: // 1. the result of connection has been displayed // 2. the response has been handled diff --git a/src/State/State__Command.res b/src/State/State__Command.res index 78f42d4f..8c6645d5 100644 --- a/src/State/State__Command.res +++ b/src/State/State__Command.res @@ -8,6 +8,7 @@ let rec dispatchCommand = async (state: State.t, command): unit => { let sendAgdaRequest = async request => { await State.sendRequest(state, State__Response.handle(state, dispatchCommand, ...), request) state.channels.log->Chan.emit(CommandHandled(command)) + state.channels.commandHandled->Chan.emit(command) } let header = View.Header.Plain(Command.toString(command)) switch command { diff --git a/src/State/State__Response.res b/src/State/State__Response.res index 09099353..35ba695b 100644 --- a/src/State/State__Response.res +++ b/src/State/State__Response.res @@ -131,7 +131,8 @@ let rec handle = async ( let point = state.document->VSCode.TextDocument.positionAt(offset - 1) Editor.Cursor.set(state.editor, point) } - | InteractionPoints(indices) => await State__Goal.instantiate(state, indices) + | InteractionPoints(indices) => + await State__Goal.instantiate(state, indices) | GiveAction(index, give) => let found = state.goals->Array.filter(goal => goal.index == index) switch found[0] { @@ -164,7 +165,9 @@ let rec handle = async ( | Function => await State__Goal.replaceWithLines(state, goal, lines) | ExtendedLambda => await State__Goal.replaceWithLambda(state, goal, lines) } - await dispatchCommand(Load) + // dispatch `agda-mode:load` but do it asynchronously + // so that we can finish let `agda-mode:case` finish first + dispatchCommand(Load)->ignore } | SolveAll(solutions) => let solveOne = async ((index, solution)) => { diff --git a/src/State/State__Type.res b/src/State/State__Type.res index 54535354..56b146d9 100644 --- a/src/State/State__Type.res +++ b/src/State/State__Type.res @@ -95,12 +95,16 @@ module Log = { type t = | CommandDispatched(Command.t) | CommandHandled(Command.t) + | RequestSent(Request.t) + | ResponseHandled(Response.t) | Others(string) // generic string let toString = log => switch log { - | CommandDispatched(command) => "[ command ] dispatched: " ++ Command.toString(command) - | CommandHandled(command) => "[ command ] handled: " ++ Command.toString(command) + | CommandDispatched(command) => " <=== " ++ Command.toString(command) + | RequestSent(request) => " <- " ++ Request.toString(request) + | ResponseHandled(response) => " > " ++ Response.toString(response) + | CommandHandled(command) => " ===> " ++ Command.toString(command) | Others(str) => str } } @@ -109,6 +113,8 @@ type channels = { inputMethod: Chan.t, // emits when a Response has been handled responseHandled: Chan.t, + // emits when a Command has been handled + commandHandled: Chan.t, // for debugging log: Chan.t, } diff --git a/src/View/View.res b/src/View/View.res index 8fee5e62..c9184961 100644 --- a/src/View/View.res +++ b/src/View/View.res @@ -338,6 +338,15 @@ module EventFromView = { | PromptIMUpdate(PromptIMUpdate.t) | JumpToTarget(Link.t) + let toString = x => + switch x { + | Initialized => "Initialized" + | Destroyed => "Destroyed" + | InputMethod(_) => "InputMethod" + | PromptIMUpdate(_) => "PromptIMUpdate" + | JumpToTarget(_) => "JumpToTarget" + } + let chan: Chan.t = Chan.make() let eventContext = React.createContext(chan) diff --git a/test/tests/Test__CaseSplit.res b/test/tests/Test__CaseSplit.res index 9d9b4011..07834c30 100644 --- a/test/tests/Test__CaseSplit.res +++ b/test/tests/Test__CaseSplit.res @@ -4,7 +4,7 @@ open Test__Util describe("State__Goal.caseSplitAux dry run", () => { Async.it("should calculate the infomation needed for case splitting correctly", async () => { let editor = await VSCode.Window.showTextDocumentWithUri( - VSCode.Uri.file(Path.asset("CaseSplit1.agda")), + VSCode.Uri.file(Path.asset("CaseSplit.agda")), None, ) let document = VSCode.TextEditor.document(editor) @@ -38,14 +38,15 @@ describe("State__Goal.caseSplitAux dry run", () => { }) }) -describe_only("Integration test", () => { +describe("agda-mode:case", () => { + This.timeout(10000) let fileContent = ref("") - Async.before(() => readFile(Path.asset("CaseSplit2.agda"), fileContent)) - Async.after(() => restoreFile(Path.asset("CaseSplit2.agda"), fileContent)) + Async.before(() => readFile(Path.asset("CaseSplit.agda"), fileContent)) + Async.after(() => restoreFile(Path.asset("CaseSplit.agda"), fileContent)) Async.it("should have more goals after splitting", async () => { - let ctx = await AgdaMode.make("CaseSplit2.agda") + let ctx = await AgdaMode.make("CaseSplit.agda") let state = await ctx->AgdaMode.load let state = await ctx->AgdaMode.case(Some(VSCode.Position.make(7, 16), "x"), state) Assert.deepEqual(Array.length(state.goals), 10) diff --git a/test/tests/Test__Util.res b/test/tests/Test__Util.res index e76c40df..f575768d 100644 --- a/test/tests/Test__Util.res +++ b/test/tests/Test__Util.res @@ -316,6 +316,7 @@ module AgdaMode = { let case = async (self, cursorAndPayload, state: State__Type.t) => { let editor = await openFile(self.filepath) + // set cursor and insert the target for case splitting switch cursorAndPayload { | None => () | Some(cursor, payload) => @@ -325,11 +326,27 @@ module AgdaMode = { } Editor.Cursor.set(editor, cursor) } + + // The `agda-mode.load` command will be issued after `agda-mode.case` is executed + // listen to the `agda-mode.load` command to know when the whole case split process is done + let (promise, resolve, _) = Util.Promise_.pending() + let destructor = state.channels.commandHandled->Chan.on(command => { + switch command { + | Command.Load => resolve() + | _ => () + } + }) + switch await executeCommand("agda-mode.case") { | None => raise(Failure("Cannot case split " ++ self.filepath)) - | Some(Ok(state)) => - // state.channels. - state + | Some(Ok(state)) => + // wait for the `agda-mode.load` command to be handled + await promise + // stop listening to commands + destructor() + + // resolve the promise + state | Some(Error(error)) => let (header, body) = Connection.Error.toString(error) raise(Failure(header ++ "\n" ++ body)) diff --git a/test/tests/assets/CaseSplit1.agda b/test/tests/assets/CaseSplit.agda similarity index 93% rename from test/tests/assets/CaseSplit1.agda rename to test/tests/assets/CaseSplit.agda index 4f0d2c2a..c6c53cd0 100644 --- a/test/tests/assets/CaseSplit1.agda +++ b/test/tests/assets/CaseSplit.agda @@ -1,4 +1,4 @@ -module CaseSplit1 where +module CaseSplit where data ℕ : Set where Z : ℕ diff --git a/test/tests/assets/CaseSplit2.agda b/test/tests/assets/CaseSplit2.agda deleted file mode 100644 index e7621b1b..00000000 --- a/test/tests/assets/CaseSplit2.agda +++ /dev/null @@ -1,26 +0,0 @@ -module CaseSplit2 where - -data ℕ : Set where - Z : ℕ - S : ℕ → ℕ - -f0 : ℕ → ℕ -f0 = λ { x → {! !} ; y → {! !} } - -f1 : ℕ → ℕ -f1 = λ - { x → {! !} - ; y → {! !} - } - -g0 : ℕ → ℕ -g0 = λ where x → {! !} - y → {! !} - -g1 : ℕ → ℕ -g1 = λ where - x → {! !} - y → {! !} - -issue16 : ℕ → ℕ -issue16 = λ {x → {! !} } \ No newline at end of file diff --git a/test/tests/assets/Load.agda b/test/tests/assets/Load.agda new file mode 100644 index 00000000..40162c75 --- /dev/null +++ b/test/tests/assets/Load.agda @@ -0,0 +1,4 @@ +module Load where + +a : ? +a = ? \ No newline at end of file From 4a11531c83197edb7677d67007c7279dd8335cac Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Wed, 30 Oct 2024 13:33:36 +0800 Subject: [PATCH 095/109] [ fix ] Allow the testing to exit with exit code 1 when something failed --- lib/js/test/RunTestFromCLI.bs.js | 21 ++++++--------------- test/RunTestFromCLI.res | 20 ++++++-------------- 2 files changed, 12 insertions(+), 29 deletions(-) diff --git a/lib/js/test/RunTestFromCLI.bs.js b/lib/js/test/RunTestFromCLI.bs.js index 4edd4e34..463bdf89 100644 --- a/lib/js/test/RunTestFromCLI.bs.js +++ b/lib/js/test/RunTestFromCLI.bs.js @@ -3,7 +3,6 @@ var Process = require("process"); var Nodepath = require("node:path"); -var Caml_js_exceptions = require("rescript/lib/js/caml_js_exceptions.js"); var TestElectron = require("@vscode/test-electron"); var testSuiteAdapterFileName = "TestSuiteAdapter.bs.js"; @@ -14,20 +13,12 @@ var extensionTestsPath = Nodepath.resolve(__dirname, testSuiteAdapterFileName); console.log("Running from the CLI, with\n extensionDevelopmentPath: " + (extensionDevelopmentPath + ("\n extensionTestsPath: " + extensionTestsPath))); -try { - TestElectron.runTests({ - extensionDevelopmentPath: extensionDevelopmentPath, - extensionTestsPath: extensionTestsPath - }).finally(function () { - Process.exit(0); - }); -} -catch (raw_error){ - var error = Caml_js_exceptions.internalToOCamlException(raw_error); - console.log(error); - console.log("Failed to run tests"); - Process.exit(1); -} +TestElectron.runTests({ + extensionDevelopmentPath: extensionDevelopmentPath, + extensionTestsPath: extensionTestsPath + }).then(function (param) { + Process.exit(0); + }); exports.testSuiteAdapterFileName = testSuiteAdapterFileName; exports.extensionDevelopmentPath = extensionDevelopmentPath; diff --git a/test/RunTestFromCLI.res b/test/RunTestFromCLI.res index e6078565..37692fd7 100644 --- a/test/RunTestFromCLI.res +++ b/test/RunTestFromCLI.res @@ -23,17 +23,9 @@ Js.log( ("\n extensionTestsPath: " ++ extensionTestsPath)), ) -try { - runTests({ - extensionDevelopmentPath, - extensionTestsPath, - })->Promise.finally(() => { - NodeJs.Process.process->NodeJs.Process.exitWithCode(0) - })->ignore -} catch { -| error => - Js.log(error) - Js.log("Failed to run tests") - NodeJs.Process.process->NodeJs.Process.exitWithCode(1) -} - +runTests({ + extensionDevelopmentPath, + extensionTestsPath, +}) +->Promise.thenResolve(_ => NodeJs.Process.process->NodeJs.Process.exitWithCode(0)) +->Promise.done From 05143ca74167a46271d34f90c7639bbcdf24190d Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Wed, 30 Oct 2024 14:22:45 +0800 Subject: [PATCH 096/109] [ refactor ] Move Agda/VSCode position convertion to one place --- lib/js/src/Editor.bs.js | 14 +- lib/js/src/InputMethod/IM.bs.js | 188 +++++++++++++------------- lib/js/src/State/State__Command.bs.js | 3 +- lib/js/src/View/Common.bs.js | 11 ++ src/Editor.res | 9 -- src/InputMethod/IM.res | 70 +++++----- src/State/State__Command.res | 2 +- src/View/Common.res | 6 + 8 files changed, 148 insertions(+), 155 deletions(-) diff --git a/lib/js/src/Editor.bs.js b/lib/js/src/Editor.bs.js index 53a3aaca..58de9574 100644 --- a/lib/js/src/Editor.bs.js +++ b/lib/js/src/Editor.bs.js @@ -18,15 +18,10 @@ function toOffset($$document, position) { return $$document.offsetAt(position); } -function fromAgdaPosition(position) { - return new Vscode.Position(position.line - 1 | 0, position.col - 1 | 0); -} - var Position = { toString: toString, fromOffset: fromOffset, - toOffset: toOffset, - fromAgdaPosition: fromAgdaPosition + toOffset: toOffset }; function toString$1(range) { @@ -50,15 +45,10 @@ function toInterval($$document, range) { ]; } -function fromAgdaInterval(range) { - return new Vscode.Range(fromAgdaPosition(range.start), fromAgdaPosition(range.end_)); -} - var $$Range = { toString: toString$1, fromInterval: fromInterval, - toInterval: toInterval, - fromAgdaInterval: fromAgdaInterval + toInterval: toInterval }; function decorate(editor, decoration, ranges) { diff --git a/lib/js/src/InputMethod/IM.bs.js b/lib/js/src/InputMethod/IM.bs.js index e9a82630..897dec24 100644 --- a/lib/js/src/InputMethod/IM.bs.js +++ b/lib/js/src/InputMethod/IM.bs.js @@ -4,10 +4,10 @@ var Caml = require("rescript/lib/js/caml.js"); var Vscode = require("vscode"); var Js_array = require("rescript/lib/js/js_array.js"); -var Belt_List = require("rescript/lib/js/belt_List.js"); -var Belt_Array = require("rescript/lib/js/belt_Array.js"); -var Belt_Option = require("rescript/lib/js/belt_Option.js"); +var Core__List = require("@rescript/core/lib/js/src/Core__List.bs.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); +var Core__Array = require("@rescript/core/lib/js/src/Core__Array.bs.js"); +var Core__Option = require("@rescript/core/lib/js/src/Core__Option.bs.js"); var Chan$AgdaModeVscode = require("../Util/Chan.bs.js"); var Util$AgdaModeVscode = require("../Util/Util.bs.js"); var Buffer$AgdaModeVscode = require("./Buffer.bs.js"); @@ -19,13 +19,13 @@ function fromTextDocumentChangeEvent(editor, $$event) { var fileName = Parser$AgdaModeVscode.filepath(editor.document.fileName); var eventFileName = Parser$AgdaModeVscode.filepath($$event.document.fileName); if (fileName === eventFileName) { - return Belt_Array.map($$event.contentChanges, (function (change) { - return { - offset: change.rangeOffset, - insertedText: change.text, - replacedTextLength: change.rangeLength - }; - })); + return $$event.contentChanges.map(function (change) { + return { + offset: change.rangeOffset, + insertedText: change.text, + replacedTextLength: change.rangeLength + }; + }); } else { return []; } @@ -38,23 +38,23 @@ var Input = { var Output = {}; function fromOutput(xs) { - return Belt_Array.map(xs, (function (x) { - if (typeof x !== "object") { - if (x === "Activate") { - return "Activate"; - } else { - return "Deactivate"; - } - } else if (x.TAG === "UpdateView") { - return "UpdateView"; + return xs.map(function (x) { + if (typeof x !== "object") { + if (x === "Activate") { + return "Activate"; } else { - return { - TAG: "RewriteIssued", - _0: x._0, - [Symbol.for("name")]: "RewriteIssued" - }; + return "Deactivate"; } - })); + } else if (x.TAG === "UpdateView") { + return "UpdateView"; + } else { + return { + TAG: "RewriteIssued", + _0: x._0, + [Symbol.for("name")]: "RewriteIssued" + }; + } + }); } var Log = { @@ -66,11 +66,11 @@ function withIn(instance, offset) { } function destroy(instance) { - Belt_Option.forEach(instance.decoration, Editor$AgdaModeVscode.Decoration.destroy); + Core__Option.forEach(instance.decoration, Editor$AgdaModeVscode.Decoration.destroy); } function logOutput(self, output) { - if (output.length !== 0) { + if (output.length > 0) { return Chan$AgdaModeVscode.emit(self.chanLog, fromOutput(output)); } @@ -86,26 +86,26 @@ function make(chanLog) { } function validateCursorPositions(instances, intervals) { - return Belt_Array.keep(instances, (function (instance) { - var survived = Belt_Array.some(intervals, (function (param) { - if (withIn(instance, param[0])) { - return withIn(instance, param[1]); - } else { - return false; - } - })); - if (!survived) { - destroy(instance); - } - return survived; - })); + return instances.filter(function (instance) { + var survived = intervals.some(function (param) { + if (withIn(instance, param[0])) { + return withIn(instance, param[1]); + } else { + return false; + } + }); + if (!survived) { + destroy(instance); + } + return survived; + }); } function toRewrites(instances, modify) { var accum = { contents: 0 }; - return Belt_Array.keepMap(instances, (function (instance) { + return Core__Array.filterMap(instances, (function (instance) { var match = instance.interval; var end_ = match[1]; var start = match[0]; @@ -113,7 +113,7 @@ function toRewrites(instances, modify) { start + accum.contents | 0, end_ + accum.contents | 0 ]; - return Belt_Option.map(modify(instance), (function (replacement) { + return Core__Option.map(modify(instance), (function (replacement) { var delta = replacement.length - (end_ - start | 0) | 0; accum.contents = accum.contents + delta | 0; instance.interval = [ @@ -202,7 +202,7 @@ function groupChangeWithInstances(instances, changes) { } var match$3 = x[1]; if (match$3) { - return Belt_List.map({ + return Core__List.map({ hd: match$3.hd, tl: match$3.tl }, (function (i) { @@ -216,9 +216,9 @@ function groupChangeWithInstances(instances, changes) { } }; }; - return Belt_List.toArray(go(0, [ - Belt_List.fromArray(changes$1), - Belt_List.fromArray(instances) + return Core__List.toArray(go(0, [ + Core__List.fromArray(changes$1), + Core__List.fromArray(instances) ])); } @@ -228,7 +228,7 @@ function updateInstances(instances, changes) { var accum = { contents: 0 }; - var instances$1 = Belt_Array.keepMap(instancesWithChanges, (function (param) { + var instances$1 = Core__Array.filterMap(instancesWithChanges, (function (param) { var change = param[1]; var instance = param[0]; if (change === undefined) { @@ -236,7 +236,7 @@ function updateInstances(instances, changes) { } var match = Buffer$AgdaModeVscode.update(instance.buffer, instance.interval[0], change); var buffer = match[0]; - Belt_Option.forEach(match[1], (function (text) { + Core__Option.forEach(match[1], (function (text) { var match = instance.interval; var end_ = match[1]; var start = match[0]; @@ -245,14 +245,14 @@ function updateInstances(instances, changes) { start + accum.contents | 0, (end_ + accum.contents | 0) + delta | 0 ]; - Js_array.push({ + rewrites.push({ interval: [ start, end_ ], text: text, instance: buffer.translation.further ? instance : undefined - }, rewrites); + }); accum.contents = accum.contents + delta | 0; })); var intervalLengthIs0 = instance.interval[0] === instance.interval[1]; @@ -273,9 +273,9 @@ function updateInstances(instances, changes) { } function bufferIsEmpty(im) { - return Belt_Array.every(im.instances, (function (instance) { - return Buffer$AgdaModeVscode.isEmpty(instance.buffer); - })); + return im.instances.every(function (instance) { + return Buffer$AgdaModeVscode.isEmpty(instance.buffer); + }); } function isActivated(self) { @@ -283,39 +283,39 @@ function isActivated(self) { } function deactivate(self) { - Belt_Array.forEach(self.instances, destroy); + self.instances.forEach(destroy); self.instances = []; self.activated = false; } function applyRewrites(self, editor, rewrites) { self.semaphore = true; - var replacements = Belt_Array.map(rewrites, (function (param) { - return [ - param.interval, - param.text - ]; - })); + var replacements = rewrites.map(function (param) { + return [ + param.interval, + param.text + ]; + }); var match = Util$AgdaModeVscode.Promise_.pending(); var resolve = match[1]; match[0].finally(function () { - Belt_Array.forEach(rewrites, (function (rewrite) { - Belt_Option.forEach(rewrite.instance, (function (instance) { - Belt_Option.forEach(editor, (function (extra) { - Belt_Option.forEach(instance.decoration, Editor$AgdaModeVscode.Decoration.destroy); - var $$document = extra.document; - var match = instance.interval; - var start = $$document.positionAt(match[0]); - var end_ = $$document.positionAt(match[1]); - var range = new Vscode.Range(start, end_); - instance.decoration = Caml_option.some(Editor$AgdaModeVscode.Decoration.underlineText(extra, range)); - })); - })); - })); + rewrites.forEach(function (rewrite) { + Core__Option.forEach(rewrite.instance, (function (instance) { + Core__Option.forEach(editor, (function (extra) { + Core__Option.forEach(instance.decoration, Editor$AgdaModeVscode.Decoration.destroy); + var $$document = extra.document; + var match = instance.interval; + var start = $$document.positionAt(match[0]); + var end_ = $$document.positionAt(match[1]); + var range = new Vscode.Range(start, end_); + instance.decoration = Caml_option.some(Editor$AgdaModeVscode.Decoration.underlineText(extra, range)); + })); + })); + }); self.semaphore = false; Chan$AgdaModeVscode.emit(self.chanLog, ["RewriteApplied"]); }); - var instance = Belt_Array.get(self.instances, 0); + var instance = self.instances[0]; if (instance !== undefined) { return [ { @@ -354,26 +354,28 @@ function run(self, editor, input) { } else { switch (input.TAG) { case "Activate" : + var intervals = input._0; self.activated = true; - self.instances = Belt_Array.map(Js_array.sortInPlaceWith((function (x, y) { - return Caml.int_compare(x[0], y[0]); - }), input._0), (function (extra) { - if (editor === undefined) { - return { - interval: extra, - decoration: undefined, - buffer: Buffer$AgdaModeVscode.make() - }; - } - var editor$1 = Caml_option.valFromOption(editor); - var $$document = editor$1.document; - var range = Editor$AgdaModeVscode.$$Range.fromInterval($$document, extra); + intervals.sort(function (x, y) { + return Caml.int_compare(x[0], y[0]); + }); + self.instances = intervals.map(function (extra) { + if (editor === undefined) { return { interval: extra, - decoration: Caml_option.some(Editor$AgdaModeVscode.Decoration.underlineText(editor$1, range)), + decoration: undefined, buffer: Buffer$AgdaModeVscode.make() }; - })); + } + var editor$1 = Caml_option.valFromOption(editor); + var $$document = editor$1.document; + var range = Editor$AgdaModeVscode.$$Range.fromInterval($$document, extra); + return { + interval: extra, + decoration: Caml_option.some(Editor$AgdaModeVscode.Decoration.underlineText(editor$1, range)), + buffer: Buffer$AgdaModeVscode.make() + }; + }); output = ["Activate"]; break; case "KeyUpdate" : @@ -402,25 +404,25 @@ function run(self, editor, input) { case "BrowseUp" : callback = (function (instance) { instance.buffer = Buffer$AgdaModeVscode.moveUp(instance.buffer); - return Belt_Array.get(instance.buffer.translation.candidateSymbols, instance.buffer.candidateIndex); + return instance.buffer.translation.candidateSymbols[instance.buffer.candidateIndex]; }); break; case "BrowseDown" : callback = (function (instance) { instance.buffer = Buffer$AgdaModeVscode.moveDown(instance.buffer); - return Belt_Array.get(instance.buffer.translation.candidateSymbols, instance.buffer.candidateIndex); + return instance.buffer.translation.candidateSymbols[instance.buffer.candidateIndex]; }); break; case "BrowseLeft" : callback = (function (instance) { instance.buffer = Buffer$AgdaModeVscode.moveLeft(instance.buffer); - return Belt_Array.get(instance.buffer.translation.candidateSymbols, instance.buffer.candidateIndex); + return instance.buffer.translation.candidateSymbols[instance.buffer.candidateIndex]; }); break; case "BrowseRight" : callback = (function (instance) { instance.buffer = Buffer$AgdaModeVscode.moveRight(instance.buffer); - return Belt_Array.get(instance.buffer.translation.candidateSymbols, instance.buffer.candidateIndex); + return instance.buffer.translation.candidateSymbols[instance.buffer.candidateIndex]; }); break; diff --git a/lib/js/src/State/State__Command.bs.js b/lib/js/src/State/State__Command.bs.js index 6799aae1..a3098d1c 100644 --- a/lib/js/src/State/State__Command.bs.js +++ b/lib/js/src/State/State__Command.bs.js @@ -14,6 +14,7 @@ var Goal$AgdaModeVscode = require("../Goal.bs.js"); var Item$AgdaModeVscode = require("../View/Component/Item.bs.js"); var Util$AgdaModeVscode = require("../Util/Util.bs.js"); var State$AgdaModeVscode = require("../State.bs.js"); +var Common$AgdaModeVscode = require("../View/Common.bs.js"); var Config$AgdaModeVscode = require("../Config.bs.js"); var Editor$AgdaModeVscode = require("../Editor.bs.js"); var Parser$AgdaModeVscode = require("../Parser/Parser.bs.js"); @@ -614,7 +615,7 @@ async function dispatchCommand(state, command) { if (removeRoot(path) !== removeRoot(fileName$1)) { return ; } - var ranges = Belt_Array.map(match$14._1, Editor$AgdaModeVscode.$$Range.fromAgdaInterval); + var ranges = Belt_Array.map(match$14._1, Common$AgdaModeVscode.AgdaInterval.toVSCodeRange); Editor$AgdaModeVscode.$$Selection.setMany(state.editor, ranges); return Belt_Option.forEach(Belt_Array.get(ranges, 0), (function (range) { VSCode.TextEditor.revealRange(state.editor, range, undefined); diff --git a/lib/js/src/View/Common.bs.js b/lib/js/src/View/Common.bs.js index cc321b36..62c65407 100644 --- a/lib/js/src/View/Common.bs.js +++ b/lib/js/src/View/Common.bs.js @@ -1,6 +1,7 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; +var Vscode = require("vscode"); var Caml_obj = require("rescript/lib/js/caml_obj.js"); var Belt_List = require("rescript/lib/js/belt_List.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); @@ -11,6 +12,10 @@ var Json_Decode$JsonCombinators = require("@glennsl/rescript-json-combinators/li var Json_Encode$JsonCombinators = require("@glennsl/rescript-json-combinators/lib/js/src/Json_Encode.bs.js"); var Emacs__Parser$AgdaModeVscode = require("./Panel/Emacs/Emacs__Parser.bs.js"); +function toVSCodePosition(position) { + return new Vscode.Position(position.line - 1 | 0, position.col - 1 | 0); +} + var decode = Json_Decode$JsonCombinators.map(Json_Decode$JsonCombinators.tuple3(Json_Decode$JsonCombinators.$$int, Json_Decode$JsonCombinators.$$int, Json_Decode$JsonCombinators.$$int), (function (param) { return { line: param[0], @@ -34,6 +39,7 @@ function encode(param) { } var AgdaPosition = { + toVSCodePosition: toVSCodePosition, decode: decode, encode: encode }; @@ -45,6 +51,10 @@ function make(start, end_) { }; } +function toVSCodeRange(range) { + return new Vscode.Range(toVSCodePosition(range.start), toVSCodePosition(range.end_)); +} + function fuse(a, b) { var start = a.start.pos > b.start.pos ? b.start : a.start; var end_ = a.end_.pos > b.end_.pos ? a.end_ : b.end_; @@ -78,6 +88,7 @@ function encode$1(param) { var AgdaInterval = { make: make, + toVSCodeRange: toVSCodeRange, fuse: fuse, toString: toString, decode: decode$1, diff --git a/src/Editor.res b/src/Editor.res index cc1b26a5..fb6cef4e 100644 --- a/src/Editor.res +++ b/src/Editor.res @@ -12,9 +12,6 @@ module Position = { let fromOffset = (document, offset) => document->VSCode.TextDocument.positionAt(offset) let toOffset = (document, position) => document->VSCode.TextDocument.offsetAt(position) - - let fromAgdaPosition = (position: AgdaPosition.t) => - VSCode.Position.make(position.line - 1, position.col - 1) } module Range = { @@ -31,9 +28,6 @@ module Range = { Position.toString(start) ++ "-" ++ Position.toString(end) } } - // string_of_int(VSCode.Position.line(position)) ++ - // ":" ++ - // string_of_int(VSCode.Position.character(position)) let fromInterval = (document, interval) => VSCode.Range.make( @@ -44,9 +38,6 @@ module Range = { Position.toOffset(document, VSCode.Range.start(range)), Position.toOffset(document, VSCode.Range.end_(range)), ) - - let fromAgdaInterval = (range: AgdaInterval.t) => - VSCode.Range.make(Position.fromAgdaPosition(range.start), Position.fromAgdaPosition(range.end_)) } module Decoration = { diff --git a/src/InputMethod/IM.res b/src/InputMethod/IM.res index ca5c4ebd..6946a099 100644 --- a/src/InputMethod/IM.res +++ b/src/InputMethod/IM.res @@ -1,18 +1,4 @@ open Common -open Belt - -// type offset = int -// type interval = (offset, offset) - -// let fromOffset = (document, offset) => document->VSCode.TextDocument.positionAt(offset) -// let toOffset = (document, position) => document->VSCode.TextDocument.offsetAt(position) - -// let fromInterval = (document, interval) => -// VSCode.Range.make(document->fromOffset(fst(interval)), document->fromOffset(snd(interval))) -// let toInterval = (document, range) => ( -// document->toOffset(VSCode.Range.start(range)), -// document->toOffset(VSCode.Range.end_(range)), -// ) module Input = { type candidateInput = @@ -31,7 +17,8 @@ module Input = { let fromTextDocumentChangeEvent = (editor, event) => { // see if the change event happened in this TextEditor let fileName = editor->VSCode.TextEditor.document->VSCode.TextDocument.fileName->Parser.filepath - let eventFileName = event->VSCode.TextDocumentChangeEvent.document->VSCode.TextDocument.fileName->Parser.filepath + let eventFileName = + event->VSCode.TextDocumentChangeEvent.document->VSCode.TextDocument.fileName->Parser.filepath if fileName == eventFileName { // TextDocumentContentChangeEvent.t => Buffer.change event @@ -84,7 +71,7 @@ module type Module = { let make: Chan.t => t let isActivated: t => bool - // To enable input '\' in editor, + // To enable input '\' in editor, // we need to check whether buffer is empty when input method is activated // (Actually, we don't need this function, but I somehow can't get field instances from IM.t in State__InputMethod.res) let bufferIsEmpty: t => bool @@ -104,7 +91,7 @@ module Module: Module = { let make = (editor, interval) => switch editor { | None => { - interval: interval, + interval, decoration: None, buffer: Buffer.make(), } @@ -112,7 +99,7 @@ module Module: Module = { let document = VSCode.TextEditor.document(editor) let range = Editor.Range.fromInterval(document, interval) { - interval: interval, + interval, decoration: Some(Editor.Decoration.underlineText(editor, range)), buffer: Buffer.make(), } @@ -154,7 +141,7 @@ module Module: Module = { instances: [], activated: false, semaphore: false, - chanLog: chanLog, + chanLog, } } @@ -169,12 +156,13 @@ module Module: Module = { // kill the Instances that are not are not pointed by cursors // returns `true` when the system should be Deactivate let validateCursorPositions = (instances, intervals): array => - instances->Array.keep((instance: Instance.t) => { + instances->Array.filter((instance: Instance.t) => { // if any selection falls into the range of the instance, the instance survives let survived = intervals->Array.some(((start, end_)) => Instance.withIn(instance, start) && Instance.withIn(instance, end_) ) + // if not, the instance gets destroyed if !survived { Instance.destroy(instance) @@ -188,7 +176,7 @@ module Module: Module = { > => { let accum = ref(0) - instances->Array.keepMap(instance => { + instances->Array.filterMap(instance => { let (start, end_) = instance.interval // update the interval with `accum` @@ -265,7 +253,7 @@ module Module: Module = { // push rewrites to the `rewrites` queue let instances = { let accum = ref(0) - instancesWithChanges->Array.keepMap(((instance, change)) => + instancesWithChanges->Array.filterMap(((instance, change)) => switch change { | None => Some(instance) | Some(change) => @@ -282,14 +270,13 @@ module Module: Module = { // update the interval instance.interval = (start + accum.contents, end_ + accum.contents + delta) - Js.Array.push( - { - interval: (start, end_), - text: text, - instance: buffer.translation.further ? Some(instance) : None, - }, - rewrites, - )->ignore + rewrites + ->Array.push({ + interval: (start, end_), + text, + instance: buffer.translation.further ? Some(instance) : None, + }) + ->ignore accum := accum.contents + delta }) @@ -341,12 +328,15 @@ module Module: Module = { let (promise, resolve, _) = Util.Promise_.pending() // this promise will be resolved, once the real edits have been made - promise->Promise.finally(() => { + promise + ->Promise.finally(() => { // redecorate instances rewrites->Array.forEach(rewrite => { - rewrite.instance->Option.forEach(instance => { - editor->Option.forEach(Instance.redecorate(instance, ...)) - }) + rewrite.instance->Option.forEach( + instance => { + editor->Option.forEach(Instance.redecorate(instance, ...)) + }, + ) }) // unlock the semaphore @@ -354,7 +344,8 @@ module Module: Module = { // for testing logRewriteApplied(self) - })->Promise.done + }) + ->Promise.done // deactivate if there are no instances left switch self.instances[0] { @@ -378,10 +369,10 @@ module Module: Module = { self.activated = true // instantiate from an array of offsets - self.instances = - Js.Array.sortInPlaceWith((x, y) => compare(fst(x), fst(y)), intervals)->Array.map( - Instance.make(editor, ...), - ) + self.instances = { + intervals->Array.sort((x, y) => Int.compare(fst(x), fst(y))) + intervals->Array.map(Instance.make(editor, ...)) + } [Output.Activate] | Deactivate => @@ -390,6 +381,7 @@ module Module: Module = { | MouseSelect(intervals) => if self.activated && !self.semaphore { self.instances = validateCursorPositions(self.instances, intervals) + // deactivate if all instances have been destroyed if Js.Array.length(self.instances) == 0 { run(self, editor, Deactivate) diff --git a/src/State/State__Command.res b/src/State/State__Command.res index 8c6645d5..86857dd5 100644 --- a/src/State/State__Command.res +++ b/src/State/State__Command.res @@ -411,7 +411,7 @@ let rec dispatchCommand = async (state: State.t, command): unit => { // only select the ranges when it's on the same file if removeRoot(path) == removeRoot(fileName) { - let ranges = intervals->Array.map(Editor.Range.fromAgdaInterval) + let ranges = intervals->Array.map(Common.AgdaInterval.toVSCodeRange) // set cursor selections Editor.Selection.setMany(state.editor, ranges) // scroll to that part of the document diff --git a/src/View/Common.res b/src/View/Common.res index 927a4089..52349bdc 100644 --- a/src/View/Common.res +++ b/src/View/Common.res @@ -10,6 +10,9 @@ module AgdaPosition = { pos: int, } + let toVSCodePosition = (position: t) => + VSCode.Position.make(position.line - 1, position.col - 1) + let decode = { open JsonCombinators.Json.Decode tuple3(int, int, int)->map((. (line, col, pos)) => { @@ -33,6 +36,9 @@ module AgdaInterval = { let make = (start, end_) => {start, end_} + let toVSCodeRange = (range: t) => + VSCode.Range.make(AgdaPosition.toVSCodePosition(range.start), AgdaPosition.toVSCodePosition(range.end_)) + let fuse = (a, b) => { let start = if a.start.pos > b.start.pos { b.start From 28edc19ebe3aaecaf67b2917e9bb8f42453eec39 Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Thu, 31 Oct 2024 16:44:54 +0800 Subject: [PATCH 097/109] [ new ] Test cases for editor input method candidate selection --- lib/js/test/tests/Test__EditorIM.bs.js | 260 +++++++++++++++++++++++-- test/tests/Test__EditorIM.res | 147 ++++++++++++-- 2 files changed, 376 insertions(+), 31 deletions(-) diff --git a/lib/js/test/tests/Test__EditorIM.bs.js b/lib/js/test/tests/Test__EditorIM.bs.js index 57c0b98b..82bb5a4f 100644 --- a/lib/js/test/tests/Test__EditorIM.bs.js +++ b/lib/js/test/tests/Test__EditorIM.bs.js @@ -9,6 +9,7 @@ var Caml_option = require("rescript/lib/js/caml_option.js"); var Core__Option = require("@rescript/core/lib/js/src/Core__Option.bs.js"); var IM$AgdaModeVscode = require("../../src/InputMethod/IM.bs.js"); var Chan$AgdaModeVscode = require("../../src/Util/Chan.bs.js"); +var Util$AgdaModeVscode = require("../../src/Util/Util.bs.js"); var Editor$AgdaModeVscode = require("../../src/Editor.bs.js"); var Test__Util$AgdaModeVscode = require("./Test__Util.bs.js"); @@ -33,13 +34,24 @@ async function wait(setup) { return await Chan$AgdaModeVscode.once(setup.channels.inputMethod); } -async function wait2nd(setup) { - await Chan$AgdaModeVscode.once(setup.channels.inputMethod); - return await Chan$AgdaModeVscode.once(setup.channels.inputMethod); +async function waitMany(setup, n) { + var received = []; + var match = Util$AgdaModeVscode.Promise_.pending(); + var resolve = match[1]; + var destructor = Chan$AgdaModeVscode.on(setup.channels.inputMethod, (function (batch) { + received.push(batch); + if (received.length === n) { + return resolve(); + } + + })); + await match[0]; + destructor(); + return received.flat(); } async function activate(setup, positions, param) { - var promise = wait(setup); + var promise = waitMany(setup, 1); var positions$1 = Core__Option.getOr(positions, Editor$AgdaModeVscode.Cursor.getMany(setup.editor)); Editor$AgdaModeVscode.Cursor.setMany(setup.editor, positions$1); await Vscode.commands.executeCommand("agda-mode.input-symbol[Activate]"); @@ -47,36 +59,54 @@ async function activate(setup, positions, param) { } async function deactivate(setup) { - var promise = wait(setup); + var promise = waitMany(setup, 1); var result = Vscode.commands.executeCommand("agda-mode.escape"); await result; return await promise; } async function insertChar(setup, $$char) { - var promise1 = wait(setup); - var promise2 = wait2nd(setup); + var promise = waitMany(setup, 2); var positions = Editor$AgdaModeVscode.Cursor.getMany(setup.editor); var succeed = await Editor$AgdaModeVscode.$$Text.batchInsert(setup.editor.document, positions, $$char); if (succeed) { - var result1 = await promise1; - var result2 = await promise2; - return result1.concat(result2); + return await promise; } throw Js_exn.raiseError("Failed to insert " + $$char); } +async function rightArrow(setup) { + var promise = waitMany(setup, 2); + await Vscode.commands.executeCommand("agda-mode.input-symbol[BrowseRight]"); + return await promise; +} + +async function leftArrow(setup) { + var promise = waitMany(setup, 2); + await Vscode.commands.executeCommand("agda-mode.input-symbol[BrowseLeft]"); + return await promise; +} + +async function upArrow(setup) { + var promise = waitMany(setup, 2); + await Vscode.commands.executeCommand("agda-mode.input-symbol[BrowseUp]"); + return await promise; +} + +async function downArrow(setup) { + var promise = waitMany(setup, 2); + await Vscode.commands.executeCommand("agda-mode.input-symbol[BrowseDown]"); + return await promise; +} + async function backspace(setup) { - var promise1 = wait(setup); - var promise2 = wait2nd(setup); + var promise = waitMany(setup, 2); var end_ = Editor$AgdaModeVscode.Cursor.get(setup.editor); var start = end_.translate(0, -1); var range = new Vscode.Range(start, end_); var succeed = await Editor$AgdaModeVscode.$$Text.$$delete(setup.editor.document, range); if (succeed) { - var result1 = await promise1; - var result2 = await promise2; - return result1.concat(result2); + return await promise; } throw Js_exn.raiseError("Failed to backspace"); } @@ -107,10 +137,14 @@ var IM = { bufferIsEmpty: IM$AgdaModeVscode.bufferIsEmpty, run: IM$AgdaModeVscode.run, wait: wait, - wait2nd: wait2nd, + waitMany: waitMany, activate: activate, deactivate: deactivate, insertChar: insertChar, + rightArrow: rightArrow, + leftArrow: leftArrow, + upArrow: upArrow, + downArrow: downArrow, backspace: backspace, select: select, selectAndWait: selectAndWait @@ -295,6 +329,27 @@ describe("Input Method (Editor)", (function () { ], log$2, undefined); return Curry._3(Assert.equal, "𝕟", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); })); + it("should translate \"\\\" to \"\\\"", (async function () { + var setup$1 = acquire(setup); + var log = await activate(setup$1, undefined, undefined); + Curry._3(Assert.deepEqual, ["Activate"], log, undefined); + var log$1 = await insertChar(setup$1, "\\"); + return Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 1 + ], + "\\" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "Deactivate", + "RewriteApplied" + ], log$1, undefined); + })); it("Issue #55, should not deactivate when size of candidate symbols > 1", (async function () { var setup$1 = acquire(setup); var $$document = setup$1.editor.document; @@ -754,6 +809,179 @@ describe("Input Method (Editor)", (function () { return Curry._3(Assert.deepEqual, ["Deactivate"], log$3, undefined); })); })); + describe("Candidates", (function () { + it("should be able to select the correct candidate with arrow keys 1", (async function () { + var setup$1 = acquire(setup); + var $$document = setup$1.editor.document; + var log = await activate(setup$1, undefined, undefined); + Curry._3(Assert.deepEqual, ["Activate"], log, undefined); + var log$1 = await insertChar(setup$1, "("); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 1 + ], + "(" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$1, undefined); + Curry._3(Assert.equal, "(", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$2 = await rightArrow(setup$1); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 1 + ], + "[" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$2, undefined); + Curry._3(Assert.equal, "[", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$3 = await downArrow(setup$1); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 1 + ], + "⟪" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$3, undefined); + Curry._3(Assert.equal, "⟪", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$4 = await leftArrow(setup$1); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 1 + ], + "⟨" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$4, undefined); + Curry._3(Assert.equal, "⟨", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$5 = await upArrow(setup$1); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 1 + ], + "(" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$5, undefined); + Curry._3(Assert.equal, "(", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$6 = await deactivate(setup$1); + Curry._3(Assert.deepEqual, ["Deactivate"], log$6, undefined); + return Curry._3(Assert.equal, "(", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + })); + it("should be able to select the correct candidate with arrow keys 2", (async function () { + var setup$1 = acquire(setup); + var $$document = setup$1.editor.document; + var log = await activate(setup$1, undefined, undefined); + Curry._3(Assert.deepEqual, ["Activate"], log, undefined); + var log$1 = await insertChar(setup$1, "!"); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 1 + ], + "!" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$1, undefined); + Curry._3(Assert.equal, "!", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$2 = await rightArrow(setup$1); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 1 + ], + "¡" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$2, undefined); + Curry._3(Assert.equal, "¡", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$3 = await upArrow(setup$1); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 1 + ], + "!" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$3, undefined); + Curry._3(Assert.equal, "!", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$4 = await downArrow(setup$1); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 1 + ], + "¡" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "UpdateView", + "RewriteApplied" + ], log$4, undefined); + Curry._3(Assert.equal, "¡", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + var log$5 = await deactivate(setup$1); + Curry._3(Assert.deepEqual, ["Deactivate"], log$5, undefined); + return Curry._3(Assert.equal, "¡", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); + })); + })); describe("Multiple cursors at once", (function () { var replaceCRLF = function (x) { return x.replace(/\r\n/g, "\n"); diff --git a/test/tests/Test__EditorIM.res b/test/tests/Test__EditorIM.res index 22c4cc15..973d4f24 100644 --- a/test/tests/Test__EditorIM.res +++ b/test/tests/Test__EditorIM.res @@ -21,13 +21,26 @@ module IM = { include IM let wait = async setup => await setup.channels.inputMethod->Chan.once - let wait2nd = async setup => { - let _ = await setup.channels.inputMethod->Chan.once - await setup.channels.inputMethod->Chan.once + + // waits for n number of events + let waitMany = async (setup, n) => { + let received = [] + + let (promise, resolve, _) = Util.Promise_.pending() + let destructor = setup.channels.inputMethod->Chan.on(batch => { + received->Array.push(batch) // mutates the array + if received->Array.length == n { + resolve() + } + }) + + await promise + destructor() + Array.flat(received) } let activate = async (setup, ~positions=?, ()) => { - let promise = wait(setup) + let promise = waitMany(setup, 1) let positions = positions->Option.getOr(Editor.Cursor.getMany(setup.editor)) Editor.Cursor.setMany(setup.editor, positions) let _ = await VSCode.Commands.executeCommand0("agda-mode.input-symbol[Activate]") @@ -35,15 +48,14 @@ module IM = { } let deactivate = async setup => { - let promise = wait(setup) + let promise = waitMany(setup, 1) let result = VSCode.Commands.executeCommand0("agda-mode.escape") let _ = await result await promise } let insertChar = async (setup, char) => { - let promise1 = wait(setup) - let promise2 = wait2nd(setup) + let promise = waitMany(setup, 2) let positions = Editor.Cursor.getMany(setup.editor) @@ -53,17 +65,42 @@ module IM = { ->Editor.Text.batchInsert(positions, char) if succeed { - let result1 = await promise1 - let result2 = await promise2 - Array.concat(result1, result2) + await promise } else { raise(Js.Exn.raiseError("Failed to insert " ++ char)) } } + // pressing the right arrow key + let rightArrow = async setup => { + let promise = waitMany(setup, 2) + let _ = await VSCode.Commands.executeCommand0("agda-mode.input-symbol[BrowseRight]") + await promise + } + + // pressing the left arrow key + let leftArrow = async setup => { + let promise = waitMany(setup, 2) + let _ = await VSCode.Commands.executeCommand0("agda-mode.input-symbol[BrowseLeft]") + await promise + } + + // pressing the up arrow key + let upArrow = async setup => { + let promise = waitMany(setup, 2) + let _ = await VSCode.Commands.executeCommand0("agda-mode.input-symbol[BrowseUp]") + await promise + } + + // pressing the down arrow key + let downArrow = async setup => { + let promise = waitMany(setup, 2) + let _ = await VSCode.Commands.executeCommand0("agda-mode.input-symbol[BrowseDown]") + await promise + } + let backspace = async setup => { - let promise1 = wait(setup) - let promise2 = wait2nd(setup) + let promise = waitMany(setup, 2) let end_ = Editor.Cursor.get(setup.editor) let start = end_->VSCode.Position.translate(0, -1) let range = VSCode.Range.make(start, end_) @@ -73,9 +110,7 @@ module IM = { ->Editor.Text.delete(range) if succeed { - let result1 = await promise1 - let result2 = await promise2 - Array.concat(result1, result2) + await promise } else { raise(Js.Exn.raiseError("Failed to backspace")) } @@ -168,6 +203,20 @@ describe("Input Method (Editor)", () => { }, ) + + Async.it( + `should translate "\\" to "\\"`, + async () => { + let setup = acquire(setup) + let document = setup.editor->VSCode.TextEditor.document + let log = await IM.activate(setup, ()) + Assert.deepEqual([IM.Log.Activate], log) + let log = await IM.insertChar(setup, "\\") + Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "\\")]), Deactivate, RewriteApplied], log) + }, + ) + + Async.it( `Issue #55, should not deactivate when size of candidate symbols > 1`, async () => { @@ -353,6 +402,74 @@ describe("Input Method (Editor)", () => { ) }) + describe("Candidates", () => { + Async.it( + `should be able to select the correct candidate with arrow keys 1`, + async () => { + let setup = acquire(setup) + let document = setup.editor->VSCode.TextEditor.document + // activate the input method + let log = await IM.activate(setup, ()) + Assert.deepEqual([IM.Log.Activate], log) + // insert "(" + let log = await IM.insertChar(setup, "(") + Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "(")]), UpdateView, RewriteApplied], log) + Assert.equal("(", document->Editor.Text.getAll) + // right arrow + let log = await IM.rightArrow(setup) + Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "[")]), UpdateView, RewriteApplied], log) + Assert.equal("[", document->Editor.Text.getAll) + // down arrow + let log = await IM.downArrow(setup) + Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "⟪")]), UpdateView, RewriteApplied], log) + Assert.equal("⟪", document->Editor.Text.getAll) + // left arrow + let log = await IM.leftArrow(setup) + Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "⟨")]), UpdateView, RewriteApplied], log) + Assert.equal("⟨", document->Editor.Text.getAll) + // up arrow + let log = await IM.upArrow(setup) + Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "(")]), UpdateView, RewriteApplied], log) + Assert.equal("(", document->Editor.Text.getAll) + // deactivate + let log = await IM.deactivate(setup) + Assert.deepEqual([IM.Log.Deactivate], log) + Assert.equal("(", document->Editor.Text.getAll) + }, + ) + + Async.it( + `should be able to select the correct candidate with arrow keys 2`, + async () => { + let setup = acquire(setup) + let document = setup.editor->VSCode.TextEditor.document + // activate the input method + let log = await IM.activate(setup, ()) + Assert.deepEqual([IM.Log.Activate], log) + // insert "!" + let log = await IM.insertChar(setup, "!") + Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "!")]), UpdateView, RewriteApplied], log) + Assert.equal("!", document->Editor.Text.getAll) + // right arrow + let log = await IM.rightArrow(setup) + Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "¡")]), UpdateView, RewriteApplied], log) + Assert.equal("¡", document->Editor.Text.getAll) + // up arrow + let log = await IM.upArrow(setup) + Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "!")]), UpdateView, RewriteApplied], log) + Assert.equal("!", document->Editor.Text.getAll) + // down arrow + let log = await IM.downArrow(setup) + Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "¡")]), UpdateView, RewriteApplied], log) + Assert.equal("¡", document->Editor.Text.getAll) + // deactivate + let log = await IM.deactivate(setup) + Assert.deepEqual([IM.Log.Deactivate], log) + Assert.equal("¡", document->Editor.Text.getAll) + }, + ) + }) + describe("Multiple cursors at once", () => { let replaceCRLF = x => x->String.replaceRegExp(%re("/\r\n/g"), "\n") // RegEx updated to v10.1.4 From 1e89c2f11c6324e2e7680022b3f74e9b34e0ea9f Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Thu, 31 Oct 2024 17:39:10 +0800 Subject: [PATCH 098/109] [ refactor ] Remove Js & Belt modules from the IM modules --- lib/js/src/InputMethod/IM.bs.js | 9 ++--- lib/js/src/State/State__InputMethod.bs.js | 46 +++++++++++------------ lib/js/test/tests/Test__EditorIM.bs.js | 32 ++++++++-------- src/InputMethod/IM.res | 7 +--- src/State/State__InputMethod.res | 18 ++++----- test/tests/Test__EditorIM.res | 7 ++-- 6 files changed, 56 insertions(+), 63 deletions(-) diff --git a/lib/js/src/InputMethod/IM.bs.js b/lib/js/src/InputMethod/IM.bs.js index 897dec24..b61274d4 100644 --- a/lib/js/src/InputMethod/IM.bs.js +++ b/lib/js/src/InputMethod/IM.bs.js @@ -3,7 +3,6 @@ var Caml = require("rescript/lib/js/caml.js"); var Vscode = require("vscode"); -var Js_array = require("rescript/lib/js/js_array.js"); var Core__List = require("@rescript/core/lib/js/src/Core__List.bs.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); var Core__Array = require("@rescript/core/lib/js/src/Core__Array.bs.js"); @@ -130,9 +129,9 @@ function toRewrites(instances, modify) { } function groupChangeWithInstances(instances, changes) { - var changes$1 = Js_array.sortInPlaceWith((function (x, y) { - return Caml.int_compare(x.offset, y.offset); - }), changes); + changes.sort(function (x, y) { + return Caml.int_compare(x.offset, y.offset); + }); var go = function (_accum, _x) { while(true) { var x = _x; @@ -217,7 +216,7 @@ function groupChangeWithInstances(instances, changes) { }; }; return Core__List.toArray(go(0, [ - Core__List.fromArray(changes$1), + Core__List.fromArray(changes), Core__List.fromArray(instances) ])); } diff --git a/lib/js/src/State/State__InputMethod.bs.js b/lib/js/src/State/State__InputMethod.bs.js index 28250402..6ca637d2 100644 --- a/lib/js/src/State/State__InputMethod.bs.js +++ b/lib/js/src/State/State__InputMethod.bs.js @@ -1,8 +1,6 @@ // Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; -var Js_string = require("rescript/lib/js/js_string.js"); -var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); var IM$AgdaModeVscode = require("../InputMethod/IM.bs.js"); var Util$AgdaModeVscode = require("../Util/Util.bs.js"); @@ -30,18 +28,18 @@ async function handle(state, output) { [Symbol.for("name")]: "Update" }); } - var replacements = Belt_Array.map(kind._0, (function (param) { - var range = Editor$AgdaModeVscode.$$Range.fromInterval(state.document, param[0]); - return [ - range, - param[1] - ]; - })); + var replacements = kind._0.map(function (param) { + var range = Editor$AgdaModeVscode.$$Range.fromInterval(state.document, param[0]); + return [ + range, + param[1] + ]; + }); await Editor$AgdaModeVscode.$$Text.batchReplace(state.document, replacements); return kind._1(); } }; - await Util$AgdaModeVscode.oneByOne(Belt_Array.map(output, handle$1)); + await Util$AgdaModeVscode.oneByOne(output.map(handle$1)); } function runAndHandle(state, action) { @@ -49,9 +47,9 @@ function runAndHandle(state, action) { } function activate(state) { - var intervals = Belt_Array.map(Editor$AgdaModeVscode.$$Selection.getMany(state.editor), (function (extra) { - return Editor$AgdaModeVscode.$$Range.toInterval(state.document, extra); - })); + var intervals = Editor$AgdaModeVscode.$$Selection.getMany(state.editor).map(function (extra) { + return Editor$AgdaModeVscode.$$Range.toInterval(state.document, extra); + }); return runAndHandle(state, { TAG: "Activate", _0: intervals, @@ -96,12 +94,12 @@ async function handle$1(state, output) { replaced.contents = replaced.contents.slice(0, delta.contents + start | 0) + t + replaced.contents.slice(delta.contents + end_ | 0); delta.contents = (delta.contents + t.length | 0) - (end_ - start | 0) | 0; }; - Belt_Array.forEach(kind._0, replace); + kind._0.forEach(replace); previous.contents = replaced.contents; return await State__View$AgdaModeVscode.Panel.updatePromptIM(state, replaced.contents); } }; - await Util$AgdaModeVscode.oneByOne(Belt_Array.map(output, handle$2)); + await Util$AgdaModeVscode.oneByOne(output.map(handle$2)); } function runAndHandle$1(state, action) { @@ -112,10 +110,10 @@ function keyUpdate(state, next) { var deviseChange = function (previous, next) { var inputLength = next.length; var init = function (s) { - return Js_string.substring(0, s.length - 1 | 0, s); + return s.substring(0, s.length - 1 | 0); }; var last = function (s) { - return Js_string.substringToEnd(s.length - 1 | 0, s); + return s.substring(s.length - 1 | 0); }; if (init(next) === previous) { return { @@ -153,7 +151,7 @@ function insertChar(state, $$char) { function activate$1(state, input) { var cursorOffset = input.length - 1 | 0; - var input$1 = Js_string.substring(0, cursorOffset, input); + var input$1 = input.substring(0, cursorOffset); previous.contents = input$1; return runAndHandle$1(state, { TAG: "Activate", @@ -195,9 +193,9 @@ async function activateEditorIM(state) { switch (match) { case "Editor" : if (IM$AgdaModeVscode.bufferIsEmpty(state.editorIM)) { - Belt_Array.forEach(Editor$AgdaModeVscode.Cursor.getMany(state.editor), (function (point) { - Editor$AgdaModeVscode.$$Text.insert(state.document, point, activationKey); - })); + Editor$AgdaModeVscode.Cursor.getMany(state.editor).forEach(function (point) { + Editor$AgdaModeVscode.$$Text.insert(state.document, point, activationKey); + }); } await runAndHandle(state, "Deactivate"); return await activate(state); @@ -214,7 +212,7 @@ async function keyUpdatePromptIM(state, input) { var match = isActivated(state); switch (match) { case "Editor" : - if (Js_string.endsWith(activationKey, input)) { + if (activationKey.endsWith(input)) { await runAndHandle(state, "Deactivate"); return await activate$1(state, input); } else { @@ -223,7 +221,7 @@ async function keyUpdatePromptIM(state, input) { case "Prompt" : return await keyUpdate(state, input); case "None" : - if (Js_string.endsWith(activationKey, input)) { + if (activationKey.endsWith(input)) { return await activate$1(state, input); } else { return await State__View$AgdaModeVscode.Panel.updatePromptIM(state, input); @@ -304,7 +302,7 @@ async function insertChar$1(state, $$char) { var match = isActivated(state); switch (match) { case "Editor" : - var $$char$1 = Js_string.charAt(0, $$char); + var $$char$1 = $$char.charAt(0); var positions = Editor$AgdaModeVscode.Cursor.getMany(state.editor); await Editor$AgdaModeVscode.$$Text.batchInsert(state.document, positions, $$char$1); return Editor$AgdaModeVscode.focus(state.document); diff --git a/lib/js/test/tests/Test__EditorIM.bs.js b/lib/js/test/tests/Test__EditorIM.bs.js index 82bb5a4f..83893de7 100644 --- a/lib/js/test/tests/Test__EditorIM.bs.js +++ b/lib/js/test/tests/Test__EditorIM.bs.js @@ -331,24 +331,26 @@ describe("Input Method (Editor)", (function () { })); it("should translate \"\\\" to \"\\\"", (async function () { var setup$1 = acquire(setup); + var $$document = setup$1.editor.document; var log = await activate(setup$1, undefined, undefined); Curry._3(Assert.deepEqual, ["Activate"], log, undefined); var log$1 = await insertChar(setup$1, "\\"); - return Curry._3(Assert.deepEqual, [ - { - TAG: "RewriteIssued", - _0: [[ - [ - 0, - 1 - ], - "\\" - ]], - [Symbol.for("name")]: "RewriteIssued" - }, - "Deactivate", - "RewriteApplied" - ], log$1, undefined); + Curry._3(Assert.deepEqual, [ + { + TAG: "RewriteIssued", + _0: [[ + [ + 0, + 1 + ], + "\\" + ]], + [Symbol.for("name")]: "RewriteIssued" + }, + "Deactivate", + "RewriteApplied" + ], log$1, undefined); + return Curry._3(Assert.equal, "\\", Editor$AgdaModeVscode.$$Text.getAll($$document), undefined); })); it("Issue #55, should not deactivate when size of candidate symbols > 1", (async function () { var setup$1 = acquire(setup); diff --git a/src/InputMethod/IM.res b/src/InputMethod/IM.res index 6946a099..b5d0b21a 100644 --- a/src/InputMethod/IM.res +++ b/src/InputMethod/IM.res @@ -205,10 +205,7 @@ module Module: Module = { changes: array, ): array<(Instance.t, option)> => { // sort the changes base on their offsets in the ascending order - let changes = Js.Array.sortInPlaceWith( - (x: Buffer.change, y: Buffer.change) => compare(x.offset, y.offset), - changes, - ) + Array.sort(changes, (x: Buffer.change, y: Buffer.change) => Int.compare(x.offset, y.offset)) // iterate through Instances and changes // returns a list of Instances along with the changeEvent event that occurred inside that Instance @@ -383,7 +380,7 @@ module Module: Module = { self.instances = validateCursorPositions(self.instances, intervals) // deactivate if all instances have been destroyed - if Js.Array.length(self.instances) == 0 { + if Array.length(self.instances) == 0 { run(self, editor, Deactivate) } else { [] diff --git a/src/State/State__InputMethod.res b/src/State/State__InputMethod.res index d51374bf..ad026322 100644 --- a/src/State/State__InputMethod.res +++ b/src/State/State__InputMethod.res @@ -20,8 +20,6 @@ module type Module = { } module Module: Module = { - open Belt - module EditorIM = { let handle = async (state: State.t, output): unit => { open IM.Output @@ -84,10 +82,10 @@ module Module: Module = { let delta = ref(0) let replace = (((start, end_), t)) => { replaced := - replaced.contents->Js.String2.slice(~from=0, ~to_=delta.contents + start) ++ + replaced.contents->String.slice(~start=0, ~end=delta.contents + start) ++ t ++ - replaced.contents->Js.String2.sliceToEnd(~from=delta.contents + end_) - delta := delta.contents + Js.String.length(t) - (end_ - start) + replaced.contents->String.sliceToEnd(~start=delta.contents + end_) + delta := delta.contents + String.length(t) - (end_ - start) } rewrites->Array.forEach(replace) @@ -112,8 +110,8 @@ module Module: Module = { let inputLength = String.length(next) // helper funcion - let init = s => Js.String.substring(~from=0, ~to_=String.length(s) - 1, s) - let last = s => Js.String.substringToEnd(~from=String.length(s) - 1, s) + let init = s => String.substring(~start=0, ~end=String.length(s) - 1, s) + let last = s => String.substringToEnd(~start=String.length(s) - 1, s) if init(next) == previous { // Insertion @@ -152,7 +150,7 @@ module Module: Module = { let activate = (state: State.t, input) => { // remove the ending backslash "\" let cursorOffset = String.length(input) - 1 - let input = Js.String.substring(~from=0, ~to_=cursorOffset, input) + let input = String.substring(~start=0, ~end=cursorOffset, input) // update stored previous.contents = input @@ -207,7 +205,7 @@ module Module: Module = { } // activate the prompt IM when the user typed the activation key (default: "\") - let shouldActivatePromptIM = input => Js.String.endsWith(activationKey, input) + let shouldActivatePromptIM = input => String.endsWith(activationKey, input) let keyUpdatePromptIM = async (state: State.t, input) => switch isActivated(state) { @@ -259,7 +257,7 @@ module Module: Module = { let insertChar = async (state: State.t, char) => switch isActivated(state) { | Editor => - let char = Js.String.charAt(0, char) + let char = String.charAt(char, 0) let positions = Editor.Cursor.getMany(state.editor) let _ = await state.document->Editor.Text.batchInsert(positions, char) diff --git a/test/tests/Test__EditorIM.res b/test/tests/Test__EditorIM.res index 973d4f24..60406887 100644 --- a/test/tests/Test__EditorIM.res +++ b/test/tests/Test__EditorIM.res @@ -203,7 +203,6 @@ describe("Input Method (Editor)", () => { }, ) - Async.it( `should translate "\\" to "\\"`, async () => { @@ -213,10 +212,10 @@ describe("Input Method (Editor)", () => { Assert.deepEqual([IM.Log.Activate], log) let log = await IM.insertChar(setup, "\\") Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "\\")]), Deactivate, RewriteApplied], log) + Assert.equal("\\", document->Editor.Text.getAll) }, ) - Async.it( `Issue #55, should not deactivate when size of candidate symbols > 1`, async () => { @@ -431,7 +430,7 @@ describe("Input Method (Editor)", () => { let log = await IM.upArrow(setup) Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "(")]), UpdateView, RewriteApplied], log) Assert.equal("(", document->Editor.Text.getAll) - // deactivate + // deactivate let log = await IM.deactivate(setup) Assert.deepEqual([IM.Log.Deactivate], log) Assert.equal("(", document->Editor.Text.getAll) @@ -462,7 +461,7 @@ describe("Input Method (Editor)", () => { let log = await IM.downArrow(setup) Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "¡")]), UpdateView, RewriteApplied], log) Assert.equal("¡", document->Editor.Text.getAll) - // deactivate + // deactivate let log = await IM.deactivate(setup) Assert.deepEqual([IM.Log.Deactivate], log) Assert.equal("¡", document->Editor.Text.getAll) From aaf919698041dfc871371b52366c2cd6506de864 Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Thu, 31 Oct 2024 17:45:59 +0800 Subject: [PATCH 099/109] [ change ] Replacing IM.Instance.interval with VSCode Range --- lib/js/src/Editor.bs.js | 27 +-- lib/js/src/Goal.bs.js | 13 +- lib/js/src/Highlighting.bs.js | 5 +- lib/js/src/InputMethod/IM.bs.js | 4 +- lib/js/src/Main.bs.js | 6 +- lib/js/src/State/State__Goal.bs.js | 10 +- lib/js/src/State/State__InputMethod.bs.js | 5 +- lib/js/src/Tokens.bs.js | 6 +- lib/js/src/View/Common.bs.js | 15 +- lib/js/test/tests/Test__EditorIM.bs.js | 5 +- src/Editor.res | 14 -- src/Goal.res | 12 +- src/Highlighting.res | 4 +- src/InputMethod/IM.res | 5 +- src/Main.res | 6 +- src/State/State__Goal.res | 10 +- src/State/State__InputMethod.res | 4 +- src/Tokens.res | 6 +- src/View/Common.res | 233 ++++++++++++---------- test/tests/Test__EditorIM.res | 4 +- 20 files changed, 196 insertions(+), 198 deletions(-) diff --git a/lib/js/src/Editor.bs.js b/lib/js/src/Editor.bs.js index 58de9574..8c02740f 100644 --- a/lib/js/src/Editor.bs.js +++ b/lib/js/src/Editor.bs.js @@ -10,18 +10,8 @@ function toString(position) { return String(position.line) + ":" + String(position.character); } -function fromOffset($$document, offset) { - return $$document.positionAt(offset); -} - -function toOffset($$document, position) { - return $$document.offsetAt(position); -} - var Position = { - toString: toString, - fromOffset: fromOffset, - toOffset: toOffset + toString: toString }; function toString$1(range) { @@ -34,21 +24,8 @@ function toString$1(range) { } } -function fromInterval($$document, interval) { - return new Vscode.Range($$document.positionAt(interval[0]), $$document.positionAt(interval[1])); -} - -function toInterval($$document, range) { - return [ - $$document.offsetAt(range.start), - $$document.offsetAt(range.end) - ]; -} - var $$Range = { - toString: toString$1, - fromInterval: fromInterval, - toInterval: toInterval + toString: toString$1 }; function decorate(editor, decoration, ranges) { diff --git a/lib/js/src/Goal.bs.js b/lib/js/src/Goal.bs.js index 8161ab4e..20ad9df1 100644 --- a/lib/js/src/Goal.bs.js +++ b/lib/js/src/Goal.bs.js @@ -4,6 +4,7 @@ var VSCode = require("rescript-vscode/lib/js/src/VSCode.bs.js"); var Vscode = require("vscode"); var Util$AgdaModeVscode = require("./Util/Util.bs.js"); +var Common$AgdaModeVscode = require("./View/Common.bs.js"); var Editor$AgdaModeVscode = require("./Editor.bs.js"); var Parser$AgdaModeVscode = require("./Parser/Parser.bs.js"); var SourceFile$AgdaModeVscode = require("./Parser/SourceFile.bs.js"); @@ -51,11 +52,11 @@ function getInnerRange(self, $$document) { interval_0, interval_1 ]; - return Editor$AgdaModeVscode.$$Range.fromInterval($$document, interval); + return Common$AgdaModeVscode.Interval.toVSCodeRange($$document, interval); } function getOuterRange(self, $$document) { - return Editor$AgdaModeVscode.$$Range.fromInterval($$document, self.interval); + return Common$AgdaModeVscode.Interval.toVSCodeRange($$document, self.interval); } function getContent(self, $$document) { @@ -71,9 +72,9 @@ function setContent(self, $$document, text) { function setCursor(self, editor) { var $$document = editor.document; var match = self.interval; - var position = Editor$AgdaModeVscode.Position.fromOffset($$document, match[0] + 3 | 0); + var position = $$document.positionAt(match[0] + 3 | 0); Editor$AgdaModeVscode.Cursor.set(editor, position); - var range = Editor$AgdaModeVscode.$$Range.fromInterval($$document, self.interval); + var range = Common$AgdaModeVscode.Interval.toVSCodeRange($$document, self.interval); VSCode.TextEditor.revealRange(editor, range, undefined); } @@ -81,8 +82,8 @@ function buildHaskellRange(self, $$document, version, filepath) { var match = self.interval; var end_ = match[1]; var start = match[0]; - var startPoint = Editor$AgdaModeVscode.Position.fromOffset($$document, start); - var endPoint = Editor$AgdaModeVscode.Position.fromOffset($$document, end_); + var startPoint = $$document.positionAt(start); + var endPoint = $$document.positionAt(end_); var startIndex = String(start + 3 | 0); var startRow = String(startPoint.line + 1 | 0); var startColumn = String(startPoint.character + 3 | 0); diff --git a/lib/js/src/Highlighting.bs.js b/lib/js/src/Highlighting.bs.js index 9f49ca56..cd1850a4 100644 --- a/lib/js/src/Highlighting.bs.js +++ b/lib/js/src/Highlighting.bs.js @@ -3,6 +3,7 @@ var Vscode = require("vscode"); var PervasivesU = require("rescript/lib/js/pervasivesU.js"); +var Common$AgdaModeVscode = require("./View/Common.bs.js"); var Config$AgdaModeVscode = require("./Config.bs.js"); var Editor$AgdaModeVscode = require("./Editor.bs.js"); var Parser$AgdaModeVscode = require("./Parser/Parser.bs.js"); @@ -11,7 +12,7 @@ var Highlighting__SemanticToken$AgdaModeVscode = require("./Highlighting/Highlig function decorateHole(editor, interval, index) { var $$document = editor.document; - var backgroundRange = Editor$AgdaModeVscode.$$Range.fromInterval($$document, interval); + var backgroundRange = Common$AgdaModeVscode.Interval.toVSCodeRange($$document, interval); var background = Editor$AgdaModeVscode.Decoration.highlightBackground(editor, "editor.selectionHighlightBackground", [backgroundRange]); var indexText = String(index); var innerInterval_0 = interval[0]; @@ -20,7 +21,7 @@ function decorateHole(editor, interval, index) { innerInterval_0, innerInterval_1 ]; - var indexRange = Editor$AgdaModeVscode.$$Range.fromInterval($$document, innerInterval); + var indexRange = Common$AgdaModeVscode.Interval.toVSCodeRange($$document, innerInterval); var index$1 = Editor$AgdaModeVscode.Decoration.overlayText(editor, "editorLightBulb.foreground", indexText, indexRange); return [ background, diff --git a/lib/js/src/InputMethod/IM.bs.js b/lib/js/src/InputMethod/IM.bs.js index b61274d4..e90c86e6 100644 --- a/lib/js/src/InputMethod/IM.bs.js +++ b/lib/js/src/InputMethod/IM.bs.js @@ -362,15 +362,17 @@ function run(self, editor, input) { if (editor === undefined) { return { interval: extra, + range: new Vscode.Range(new Vscode.Position(0, extra[0]), new Vscode.Position(0, extra[1])), decoration: undefined, buffer: Buffer$AgdaModeVscode.make() }; } var editor$1 = Caml_option.valFromOption(editor); var $$document = editor$1.document; - var range = Editor$AgdaModeVscode.$$Range.fromInterval($$document, extra); + var range = Common$AgdaModeVscode.Interval.toVSCodeRange($$document, extra); return { interval: extra, + range: range, decoration: Caml_option.some(Editor$AgdaModeVscode.Decoration.underlineText(editor$1, range)), buffer: Buffer$AgdaModeVscode.make() }; diff --git a/lib/js/src/Main.bs.js b/lib/js/src/Main.bs.js index 351e7b8b..b7d53bc4 100644 --- a/lib/js/src/Main.bs.js +++ b/lib/js/src/Main.bs.js @@ -101,8 +101,8 @@ function initialize(channels, extensionPath, globalStoragePath, editor, fileName var $$document = editor.document; var intervals = $$event.selections.map(function (selection) { return [ - Editor$AgdaModeVscode.Position.toOffset($$document, selection.start), - Editor$AgdaModeVscode.Position.toOffset($$document, selection.end) + $$document.offsetAt(selection.start), + $$document.offsetAt(selection.end) ]; }); State__InputMethod$AgdaModeVscode.select(state, intervals); @@ -114,7 +114,7 @@ function initialize(channels, extensionPath, globalStoragePath, editor, fileName subscribe(Editor$AgdaModeVscode.Provider.registerDefinitionProvider(function (fileName, position) { var currentFileName = Parser$AgdaModeVscode.filepath(state.document.fileName); var normalizedFileName = Parser$AgdaModeVscode.filepath(fileName); - var offset = Editor$AgdaModeVscode.Position.toOffset(state.document, position); + var offset = state.document.offsetAt(position); if (normalizedFileName === currentFileName) { return Tokens$AgdaModeVscode.lookupSrcLoc(state.tokens, offset); } diff --git a/lib/js/src/State/State__Goal.bs.js b/lib/js/src/State/State__Goal.bs.js index fe878eff..02d29ac1 100644 --- a/lib/js/src/State/State__Goal.bs.js +++ b/lib/js/src/State/State__Goal.bs.js @@ -28,7 +28,7 @@ function caseSplitAux($$document, goal) { 0, interval_1 ]; - var range = Editor$AgdaModeVscode.$$Range.fromInterval($$document, interval); + var range = Common$AgdaModeVscode.Interval.toVSCodeRange($$document, interval); var textBeforeGoal = Editor$AgdaModeVscode.$$Text.get($$document, range); var nextWordBoundary = function (start, string) { var $$break = false; @@ -265,7 +265,7 @@ async function replaceWithLambda(state, goal, lines) { var match = caseSplitAux(state.document, goal); var indentWidth = match[1]; var rewriteText = match[0] ? Js_array.joinWith("\n" + Js_string.repeat(indentWidth, " "), lines) : Js_array.joinWith("\n" + (Js_string.repeat(indentWidth - 2 | 0, " ") + "; "), lines); - var rewriteRange = Editor$AgdaModeVscode.$$Range.fromInterval(state.document, match[2]); + var rewriteRange = Common$AgdaModeVscode.Interval.toVSCodeRange(state.document, match[2]); if (await Editor$AgdaModeVscode.$$Text.replace(state.document, rewriteRange, rewriteText)) { Goal$AgdaModeVscode.destroyDecoration(goal); return placeCursorAtFirstNewGoal(state, rewriteText, rewriteRange); @@ -282,11 +282,11 @@ async function replaceWithLines(state, goal, lines) { var match = indentationWidth(state.document, goal); var indentation = Js_string.repeat(match[0], " "); var indentedLines = indentation + Js_array.joinWith("\n" + indentation, lines); - var start = Editor$AgdaModeVscode.Position.fromOffset(state.document, goal.interval[0]); + var start = state.document.positionAt(goal.interval[0]); var startLineNo = start.line; var startLineRange = state.document.lineAt(startLineNo).range; var start$1 = startLineRange.start; - var end_ = Editor$AgdaModeVscode.Position.fromOffset(state.document, goal.interval[1]); + var end_ = state.document.positionAt(goal.interval[1]); var rangeToBeReplaced = new Vscode.Range(start$1, end_); if (await Editor$AgdaModeVscode.$$Text.replace(state.document, rangeToBeReplaced, indentedLines)) { Goal$AgdaModeVscode.destroyDecoration(goal); @@ -303,7 +303,7 @@ async function replaceWithLines(state, goal, lines) { async function removeBoundaryAndDestroy(state, goal) { updateIntervals(state); var innerRange = Goal$AgdaModeVscode.getInnerRange(goal, state.document); - var outerRange = Editor$AgdaModeVscode.$$Range.fromInterval(state.document, goal.interval); + var outerRange = Common$AgdaModeVscode.Interval.toVSCodeRange(state.document, goal.interval); var content = Editor$AgdaModeVscode.$$Text.get(state.document, innerRange).trim(); if (await Editor$AgdaModeVscode.$$Text.replace(state.document, outerRange, content)) { return Goal$AgdaModeVscode.destroyDecoration(goal); diff --git a/lib/js/src/State/State__InputMethod.bs.js b/lib/js/src/State/State__InputMethod.bs.js index 6ca637d2..25aac96c 100644 --- a/lib/js/src/State/State__InputMethod.bs.js +++ b/lib/js/src/State/State__InputMethod.bs.js @@ -4,6 +4,7 @@ var Caml_option = require("rescript/lib/js/caml_option.js"); var IM$AgdaModeVscode = require("../InputMethod/IM.bs.js"); var Util$AgdaModeVscode = require("../Util/Util.bs.js"); +var Common$AgdaModeVscode = require("../View/Common.bs.js"); var Config$AgdaModeVscode = require("../Config.bs.js"); var Editor$AgdaModeVscode = require("../Editor.bs.js"); var State__Type$AgdaModeVscode = require("./State__Type.bs.js"); @@ -29,7 +30,7 @@ async function handle(state, output) { }); } var replacements = kind._0.map(function (param) { - var range = Editor$AgdaModeVscode.$$Range.fromInterval(state.document, param[0]); + var range = Common$AgdaModeVscode.Interval.toVSCodeRange(state.document, param[0]); return [ range, param[1] @@ -48,7 +49,7 @@ function runAndHandle(state, action) { function activate(state) { var intervals = Editor$AgdaModeVscode.$$Selection.getMany(state.editor).map(function (extra) { - return Editor$AgdaModeVscode.$$Range.toInterval(state.document, extra); + return Common$AgdaModeVscode.Interval.fromVSCodeRange(state.document, extra); }); return runAndHandle(state, { TAG: "Activate", diff --git a/lib/js/src/Tokens.bs.js b/lib/js/src/Tokens.bs.js index 8a7d34cf..4077caa0 100644 --- a/lib/js/src/Tokens.bs.js +++ b/lib/js/src/Tokens.bs.js @@ -270,8 +270,8 @@ function insert(self, editor, tokens) { ]); return ; } - var start = Editor$AgdaModeVscode.Position.fromOffset($$document, startOffset); - var end_ = Editor$AgdaModeVscode.Position.fromOffset($$document, Agda$AgdaModeVscode.OffsetConverter.convert(offsetConverter, info.end_)); + var start = $$document.positionAt(startOffset); + var end_ = $$document.positionAt(Agda$AgdaModeVscode.OffsetConverter.convert(offsetConverter, info.end_)); var range = new Vscode.Range(start, end_); self.tokens.insert(startOffset, [ info, @@ -336,7 +336,7 @@ function lookupSrcLoc(self, offset) { var text = Editor$AgdaModeVscode.$$Text.getAll($$document); var offsetConverter = Agda$AgdaModeVscode.OffsetConverter.make(text); var offset$1 = Agda$AgdaModeVscode.OffsetConverter.convert(offsetConverter, offset - 1 | 0); - var position = Editor$AgdaModeVscode.Position.fromOffset($$document, offset$1); + var position = $$document.positionAt(offset$1); return [[ range, filepath, diff --git a/lib/js/src/View/Common.bs.js b/lib/js/src/View/Common.bs.js index 62c65407..45c4495b 100644 --- a/lib/js/src/View/Common.bs.js +++ b/lib/js/src/View/Common.bs.js @@ -411,10 +411,23 @@ var encode$3 = Json_Encode$JsonCombinators.pair((function (prim) { return prim; })); +function toVSCodeRange$1($$document, interval) { + return new Vscode.Range($$document.positionAt(interval[0]), $$document.positionAt(interval[1])); +} + +function fromVSCodeRange($$document, range) { + return [ + $$document.offsetAt(range.start), + $$document.offsetAt(range.end) + ]; +} + var Interval = { contains: contains, decode: decode$3, - encode: encode$3 + encode: encode$3, + toVSCodeRange: toVSCodeRange$1, + fromVSCodeRange: fromVSCodeRange }; exports.AgdaPosition = AgdaPosition; diff --git a/lib/js/test/tests/Test__EditorIM.bs.js b/lib/js/test/tests/Test__EditorIM.bs.js index 83893de7..a3536e16 100644 --- a/lib/js/test/tests/Test__EditorIM.bs.js +++ b/lib/js/test/tests/Test__EditorIM.bs.js @@ -10,6 +10,7 @@ var Core__Option = require("@rescript/core/lib/js/src/Core__Option.bs.js"); var IM$AgdaModeVscode = require("../../src/InputMethod/IM.bs.js"); var Chan$AgdaModeVscode = require("../../src/Util/Chan.bs.js"); var Util$AgdaModeVscode = require("../../src/Util/Util.bs.js"); +var Common$AgdaModeVscode = require("../../src/View/Common.bs.js"); var Editor$AgdaModeVscode = require("../../src/Editor.bs.js"); var Test__Util$AgdaModeVscode = require("./Test__Util.bs.js"); @@ -113,7 +114,7 @@ async function backspace(setup) { async function select(setup, intervals) { var ranges = intervals.map(function (extra) { - return Editor$AgdaModeVscode.$$Range.fromInterval(setup.editor.document, extra); + return Common$AgdaModeVscode.Interval.toVSCodeRange(setup.editor.document, extra); }); return Editor$AgdaModeVscode.$$Selection.setMany(setup.editor, ranges); } @@ -121,7 +122,7 @@ async function select(setup, intervals) { async function selectAndWait(setup, intervals) { var promise = wait(setup); var ranges = intervals.map(function (extra) { - return Editor$AgdaModeVscode.$$Range.fromInterval(setup.editor.document, extra); + return Common$AgdaModeVscode.Interval.toVSCodeRange(setup.editor.document, extra); }); Editor$AgdaModeVscode.$$Selection.setMany(setup.editor, ranges); return await promise; diff --git a/src/Editor.res b/src/Editor.res index fb6cef4e..5146154b 100644 --- a/src/Editor.res +++ b/src/Editor.res @@ -8,10 +8,6 @@ module Position = { string_of_int(VSCode.Position.line(position)) ++ ":" ++ string_of_int(VSCode.Position.character(position)) - - let fromOffset = (document, offset) => document->VSCode.TextDocument.positionAt(offset) - - let toOffset = (document, position) => document->VSCode.TextDocument.offsetAt(position) } module Range = { @@ -28,16 +24,6 @@ module Range = { Position.toString(start) ++ "-" ++ Position.toString(end) } } - - let fromInterval = (document, interval) => - VSCode.Range.make( - Position.fromOffset(document, fst(interval)), - Position.fromOffset(document, snd(interval)), - ) - let toInterval = (document, range) => ( - Position.toOffset(document, VSCode.Range.start(range)), - Position.toOffset(document, VSCode.Range.end_(range)), - ) } module Decoration = { diff --git a/src/Goal.res b/src/Goal.res index 04471b0e..ba92bba8 100644 --- a/src/Goal.res +++ b/src/Goal.res @@ -88,10 +88,10 @@ module Module: Module = { let getInnerRange = (self, document) => { let interval = (fst(self.interval) + 2, snd(self.interval) - 2) - Editor.Range.fromInterval(document, interval) + Interval.toVSCodeRange(document, interval) } - let getOuterRange = (self, document) => Editor.Range.fromInterval(document, self.interval) + let getOuterRange = (self, document) => Interval.toVSCodeRange(document, self.interval) let getContent = (self, document) => { let innerRange = getInnerRange(self, document) @@ -106,17 +106,17 @@ module Module: Module = { let setCursor = (self, editor) => { let document = VSCode.TextEditor.document(editor) let (start, _) = self.interval - let position = Editor.Position.fromOffset(document, start + 3) + let position = VSCode.TextDocument.positionAt(document, start + 3) Editor.Cursor.set(editor, position) // scroll to that part of the document - let range = Editor.Range.fromInterval(document, self.interval) + let range = Interval.toVSCodeRange(document, self.interval) editor->VSCode.TextEditor.revealRange(range, None) } let buildHaskellRange = (self, document, version, filepath: string) => { let (start, end_) = self.interval - let startPoint = Editor.Position.fromOffset(document, start) - let endPoint = Editor.Position.fromOffset(document, end_) + let startPoint = VSCode.TextDocument.positionAt(document, start) + let endPoint = VSCode.TextDocument.positionAt(document, end_) let startIndex = string_of_int(start + 3) let startRow = string_of_int(VSCode.Position.line(startPoint) + 1) diff --git a/src/Highlighting.res b/src/Highlighting.res index 537ba98d..343e21ee 100644 --- a/src/Highlighting.res +++ b/src/Highlighting.res @@ -31,7 +31,7 @@ module Module: Module = { let decorateHole = (editor: VSCode.TextEditor.t, interval: Interval.t, index: int) => { let document = VSCode.TextEditor.document(editor) - let backgroundRange = Editor.Range.fromInterval(document, interval) + let backgroundRange = Interval.toVSCodeRange(document, interval) let background = Editor.Decoration.highlightBackground( editor, @@ -40,7 +40,7 @@ module Module: Module = { ) let indexText = string_of_int(index) let innerInterval = (fst(interval), snd(interval) - 2) - let indexRange = Editor.Range.fromInterval(document, innerInterval) + let indexRange = Interval.toVSCodeRange(document, innerInterval) let index = Editor.Decoration.overlayText( editor, diff --git a/src/InputMethod/IM.res b/src/InputMethod/IM.res index b5d0b21a..58980cdf 100644 --- a/src/InputMethod/IM.res +++ b/src/InputMethod/IM.res @@ -84,6 +84,7 @@ module Module: Module = { module Instance = { type t = { mutable interval: Interval.t, + mutable range: VSCode.Range.t, mutable decoration: option, mutable buffer: Buffer.t, } @@ -92,14 +93,16 @@ module Module: Module = { switch editor { | None => { interval, + range: VSCode.Range.make(VSCode.Position.make(0, fst(interval)), VSCode.Position.make(0, snd(interval))), decoration: None, buffer: Buffer.make(), } | Some(editor) => let document = VSCode.TextEditor.document(editor) - let range = Editor.Range.fromInterval(document, interval) + let range = Interval.toVSCodeRange(document, interval) { interval, + range, decoration: Some(Editor.Decoration.underlineText(editor, range)), buffer: Buffer.make(), } diff --git a/src/Main.res b/src/Main.res index 8ae817ff..5c871626 100644 --- a/src/Main.res +++ b/src/Main.res @@ -87,8 +87,8 @@ let initialize = (channels, extensionPath, globalStoragePath, editor, fileName) event ->VSCode.TextEditorSelectionChangeEvent.selections ->Array.map(selection => ( - Editor.Position.toOffset(document, VSCode.Selection.start(selection)), - Editor.Position.toOffset(document, VSCode.Selection.end_(selection)), + VSCode.TextDocument.offsetAt(document, VSCode.Selection.start(selection)), + VSCode.TextDocument.offsetAt(document, VSCode.Selection.end_(selection)), )) State__InputMethod.select(state, intervals)->ignore @@ -103,7 +103,7 @@ let initialize = (channels, extensionPath, globalStoragePath, editor, fileName) // only provide source location, when the filename matched let currentFileName = state.document->VSCode.TextDocument.fileName->Parser.filepath let normalizedFileName = Parser.filepath(fileName) - let offset = Editor.Position.toOffset(state.document, position) + let offset = VSCode.TextDocument.offsetAt(state.document, position) if normalizedFileName == currentFileName { state.tokens->Tokens.lookupSrcLoc(offset) diff --git a/src/State/State__Goal.res b/src/State/State__Goal.res index 0df179c7..ac172e00 100644 --- a/src/State/State__Goal.res +++ b/src/State/State__Goal.res @@ -40,7 +40,7 @@ module Module: Module = { let caseSplitAux = (document, goal: Goal.t) => { let textBeforeGoal = { let interval = (0, fst(goal.interval)) - let range = Editor.Range.fromInterval(document, interval) + let range = Interval.toVSCodeRange(document, interval) Editor.Text.get(document, range) } @@ -331,7 +331,7 @@ module Module: Module = { } else { Js.Array.joinWith("\n" ++ (Js.String.repeat(indentWidth - 2, " ") ++ "; "), lines) } - let rewriteRange = Editor.Range.fromInterval(state.document, rewriteInterval) + let rewriteRange = Interval.toVSCodeRange(state.document, rewriteInterval) if await Editor.Text.replace(state.document, rewriteRange, rewriteText) { // destroy the old goal Goal.destroyDecoration(goal) @@ -355,13 +355,13 @@ module Module: Module = { let indentedLines = indentation ++ Js.Array.joinWith("\n" ++ indentation, lines) // the rows spanned by the goal (including the text outside the goal) // will be replaced by the `indentedLines` - let start = Editor.Position.fromOffset(state.document, fst(goal.interval)) + let start = VSCode.TextDocument.positionAt(state.document, fst(goal.interval)) let startLineNo = VSCode.Position.line(start) let startLineRange = state.document->VSCode.TextDocument.lineAt(startLineNo)->VSCode.TextLine.range let start = VSCode.Range.start(startLineRange) - let end_ = Editor.Position.fromOffset(state.document, snd(goal.interval)) + let end_ = VSCode.TextDocument.positionAt(state.document, snd(goal.interval)) let rangeToBeReplaced = VSCode.Range.make(start, end_) if await Editor.Text.replace(state.document, rangeToBeReplaced, indentedLines) { // destroy the old goal @@ -381,7 +381,7 @@ module Module: Module = { updateIntervals(state) let innerRange = Goal.getInnerRange(goal, state.document) - let outerRange = Editor.Range.fromInterval(state.document, goal.interval) + let outerRange = Interval.toVSCodeRange(state.document, goal.interval) let content = Editor.Text.get(state.document, innerRange)->Js.String.trim if await Editor.Text.replace(state.document, outerRange, content) { Goal.destroyDecoration(goal) diff --git a/src/State/State__InputMethod.res b/src/State/State__InputMethod.res index ad026322..d7dfad3b 100644 --- a/src/State/State__InputMethod.res +++ b/src/State/State__InputMethod.res @@ -29,7 +29,7 @@ module Module: Module = { await State.View.Panel.updateIM(state, Update(sequence, translation, index)) | Rewrite(replacements, resolve) => let replacements = replacements->Array.map(((interval, text)) => { - let range = Editor.Range.fromInterval(state.document, interval) + let range = Interval.toVSCodeRange(state.document, interval) (range, text) }) let _ = await Editor.Text.batchReplace(state.document, replacements) @@ -54,7 +54,7 @@ module Module: Module = { // activated the input method with cursors positions let intervals: array = Editor.Selection.getMany(state.editor)->Array.map( - Editor.Range.toInterval(state.document, ...) + Interval.fromVSCodeRange(state.document, ...) ) runAndHandle(state, Activate(intervals)) } diff --git a/src/Tokens.res b/src/Tokens.res index d9466abb..a4c6a3b4 100644 --- a/src/Tokens.res +++ b/src/Tokens.res @@ -198,9 +198,9 @@ module Module: Module = { let existing = self.tokens->AVLTree.find(startOffset) switch existing { | None => - let start = Editor.Position.fromOffset(document, startOffset) + let start = VSCode.TextDocument.positionAt(document, startOffset) - let end_ = Editor.Position.fromOffset( + let end_ = VSCode.TextDocument.positionAt( document, Agda.OffsetConverter.convert(offsetConverter, info.end_), ) @@ -258,7 +258,7 @@ module Module: Module = { let text = Editor.Text.getAll(document) let offsetConverter = Agda.OffsetConverter.make(text) let offset = Agda.OffsetConverter.convert(offsetConverter, offset - 1) - let position = Editor.Position.fromOffset(document, offset) + let position = VSCode.TextDocument.positionAt(document, offset) [(range, filepath, position)] }) }) diff --git a/src/View/Common.res b/src/View/Common.res index 52349bdc..c6587786 100644 --- a/src/View/Common.res +++ b/src/View/Common.res @@ -10,12 +10,11 @@ module AgdaPosition = { pos: int, } - let toVSCodePosition = (position: t) => - VSCode.Position.make(position.line - 1, position.col - 1) + let toVSCodePosition = (position: t) => VSCode.Position.make(position.line - 1, position.col - 1) let decode = { open JsonCombinators.Json.Decode - tuple3(int, int, int)->map((. (line, col, pos)) => { + tuple3(int, int, int)->map(((line, col, pos)) => { line, col, pos, @@ -37,7 +36,10 @@ module AgdaInterval = { let make = (start, end_) => {start, end_} let toVSCodeRange = (range: t) => - VSCode.Range.make(AgdaPosition.toVSCodePosition(range.start), AgdaPosition.toVSCodePosition(range.end_)) + VSCode.Range.make( + AgdaPosition.toVSCodePosition(range.start), + AgdaPosition.toVSCodePosition(range.end_), + ) let fuse = (a, b) => { let start = if a.start.pos > b.start.pos { @@ -68,7 +70,7 @@ module AgdaInterval = { let decode = { open JsonCombinators.Json.Decode - tuple2(AgdaPosition.decode, AgdaPosition.decode)->map((. (start, end_)) => { + tuple2(AgdaPosition.decode, AgdaPosition.decode)->map(((start, end_)) => { start, end_, }) @@ -94,127 +96,127 @@ module AgdaRange = { /* filepath | line,col-line,col | line,col-col | line,col | */ "/^(\S+)\:(?:(\d+)\,(\d+)\-(\d+)\,(\d+)|(\d+)\,(\d+)\-(\d+)|(\d+)\,(\d+))$/" - )->Emacs__Parser.captures(captured => { - open Belt - open Belt.Option - let flatten = xs => xs->flatMap(x => x) - // filepath: captured[1] - // type 1: captured[2] ~ captured[5] - // type 2: captured[6] ~ captured[8] - // type 3: captured[9] ~ captured[10] - let srcFile = captured[1]->flatten - let isType1 = captured[2]->flatten->isSome - let isType2 = captured[6]->flatten->isSome - if isType1 { - captured[2] - ->flatten - ->flatMap(int_of_string_opt) - ->flatMap(rowStart => - captured[3] + )->(Emacs__Parser.captures(captured => { + open Belt + open Belt.Option + let flatten = xs => xs->flatMap(x => x) + // filepath: captured[1] + // type 1: captured[2] ~ captured[5] + // type 2: captured[6] ~ captured[8] + // type 3: captured[9] ~ captured[10] + let srcFile = captured[1]->flatten + let isType1 = captured[2]->flatten->isSome + let isType2 = captured[6]->flatten->isSome + if isType1 { + captured[2] ->flatten ->flatMap(int_of_string_opt) - ->flatMap( - colStart => - captured[4] - ->flatten - ->flatMap(int_of_string_opt) - ->flatMap( - rowEnd => - captured[5] - ->flatten - ->flatMap(int_of_string_opt) - ->flatMap( - colEnd => Some( - Range( - srcFile, - [ - { - start: { - pos: 0, - line: rowStart, - col: colStart, + ->flatMap(rowStart => + captured[3] + ->flatten + ->flatMap(int_of_string_opt) + ->flatMap( + colStart => + captured[4] + ->flatten + ->flatMap(int_of_string_opt) + ->flatMap( + rowEnd => + captured[5] + ->flatten + ->flatMap(int_of_string_opt) + ->flatMap( + colEnd => Some( + Range( + srcFile, + [ + { + start: { + pos: 0, + line: rowStart, + col: colStart, + }, + end_: { + pos: 0, + line: rowEnd, + col: colEnd, + }, }, - end_: { - pos: 0, - line: rowEnd, - col: colEnd, - }, - }, - ], + ], + ), ), ), - ), - ), + ), + ) ) - ) - } else if isType2 { - captured[6] - ->flatten - ->flatMap(int_of_string_opt) - ->flatMap(row => - captured[7] + } else if isType2 { + captured[6] ->flatten ->flatMap(int_of_string_opt) - ->flatMap( - colStart => - captured[8] - ->flatten - ->flatMap(int_of_string_opt) - ->flatMap( - colEnd => Some( - Range( - srcFile, - [ - { - start: { - pos: 0, - line: row, - col: colStart, - }, - end_: { - pos: 0, - line: row, - col: colEnd, + ->flatMap(row => + captured[7] + ->flatten + ->flatMap(int_of_string_opt) + ->flatMap( + colStart => + captured[8] + ->flatten + ->flatMap(int_of_string_opt) + ->flatMap( + colEnd => Some( + Range( + srcFile, + [ + { + start: { + pos: 0, + line: row, + col: colStart, + }, + end_: { + pos: 0, + line: row, + col: colEnd, + }, }, - }, - ], + ], + ), ), ), - ), + ) ) - ) - } else { - captured[9] - ->flatten - ->flatMap(int_of_string_opt) - ->flatMap(row => - captured[10] + } else { + captured[9] ->flatten ->flatMap(int_of_string_opt) - ->flatMap( - col => Some( - Range( - srcFile, - [ - { - start: { - pos: 0, - line: row, - col, - }, - end_: { - pos: 0, - line: row, - col, + ->flatMap(row => + captured[10] + ->flatten + ->flatMap(int_of_string_opt) + ->flatMap( + col => Some( + Range( + srcFile, + [ + { + start: { + pos: 0, + line: row, + col, + }, + end_: { + pos: 0, + line: row, + col, + }, }, - }, - ], + ], + ), ), - ), + ) ) - ) - } - }, ...) + } + }, ...)) let fuse = (a: t, b: t): t => { open AgdaInterval @@ -286,7 +288,7 @@ module AgdaRange = { switch x { | "Range" => Payload( - pair(option(string), array(AgdaInterval.decode))->map((. (source, intervals)) => Range( + pair(option(string), array(AgdaInterval.decode))->map(((source, intervals)) => Range( source, intervals, )), @@ -328,4 +330,15 @@ module Interval = { open JsonCombinators.Json.Encode pair(int, int) } + + let toVSCodeRange = (document, interval) => + VSCode.Range.make( + VSCode.TextDocument.positionAt(document, fst(interval)), + VSCode.TextDocument.positionAt(document, snd(interval)), + ) + + let fromVSCodeRange = (document, range) => ( + VSCode.TextDocument.offsetAt(document, VSCode.Range.start(range)), + VSCode.TextDocument.offsetAt(document, VSCode.Range.end_(range)), + ) } diff --git a/test/tests/Test__EditorIM.res b/test/tests/Test__EditorIM.res index 60406887..4ed18c97 100644 --- a/test/tests/Test__EditorIM.res +++ b/test/tests/Test__EditorIM.res @@ -118,14 +118,14 @@ module IM = { let select = async (setup, intervals) => { let ranges = - intervals->Array.map(Editor.Range.fromInterval(setup.editor->VSCode.TextEditor.document, ...)) + intervals->Array.map(Common.Interval.toVSCodeRange(setup.editor->VSCode.TextEditor.document, ...)) Editor.Selection.setMany(setup.editor, ranges) } let selectAndWait = async (setup, intervals) => { let promise = wait(setup) let ranges = - intervals->Array.map(Editor.Range.fromInterval(setup.editor->VSCode.TextEditor.document, ...)) + intervals->Array.map(Common.Interval.toVSCodeRange(setup.editor->VSCode.TextEditor.document, ...)) Editor.Selection.setMany(setup.editor, ranges) await promise } From 7f73dfa2d8b7a8dd2083c8963aafaa57f9c06dee Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Thu, 31 Oct 2024 22:37:53 +0800 Subject: [PATCH 100/109] [ change ] Replace offset intervals with VSCode Ranges in the test cases for the IM --- lib/js/src/InputMethod/IM.bs.js | 33 +- lib/js/src/State/State__InputMethod.bs.js | 11 +- lib/js/test/tests/Test__EditorIM.bs.js | 371 +++++++++++++++++----- src/InputMethod/IM.res | 49 ++- src/State/State__InputMethod.res | 7 +- test/tests/Test__EditorIM.res | 87 ++--- 6 files changed, 409 insertions(+), 149 deletions(-) diff --git a/lib/js/src/InputMethod/IM.bs.js b/lib/js/src/InputMethod/IM.bs.js index e90c86e6..fd6b5c85 100644 --- a/lib/js/src/InputMethod/IM.bs.js +++ b/lib/js/src/InputMethod/IM.bs.js @@ -49,7 +49,22 @@ function fromOutput(xs) { } else { return { TAG: "RewriteIssued", - _0: x._0, + _0: x._0.map(function (param) { + var range = param[0]; + return [ + [ + [ + range.start.line, + range.start.character + ], + [ + range.start.line, + range.end.character + ] + ], + param[1] + ]; + }), [Symbol.for("name")]: "RewriteIssued" }; } @@ -289,9 +304,10 @@ function deactivate(self) { function applyRewrites(self, editor, rewrites) { self.semaphore = true; - var replacements = rewrites.map(function (param) { + var replacementRanges = rewrites.map(function (param) { + var interval = param.interval; return [ - param.interval, + editor !== undefined ? Common$AgdaModeVscode.Interval.toVSCodeRange(Caml_option.valFromOption(editor).document, interval) : new Vscode.Range(new Vscode.Position(0, interval[0]), new Vscode.Position(0, interval[1])), param.text ]; }); @@ -303,10 +319,7 @@ function applyRewrites(self, editor, rewrites) { Core__Option.forEach(editor, (function (extra) { Core__Option.forEach(instance.decoration, Editor$AgdaModeVscode.Decoration.destroy); var $$document = extra.document; - var match = instance.interval; - var start = $$document.positionAt(match[0]); - var end_ = $$document.positionAt(match[1]); - var range = new Vscode.Range(start, end_); + var range = Common$AgdaModeVscode.Interval.toVSCodeRange($$document, instance.interval); instance.decoration = Caml_option.some(Editor$AgdaModeVscode.Decoration.underlineText(extra, range)); })); })); @@ -319,7 +332,7 @@ function applyRewrites(self, editor, rewrites) { return [ { TAG: "Rewrite", - _0: replacements, + _0: replacementRanges, _1: resolve, [Symbol.for("name")]: "Rewrite" }, @@ -336,7 +349,7 @@ function applyRewrites(self, editor, rewrites) { return [ { TAG: "Rewrite", - _0: replacements, + _0: replacementRanges, _1: resolve, [Symbol.for("name")]: "Rewrite" }, @@ -362,7 +375,6 @@ function run(self, editor, input) { if (editor === undefined) { return { interval: extra, - range: new Vscode.Range(new Vscode.Position(0, extra[0]), new Vscode.Position(0, extra[1])), decoration: undefined, buffer: Buffer$AgdaModeVscode.make() }; @@ -372,7 +384,6 @@ function run(self, editor, input) { var range = Common$AgdaModeVscode.Interval.toVSCodeRange($$document, extra); return { interval: extra, - range: range, decoration: Caml_option.some(Editor$AgdaModeVscode.Decoration.underlineText(editor$1, range)), buffer: Buffer$AgdaModeVscode.make() }; diff --git a/lib/js/src/State/State__InputMethod.bs.js b/lib/js/src/State/State__InputMethod.bs.js index 25aac96c..984c7518 100644 --- a/lib/js/src/State/State__InputMethod.bs.js +++ b/lib/js/src/State/State__InputMethod.bs.js @@ -29,14 +29,7 @@ async function handle(state, output) { [Symbol.for("name")]: "Update" }); } - var replacements = kind._0.map(function (param) { - var range = Common$AgdaModeVscode.Interval.toVSCodeRange(state.document, param[0]); - return [ - range, - param[1] - ]; - }); - await Editor$AgdaModeVscode.$$Text.batchReplace(state.document, replacements); + await Editor$AgdaModeVscode.$$Text.batchReplace(state.document, kind._0); return kind._1(); } }; @@ -89,7 +82,7 @@ async function handle$1(state, output) { }; var replace = function (param) { var t = param[1]; - var match = param[0]; + var match = Common$AgdaModeVscode.Interval.fromVSCodeRange(state.document, param[0]); var end_ = match[1]; var start = match[0]; replaced.contents = replaced.contents.slice(0, delta.contents + start | 0) + t + replaced.contents.slice(delta.contents + end_ | 0); diff --git a/lib/js/test/tests/Test__EditorIM.bs.js b/lib/js/test/tests/Test__EditorIM.bs.js index a3536e16..69894748 100644 --- a/lib/js/test/tests/Test__EditorIM.bs.js +++ b/lib/js/test/tests/Test__EditorIM.bs.js @@ -178,8 +178,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 1 + [ + 0, + 0 + ], + [ + 0, + 1 + ] ], "←" ]], @@ -239,8 +245,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 6 + [ + 0, + 0 + ], + [ + 0, + 6 + ] ], "λ" ]], @@ -278,8 +290,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 4 + [ + 0, + 0 + ], + [ + 0, + 4 + ] ], "ƛ" ]], @@ -301,8 +319,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 1 + [ + 0, + 0 + ], + [ + 0, + 1 + ] ], "♭" ]], @@ -318,8 +342,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 2 + [ + 0, + 0 + ], + [ + 0, + 2 + ] ], "𝕟" ]], @@ -341,8 +371,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 1 + [ + 0, + 0 + ], + [ + 0, + 1 + ] ], "\\" ]], @@ -386,8 +422,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 3 + [ + 0, + 0 + ], + [ + 0, + 3 + ] ], "∗" ]], @@ -447,8 +489,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 6 + [ + 0, + 0 + ], + [ + 0, + 6 + ] ], "⁎" ]], @@ -475,8 +523,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 1 + [ + 0, + 0 + ], + [ + 0, + 1 + ] ], "←" ]], @@ -503,8 +557,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 1 + [ + 0, + 0 + ], + [ + 0, + 1 + ] ], "←" ]], @@ -564,8 +624,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 6 + [ + 0, + 0 + ], + [ + 0, + 6 + ] ], "λ" ]], @@ -581,8 +647,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 0 + [ + 0, + 0 + ], + [ + 0, + 0 + ] ], "lambd" ]], @@ -609,8 +681,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 1 + [ + 0, + 0 + ], + [ + 0, + 1 + ] ], "♭" ]], @@ -674,8 +752,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 0 + [ + 0, + 0 + ], + [ + 0, + 0 + ] ], "" ]], @@ -747,8 +831,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 3 + [ + 0, + 0 + ], + [ + 0, + 3 + ] ], "∧" ]], @@ -764,8 +854,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 2 + [ + 0, + 0 + ], + [ + 0, + 2 + ] ], "≙" ]], @@ -824,8 +920,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 1 + [ + 0, + 0 + ], + [ + 0, + 1 + ] ], "(" ]], @@ -841,8 +943,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 1 + [ + 0, + 0 + ], + [ + 0, + 1 + ] ], "[" ]], @@ -858,8 +966,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 1 + [ + 0, + 0 + ], + [ + 0, + 1 + ] ], "⟪" ]], @@ -875,8 +989,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 1 + [ + 0, + 0 + ], + [ + 0, + 1 + ] ], "⟨" ]], @@ -892,8 +1012,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 1 + [ + 0, + 0 + ], + [ + 0, + 1 + ] ], "(" ]], @@ -918,8 +1044,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 1 + [ + 0, + 0 + ], + [ + 0, + 1 + ] ], "!" ]], @@ -935,8 +1067,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 1 + [ + 0, + 0 + ], + [ + 0, + 1 + ] ], "¡" ]], @@ -952,8 +1090,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 1 + [ + 0, + 0 + ], + [ + 0, + 1 + ] ], "!" ]], @@ -969,8 +1113,14 @@ describe("Input Method (Editor)", (function () { TAG: "RewriteIssued", _0: [[ [ - 0, - 1 + [ + 0, + 0 + ], + [ + 0, + 1 + ] ], "¡" ]], @@ -1002,35 +1152,60 @@ describe("Input Method (Editor)", (function () { var log = await activate(setup$1, positions, undefined); Curry._3(Assert.deepEqual, ["Activate"], log, undefined); var log$1 = await insertChar(setup$1, "b"); + console.log(log$1); Curry._3(Assert.deepEqual, [ { TAG: "RewriteIssued", _0: [ [ [ - 0, - 1 + [ + 0, + 0 + ], + [ + 0, + 1 + ] ], "♭" ], [ [ - 2, - 3 + [ + 1, + 0 + ], + [ + 1, + 1 + ] ], "♭" ], [ [ - 4, - 5 + [ + 2, + 0 + ], + [ + 2, + 1 + ] ], "♭" ], [ [ - 6, - 7 + [ + 3, + 0 + ], + [ + 3, + 1 + ] ], "♭" ] @@ -1048,29 +1223,53 @@ describe("Input Method (Editor)", (function () { _0: [ [ [ - 0, - 2 + [ + 0, + 0 + ], + [ + 0, + 2 + ] ], "𝕟" ], [ [ - 3, - 5 + [ + 1, + 0 + ], + [ + 1, + 2 + ] ], "𝕟" ], [ [ - 6, - 8 + [ + 2, + 0 + ], + [ + 2, + 2 + ] ], "𝕟" ], [ [ - 9, - 11 + [ + 3, + 0 + ], + [ + 3, + 2 + ] ], "𝕟" ] @@ -1123,29 +1322,53 @@ describe("Input Method (Editor)", (function () { _0: [ [ [ - 0, - 3 + [ + 0, + 0 + ], + [ + 0, + 3 + ] ], "∧" ], [ [ - 8, - 11 + [ + 1, + 1 + ], + [ + 1, + 4 + ] ], "∧" ], [ [ - 16, - 19 + [ + 2, + 2 + ], + [ + 2, + 5 + ] ], "∧" ], [ [ - 24, - 27 + [ + 3, + 3 + ], + [ + 3, + 6 + ] ], "∧" ] diff --git a/src/InputMethod/IM.res b/src/InputMethod/IM.res index 58980cdf..274d83c7 100644 --- a/src/InputMethod/IM.res +++ b/src/InputMethod/IM.res @@ -37,7 +37,7 @@ module Input = { module Output = { type kind = | UpdateView(string, Translator.translation, int) - | Rewrite(array<(Interval.t, string)>, unit => unit) + | Rewrite(array<(VSCode.Range.t, string)>, unit => unit) | Activate | Deactivate @@ -48,7 +48,7 @@ module Output = { module Log = { type kind = | UpdateView - | RewriteIssued(array<(Interval.t, string)>) + | RewriteIssued(array<(((int, int), (int, int)), string)>) // start line // start column // end line // end column | RewriteApplied | Activate | Deactivate @@ -58,7 +58,22 @@ module Log = { xs->Array.map(x => switch x { | UpdateView(_, _, _) => UpdateView - | Rewrite(xs, _) => RewriteIssued(xs) + | Rewrite(xs, _) => + RewriteIssued( + xs->Array.map(((range, text)) => ( + ( + ( + VSCode.Position.line(VSCode.Range.start(range)), + VSCode.Position.character(VSCode.Range.start(range)), + ), + ( + VSCode.Position.line(VSCode.Range.start(range)), + VSCode.Position.character(VSCode.Range.end_(range)), + ), + ), + text, + )), + ) | Activate => Activate | Deactivate => Deactivate } @@ -84,7 +99,7 @@ module Module: Module = { module Instance = { type t = { mutable interval: Interval.t, - mutable range: VSCode.Range.t, + // mutable range: VSCode.Range.t, mutable decoration: option, mutable buffer: Buffer.t, } @@ -93,7 +108,6 @@ module Module: Module = { switch editor { | None => { interval, - range: VSCode.Range.make(VSCode.Position.make(0, fst(interval)), VSCode.Position.make(0, snd(interval))), decoration: None, buffer: Buffer.make(), } @@ -102,7 +116,7 @@ module Module: Module = { let range = Interval.toVSCodeRange(document, interval) { interval, - range, + // range, decoration: Some(Editor.Decoration.underlineText(editor, range)), buffer: Buffer.make(), } @@ -114,10 +128,7 @@ module Module: Module = { instance.decoration->Option.forEach(Editor.Decoration.destroy) let document = VSCode.TextEditor.document(editor) - let (start, end_) = instance.interval - let start = document->VSCode.TextDocument.positionAt(start) - let end_ = document->VSCode.TextDocument.positionAt(end_) - let range = VSCode.Range.make(start, end_) + let range = Interval.toVSCodeRange(document, instance.interval) instance.decoration = Some(Editor.Decoration.underlineText(editor, range)) } @@ -151,6 +162,7 @@ module Module: Module = { // datatype for representing a rewrite to be made to the text editor type rewrite = { interval: Interval.t, + // range: VSCode.Range.t, text: string, // `instance` has been destroyed if is None instance: option, @@ -323,7 +335,18 @@ module Module: Module = { self.semaphore = true // calculate the replacements to be made to the editor - let replacements = rewrites->Array.map(({interval, text}) => (interval, text)) + let replacementRanges = rewrites->Array.map(({interval, text}) => ( + switch editor { + | None => + // the line number is always 0 because we are in a box + VSCode.Range.make( + VSCode.Position.make(0, fst(interval)), + VSCode.Position.make(0, snd(interval)), + ) + | Some(editor) => Interval.toVSCodeRange(VSCode.TextEditor.document(editor), interval) + }, + text, + )) let (promise, resolve, _) = Util.Promise_.pending() @@ -351,9 +374,9 @@ module Module: Module = { switch self.instances[0] { | None => deactivate(self) - [Output.Rewrite(replacements, resolve), Deactivate] + [Output.Rewrite(replacementRanges, resolve), Deactivate] | Some(instance) => [ - Output.Rewrite(replacements, resolve), + Output.Rewrite(replacementRanges, resolve), UpdateView( Buffer.toSequence(instance.buffer), instance.buffer.translation, diff --git a/src/State/State__InputMethod.res b/src/State/State__InputMethod.res index d7dfad3b..73b9adc8 100644 --- a/src/State/State__InputMethod.res +++ b/src/State/State__InputMethod.res @@ -28,10 +28,6 @@ module Module: Module = { | UpdateView(sequence, translation, index) => await State.View.Panel.updateIM(state, Update(sequence, translation, index)) | Rewrite(replacements, resolve) => - let replacements = replacements->Array.map(((interval, text)) => { - let range = Interval.toVSCodeRange(state.document, interval) - (range, text) - }) let _ = await Editor.Text.batchReplace(state.document, replacements) resolve() | Activate => @@ -80,7 +76,8 @@ module Module: Module = { // iterate through an array of `rewrites` let replaced = ref(previous.contents) let delta = ref(0) - let replace = (((start, end_), t)) => { + let replace = ((range, t)) => { + let (start, end_) = Common.Interval.fromVSCodeRange(state.document, range) replaced := replaced.contents->String.slice(~start=0, ~end=delta.contents + start) ++ t ++ diff --git a/test/tests/Test__EditorIM.res b/test/tests/Test__EditorIM.res index 4ed18c97..951d9d44 100644 --- a/test/tests/Test__EditorIM.res +++ b/test/tests/Test__EditorIM.res @@ -155,7 +155,7 @@ describe("Input Method (Editor)", () => { let log = await IM.activate(setup, ()) Assert.deepEqual([IM.Log.Activate], log) let log = await IM.insertChar(setup, "l") - Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "←")]), UpdateView, RewriteApplied], log) + Assert.deepEqual([IM.Log.RewriteIssued([(((0, 0), (0, 1)), "←")]), UpdateView, RewriteApplied], log) Assert.equal("←", document->Editor.Text.getAll) let log = await IM.insertChar(setup, "a") Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) @@ -170,7 +170,7 @@ describe("Input Method (Editor)", () => { Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) Assert.equal("←ambd", document->Editor.Text.getAll) let log = await IM.insertChar(setup, "a") - Assert.deepEqual([IM.Log.RewriteIssued([((0, 6), "λ")]), UpdateView, RewriteApplied], log) + Assert.deepEqual([IM.Log.RewriteIssued([(((0, 0), (0, 6)), "λ")]), UpdateView, RewriteApplied], log) Assert.equal("λ", document->Editor.Text.getAll) let log = await IM.insertChar(setup, "b") Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) @@ -179,7 +179,7 @@ describe("Input Method (Editor)", () => { Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) Assert.equal("λba", document->Editor.Text.getAll) let log = await IM.insertChar(setup, "r") - Assert.deepEqual([IM.Log.RewriteIssued([((0, 4), "ƛ")]), Deactivate, RewriteApplied], log) + Assert.deepEqual([IM.Log.RewriteIssued([(((0, 0), (0, 4)), "ƛ")]), Deactivate, RewriteApplied], log) Assert.equal("ƛ", document->Editor.Text.getAll) }, ) @@ -192,11 +192,11 @@ describe("Input Method (Editor)", () => { let log = await IM.activate(setup, ()) Assert.deepEqual([IM.Log.Activate], log) let log = await IM.insertChar(setup, "b") - Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "♭")]), UpdateView, RewriteApplied], log) + Assert.deepEqual([IM.Log.RewriteIssued([(((0, 0), (0, 1)), "♭")]), UpdateView, RewriteApplied], log) Assert.equal("♭", document->Editor.Text.getAll) let log = await IM.insertChar(setup, "n") Assert.deepEqual( - [IM.Log.RewriteIssued([((0, 2), "𝕟")]), Deactivate, RewriteApplied], + [IM.Log.RewriteIssued([(((0, 0), (0, 2)), "𝕟")]), Deactivate, RewriteApplied], log, ) Assert.equal("𝕟", document->Editor.Text.getAll) @@ -211,7 +211,7 @@ describe("Input Method (Editor)", () => { let log = await IM.activate(setup, ()) Assert.deepEqual([IM.Log.Activate], log) let log = await IM.insertChar(setup, "\\") - Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "\\")]), Deactivate, RewriteApplied], log) + Assert.deepEqual([IM.Log.RewriteIssued([(((0, 0), (0, 1)), "\\")]), Deactivate, RewriteApplied], log) Assert.equal("\\", document->Editor.Text.getAll) }, ) @@ -230,7 +230,7 @@ describe("Input Method (Editor)", () => { Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) Assert.equal("as", document->Editor.Text.getAll) let log = await IM.insertChar(setup, "t") - Assert.deepEqual([IM.Log.RewriteIssued([((0, 3), "∗")]), UpdateView, RewriteApplied], log) + Assert.deepEqual([IM.Log.RewriteIssued([(((0, 0), (0, 3)), "∗")]), UpdateView, RewriteApplied], log) Assert.equal("∗", document->Editor.Text.getAll) let log = await IM.insertChar(setup, "e") Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) @@ -245,7 +245,7 @@ describe("Input Method (Editor)", () => { Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) Assert.equal("∗eris", document->Editor.Text.getAll) let log = await IM.insertChar(setup, "k") - Assert.deepEqual([IM.Log.RewriteIssued([((0, 6), "⁎")]), UpdateView, RewriteApplied], log) + Assert.deepEqual([IM.Log.RewriteIssued([(((0, 0), (0, 6)), "⁎")]), UpdateView, RewriteApplied], log) Assert.equal("⁎", document->Editor.Text.getAll) let log = await IM.deactivate(setup) Assert.deepEqual([IM.Log.Deactivate], log) @@ -263,13 +263,13 @@ describe("Input Method (Editor)", () => { let log = await IM.activate(setup, ()) Assert.deepEqual([IM.Log.Activate], log) let log = await IM.insertChar(setup, "l") - Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "←")]), UpdateView, RewriteApplied], log) + Assert.deepEqual([IM.Log.RewriteIssued([(((0, 0), (0, 1)), "←")]), UpdateView, RewriteApplied], log) Assert.equal("←", document->Editor.Text.getAll) let log = await IM.insertChar(setup, "a") Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) Assert.equal("←a", document->Editor.Text.getAll) let log = await IM.backspace(setup) - Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "←")]), UpdateView, RewriteApplied], log) + Assert.deepEqual([IM.Log.RewriteIssued([(((0, 0), (0, 1)), "←")]), UpdateView, RewriteApplied], log) Assert.equal("←", document->Editor.Text.getAll) let log = await IM.insertChar(setup, "a") Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) @@ -284,11 +284,11 @@ describe("Input Method (Editor)", () => { Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) Assert.equal("←ambd", document->Editor.Text.getAll) let log = await IM.insertChar(setup, "a") - Assert.deepEqual([IM.Log.RewriteIssued([((0, 6), "λ")]), UpdateView, RewriteApplied], log) + Assert.deepEqual([IM.Log.RewriteIssued([(((0, 0), (0, 6)), "λ")]), UpdateView, RewriteApplied], log) Assert.equal("λ", document->Editor.Text.getAll) let log = await IM.backspace(setup) Assert.deepEqual( - [IM.Log.RewriteIssued([((0, 0), "lambd")]), UpdateView, RewriteApplied], + [IM.Log.RewriteIssued([(((0, 0), (0, 0)), "lambd")]), UpdateView, RewriteApplied], log, ) Assert.equal("lambd", document->Editor.Text.getAll) @@ -308,7 +308,7 @@ describe("Input Method (Editor)", () => { let log = await IM.activate(setup, ()) Assert.deepEqual([IM.Log.Activate], log) let log = await IM.insertChar(setup, "b") - Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "♭")]), UpdateView, RewriteApplied], log) + Assert.deepEqual([IM.Log.RewriteIssued([(((0, 0), (0, 1)), "♭")]), UpdateView, RewriteApplied], log) Assert.equal("♭", document->Editor.Text.getAll) let log = await IM.deactivate(setup) Assert.deepEqual([IM.Log.Deactivate], log) @@ -343,7 +343,7 @@ describe("Input Method (Editor)", () => { Assert.deepEqual([IM.Log.RewriteIssued([]), UpdateView, RewriteApplied], log) Assert.equal("a", document->Editor.Text.getAll) let log = await IM.backspace(setup) - Assert.deepEqual([IM.Log.RewriteIssued([((0, 0), "")]), Deactivate, RewriteApplied], log) + Assert.deepEqual([IM.Log.RewriteIssued([(((0, 0), (0, 0)), "")]), Deactivate, RewriteApplied], log) Assert.equal("", document->Editor.Text.getAll) }, ) @@ -371,10 +371,10 @@ describe("Input Method (Editor)", () => { await IM.select(setup, [(0, 2)]) // resume insertion let log = await IM.insertChar(setup, "d") - Assert.deepEqual([IM.Log.RewriteIssued([((0, 3), "∧")]), UpdateView, RewriteApplied], log) + Assert.deepEqual([IM.Log.RewriteIssued([(((0, 0), (0, 3)), "∧")]), UpdateView, RewriteApplied], log) Assert.equal("∧", document->Editor.Text.getAll) let log = await IM.insertChar(setup, "=") - Assert.deepEqual([IM.Log.RewriteIssued([((0, 2), "≙")]), Deactivate, RewriteApplied], log) + Assert.deepEqual([IM.Log.RewriteIssued([(((0, 0), (0, 2)), "≙")]), Deactivate, RewriteApplied], log) Assert.equal("≙", document->Editor.Text.getAll) }, ) @@ -412,23 +412,23 @@ describe("Input Method (Editor)", () => { Assert.deepEqual([IM.Log.Activate], log) // insert "(" let log = await IM.insertChar(setup, "(") - Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "(")]), UpdateView, RewriteApplied], log) + Assert.deepEqual([IM.Log.RewriteIssued([(((0, 0), (0, 1)), "(")]), UpdateView, RewriteApplied], log) Assert.equal("(", document->Editor.Text.getAll) // right arrow let log = await IM.rightArrow(setup) - Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "[")]), UpdateView, RewriteApplied], log) + Assert.deepEqual([IM.Log.RewriteIssued([(((0, 0), (0, 1)), "[")]), UpdateView, RewriteApplied], log) Assert.equal("[", document->Editor.Text.getAll) // down arrow let log = await IM.downArrow(setup) - Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "⟪")]), UpdateView, RewriteApplied], log) + Assert.deepEqual([IM.Log.RewriteIssued([(((0, 0), (0, 1)), "⟪")]), UpdateView, RewriteApplied], log) Assert.equal("⟪", document->Editor.Text.getAll) // left arrow let log = await IM.leftArrow(setup) - Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "⟨")]), UpdateView, RewriteApplied], log) + Assert.deepEqual([IM.Log.RewriteIssued([(((0, 0), (0, 1)), "⟨")]), UpdateView, RewriteApplied], log) Assert.equal("⟨", document->Editor.Text.getAll) // up arrow let log = await IM.upArrow(setup) - Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "(")]), UpdateView, RewriteApplied], log) + Assert.deepEqual([IM.Log.RewriteIssued([(((0, 0), (0, 1)), "(")]), UpdateView, RewriteApplied], log) Assert.equal("(", document->Editor.Text.getAll) // deactivate let log = await IM.deactivate(setup) @@ -447,19 +447,19 @@ describe("Input Method (Editor)", () => { Assert.deepEqual([IM.Log.Activate], log) // insert "!" let log = await IM.insertChar(setup, "!") - Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "!")]), UpdateView, RewriteApplied], log) + Assert.deepEqual([IM.Log.RewriteIssued([(((0, 0), (0, 1)), "!")]), UpdateView, RewriteApplied], log) Assert.equal("!", document->Editor.Text.getAll) // right arrow let log = await IM.rightArrow(setup) - Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "¡")]), UpdateView, RewriteApplied], log) + Assert.deepEqual([IM.Log.RewriteIssued([(((0, 0), (0, 1)), "¡")]), UpdateView, RewriteApplied], log) Assert.equal("¡", document->Editor.Text.getAll) // up arrow let log = await IM.upArrow(setup) - Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "!")]), UpdateView, RewriteApplied], log) + Assert.deepEqual([IM.Log.RewriteIssued([(((0, 0), (0, 1)), "!")]), UpdateView, RewriteApplied], log) Assert.equal("!", document->Editor.Text.getAll) // down arrow let log = await IM.downArrow(setup) - Assert.deepEqual([IM.Log.RewriteIssued([((0, 1), "¡")]), UpdateView, RewriteApplied], log) + Assert.deepEqual([IM.Log.RewriteIssued([(((0, 0), (0, 1)), "¡")]), UpdateView, RewriteApplied], log) Assert.equal("¡", document->Editor.Text.getAll) // deactivate let log = await IM.deactivate(setup) @@ -488,13 +488,17 @@ describe("Input Method (Editor)", () => { let log = await IM.activate(setup, ~positions, ()) Assert.deepEqual([IM.Log.Activate], log) let log = await IM.insertChar(setup, "b") + Js.log(log) Assert.deepEqual( [ IM.Log.RewriteIssued([ - ((0, 1), "♭"), - ((2, 3), "♭"), - ((4, 5), "♭"), - ((6, 7), "♭"), + (((0, 0), (0, 1)), "♭"), + (((1, 0), (1, 1)), "♭"), + (((2, 0), (2, 1)), "♭"), + (((3, 0), (3, 1)), "♭"), + // ((2, 3), "♭"), + // ((4, 5), "♭"), + // ((6, 7), "♭"), ]), IM.Log.UpdateView, IM.Log.RewriteApplied, @@ -506,10 +510,15 @@ describe("Input Method (Editor)", () => { Assert.deepEqual( [ IM.Log.RewriteIssued([ - ((0, 2), "𝕟"), - ((3, 5), "𝕟"), - ((6, 8), "𝕟"), - ((9, 11), "𝕟"), + + (((0, 0), (0, 2)), "𝕟"), + (((1, 0), (1, 2)), "𝕟"), + (((2, 0), (2, 2)), "𝕟"), + (((3, 0), (3, 2)), "𝕟"), + // (((0, 0), (0, 2)), "𝕟"), + // ((3, 5), "𝕟"), + // ((6, 8), "𝕟"), + // ((9, 11), "𝕟"), ]), IM.Log.Deactivate, IM.Log.RewriteApplied, @@ -545,10 +554,14 @@ describe("Input Method (Editor)", () => { Assert.deepEqual( [ IM.Log.RewriteIssued([ - ((0, 3), "∧"), - ((8, 11), "∧"), - ((16, 19), "∧"), - ((24, 27), "∧"), + (((0, 0), (0, 3)), "∧"), + (((1, 1), (1, 4)), "∧"), + (((2, 2), (2, 5)), "∧"), + (((3, 3), (3, 6)), "∧"), + // (((0, 0), (0, 3)), "∧"), + // ((8, 11), "∧"), + // ((16, 19), "∧"), + // ((24, 27), "∧"), ]), IM.Log.UpdateView, IM.Log.RewriteApplied, From d5f07254dfa760c9bbd450ce05f674c159c183fa Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Fri, 1 Nov 2024 01:33:55 +0800 Subject: [PATCH 101/109] [ ci ] Add Stack installation directory to PATH on Windows --- .github/workflows/test-windows.yml | 7 +++++++ lib/js/test/tests/Test__Util.bs.js | 2 +- test/tests/Test__Util.res | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-windows.yml b/.github/workflows/test-windows.yml index f5df2f1c..ff5c27b7 100644 --- a/.github/workflows/test-windows.yml +++ b/.github/workflows/test-windows.yml @@ -66,6 +66,13 @@ jobs: # must avoid GHC versions broken on windows such as 8.8.3 with https://gitlab.haskell.org/ghc/ghc/issues/17926 # current default stack.yaml uses GHC 8.8.4 which hopefully is ok + + - name: 🛠️ Add Stack install directory to PATH + run: | + echo "$Env:APPDATA\local\bin" >> "$GITHUB_PATH" + echo "$Env:PATH" + # As demonstrated in: https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/workflow-commands-for-github-actions#example-of-adding-a-system-path + - name: ⏬ Install Agda run: | stack install --resolver lts-20.26 Agda-2.6.4 diff --git a/lib/js/test/tests/Test__Util.bs.js b/lib/js/test/tests/Test__Util.bs.js index d76414cb..5058a2a6 100644 --- a/lib/js/test/tests/Test__Util.bs.js +++ b/lib/js/test/tests/Test__Util.bs.js @@ -334,7 +334,7 @@ async function exists(command) { var msg = Js_array.joinWith(",", match[1].map(Source$LanguageServerMule.$$Error.toString)); throw { RE_EXN_ID: "Failure", - _1: "Cannot find \"Agda\" in PATH: " + msg, + _1: "Cannot find \"agda\" in PATH: " + msg, Error: new Error() }; } diff --git a/test/tests/Test__Util.res b/test/tests/Test__Util.res index f575768d..1b032703 100644 --- a/test/tests/Test__Util.res +++ b/test/tests/Test__Util.res @@ -264,7 +264,7 @@ module AgdaMode = { switch result { | None => let msg = Js.Array.joinWith(",", errors->Array.map(LanguageServerMule.Source.Error.toString)) - raise(Failure("Cannot find \"Agda\" in PATH: " ++ msg)) + raise(Failure("Cannot find \"agda\" in PATH: " ++ msg)) | Some(_method) => () } } From 14efffa24c210f5a44855cca10bc945f2c2acfe9 Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Fri, 1 Nov 2024 18:58:33 +0800 Subject: [PATCH 102/109] [ change ] Bump language-server-mule to v0.5.1 --- .github/workflows/test-windows.yml | 2 +- package-lock.json | 71 +++++++++++++----------------- package.json | 2 +- 3 files changed, 32 insertions(+), 43 deletions(-) diff --git a/.github/workflows/test-windows.yml b/.github/workflows/test-windows.yml index ff5c27b7..70857a01 100644 --- a/.github/workflows/test-windows.yml +++ b/.github/workflows/test-windows.yml @@ -78,7 +78,7 @@ jobs: stack install --resolver lts-20.26 Agda-2.6.4 # copy Agda (stack path --local-bin) to somewhere in the PATH cp C:\Users\runneradmin\AppData\Roaming\local\bin\agda.exe C:\ghcup\bin - which agda + where.exe agda # things to be cached diff --git a/package-lock.json b/package-lock.json index 57915d0a..f7447669 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "agda-mode", - "version": "0.4.8", + "version": "0.4.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "agda-mode", - "version": "0.4.8", + "version": "0.4.7", "dependencies": { "@datastructures-js/binary-search-tree": "^4.3.0", "@glennsl/rescript-json-combinators": "^1.4.0", @@ -15,7 +15,7 @@ "compare-versions": "^3.5.1", "eventemitter3": ">=4.0.0", "getos": "^3.2.1", - "language-server-mule": "github:banacorn/language-server-mule#v0.5.0", + "language-server-mule": "github:banacorn/language-server-mule#v0.5.1", "react": "^18.0.0", "react-dom": "^18.0.0", "rescript": "^11.1.4", @@ -235,13 +235,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.7.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.8.tgz", - "integrity": "sha512-a922jJy31vqR5sk+kAdIENJjHblqcZ4RmERviFsER4WJcEONqxKcjNOlk0q7OUfrF5sddT+vng070cdfMlrPLg==", + "version": "22.8.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.6.tgz", + "integrity": "sha512-tosuJYKrIqjQIlVCM4PEGxOmyg3FCPa/fViuJChnGeEIhjA46oy8FMVoF9su1/v8PNs2a8Q0iFNyOx0uOF91nw==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.19.2" + "undici-types": "~6.19.8" } }, "node_modules/@vscode/test-electron": { @@ -476,9 +476,9 @@ "license": "Apache-2.0" }, "node_modules/acorn": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", - "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, "license": "MIT", "bin": { @@ -488,16 +488,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/agent-base": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", @@ -899,9 +889,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001669", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz", - "integrity": "sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==", + "version": "1.0.30001676", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001676.tgz", + "integrity": "sha512-Qz6zwGCiPghQXGJvgQAem79esjitvJ+CxSbSQkW9H/UX5hg8XM88d4lp2W+MEQ81j+Hip58Il+jGVdazk1z9cw==", "dev": true, "funding": [ { @@ -1314,9 +1304,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.42", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.42.tgz", - "integrity": "sha512-gIfKavKDw1mhvic9nbzA5lZw8QSHpdMwLwXc0cWidQz9B15pDoDdDH4boIatuFfeoCatb3a/NGL6CYRVFxGZ9g==", + "version": "1.5.50", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.50.tgz", + "integrity": "sha512-eMVObiUQ2LdgeO1F/ySTXsvqvxb6ZH2zPGaMYsWzRDdOddUa77tdmI0ltg+L16UpbWdhPmuF3wIQYyQq65WfZw==", "dev": true, "license": "ISC" }, @@ -2217,8 +2207,8 @@ } }, "node_modules/language-server-mule": { - "version": "0.5.0", - "resolved": "git+ssh://git@github.com/banacorn/language-server-mule.git#2a0880440b1297ce7e07f4712380ec84cb19dcf4", + "version": "0.5.1", + "resolved": "git+ssh://git@github.com/banacorn/language-server-mule.git#26315793c17dae92e8d50f5a9f0bfaef434d36d4", "license": "MIT", "dependencies": { "@glennsl/rescript-json-combinators": "^1.4.0", @@ -2641,9 +2631,9 @@ } }, "node_modules/mocha": { - "version": "10.7.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.7.3.tgz", - "integrity": "sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==", + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", + "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", "dev": true, "license": "MIT", "dependencies": { @@ -3816,9 +3806,9 @@ } }, "node_modules/tslib": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", - "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, "license": "0BSD" }, @@ -4004,19 +3994,18 @@ } }, "node_modules/webpack": { - "version": "5.95.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", - "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==", + "version": "5.96.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.0.tgz", + "integrity": "sha512-gvn84AfQ4f6vUeNWmFuRp3vGERyxK4epADKTaAo60K0EQbY/YBNQbXH3Ji/ZRK5M25O/XneAOuChF4xQZjQ4xA==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "^1.0.5", + "@types/estree": "^1.0.6", "@webassemblyjs/ast": "^1.12.1", "@webassemblyjs/wasm-edit": "^1.12.1", "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", diff --git a/package.json b/package.json index a750be52..41fa25ba 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "compare-versions": "^3.5.1", "eventemitter3": ">=4.0.0", "getos": "^3.2.1", - "language-server-mule": "github:banacorn/language-server-mule#v0.5.0", + "language-server-mule": "github:banacorn/language-server-mule#v0.5.1", "react": "^18.0.0", "react-dom": "^18.0.0", "rescript": "^11.1.4", From d81f535b93287fdf1dc2fed1a06c0afcf10c1158 Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Fri, 1 Nov 2024 20:00:02 +0800 Subject: [PATCH 103/109] [ ci ] Preprocess path of Agda on Windows --- .github/workflows/test-macos.yml | 12 +-- .github/workflows/test-windows.yml | 81 +++++++++++-------- .../Connection/Emacs/Connection__Emacs.bs.js | 47 +++++++++-- lib/js/test/tests/Test__EditorIM.bs.js | 1 - package-lock.json | 33 ++++++-- package.json | 2 +- src/Connection/Emacs/Connection__Emacs.res | 23 +++++- test/tests/Test__EditorIM.res | 1 - 8 files changed, 147 insertions(+), 53 deletions(-) diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml index 0890a365..5b140b29 100644 --- a/.github/workflows/test-macos.yml +++ b/.github/workflows/test-macos.yml @@ -20,7 +20,7 @@ jobs: # things to be restored: - name: 💾 Restore cached stack global package db id: stack-global - uses: actions/cache/restore@v3 + uses: actions/cache/restore@v4 with: path: ~/.stack key: ${{ runner.os }}-stack-global-${{ hashFiles('**.yaml') }} @@ -29,7 +29,7 @@ jobs: - name: 💾 Restore stack-installed binaries in ~/.local/bin id: stack-binaries - uses: actions/cache/restore@v3 + uses: actions/cache/restore@v4 with: path: ~/.local/bin key: ${{ runner.os }}-stack-binaries-${{ hashFiles('**.yaml') }} @@ -38,7 +38,7 @@ jobs: - name: 💾 Restore cached .stack-work id: stack-work - uses: actions/cache/restore@v3 + uses: actions/cache/restore@v4 with: path: .stack-work key: ${{ runner.os }}-stack-work-${{ hashFiles('**.yaml') }} @@ -67,21 +67,21 @@ jobs: - name: 💾 Cache stack global package db if: always() && steps.stack-global.outputs.cache-hit != 'true' - uses: actions/cache/save@v3 + uses: actions/cache/save@v4 with: path: ~/.stack key: ${{ steps.stack-global.outputs.cache-primary-key }} - name: 💾 Cache stack-installed binaries if: always() && steps.stack-binaries.outputs.cache-hit != 'true' - uses: actions/cache/save@v3 + uses: actions/cache/save@v4 with: path: ~/.local/bin key: ${{ steps.stack-binaries.outputs.cache-primary-key }} - name: 💾 Cache .stack-work if: always() && steps.stack-work.outputs.cache-hit != 'true' - uses: actions/cache/save@v3 + uses: actions/cache/save@v4 with: path: .stack-work key: ${{ steps.stack-work.outputs.cache-primary-key }} diff --git a/.github/workflows/test-windows.yml b/.github/workflows/test-windows.yml index 70857a01..43d47e73 100644 --- a/.github/workflows/test-windows.yml +++ b/.github/workflows/test-windows.yml @@ -6,6 +6,10 @@ name: CI (Windows) # events but only for the master branch on: [push, pull_request] +defaults: + run: + shell: bash + # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" @@ -16,35 +20,48 @@ jobs: - name: 📥 Checkout repository uses: actions/checkout@v4 + # - name: 🏗 Install yq + # uses: frenck/action-setup-yq@v1 + + - name: 🔍 Determine stack root and resolver + ## 2023-11-21 https://github.com/commercialhaskell/stack/issues/6340 + ## Asking stack for the stack root unfortunately does not work + ## if stack is not fully operational (meaning e.g. that GHC is installed) + ## so we hardcode its location instead. + run: | + STACK_RESOLVER="lts-20.26" + echo STACK_RESOLVER="${STACK_RESOLVER}" >> "${GITHUB_ENV}" + # What about C:/Users/runneradmin/AppData/Roaming/stack ? + # things to be cached/restored: - name: 💾 Restore cached stack global package db id: stack-global - uses: actions/cache/restore@v3 + uses: actions/cache/restore@v4 with: path: C:\Users\runneradmin\AppData\Roaming\stack\ - key: ${{ runner.os }}-stack-global-${{ hashFiles('**.yaml') }} + key: ${{ runner.os }}-stack-resolver-${{ env.STACK_RESOLVER }}-global-${{ hashFiles('**.yaml') }} restore-keys: | - ${{ runner.os }}-stack-global + ${{ runner.os }}-stack-resolver-${{ env.STACK_RESOLVER }}-global - - name: 💾 Restore stack-installed binaries # ghc, ghc-included packages and their haddocks, mingw, msys2 + - name: 💾 Restore cached stack-installed binaries # ghc, ghc-included packages and their haddocks, mingw, msys2 id: stack-binaries - uses: actions/cache/restore@v3 + uses: actions/cache/restore@v4 with: path: C:\Users\runneradmin\AppData\Local\Programs\stack\ # which files signal a change in stack's global db ? # **.yaml includes */package.yaml and stack.yaml* (too many), and hopefully no other changing yamls - key: ${{ runner.os }}-stack-binaries-${{ hashFiles('**.yaml') }} + key: ${{ runner.os }}-stack-binaries-${{ env.STACK_RESOLVER }}-work-${{ hashFiles('**.yaml') }} restore-keys: | ${{ runner.os }}-stack-binaries - name: 💾 Restore cached .stack-work id: stack-work - uses: actions/cache/restore@v3 + uses: actions/cache/restore@v4 with: path: .stack-work - key: ${{ runner.os }}-stack-work-${{ hashFiles('**.yaml') }} + key: ${{ runner.os }}-stack-resolver-${{ env.STACK_RESOLVER }}-work-${{ hashFiles('**.yaml') }} restore-keys: | - ${{ runner.os }}-stack-work + ${{ runner.os }}-stack-resolver-${{ env.STACK_RESOLVER }}-work # actions: @@ -53,57 +70,57 @@ jobs: with: node-version: 20.x - - name: ⏬ Install stack - #if: steps.stack-programs-dir.outputs.cache-hit != 'true' - # this step is needed to get stack.exe into PATH, for now + - name: ⏬ Install GHC + # if: steps.stack-programs-dir.outputs.cache-hit != 'true' + # set PATH=C:\Users\runneradmin\AppData\Local\Programs\stack\local\bin;%PATH% run: | - curl -sL https://get.haskellstack.org/stable/windows-x86_64.zip -o stack.zip - 7z x stack.zip stack.exe - which stack - stack --version - which ./stack - ./stack --version - # must avoid GHC versions broken on windows such as 8.8.3 with https://gitlab.haskell.org/ghc/ghc/issues/17926 - # current default stack.yaml uses GHC 8.8.4 which hopefully is ok + stack --no-terminal setup --install-ghc + + - name: ⏬ Install the ICU library + run: | + stack exec -- pacman -S --noconfirm mingw-w64-x86_64-icu mingw-w64-x86_64-pkgconf + stack exec -- pkg-config --modversion icu-i18n + + # - name: 🔍 Determine the ICU version + # run: | + # ICU_VER=$(stack exec ${ARGS} -- pkg-config --modversion icu-i18n) + # echo "ICU_VER=${ICU_VER}" + # echo "ICU_VER=${ICU_VER}" >> "${GITHUB_ENV}" + # echo "ICU_VER = ${ICU_VER}" - - name: 🛠️ Add Stack install directory to PATH run: | - echo "$Env:APPDATA\local\bin" >> "$GITHUB_PATH" - echo "$Env:PATH" - # As demonstrated in: https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/workflow-commands-for-github-actions#example-of-adding-a-system-path + echo "$APPDATA/local/bin" >> $GITHUB_PATH - name: ⏬ Install Agda run: | - stack install --resolver lts-20.26 Agda-2.6.4 - # copy Agda (stack path --local-bin) to somewhere in the PATH - cp C:\Users\runneradmin\AppData\Roaming\local\bin\agda.exe C:\ghcup\bin + stack install --resolver ${{env.STACK_RESOLVER}} Agda-2.6.4 where.exe agda + agda --version # things to be cached - name: 💾 Cache stack global package db if: always() && steps.stack-global.outputs.cache-hit != 'true' - uses: actions/cache/save@v3 + uses: actions/cache/save@v4 with: path: C:\Users\runneradmin\AppData\Roaming\stack\ key: ${{ steps.stack-global.outputs.cache-primary-key }} - name: 💾 Cache stack-installed binaries if: always() && steps.stack-binaries.outputs.cache-hit != 'true' - uses: actions/cache/save@v3 + uses: actions/cache/save@v4 with: path: C:\Users\runneradmin\AppData\Local\Programs\stack\ key: ${{ steps.stack-binaries.outputs.cache-primary-key }} - name: 💾 Cache .stack-work if: always() && steps.stack-work.outputs.cache-hit != 'true' - uses: actions/cache/save@v3 + uses: actions/cache/save@v4 with: path: .stack-work key: ${{ steps.stack-work.outputs.cache-primary-key }} - - name: ⏬ Install NPM Dependencies run: npm install @@ -111,4 +128,4 @@ jobs: run: npm run build - name: 🚗 Run tests (Windows) - run: npm test + run: npm test \ No newline at end of file diff --git a/lib/js/src/Connection/Emacs/Connection__Emacs.bs.js b/lib/js/src/Connection/Emacs/Connection__Emacs.bs.js index 917606b8..a2f39e77 100644 --- a/lib/js/src/Connection/Emacs/Connection__Emacs.bs.js +++ b/lib/js/src/Connection/Emacs/Connection__Emacs.bs.js @@ -3,8 +3,10 @@ var Os = require("os"); var Curry = require("rescript/lib/js/curry.js"); +var Nodeos = require("node:os"); var Js_array = require("rescript/lib/js/js_array.js"); var Js_string = require("rescript/lib/js/js_string.js"); +var Nodepath = require("node:path"); var Untildify = require("untildify"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); @@ -19,9 +21,34 @@ var Connection__Scheduler$AgdaModeVscode = require("../Connection__Scheduler.bs. async function make(path, args) { var path$1 = Untildify(path); - var $$process = Client__Process$LanguageServerMule.make(path$1, ["-V"]); - var match = Util$AgdaModeVscode.Promise_.pending(); - var resolve = match[1]; + var path$2 = Nodepath.normalize(path$1); + var match = Nodeos.platform(); + var path$3; + if (match === "win32") { + var regex = /\\([a-zA-Z])\\/; + var hasWeirdPath = regex.exec(path$2); + if (hasWeirdPath == null) { + path$3 = path$2; + } else { + var match$1 = Belt_Array.get(hasWeirdPath, 1); + if (match$1 !== undefined) { + var drive = Caml_option.valFromOption(match$1); + if (drive !== undefined) { + var drive$1 = drive.toUpperCase(); + path$3 = path$2.replace(regex, drive$1 + ":\\"); + } else { + path$3 = path$2; + } + } else { + path$3 = path$2; + } + } + } else { + path$3 = path$2; + } + var $$process = Client__Process$LanguageServerMule.make(path$3, ["-V"]); + var match$2 = Util$AgdaModeVscode.Promise_.pending(); + var resolve = match$2[1]; var destructor = Client__Process$LanguageServerMule.onOutput($$process, (function (output) { switch (output.TAG) { case "Stdout" : @@ -46,7 +73,7 @@ async function make(path, args) { return resolve({ TAG: "Ok", _0: { - path: path$1, + path: path$3, args: args, version: version }, @@ -74,7 +101,7 @@ async function make(path, args) { } })); - var result = await match[0]; + var result = await match$2[0]; destructor(); if (result.TAG === "Ok") { return { @@ -204,7 +231,15 @@ function wire(self) { })); } case "Stderr" : - return ; + return Chan$AgdaModeVscode.emit(self.chan, { + TAG: "Error", + _0: { + TAG: "AgdaError", + _0: x._0, + [Symbol.for("name")]: "AgdaError" + }, + [Symbol.for("name")]: "Error" + }); case "Event" : return Chan$AgdaModeVscode.emit(self.chan, { TAG: "Error", diff --git a/lib/js/test/tests/Test__EditorIM.bs.js b/lib/js/test/tests/Test__EditorIM.bs.js index 69894748..0a3fa902 100644 --- a/lib/js/test/tests/Test__EditorIM.bs.js +++ b/lib/js/test/tests/Test__EditorIM.bs.js @@ -1152,7 +1152,6 @@ describe("Input Method (Editor)", (function () { var log = await activate(setup$1, positions, undefined); Curry._3(Assert.deepEqual, ["Activate"], log, undefined); var log$1 = await insertChar(setup$1, "b"); - console.log(log$1); Curry._3(Assert.deepEqual, [ { TAG: "RewriteIssued", diff --git a/package-lock.json b/package-lock.json index f7447669..7c5d7853 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "compare-versions": "^3.5.1", "eventemitter3": ">=4.0.0", "getos": "^3.2.1", - "language-server-mule": "github:banacorn/language-server-mule#v0.5.1", + "language-server-mule": "github:banacorn/language-server-mule#a51b26", "react": "^18.0.0", "react-dom": "^18.0.0", "rescript": "^11.1.4", @@ -220,6 +220,28 @@ "react-dom": ">=18.0.0" } }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -2208,7 +2230,7 @@ }, "node_modules/language-server-mule": { "version": "0.5.1", - "resolved": "git+ssh://git@github.com/banacorn/language-server-mule.git#26315793c17dae92e8d50f5a9f0bfaef434d36d4", + "resolved": "git+ssh://git@github.com/banacorn/language-server-mule.git#a51b26446e8de0ace3e6631123bbf4521f57a77f", "license": "MIT", "dependencies": { "@glennsl/rescript-json-combinators": "^1.4.0", @@ -3994,12 +4016,13 @@ } }, "node_modules/webpack": { - "version": "5.96.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.0.tgz", - "integrity": "sha512-gvn84AfQ4f6vUeNWmFuRp3vGERyxK4epADKTaAo60K0EQbY/YBNQbXH3Ji/ZRK5M25O/XneAOuChF4xQZjQ4xA==", + "version": "5.96.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", + "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", "dev": true, "license": "MIT", "dependencies": { + "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.6", "@webassemblyjs/ast": "^1.12.1", "@webassemblyjs/wasm-edit": "^1.12.1", diff --git a/package.json b/package.json index 41fa25ba..ca018807 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "compare-versions": "^3.5.1", "eventemitter3": ">=4.0.0", "getos": "^3.2.1", - "language-server-mule": "github:banacorn/language-server-mule#v0.5.1", + "language-server-mule": "github:banacorn/language-server-mule#a51b26", "react": "^18.0.0", "react-dom": "^18.0.0", "rescript": "^11.1.4", diff --git a/src/Connection/Emacs/Connection__Emacs.res b/src/Connection/Emacs/Connection__Emacs.res index 5019bba1..98f907b4 100644 --- a/src/Connection/Emacs/Connection__Emacs.res +++ b/src/Connection/Emacs/Connection__Emacs.res @@ -25,6 +25,25 @@ module ProcInfo: { let make = async (path, args): result => { // normailize the path by replacing the tild "~/" with the absolute path of home directory let path = untildify(path) + let path = NodeJs.Path.normalize(path) + + // replace wierd paths on Windows like "\c\" to "C:\" + let path = switch NodeJs.Os.platform() { + | "win32" => + let regex = %re("/\\([a-zA-Z])\\/") + let hasWeirdPath = RegExp.exec(regex, path) + switch hasWeirdPath { + | None => path + | Some(match_) => + switch match_[1] { + | Some(Some(drive)) => + let drive = drive->String.toUpperCase + path->String.replaceRegExp(regex, drive ++ ":\\") + | _ => path + } + } + | _ => path + } let process = Process.make(path, ["-V"]) let (promise, resolve, _) = Util.Promise_.pending() @@ -160,7 +179,9 @@ module Module: Module = { // split the raw text into pieces and feed it to the parser rawText->Parser.splitToLines->Array.forEach(Parser.Incr.feed(incrParser, ...)) } - | Stderr(_) => () + | Stderr(error) => + // sometimes Agda would return error messages from STDOUT + self.chan->Chan.emit(Error(AgdaError(error))) | Event(e) => self.chan->Chan.emit(Error(Process(e))) } )->Some diff --git a/test/tests/Test__EditorIM.res b/test/tests/Test__EditorIM.res index 951d9d44..13e0d12d 100644 --- a/test/tests/Test__EditorIM.res +++ b/test/tests/Test__EditorIM.res @@ -488,7 +488,6 @@ describe("Input Method (Editor)", () => { let log = await IM.activate(setup, ~positions, ()) Assert.deepEqual([IM.Log.Activate], log) let log = await IM.insertChar(setup, "b") - Js.log(log) Assert.deepEqual( [ IM.Log.RewriteIssued([ From 7d6c63ba2f535c3e309b4ebc4de6dd464bf5ba77 Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Mon, 4 Nov 2024 16:26:32 +0800 Subject: [PATCH 104/109] [ dep ] Bump language-server-mule to v0.5.2 --- .github/workflows/test-windows.yml | 7 ------- package-lock.json | 2 +- package.json | 2 +- 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/.github/workflows/test-windows.yml b/.github/workflows/test-windows.yml index 43d47e73..b5c925ad 100644 --- a/.github/workflows/test-windows.yml +++ b/.github/workflows/test-windows.yml @@ -81,13 +81,6 @@ jobs: stack exec -- pacman -S --noconfirm mingw-w64-x86_64-icu mingw-w64-x86_64-pkgconf stack exec -- pkg-config --modversion icu-i18n - # - name: 🔍 Determine the ICU version - # run: | - # ICU_VER=$(stack exec ${ARGS} -- pkg-config --modversion icu-i18n) - # echo "ICU_VER=${ICU_VER}" - # echo "ICU_VER=${ICU_VER}" >> "${GITHUB_ENV}" - # echo "ICU_VER = ${ICU_VER}" - - name: 🛠️ Add Stack install directory to PATH run: | echo "$APPDATA/local/bin" >> $GITHUB_PATH diff --git a/package-lock.json b/package-lock.json index 7c5d7853..c08a504a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "compare-versions": "^3.5.1", "eventemitter3": ">=4.0.0", "getos": "^3.2.1", - "language-server-mule": "github:banacorn/language-server-mule#a51b26", + "language-server-mule": "github:banacorn/language-server-mule#v0.5.2", "react": "^18.0.0", "react-dom": "^18.0.0", "rescript": "^11.1.4", diff --git a/package.json b/package.json index ca018807..cf567ed9 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "compare-versions": "^3.5.1", "eventemitter3": ">=4.0.0", "getos": "^3.2.1", - "language-server-mule": "github:banacorn/language-server-mule#a51b26", + "language-server-mule": "github:banacorn/language-server-mule#v0.5.2", "react": "^18.0.0", "react-dom": "^18.0.0", "rescript": "^11.1.4", From ddf3f40c9349042feded3d86a6e02dd872e0f5c4 Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Mon, 4 Nov 2024 17:30:21 +0800 Subject: [PATCH 105/109] [ ci ] Intergrate CIs on all platforms --- .github/workflows/test-macos.yml | 101 ---------------------- .github/workflows/test-windows.yml | 124 -------------------------- .github/workflows/test.yml | 134 +++++++++++++++++++++++++++++ 3 files changed, 134 insertions(+), 225 deletions(-) delete mode 100644 .github/workflows/test-macos.yml delete mode 100644 .github/workflows/test-windows.yml create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml deleted file mode 100644 index 5b140b29..00000000 --- a/.github/workflows/test-macos.yml +++ /dev/null @@ -1,101 +0,0 @@ -# This is a basic workflow to help you get started with Actions - -name: CI (macOS) - -# Controls when the action will run. Triggers the workflow on push or pull request -# events but only for the master branch -on: [push, pull_request] - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - # This workflow contains a single job called "build" - build: - runs-on: macos-latest - - steps: - - - name: 📥 Checkout repository - uses: actions/checkout@v4 - - # things to be restored: - - name: 💾 Restore cached stack global package db - id: stack-global - uses: actions/cache/restore@v4 - with: - path: ~/.stack - key: ${{ runner.os }}-stack-global-${{ hashFiles('**.yaml') }} - restore-keys: | - ${{ runner.os }}-stack-global - - - name: 💾 Restore stack-installed binaries in ~/.local/bin - id: stack-binaries - uses: actions/cache/restore@v4 - with: - path: ~/.local/bin - key: ${{ runner.os }}-stack-binaries-${{ hashFiles('**.yaml') }} - restore-keys: | - ${{ runner.os }}-stack-binaries - - - name: 💾 Restore cached .stack-work - id: stack-work - uses: actions/cache/restore@v4 - with: - path: .stack-work - key: ${{ runner.os }}-stack-work-${{ hashFiles('**.yaml') }} - restore-keys: | - ${{ runner.os }}-stack-work - - # actions: - - - name: ⏬ Install Node.js - uses: actions/setup-node@v4 - with: - node-version: 20.x - - - name: ⏬ Install stack - run: | - mkdir -p ~/.local/bin - export PATH=~/.local/bin:$PATH - # brew install gnu-tar; curl -sL https://get.haskellstack.org/stable/osx-x86_64.tar.gz | gtar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack'; chmod a+x ~/.local/bin/stack - if [[ ! -x ~/.local/bin/stack ]]; then brew install gnu-tar; curl -sL https://get.haskellstack.org/stable/osx-x86_64.tar.gz | gtar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack'; chmod a+x ~/.local/bin/stack; fi - stack --version - - - name: ⏬ Install Agda - run: stack install --resolver lts-20.26 Agda-2.6.4 - - # things to be cached - - - name: 💾 Cache stack global package db - if: always() && steps.stack-global.outputs.cache-hit != 'true' - uses: actions/cache/save@v4 - with: - path: ~/.stack - key: ${{ steps.stack-global.outputs.cache-primary-key }} - - - name: 💾 Cache stack-installed binaries - if: always() && steps.stack-binaries.outputs.cache-hit != 'true' - uses: actions/cache/save@v4 - with: - path: ~/.local/bin - key: ${{ steps.stack-binaries.outputs.cache-primary-key }} - - - name: 💾 Cache .stack-work - if: always() && steps.stack-work.outputs.cache-hit != 'true' - uses: actions/cache/save@v4 - with: - path: .stack-work - key: ${{ steps.stack-work.outputs.cache-primary-key }} - - - name: ⏬ Install NPM Dependencies - run: npm install - - - name: 🔨 Build stuff - run: npm run build - - - name: 🚗 Run tests - run: | - # adding $(stack path --local-bin) to the PATH - PATH=$(stack path --local-bin):$PATH - which agda - - npm test \ No newline at end of file diff --git a/.github/workflows/test-windows.yml b/.github/workflows/test-windows.yml deleted file mode 100644 index b5c925ad..00000000 --- a/.github/workflows/test-windows.yml +++ /dev/null @@ -1,124 +0,0 @@ -# This is a basic workflow to help you get started with Actions - -name: CI (Windows) - -# Controls when the action will run. Triggers the workflow on push or pull request -# events but only for the master branch -on: [push, pull_request] - -defaults: - run: - shell: bash - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - # This workflow contains a single job called "build" - build: - runs-on: windows-latest - steps: - - - name: 📥 Checkout repository - uses: actions/checkout@v4 - - # - name: 🏗 Install yq - # uses: frenck/action-setup-yq@v1 - - - name: 🔍 Determine stack root and resolver - ## 2023-11-21 https://github.com/commercialhaskell/stack/issues/6340 - ## Asking stack for the stack root unfortunately does not work - ## if stack is not fully operational (meaning e.g. that GHC is installed) - ## so we hardcode its location instead. - run: | - STACK_RESOLVER="lts-20.26" - echo STACK_RESOLVER="${STACK_RESOLVER}" >> "${GITHUB_ENV}" - # What about C:/Users/runneradmin/AppData/Roaming/stack ? - - # things to be cached/restored: - - name: 💾 Restore cached stack global package db - id: stack-global - uses: actions/cache/restore@v4 - with: - path: C:\Users\runneradmin\AppData\Roaming\stack\ - key: ${{ runner.os }}-stack-resolver-${{ env.STACK_RESOLVER }}-global-${{ hashFiles('**.yaml') }} - restore-keys: | - ${{ runner.os }}-stack-resolver-${{ env.STACK_RESOLVER }}-global - - - name: 💾 Restore cached stack-installed binaries # ghc, ghc-included packages and their haddocks, mingw, msys2 - id: stack-binaries - uses: actions/cache/restore@v4 - with: - path: C:\Users\runneradmin\AppData\Local\Programs\stack\ - # which files signal a change in stack's global db ? - # **.yaml includes */package.yaml and stack.yaml* (too many), and hopefully no other changing yamls - key: ${{ runner.os }}-stack-binaries-${{ env.STACK_RESOLVER }}-work-${{ hashFiles('**.yaml') }} - restore-keys: | - ${{ runner.os }}-stack-binaries - - - name: 💾 Restore cached .stack-work - id: stack-work - uses: actions/cache/restore@v4 - with: - path: .stack-work - key: ${{ runner.os }}-stack-resolver-${{ env.STACK_RESOLVER }}-work-${{ hashFiles('**.yaml') }} - restore-keys: | - ${{ runner.os }}-stack-resolver-${{ env.STACK_RESOLVER }}-work - - # actions: - - - name: ⏬ Install Node.js - uses: actions/setup-node@v4 - with: - node-version: 20.x - - - name: ⏬ Install GHC - # if: steps.stack-programs-dir.outputs.cache-hit != 'true' - # set PATH=C:\Users\runneradmin\AppData\Local\Programs\stack\local\bin;%PATH% - run: | - stack --no-terminal setup --install-ghc - - - name: ⏬ Install the ICU library - run: | - stack exec -- pacman -S --noconfirm mingw-w64-x86_64-icu mingw-w64-x86_64-pkgconf - stack exec -- pkg-config --modversion icu-i18n - - - name: 🛠️ Add Stack install directory to PATH - run: | - echo "$APPDATA/local/bin" >> $GITHUB_PATH - - - name: ⏬ Install Agda - run: | - stack install --resolver ${{env.STACK_RESOLVER}} Agda-2.6.4 - where.exe agda - agda --version - - # things to be cached - - - name: 💾 Cache stack global package db - if: always() && steps.stack-global.outputs.cache-hit != 'true' - uses: actions/cache/save@v4 - with: - path: C:\Users\runneradmin\AppData\Roaming\stack\ - key: ${{ steps.stack-global.outputs.cache-primary-key }} - - - name: 💾 Cache stack-installed binaries - if: always() && steps.stack-binaries.outputs.cache-hit != 'true' - uses: actions/cache/save@v4 - with: - path: C:\Users\runneradmin\AppData\Local\Programs\stack\ - key: ${{ steps.stack-binaries.outputs.cache-primary-key }} - - - name: 💾 Cache .stack-work - if: always() && steps.stack-work.outputs.cache-hit != 'true' - uses: actions/cache/save@v4 - with: - path: .stack-work - key: ${{ steps.stack-work.outputs.cache-primary-key }} - - - name: ⏬ Install NPM Dependencies - run: npm install - - - name: 🔨 Build stuff - run: npm run build - - - name: 🚗 Run tests (Windows) - run: npm test \ No newline at end of file diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..057aa743 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,134 @@ +# This is a basic workflow to help you get started with Actions + +name: Test + +defaults: + run: + shell: bash + +# Controls when the action will run. +on: + # Triggers the workflow on push or pull request events but only for the master branch + push: + branches: [ master, dev, ci ] + pull_request: + branches: [ master, dev, ci ] + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + build-and-test: + # Runs on all major platforms + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [windows-latest, ubuntu-latest, macos-latest] + agda: ["lts-20.26 Agda-2.6.4"] + fail-fast: false + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: 📥 Checkout repository + uses: actions/checkout@v4 + + # actions: + + - name: ⏬ Setup Haskell environment + id: haskell-setup + uses: haskell-actions/setup@v2 + with: + ghc-version: '9.2.8' + stack-version: latest + cabal-update: false + enable-stack: true + + - name: 🔍 Setting variables (Unix) + if: runner.os != 'Windows' + run: | + echo "STACK_LOCAL_BIN=$(stack path --local-bin)" >> "$GITHUB_ENV" + echo "STACK_ROOT_CORRECT=${{ steps.haskell-setup.outputs.stack-root }}" >> "$GITHUB_ENV" + + - name: 🔍 Setting variables (Windows) + if: runner.os == 'Windows' + run: | + echo "STACK_LOCAL_BIN=$(stack path --local-bin)" >> "$GITHUB_ENV" + echo "STACK_ROOT_CORRECT=C:/Users/runneradmin/AppData/Roaming/stack" >> "$GITHUB_ENV" + + - name: 🔍 Reviewing variables + run: | + echo "runner.os = ${{ runner.os }}" + echo "ghc-path = ${{ steps.haskell-setup.outputs.ghc-path }}" + echo "ghc-exe = ${{ steps.haskell-setup.outputs.ghc-exe }}" + echo "stack-path = ${{ steps.haskell-setup.outputs.stack-path }}" + echo "stack-exe = ${{ steps.haskell-setup.outputs.stack-exe }}" + echo "stack-root = ${{ steps.haskell-setup.outputs.stack-root }}" + echo "STACK_ROOT_CORRECT = $STACK_ROOT_CORRECT" + echo "STACK_LOCAL_BIN = $STACK_LOCAL_BIN" + + # cached stuff to be restored: + - name: 💾 Restore cached stack global package db + id: stack-global + uses: actions/cache/restore@v4 + with: + path: ${{ env.STACK_ROOT_CORRECT }} + key: ${{ runner.os }}-stack-global-${{ hashFiles('**.yaml') }} + restore-keys: | + ${{ runner.os }}-stack-global + + - name: 💾 Restore stack-installed binaries in ~/.local/bin + id: stack-binaries + uses: actions/cache/restore@v4 + with: + path: ${{ env.STACK_LOCAL_BIN }} + key: ${{ runner.os }}-stack-binaries-${{ hashFiles('**.yaml') }} + restore-keys: | + ${{ runner.os }}-stack-binaries + + - name: ⏬ Setup Node.js environment + uses: actions/setup-node@v4 + with: + node-version: 20.x + + - name: 🛠️ Add Stack install directory to PATH (Windows) + if : runner.os == 'Windows' + run: | + echo "$APPDATA/local/bin" >> $GITHUB_PATH + + - name: 🛠️ Add Stack install directory to PATH (Unix) + if : runner.os != 'Windows' + run: PATH=$(stack path --local-bin):$PATH + + - name: ⏬ Install Agda + run: | + stack install --resolver ${{ matrix.agda }} + which agda + agda --version + + # things to be cached + + - name: 💾 Cache stack global package db + if: always() && steps.stack-global.outputs.cache-hit != 'true' + uses: actions/cache/save@v4 + with: + path: ${{ env.STACK_ROOT_CORRECT }} + key: ${{ steps.stack-global.outputs.cache-primary-key }} + + - name: 💾 Cache stack-installed binaries + if: always() && steps.stack-binaries.outputs.cache-hit != 'true' + uses: actions/cache/save@v4 + with: + path: ${{ env.STACK_LOCAL_BIN }} + key: ${{ steps.stack-binaries.outputs.cache-primary-key }} + + - name: ⏬ Install NPM Dependencies + run: npm install + + - name: 🔨 Build stuff + run: npm run build + + - name: 🚗 Run tests (Linux) + if: runner.os == 'Linux' + run: xvfb-run -a npm test + + - name: 🚗 Run tests (Windows, MacOS) + if: runner.os != 'Linux' + run: npm test From 3bdbda70d94f37099b1d879bf34f2be87151a92e Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Tue, 5 Nov 2024 17:29:22 +0800 Subject: [PATCH 106/109] [ ci ] Add Agda-2.7.0 to the matrix --- .github/workflows/test.yml | 33 +++++++++------------------------ 1 file changed, 9 insertions(+), 24 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 057aa743..0c5ea412 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,7 +22,7 @@ jobs: strategy: matrix: os: [windows-latest, ubuntu-latest, macos-latest] - agda: ["lts-20.26 Agda-2.6.4"] + agda: ["Agda-2.6.4", "Agda-2.7.0"] fail-fast: false # Steps represent a sequence of tasks that will be executed as part of the job @@ -41,17 +41,9 @@ jobs: cabal-update: false enable-stack: true - - name: 🔍 Setting variables (Unix) - if: runner.os != 'Windows' + - name: 🛠️ Setting variables run: | echo "STACK_LOCAL_BIN=$(stack path --local-bin)" >> "$GITHUB_ENV" - echo "STACK_ROOT_CORRECT=${{ steps.haskell-setup.outputs.stack-root }}" >> "$GITHUB_ENV" - - - name: 🔍 Setting variables (Windows) - if: runner.os == 'Windows' - run: | - echo "STACK_LOCAL_BIN=$(stack path --local-bin)" >> "$GITHUB_ENV" - echo "STACK_ROOT_CORRECT=C:/Users/runneradmin/AppData/Roaming/stack" >> "$GITHUB_ENV" - name: 🔍 Reviewing variables run: | @@ -61,7 +53,6 @@ jobs: echo "stack-path = ${{ steps.haskell-setup.outputs.stack-path }}" echo "stack-exe = ${{ steps.haskell-setup.outputs.stack-exe }}" echo "stack-root = ${{ steps.haskell-setup.outputs.stack-root }}" - echo "STACK_ROOT_CORRECT = $STACK_ROOT_CORRECT" echo "STACK_LOCAL_BIN = $STACK_LOCAL_BIN" # cached stuff to be restored: @@ -69,8 +60,8 @@ jobs: id: stack-global uses: actions/cache/restore@v4 with: - path: ${{ env.STACK_ROOT_CORRECT }} - key: ${{ runner.os }}-stack-global-${{ hashFiles('**.yaml') }} + path: ${{ steps.haskell-setup.outputs.stack-root }} + key: ${{ runner.os }}-stack-global-${{ matrix.agda }} restore-keys: | ${{ runner.os }}-stack-global @@ -79,7 +70,7 @@ jobs: uses: actions/cache/restore@v4 with: path: ${{ env.STACK_LOCAL_BIN }} - key: ${{ runner.os }}-stack-binaries-${{ hashFiles('**.yaml') }} + key: ${{ runner.os }}-stack-binaries-${{ matrix.agda }} restore-keys: | ${{ runner.os }}-stack-binaries @@ -88,18 +79,12 @@ jobs: with: node-version: 20.x - - name: 🛠️ Add Stack install directory to PATH (Windows) - if : runner.os == 'Windows' - run: | - echo "$APPDATA/local/bin" >> $GITHUB_PATH - - - name: 🛠️ Add Stack install directory to PATH (Unix) - if : runner.os != 'Windows' - run: PATH=$(stack path --local-bin):$PATH + - name: 🛠️ Add Stack install directory to PATH + run: echo $STACK_LOCAL_BIN >> $GITHUB_PATH - name: ⏬ Install Agda run: | - stack install --resolver ${{ matrix.agda }} + stack install --resolver=lts-20.26 ${{ matrix.agda }} which agda agda --version @@ -109,7 +94,7 @@ jobs: if: always() && steps.stack-global.outputs.cache-hit != 'true' uses: actions/cache/save@v4 with: - path: ${{ env.STACK_ROOT_CORRECT }} + path: ${{ steps.haskell-setup.outputs.stack-root }} key: ${{ steps.stack-global.outputs.cache-primary-key }} - name: 💾 Cache stack-installed binaries From 15a449f103b9d76f61d65cb7fe849a2ba84c01cb Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Thu, 7 Nov 2024 14:24:23 +0800 Subject: [PATCH 107/109] [ new ] Testings for agda-mode.compute-normal-form[DefaultCompute] --- .../test/tests/Test__ComputeNormalForm.bs.js | 84 +++++++++++++++++++ test/tests/Test__ComputeNormalForm.res | 59 +++++++++++++ test/tests/assets/ComputeNormalForm.agda | 9 ++ 3 files changed, 152 insertions(+) create mode 100644 lib/js/test/tests/Test__ComputeNormalForm.bs.js create mode 100644 test/tests/Test__ComputeNormalForm.res create mode 100644 test/tests/assets/ComputeNormalForm.agda diff --git a/lib/js/test/tests/Test__ComputeNormalForm.bs.js b/lib/js/test/tests/Test__ComputeNormalForm.bs.js new file mode 100644 index 00000000..767f6b60 --- /dev/null +++ b/lib/js/test/tests/Test__ComputeNormalForm.bs.js @@ -0,0 +1,84 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE +'use strict'; + +var Curry = require("rescript/lib/js/curry.js"); +var Assert = require("assert"); +var State$AgdaModeVscode = require("../../src/State.bs.js"); +var Test__Util$AgdaModeVscode = require("./Test__Util.bs.js"); + +describe.skip("agda-mode.compute-normal-form[DefaultCompute]", (function () { + describe("request to Agda", (function () { + describe("global", (function () { + it("should be responded with the correct answer", (async function () { + var ctx = await Test__Util$AgdaModeVscode.AgdaMode.make(undefined, "ComputeNormalForm.agda"); + var state = await Test__Util$AgdaModeVscode.AgdaMode.load(ctx); + var responses = { + contents: [] + }; + var responseHandler = async function (response) { + responses.contents.push(response); + }; + await State$AgdaModeVscode.sendRequest(state, responseHandler, { + TAG: "ComputeNormalFormGlobal", + _0: "DefaultCompute", + _1: "Z + S Z", + [Symbol.for("name")]: "ComputeNormalFormGlobal" + }); + return Curry._3(Assert.deepEqual, responses.contents, [ + { + TAG: "Status", + _0: false, + _1: false, + [Symbol.for("name")]: "Status" + }, + { + TAG: "DisplayInfo", + _0: { + TAG: "NormalForm", + _0: "S Z", + [Symbol.for("name")]: "NormalForm" + }, + [Symbol.for("name")]: "DisplayInfo" + }, + "CompleteHighlightingAndMakePromptReappear" + ], undefined); + })); + it("should be responded with the correct answer", (async function () { + var ctx = await Test__Util$AgdaModeVscode.AgdaMode.make(undefined, "ComputeNormalForm.agda"); + var state = await Test__Util$AgdaModeVscode.AgdaMode.load(ctx); + var responses = { + contents: [] + }; + var responseHandler = async function (response) { + responses.contents.push(response); + }; + await State$AgdaModeVscode.sendRequest(state, responseHandler, { + TAG: "ComputeNormalFormGlobal", + _0: "DefaultCompute", + _1: "S Z + S Z", + [Symbol.for("name")]: "ComputeNormalFormGlobal" + }); + return Curry._3(Assert.deepEqual, responses.contents, [ + { + TAG: "Status", + _0: false, + _1: false, + [Symbol.for("name")]: "Status" + }, + { + TAG: "DisplayInfo", + _0: { + TAG: "NormalForm", + _0: "S (S Z)", + [Symbol.for("name")]: "NormalForm" + }, + [Symbol.for("name")]: "DisplayInfo" + }, + "CompleteHighlightingAndMakePromptReappear" + ], undefined); + })); + })); + })); + })); + +/* Not a pure module */ diff --git a/test/tests/Test__ComputeNormalForm.res b/test/tests/Test__ComputeNormalForm.res new file mode 100644 index 00000000..b260ec81 --- /dev/null +++ b/test/tests/Test__ComputeNormalForm.res @@ -0,0 +1,59 @@ +open Mocha +open Test__Util + +describe_skip("agda-mode.compute-normal-form[DefaultCompute]", () => { + describe("request to Agda", () => { + describe( + "global", + () => { + Async.it( + "should be responded with the correct answer", + async () => { + let ctx = await AgdaMode.make("ComputeNormalForm.agda") + let state = await ctx->AgdaMode.load + + let responses = ref([]) + let responseHandler = async response => responses.contents->Array.push(response) + await state->State.sendRequest( + responseHandler, + Request.ComputeNormalFormGlobal(DefaultCompute, "Z + S Z"), + ) + + Assert.deepEqual( + responses.contents, + [ + Status(false, false), + DisplayInfo(NormalForm("S Z")), + CompleteHighlightingAndMakePromptReappear, + ], + ) + }, + ) + + Async.it( + "should be responded with the correct answer", + async () => { + let ctx = await AgdaMode.make("ComputeNormalForm.agda") + let state = await ctx->AgdaMode.load + + let responses = ref([]) + let responseHandler = async response => responses.contents->Array.push(response) + await state->State.sendRequest( + responseHandler, + Request.ComputeNormalFormGlobal(DefaultCompute, "S Z + S Z"), + ) + + Assert.deepEqual( + responses.contents, + [ + Status(false, false), + DisplayInfo(NormalForm("S (S Z)")), + CompleteHighlightingAndMakePromptReappear, + ], + ) + }, + ) + }, + ) + }) +}) diff --git a/test/tests/assets/ComputeNormalForm.agda b/test/tests/assets/ComputeNormalForm.agda new file mode 100644 index 00000000..a5021ab5 --- /dev/null +++ b/test/tests/assets/ComputeNormalForm.agda @@ -0,0 +1,9 @@ +module ComputeNormalForm where + +data ℕ : Set where + Z : ℕ + S : ℕ → ℕ + +_+_ : ℕ → ℕ → ℕ +Z + n = n +(S n) + m = S (n + m) \ No newline at end of file From 38a4214f020bcbfd174b7f8f2b9f5795bdf7398a Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Thu, 7 Nov 2024 15:02:52 +0800 Subject: [PATCH 108/109] [ doc ] Update CHANGELOG for PR by @jiangsy --- CHANGELOG.md | 5 +++++ lib/js/src/Util/Chan.bs.js | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 392acea3..20b20556 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html) +## v0.5.0 - BTA + +### Fixed +- #195: Remove all usage of deprecated api @bs.send.pipe by [@jiangsy](https://github.com/jiangsy) + ## v0.4.7 - 2023-12-16 ### Change diff --git a/lib/js/src/Util/Chan.bs.js b/lib/js/src/Util/Chan.bs.js index cb1471f9..0853a71a 100644 --- a/lib/js/src/Util/Chan.bs.js +++ b/lib/js/src/Util/Chan.bs.js @@ -3,6 +3,18 @@ var Eventemitter3 = require("eventemitter3"); +function emit0(arg1, obj) { + return obj.emit(arg1); +} + +function emit2(arg1, arg2, arg3, obj) { + return obj.emit(arg1, arg2, arg3); +} + +function eventNames(arg1, obj) { + return obj.eventNames(arg1); +} + function on(prim0, prim1, prim2) { return prim0.addListener(prim1, prim2); } @@ -15,6 +27,10 @@ function on3(prim0, prim1, prim2) { return prim0.addListener(prim1, prim2); } +function once2(arg1, arg2, obj) { + return obj.once(arg1, arg2); +} + function removeListener(prim0, prim1, prim2) { return prim0.off(prim1, prim2); } @@ -28,9 +44,13 @@ function removeListener3(prim0, prim1, prim2) { } var EventEmitter3 = { + emit0: emit0, + emit2: emit2, + eventNames: eventNames, on: on, on2: on2, on3: on3, + once2: once2, removeListener: removeListener, removeListener2: removeListener2, removeListener3: removeListener3 From 02b36b68748932b95188424e1ddbb44e174b824a Mon Sep 17 00:00:00 2001 From: Ting-Gian LUA Date: Thu, 7 Nov 2024 15:47:41 +0800 Subject: [PATCH 109/109] [ doc ] Update CHANGELOG for PR by @ChAoSUnItY --- CHANGELOG.md | 7 ++++++- lib/js/src/State/State__Command.bs.js | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 20b20556..41115cd6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,10 +9,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - #195: Remove all usage of deprecated api @bs.send.pipe by [@jiangsy](https://github.com/jiangsy) +- #191: Add more detailed splitting command description by [@ChAoSUnItY](https://github.com/ChAoSUnItY) + +### Changed +- Upgrade ReScript to v11 +- CI overhaul: allow testings be be conducted on all major platforms (Windows, macOS, Ubuntu) and on multiple versions of Agda ## v0.4.7 - 2023-12-16 -### Change +### Changed - Fetch the latest release of Agda Language Server from GitHub ### Fixed diff --git a/lib/js/src/State/State__Command.bs.js b/lib/js/src/State/State__Command.bs.js index a3098d1c..97051cf3 100644 --- a/lib/js/src/State/State__Command.bs.js +++ b/lib/js/src/State/State__Command.bs.js @@ -154,8 +154,8 @@ async function dispatchCommand(state, command) { var goal$1 = match$3[0]; if (match$3[1] === "") { return await State__View$AgdaModeVscode.Panel.prompt(state, header, { - body: "Please specify which variable you wish to split", - placeholder: "variable to case split:", + body: "Please specify which variable(s) you wish to split, multiple variables are delimited by whitespaces", + placeholder: "variable(s) to case split:", value: undefined }, (async function (expr) { if (expr === "") {