mirror of
https://github.com/fluencelabs/fluence-js.git
synced 2025-04-25 09:52:12 +00:00
Fluence.parseAIR function to return AST as JSON (#994)
This commit is contained in:
parent
957c0f90c1
commit
1da69b1fb9
631
package-lock.json
generated
631
package-lock.json
generated
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "fluence",
|
"name": "fluence",
|
||||||
"version": "0.7.93",
|
"version": "0.7.95",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -121,6 +121,12 @@
|
|||||||
"@types/node": "*"
|
"@types/node": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@types/json-schema": {
|
||||||
|
"version": "7.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz",
|
||||||
|
"integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"@types/json5": {
|
"@types/json5": {
|
||||||
"version": "0.0.29",
|
"version": "0.0.29",
|
||||||
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
|
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
|
||||||
@ -197,6 +203,12 @@
|
|||||||
"source-map": "^0.6.1"
|
"source-map": "^0.6.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@ungap/promise-all-settled": {
|
||||||
|
"version": "1.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
|
||||||
|
"integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"@webassemblyjs/ast": {
|
"@webassemblyjs/ast": {
|
||||||
"version": "1.9.0",
|
"version": "1.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz",
|
||||||
@ -1131,19 +1143,19 @@
|
|||||||
"integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII="
|
"integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII="
|
||||||
},
|
},
|
||||||
"chokidar": {
|
"chokidar": {
|
||||||
"version": "3.3.0",
|
"version": "3.4.3",
|
||||||
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz",
|
||||||
"integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==",
|
"integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"anymatch": "~3.1.1",
|
"anymatch": "~3.1.1",
|
||||||
"braces": "~3.0.2",
|
"braces": "~3.0.2",
|
||||||
"fsevents": "~2.1.1",
|
"fsevents": "~2.1.2",
|
||||||
"glob-parent": "~5.1.0",
|
"glob-parent": "~5.1.0",
|
||||||
"is-binary-path": "~2.1.0",
|
"is-binary-path": "~2.1.0",
|
||||||
"is-glob": "~4.0.1",
|
"is-glob": "~4.0.1",
|
||||||
"normalize-path": "~3.0.0",
|
"normalize-path": "~3.0.0",
|
||||||
"readdirp": "~3.2.0"
|
"readdirp": "~3.5.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"chownr": {
|
"chownr": {
|
||||||
@ -1271,6 +1283,12 @@
|
|||||||
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
|
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"colorette": {
|
||||||
|
"version": "1.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz",
|
||||||
|
"integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"commander": {
|
"commander": {
|
||||||
"version": "2.20.3",
|
"version": "2.20.3",
|
||||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
|
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
|
||||||
@ -1541,6 +1559,107 @@
|
|||||||
"randomfill": "^1.0.3"
|
"randomfill": "^1.0.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"css-loader": {
|
||||||
|
"version": "5.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.0.1.tgz",
|
||||||
|
"integrity": "sha512-cXc2ti9V234cq7rJzFKhirb2L2iPy8ZjALeVJAozXYz9te3r4eqLSixNAbMDJSgJEQywqXzs8gonxaboeKqwiw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"camelcase": "^6.2.0",
|
||||||
|
"cssesc": "^3.0.0",
|
||||||
|
"icss-utils": "^5.0.0",
|
||||||
|
"loader-utils": "^2.0.0",
|
||||||
|
"postcss": "^8.1.4",
|
||||||
|
"postcss-modules-extract-imports": "^3.0.0",
|
||||||
|
"postcss-modules-local-by-default": "^4.0.0",
|
||||||
|
"postcss-modules-scope": "^3.0.0",
|
||||||
|
"postcss-modules-values": "^4.0.0",
|
||||||
|
"postcss-value-parser": "^4.1.0",
|
||||||
|
"schema-utils": "^3.0.0",
|
||||||
|
"semver": "^7.3.2"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"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
|
||||||
|
},
|
||||||
|
"camelcase": {
|
||||||
|
"version": "6.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz",
|
||||||
|
"integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"json5": {
|
||||||
|
"version": "2.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
|
||||||
|
"integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"minimist": "^1.2.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"loader-utils": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"big.js": "^5.2.2",
|
||||||
|
"emojis-list": "^3.0.0",
|
||||||
|
"json5": "^2.1.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"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,
|
||||||
|
"requires": {
|
||||||
|
"yallist": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"schema-utils": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@types/json-schema": "^7.0.6",
|
||||||
|
"ajv": "^6.12.5",
|
||||||
|
"ajv-keywords": "^3.5.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"semver": {
|
||||||
|
"version": "7.3.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
|
||||||
|
"integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"lru-cache": "^6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"yallist": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"css-select": {
|
"css-select": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
|
||||||
@ -1559,6 +1678,12 @@
|
|||||||
"integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==",
|
"integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"cssesc": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"cyclist": {
|
"cyclist": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
|
||||||
@ -2018,6 +2143,12 @@
|
|||||||
"estraverse": "^4.1.1"
|
"estraverse": "^4.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"esm": {
|
||||||
|
"version": "3.2.25",
|
||||||
|
"resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz",
|
||||||
|
"integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"esprima": {
|
"esprima": {
|
||||||
"version": "4.0.1",
|
"version": "4.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
|
||||||
@ -2546,13 +2677,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flat": {
|
"flat": {
|
||||||
"version": "4.1.0",
|
"version": "5.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
|
||||||
"integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==",
|
"integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
|
||||||
"dev": true,
|
"dev": true
|
||||||
"requires": {
|
|
||||||
"is-buffer": "~2.0.3"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"flush-write-stream": {
|
"flush-write-stream": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
@ -3332,6 +3460,12 @@
|
|||||||
"safer-buffer": ">= 2.1.2 < 3"
|
"safer-buffer": ">= 2.1.2 < 3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"icss-utils": {
|
||||||
|
"version": "5.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
|
||||||
|
"integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"ieee754": {
|
"ieee754": {
|
||||||
"version": "1.1.13",
|
"version": "1.1.13",
|
||||||
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
|
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
|
||||||
@ -3364,6 +3498,12 @@
|
|||||||
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
|
||||||
"integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg=="
|
"integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg=="
|
||||||
},
|
},
|
||||||
|
"indexes-of": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
|
||||||
|
"integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"infer-owner": {
|
"infer-owner": {
|
||||||
"version": "1.0.4",
|
"version": "1.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
|
||||||
@ -3946,9 +4086,9 @@
|
|||||||
"integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q=="
|
"integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q=="
|
||||||
},
|
},
|
||||||
"js-yaml": {
|
"js-yaml": {
|
||||||
"version": "3.13.1",
|
"version": "3.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
|
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz",
|
||||||
"integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
|
"integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"argparse": "^1.0.7",
|
"argparse": "^1.0.7",
|
||||||
@ -4695,12 +4835,48 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"log-symbols": {
|
"log-symbols": {
|
||||||
"version": "3.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz",
|
||||||
"integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==",
|
"integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"chalk": "^2.4.2"
|
"chalk": "^4.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"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,
|
||||||
|
"requires": {
|
||||||
|
"color-convert": "^2.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chalk": {
|
||||||
|
"version": "4.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
|
||||||
|
"integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"ansi-styles": "^4.1.0",
|
||||||
|
"supports-color": "^7.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"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.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"loglevel": {
|
"loglevel": {
|
||||||
@ -4988,85 +5164,190 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mocha": {
|
"mocha": {
|
||||||
"version": "7.2.0",
|
"version": "8.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/mocha/-/mocha-8.2.1.tgz",
|
||||||
"integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==",
|
"integrity": "sha512-cuLBVfyFfFqbNR0uUKbDGXKGk+UDFe6aR4os78XIrMQpZl/nv7JYHcvP5MFIAb374b2zFXsdgEGwmzMtP0Xg8w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-colors": "3.2.3",
|
"@ungap/promise-all-settled": "1.1.2",
|
||||||
|
"ansi-colors": "4.1.1",
|
||||||
"browser-stdout": "1.3.1",
|
"browser-stdout": "1.3.1",
|
||||||
"chokidar": "3.3.0",
|
"chokidar": "3.4.3",
|
||||||
"debug": "3.2.6",
|
"debug": "4.2.0",
|
||||||
"diff": "3.5.0",
|
"diff": "4.0.2",
|
||||||
"escape-string-regexp": "1.0.5",
|
"escape-string-regexp": "4.0.0",
|
||||||
"find-up": "3.0.0",
|
"find-up": "5.0.0",
|
||||||
"glob": "7.1.3",
|
"glob": "7.1.6",
|
||||||
"growl": "1.10.5",
|
"growl": "1.10.5",
|
||||||
"he": "1.2.0",
|
"he": "1.2.0",
|
||||||
"js-yaml": "3.13.1",
|
"js-yaml": "3.14.0",
|
||||||
"log-symbols": "3.0.0",
|
"log-symbols": "4.0.0",
|
||||||
"minimatch": "3.0.4",
|
"minimatch": "3.0.4",
|
||||||
"mkdirp": "0.5.5",
|
"ms": "2.1.2",
|
||||||
"ms": "2.1.1",
|
"nanoid": "3.1.12",
|
||||||
"node-environment-flags": "1.0.6",
|
"serialize-javascript": "5.0.1",
|
||||||
"object.assign": "4.1.0",
|
"strip-json-comments": "3.1.1",
|
||||||
"strip-json-comments": "2.0.1",
|
"supports-color": "7.2.0",
|
||||||
"supports-color": "6.0.0",
|
"which": "2.0.2",
|
||||||
"which": "1.3.1",
|
|
||||||
"wide-align": "1.1.3",
|
"wide-align": "1.1.3",
|
||||||
|
"workerpool": "6.0.2",
|
||||||
"yargs": "13.3.2",
|
"yargs": "13.3.2",
|
||||||
"yargs-parser": "13.1.2",
|
"yargs-parser": "13.1.2",
|
||||||
"yargs-unparser": "1.6.0"
|
"yargs-unparser": "2.0.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"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
|
||||||
|
},
|
||||||
"debug": {
|
"debug": {
|
||||||
"version": "3.2.6",
|
"version": "4.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
|
"resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
|
||||||
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
|
"integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"ms": "^2.1.1"
|
"ms": "2.1.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"diff": {
|
"escape-string-regexp": {
|
||||||
"version": "3.5.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
|
||||||
"integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
|
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"glob": {
|
"find-up": {
|
||||||
"version": "7.1.3",
|
"version": "5.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
|
||||||
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
|
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"fs.realpath": "^1.0.0",
|
"locate-path": "^6.0.0",
|
||||||
"inflight": "^1.0.4",
|
"path-exists": "^4.0.0"
|
||||||
"inherits": "2",
|
|
||||||
"minimatch": "^3.0.4",
|
|
||||||
"once": "^1.3.0",
|
|
||||||
"path-is-absolute": "^1.0.0"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"has-flag": {
|
"locate-path": {
|
||||||
"version": "3.0.0",
|
"version": "6.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
|
||||||
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
|
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"p-locate": "^5.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"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": "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": "^3.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"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
|
"dev": true
|
||||||
},
|
},
|
||||||
"ms": {
|
"serialize-javascript": {
|
||||||
"version": "2.1.1",
|
"version": "5.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz",
|
||||||
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
|
"integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"randombytes": "^2.1.0"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"supports-color": {
|
"supports-color": {
|
||||||
"version": "6.0.0",
|
"version": "7.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||||
"integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
|
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"has-flag": "^3.0.0"
|
"has-flag": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mocha-loader": {
|
||||||
|
"version": "5.1.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/mocha-loader/-/mocha-loader-5.1.5.tgz",
|
||||||
|
"integrity": "sha512-NfcFycKc9uAWmkLos/azir6XQknrzebY5qjEEyFhd423bVNkCoAbgaRmiV75j0nufmkZTCDBhm8NJ8WlTNbAQQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"css-loader": "^5.0.0",
|
||||||
|
"loader-utils": "^2.0.0",
|
||||||
|
"schema-utils": "^3.0.0",
|
||||||
|
"style-loader": "^2.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"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
|
||||||
|
},
|
||||||
|
"json5": {
|
||||||
|
"version": "2.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
|
||||||
|
"integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"minimist": "^1.2.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"loader-utils": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"big.js": "^5.2.2",
|
||||||
|
"emojis-list": "^3.0.0",
|
||||||
|
"json5": "^2.1.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"schema-utils": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@types/json-schema": "^7.0.6",
|
||||||
|
"ajv": "^6.12.5",
|
||||||
|
"ajv-keywords": "^3.5.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5273,16 +5554,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.0.tgz",
|
||||||
"integrity": "sha512-ASCL5U13as7HhOExbT6OlWJJUV/lLzL2voOSP1UVehpRD8FbSrSDjfScK/KwAvVTI5AS6r4VwbOMlIqtvRidnA=="
|
"integrity": "sha512-ASCL5U13as7HhOExbT6OlWJJUV/lLzL2voOSP1UVehpRD8FbSrSDjfScK/KwAvVTI5AS6r4VwbOMlIqtvRidnA=="
|
||||||
},
|
},
|
||||||
"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"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node-fetch": {
|
"node-fetch": {
|
||||||
"version": "2.6.0",
|
"version": "2.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
|
||||||
@ -6012,6 +6283,78 @@
|
|||||||
"integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
|
"integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"postcss": {
|
||||||
|
"version": "8.1.14",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.1.14.tgz",
|
||||||
|
"integrity": "sha512-KatkyVPBKfENS+c3dpXJoDXnDD5UZs5exAnDksLqaRJPKwYphEPZt4N0m0i049v2/BtWVQibAhxW4ilXXcolpA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"colorette": "^1.2.1",
|
||||||
|
"nanoid": "^3.1.20",
|
||||||
|
"source-map": "^0.6.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"nanoid": {
|
||||||
|
"version": "3.1.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz",
|
||||||
|
"integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"postcss-modules-extract-imports": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"postcss-modules-local-by-default": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"icss-utils": "^5.0.0",
|
||||||
|
"postcss-selector-parser": "^6.0.2",
|
||||||
|
"postcss-value-parser": "^4.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"postcss-modules-scope": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"postcss-selector-parser": "^6.0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"postcss-modules-values": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"icss-utils": "^5.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"postcss-selector-parser": {
|
||||||
|
"version": "6.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz",
|
||||||
|
"integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"cssesc": "^3.0.0",
|
||||||
|
"indexes-of": "^1.0.1",
|
||||||
|
"uniq": "^1.0.1",
|
||||||
|
"util-deprecate": "^1.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"postcss-value-parser": {
|
||||||
|
"version": "4.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz",
|
||||||
|
"integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"pretty-error": {
|
"pretty-error": {
|
||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz",
|
||||||
@ -6205,12 +6548,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"readdirp": {
|
"readdirp": {
|
||||||
"version": "3.2.0",
|
"version": "3.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
|
||||||
"integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==",
|
"integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"picomatch": "^2.0.4"
|
"picomatch": "^2.2.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"regex-not": {
|
"regex-not": {
|
||||||
@ -7221,11 +7564,72 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"strip-json-comments": {
|
"strip-json-comments": {
|
||||||
"version": "2.0.1",
|
"version": "3.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
|
||||||
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
|
"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"style-loader": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"loader-utils": "^2.0.0",
|
||||||
|
"schema-utils": "^3.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"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
|
||||||
|
},
|
||||||
|
"json5": {
|
||||||
|
"version": "2.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
|
||||||
|
"integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"minimist": "^1.2.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"loader-utils": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"big.js": "^5.2.2",
|
||||||
|
"emojis-list": "^3.0.0",
|
||||||
|
"json5": "^2.1.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"schema-utils": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@types/json-schema": "^7.0.6",
|
||||||
|
"ajv": "^6.12.5",
|
||||||
|
"ajv-keywords": "^3.5.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"supports-color": {
|
"supports-color": {
|
||||||
"version": "7.1.0",
|
"version": "7.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
|
||||||
@ -7444,9 +7848,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ts-mocha": {
|
"ts-mocha": {
|
||||||
"version": "7.0.0",
|
"version": "8.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-7.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-8.0.0.tgz",
|
||||||
"integrity": "sha512-7WfkQw1W6JZXG5m4E1w2e945uWzBoZqmnOHvpMu0v+zvyKLdUQeTtRMfcQsVEKsUnYL6nTyH4okRt2PZucmFXQ==",
|
"integrity": "sha512-Kou1yxTlubLnD5C3unlCVO7nh0HERTezjoVhVw/M5S1SqoUec0WgllQvPk3vzPMc6by8m6xD1uR1yRf8lnVUbA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"ts-node": "7.0.1",
|
"ts-node": "7.0.1",
|
||||||
@ -7579,6 +7983,12 @@
|
|||||||
"set-value": "^2.0.1"
|
"set-value": "^2.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"uniq": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
|
||||||
|
"integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"unique-by": {
|
"unique-by": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/unique-by/-/unique-by-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/unique-by/-/unique-by-1.0.0.tgz",
|
||||||
@ -8982,6 +9392,12 @@
|
|||||||
"errno": "~0.1.7"
|
"errno": "~0.1.7"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"workerpool": {
|
||||||
|
"version": "6.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.2.tgz",
|
||||||
|
"integrity": "sha512-DSNyvOpFKrNusaaUwk+ej6cBj1bmhLcBfj80elGk+ZIo5JSkq+unB1dLKEOcNfJDZgjGICfhQ0Q5TbP0PvF4+Q==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"wrap-ansi": {
|
"wrap-ansi": {
|
||||||
"version": "5.1.0",
|
"version": "5.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
|
||||||
@ -9082,14 +9498,29 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"yargs-unparser": {
|
"yargs-unparser": {
|
||||||
"version": "1.6.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
|
||||||
"integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==",
|
"integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"flat": "^4.1.0",
|
"camelcase": "^6.0.0",
|
||||||
"lodash": "^4.17.15",
|
"decamelize": "^4.0.0",
|
||||||
"yargs": "^13.3.0"
|
"flat": "^5.0.2",
|
||||||
|
"is-plain-obj": "^2.1.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"camelcase": {
|
||||||
|
"version": "6.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz",
|
||||||
|
"integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"yn": {
|
"yn": {
|
||||||
@ -9097,6 +9528,12 @@
|
|||||||
"resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz",
|
||||||
"integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=",
|
"integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=",
|
||||||
"dev": true
|
"dev": true
|
||||||
|
},
|
||||||
|
"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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
18
package.json
18
package.json
@ -5,8 +5,8 @@
|
|||||||
"main": "./dist/fluence.js",
|
"main": "./dist/fluence.js",
|
||||||
"typings": "./dist/fluence.d.ts",
|
"typings": "./dist/fluence.d.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "mocha -r ts-node/register src/**/*.spec.ts",
|
"test": "mocha -r esm -r ts-node/register src/**/*.spec.ts",
|
||||||
"test-ts": "ts-mocha -p tsconfig.json src/**/*.spec.ts",
|
"test-ts": "ts-mocha -r esm -p tsconfig.json src/**/*.spec.ts",
|
||||||
"package:build": "NODE_ENV=production webpack && npm run package",
|
"package:build": "NODE_ENV=production webpack && npm run package",
|
||||||
"package": "tsc && rsync -r src/aqua/*.js dist/aqua",
|
"package": "tsc && rsync -r src/aqua/*.js dist/aqua",
|
||||||
"start": "webpack-dev-server -p",
|
"start": "webpack-dev-server -p",
|
||||||
@ -33,21 +33,23 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/base64-js": "1.2.5",
|
"@types/base64-js": "1.2.5",
|
||||||
"@types/bs58": "4.0.1",
|
"@types/bs58": "4.0.1",
|
||||||
"@types/uuid": "8.3.0",
|
|
||||||
"@types/chai": "4.2.11",
|
"@types/chai": "4.2.11",
|
||||||
"@types/mocha": "7.0.2",
|
"@types/mocha": "7.0.2",
|
||||||
|
"@types/uuid": "8.3.0",
|
||||||
"assert": "2.0.0",
|
"assert": "2.0.0",
|
||||||
"chai": "4.2.0",
|
"chai": "4.2.0",
|
||||||
"clean-webpack-plugin": "3.0.0",
|
"clean-webpack-plugin": "3.0.0",
|
||||||
|
"esm": "^3.2.25",
|
||||||
|
"html-webpack-plugin": "^3.2.0",
|
||||||
"libp2p-ts": "https://github.com/ChainSafe/libp2p-ts.git#fca072c9764436ef71f974a211bb1befae432575",
|
"libp2p-ts": "https://github.com/ChainSafe/libp2p-ts.git#fca072c9764436ef71f974a211bb1befae432575",
|
||||||
"mocha": "7.2.0",
|
"mocha": "^8.2.1",
|
||||||
|
"mocha-loader": "^5.1.5",
|
||||||
|
"text-encoding": "^0.7.0",
|
||||||
"ts-loader": "7.0.5",
|
"ts-loader": "7.0.5",
|
||||||
"ts-mocha": "7.0.0",
|
"ts-mocha": "8.0.0",
|
||||||
"typescript": "3.9.5",
|
"typescript": "3.9.5",
|
||||||
"webpack": "4.43.0",
|
"webpack": "4.43.0",
|
||||||
"webpack-cli": "3.3.11",
|
"webpack-cli": "3.3.11",
|
||||||
"webpack-dev-server": "3.11.0",
|
"webpack-dev-server": "3.11.0"
|
||||||
"html-webpack-plugin": "^3.2.0",
|
|
||||||
"text-encoding": "^0.7.0"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
1
src/aqua/index.d.ts
vendored
1
src/aqua/index.d.ts
vendored
@ -9,6 +9,7 @@
|
|||||||
* @returns {string}
|
* @returns {string}
|
||||||
*/
|
*/
|
||||||
export function invoke(wasm: any, init_user_id: string, aqua: string, prev_data: string, data: string): string;
|
export function invoke(wasm: any, init_user_id: string, aqua: string, prev_data: string, data: string): string;
|
||||||
|
export function ast(wasm: any, script: string): string;
|
||||||
export function getStringFromWasm0(wasm: any, arg1: any, arg2: any): string
|
export function getStringFromWasm0(wasm: any, arg1: any, arg2: any): string
|
||||||
export function getInt32Memory0(wasm: any): number[]
|
export function getInt32Memory0(wasm: any): number[]
|
||||||
export function passStringToWasm0(wasm: any, arg: any, malloc: any, realloc: any): number
|
export function passStringToWasm0(wasm: any, arg: any, malloc: any, realloc: any): number
|
||||||
|
@ -117,3 +117,15 @@ export function invoke(wasm, init_user_id, aqua, prev_data, data) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function ast(wasm, script) {
|
||||||
|
try {
|
||||||
|
var ptr0 = passStringToWasm0(wasm, script, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
||||||
|
var len0 = WASM_VECTOR_LEN;
|
||||||
|
wasm.ast(8, ptr0, len0);
|
||||||
|
var r0 = getInt32Memory0(wasm)[8 / 4 + 0];
|
||||||
|
var r1 = getInt32Memory0(wasm)[8 / 4 + 1];
|
||||||
|
return getStringFromWasm0(wasm, r0, r1);
|
||||||
|
} finally {
|
||||||
|
wasm.__wbindgen_free(r0, r1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -22,6 +22,7 @@ import {LogLevelDesc} from "loglevel";
|
|||||||
import {ServiceMultiple} from "./service";
|
import {ServiceMultiple} from "./service";
|
||||||
import {registerService} from "./globalState";
|
import {registerService} from "./globalState";
|
||||||
import {build} from "./particle";
|
import {build} from "./particle";
|
||||||
|
import {instantiateInterpreter, parseAstClosure} from "./stepper";
|
||||||
|
|
||||||
log.setLevel('info')
|
log.setLevel('info')
|
||||||
|
|
||||||
@ -56,6 +57,13 @@ export default class Fluence {
|
|||||||
|
|
||||||
return client;
|
return client;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Parses script and returns AST in JSON format
|
||||||
|
/// NOTE & TODO: interpreter is instantiated every time, make it a lazy constant?
|
||||||
|
static async parseAIR(script: string): Promise<string> {
|
||||||
|
let closure = await parseAstClosure();
|
||||||
|
return closure(script)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
|
@ -27,7 +27,7 @@ import {
|
|||||||
popParticle,
|
popParticle,
|
||||||
setCurrentParticleId
|
setCurrentParticleId
|
||||||
} from "./globalState";
|
} from "./globalState";
|
||||||
import {instantiateStepper, Stepper} from "./stepper";
|
import {instantiateInterpreter, InterpreterInvoke} from "./stepper";
|
||||||
import log from "loglevel";
|
import log from "loglevel";
|
||||||
import {waitService} from "./helpers/waitService";
|
import {waitService} from "./helpers/waitService";
|
||||||
import {ModuleConfig} from "./moduleConfig";
|
import {ModuleConfig} from "./moduleConfig";
|
||||||
@ -40,7 +40,7 @@ export class FluenceClient {
|
|||||||
|
|
||||||
private nodePeerIdStr: string;
|
private nodePeerIdStr: string;
|
||||||
private subscriptions = new Subscriptions();
|
private subscriptions = new Subscriptions();
|
||||||
private stepper: Stepper = undefined;
|
private interpreter: InterpreterInvoke = undefined;
|
||||||
|
|
||||||
connection: FluenceConnection;
|
connection: FluenceConnection;
|
||||||
|
|
||||||
@ -50,7 +50,7 @@ export class FluenceClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pass a particle to a stepper and send a result to other services.
|
* Pass a particle to a interpreter and send a result to other services.
|
||||||
*/
|
*/
|
||||||
private async handleParticle(particle: Particle): Promise<void> {
|
private async handleParticle(particle: Particle): Promise<void> {
|
||||||
|
|
||||||
@ -58,8 +58,8 @@ export class FluenceClient {
|
|||||||
if (getCurrentParticleId() !== undefined && getCurrentParticleId() !== particle.id) {
|
if (getCurrentParticleId() !== undefined && getCurrentParticleId() !== particle.id) {
|
||||||
enqueueParticle(particle);
|
enqueueParticle(particle);
|
||||||
} else {
|
} else {
|
||||||
if (this.stepper === undefined) {
|
if (this.interpreter === undefined) {
|
||||||
throw new Error("Undefined. Stepper is not initialized. User 'Fluence.connect' to create a client.")
|
throw new Error("Undefined. Interpreter is not initialized. User 'Fluence.connect' to create a client.")
|
||||||
}
|
}
|
||||||
// start particle processing if queue is empty
|
// start particle processing if queue is empty
|
||||||
try {
|
try {
|
||||||
@ -81,10 +81,10 @@ export class FluenceClient {
|
|||||||
// set a particle with actual ttl
|
// set a particle with actual ttl
|
||||||
this.subscriptions.subscribe(particle, actualTtl)
|
this.subscriptions.subscribe(particle, actualTtl)
|
||||||
}
|
}
|
||||||
let stepperOutcomeStr = this.stepper(particle.init_peer_id, particle.script, JSON.stringify(prevData), JSON.stringify(particle.data))
|
let stepperOutcomeStr = this.interpreter(particle.init_peer_id, particle.script, JSON.stringify(prevData), JSON.stringify(particle.data))
|
||||||
let stepperOutcome: StepperOutcome = JSON.parse(stepperOutcomeStr);
|
let stepperOutcome: StepperOutcome = JSON.parse(stepperOutcomeStr);
|
||||||
|
|
||||||
log.info("inner stepper outcome:");
|
log.info("inner interpreter outcome:");
|
||||||
log.info(stepperOutcome);
|
log.info(stepperOutcome);
|
||||||
|
|
||||||
// do nothing if there is no `next_peer_pks`
|
// do nothing if there is no `next_peer_pks`
|
||||||
@ -162,7 +162,7 @@ export class FluenceClient {
|
|||||||
|
|
||||||
let peerId = PeerId.createFromB58String(nodePeerId);
|
let peerId = PeerId.createFromB58String(nodePeerId);
|
||||||
|
|
||||||
this.stepper = await instantiateStepper(this.selfPeerId);
|
this.interpreter = await instantiateInterpreter(this.selfPeerId);
|
||||||
|
|
||||||
let connection = new FluenceConnection(multiaddr, peerId, this.selfPeerId, this.handleExternalParticle());
|
let connection = new FluenceConnection(multiaddr, peerId, this.selfPeerId, this.handleExternalParticle());
|
||||||
|
|
||||||
|
172
src/stepper.ts
172
src/stepper.ts
@ -16,25 +16,99 @@
|
|||||||
|
|
||||||
import {toByteArray} from "base64-js";
|
import {toByteArray} from "base64-js";
|
||||||
import * as aqua from "./aqua"
|
import * as aqua from "./aqua"
|
||||||
|
import {getInt32Memory0, getStringFromWasm0, passStringToWasm0, WASM_VECTOR_LEN} from "./aqua"
|
||||||
|
|
||||||
import {service} from "./service";
|
import {service} from "./service";
|
||||||
import {getInt32Memory0, getStringFromWasm0, passStringToWasm0, WASM_VECTOR_LEN} from "./aqua";
|
|
||||||
import PeerId from "peer-id";
|
import PeerId from "peer-id";
|
||||||
import log from "loglevel";
|
import log from "loglevel";
|
||||||
import {wasmBs64} from "@fluencelabs/aquamarine-stepper";
|
import {wasmBs64} from "@fluencelabs/aquamarine-stepper";
|
||||||
|
import Instance = WebAssembly.Instance;
|
||||||
|
import Exports = WebAssembly.Exports;
|
||||||
|
import ExportValue = WebAssembly.ExportValue;
|
||||||
|
import Imports = WebAssembly.Imports;
|
||||||
|
|
||||||
export type Stepper = (init_user_id: string, script: string, prev_data: string, data: string) => string
|
export type InterpreterInvoke = (init_user_id: string, script: string, prev_data: string, data: string) => string
|
||||||
|
type ImportObject = {
|
||||||
|
"./aquamarine_client_bg.js": {
|
||||||
|
__wbg_callserviceimpl_7d3cf77a2722659e: (arg0: any, arg1: any, arg2: any, arg3: any, arg4: any, arg5: any, arg6: any) => void;
|
||||||
|
__wbg_getcurrentpeeridimpl_154ce1848a306ff5: (arg0: any) => void
|
||||||
|
};
|
||||||
|
host: LogImport
|
||||||
|
};
|
||||||
|
|
||||||
export async function instantiateStepper(pid: PeerId): Promise<Stepper> {
|
type LogImport = {
|
||||||
// Fetch our Wasm File
|
log_utf8_string: (level: any, target: any, offset: any, size: any) => void
|
||||||
const arr = toByteArray(wasmBs64)
|
}
|
||||||
|
|
||||||
let wasm: any = undefined;
|
const interpreter_wasm = toByteArray(wasmBs64)
|
||||||
|
|
||||||
const importObject = {
|
/// Instantiates WebAssembly runtime with AIR interpreter module
|
||||||
|
async function interpreterInstance(hostImports: (wasm: Exports) => Imports): Promise<Instance> {
|
||||||
|
// Uninitialized exports reference that must be initialized after WebAssembly is instantiated
|
||||||
|
let exports: Exports = undefined;
|
||||||
|
/// Create host imports that use module exports internally
|
||||||
|
let imports = hostImports(exports);
|
||||||
|
|
||||||
|
/// Instantiate interpreter
|
||||||
|
let interpreter_module = await WebAssembly.compile(interpreter_wasm);
|
||||||
|
let instance: Instance = await WebAssembly.instantiate(interpreter_module, imports);
|
||||||
|
|
||||||
|
/// Finally initialize exports, so host imports can use them
|
||||||
|
exports = instance.exports;
|
||||||
|
|
||||||
|
/// Trigger interpreter initialization (i.e., call main function)
|
||||||
|
call_export(exports.main);
|
||||||
|
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// If export is a function, call it. Otherwise log a warning.
|
||||||
|
/// NOTE: any here is unavoidable, see Function interface definition
|
||||||
|
function call_export(f: ExportValue, ...argArray: any[]): any {
|
||||||
|
if (typeof f === "function") {
|
||||||
|
return f();
|
||||||
|
} else {
|
||||||
|
log.warn(`can't call export ${f}: it is not a function, but ${typeof f}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function log_import(wasm: Exports): LogImport {
|
||||||
|
return {
|
||||||
|
log_utf8_string: (level: any, target: any, offset: any, size: any) => {
|
||||||
|
try {
|
||||||
|
let str = getStringFromWasm0(wasm, offset, size)
|
||||||
|
|
||||||
|
switch (level) {
|
||||||
|
case 1:
|
||||||
|
log.error(str)
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
log.warn(str)
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
log.info(str)
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
log.debug(str)
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
// we don't want a trace in trace logs
|
||||||
|
log.debug(str)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns import object that describes host functions called by AIR interpreter
|
||||||
|
function newImportObject(wasm: Exports, peerId: PeerId): ImportObject {
|
||||||
|
return {
|
||||||
// __wbg_callserviceimpl_c0ca292e3c8c0c97 this is a function generated by bindgen. Could be changed.
|
// __wbg_callserviceimpl_c0ca292e3c8c0c97 this is a function generated by bindgen. Could be changed.
|
||||||
// If so, an error with a new name will be occurred after wasm initialization.
|
// If so, an error with a new name will be occurred after wasm initialization.
|
||||||
"./aquamarine_client_bg.js": { __wbg_callserviceimpl_7d3cf77a2722659e: (arg0: any, arg1: any, arg2: any, arg3: any, arg4: any, arg5: any, arg6: any) => {
|
"./aquamarine_client_bg.js": {
|
||||||
|
__wbg_callserviceimpl_7d3cf77a2722659e: (arg0: any, arg1: any, arg2: any, arg3: any, arg4: any, arg5: any, arg6: any) => {
|
||||||
try {
|
try {
|
||||||
let serviceId = getStringFromWasm0(wasm, arg1, arg2)
|
let serviceId = getStringFromWasm0(wasm, arg1, arg2)
|
||||||
let fnName = getStringFromWasm0(wasm, arg3, arg4)
|
let fnName = getStringFromWasm0(wasm, arg3, arg4)
|
||||||
@ -46,59 +120,49 @@ export async function instantiateStepper(pid: PeerId): Promise<Stepper> {
|
|||||||
getInt32Memory0(wasm)[arg0 / 4 + 1] = len0;
|
getInt32Memory0(wasm)[arg0 / 4 + 1] = len0;
|
||||||
getInt32Memory0(wasm)[arg0 / 4 + 0] = ptr0;
|
getInt32Memory0(wasm)[arg0 / 4 + 0] = ptr0;
|
||||||
} finally {
|
} finally {
|
||||||
wasm.__wbindgen_free(arg1, arg2);
|
call_export(wasm.__wbindgen_free, arg1, arg2);
|
||||||
wasm.__wbindgen_free(arg3, arg4);
|
call_export(wasm.__wbindgen_free, arg3, arg4);
|
||||||
wasm.__wbindgen_free(arg5, arg6);
|
call_export(wasm.__wbindgen_free, arg5, arg6);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
__wbg_getcurrentpeeridimpl_154ce1848a306ff5: (arg0: any) => {
|
__wbg_getcurrentpeeridimpl_154ce1848a306ff5: (arg0: any) => {
|
||||||
var ret = pid.toB58String();
|
var ret = peerId.toB58String();
|
||||||
var ptr0 = passStringToWasm0(wasm, ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
var ptr0 = passStringToWasm0(wasm, ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
||||||
var len0 = WASM_VECTOR_LEN;
|
var len0 = WASM_VECTOR_LEN;
|
||||||
getInt32Memory0(wasm)[arg0 / 4 + 1] = len0;
|
getInt32Memory0(wasm)[arg0 / 4 + 1] = len0;
|
||||||
getInt32Memory0(wasm)[arg0 / 4 + 0] = ptr0;
|
getInt32Memory0(wasm)[arg0 / 4 + 0] = ptr0;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"host": { log_utf8_string: (level: any, target: any, offset: any, size: any) => {
|
host: log_import(wasm)
|
||||||
try {
|
};
|
||||||
let str = getStringFromWasm0(wasm, offset, size)
|
}
|
||||||
|
|
||||||
switch (level) {
|
function newLogImport(wasm: Exports): ImportObject {
|
||||||
case 1:
|
return {
|
||||||
log.error(str)
|
host: log_import(wasm),
|
||||||
break;
|
"./aquamarine_client_bg.js": {
|
||||||
case 2:
|
__wbg_callserviceimpl_7d3cf77a2722659e: _ => {},
|
||||||
log.warn(str)
|
__wbg_getcurrentpeeridimpl_154ce1848a306ff5: _ => {}
|
||||||
break;
|
},
|
||||||
case 3:
|
};
|
||||||
log.info(str)
|
}
|
||||||
break;
|
|
||||||
case 4:
|
/// Instantiates AIR interpreter, and returns its `invoke` function as closure
|
||||||
log.debug(str)
|
/// NOTE: an interpreter is also called a stepper from time to time
|
||||||
break;
|
export async function instantiateInterpreter(peerId: PeerId): Promise<InterpreterInvoke> {
|
||||||
case 5:
|
let instance = await interpreterInstance(wasm => newImportObject(wasm, peerId));
|
||||||
// we don't want a trace in trace logs
|
|
||||||
log.debug(str)
|
return (init_user_id: string, script: string, prev_data: string, data: string) => {
|
||||||
break;
|
return aqua.invoke(instance.exports, init_user_id, script, prev_data, data)
|
||||||
}
|
}
|
||||||
} finally {
|
}
|
||||||
}
|
|
||||||
}
|
/// Instantiate AIR interpreter with host imports containing only logger, but not call_service
|
||||||
}
|
/// peerId isn't actually required for AST parsing, but host imports require it, and I don't see any workaround
|
||||||
|
export async function parseAstClosure(): Promise<(script: string) => string> {
|
||||||
|
let instance = await interpreterInstance(wasm => newLogImport(wasm));
|
||||||
|
|
||||||
|
return (script: string) => {
|
||||||
|
return aqua.ast(instance.exports, script)
|
||||||
};
|
};
|
||||||
|
|
||||||
let module1 = await WebAssembly.compile(arr);
|
|
||||||
let webAssemblyInstantiatedSource = await WebAssembly.instantiate(module1, {
|
|
||||||
...importObject
|
|
||||||
});
|
|
||||||
|
|
||||||
wasm = webAssemblyInstantiatedSource.exports
|
|
||||||
|
|
||||||
wasm.main();
|
|
||||||
|
|
||||||
let func = (init_user_id: string, script: string, prev_data: string, data: string) => {
|
|
||||||
return aqua.invoke(wasm, init_user_id, script, prev_data, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
return func
|
|
||||||
}
|
}
|
||||||
|
13
src/test/ast.spec.ts
Normal file
13
src/test/ast.spec.ts
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
import 'mocha';
|
||||||
|
import Fluence from "../fluence";
|
||||||
|
|
||||||
|
describe("AIR AST parsing suite", () => {
|
||||||
|
it("parse simple script and return ast", async function () {
|
||||||
|
let ast = Fluence.parseAIR(`
|
||||||
|
(call node ("service" "function") [1 2 3 arg] output)
|
||||||
|
`);
|
||||||
|
|
||||||
|
console.log(ast);
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
@ -8,7 +8,7 @@ import {TrustGraph} from "../trust/trust_graph";
|
|||||||
import {nodeRootCert} from "../trust/misc";
|
import {nodeRootCert} from "../trust/misc";
|
||||||
import {peerIdToSeed, seedToPeerId} from "../seed";
|
import {peerIdToSeed, seedToPeerId} from "../seed";
|
||||||
import {build} from "../particle";
|
import {build} from "../particle";
|
||||||
import {Service} from "../service";
|
import {Service, ServiceOne} from "../service";
|
||||||
import {registerService} from "../globalState";
|
import {registerService} from "../globalState";
|
||||||
import {waitResult} from "../helpers/waitService";
|
import {waitResult} from "../helpers/waitService";
|
||||||
|
|
||||||
@ -50,21 +50,20 @@ describe("Typescript usage suite", () => {
|
|||||||
let pid = await Fluence.generatePeerId()
|
let pid = await Fluence.generatePeerId()
|
||||||
let cl = await Fluence.connect("/ip4/138.197.177.2/tcp/9001/ws/p2p/12D3KooWEXNUbCXooUwHrHBbrmjsrpHXoEphPwbjQXEGyzbqKnE9", pid)
|
let cl = await Fluence.connect("/ip4/138.197.177.2/tcp/9001/ws/p2p/12D3KooWEXNUbCXooUwHrHBbrmjsrpHXoEphPwbjQXEGyzbqKnE9", pid)
|
||||||
|
|
||||||
let service = new Service("test")
|
let service = new ServiceOne("test", (fnName: string, args: any[]) => {
|
||||||
service.registerFunction("test", (args: any[]) => {
|
|
||||||
console.log("called: " + args)
|
console.log("called: " + args)
|
||||||
return {}
|
return {}
|
||||||
})
|
});
|
||||||
registerService(service);
|
registerService(service);
|
||||||
|
|
||||||
let namedPromise = waitResult(30000)
|
let namedPromise = waitResult(30000)
|
||||||
|
|
||||||
let script = `
|
let script = `
|
||||||
(seq (
|
(seq (
|
||||||
(call ( "${pid.toB58String()}" ("test" "test") (a b c d) result))
|
(call ( "${pid.toB58String()}" ("test" "test") (a b c d) result))
|
||||||
(call ( "${pid.toB58String()}" ("${namedPromise.name}" "") (d c b a) void[]))
|
(call ( "${pid.toB58String()}" ("${namedPromise.name}" "") (d c b a) void[]))
|
||||||
))
|
))
|
||||||
`
|
`
|
||||||
|
|
||||||
let data: Map<string, any> = new Map();
|
let data: Map<string, any> = new Map();
|
||||||
data.set("a", "some a")
|
data.set("a", "some a")
|
||||||
|
5
src/test/mocha.opts
Normal file
5
src/test/mocha.opts
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
--require ts-node/register
|
||||||
|
--require @babel/register
|
||||||
|
|
||||||
|
|
||||||
|
src/test/**/*.spec.ts
|
@ -26,8 +26,7 @@
|
|||||||
"exclude": [
|
"exclude": [
|
||||||
"node_modules",
|
"node_modules",
|
||||||
"dist",
|
"dist",
|
||||||
"bundle",
|
"bundle"
|
||||||
"src/test"
|
|
||||||
],
|
],
|
||||||
"include": ["src/**/*"]
|
"include": ["src/**/*"]
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,13 @@ const config = {
|
|||||||
test: /\.tsx?$/,
|
test: /\.tsx?$/,
|
||||||
loader: 'ts-loader',
|
loader: 'ts-loader',
|
||||||
exclude: /node_modules/
|
exclude: /node_modules/
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
test: /\.spec\.ts$/,
|
||||||
|
use: 'mocha-loader',
|
||||||
|
exclude: /node_modules/,
|
||||||
|
},
|
||||||
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
resolve: {
|
resolve: {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user