diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..b3fca9b --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,14 @@ +module.exports = { + "env": { + "browser": true, + "es2021": true, + "node": true + }, + "extends": "eslint:recommended", + "parserOptions": { + "ecmaVersion": 12, + "sourceType": "module" + }, + "rules": { + } +}; diff --git a/demo/chat/chat.js b/demo/chat/chat.js index a19000a..c691cbe 100644 --- a/demo/chat/chat.js +++ b/demo/chat/chat.js @@ -4,7 +4,7 @@ import { createRequire } from 'module' import AsyncReply from "../../src/Core/AsyncReply.js"; import DistributedServer from "../../src/Net/IIP/DistributedServer.js"; import IMembership from "../../src/Security/Membership/IMembership.js"; -import WSSocket from "../../src/Net/Sockets/WSSocket.js"; +import WSocket from "../../src/Net/Sockets/WSocket.js"; import MemoryStore from "../../src/Stores/MemoryStore.js"; import DC from "../../src/Data/DataConverter.js"; import IResource from "../../src/Resource/IResource.js"; @@ -72,7 +72,7 @@ server = await Warehouse.new(DistributedServer, "dss", sys, null, null, {members wss.on('connection', function connection(ws) { let con = server.add(); - con.assign(new WSSocket(ws)); + con.assign(new WSocket(ws)); con.on("ready", (x)=>{ chat._emit("login", x.session.remoteAuthentication.username); }).on("close", (x)=>{ diff --git a/demo/mongo/mongo.js b/demo/mongo/mongo.js index 4d2bc04..a524afa 100644 --- a/demo/mongo/mongo.js +++ b/demo/mongo/mongo.js @@ -4,7 +4,7 @@ import { createRequire } from 'module' import AsyncReply from "../../src/Core/AsyncReply.js"; import DistributedServer from "../../src/Net/IIP/DistributedServer.js"; import IMembership from "../../src/Security/Membership/IMembership.js"; -import WSSocket from "../../src/Net/Sockets/WSSocket.js"; +import WSocket from "../../src/Net/Sockets/WSocket.js"; import MemoryStore from "../../src/Stores/MemoryStore.js"; import DC from "../../src/Data/DataConverter.js"; import IResource from "../../src/Resource/IResource.js"; diff --git a/package-lock.json b/package-lock.json index 2702a33..092140a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "esiur", - "version": "1.6.8", + "version": "1.7.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1109,6 +1109,51 @@ "to-fast-properties": "^2.0.0" } }, + "@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.10.0.tgz", + "integrity": "sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "dev": true + }, "JSONStream": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", @@ -1125,6 +1170,12 @@ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true + }, "acorn-node": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", @@ -1142,6 +1193,30 @@ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true }, + "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" + } + }, + "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 + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -1151,6 +1226,15 @@ "color-convert": "^1.9.0" } }, + "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" + } + }, "asn1.js": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", @@ -1198,6 +1282,12 @@ } } }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, "available-typed-arrays": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.4.tgz", @@ -1519,6 +1609,12 @@ "get-intrinsic": "^1.0.2" } }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, "caniuse-lite": { "version": "1.0.30001238", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001238.tgz", @@ -1702,6 +1798,17 @@ "sha.js": "^2.4.8" } }, + "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" + } + }, "crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -1736,6 +1843,12 @@ "ms": "2.1.2" } }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -1808,6 +1921,15 @@ } } }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, "domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", @@ -1852,6 +1974,21 @@ } } }, + "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 + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, "es-abstract": { "version": "1.18.3", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", @@ -1899,6 +2036,236 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "eslint": { + "version": "7.31.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.31.0.tgz", + "integrity": "sha512-vafgJpSh2ia8tnTkNUkwxGmnumgckLh5aAbLa1xRmIn9+owi8qBNGKL+B881kNKNTy7FFqTEkpNkUvmw0n6PkA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "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.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "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 + }, + "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 + }, + "globals": { + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.10.0.tgz", + "integrity": "sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "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 + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "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" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "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 + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "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.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -1921,12 +2288,55 @@ "safe-buffer": "^5.1.1" } }, + "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-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 + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, "fast-safe-stringify": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==", "dev": true }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.1.tgz", + "integrity": "sha512-OMQjaErSFHmHqZe+PSidH5n8j3O0F2DdnVh8JB4j4eUQ2k6KvB0qGfrKIhapvez5JerBbmWkaLYUYWISaESoXg==", + "dev": true + }, "foreach": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", @@ -1945,6 +2355,12 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -1982,6 +2398,15 @@ "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" + } + }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -2078,6 +2503,28 @@ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -2171,12 +2618,33 @@ "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", "dev": true }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "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 + }, "is-generator-function": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.9.tgz", "integrity": "sha512-ZJ34p1uvIfptHCN7sFTjGibB9/oBg17sHqzDLfuwhvmN/qLVvIQXRQ8licZQ35WJ8KuEQt/etnnzQFI9C9Ue/A==", "dev": true }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, "is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", @@ -2232,18 +2700,46 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "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 + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, "json5": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", @@ -2269,6 +2765,22 @@ "stream-splicer": "^2.0.0" } }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -2281,6 +2793,27 @@ "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", "dev": true }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "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" + } + }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -2391,6 +2924,12 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, "node-releases": { "version": "1.1.73", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", @@ -2441,6 +2980,20 @@ "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.0.3.tgz", "integrity": "sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA==" }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", @@ -2453,6 +3006,15 @@ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, "parents": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", @@ -2487,6 +3049,12 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, + "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", @@ -2512,6 +3080,12 @@ "sha.js": "^2.4.8" } }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -2523,6 +3097,12 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, "public-encrypt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", @@ -2650,6 +3230,12 @@ "@babel/runtime": "^7.8.4" } }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, "regexpu-core": { "version": "4.7.1", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", @@ -2687,6 +3273,12 @@ } } }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, "resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", @@ -2697,6 +3289,21 @@ "path-parse": "^1.0.6" } }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "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" + } + }, "ripemd160": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", @@ -2752,6 +3359,21 @@ "fast-safe-stringify": "^2.0.7" } }, + "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 + }, "shell-quote": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", @@ -2764,6 +3386,43 @@ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", "dev": true }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.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" + } + }, + "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 + } + } + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -2779,6 +3438,12 @@ "memory-pager": "^1.0.2" } }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, "stream-browserify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", @@ -2847,6 +3512,17 @@ "readable-stream": "^2.0.2" } }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, "string.prototype.trimend": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", @@ -2876,6 +3552,21 @@ "safe-buffer": "~5.2.0" } }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "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 + }, "subarg": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", @@ -2903,6 +3594,46 @@ "acorn-node": "^1.2.0" } }, + "table": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", + "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -2940,6 +3671,21 @@ "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", "dev": true }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -3005,6 +3751,23 @@ "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", "dev": true }, + "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" + }, + "dependencies": { + "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 + } + } + }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", @@ -3042,12 +3805,27 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, "vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", "dev": true }, + "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" + } + }, "which-boxed-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", @@ -3076,6 +3854,12 @@ "is-typed-array": "^1.1.3" } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -3092,6 +3876,12 @@ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } } diff --git a/package.json b/package.json index 6570fcd..f277069 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "esiur", - "version": "1.7.1", + "version": "1.7.2", "description": "Distributed Object Framework", "main": "esiur.js", "type": "module", @@ -27,6 +27,7 @@ "@babel/core": "^7.14.6", "@babel/preset-env": "^7.14.5", "babelify": "^10.0.0", - "browserify": "^17.0.0" + "browserify": "^17.0.0", + "eslint": "^7.31.0" } } diff --git a/src/Data/Codec.js b/src/Data/Codec.js index 8721ec1..f65aa93 100644 --- a/src/Data/Codec.js +++ b/src/Data/Codec.js @@ -42,6 +42,12 @@ import IResource from '../Resource/IResource.js'; import RecordComparisonResult from './RecordComparisonResult.js'; import IRecord from './IRecord.js'; import Record from './Record.js'; +import ResourceArrayType from './ResourceArrayType.js'; +import Warehouse from '../Resource/Warehouse.js'; +import TemplateType from '../Resource/Template/TemplateType.js'; +import NotModified from './NotModified.js'; +import KeyList from './KeyList.js'; +import StructureArray from './StructureArray.js'; export default class Codec { @@ -49,7 +55,7 @@ export default class Codec { var size; - var reply = new AsyncReply(); + //var reply = new AsyncReply(); var isArray; var t; @@ -205,8 +211,8 @@ export default class Codec { } } - - return null; + // @TODO: Throw exception + return new AsyncReply(null); } static parseResource(data, offset) { @@ -243,7 +249,30 @@ export default class Codec { var end = offset + length; // - var result = data[offset++]; + //var result = data[offset++]; + + + var type = data[offset] & 0xF0; + var result = data[offset++] & 0xF; + + + if (type == ResourceArrayType.Wrapper) + { + let classId = data.getGuid(offset); + offset += 16; + let tmp = Warehouse.getTemplateByClassId(classId, TemplateType.Resource); + // not mine, look if the type is elsewhere + if (tmp == null) + Warehouse.getTemplateByClassId(classId, TemplateType.Wrapper); + reply.arrayType = tmp?.definedType; + } + else if (type == ResourceArrayType.Static) + { + let classId = data.getGuid(offset); + offset += 16; + let tmp = Warehouse.getTemplateByClassId(classId, TemplateType.Wrapper); + reply.arrayType = tmp?.definedType; + } var previous = null; @@ -490,7 +519,7 @@ export default class Codec { while (contentLength > 0) { typelist.push(data[offset]); - var rt = {}; + let rt = {}; bag.add(Codec.parse(data, offset, rt, connection)); contentLength -= rt.size; offset += rt.size; @@ -498,14 +527,14 @@ export default class Codec { } else { - for (var i = 0; i < keys.length; i++) { + for (let i = 0; i < keys.length; i++) { keylist.push(keys[i]); typelist.push(types[i]); } - var i = 0; + let i = 0; while (contentLength > 0) { - var rt = {}; + let rt = {}; bag.add(Codec.parse(data, offset, rt, connection, types[i])); contentLength -= rt.size; offset += rt.size; @@ -634,18 +663,18 @@ export default class Codec { } static composeStructure(value, connection, includeKeys = true, includeTypes = true, prependLength = false) { - var rt = new BinaryList(); + let rt = new BinaryList(); - var keys = value.getKeys(); + let keys = value.getKeys(); if (includeKeys) { - for (var i = 0; i < keys.length; i++) { - var key = DC.stringToBytes(keys[i]); + for (let i = 0; i < keys.length; i++) { + let key = DC.stringToBytes(keys[i]); rt.addUint8(key.length).addUint8Array(key).addUint8Array(Codec.compose(value[keys[i]], connection)); } } else { - for (var i = 0; i < keys.length; i++) + for (let i = 0; i < keys.length; i++) rt.addUint8Array(Codec.compose(value[keys[i]], connection, includeTypes)); } @@ -759,7 +788,7 @@ export default class Codec { else if (result == RecordComparisonResult.Record || result == RecordComparisonResult.RecordSameType) { - var cs = data.getUint32(offset); + let cs = data.getUint32(offset); offset += 4; previous = Codec.parseRecord(data, offset, cs, connection, classId); offset += cs; @@ -774,15 +803,15 @@ export default class Codec { } else { - var previous = null; - var classId = null; + let previous = null; + let classId = null; if (result == RecordComparisonResult.Null) previous = new AsyncReply(null); else if (result == RecordComparisonResult.Record) { - var cs = data.getUint32(offset); - var recordLength = cs - 16; + let cs = data.getUint32(offset); + let recordLength = cs - 16; offset += 4; classId = data.getGuid(offset); offset += 16; @@ -802,8 +831,8 @@ export default class Codec { previous = new AsyncReply(null); else if (result == RecordComparisonResult.Record) { - var cs = data.getUint32(offset); - var recordLength = cs - 16; + let cs = data.getUint32(offset); + let recordLength = cs - 16; offset += 4; classId = data.getGuid(offset); offset += 16; @@ -812,9 +841,9 @@ export default class Codec { } else if (result == RecordComparisonResult.RecordSameType) { - var cs = data.getUint32(offset); + let cs = data.getUint32(offset); offset += 4; - previous = ParseRecord(data, offset, cs, connection, classId); + previous = this.parseRecord(data, offset, cs, connection, classId); offset += cs; } else if (result == RecordComparisonResult.Same) @@ -915,17 +944,17 @@ export default class Codec { { if (template.definedType != null) { - var record = new template.definedType(); - for (var i = 0; i < template.properties.length; i++) + let record = new template.definedType(); + for (let i = 0; i < template.properties.length; i++) record[template.properties[i].name] = ar[i]; reply.trigger(record); } else { - var record = new Record(); + let record = new Record(); - for (var i = 0; i < template.properties.Length; i++) + for (let i = 0; i < template.properties.Length; i++) record[template.properties[i].name] = ar[i]; reply.trigger(record); @@ -1019,14 +1048,14 @@ export default class Codec { var previousKeys = previous.getKeys(); var nextKeys = next.getKeys(); - for (var i = 0; i < previousKeys.length; i++) + for (let i = 0; i < previousKeys.length; i++) if (previousKeys[i] != nextKeys[i]) return StructureComparisonResult.Structure; var previousTypes = Codec.getStructureDateTypes(previous, connection); var nextTypes = Codec.getStructureDateTypes(next, connection); - for (var i = 0; i < previousTypes.length; i++) + for (let i = 0; i < previousTypes.length; i++) if (previousTypes[i] != nextTypes[i]) return StructureComparisonResult.StructureSameKeys; @@ -1153,7 +1182,6 @@ static getDataType(value, connection) { // float or double return DataType.Float64; } - break; case "string": return DataType.String; @@ -1199,8 +1227,6 @@ static getDataType(value, connection) { return DataType.Void } - break; - default: return DataType.Void; } @@ -1256,21 +1282,21 @@ static getDataType(value, connection) { previous = new AsyncReply(null); else if (result == StructureComparisonResult.Structure) { - var cs = data.getUint32(offset); + let cs = data.getUint32(offset); offset += 4; previous = Codec.parseStructure(data, offset, cs, connection, metadata); offset += cs; } else if (result == StructureComparisonResult.StructureSameKeys) { - var cs = data.getUint32(offset); + let cs = data.getUint32(offset); offset += 4; previous = Codec.parseStructure(data, offset, cs, connection, metadata, metadata.keys); offset += cs; } else if (result == StructureComparisonResult.StructureSameTypes) { - var cs = data.getUint32(offset); + let cs = data.getUint32(offset); offset += 4; previous = Codec.parseStructure(data, offset, cs, connection, metadata, metadata.keys, metadata.types); offset += cs; diff --git a/src/Data/ResourceArrayType.js b/src/Data/ResourceArrayType.js index 2038ef2..43c8f83 100644 --- a/src/Data/ResourceArrayType.js +++ b/src/Data/ResourceArrayType.js @@ -1,6 +1,6 @@ export default { - Dynamic = 0x0, - Static = 0x10, - Wrapper = 0x20 + Dynamic: 0x0, + Static: 0x10, + Wrapper: 0x20 }; diff --git a/src/Net/IIP/DistributedConnection.js b/src/Net/IIP/DistributedConnection.js index 4b75b1e..a6f441d 100644 --- a/src/Net/IIP/DistributedConnection.js +++ b/src/Net/IIP/DistributedConnection.js @@ -69,12 +69,13 @@ import { ResourceTrigger } from '../../Resource/IResource.js'; import Ruling from '../../Security/Permissions/Ruling.js'; import ActionType from '../../Security/Permissions/ActionType.js'; import AsyncException from '../../Core/AsyncException.js'; -import WSSocket from '../Sockets/WSSocket.js'; +import WSocket from '../Sockets/WSocket.js'; import ClientAuthentication from "../../Security/Authority/ClientAuthentication.js"; import HostAuthentication from "../../Security/Authority/HostAuthentication.js"; import SocketState from "../Sockets/SocketState.js"; import TemplateType from '../../Resource/Template/TemplateType.js'; +import AsyncBag from '../../Core/AsyncBag.js'; export default class DistributedConnection extends IStore { @@ -1010,7 +1011,7 @@ export default class DistributedConnection extends IStore { } else { - return this.connect(AuthenticationMethod.None, null, address, port, null, 0, null, domain); + return this.connect(AuthenticationMethod.None, null, address, port, null, 0, null, domain, secure); } } @@ -1043,7 +1044,7 @@ export default class DistributedConnection extends IStore { throw new AsyncException(ErrorType.Exception, 0, "Session not initialized"); if (socket == null) - socket = new WSSocket();// TCPSocket(); + socket = new WSocket();// TCPSocket(); if (port > 0) this._port = port; @@ -2847,7 +2848,7 @@ export default class DistributedConnection extends IStore { .addUint32(resource._p.instanceId) .done() .then(function (d) { - Codec.parseResourceArray(d, 0, d.length, this).then(function (resources) { + Codec.parseResourceArray(d, 0, d.length, self).then(function (resources) { rt.trigger(resources); }).error(function (ex) { rt.triggerError(ex); }); }); @@ -2893,7 +2894,7 @@ export default class DistributedConnection extends IStore { .addUint32(resource._p.instanceId) .addUint8Array(Codec.composeStructure(attributes, this, true, true, true)) .done() - .then(function (ar) { + .then(function () { rt.trigger(true); }).error(function (ex) { rt.triggerError(ex); }); diff --git a/src/Net/Sockets/WSSocket.js b/src/Net/Sockets/WSocket.js similarity index 96% rename from src/Net/Sockets/WSSocket.js rename to src/Net/Sockets/WSocket.js index 7afaa7b..24fadca 100644 --- a/src/Net/Sockets/WSSocket.js +++ b/src/Net/Sockets/WSocket.js @@ -5,7 +5,7 @@ import ISocket from "./ISocket.js"; import SocketState from "./SocketState.js"; import NetworkBuffer from "../NetworkBuffer.js"; -export default class WSSocket extends ISocket +export default class WSocket extends ISocket { //SocketState State { get; } //INetworkReceiver Receiver { get; set; } @@ -37,7 +37,7 @@ export default class WSSocket extends ISocket this.receiveNetworkBuffer = null; this.receiver = null; - thsi.ws = null; + this.ws = null; this._emit("destroy"); } diff --git a/src/Resource/Template/TypeTemplate.js b/src/Resource/Template/TypeTemplate.js index 4cf83aa..d454081 100644 --- a/src/Resource/Template/TypeTemplate.js +++ b/src/Resource/Template/TypeTemplate.js @@ -32,6 +32,8 @@ import TemplateDataType from "./TemplateDataType.js"; import IResource from '../IResource.js'; import IRecord from '../../Data/IRecord.js'; import TemplateType from './TemplateType.js' +import Warehouse from '../Warehouse.js'; +import DistributedConnection from '../../Net/IIP/DistributedConnection.js'; export default class TypeTemplate { @@ -95,13 +97,13 @@ export default class TypeTemplate { static getTypeGuid(type) { - return getTypeGuidByName(type.template.namespace + "." + type.prototype.constructor.name); + return this.getTypeGuidByName(type.template.namespace + "." + type.prototype.constructor.name); } static getTypeGuidByName(typeName) { - return SHA256.compute(DC.stringToBytes(this.className)).getGuid(0); - } + return SHA256.compute(DC.stringToBytes(typeName)).getGuid(0); + } static getDependencies(template) @@ -119,11 +121,11 @@ export default class TypeTemplate { return; // functions - for(var i = 0; i < tmp.functions.length; i++) + for(let i = 0; i < tmp.functions.length; i++) { - f = tmp.functions[i]; + let ft = tmp.functions[i]; - var frtt = Warehouse.getTemplateByType(f.methodInfo.returnType); + var frtt = Warehouse.getTemplateByType(ft.methodInfo.returnType); if (frtt != null) { if (!bag.includes(frtt)) @@ -133,11 +135,11 @@ export default class TypeTemplate { } } - var args = f.methodInfo.parameters; + var args = ft.methodInfo.parameters; - for(var i = 0; i < args.length - 1; i++) + for(let j = 0; j < args.length - 1; j++) { - var fpt = Warehouse.getTemplateByType(args[i].parameterType); + var fpt = Warehouse.getTemplateByType(args[j].parameterType); if (fpt != null) { if (!bag.includes(fpt)) @@ -154,7 +156,7 @@ export default class TypeTemplate { var last = args[args.length - 1]; if (last.parameterType == DistributedConnection) { - var fpt = Warehouse.getTemplateByType(last.parameterType); + let fpt = Warehouse.getTemplateByType(last.parameterType); if (fpt != null) { if (!bag.includes(fpt)) @@ -169,7 +171,7 @@ export default class TypeTemplate { } // properties - for (var i = 0; i < tmp.properties.length; i++) + for (let i = 0; i < tmp.properties.length; i++) { var p = tmp.properties[i]; var pt = Warehouse.getTemplateByType(p.propertyInfo.propertyType); @@ -184,7 +186,7 @@ export default class TypeTemplate { } // events - for(var i = 0; i < tmp.events.length; i++) + for(let i = 0; i < tmp.events.length; i++) { var e = tmp.events[i]; var et = Warehouse.getTemplateByType(e.eventInfo.eventHandlerType); @@ -204,6 +206,10 @@ export default class TypeTemplate { return list; } + get type() { + return this.templateType; + } + constructor(type, addToWarehouse) { @@ -257,7 +263,7 @@ export default class TypeTemplate { if (template.events != null) { - for (var i = 0; i < template.events.length; i++) { + for (let i = 0; i < template.events.length; i++) { // [name, type, {listenable: true/false, help: ""}] var ei = template.events[i]; @@ -274,7 +280,7 @@ export default class TypeTemplate { if (template.functions != null) { - for (var i = 0; i < template.functions.length; i++) { + for (let i = 0; i < template.functions.length; i++) { var fi = template.functions[i]; @@ -298,13 +304,13 @@ export default class TypeTemplate { // append signals - for (var i = 0; i < this.events.length; i++) + for (let i = 0; i < this.events.length; i++) this.members.push(this.events[i]); // append slots - for (var i = 0; i < this.functions.length; i++) + for (let i = 0; i < this.functions.length; i++) this.members.push(this.functions[i]); // append properties - for (var i = 0; i < this.properties.length; i++) + for (let i = 0; i < this.properties.length; i++) this.members.push(this.properties[i]); // bake it binarily @@ -317,13 +323,13 @@ export default class TypeTemplate { .addUint32(template.version) .addUint16(this.members.length); - for (var i = 0; i < this.functions.length; i++) + for (let i = 0; i < this.functions.length; i++) b.addUint8Array(this.functions[i].compose()); - for (var i = 0; i < this.properties.length; i++) + for (let i = 0; i < this.properties.length; i++) b.addUint8Array(this.properties[i].compose()); - for (var i = 0; i < this.events.length; i++) + for (let i = 0; i < this.events.length; i++) b.addUint8Array(this.events[i].compose()); this.content = b.toArray(); @@ -331,7 +337,8 @@ export default class TypeTemplate { static getFunctionParameters(func) { - var STRIP_COMMENTS = /(\/\/.*$)|(\/\*[\s\S]*?\*\/)|(\s*=[^,\)]*(('(?:\\'|[^'\r\n])*')|("(?:\\"|[^"\r\n])*"))|(\s*=[^,\)]*))/mg; + var STRIP_COMMENTS = /(\/\/.*$)|(\/\*[\s\S]*?\*\/)|(\s*=[^,)]*(('(?:\\'|[^'\r\n])*')|("(?:\\"|[^"\r\n])*"))|(\s*=[^,)]*))/mg; + //var STRIP_COMMENTS = /(\/\/.*$)|(\/\*[\s\S]*?\*\/)|(\s*=[^,\)]*(('(?:\\'|[^'\r\n])*')|("(?:\\"|[^"\r\n])*"))|(\s*=[^,\)]*))/mg; var ARGUMENT_NAMES = /([^\s,]+)/g; var fnStr = func.toString().replace(STRIP_COMMENTS, ''); @@ -354,9 +361,8 @@ export default class TypeTemplate { if (contentLength == -1) contentLength = data.length; - var ends = offset + contentLength; - - var oOffset = offset; + //var ends = offset + contentLength; + //var oOffset = offset; // start parsing... @@ -385,16 +391,16 @@ export default class TypeTemplate { if (type == 0) // function { - var ft = new FunctionTemplate(); + let ft = new FunctionTemplate(); ft.index = functionIndex++; - var hasExpansion = ((data.getUint8(offset++) & 0x10) == 0x10); + let hasExpansion = ((data.getUint8(offset++) & 0x10) == 0x10); - var len = data.getUint8(offset++); + let len = data.getUint8(offset++); ft.name = data.getString(offset, len); offset += len; // return type - var {size, value: returnType} = TemplateDataType.parse(data, offset); + let {size, value: returnType} = TemplateDataType.parse(data, offset); offset += size; ft.returnType = returnType; @@ -405,9 +411,9 @@ export default class TypeTemplate { for (var a = 0; a < argsCount; a++) { - var {size, value: argType} = ArgumentTemplate.parse(data, offset); + let {size: argSize, value: argType} = ArgumentTemplate.parse(data, offset); args.push(argType); - offset += size; + offset += argSize; } ft.arguments = args; @@ -425,17 +431,17 @@ export default class TypeTemplate { else if (type == 1) // property { - var pt = new PropertyTemplate(); + let pt = new PropertyTemplate(); pt.index = propertyIndex++; - var hasReadExpansion = ((data.getUint8(offset) & 0x8) == 0x8); - var hasWriteExpansion = ((data.getUint8(offset) & 0x10) == 0x10); + let hasReadExpansion = ((data.getUint8(offset) & 0x8) == 0x8); + let hasWriteExpansion = ((data.getUint8(offset) & 0x10) == 0x10); pt.recordable = ((data.getUint8(offset) & 1) == 1); pt.permission = ((data.getUint8(offset++) >> 1) & 0x3); - var len = data.getUint8(offset++); + let len = data.getUint8(offset++); pt.name = data.getString(offset, len); offset += len; - var {size, value: valueType} = TemplateDataType.parse(data, offset); + let {size, value: valueType} = TemplateDataType.parse(data, offset); offset += size; @@ -443,7 +449,7 @@ export default class TypeTemplate { if (hasReadExpansion) // expansion ? { - var cs = data.getUint32(offset); + let cs = data.getUint32(offset); offset += 4; pt.readExpansion = data.getString(offset, cs); offset += cs; @@ -451,7 +457,7 @@ export default class TypeTemplate { if (hasWriteExpansion) // expansion ? { - var cs = data.getUint32(offset); + let cs = data.getUint32(offset); offset += 4; pt.writeExpansion = data.getString(offset, cs); offset += cs; @@ -461,23 +467,23 @@ export default class TypeTemplate { } else if (type == 2) // Event { - var et = new EventTemplate(); + let et = new EventTemplate(); et.index = eventIndex++; - var hasExpansion = ((data.getUint8(offset) & 0x10) == 0x10); + let hasExpansion = ((data.getUint8(offset) & 0x10) == 0x10); et.listenable = ((data.getUint8(offset++) & 0x8) == 0x8); - var len = data.getUint8(offset++); + let len = data.getUint8(offset++); et.name = data.getString(offset, len); offset += len; - var {size, value: argType} = TemplateDataType.parse(data, offset); + let {size, value: argType} = TemplateDataType.parse(data, offset); offset += size; et.argumentType = argType; if (hasExpansion) // expansion ? { - var cs = data.getUint32(offset); + let cs = data.getUint32(offset); offset += 4; et.expansion = data.getString(offset, cs); offset += cs; @@ -489,13 +495,13 @@ export default class TypeTemplate { } // append signals - for (var i = 0; i < od.events.length; i++) + for (let i = 0; i < od.events.length; i++) od.members.push(od.events[i]); // append slots - for (var i = 0; i < od.functions.length; i++) + for (let i = 0; i < od.functions.length; i++) od.members.push(od.functions[i]); // append properties - for (var i = 0; i < od.properties.length; i++) + for (let i = 0; i < od.properties.length; i++) od.members.push(od.properties[i]); diff --git a/src/Resource/Warehouse.js b/src/Resource/Warehouse.js index 8e7644a..bffb198 100644 --- a/src/Resource/Warehouse.js +++ b/src/Resource/Warehouse.js @@ -41,6 +41,7 @@ import ResourceProxy from '../Proxy/ResourceProxy.js'; import AsyncBag from '../Core/AsyncBag.js'; import IRecord from '../Data/IRecord.js'; import TemplateType from './Template/TemplateType.js'; +import DistributedResource from '../Net/IIP/DistributedResource.js'; export class WH extends IEventHandler { @@ -62,7 +63,9 @@ export class WH extends IEventHandler this._register("connected"); this._register("disconnected"); ///this._urlRegex = /^(?:([\S]*):\/\/([^\/]*)\/?)/; - this._urlRegex = /^(?:([^\s|:]*):\/\/([^\/]*)\/?)/; +// this._urlRegex = /^(?:([^\s|:]*):\/\/([^\/]*)\/?)/; + this._urlRegex = /^(?:([^\s|:]*):\/\/([^/]*)\/?)/; + } newInstance(type, properties) @@ -80,6 +83,9 @@ export class WH extends IEventHandler var res = new proxyType(); + if (properties != null) + Object.assign(res, properties); + if (properties != null) Object.assign(res, properties); @@ -88,7 +94,7 @@ export class WH extends IEventHandler var rt = new AsyncReply(); this.put(name, res, store, parent, null, 0, manager, attributes) - .then((ok)=>rt.trigger(res)) + .then(()=>rt.trigger(res)) .error((ex)=>rt.triggerError(ex)); return rt; @@ -104,10 +110,10 @@ export class WH extends IEventHandler return new AsyncReply(this.resources.item(id)); } - get(path, attributes = null, parent = null, manager = null) + get(path, attributes = null)//, parent = null, manager = null) { var rt = new AsyncReply(); - var self = this; + // var self = this; // Should we create a new store ? if (path.match(this._urlRegex)) @@ -134,7 +140,7 @@ export class WH extends IEventHandler { if (!this.warehouseIsOpen) { - this.open().then((ok)=>{ + this.open().then(()=>{ initResource(); }).error(ex=>rt.triggerError(ex)); } @@ -186,7 +192,7 @@ export class WH extends IEventHandler } if (toBeRemoved != null) - for(var i = 0; i < toBeRemoved.length; i++) + for(let i = 0; i < toBeRemoved.length; i++) this.remove(toBeRemoved[i]); this._emit("disconnected", resource); @@ -231,9 +237,9 @@ export class WH extends IEventHandler if (self.warehouseIsOpen) { - resource.trigger(ResourceTrigger.Initialize).then(x=>{ + resource.trigger(ResourceTrigger.Initialize).then(()=>{ if (resource instanceof IStore) - resource.trigger(ResourceTrigger.Open).then(y=>{ rt.trigger(true); + resource.trigger(ResourceTrigger.Open).then(()=>{ rt.trigger(true); self._emit("connected", resource) }).error(ex => { Warehouse.remove(resource); @@ -261,7 +267,7 @@ export class WH extends IEventHandler initResource(); } else - store.put(resource).then(ok=>{ + store.put(resource).then(()=>{ initResource(); }).error(ex=> { // failed to put @@ -347,21 +353,21 @@ export class WH extends IEventHandler if (templateType == TemplateType.Unspecified) { // look in resources - var template = templates.get(TemplateType.Resource).get(classId); + var template = this.templates.get(TemplateType.Resource).get(classId); if (template != null) return template; // look in records - template = templates.get(TemplateType.Record).get(classId); + template = this.templates.get(TemplateType.Record).get(classId); if (template != null) return template; // look in wrappers - template = templates.get(TemplateType.Wrapper).get(classId); + template = this.templates.get(TemplateType.Wrapper).get(classId); return template; } else - return templates.get(templateType).get(classId); + return this.templates.get(templateType).get(classId); } getTemplateByClassName(className, templateType = TemplateType.Unspecified) @@ -369,22 +375,22 @@ export class WH extends IEventHandler if (templateType == TemplateType.Unspecified) { // look in resources - var template = templates[TemplateType.Resource].values.find(x => x.className == className); + var template = this.templates.get(TemplateType.Resource).values.find(x => x.className == className); if (template != null) return template; // look in records - template = templates[TemplateType.Record].values.find(x => x.className == className); + template = this.templates.get(TemplateType.Record).values.find(x => x.className == className); if (template != null) return template; // look in wrappers - template = templates[TemplateType.Wrapper].values.find(x => x.className == className); + template = this.templates.get(TemplateType.Wrapper).values.find(x => x.className == className); return template; } else { - return templates[templateType].values.find(x => x.className == className); + return this.templates.get(templateType).values.find(x => x.className == className); } } @@ -395,15 +401,15 @@ export class WH extends IEventHandler if (index == path.length - 1) { if (path[index] == "") - for(var i = 0; i < resources.length; i++) + for(let i = 0; i < resources.length; i++) rt.push(resources.at(i)); else - for(var i = 0; i < resources.length; i++) + for(let i = 0; i < resources.length; i++) if (resources.at(i).instance.name == path[index]) rt.push(resources.at(i)); } else - for(var i = 0; i < resources.length; i++) + for(let i = 0; i < resources.length; i++) if (resources.at(i).instance.name == path[index]) rt = rt.concat(this._qureyIn(path, index+1, resources.at(i).instance.children)); @@ -488,13 +494,13 @@ export class WH extends IEventHandler initBag.then(ar => { - for(var i = 0; i < ar.length; i++) + for(let i = 0; i < ar.length; i++) if (!ar[i]) console.log(`Resource failed at Initialize ${self.resources.at(i).instance.name} [${self.resources.at(i).instance.template.className}]`); var sysBag = new AsyncBag(); - for (var i = 0; i < this.resources.length; i++) + for (let i = 0; i < this.resources.length; i++) { var r = this.resources.at(i); sysBag.add(r.trigger(ResourceTrigger.SystemInitialized));